{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/XMURDn5OiFbfAgS7YVgX/ATTr4mloLQBV6EwUdjSM/ktlAS7qXE.js", "ssg:https://framerusercontent.com/modules/kzDus4QbcgMkpunEORf6/iWKRg5wrmO7zkmebtCl6/sR8uv1Vw7.js", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-5BEQP2BQ.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-M5G6JQMQ.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-PBAUXUVF.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-SX7QUDKQ.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-RNORR4OK.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-C4TFB3WJ.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-2FDB6CTQ.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-Z2ZIK3HP.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-USQFKVUW.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-FFUMSB5Y.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-D6HO7KA7.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-3U6A2N6D.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-AJ4ZTHOA.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-4NRCS6EB.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-54NE35C4.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-7HNM7AEP.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-K6AX6D7Y.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-G7COPUKV.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-XX6QE2RT.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-SU6VHGW3.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-UBHL4FP4.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-FMYDOIX6.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-3IAOHWI6.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-3TWSDFLC.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-WMVG427C.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-WBM42ICI.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-BI5IV7LU.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-LJBCYGOI.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-K4ZFJCJ3.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-AVODCFKL.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-RFZ5WM4S.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/chunk-BWWR5P6F.mjs", "ssg:https://ruucm.github.io/shadergradient/shadergradient@2.0.15/FramerShaderGradient.mjs", "ssg:https://framerusercontent.com/modules/NYq3ymSyfvg2Vw51PmvN/Wsp5J9COkC0j9QwrD9wS/ShaderGradient.js"],
  "sourcesContent": ["// Generated by Framer (c07a8c1)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,RichText,SVG,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useOnVariantChange,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";const cycleOrder=[\"MqWv6ZP32\",\"LlGuMRx2s\",\"kPG8a4VQO\",\"cR8CUOnTV\"];const serializationHash=\"framer-w0ole\";const variantClassNames={cR8CUOnTV:\"framer-v-hn7srm\",kPG8a4VQO:\"framer-v-juivt7\",LlGuMRx2s:\"framer-v-k771m6\",MqWv6ZP32:\"framer-v-qwy5d2\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:400,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 humanReadableVariantMap={\"Closed Black\":\"MqWv6ZP32\",\"Closed White\":\"kPG8a4VQO\",\"Open Black\":\"LlGuMRx2s\",\"Open White\":\"cR8CUOnTV\"};const getProps=({height,id,text,width,...props})=>{return{...props,j_JwbaEJE:text??props.j_JwbaEJE??\"Putting People at the Heart of Everything We Do.\",variant:humanReadableVariantMap[props.variant]??props.variant??\"MqWv6ZP32\"};};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,j_JwbaEJE,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"MqWv6ZP32\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onAppeark6ukmk=activeVariantCallback(async(...args)=>{await delay(()=>setVariant(\"LlGuMRx2s\"),600);});const onAppear1l3fiww=activeVariantCallback(async(...args)=>{await delay(()=>setVariant(\"cR8CUOnTV\"),400);});useOnVariantChange(baseVariant,{cR8CUOnTV:undefined,default:onAppeark6ukmk,kPG8a4VQO:onAppear1l3fiww,LlGuMRx2s:undefined});const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if([\"LlGuMRx2s\",\"cR8CUOnTV\"].includes(baseVariant))return true;return false;};return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-qwy5d2\",className,classNames),\"data-framer-name\":\"Closed Black\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"MqWv6ZP32\",ref:refBinding,style:{...style},...addPropertyOverrides({cR8CUOnTV:{\"data-framer-name\":\"Open White\",\"data-highlight\":undefined},kPG8a4VQO:{\"data-framer-name\":\"Closed White\"},LlGuMRx2s:{\"data-framer-name\":\"Open Black\",\"data-highlight\":undefined}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(SVG,{className:\"framer-18upnp1\",\"data-framer-name\":\"Vector 31\",layout:\"position\",layoutDependency:layoutDependency,layoutId:\"W2VDwOTz8\",opacity:1,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 93 297\"><path d=\"M 82.5 10 L 10.5 10 L 10.5 287 L 82.5 287\" fill=\"transparent\" stroke-width=\"20\" stroke=\"rgb(25,23,23)\" stroke-miterlimit=\"10\" stroke-dasharray=\"\"></path></svg>',svgContentId:12099907336,withExternalLayout:true,...addPropertyOverrides({cR8CUOnTV:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 93 297\"><path d=\"M 82.5 10 L 10.5 10 L 10.5 287 L 82.5 287\" fill=\"transparent\" stroke-width=\"20\" stroke=\"var(--token-bd3cfa5b-c7a2-4d30-823d-fd0db67ac5ef, rgb(254, 254, 254)) /* {&quot;name&quot;:&quot;White - 100&quot;} */\" stroke-miterlimit=\"10\" stroke-dasharray=\"\"></path></svg>',svgContentId:10280098941},kPG8a4VQO:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 93 297\"><path d=\"M 82.5 10 L 10.5 10 L 10.5 287 L 82.5 287\" fill=\"transparent\" stroke-width=\"20\" stroke=\"var(--token-bd3cfa5b-c7a2-4d30-823d-fd0db67ac5ef, rgb(254, 254, 254)) /* {&quot;name&quot;:&quot;White - 100&quot;} */\" stroke-miterlimit=\"10\" stroke-dasharray=\"\"></path></svg>',svgContentId:10280098941}},baseVariant,gestureVariant)}),isDisplayed()&&/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h1,{style:{\"--font-selector\":\"R0Y7UmVkIEhhdCBEaXNwbGF5LXJlZ3VsYXI=\",\"--framer-font-family\":'\"Red Hat Display\", \"Red Hat Display Placeholder\", sans-serif',\"--framer-font-size\":\"80px\",\"--framer-letter-spacing\":\"-0.01em\",\"--framer-line-height\":\"130%\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-gdpscs, var(--token-71d81190-6409-44b5-a064-5a01bec4a5d4, rgb(25, 23, 23)))\"},children:\"Putting People at the Heart of Everything We Do.\"})}),className:\"framer-ha5k7\",\"data-framer-name\":\"Putting People at the Heart of Everything We Do.\",fonts:[\"GF;Red Hat Display-regular\"],layoutDependency:layoutDependency,layoutId:\"s4vLhtm5e\",style:{\"--extracted-gdpscs\":\"var(--token-71d81190-6409-44b5-a064-5a01bec4a5d4, rgb(25, 23, 23))\",\"--framer-paragraph-spacing\":\"0px\"},text:j_JwbaEJE,variants:{cR8CUOnTV:{\"--extracted-gdpscs\":\"var(--token-bd3cfa5b-c7a2-4d30-823d-fd0db67ac5ef, rgb(254, 254, 254))\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({cR8CUOnTV:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h1,{style:{\"--font-selector\":\"R0Y7UmVkIEhhdCBEaXNwbGF5LXJlZ3VsYXI=\",\"--framer-font-family\":'\"Red Hat Display\", \"Red Hat Display Placeholder\", sans-serif',\"--framer-font-size\":\"80px\",\"--framer-letter-spacing\":\"-0.01em\",\"--framer-line-height\":\"130%\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-gdpscs, var(--token-bd3cfa5b-c7a2-4d30-823d-fd0db67ac5ef, rgb(254, 254, 254)))\"},children:\"Putting People at the Heart of Everything We Do.\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-zutznf\",\"data-framer-name\":\"Vector 247\",layout:\"position\",layoutDependency:layoutDependency,layoutId:\"SkRSdzENr\",opacity:1,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 93 297\"><path d=\"M 10.5 10 L 82.5 10 L 82.5 287 L 10.5 287\" fill=\"transparent\" stroke-width=\"20\" stroke=\"rgb(25,23,23)\" stroke-miterlimit=\"10\" stroke-dasharray=\"\"></path></svg>',svgContentId:9397645681,withExternalLayout:true,...addPropertyOverrides({cR8CUOnTV:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 93 297\"><path d=\"M 10.5 10 L 82.5 10 L 82.5 287 L 10.5 287\" fill=\"transparent\" stroke-width=\"20\" stroke=\"var(--token-bd3cfa5b-c7a2-4d30-823d-fd0db67ac5ef, rgb(254, 254, 254)) /* {&quot;name&quot;:&quot;White - 100&quot;} */\" stroke-miterlimit=\"10\" stroke-dasharray=\"\"></path></svg>',svgContentId:9392794041},kPG8a4VQO:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 93 297\"><path d=\"M 10.5 10 L 82.5 10 L 82.5 287 L 10.5 287\" fill=\"transparent\" stroke-width=\"20\" stroke=\"var(--token-bd3cfa5b-c7a2-4d30-823d-fd0db67ac5ef, rgb(254, 254, 254)) /* {&quot;name&quot;:&quot;White - 100&quot;} */\" stroke-miterlimit=\"10\" stroke-dasharray=\"\"></path></svg>',svgContentId:9392794041}},baseVariant,gestureVariant)})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-w0ole.framer-z5uslv, .framer-w0ole .framer-z5uslv { display: block; }\",\".framer-w0ole.framer-qwy5d2 { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 100px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: 1166px; }\",\".framer-w0ole .framer-18upnp1, .framer-w0ole .framer-zutznf { flex: none; height: 297px; position: relative; width: 93px; }\",\".framer-w0ole .framer-ha5k7 { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 82%; word-break: break-word; word-wrap: break-word; }\",\".framer-w0ole.framer-v-k771m6.framer-qwy5d2, .framer-w0ole.framer-v-hn7srm.framer-qwy5d2 { gap: 10px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 297\n * @framerIntrinsicWidth 1165.5\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"LlGuMRx2s\":{\"layout\":[\"fixed\",\"auto\"]},\"kPG8a4VQO\":{\"layout\":[\"fixed\",\"auto\"]},\"cR8CUOnTV\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"j_JwbaEJE\":\"text\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerktlAS7qXE=withCSS(Component,css,\"framer-w0ole\");export default FramerktlAS7qXE;FramerktlAS7qXE.displayName=\"Brackets Opening / Web\";FramerktlAS7qXE.defaultProps={height:297,width:1165.5};addPropertyControls(FramerktlAS7qXE,{variant:{options:[\"MqWv6ZP32\",\"LlGuMRx2s\",\"kPG8a4VQO\",\"cR8CUOnTV\"],optionTitles:[\"Closed Black\",\"Open Black\",\"Closed White\",\"Open White\"],title:\"Variant\",type:ControlType.Enum},j_JwbaEJE:{defaultValue:\"Putting People at the Heart of Everything We Do.\",displayTextArea:true,title:\"Text\",type:ControlType.String}});addFonts(FramerktlAS7qXE,[{explicitInter:true,fonts:[{family:\"Red Hat Display\",source:\"google\",style:\"normal\",url:\"https://fonts.gstatic.com/s/redhatdisplay/v20/8vIf7wUr0m80wwYf0QCXZzYzUoTK8RZQvRd-D1NYbmyWck05-Xecg3w.woff2\",weight:\"400\"}]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerktlAS7qXE\",\"slots\":[],\"annotations\":{\"framerColorSyntax\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"LlGuMRx2s\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"kPG8a4VQO\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"cR8CUOnTV\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerAutoSizeImages\":\"true\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"297\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicWidth\":\"1165.5\",\"framerVariables\":\"{\\\"j_JwbaEJE\\\":\\\"text\\\"}\",\"framerComponentViewportWidth\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ktlAS7qXE.map", "// Generated by Framer (d5ca742)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,RichText,SVG,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useOnVariantChange,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";const cycleOrder=[\"EuTEDp4yr\",\"Ddoo_BniX\",\"srmj5EbXR\",\"ZjvlgoENE\"];const serializationHash=\"framer-0mfG6\";const variantClassNames={Ddoo_BniX:\"framer-v-11zfg7f\",EuTEDp4yr:\"framer-v-1wlv0as\",srmj5EbXR:\"framer-v-12086dz\",ZjvlgoENE:\"framer-v-1gadb2r\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?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 humanReadableVariantMap={\"Variant 1\":\"EuTEDp4yr\",\"Variant 2\":\"Ddoo_BniX\",\"Variant 3\":\"srmj5EbXR\",\"Variant 4\":\"ZjvlgoENE\"};const getProps=({height,id,text,width,...props})=>{var _ref,_humanReadableVariantMap_props_variant,_ref1;return{...props,foEpwXq65:(_ref=text!==null&&text!==void 0?text:props.foEpwXq65)!==null&&_ref!==void 0?_ref:\"Putting People at the Heart of Everything We Do.\",variant:(_ref1=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref1!==void 0?_ref1:\"EuTEDp4yr\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,foEpwXq65,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"EuTEDp4yr\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onAppear1jms5e8=activeVariantCallback(async(...args)=>{await delay(()=>setVariant(\"Ddoo_BniX\"),400);});const onAppear9lcie0=activeVariantCallback(async(...args)=>{await delay(()=>setVariant(\"ZjvlgoENE\"),400);});useOnVariantChange(baseVariant,{default:onAppear1jms5e8,srmj5EbXR:onAppear9lcie0,ZjvlgoENE:undefined});const ref1=React.useRef(null);const isDisplayed=()=>{if([\"Ddoo_BniX\",\"ZjvlgoENE\"].includes(baseVariant))return true;return false;};const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-1wlv0as\",className,classNames),\"data-framer-name\":\"Variant 1\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"EuTEDp4yr\",ref:ref!==null&&ref!==void 0?ref:ref1,style:{...style},...addPropertyOverrides({Ddoo_BniX:{\"data-framer-name\":\"Variant 2\"},srmj5EbXR:{\"data-framer-name\":\"Variant 3\"},ZjvlgoENE:{\"data-framer-name\":\"Variant 4\",\"data-highlight\":undefined}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(SVG,{className:\"framer-1b137n5\",\"data-framer-name\":\"Vector 31\",layout:\"position\",layoutDependency:layoutDependency,layoutId:\"O_p16USY8\",opacity:1,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 41 178\"><path d=\"M 35.5 5 L 5.5 5 L 5.5 173 L 35.5 173\" fill=\"transparent\" stroke-width=\"9\" stroke=\"rgb(25,23,23)\" stroke-miterlimit=\"10\" stroke-dasharray=\"\"></path></svg>',svgContentId:12538471302,withExternalLayout:true,...addPropertyOverrides({srmj5EbXR:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 41 178\"><path d=\"M 35.5 5 L 5.5 5 L 5.5 173 L 35.5 173\" fill=\"transparent\" stroke-width=\"9\" stroke=\"var(--token-bd3cfa5b-c7a2-4d30-823d-fd0db67ac5ef, rgb(254, 254, 254)) /* {&quot;name&quot;:&quot;White - 100&quot;} */\" stroke-miterlimit=\"10\" stroke-dasharray=\"\"></path></svg>',svgContentId:10935581231},ZjvlgoENE:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 41 178\"><path d=\"M 35.5 5 L 5.5 5 L 5.5 173 L 35.5 173\" fill=\"transparent\" stroke-width=\"9\" stroke=\"var(--token-bd3cfa5b-c7a2-4d30-823d-fd0db67ac5ef, rgb(254, 254, 254)) /* {&quot;name&quot;:&quot;White - 100&quot;} */\" stroke-miterlimit=\"10\" stroke-dasharray=\"\"></path></svg>',svgContentId:10935581231}},baseVariant,gestureVariant)}),isDisplayed()&&/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"R0Y7UmVkIEhhdCBEaXNwbGF5LXJlZ3VsYXI=\",\"--framer-font-family\":'\"Red Hat Display\", \"Red Hat Display Placeholder\", sans-serif',\"--framer-font-size\":\"33px\",\"--framer-letter-spacing\":\"-0.01em\",\"--framer-line-height\":\"130%\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(25, 23, 23))\"},children:\"Putting People \"}),/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"R0Y7UmVkIEhhdCBEaXNwbGF5LXJlZ3VsYXI=\",\"--framer-font-family\":'\"Red Hat Display\", \"Red Hat Display Placeholder\", sans-serif',\"--framer-font-size\":\"33px\",\"--framer-letter-spacing\":\"-0.01em\",\"--framer-line-height\":\"130%\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-2gxw0f, rgb(25, 23, 23))\"},children:\"at the Heart of Everything We Do.\"})]}),className:\"framer-n6xigw\",\"data-framer-name\":\"Putting People at the Heart of Everything We Do.\",fonts:[\"GF;Red Hat Display-regular\"],layoutDependency:layoutDependency,layoutId:\"on1_4RxzP\",style:{\"--extracted-2gxw0f\":\"rgb(25, 23, 23)\",\"--extracted-r6o4lv\":\"rgb(25, 23, 23)\",\"--framer-paragraph-spacing\":\"0px\"},variants:{ZjvlgoENE:{\"--extracted-2gxw0f\":\"var(--token-bd3cfa5b-c7a2-4d30-823d-fd0db67ac5ef, rgb(254, 254, 254))\",\"--extracted-r6o4lv\":\"var(--token-bd3cfa5b-c7a2-4d30-823d-fd0db67ac5ef, rgb(254, 254, 254))\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({ZjvlgoENE:{children:/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"R0Y7UmVkIEhhdCBEaXNwbGF5LXJlZ3VsYXI=\",\"--framer-font-family\":'\"Red Hat Display\", \"Red Hat Display Placeholder\", sans-serif',\"--framer-font-size\":\"33px\",\"--framer-letter-spacing\":\"-0.01em\",\"--framer-line-height\":\"130%\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-bd3cfa5b-c7a2-4d30-823d-fd0db67ac5ef, rgb(254, 254, 254)))\"},children:\"Putting People \"}),/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"R0Y7UmVkIEhhdCBEaXNwbGF5LXJlZ3VsYXI=\",\"--framer-font-family\":'\"Red Hat Display\", \"Red Hat Display Placeholder\", sans-serif',\"--framer-font-size\":\"33px\",\"--framer-letter-spacing\":\"-0.01em\",\"--framer-line-height\":\"130%\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-2gxw0f, var(--token-bd3cfa5b-c7a2-4d30-823d-fd0db67ac5ef, rgb(254, 254, 254)))\"},children:\"at the Heart of Everything We Do.\"})]}),text:foEpwXq65}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1lt6cwg\",\"data-framer-name\":\"Vector 308\",layout:\"position\",layoutDependency:layoutDependency,layoutId:\"L_pD5iJys\",opacity:1,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 41 178\"><path d=\"M 5.5 5 L 35.5 5 L 35.5 173 L 5.5 173\" fill=\"transparent\" stroke-width=\"9\" stroke=\"rgb(25,23,23)\" stroke-miterlimit=\"10\" stroke-dasharray=\"\"></path></svg>',svgContentId:9523380105,withExternalLayout:true,...addPropertyOverrides({srmj5EbXR:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 41 178\"><path d=\"M 5.5 5 L 35.5 5 L 35.5 173 L 5.5 173\" fill=\"transparent\" stroke-width=\"9\" stroke=\"var(--token-bd3cfa5b-c7a2-4d30-823d-fd0db67ac5ef, rgb(254, 254, 254)) /* {&quot;name&quot;:&quot;White - 100&quot;} */\" stroke-miterlimit=\"10\" stroke-dasharray=\"\"></path></svg>',svgContentId:10425247754},ZjvlgoENE:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 41 178\"><path d=\"M 5.5 5 L 35.5 5 L 35.5 173 L 5.5 173\" fill=\"transparent\" stroke-width=\"9\" stroke=\"var(--token-bd3cfa5b-c7a2-4d30-823d-fd0db67ac5ef, rgb(254, 254, 254)) /* {&quot;name&quot;:&quot;White - 100&quot;} */\" stroke-miterlimit=\"10\" stroke-dasharray=\"\"></path></svg>',svgContentId:10425247754}},baseVariant,gestureVariant)})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-0mfG6.framer-1gpnuc, .framer-0mfG6 .framer-1gpnuc { display: block; }\",\".framer-0mfG6.framer-1wlv0as { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 60px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: 372px; }\",\".framer-0mfG6 .framer-1b137n5, .framer-0mfG6 .framer-1lt6cwg { flex: none; height: 178px; position: relative; width: 41px; }\",\".framer-0mfG6 .framer-n6xigw { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 73%; word-break: break-word; word-wrap: break-word; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-0mfG6.framer-1wlv0as { gap: 0px; } .framer-0mfG6.framer-1wlv0as > * { margin: 0px; margin-left: calc(60px / 2); margin-right: calc(60px / 2); } .framer-0mfG6.framer-1wlv0as > :first-child { margin-left: 0px; } .framer-0mfG6.framer-1wlv0as > :last-child { margin-right: 0px; } }\",\".framer-0mfG6.framer-v-11zfg7f.framer-1wlv0as, .framer-0mfG6.framer-v-1gadb2r.framer-1wlv0as { gap: 10px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-0mfG6.framer-v-11zfg7f.framer-1wlv0as { gap: 0px; } .framer-0mfG6.framer-v-11zfg7f.framer-1wlv0as > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } .framer-0mfG6.framer-v-11zfg7f.framer-1wlv0as > :first-child { margin-left: 0px; } .framer-0mfG6.framer-v-11zfg7f.framer-1wlv0as > :last-child { margin-right: 0px; } }\",\".framer-0mfG6.framer-v-12086dz .framer-1b137n5, .framer-0mfG6.framer-v-1gadb2r .framer-1b137n5 { order: 0; }\",\".framer-0mfG6.framer-v-12086dz .framer-1lt6cwg, .framer-0mfG6.framer-v-1gadb2r .framer-1lt6cwg { order: 2; }\",\".framer-0mfG6.framer-v-1gadb2r .framer-n6xigw { order: 1; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-0mfG6.framer-v-1gadb2r.framer-1wlv0as { gap: 0px; } .framer-0mfG6.framer-v-1gadb2r.framer-1wlv0as > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } .framer-0mfG6.framer-v-1gadb2r.framer-1wlv0as > :first-child { margin-left: 0px; } .framer-0mfG6.framer-v-1gadb2r.framer-1wlv0as > :last-child { margin-right: 0px; } }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 178\n * @framerIntrinsicWidth 372\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"Ddoo_BniX\":{\"layout\":[\"fixed\",\"auto\"]},\"srmj5EbXR\":{\"layout\":[\"fixed\",\"auto\"]},\"ZjvlgoENE\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"foEpwXq65\":\"text\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramersR8uv1Vw7=withCSS(Component,css,\"framer-0mfG6\");export default FramersR8uv1Vw7;FramersR8uv1Vw7.displayName=\"Brackets Opening / Mobile\";FramersR8uv1Vw7.defaultProps={height:178,width:372};addPropertyControls(FramersR8uv1Vw7,{variant:{options:[\"EuTEDp4yr\",\"Ddoo_BniX\",\"srmj5EbXR\",\"ZjvlgoENE\"],optionTitles:[\"Variant 1\",\"Variant 2\",\"Variant 3\",\"Variant 4\"],title:\"Variant\",type:ControlType.Enum},foEpwXq65:{defaultValue:\"Putting People at the Heart of Everything We Do.\",displayTextArea:true,title:\"Text\",type:ControlType.String}});addFonts(FramersR8uv1Vw7,[{explicitInter:true,fonts:[{family:\"Red Hat Display\",source:\"google\",style:\"normal\",url:\"https://fonts.gstatic.com/s/redhatdisplay/v20/8vIf7wUr0m80wwYf0QCXZzYzUoTK8RZQvRd-D1NYbmyWck05-Xecg3w.woff2\",weight:\"400\"}]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramersR8uv1Vw7\",\"slots\":[],\"annotations\":{\"framerVariables\":\"{\\\"foEpwXq65\\\":\\\"text\\\"}\",\"framerComponentViewportWidth\":\"true\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"178\",\"framerImmutableVariables\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"Ddoo_BniX\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"srmj5EbXR\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"ZjvlgoENE\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerIntrinsicWidth\":\"372\",\"framerDisplayContentsDiv\":\"false\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./sR8uv1Vw7.map", "var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __pow = Math.pow;\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 __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\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  __pow,\n  __spreadValues,\n  __spreadProps,\n  __objRest,\n  __export,\n  __async\n};\n", "import {\n  __async,\n  __export,\n  __pow,\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-5BEQP2BQ.mjs\";\n\n// ../../node_modules/.pnpm/three@0.169.0/node_modules/three/build/three.module.js\nvar 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});\nvar REVISION = \"169\";\nvar MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nvar TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nvar CullFaceNone = 0;\nvar CullFaceBack = 1;\nvar CullFaceFront = 2;\nvar CullFaceFrontBack = 3;\nvar BasicShadowMap = 0;\nvar PCFShadowMap = 1;\nvar PCFSoftShadowMap = 2;\nvar VSMShadowMap = 3;\nvar FrontSide = 0;\nvar BackSide = 1;\nvar DoubleSide = 2;\nvar NoBlending = 0;\nvar NormalBlending = 1;\nvar AdditiveBlending = 2;\nvar SubtractiveBlending = 3;\nvar MultiplyBlending = 4;\nvar CustomBlending = 5;\nvar AddEquation = 100;\nvar SubtractEquation = 101;\nvar ReverseSubtractEquation = 102;\nvar MinEquation = 103;\nvar MaxEquation = 104;\nvar ZeroFactor = 200;\nvar OneFactor = 201;\nvar SrcColorFactor = 202;\nvar OneMinusSrcColorFactor = 203;\nvar SrcAlphaFactor = 204;\nvar OneMinusSrcAlphaFactor = 205;\nvar DstAlphaFactor = 206;\nvar OneMinusDstAlphaFactor = 207;\nvar DstColorFactor = 208;\nvar OneMinusDstColorFactor = 209;\nvar SrcAlphaSaturateFactor = 210;\nvar ConstantColorFactor = 211;\nvar OneMinusConstantColorFactor = 212;\nvar ConstantAlphaFactor = 213;\nvar OneMinusConstantAlphaFactor = 214;\nvar NeverDepth = 0;\nvar AlwaysDepth = 1;\nvar LessDepth = 2;\nvar LessEqualDepth = 3;\nvar EqualDepth = 4;\nvar GreaterEqualDepth = 5;\nvar GreaterDepth = 6;\nvar NotEqualDepth = 7;\nvar MultiplyOperation = 0;\nvar MixOperation = 1;\nvar AddOperation = 2;\nvar NoToneMapping = 0;\nvar LinearToneMapping = 1;\nvar ReinhardToneMapping = 2;\nvar CineonToneMapping = 3;\nvar ACESFilmicToneMapping = 4;\nvar CustomToneMapping = 5;\nvar AgXToneMapping = 6;\nvar NeutralToneMapping = 7;\nvar AttachedBindMode = \"attached\";\nvar DetachedBindMode = \"detached\";\nvar UVMapping = 300;\nvar CubeReflectionMapping = 301;\nvar CubeRefractionMapping = 302;\nvar EquirectangularReflectionMapping = 303;\nvar EquirectangularRefractionMapping = 304;\nvar CubeUVReflectionMapping = 306;\nvar RepeatWrapping = 1e3;\nvar ClampToEdgeWrapping = 1001;\nvar MirroredRepeatWrapping = 1002;\nvar NearestFilter = 1003;\nvar NearestMipmapNearestFilter = 1004;\nvar NearestMipMapNearestFilter = 1004;\nvar NearestMipmapLinearFilter = 1005;\nvar NearestMipMapLinearFilter = 1005;\nvar LinearFilter = 1006;\nvar LinearMipmapNearestFilter = 1007;\nvar LinearMipMapNearestFilter = 1007;\nvar LinearMipmapLinearFilter = 1008;\nvar LinearMipMapLinearFilter = 1008;\nvar UnsignedByteType = 1009;\nvar ByteType = 1010;\nvar ShortType = 1011;\nvar UnsignedShortType = 1012;\nvar IntType = 1013;\nvar UnsignedIntType = 1014;\nvar FloatType = 1015;\nvar HalfFloatType = 1016;\nvar UnsignedShort4444Type = 1017;\nvar UnsignedShort5551Type = 1018;\nvar UnsignedInt248Type = 1020;\nvar UnsignedInt5999Type = 35902;\nvar AlphaFormat = 1021;\nvar RGBFormat = 1022;\nvar RGBAFormat = 1023;\nvar LuminanceFormat = 1024;\nvar LuminanceAlphaFormat = 1025;\nvar DepthFormat = 1026;\nvar DepthStencilFormat = 1027;\nvar RedFormat = 1028;\nvar RedIntegerFormat = 1029;\nvar RGFormat = 1030;\nvar RGIntegerFormat = 1031;\nvar RGBIntegerFormat = 1032;\nvar RGBAIntegerFormat = 1033;\nvar RGB_S3TC_DXT1_Format = 33776;\nvar RGBA_S3TC_DXT1_Format = 33777;\nvar RGBA_S3TC_DXT3_Format = 33778;\nvar RGBA_S3TC_DXT5_Format = 33779;\nvar RGB_PVRTC_4BPPV1_Format = 35840;\nvar RGB_PVRTC_2BPPV1_Format = 35841;\nvar RGBA_PVRTC_4BPPV1_Format = 35842;\nvar RGBA_PVRTC_2BPPV1_Format = 35843;\nvar RGB_ETC1_Format = 36196;\nvar RGB_ETC2_Format = 37492;\nvar RGBA_ETC2_EAC_Format = 37496;\nvar RGBA_ASTC_4x4_Format = 37808;\nvar RGBA_ASTC_5x4_Format = 37809;\nvar RGBA_ASTC_5x5_Format = 37810;\nvar RGBA_ASTC_6x5_Format = 37811;\nvar RGBA_ASTC_6x6_Format = 37812;\nvar RGBA_ASTC_8x5_Format = 37813;\nvar RGBA_ASTC_8x6_Format = 37814;\nvar RGBA_ASTC_8x8_Format = 37815;\nvar RGBA_ASTC_10x5_Format = 37816;\nvar RGBA_ASTC_10x6_Format = 37817;\nvar RGBA_ASTC_10x8_Format = 37818;\nvar RGBA_ASTC_10x10_Format = 37819;\nvar RGBA_ASTC_12x10_Format = 37820;\nvar RGBA_ASTC_12x12_Format = 37821;\nvar RGBA_BPTC_Format = 36492;\nvar RGB_BPTC_SIGNED_Format = 36494;\nvar RGB_BPTC_UNSIGNED_Format = 36495;\nvar RED_RGTC1_Format = 36283;\nvar SIGNED_RED_RGTC1_Format = 36284;\nvar RED_GREEN_RGTC2_Format = 36285;\nvar SIGNED_RED_GREEN_RGTC2_Format = 36286;\nvar LoopOnce = 2200;\nvar LoopRepeat = 2201;\nvar LoopPingPong = 2202;\nvar InterpolateDiscrete = 2300;\nvar InterpolateLinear = 2301;\nvar InterpolateSmooth = 2302;\nvar ZeroCurvatureEnding = 2400;\nvar ZeroSlopeEnding = 2401;\nvar WrapAroundEnding = 2402;\nvar NormalAnimationBlendMode = 2500;\nvar AdditiveAnimationBlendMode = 2501;\nvar TrianglesDrawMode = 0;\nvar TriangleStripDrawMode = 1;\nvar TriangleFanDrawMode = 2;\nvar BasicDepthPacking = 3200;\nvar RGBADepthPacking = 3201;\nvar RGBDepthPacking = 3202;\nvar RGDepthPacking = 3203;\nvar TangentSpaceNormalMap = 0;\nvar ObjectSpaceNormalMap = 1;\nvar NoColorSpace = \"\";\nvar SRGBColorSpace = \"srgb\";\nvar LinearSRGBColorSpace = \"srgb-linear\";\nvar DisplayP3ColorSpace = \"display-p3\";\nvar LinearDisplayP3ColorSpace = \"display-p3-linear\";\nvar LinearTransfer = \"linear\";\nvar SRGBTransfer = \"srgb\";\nvar Rec709Primaries = \"rec709\";\nvar P3Primaries = \"p3\";\nvar ZeroStencilOp = 0;\nvar KeepStencilOp = 7680;\nvar ReplaceStencilOp = 7681;\nvar IncrementStencilOp = 7682;\nvar DecrementStencilOp = 7683;\nvar IncrementWrapStencilOp = 34055;\nvar DecrementWrapStencilOp = 34056;\nvar InvertStencilOp = 5386;\nvar NeverStencilFunc = 512;\nvar LessStencilFunc = 513;\nvar EqualStencilFunc = 514;\nvar LessEqualStencilFunc = 515;\nvar GreaterStencilFunc = 516;\nvar NotEqualStencilFunc = 517;\nvar GreaterEqualStencilFunc = 518;\nvar AlwaysStencilFunc = 519;\nvar NeverCompare = 512;\nvar LessCompare = 513;\nvar EqualCompare = 514;\nvar LessEqualCompare = 515;\nvar GreaterCompare = 516;\nvar NotEqualCompare = 517;\nvar GreaterEqualCompare = 518;\nvar AlwaysCompare = 519;\nvar StaticDrawUsage = 35044;\nvar DynamicDrawUsage = 35048;\nvar StreamDrawUsage = 35040;\nvar StaticReadUsage = 35045;\nvar DynamicReadUsage = 35049;\nvar StreamReadUsage = 35041;\nvar StaticCopyUsage = 35046;\nvar DynamicCopyUsage = 35050;\nvar StreamCopyUsage = 35042;\nvar GLSL1 = \"100\";\nvar GLSL3 = \"300 es\";\nvar WebGLCoordinateSystem = 2e3;\nvar WebGPUCoordinateSystem = 2001;\nvar 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 i = 0, l = array.length; i < l; i++) {\n        array[i].call(this, event);\n      }\n      event.target = null;\n    }\n  }\n};\nvar _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\"];\nvar _seed = 1234567;\nvar DEG2RAD = Math.PI / 180;\nvar RAD2DEG = 180 / Math.PI;\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, y, value) {\n  if (x !== y) {\n    return (value - x) / (y - x);\n  } else {\n    return 0;\n  }\n}\nfunction lerp(x, y, t) {\n  return (1 - t) * x + t * y;\n}\nfunction damp(x, y, lambda, dt) {\n  return lerp(x, y, 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 t = _seed += 1831565813;\n  t = Math.imul(t ^ t >>> 15, t | 1);\n  t ^= t + Math.imul(t ^ t >>> 7, t | 61);\n  return ((t ^ t >>> 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(q, 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      q.set(c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13);\n      break;\n    case \"YZY\":\n      q.set(s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13);\n      break;\n    case \"ZXZ\":\n      q.set(s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13);\n      break;\n    case \"XZX\":\n      q.set(c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13);\n      break;\n    case \"YXY\":\n      q.set(s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13);\n      break;\n    case \"ZYZ\":\n      q.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}\nvar 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};\nvar Vector2 = class _Vector2 {\n  constructor(x = 0, y = 0) {\n    _Vector2.prototype.isVector2 = true;\n    this.x = x;\n    this.y = y;\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, y) {\n    this.x = x;\n    this.y = y;\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(y) {\n    this.y = y;\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(v) {\n    this.x = v.x;\n    this.y = v.y;\n    return this;\n  }\n  add(v) {\n    this.x += v.x;\n    this.y += v.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(v, s) {\n    this.x += v.x * s;\n    this.y += v.y * s;\n    return this;\n  }\n  sub(v) {\n    this.x -= v.x;\n    this.y -= v.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(v) {\n    this.x *= v.x;\n    this.y *= v.y;\n    return this;\n  }\n  multiplyScalar(scalar) {\n    this.x *= scalar;\n    this.y *= scalar;\n    return this;\n  }\n  divide(v) {\n    this.x /= v.x;\n    this.y /= v.y;\n    return this;\n  }\n  divideScalar(scalar) {\n    return this.multiplyScalar(1 / scalar);\n  }\n  applyMatrix3(m) {\n    const x = this.x, y = this.y;\n    const e = m.elements;\n    this.x = e[0] * x + e[3] * y + e[6];\n    this.y = e[1] * x + e[4] * y + e[7];\n    return this;\n  }\n  min(v) {\n    this.x = Math.min(this.x, v.x);\n    this.y = Math.min(this.y, v.y);\n    return this;\n  }\n  max(v) {\n    this.x = Math.max(this.x, v.x);\n    this.y = Math.max(this.y, v.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(v) {\n    return this.x * v.x + this.y * v.y;\n  }\n  cross(v) {\n    return this.x * v.y - this.y * v.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(v) {\n    const denominator = Math.sqrt(this.lengthSq() * v.lengthSq());\n    if (denominator === 0) return Math.PI / 2;\n    const theta = this.dot(v) / denominator;\n    return Math.acos(clamp(theta, -1, 1));\n  }\n  distanceTo(v) {\n    return Math.sqrt(this.distanceToSquared(v));\n  }\n  distanceToSquared(v) {\n    const dx = this.x - v.x, dy = this.y - v.y;\n    return dx * dx + dy * dy;\n  }\n  manhattanDistanceTo(v) {\n    return Math.abs(this.x - v.x) + Math.abs(this.y - v.y);\n  }\n  setLength(length) {\n    return this.normalize().multiplyScalar(length);\n  }\n  lerp(v, alpha) {\n    this.x += (v.x - this.x) * alpha;\n    this.y += (v.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(v) {\n    return v.x === this.x && v.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 y = this.y - center.y;\n    this.x = x * c - y * s + center.x;\n    this.y = x * s + y * 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};\nvar 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], f = te[5], g = te[6], h = te[7], i = te[8];\n    return a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\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(r) {\n    const m = this.elements;\n    r[0] = m[0];\n    r[1] = m[3];\n    r[2] = m[6];\n    r[3] = m[1];\n    r[4] = m[4];\n    r[5] = m[7];\n    r[6] = m[2];\n    r[7] = m[5];\n    r[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, y) {\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        y,\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, y) {\n    this.set(\n      x,\n      0,\n      0,\n      0,\n      y,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  //\n  equals(matrix) {\n    const te = this.elements;\n    const me = matrix.elements;\n    for (let i = 0; i < 9; i++) {\n      if (te[i] !== me[i]) return false;\n    }\n    return true;\n  }\n  fromArray(array, offset = 0) {\n    for (let i = 0; i < 9; i++) {\n      this.elements[i] = array[i + 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};\nvar _m3 = /* @__PURE__ */ new Matrix3();\nfunction arrayNeedsUint32(array) {\n  for (let i = array.length - 1; i >= 0; --i) {\n    if (array[i] >= 65535) return true;\n  }\n  return false;\n}\nvar TYPED_ARRAYS = {\n  Int8Array,\n  Uint8Array,\n  Uint8ClampedArray,\n  Int16Array,\n  Uint16Array,\n  Int32Array,\n  Uint32Array,\n  Float32Array,\n  Float64Array\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}\nvar _cache = {};\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(resolve, 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          resolve();\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}\nvar 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);\nvar 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);\nvar 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};\nvar SUPPORTED_WORKING_COLOR_SPACES = /* @__PURE__ */ new Set([LinearSRGBColorSpace, LinearDisplayP3ColorSpace]);\nvar 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(target, colorSpace = this._workingColorSpace) {\n    return target.fromArray(COLOR_SPACES[colorSpace].luminanceCoefficients);\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}\nvar _canvas;\nvar 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 context = _canvas.getContext(\"2d\");\n      if (image instanceof ImageData) {\n        context.putImageData(image, 0, 0);\n      } else {\n        context.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 context = canvas.getContext(\"2d\");\n      context.drawImage(image, 0, 0, image.width, image.height);\n      const imageData = context.getImageData(0, 0, image.width, image.height);\n      const data = imageData.data;\n      for (let i = 0; i < data.length; i++) {\n        data[i] = SRGBToLinear(data[i] / 255) * 255;\n      }\n      context.putImageData(imageData, 0, 0);\n      return canvas;\n    } else if (image.data) {\n      const data = image.data.slice(0);\n      for (let i = 0; i < data.length; i++) {\n        if (data instanceof Uint8Array || data instanceof Uint8ClampedArray) {\n          data[i] = Math.floor(SRGBToLinear(data[i] / 255) * 255);\n        } else {\n          data[i] = SRGBToLinear(data[i]);\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};\nvar _sourceId = 0;\nvar 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 i = 0, l = data.length; i < l; i++) {\n          if (data[i].isDataTexture) {\n            url.push(serializeImage(data[i].image));\n          } else {\n            url.push(serializeImage(data[i]));\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};\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}\nvar _textureId = 0;\nvar 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};\nTexture.DEFAULT_IMAGE = null;\nTexture.DEFAULT_MAPPING = UVMapping;\nTexture.DEFAULT_ANISOTROPY = 1;\nvar Vector4 = class _Vector4 {\n  constructor(x = 0, y = 0, z = 0, w = 1) {\n    _Vector4.prototype.isVector4 = true;\n    this.x = x;\n    this.y = y;\n    this.z = z;\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, y, z, w) {\n    this.x = x;\n    this.y = y;\n    this.z = z;\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(y) {\n    this.y = y;\n    return this;\n  }\n  setZ(z) {\n    this.z = z;\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(v) {\n    this.x = v.x;\n    this.y = v.y;\n    this.z = v.z;\n    this.w = v.w !== void 0 ? v.w : 1;\n    return this;\n  }\n  add(v) {\n    this.x += v.x;\n    this.y += v.y;\n    this.z += v.z;\n    this.w += v.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(v, s) {\n    this.x += v.x * s;\n    this.y += v.y * s;\n    this.z += v.z * s;\n    this.w += v.w * s;\n    return this;\n  }\n  sub(v) {\n    this.x -= v.x;\n    this.y -= v.y;\n    this.z -= v.z;\n    this.w -= v.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(v) {\n    this.x *= v.x;\n    this.y *= v.y;\n    this.z *= v.z;\n    this.w *= v.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, y = this.y, z = this.z, w = this.w;\n    const e = m.elements;\n    this.x = e[0] * x + e[4] * y + e[8] * z + e[12] * w;\n    this.y = e[1] * x + e[5] * y + e[9] * z + e[13] * w;\n    this.z = e[2] * x + e[6] * y + e[10] * z + e[14] * w;\n    this.w = e[3] * x + e[7] * y + e[11] * z + e[15] * w;\n    return this;\n  }\n  divideScalar(scalar) {\n    return this.multiplyScalar(1 / scalar);\n  }\n  setAxisAngleFromQuaternion(q) {\n    this.w = 2 * Math.acos(q.w);\n    const s = Math.sqrt(1 - q.w * q.w);\n    if (s < 1e-4) {\n      this.x = 1;\n      this.y = 0;\n      this.z = 0;\n    } else {\n      this.x = q.x / s;\n      this.y = q.y / s;\n      this.z = q.z / s;\n    }\n    return this;\n  }\n  setAxisAngleFromRotationMatrix(m) {\n    let angle, x, y, z;\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          y = 0.707106781;\n          z = 0.707106781;\n        } else {\n          x = Math.sqrt(xx);\n          y = xy / x;\n          z = xz / x;\n        }\n      } else if (yy > zz) {\n        if (yy < epsilon) {\n          x = 0.707106781;\n          y = 0;\n          z = 0.707106781;\n        } else {\n          y = Math.sqrt(yy);\n          x = xy / y;\n          z = yz / y;\n        }\n      } else {\n        if (zz < epsilon) {\n          x = 0.707106781;\n          y = 0.707106781;\n          z = 0;\n        } else {\n          z = Math.sqrt(zz);\n          x = xz / z;\n          y = yz / z;\n        }\n      }\n      this.set(x, y, z, 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(v) {\n    this.x = Math.min(this.x, v.x);\n    this.y = Math.min(this.y, v.y);\n    this.z = Math.min(this.z, v.z);\n    this.w = Math.min(this.w, v.w);\n    return this;\n  }\n  max(v) {\n    this.x = Math.max(this.x, v.x);\n    this.y = Math.max(this.y, v.y);\n    this.z = Math.max(this.z, v.z);\n    this.w = Math.max(this.w, v.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(v) {\n    return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.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(v, alpha) {\n    this.x += (v.x - this.x) * alpha;\n    this.y += (v.y - this.y) * alpha;\n    this.z += (v.z - this.z) * alpha;\n    this.w += (v.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(v) {\n    return v.x === this.x && v.y === this.y && v.z === this.z && v.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};\nvar 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 i = 0; i < count; i++) {\n      this.textures[i] = texture.clone();\n      this.textures[i].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 i = 0, il = this.textures.length; i < il; i++) {\n        this.textures[i].image.width = width;\n        this.textures[i].image.height = height;\n        this.textures[i].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 i = 0, il = source.textures.length; i < il; i++) {\n      this.textures[i] = source.textures[i].clone();\n      this.textures[i].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};\nvar WebGLRenderTarget = class extends RenderTarget {\n  constructor(width = 1, height = 1, options = {}) {\n    super(width, height, options);\n    this.isWebGLRenderTarget = true;\n  }\n};\nvar 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};\nvar 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};\nvar 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};\nvar 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};\nvar Quaternion = class {\n  constructor(x = 0, y = 0, z = 0, w = 1) {\n    this.isQuaternion = true;\n    this._x = x;\n    this._y = y;\n    this._z = z;\n    this._w = w;\n  }\n  static slerpFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t) {\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 (t === 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 (t === 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 - t;\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        t = Math.sin(t * len) / sin;\n      }\n      const tDir = t * 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 - t) {\n        const f = 1 / Math.sqrt(x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0);\n        x0 *= f;\n        y0 *= f;\n        z0 *= f;\n        w0 *= f;\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, y, z, w) {\n    this._x = x;\n    this._y = y;\n    this._z = z;\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, y = euler._y, z = 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(y / 2);\n    const c3 = cos(z / 2);\n    const s1 = sin(x / 2);\n    const s2 = sin(y / 2);\n    const s3 = sin(z / 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 r = vFrom.dot(vTo) + 1;\n    if (r < Number.EPSILON) {\n      r = 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 = r;\n      } else {\n        this._x = 0;\n        this._y = -vFrom.z;\n        this._z = vFrom.y;\n        this._w = r;\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 = r;\n    }\n    return this.normalize();\n  }\n  angleTo(q) {\n    return 2 * Math.acos(Math.abs(clamp(this.dot(q), -1, 1)));\n  }\n  rotateTowards(q, step) {\n    const angle = this.angleTo(q);\n    if (angle === 0) return this;\n    const t = Math.min(1, step / angle);\n    this.slerp(q, t);\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(v) {\n    return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._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 l = this.length();\n    if (l === 0) {\n      this._x = 0;\n      this._y = 0;\n      this._z = 0;\n      this._w = 1;\n    } else {\n      l = 1 / l;\n      this._x = this._x * l;\n      this._y = this._y * l;\n      this._z = this._z * l;\n      this._w = this._w * l;\n    }\n    this._onChangeCallback();\n    return this;\n  }\n  multiply(q) {\n    return this.multiplyQuaternions(this, q);\n  }\n  premultiply(q) {\n    return this.multiplyQuaternions(q, 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, t) {\n    if (t === 0) return this;\n    if (t === 1) return this.copy(qb);\n    const x = this._x, y = this._y, z = this._z, w = this._w;\n    let cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * 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 = y;\n      this._z = z;\n      return this;\n    }\n    const sqrSinHalfTheta = 1 - cosHalfTheta * cosHalfTheta;\n    if (sqrSinHalfTheta <= Number.EPSILON) {\n      const s = 1 - t;\n      this._w = s * w + t * this._w;\n      this._x = s * x + t * this._x;\n      this._y = s * y + t * this._y;\n      this._z = s * z + t * 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 - t) * halfTheta) / sinHalfTheta, ratioB = Math.sin(t * halfTheta) / sinHalfTheta;\n    this._w = w * ratioA + this._w * ratioB;\n    this._x = x * ratioA + this._x * ratioB;\n    this._y = y * ratioA + this._y * ratioB;\n    this._z = z * ratioA + this._z * ratioB;\n    this._onChangeCallback();\n    return this;\n  }\n  slerpQuaternions(qa, qb, t) {\n    return this.copy(qa).slerp(qb, t);\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};\nvar Vector3 = class _Vector3 {\n  constructor(x = 0, y = 0, z = 0) {\n    _Vector3.prototype.isVector3 = true;\n    this.x = x;\n    this.y = y;\n    this.z = z;\n  }\n  set(x, y, z) {\n    if (z === void 0) z = this.z;\n    this.x = x;\n    this.y = y;\n    this.z = z;\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(y) {\n    this.y = y;\n    return this;\n  }\n  setZ(z) {\n    this.z = z;\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(v) {\n    this.x = v.x;\n    this.y = v.y;\n    this.z = v.z;\n    return this;\n  }\n  add(v) {\n    this.x += v.x;\n    this.y += v.y;\n    this.z += v.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(v, s) {\n    this.x += v.x * s;\n    this.y += v.y * s;\n    this.z += v.z * s;\n    return this;\n  }\n  sub(v) {\n    this.x -= v.x;\n    this.y -= v.y;\n    this.z -= v.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(v) {\n    this.x *= v.x;\n    this.y *= v.y;\n    this.z *= v.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, y = this.y, z = this.z;\n    const e = m.elements;\n    this.x = e[0] * x + e[3] * y + e[6] * z;\n    this.y = e[1] * x + e[4] * y + e[7] * z;\n    this.z = e[2] * x + e[5] * y + e[8] * z;\n    return this;\n  }\n  applyNormalMatrix(m) {\n    return this.applyMatrix3(m).normalize();\n  }\n  applyMatrix4(m) {\n    const x = this.x, y = this.y, z = this.z;\n    const e = m.elements;\n    const w = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15]);\n    this.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * w;\n    this.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * w;\n    this.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * w;\n    return this;\n  }\n  applyQuaternion(q) {\n    const vx = this.x, vy = this.y, vz = this.z;\n    const qx = q.x, qy = q.y, qz = q.z, qw = q.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, y = this.y, z = this.z;\n    const e = m.elements;\n    this.x = e[0] * x + e[4] * y + e[8] * z;\n    this.y = e[1] * x + e[5] * y + e[9] * z;\n    this.z = e[2] * x + e[6] * y + e[10] * z;\n    return this.normalize();\n  }\n  divide(v) {\n    this.x /= v.x;\n    this.y /= v.y;\n    this.z /= v.z;\n    return this;\n  }\n  divideScalar(scalar) {\n    return this.multiplyScalar(1 / scalar);\n  }\n  min(v) {\n    this.x = Math.min(this.x, v.x);\n    this.y = Math.min(this.y, v.y);\n    this.z = Math.min(this.z, v.z);\n    return this;\n  }\n  max(v) {\n    this.x = Math.max(this.x, v.x);\n    this.y = Math.max(this.y, v.y);\n    this.z = Math.max(this.z, v.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(v) {\n    return this.x * v.x + this.y * v.y + this.z * v.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(v, alpha) {\n    this.x += (v.x - this.x) * alpha;\n    this.y += (v.y - this.y) * alpha;\n    this.z += (v.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(v) {\n    return this.crossVectors(this, v);\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(v) {\n    const denominator = v.lengthSq();\n    if (denominator === 0) return this.set(0, 0, 0);\n    const scalar = v.dot(this) / denominator;\n    return this.copy(v).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(v) {\n    const denominator = Math.sqrt(this.lengthSq() * v.lengthSq());\n    if (denominator === 0) return Math.PI / 2;\n    const theta = this.dot(v) / denominator;\n    return Math.acos(clamp(theta, -1, 1));\n  }\n  distanceTo(v) {\n    return Math.sqrt(this.distanceToSquared(v));\n  }\n  distanceToSquared(v) {\n    const dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n    return dx * dx + dy * dy + dz * dz;\n  }\n  manhattanDistanceTo(v) {\n    return Math.abs(this.x - v.x) + Math.abs(this.y - v.y) + Math.abs(this.z - v.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, y) {\n    this.x = radius * Math.sin(theta);\n    this.y = y;\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(v) {\n    return v.x === this.x && v.y === this.y && v.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 u = Math.random() * 2 - 1;\n    const c = Math.sqrt(1 - u * u);\n    this.x = c * Math.cos(theta);\n    this.y = u;\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};\nvar _vector$c = /* @__PURE__ */ new Vector3();\nvar _quaternion$4 = /* @__PURE__ */ new Quaternion();\nvar 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 i = 0, il = array.length; i < il; i += 3) {\n      this.expandByPoint(_vector$b.fromArray(array, i));\n    }\n    return this;\n  }\n  setFromBufferAttribute(attribute) {\n    this.makeEmpty();\n    for (let i = 0, il = attribute.count; i < il; i++) {\n      this.expandByPoint(_vector$b.fromBufferAttribute(attribute, i));\n    }\n    return this;\n  }\n  setFromPoints(points) {\n    this.makeEmpty();\n    for (let i = 0, il = points.length; i < il; i++) {\n      this.expandByPoint(points[i]);\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(target) {\n    return this.isEmpty() ? target.set(0, 0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5);\n  }\n  getSize(target) {\n    return this.isEmpty() ? target.set(0, 0, 0) : target.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 i = 0, l = positionAttribute.count; i < l; i++) {\n          if (object.isMesh === true) {\n            object.getVertexPosition(i, _vector$b);\n          } else {\n            _vector$b.fromBufferAttribute(positionAttribute, i);\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 i = 0, l = children.length; i < l; i++) {\n      this.expandByObject(children[i], 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, target) {\n    return target.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, target) {\n    return target.copy(point).clamp(this.min, this.max);\n  }\n  distanceToPoint(point) {\n    return this.clampPoint(point, _vector$b).distanceTo(point);\n  }\n  getBoundingSphere(target) {\n    if (this.isEmpty()) {\n      target.makeEmpty();\n    } else {\n      this.getCenter(target.center);\n      target.radius = this.getSize(_vector$b).length() * 0.5;\n    }\n    return target;\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(matrix) {\n    if (this.isEmpty()) return this;\n    _points[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(matrix);\n    _points[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(matrix);\n    _points[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(matrix);\n    _points[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(matrix);\n    _points[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(matrix);\n    _points[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(matrix);\n    _points[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(matrix);\n    _points[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(matrix);\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};\nvar _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];\nvar _vector$b = /* @__PURE__ */ new Vector3();\nvar _box$4 = /* @__PURE__ */ new Box3();\nvar _v0$3 = /* @__PURE__ */ new Vector3();\nvar _v1$7 = /* @__PURE__ */ new Vector3();\nvar _v2$4 = /* @__PURE__ */ new Vector3();\nvar _f0 = /* @__PURE__ */ new Vector3();\nvar _f1 = /* @__PURE__ */ new Vector3();\nvar _f2 = /* @__PURE__ */ new Vector3();\nvar _center = /* @__PURE__ */ new Vector3();\nvar _extents = /* @__PURE__ */ new Vector3();\nvar _triangleNormal = /* @__PURE__ */ new Vector3();\nvar _testAxis = /* @__PURE__ */ new Vector3();\nfunction satForAxes(axes, v0, v1, v2, extents) {\n  for (let i = 0, j = axes.length - 3; i <= j; i += 3) {\n    _testAxis.fromArray(axes, i);\n    const r = 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 p2 = v2.dot(_testAxis);\n    if (Math.max(-Math.max(p0, p1, p2), Math.min(p0, p1, p2)) > r) {\n      return false;\n    }\n  }\n  return true;\n}\nvar _box$3 = /* @__PURE__ */ new Box3();\nvar _v1$6 = /* @__PURE__ */ new Vector3();\nvar _v2$3 = /* @__PURE__ */ new Vector3();\nvar 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 i = 0, il = points.length; i < il; i++) {\n      maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(points[i]));\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, target) {\n    const deltaLengthSq = this.center.distanceToSquared(point);\n    target.copy(point);\n    if (deltaLengthSq > this.radius * this.radius) {\n      target.sub(this.center).normalize();\n      target.multiplyScalar(this.radius).add(this.center);\n    }\n    return target;\n  }\n  getBoundingBox(target) {\n    if (this.isEmpty()) {\n      target.makeEmpty();\n      return target;\n    }\n    target.set(this.center, this.center);\n    target.expandByScalar(this.radius);\n    return target;\n  }\n  applyMatrix4(matrix) {\n    this.center.applyMatrix4(matrix);\n    this.radius = this.radius * matrix.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};\nvar _vector$a = /* @__PURE__ */ new Vector3();\nvar _segCenter = /* @__PURE__ */ new Vector3();\nvar _segDir = /* @__PURE__ */ new Vector3();\nvar _diff = /* @__PURE__ */ new Vector3();\nvar _edge1 = /* @__PURE__ */ new Vector3();\nvar _edge2 = /* @__PURE__ */ new Vector3();\nvar _normal$1 = /* @__PURE__ */ new Vector3();\nvar 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(t, target) {\n    return target.copy(this.origin).addScaledVector(this.direction, t);\n  }\n  lookAt(v) {\n    this.direction.copy(v).sub(this.origin).normalize();\n    return this;\n  }\n  recast(t) {\n    this.origin.copy(this.at(t, _vector$a));\n    return this;\n  }\n  closestPointToPoint(point, target) {\n    target.subVectors(point, this.origin);\n    const directionDistance = target.dot(this.direction);\n    if (directionDistance < 0) {\n      return target.copy(this.origin);\n    }\n    return target.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, target) {\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, target);\n    return this.at(t0, target);\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 t = -(this.origin.dot(plane.normal) + plane.constant) / denominator;\n    return t >= 0 ? t : null;\n  }\n  intersectPlane(plane, target) {\n    const t = this.distanceToPlane(plane);\n    if (t === null) {\n      return null;\n    }\n    return this.at(t, target);\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, target) {\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, target);\n  }\n  intersectsBox(box) {\n    return this.intersectBox(box, _vector$a) !== null;\n  }\n  intersectTriangle(a, b, c, backfaceCulling, target) {\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, target);\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};\nvar 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, y = euler.y, z = euler.z;\n    const a = Math.cos(x), b = Math.sin(x);\n    const c = Math.cos(y), d = Math.sin(y);\n    const e = Math.cos(z), f = Math.sin(z);\n    if (euler.order === \"XYZ\") {\n      const ae = a * e, af = a * f, be = b * e, bf = b * f;\n      te[0] = c * e;\n      te[4] = -c * f;\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 * f, de = d * e, df = d * f;\n      te[0] = ce + df * b;\n      te[4] = de * b - cf;\n      te[8] = a * d;\n      te[1] = a * f;\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 * f, de = d * e, df = d * f;\n      te[0] = ce - df * b;\n      te[4] = -a * f;\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 * f, be = b * e, bf = b * f;\n      te[0] = c * e;\n      te[4] = be * d - af;\n      te[8] = ae * d + bf;\n      te[1] = c * f;\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 * f;\n      te[8] = bc * f + ad;\n      te[1] = f;\n      te[5] = a * e;\n      te[9] = -b * e;\n      te[2] = -d * e;\n      te[6] = ad * f + bc;\n      te[10] = ac - bd * f;\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] = -f;\n      te[8] = d * e;\n      te[1] = ac * f + bd;\n      te[5] = a * e;\n      te[9] = ad * f - bc;\n      te[2] = bc * f - ad;\n      te[6] = b * e;\n      te[10] = bd * f + 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(q) {\n    return this.compose(_zero, q, _one);\n  }\n  lookAt(eye, target, up) {\n    const te = this.elements;\n    _z.subVectors(eye, target);\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, y, z) {\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] = y;\n      te[14] = z;\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(v) {\n    const te = this.elements;\n    const x = v.x, y = v.y, z = v.z;\n    te[0] *= x;\n    te[4] *= y;\n    te[8] *= z;\n    te[1] *= x;\n    te[5] *= y;\n    te[9] *= z;\n    te[2] *= x;\n    te[6] *= y;\n    te[10] *= z;\n    te[3] *= x;\n    te[7] *= y;\n    te[11] *= z;\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, y, z) {\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        y,\n        0,\n        0,\n        1,\n        z,\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 t = 1 - c;\n    const x = axis.x, y = axis.y, z = axis.z;\n    const tx = t * x, ty = t * y;\n    this.set(\n      tx * x + c,\n      tx * y - s * z,\n      tx * z + s * y,\n      0,\n      tx * y + s * z,\n      ty * y + c,\n      ty * z - s * x,\n      0,\n      tx * z - s * y,\n      ty * z + s * x,\n      t * z * z + c,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  makeScale(x, y, z) {\n    this.set(\n      x,\n      0,\n      0,\n      0,\n      0,\n      y,\n      0,\n      0,\n      0,\n      0,\n      z,\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, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n    const x2 = x + x, y2 = y + y, z2 = z + z;\n    const xx = x * x2, xy = x * y2, xz = x * z2;\n    const yy = y * y2, yz = y * z2, zz = z * z2;\n    const wx = w * x2, wy = w * y2, wz = w * z2;\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 y = 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] = y;\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 h = 1 / (top - bottom);\n    const p = 1 / (far - near);\n    const x = (right + left) * w;\n    const y = (top + bottom) * h;\n    let z, zInv;\n    if (coordinateSystem === WebGLCoordinateSystem) {\n      z = (far + near) * p;\n      zInv = -2 * p;\n    } else if (coordinateSystem === WebGPUCoordinateSystem) {\n      z = near * p;\n      zInv = -1 * p;\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 * h;\n    te[9] = 0;\n    te[13] = -y;\n    te[2] = 0;\n    te[6] = 0;\n    te[10] = zInv;\n    te[14] = -z;\n    te[3] = 0;\n    te[7] = 0;\n    te[11] = 0;\n    te[15] = 1;\n    return this;\n  }\n  equals(matrix) {\n    const te = this.elements;\n    const me = matrix.elements;\n    for (let i = 0; i < 16; i++) {\n      if (te[i] !== me[i]) return false;\n    }\n    return true;\n  }\n  fromArray(array, offset = 0) {\n    for (let i = 0; i < 16; i++) {\n      this.elements[i] = array[i + 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};\nvar _v1$5 = /* @__PURE__ */ new Vector3();\nvar _m1$4 = /* @__PURE__ */ new Matrix4();\nvar _zero = /* @__PURE__ */ new Vector3(0, 0, 0);\nvar _one = /* @__PURE__ */ new Vector3(1, 1, 1);\nvar _x = /* @__PURE__ */ new Vector3();\nvar _y = /* @__PURE__ */ new Vector3();\nvar _z = /* @__PURE__ */ new Vector3();\nvar _matrix$2 = /* @__PURE__ */ new Matrix4();\nvar _quaternion$3 = /* @__PURE__ */ new Quaternion();\nvar Euler = class _Euler {\n  constructor(x = 0, y = 0, z = 0, order = _Euler.DEFAULT_ORDER) {\n    this.isEuler = true;\n    this._x = x;\n    this._y = y;\n    this._z = z;\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, y, z, order = this._order) {\n    this._x = x;\n    this._y = y;\n    this._z = z;\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(q, order, update) {\n    _matrix$2.makeRotationFromQuaternion(q);\n    return this.setFromRotationMatrix(_matrix$2, order, update);\n  }\n  setFromVector3(v, order = this._order) {\n    return this.set(v.x, v.y, v.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};\nEuler.DEFAULT_ORDER = \"XYZ\";\nvar 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};\nvar _object3DId = 0;\nvar _v1$4 = /* @__PURE__ */ new Vector3();\nvar _q1 = /* @__PURE__ */ new Quaternion();\nvar _m1$3 = /* @__PURE__ */ new Matrix4();\nvar _target = /* @__PURE__ */ new Vector3();\nvar _position$3 = /* @__PURE__ */ new Vector3();\nvar _scale$2 = /* @__PURE__ */ new Vector3();\nvar _quaternion$2 = /* @__PURE__ */ new Quaternion();\nvar _xAxis = /* @__PURE__ */ new Vector3(1, 0, 0);\nvar _yAxis = /* @__PURE__ */ new Vector3(0, 1, 0);\nvar _zAxis = /* @__PURE__ */ new Vector3(0, 0, 1);\nvar _addedEvent = { type: \"added\" };\nvar _removedEvent = { type: \"removed\" };\nvar _childaddedEvent = { type: \"childadded\", child: null };\nvar _childremovedEvent = { type: \"childremoved\", child: null };\nvar 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(matrix) {\n    if (this.matrixAutoUpdate) this.updateMatrix();\n    this.matrix.premultiply(matrix);\n    this.matrix.decompose(this.position, this.quaternion, this.scale);\n  }\n  applyQuaternion(q) {\n    this.quaternion.premultiply(q);\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(q) {\n    this.quaternion.copy(q);\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, y, z) {\n    if (x.isVector3) {\n      _target.copy(x);\n    } else {\n      _target.set(x, y, z);\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 i = 0; i < arguments.length; i++) {\n        this.add(arguments[i]);\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 i = 0; i < arguments.length; i++) {\n        this.remove(arguments[i]);\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 i = 0, l = this.children.length; i < l; i++) {\n      const child = this.children[i];\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 i = 0, l = children.length; i < l; i++) {\n      children[i].getObjectsByProperty(name, value, result);\n    }\n    return result;\n  }\n  getWorldPosition(target) {\n    this.updateWorldMatrix(true, false);\n    return target.setFromMatrixPosition(this.matrixWorld);\n  }\n  getWorldQuaternion(target) {\n    this.updateWorldMatrix(true, false);\n    this.matrixWorld.decompose(_position$3, target, _scale$2);\n    return target;\n  }\n  getWorldScale(target) {\n    this.updateWorldMatrix(true, false);\n    this.matrixWorld.decompose(_position$3, _quaternion$2, target);\n    return target;\n  }\n  getWorldDirection(target) {\n    this.updateWorldMatrix(true, false);\n    const e = this.matrixWorld.elements;\n    return target.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 i = 0, l = children.length; i < l; i++) {\n      children[i].traverse(callback);\n    }\n  }\n  traverseVisible(callback) {\n    if (this.visible === false) return;\n    callback(this);\n    const children = this.children;\n    for (let i = 0, l = children.length; i < l; i++) {\n      children[i].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 i = 0, l = children.length; i < l; i++) {\n      const child = children[i];\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 i = 0, l = children.length; i < l; i++) {\n        const child = children[i];\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 i = 0, l = shapes.length; i < l; i++) {\n            const shape = shapes[i];\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 i = 0, l = this.material.length; i < l; i++) {\n          uuids.push(serialize(meta.materials, this.material[i]));\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 i = 0; i < this.children.length; i++) {\n        object.children.push(this.children[i].toJSON(meta).object);\n      }\n    }\n    if (this.animations.length > 0) {\n      object.animations = [];\n      for (let i = 0; i < this.animations.length; i++) {\n        const animation = this.animations[i];\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 i = 0; i < source.children.length; i++) {\n        const child = source.children[i];\n        this.add(child.clone());\n      }\n    }\n    return this;\n  }\n};\nObject3D.DEFAULT_UP = /* @__PURE__ */ new Vector3(0, 1, 0);\nObject3D.DEFAULT_MATRIX_AUTO_UPDATE = true;\nObject3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;\nvar _v0$2 = /* @__PURE__ */ new Vector3();\nvar _v1$3 = /* @__PURE__ */ new Vector3();\nvar _v2$2 = /* @__PURE__ */ new Vector3();\nvar _v3$2 = /* @__PURE__ */ new Vector3();\nvar _vab = /* @__PURE__ */ new Vector3();\nvar _vac = /* @__PURE__ */ new Vector3();\nvar _vbc = /* @__PURE__ */ new Vector3();\nvar _vap = /* @__PURE__ */ new Vector3();\nvar _vbp = /* @__PURE__ */ new Vector3();\nvar _vcp = /* @__PURE__ */ new Vector3();\nvar _v40 = /* @__PURE__ */ new Vector4();\nvar _v41 = /* @__PURE__ */ new Vector4();\nvar _v42 = /* @__PURE__ */ new Vector4();\nvar 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, target) {\n    target.subVectors(c, b);\n    _v0$2.subVectors(a, b);\n    target.cross(_v0$2);\n    const targetLengthSq = target.lengthSq();\n    if (targetLengthSq > 0) {\n      return target.multiplyScalar(1 / Math.sqrt(targetLengthSq));\n    }\n    return target.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, target) {\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      target.set(0, 0, 0);\n      return null;\n    }\n    const invDenom = 1 / denom;\n    const u = (dot11 * dot02 - dot01 * dot12) * invDenom;\n    const v = (dot00 * dot12 - dot01 * dot02) * invDenom;\n    return target.set(1 - u - v, v, u);\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, p2, p3, v1, v2, v3, target) {\n    if (this.getBarycoord(point, p1, p2, p3, _v3$2) === null) {\n      target.x = 0;\n      target.y = 0;\n      if (\"z\" in target) target.z = 0;\n      if (\"w\" in target) target.w = 0;\n      return null;\n    }\n    target.setScalar(0);\n    target.addScaledVector(v1, _v3$2.x);\n    target.addScaledVector(v2, _v3$2.y);\n    target.addScaledVector(v3, _v3$2.z);\n    return target;\n  }\n  static getInterpolatedAttribute(attr, i1, i2, i3, barycoord, target) {\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    target.setScalar(0);\n    target.addScaledVector(_v40, barycoord.x);\n    target.addScaledVector(_v41, barycoord.y);\n    target.addScaledVector(_v42, barycoord.z);\n    return target;\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(target) {\n    return target.addVectors(this.a, this.b).add(this.c).multiplyScalar(1 / 3);\n  }\n  getNormal(target) {\n    return _Triangle.getNormal(this.a, this.b, this.c, target);\n  }\n  getPlane(target) {\n    return target.setFromCoplanarPoints(this.a, this.b, this.c);\n  }\n  getBarycoord(point, target) {\n    return _Triangle.getBarycoord(point, this.a, this.b, this.c, target);\n  }\n  getInterpolation(point, v1, v2, v3, target) {\n    return _Triangle.getInterpolation(point, this.a, this.b, this.c, v1, v2, v3, target);\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(p, target) {\n    const a = this.a, b = this.b, c = this.c;\n    let v, w;\n    _vab.subVectors(b, a);\n    _vac.subVectors(c, a);\n    _vap.subVectors(p, a);\n    const d1 = _vab.dot(_vap);\n    const d2 = _vac.dot(_vap);\n    if (d1 <= 0 && d2 <= 0) {\n      return target.copy(a);\n    }\n    _vbp.subVectors(p, b);\n    const d3 = _vab.dot(_vbp);\n    const d4 = _vac.dot(_vbp);\n    if (d3 >= 0 && d4 <= d3) {\n      return target.copy(b);\n    }\n    const vc = d1 * d4 - d3 * d2;\n    if (vc <= 0 && d1 >= 0 && d3 <= 0) {\n      v = d1 / (d1 - d3);\n      return target.copy(a).addScaledVector(_vab, v);\n    }\n    _vcp.subVectors(p, c);\n    const d5 = _vab.dot(_vcp);\n    const d6 = _vac.dot(_vcp);\n    if (d6 >= 0 && d5 <= d6) {\n      return target.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 target.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 target.copy(b).addScaledVector(_vbc, w);\n    }\n    const denom = 1 / (va + vb + vc);\n    v = vb * denom;\n    w = vc * denom;\n    return target.copy(a).addScaledVector(_vab, v).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};\nvar _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};\nvar _hslA = { h: 0, s: 0, l: 0 };\nvar _hslB = { h: 0, s: 0, l: 0 };\nfunction hue2rgb(p, q, t) {\n  if (t < 0) t += 1;\n  if (t > 1) t -= 1;\n  if (t < 1 / 6) return p + (q - p) * 6 * t;\n  if (t < 1 / 2) return q;\n  if (t < 2 / 3) return p + (q - p) * 6 * (2 / 3 - t);\n  return p;\n}\nvar Color = class {\n  constructor(r, g, b) {\n    this.isColor = true;\n    this.r = 1;\n    this.g = 1;\n    this.b = 1;\n    return this.set(r, g, b);\n  }\n  set(r, g, b) {\n    if (g === void 0 && b === void 0) {\n      const value = r;\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(r, g, 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(r, g, b, colorSpace = ColorManagement.workingColorSpace) {\n    this.r = r;\n    this.g = g;\n    this.b = b;\n    ColorManagement.toWorkingColorSpace(this, colorSpace);\n    return this;\n  }\n  setHSL(h, s, l, colorSpace = ColorManagement.workingColorSpace) {\n    h = euclideanModulo(h, 1);\n    s = clamp(s, 0, 1);\n    l = clamp(l, 0, 1);\n    if (s === 0) {\n      this.r = this.g = this.b = l;\n    } else {\n      const p = l <= 0.5 ? l * (1 + s) : l + s - l * s;\n      const q = 2 * l - p;\n      this.r = hue2rgb(q, p, h + 1 / 3);\n      this.g = hue2rgb(q, p, h);\n      this.b = hue2rgb(q, p, h - 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(target, colorSpace = ColorManagement.workingColorSpace) {\n    ColorManagement.fromWorkingColorSpace(_color.copy(this), colorSpace);\n    const r = _color.r, g = _color.g, b = _color.b;\n    const max = Math.max(r, g, b);\n    const min = Math.min(r, g, 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 r:\n          hue = (g - b) / delta + (g < b ? 6 : 0);\n          break;\n        case g:\n          hue = (b - r) / delta + 2;\n          break;\n        case b:\n          hue = (r - g) / delta + 4;\n          break;\n      }\n      hue /= 6;\n    }\n    target.h = hue;\n    target.s = saturation;\n    target.l = lightness;\n    return target;\n  }\n  getRGB(target, colorSpace = ColorManagement.workingColorSpace) {\n    ColorManagement.fromWorkingColorSpace(_color.copy(this), colorSpace);\n    target.r = _color.r;\n    target.g = _color.g;\n    target.b = _color.b;\n    return target;\n  }\n  getStyle(colorSpace = SRGBColorSpace) {\n    ColorManagement.fromWorkingColorSpace(_color.copy(this), colorSpace);\n    const r = _color.r, g = _color.g, b = _color.b;\n    if (colorSpace !== SRGBColorSpace) {\n      return `color(${colorSpace} ${r.toFixed(3)} ${g.toFixed(3)} ${b.toFixed(3)})`;\n    }\n    return `rgb(${Math.round(r * 255)},${Math.round(g * 255)},${Math.round(b * 255)})`;\n  }\n  offsetHSL(h, s, l) {\n    this.getHSL(_hslA);\n    return this.setHSL(_hslA.h + h, _hslA.s + s, _hslA.l + l);\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 h = lerp(_hslA.h, _hslB.h, alpha);\n    const s = lerp(_hslA.s, _hslB.s, alpha);\n    const l = lerp(_hslA.l, _hslB.l, alpha);\n    this.setHSL(h, s, l);\n    return this;\n  }\n  setFromVector3(v) {\n    this.r = v.x;\n    this.g = v.y;\n    this.b = v.z;\n    return this;\n  }\n  applyMatrix3(m) {\n    const r = this.r, g = this.g, b = this.b;\n    const e = m.elements;\n    this.r = e[0] * r + e[3] * g + e[6] * b;\n    this.g = e[1] * r + e[4] * g + e[7] * b;\n    this.b = e[2] * r + e[5] * g + 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};\nvar _color = /* @__PURE__ */ new Color();\nColor.NAMES = _colorKeywords;\nvar _materialId = 0;\nvar 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 i = 0; i !== n; ++i) {\n        dstPlanes[i] = srcPlanes[i].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};\nvar 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};\nvar _tables = /* @__PURE__ */ _generateTables();\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 i = 0; i < 256; ++i) {\n    const e = i - 127;\n    if (e < -27) {\n      baseTable[i] = 0;\n      baseTable[i | 256] = 32768;\n      shiftTable[i] = 24;\n      shiftTable[i | 256] = 24;\n    } else if (e < -14) {\n      baseTable[i] = 1024 >> -e - 14;\n      baseTable[i | 256] = 1024 >> -e - 14 | 32768;\n      shiftTable[i] = -e - 1;\n      shiftTable[i | 256] = -e - 1;\n    } else if (e <= 15) {\n      baseTable[i] = e + 15 << 10;\n      baseTable[i | 256] = e + 15 << 10 | 32768;\n      shiftTable[i] = 13;\n      shiftTable[i | 256] = 13;\n    } else if (e < 128) {\n      baseTable[i] = 31744;\n      baseTable[i | 256] = 64512;\n      shiftTable[i] = 24;\n      shiftTable[i | 256] = 24;\n    } else {\n      baseTable[i] = 31744;\n      baseTable[i | 256] = 64512;\n      shiftTable[i] = 13;\n      shiftTable[i | 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 i = 1; i < 1024; ++i) {\n    let m = i << 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[i] = m | e;\n  }\n  for (let i = 1024; i < 2048; ++i) {\n    mantissaTable[i] = 939524096 + (i - 1024 << 13);\n  }\n  for (let i = 1; i < 31; ++i) {\n    exponentTable[i] = i << 23;\n  }\n  exponentTable[31] = 1199570944;\n  exponentTable[32] = 2147483648;\n  for (let i = 33; i < 63; ++i) {\n    exponentTable[i] = 2147483648 + (i - 32 << 23);\n  }\n  exponentTable[63] = 3347054592;\n  for (let i = 1; i < 64; ++i) {\n    if (i !== 32) {\n      offsetTable[i] = 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 f = _tables.uint32View[0];\n  const e = f >> 23 & 511;\n  return _tables.baseTable[e] + ((f & 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}\nvar DataUtils = {\n  toHalfFloat,\n  fromHalfFloat\n};\nvar _vector$9 = /* @__PURE__ */ new Vector3();\nvar _vector2$1 = /* @__PURE__ */ new Vector2();\nvar 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 i = 0, l = this.itemSize; i < l; i++) {\n      this.array[index1 + i] = attribute.array[index2 + i];\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 i = 0, l = this.count; i < l; i++) {\n        _vector2$1.fromBufferAttribute(this, i);\n        _vector2$1.applyMatrix3(m);\n        this.setXY(i, _vector2$1.x, _vector2$1.y);\n      }\n    } else if (this.itemSize === 3) {\n      for (let i = 0, l = this.count; i < l; i++) {\n        _vector$9.fromBufferAttribute(this, i);\n        _vector$9.applyMatrix3(m);\n        this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n      }\n    }\n    return this;\n  }\n  applyMatrix4(m) {\n    for (let i = 0, l = this.count; i < l; i++) {\n      _vector$9.fromBufferAttribute(this, i);\n      _vector$9.applyMatrix4(m);\n      this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n    }\n    return this;\n  }\n  applyNormalMatrix(m) {\n    for (let i = 0, l = this.count; i < l; i++) {\n      _vector$9.fromBufferAttribute(this, i);\n      _vector$9.applyNormalMatrix(m);\n      this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n    }\n    return this;\n  }\n  transformDirection(m) {\n    for (let i = 0, l = this.count; i < l; i++) {\n      _vector$9.fromBufferAttribute(this, i);\n      _vector$9.transformDirection(m);\n      this.setXYZ(i, _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 y = this.array[index * this.itemSize + 1];\n    if (this.normalized) y = denormalize(y, this.array);\n    return y;\n  }\n  setY(index, y) {\n    if (this.normalized) y = normalize(y, this.array);\n    this.array[index * this.itemSize + 1] = y;\n    return this;\n  }\n  getZ(index) {\n    let z = this.array[index * this.itemSize + 2];\n    if (this.normalized) z = denormalize(z, this.array);\n    return z;\n  }\n  setZ(index, z) {\n    if (this.normalized) z = normalize(z, this.array);\n    this.array[index * this.itemSize + 2] = z;\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, y) {\n    index *= this.itemSize;\n    if (this.normalized) {\n      x = normalize(x, this.array);\n      y = normalize(y, this.array);\n    }\n    this.array[index + 0] = x;\n    this.array[index + 1] = y;\n    return this;\n  }\n  setXYZ(index, x, y, z) {\n    index *= this.itemSize;\n    if (this.normalized) {\n      x = normalize(x, this.array);\n      y = normalize(y, this.array);\n      z = normalize(z, this.array);\n    }\n    this.array[index + 0] = x;\n    this.array[index + 1] = y;\n    this.array[index + 2] = z;\n    return this;\n  }\n  setXYZW(index, x, y, z, w) {\n    index *= this.itemSize;\n    if (this.normalized) {\n      x = normalize(x, this.array);\n      y = normalize(y, this.array);\n      z = normalize(z, this.array);\n      w = normalize(w, this.array);\n    }\n    this.array[index + 0] = x;\n    this.array[index + 1] = y;\n    this.array[index + 2] = z;\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};\nvar Int8BufferAttribute = class extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Int8Array(array), itemSize, normalized);\n  }\n};\nvar Uint8BufferAttribute = class extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Uint8Array(array), itemSize, normalized);\n  }\n};\nvar Uint8ClampedBufferAttribute = class extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Uint8ClampedArray(array), itemSize, normalized);\n  }\n};\nvar Int16BufferAttribute = class extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Int16Array(array), itemSize, normalized);\n  }\n};\nvar Uint16BufferAttribute = class extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Uint16Array(array), itemSize, normalized);\n  }\n};\nvar Int32BufferAttribute = class extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Int32Array(array), itemSize, normalized);\n  }\n};\nvar Uint32BufferAttribute = class extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Uint32Array(array), itemSize, normalized);\n  }\n};\nvar 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 y = fromHalfFloat(this.array[index * this.itemSize + 1]);\n    if (this.normalized) y = denormalize(y, this.array);\n    return y;\n  }\n  setY(index, y) {\n    if (this.normalized) y = normalize(y, this.array);\n    this.array[index * this.itemSize + 1] = toHalfFloat(y);\n    return this;\n  }\n  getZ(index) {\n    let z = fromHalfFloat(this.array[index * this.itemSize + 2]);\n    if (this.normalized) z = denormalize(z, this.array);\n    return z;\n  }\n  setZ(index, z) {\n    if (this.normalized) z = normalize(z, this.array);\n    this.array[index * this.itemSize + 2] = toHalfFloat(z);\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, y) {\n    index *= this.itemSize;\n    if (this.normalized) {\n      x = normalize(x, this.array);\n      y = normalize(y, this.array);\n    }\n    this.array[index + 0] = toHalfFloat(x);\n    this.array[index + 1] = toHalfFloat(y);\n    return this;\n  }\n  setXYZ(index, x, y, z) {\n    index *= this.itemSize;\n    if (this.normalized) {\n      x = normalize(x, this.array);\n      y = normalize(y, this.array);\n      z = normalize(z, this.array);\n    }\n    this.array[index + 0] = toHalfFloat(x);\n    this.array[index + 1] = toHalfFloat(y);\n    this.array[index + 2] = toHalfFloat(z);\n    return this;\n  }\n  setXYZW(index, x, y, z, w) {\n    index *= this.itemSize;\n    if (this.normalized) {\n      x = normalize(x, this.array);\n      y = normalize(y, this.array);\n      z = normalize(z, this.array);\n      w = normalize(w, this.array);\n    }\n    this.array[index + 0] = toHalfFloat(x);\n    this.array[index + 1] = toHalfFloat(y);\n    this.array[index + 2] = toHalfFloat(z);\n    this.array[index + 3] = toHalfFloat(w);\n    return this;\n  }\n};\nvar Float32BufferAttribute = class extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Float32Array(array), itemSize, normalized);\n  }\n};\nvar _id$2 = 0;\nvar _m1$2 = /* @__PURE__ */ new Matrix4();\nvar _obj = /* @__PURE__ */ new Object3D();\nvar _offset = /* @__PURE__ */ new Vector3();\nvar _box$2 = /* @__PURE__ */ new Box3();\nvar _boxMorphTargets = /* @__PURE__ */ new Box3();\nvar _vector$8 = /* @__PURE__ */ new Vector3();\nvar 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(matrix) {\n    const position = this.attributes.position;\n    if (position !== void 0) {\n      position.applyMatrix4(matrix);\n      position.needsUpdate = true;\n    }\n    const normal = this.attributes.normal;\n    if (normal !== void 0) {\n      const normalMatrix = new Matrix3().getNormalMatrix(matrix);\n      normal.applyNormalMatrix(normalMatrix);\n      normal.needsUpdate = true;\n    }\n    const tangent = this.attributes.tangent;\n    if (tangent !== void 0) {\n      tangent.transformDirection(matrix);\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(q) {\n    _m1$2.makeRotationFromQuaternion(q);\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, y, z) {\n    _m1$2.makeTranslation(x, y, z);\n    this.applyMatrix4(_m1$2);\n    return this;\n  }\n  scale(x, y, z) {\n    _m1$2.makeScale(x, y, z);\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 i = 0, l = points.length; i < l; i++) {\n      const point = points[i];\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 i = 0, il = morphAttributesPosition.length; i < il; i++) {\n          const morphAttribute = morphAttributesPosition[i];\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 i = 0, il = morphAttributesPosition.length; i < il; i++) {\n          const morphAttribute = morphAttributesPosition[i];\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 i = 0, il = position.count; i < il; i++) {\n        _vector$8.fromBufferAttribute(position, i);\n        maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector$8));\n      }\n      if (morphAttributesPosition) {\n        for (let i = 0, il = morphAttributesPosition.length; i < il; i++) {\n          const morphAttribute = morphAttributesPosition[i];\n          const morphTargetsRelative = this.morphTargetsRelative;\n          for (let j = 0, jl = morphAttribute.count; j < jl; j++) {\n            _vector$8.fromBufferAttribute(morphAttribute, j);\n            if (morphTargetsRelative) {\n              _offset.fromBufferAttribute(position, j);\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 i = 0; i < positionAttribute.count; i++) {\n      tan1[i] = new Vector3();\n      tan2[i] = 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 r = 1 / (uvB.x * uvC.y - uvC.x * uvB.y);\n      if (!isFinite(r)) return;\n      sdir.copy(vB).multiplyScalar(uvC.y).addScaledVector(vC, -uvB.y).multiplyScalar(r);\n      tdir.copy(vC).multiplyScalar(uvB.x).addScaledVector(vB, -uvC.x).multiplyScalar(r);\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 i = 0, il = groups.length; i < il; ++i) {\n      const group = groups[i];\n      const start = group.start;\n      const count = group.count;\n      for (let j = start, jl = start + count; j < jl; j += 3) {\n        handleTriangle(\n          index.getX(j + 0),\n          index.getX(j + 1),\n          index.getX(j + 2)\n        );\n      }\n    }\n    const tmp2 = new Vector3(), tmp22 = new Vector3();\n    const n = new Vector3(), n2 = new Vector3();\n    function handleVertex(v) {\n      n.fromBufferAttribute(normalAttribute, v);\n      n2.copy(n);\n      const t = tan1[v];\n      tmp2.copy(t);\n      tmp2.sub(n.multiplyScalar(n.dot(t))).normalize();\n      tmp22.crossVectors(n2, t);\n      const test = tmp22.dot(tan2[v]);\n      const w = test < 0 ? -1 : 1;\n      tangentAttribute.setXYZW(v, tmp2.x, tmp2.y, tmp2.z, w);\n    }\n    for (let i = 0, il = groups.length; i < il; ++i) {\n      const group = groups[i];\n      const start = group.start;\n      const count = group.count;\n      for (let j = start, jl = start + count; j < jl; j += 3) {\n        handleVertex(index.getX(j + 0));\n        handleVertex(index.getX(j + 1));\n        handleVertex(index.getX(j + 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 i = 0, il = normalAttribute.count; i < il; i++) {\n          normalAttribute.setXYZ(i, 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 i = 0, il = index.count; i < il; i += 3) {\n          const vA = index.getX(i + 0);\n          const vB = index.getX(i + 1);\n          const vC = index.getX(i + 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 i = 0, il = positionAttribute.count; i < il; i += 3) {\n          pA.fromBufferAttribute(positionAttribute, i + 0);\n          pB.fromBufferAttribute(positionAttribute, i + 1);\n          pC.fromBufferAttribute(positionAttribute, i + 2);\n          cb.subVectors(pC, pB);\n          ab.subVectors(pA, pB);\n          cb.cross(ab);\n          normalAttribute.setXYZ(i + 0, cb.x, cb.y, cb.z);\n          normalAttribute.setXYZ(i + 1, cb.x, cb.y, cb.z);\n          normalAttribute.setXYZ(i + 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 i = 0, il = normals.count; i < il; i++) {\n      _vector$8.fromBufferAttribute(normals, i);\n      _vector$8.normalize();\n      normals.setXYZ(i, _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 i = 0, l = indices2.length; i < l; i++) {\n        if (attribute.isInterleavedBufferAttribute) {\n          index = indices2[i] * attribute.data.stride + attribute.offset;\n        } else {\n          index = indices2[i] * itemSize;\n        }\n        for (let j = 0; j < itemSize; j++) {\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 i = 0, il = morphAttribute.length; i < il; i++) {\n        const attribute = morphAttribute[i];\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 i = 0, l = groups.length; i < l; i++) {\n      const group = groups[i];\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 i = 0, il = attributeArray.length; i < il; i++) {\n        const attribute = attributeArray[i];\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 i = 0, l = morphAttribute.length; i < l; i++) {\n        array.push(morphAttribute[i].clone(data));\n      }\n      this.morphAttributes[name] = array;\n    }\n    this.morphTargetsRelative = source.morphTargetsRelative;\n    const groups = source.groups;\n    for (let i = 0, l = groups.length; i < l; i++) {\n      const group = groups[i];\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};\nvar _inverseMatrix$3 = /* @__PURE__ */ new Matrix4();\nvar _ray$3 = /* @__PURE__ */ new Ray();\nvar _sphere$6 = /* @__PURE__ */ new Sphere();\nvar _sphereHitAt = /* @__PURE__ */ new Vector3();\nvar _vA$1 = /* @__PURE__ */ new Vector3();\nvar _vB$1 = /* @__PURE__ */ new Vector3();\nvar _vC$1 = /* @__PURE__ */ new Vector3();\nvar _tempA = /* @__PURE__ */ new Vector3();\nvar _morphA = /* @__PURE__ */ new Vector3();\nvar _intersectionPoint = /* @__PURE__ */ new Vector3();\nvar _intersectionPointWorld = /* @__PURE__ */ new Vector3();\nvar 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, target) {\n    const geometry = this.geometry;\n    const position = geometry.attributes.position;\n    const morphPosition = geometry.morphAttributes.position;\n    const morphTargetsRelative = geometry.morphTargetsRelative;\n    target.fromBufferAttribute(position, index);\n    const morphInfluences = this.morphTargetInfluences;\n    if (morphPosition && morphInfluences) {\n      _morphA.set(0, 0, 0);\n      for (let i = 0, il = morphPosition.length; i < il; i++) {\n        const influence = morphInfluences[i];\n        const morphAttribute = morphPosition[i];\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(target), influence);\n        }\n      }\n      target.add(_morphA);\n    }\n    return target;\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 i = 0, il = groups.length; i < il; i++) {\n          const group = groups[i];\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 j = start, jl = end; j < jl; j += 3) {\n            const a = index.getX(j);\n            const b = index.getX(j + 1);\n            const c = index.getX(j + 2);\n            intersection = checkGeometryIntersection(this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c);\n            if (intersection) {\n              intersection.faceIndex = Math.floor(j / 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 i = start, il = end; i < il; i += 3) {\n          const a = index.getX(i);\n          const b = index.getX(i + 1);\n          const c = index.getX(i + 2);\n          intersection = checkGeometryIntersection(this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c);\n          if (intersection) {\n            intersection.faceIndex = Math.floor(i / 3);\n            intersects2.push(intersection);\n          }\n        }\n      }\n    } else if (position !== void 0) {\n      if (Array.isArray(material)) {\n        for (let i = 0, il = groups.length; i < il; i++) {\n          const group = groups[i];\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 j = start, jl = end; j < jl; j += 3) {\n            const a = j;\n            const b = j + 1;\n            const c = j + 2;\n            intersection = checkGeometryIntersection(this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c);\n            if (intersection) {\n              intersection.faceIndex = Math.floor(j / 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 i = start, il = end; i < il; i += 3) {\n          const a = i;\n          const b = i + 1;\n          const c = i + 2;\n          intersection = checkGeometryIntersection(this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c);\n          if (intersection) {\n            intersection.faceIndex = Math.floor(i / 3);\n            intersects2.push(intersection);\n          }\n        }\n      }\n    }\n  }\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}\nvar 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(u, v, 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 y = iy * segmentHeight - heightHalf;\n        for (let ix = 0; ix < gridX1; ix++) {\n          const x = ix * segmentWidth - widthHalf;\n          vector[u] = x * udir;\n          vector[v] = y * vdir;\n          vector[w] = depthHalf;\n          vertices.push(vector.x, vector.y, vector.z);\n          vector[u] = 0;\n          vector[v] = 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};\nfunction cloneUniforms(src) {\n  const dst = {};\n  for (const u in src) {\n    dst[u] = {};\n    for (const p in src[u]) {\n      const property = src[u][p];\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[u][p] = null;\n        } else {\n          dst[u][p] = property.clone();\n        }\n      } else if (Array.isArray(property)) {\n        dst[u][p] = property.slice();\n      } else {\n        dst[u][p] = property;\n      }\n    }\n  }\n  return dst;\n}\nfunction mergeUniforms(uniforms) {\n  const merged = {};\n  for (let u = 0; u < uniforms.length; u++) {\n    const tmp2 = cloneUniforms(uniforms[u]);\n    for (const p in tmp2) {\n      merged[p] = tmp2[p];\n    }\n  }\n  return merged;\n}\nfunction cloneUniformsGroups(src) {\n  const dst = [];\n  for (let u = 0; u < src.length; u++) {\n    dst.push(src[u].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}\nvar UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\nvar default_vertex = \"void main() {\\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\nvar default_fragment = \"void main() {\\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\nvar 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};\nvar 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(target) {\n    return super.getWorldDirection(target).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};\nvar _v3$1 = /* @__PURE__ */ new Vector3();\nvar _minTarget = /* @__PURE__ */ new Vector2();\nvar _maxTarget = /* @__PURE__ */ new Vector2();\nvar 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, target) {\n    this.getViewBounds(distance, _minTarget, _maxTarget);\n    return target.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, y, 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 = y;\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};\nvar fov = -90;\nvar aspect = 1;\nvar 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};\nvar 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};\nvar 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 i = 0; i < 6; i++) {\n      renderer.setRenderTarget(this, i);\n      renderer.clear(color, depth, stencil);\n    }\n    renderer.setRenderTarget(currentRenderTarget);\n  }\n};\nvar _vector1 = /* @__PURE__ */ new Vector3();\nvar _vector2 = /* @__PURE__ */ new Vector3();\nvar _normalMatrix = /* @__PURE__ */ new Matrix3();\nvar 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, y, z, w) {\n    this.normal.set(x, y, z);\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, target) {\n    return target.copy(point).addScaledVector(this.normal, -this.distanceToPoint(point));\n  }\n  intersectLine(line, target) {\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 target.copy(line.start);\n      }\n      return null;\n    }\n    const t = -(line.start.dot(this.normal) + this.constant) / denominator;\n    if (t < 0 || t > 1) {\n      return null;\n    }\n    return target.copy(line.start).addScaledVector(direction, t);\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(target) {\n    return target.copy(this.normal).multiplyScalar(-this.constant);\n  }\n  applyMatrix4(matrix, optionalNormalMatrix) {\n    const normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix(matrix);\n    const referencePoint = this.coplanarPoint(_vector1).applyMatrix4(matrix);\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};\nvar _sphere$5 = /* @__PURE__ */ new Sphere();\nvar _vector$7 = /* @__PURE__ */ new Vector3();\nvar Frustum = class {\n  constructor(p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane()) {\n    this.planes = [p0, p1, p2, p3, p4, p5];\n  }\n  set(p0, p1, p2, p3, p4, p5) {\n    const planes = this.planes;\n    planes[0].copy(p0);\n    planes[1].copy(p1);\n    planes[2].copy(p2);\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 i = 0; i < 6; i++) {\n      planes[i].copy(frustum.planes[i]);\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 i = 0; i < 6; i++) {\n      const distance = planes[i].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 i = 0; i < 6; i++) {\n      const plane = planes[i];\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 i = 0; i < 6; i++) {\n      if (planes[i].distanceToPoint(point) < 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n};\nfunction WebGLAnimation() {\n  let context = null;\n  let isAnimating = false;\n  let animationLoop = null;\n  let requestId = null;\n  function onAnimationFrame(time, frame) {\n    animationLoop(time, frame);\n    requestId = context.requestAnimationFrame(onAnimationFrame);\n  }\n  return {\n    start: function() {\n      if (isAnimating === true) return;\n      if (animationLoop === null) return;\n      requestId = context.requestAnimationFrame(onAnimationFrame);\n      isAnimating = true;\n    },\n    stop: function() {\n      context.cancelAnimationFrame(requestId);\n      isAnimating = false;\n    },\n    setAnimationLoop: function(callback) {\n      animationLoop = callback;\n    },\n    setContext: function(value) {\n      context = 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 i = 1; i < updateRanges.length; i++) {\n        const previousRange = updateRanges[mergeIndex];\n        const range = updateRanges[i];\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 i = 0, l = updateRanges.length; i < l; i++) {\n        const range = updateRanges[i];\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}\nvar 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 y = 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, -y, 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};\nvar alphahash_fragment = \"#ifdef USE_ALPHAHASH\\n\tif ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;\\n#endif\";\nvar 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\";\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\tdiffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;\\n#endif\";\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\tuniform sampler2D alphaMap;\\n#endif\";\nvar 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\";\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\tuniform float alphaTest;\\n#endif\";\nvar 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\";\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\tuniform sampler2D aoMap;\\n\tuniform float aoMapIntensity;\\n#endif\";\nvar 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\";\nvar batching_vertex = \"#ifdef USE_BATCHING\\n\tmat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) );\\n#endif\";\nvar begin_vertex = \"vec3 transformed = vec3( position );\\n#ifdef USE_ALPHAHASH\\n\tvPosition = vec3( position );\\n#endif\";\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\tvarying vec3 vClipPosition;\\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\tvarying vec3 vClipPosition;\\n#endif\";\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\tvClipPosition = - mvPosition.xyz;\\n#endif\";\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\tdiffuseColor.rgb *= vColor;\\n#endif\";\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\tvarying vec3 vColor;\\n#endif\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\tuniform sampler2D displacementMap;\\n\tuniform float displacementScale;\\n\tuniform float displacementBias;\\n#endif\";\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\\n#endif\";\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\tvec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\tuniform sampler2D emissiveMap;\\n#endif\";\nvar colorspace_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\nvar 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}\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar fog_vertex = \"#ifdef USE_FOG\\n\tvFogDepth = - mvPosition.z;\\n#endif\";\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\tvarying float vFogDepth;\\n#endif\";\nvar 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\";\nvar 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\";\nvar 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}\";\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\tuniform sampler2D lightMap;\\n\tuniform float lightMapIntensity;\\n#endif\";\nvar lights_lambert_fragment = \"LambertMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularStrength = specularStrength;\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\nvar 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\";\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\nvar 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\";\nvar 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\";\nvar 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}\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF )\\n\tgl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF )\\n\tuniform float logDepthBufFC;\\n\tvarying float vFragDepth;\\n\tvarying float vIsPerspective;\\n#endif\";\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\tvarying float vFragDepth;\\n\tvarying float vIsPerspective;\\n#endif\";\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\tvFragDepth = 1.0 + gl_Position.w;\\n\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n#endif\";\nvar 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\";\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\tuniform sampler2D map;\\n#endif\";\nvar 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\";\nvar 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\";\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\tvec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\\n\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\tuniform sampler2D metalnessMap;\\n#endif\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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;\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\tvec3 clearcoatNormal = nonPerturbedNormal;\\n#endif\";\nvar 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\";\nvar 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\";\nvar iridescence_pars_fragment = \"#ifdef USE_IRIDESCENCEMAP\\n\tuniform sampler2D iridescenceMap;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\tuniform sampler2D iridescenceThicknessMap;\\n#endif\";\nvar 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 );\";\nvar 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}\";\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\nvar 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;\";\nvar dithering_fragment = \"#ifdef DITHERING\\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\nvar 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\";\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\tvec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\\n\troughnessFactor *= texelRoughness.g;\\n#endif\";\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\tuniform sampler2D roughnessMap;\\n#endif\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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}\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\tuniform sampler2D specularMap;\\n#endif\";\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\nvar 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; }\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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}\";\nvar 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};\nvar 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};\nvar 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};\nShaderLib.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};\nvar _rgb = { r: 0, b: 0, g: 0 };\nvar _e1$1 = /* @__PURE__ */ new Euler();\nvar _m1$1 = /* @__PURE__ */ new Matrix4();\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 i = 0; i < maxVertexAttributes; i++) {\n      newAttributes[i] = 0;\n      enabledAttributes[i] = 0;\n      attributeDivisors[i] = 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 i = 0, il = newAttributes.length; i < il; i++) {\n      newAttributes[i] = 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 i = 0, il = enabledAttributes.length; i < il; i++) {\n      if (enabledAttributes[i] !== newAttributes[i]) {\n        gl.disableVertexAttribArray(i);\n        enabledAttributes[i] = 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 i = 0; i < programAttribute.locationSize; i++) {\n                enableAttributeAndDivisor(programAttribute.location + i, 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 i = 0; i < programAttribute.locationSize; i++) {\n                enableAttribute(programAttribute.location + i);\n              }\n            }\n            gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n            for (let i = 0; i < programAttribute.locationSize; i++) {\n              vertexAttribPointer(\n                programAttribute.location + i,\n                size / programAttribute.locationSize,\n                type,\n                normalized,\n                stride * bytesPerElement,\n                (offset + size / programAttribute.locationSize * i) * bytesPerElement,\n                integer\n              );\n            }\n          } else {\n            if (geometryAttribute.isInstancedBufferAttribute) {\n              for (let i = 0; i < programAttribute.locationSize; i++) {\n                enableAttributeAndDivisor(programAttribute.location + i, 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 i = 0; i < programAttribute.locationSize; i++) {\n                enableAttribute(programAttribute.location + i);\n              }\n            }\n            gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n            for (let i = 0; i < programAttribute.locationSize; i++) {\n              vertexAttribPointer(\n                programAttribute.location + i,\n                size / programAttribute.locationSize,\n                type,\n                normalized,\n                size * bytesPerElement,\n                size / programAttribute.locationSize * i * 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 dispose() {\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,\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 i = 0; i < drawCount; i++) {\n      elementCount += counts[i];\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 i = 0; i < starts.length; i++) {\n        renderInstances(starts[i], counts[i], primcount[i]);\n      }\n    } else {\n      extension.multiDrawArraysInstancedWEBGL(mode, starts, 0, counts, 0, primcount, 0, drawCount);\n      let elementCount = 0;\n      for (let i = 0; i < drawCount; i++) {\n        elementCount += counts[i];\n      }\n      for (let i = 0; i < primcount.length; i++) {\n        info.update(elementCount, mode, primcount[i]);\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 i = 0; i !== lGlobal; ++i) {\n        dstArray[i] = globalState[i];\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 i = 0, i4 = dstOffset; i !== nPlanes; ++i, i4 += 4) {\n          plane.copy(planes[i]).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 dispose() {\n    cubemaps = /* @__PURE__ */ new WeakMap();\n  }\n  return {\n    get,\n    dispose\n  };\n}\nvar 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, y, 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 = y;\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};\nvar LOD_MIN = 4;\nvar EXTRA_LOD_SIGMA = [0.125, 0.215, 0.35, 0.446, 0.526, 0.582];\nvar MAX_SAMPLES = 20;\nvar _flatCamera = /* @__PURE__ */ new OrthographicCamera();\nvar _clearColor = /* @__PURE__ */ new Color();\nvar _oldTarget = null;\nvar _oldActiveCubeFace = 0;\nvar _oldActiveMipmapLevel = 0;\nvar _oldXrEnabled = false;\nvar PHI = (1 + Math.sqrt(5)) / 2;\nvar INV_PHI = 1 / PHI;\nvar _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];\nvar 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 i = 0; i < this._lodPlanes.length; i++) {\n      this._lodPlanes[i].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 i = 0; i < 6; i++) {\n      const col = i % 3;\n      if (col === 0) {\n        cubeCamera.up.set(0, upSign[i], 0);\n        cubeCamera.lookAt(forwardSign[i], 0, 0);\n      } else if (col === 1) {\n        cubeCamera.up.set(0, 0, upSign[i]);\n        cubeCamera.lookAt(0, forwardSign[i], 0);\n      } else {\n        cubeCamera.up.set(0, upSign[i], 0);\n        cubeCamera.lookAt(0, 0, forwardSign[i]);\n      }\n      const size = this._cubeSize;\n      _setViewport(cubeUVRenderTarget, col * size, i > 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 i = 1; i < n; i++) {\n      const sigma = Math.sqrt(this._sigmas[i] * this._sigmas[i] - this._sigmas[i - 1] * this._sigmas[i - 1]);\n      const poleAxis = _axisDirections[(n - i - 1) % _axisDirections.length];\n      this._blur(cubeUVRenderTarget, i - 1, i, 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 i = 0; i < MAX_SAMPLES; ++i) {\n      const x2 = i / sigmaPixels;\n      const weight = Math.exp(-x2 * x2 / 2);\n      weights.push(weight);\n      if (i === 0) {\n        sum += weight;\n      } else if (i < samples) {\n        sum += 2 * weight;\n      }\n    }\n    for (let i = 0; i < weights.length; i++) {\n      weights[i] = weights[i] / 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 y = 4 * (this._cubeSize - outputSize);\n    _setViewport(targetOut, x, y, 3 * outputSize, 2 * outputSize);\n    renderer.setRenderTarget(targetOut);\n    renderer.render(blurMesh, _flatCamera);\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 i = 0; i < totalLods; i++) {\n    const sizeLod = Math.pow(2, lod);\n    sizeLods.push(sizeLod);\n    let sigma = 1 / sizeLod;\n    if (i > lodMax - LOD_MIN) {\n      sigma = EXTRA_LOD_SIGMA[i - lodMax + LOD_MIN - 1];\n    } else if (i === 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 y = face > 2 ? 0 : -1;\n      const coordinates = [\n        x,\n        y,\n        0,\n        x + 2 / 3,\n        y,\n        0,\n        x + 2 / 3,\n        y + 1,\n        0,\n        x,\n        y,\n        0,\n        x + 2 / 3,\n        y + 1,\n        0,\n        x,\n        y + 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(target, x, y, width, height) {\n  target.viewport.set(x, y, width, height);\n  target.scissor.set(x, y, 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 i = 0; i < length; i++) {\n      if (image[i] !== 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 dispose() {\n    cubeUVmaps = /* @__PURE__ */ new WeakMap();\n    if (pmremGenerator !== null) {\n      pmremGenerator.dispose();\n      pmremGenerator = null;\n    }\n  }\n  return {\n    get,\n    dispose\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 i = 0, l = array.length; i < l; i++) {\n        attributes.remove(array[i]);\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 i = 0, l = array.length; i < l; i++) {\n        attributes.update(array[i], 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 version = 0;\n    if (geometryIndex !== null) {\n      const array = geometryIndex.array;\n      version = geometryIndex.version;\n      for (let i = 0, l = array.length; i < l; i += 3) {\n        const a = array[i + 0];\n        const b = array[i + 1];\n        const c = array[i + 2];\n        indices.push(a, b, b, c, c, a);\n      }\n    } else if (geometryPosition !== void 0) {\n      const array = geometryPosition.array;\n      version = geometryPosition.version;\n      for (let i = 0, l = array.length / 3 - 1; i < l; i += 3) {\n        const a = i + 0;\n        const b = i + 1;\n        const c = i + 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 = version;\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 i = 0; i < drawCount; i++) {\n      elementCount += counts[i];\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 i = 0; i < starts.length; i++) {\n        renderInstances(starts[i] / bytesPerElement, counts[i], primcount[i]);\n      }\n    } else {\n      extension.multiDrawElementsInstancedWEBGL(mode, counts, 0, type, starts, 0, primcount, 0, drawCount);\n      let elementCount = 0;\n      for (let i = 0; i < drawCount; i++) {\n        elementCount += counts[i];\n      }\n      for (let i = 0; i < primcount.length; i++) {\n        info.update(elementCount, mode, primcount[i]);\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 i = 0; i < morphTargetsCount; i++) {\n        const morphTarget = morphTargets[i];\n        const morphNormal = morphNormals[i];\n        const morphColor = morphColors[i];\n        const offset = width * height * 4 * i;\n        for (let j = 0; j < morphTarget.count; j++) {\n          const stride = j * vertexDataStride;\n          if (hasMorphPosition === true) {\n            morph.fromBufferAttribute(morphTarget, j);\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, j);\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, j);\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 i = 0; i < objectInfluences.length; i++) {\n        morphInfluencesSum += objectInfluences[i];\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 dispose() {\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\n  };\n}\nvar 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};\nvar emptyTexture = /* @__PURE__ */ new Texture();\nvar emptyShadowTexture = /* @__PURE__ */ new DepthTexture(1, 1);\nvar emptyArrayTexture = /* @__PURE__ */ new DataArrayTexture();\nvar empty3dTexture = /* @__PURE__ */ new Data3DTexture();\nvar emptyCubeTexture = /* @__PURE__ */ new CubeTexture();\nvar arrayCacheF32 = [];\nvar arrayCacheI32 = [];\nvar mat4array = new Float32Array(16);\nvar mat3array = new Float32Array(9);\nvar mat2array = new Float32Array(4);\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 r = arrayCacheF32[n];\n  if (r === void 0) {\n    r = new Float32Array(n);\n    arrayCacheF32[n] = r;\n  }\n  if (nBlocks !== 0) {\n    firstElem.toArray(r, 0);\n    for (let i = 1, offset = 0; i !== nBlocks; ++i) {\n      offset += blockSize;\n      array[i].toArray(r, offset);\n    }\n  }\n  return r;\n}\nfunction arraysEqual(a, b) {\n  if (a.length !== b.length) return false;\n  for (let i = 0, l = a.length; i < l; i++) {\n    if (a[i] !== b[i]) return false;\n  }\n  return true;\n}\nfunction copyArray(a, b) {\n  for (let i = 0, l = b.length; i < l; i++) {\n    a[i] = b[i];\n  }\n}\nfunction allocTexUnits(textures, n) {\n  let r = arrayCacheI32[n];\n  if (r === void 0) {\n    r = new Int32Array(n);\n    arrayCacheI32[n] = r;\n  }\n  for (let i = 0; i !== n; ++i) {\n    r[i] = textures.allocateTextureUnit();\n  }\n  return r;\n}\nfunction setValueV1f(gl, v) {\n  const cache = this.cache;\n  if (cache[0] === v) return;\n  gl.uniform1f(this.addr, v);\n  cache[0] = v;\n}\nfunction setValueV2f(gl, v) {\n  const cache = this.cache;\n  if (v.x !== void 0) {\n    if (cache[0] !== v.x || cache[1] !== v.y) {\n      gl.uniform2f(this.addr, v.x, v.y);\n      cache[0] = v.x;\n      cache[1] = v.y;\n    }\n  } else {\n    if (arraysEqual(cache, v)) return;\n    gl.uniform2fv(this.addr, v);\n    copyArray(cache, v);\n  }\n}\nfunction setValueV3f(gl, v) {\n  const cache = this.cache;\n  if (v.x !== void 0) {\n    if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z) {\n      gl.uniform3f(this.addr, v.x, v.y, v.z);\n      cache[0] = v.x;\n      cache[1] = v.y;\n      cache[2] = v.z;\n    }\n  } else if (v.r !== void 0) {\n    if (cache[0] !== v.r || cache[1] !== v.g || cache[2] !== v.b) {\n      gl.uniform3f(this.addr, v.r, v.g, v.b);\n      cache[0] = v.r;\n      cache[1] = v.g;\n      cache[2] = v.b;\n    }\n  } else {\n    if (arraysEqual(cache, v)) return;\n    gl.uniform3fv(this.addr, v);\n    copyArray(cache, v);\n  }\n}\nfunction setValueV4f(gl, v) {\n  const cache = this.cache;\n  if (v.x !== void 0) {\n    if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z || cache[3] !== v.w) {\n      gl.uniform4f(this.addr, v.x, v.y, v.z, v.w);\n      cache[0] = v.x;\n      cache[1] = v.y;\n      cache[2] = v.z;\n      cache[3] = v.w;\n    }\n  } else {\n    if (arraysEqual(cache, v)) return;\n    gl.uniform4fv(this.addr, v);\n    copyArray(cache, v);\n  }\n}\nfunction setValueM2(gl, v) {\n  const cache = this.cache;\n  const elements = v.elements;\n  if (elements === void 0) {\n    if (arraysEqual(cache, v)) return;\n    gl.uniformMatrix2fv(this.addr, false, v);\n    copyArray(cache, v);\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, v) {\n  const cache = this.cache;\n  const elements = v.elements;\n  if (elements === void 0) {\n    if (arraysEqual(cache, v)) return;\n    gl.uniformMatrix3fv(this.addr, false, v);\n    copyArray(cache, v);\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, v) {\n  const cache = this.cache;\n  const elements = v.elements;\n  if (elements === void 0) {\n    if (arraysEqual(cache, v)) return;\n    gl.uniformMatrix4fv(this.addr, false, v);\n    copyArray(cache, v);\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, v) {\n  const cache = this.cache;\n  if (cache[0] === v) return;\n  gl.uniform1i(this.addr, v);\n  cache[0] = v;\n}\nfunction setValueV2i(gl, v) {\n  const cache = this.cache;\n  if (v.x !== void 0) {\n    if (cache[0] !== v.x || cache[1] !== v.y) {\n      gl.uniform2i(this.addr, v.x, v.y);\n      cache[0] = v.x;\n      cache[1] = v.y;\n    }\n  } else {\n    if (arraysEqual(cache, v)) return;\n    gl.uniform2iv(this.addr, v);\n    copyArray(cache, v);\n  }\n}\nfunction setValueV3i(gl, v) {\n  const cache = this.cache;\n  if (v.x !== void 0) {\n    if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z) {\n      gl.uniform3i(this.addr, v.x, v.y, v.z);\n      cache[0] = v.x;\n      cache[1] = v.y;\n      cache[2] = v.z;\n    }\n  } else {\n    if (arraysEqual(cache, v)) return;\n    gl.uniform3iv(this.addr, v);\n    copyArray(cache, v);\n  }\n}\nfunction setValueV4i(gl, v) {\n  const cache = this.cache;\n  if (v.x !== void 0) {\n    if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z || cache[3] !== v.w) {\n      gl.uniform4i(this.addr, v.x, v.y, v.z, v.w);\n      cache[0] = v.x;\n      cache[1] = v.y;\n      cache[2] = v.z;\n      cache[3] = v.w;\n    }\n  } else {\n    if (arraysEqual(cache, v)) return;\n    gl.uniform4iv(this.addr, v);\n    copyArray(cache, v);\n  }\n}\nfunction setValueV1ui(gl, v) {\n  const cache = this.cache;\n  if (cache[0] === v) return;\n  gl.uniform1ui(this.addr, v);\n  cache[0] = v;\n}\nfunction setValueV2ui(gl, v) {\n  const cache = this.cache;\n  if (v.x !== void 0) {\n    if (cache[0] !== v.x || cache[1] !== v.y) {\n      gl.uniform2ui(this.addr, v.x, v.y);\n      cache[0] = v.x;\n      cache[1] = v.y;\n    }\n  } else {\n    if (arraysEqual(cache, v)) return;\n    gl.uniform2uiv(this.addr, v);\n    copyArray(cache, v);\n  }\n}\nfunction setValueV3ui(gl, v) {\n  const cache = this.cache;\n  if (v.x !== void 0) {\n    if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z) {\n      gl.uniform3ui(this.addr, v.x, v.y, v.z);\n      cache[0] = v.x;\n      cache[1] = v.y;\n      cache[2] = v.z;\n    }\n  } else {\n    if (arraysEqual(cache, v)) return;\n    gl.uniform3uiv(this.addr, v);\n    copyArray(cache, v);\n  }\n}\nfunction setValueV4ui(gl, v) {\n  const cache = this.cache;\n  if (v.x !== void 0) {\n    if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z || cache[3] !== v.w) {\n      gl.uniform4ui(this.addr, v.x, v.y, v.z, v.w);\n      cache[0] = v.x;\n      cache[1] = v.y;\n      cache[2] = v.z;\n      cache[3] = v.w;\n    }\n  } else {\n    if (arraysEqual(cache, v)) return;\n    gl.uniform4uiv(this.addr, v);\n    copyArray(cache, v);\n  }\n}\nfunction setValueT1(gl, v, 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(v || emptyTexture2D, unit);\n}\nfunction setValueT3D1(gl, v, 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(v || empty3dTexture, unit);\n}\nfunction setValueT6(gl, v, 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(v || emptyCubeTexture, unit);\n}\nfunction setValueT2DArray1(gl, v, 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(v || 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, v) {\n  gl.uniform1fv(this.addr, v);\n}\nfunction setValueV2fArray(gl, v) {\n  const data = flatten(v, this.size, 2);\n  gl.uniform2fv(this.addr, data);\n}\nfunction setValueV3fArray(gl, v) {\n  const data = flatten(v, this.size, 3);\n  gl.uniform3fv(this.addr, data);\n}\nfunction setValueV4fArray(gl, v) {\n  const data = flatten(v, this.size, 4);\n  gl.uniform4fv(this.addr, data);\n}\nfunction setValueM2Array(gl, v) {\n  const data = flatten(v, this.size, 4);\n  gl.uniformMatrix2fv(this.addr, false, data);\n}\nfunction setValueM3Array(gl, v) {\n  const data = flatten(v, this.size, 9);\n  gl.uniformMatrix3fv(this.addr, false, data);\n}\nfunction setValueM4Array(gl, v) {\n  const data = flatten(v, this.size, 16);\n  gl.uniformMatrix4fv(this.addr, false, data);\n}\nfunction setValueV1iArray(gl, v) {\n  gl.uniform1iv(this.addr, v);\n}\nfunction setValueV2iArray(gl, v) {\n  gl.uniform2iv(this.addr, v);\n}\nfunction setValueV3iArray(gl, v) {\n  gl.uniform3iv(this.addr, v);\n}\nfunction setValueV4iArray(gl, v) {\n  gl.uniform4iv(this.addr, v);\n}\nfunction setValueV1uiArray(gl, v) {\n  gl.uniform1uiv(this.addr, v);\n}\nfunction setValueV2uiArray(gl, v) {\n  gl.uniform2uiv(this.addr, v);\n}\nfunction setValueV3uiArray(gl, v) {\n  gl.uniform3uiv(this.addr, v);\n}\nfunction setValueV4uiArray(gl, v) {\n  gl.uniform4uiv(this.addr, v);\n}\nfunction setValueT1Array(gl, v, textures) {\n  const cache = this.cache;\n  const n = v.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 i = 0; i !== n; ++i) {\n    textures.setTexture2D(v[i] || emptyTexture, units[i]);\n  }\n}\nfunction setValueT3DArray(gl, v, textures) {\n  const cache = this.cache;\n  const n = v.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 i = 0; i !== n; ++i) {\n    textures.setTexture3D(v[i] || empty3dTexture, units[i]);\n  }\n}\nfunction setValueT6Array(gl, v, textures) {\n  const cache = this.cache;\n  const n = v.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 i = 0; i !== n; ++i) {\n    textures.setTextureCube(v[i] || emptyCubeTexture, units[i]);\n  }\n}\nfunction setValueT2DArrayArray(gl, v, textures) {\n  const cache = this.cache;\n  const n = v.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 i = 0; i !== n; ++i) {\n    textures.setTexture2DArray(v[i] || emptyArrayTexture, units[i]);\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}\nvar 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};\nvar 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};\nvar 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 i = 0, n = seq.length; i !== n; ++i) {\n      const u = seq[i];\n      u.setValue(gl, value[u.id], textures);\n    }\n  }\n};\nvar RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\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}\nvar WebGLUniforms = class {\n  constructor(gl, program) {\n    this.seq = [];\n    this.map = {};\n    const n = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n    for (let i = 0; i < n; ++i) {\n      const info = gl.getActiveUniform(program, i), addr = gl.getUniformLocation(program, info.name);\n      parseUniform(info, addr, this);\n    }\n  }\n  setValue(gl, name, value, textures) {\n    const u = this.map[name];\n    if (u !== void 0) u.setValue(gl, value, textures);\n  }\n  setOptional(gl, object, name) {\n    const v = object[name];\n    if (v !== void 0) this.setValue(gl, name, v);\n  }\n  static upload(gl, seq, values, textures) {\n    for (let i = 0, n = seq.length; i !== n; ++i) {\n      const u = seq[i], v = values[u.id];\n      if (v.needsUpdate !== false) {\n        u.setValue(gl, v.value, textures);\n      }\n    }\n  }\n  static seqWithValue(seq, values) {\n    const r = [];\n    for (let i = 0, n = seq.length; i !== n; ++i) {\n      const u = seq[i];\n      if (u.id in values) r.push(u);\n    }\n    return r;\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}\nvar COMPLETION_STATUS_KHR = 37297;\nvar programIdCount = 0;\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 i = from; i < to; i++) {\n    const line = i + 1;\n    lines2.push(`${line === errorLine ? \">\" : \" \"} ${line}: ${lines[i]}`);\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}\nvar _v0$1 = /* @__PURE__ */ new Vector3();\nfunction getLuminanceFunction() {\n  ColorManagement.getLuminanceCoefficients(_v0$1);\n  const r = _v0$1.x.toFixed(4);\n  const g = _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( ${r}, ${g}, ${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 i = 0; i < n; i++) {\n    const info = gl.getActiveAttrib(program, i);\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}\nvar includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\nfunction resolveIncludes(string) {\n  return string.replace(includePattern, includeReplacer);\n}\nvar shaderChunkMap = /* @__PURE__ */ new Map();\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}\nvar 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;\nfunction unrollLoops(string) {\n  return string.replace(unrollLoopPattern, loopReplacer);\n}\nfunction loopReplacer(match, start, end, snippet) {\n  let string = \"\";\n  for (let i = parseInt(start); i < parseInt(end); i++) {\n    string += snippet.replace(/\\[\\s*i\\s*\\]/g, \"[ \" + i + \" ]\").replace(/UNROLLED_LOOP_INDEX/g, i);\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}\nvar _id$1 = 0;\nvar 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};\nvar WebGLShaderStage = class {\n  constructor(code) {\n    this.id = _id$1++;\n    this.code = code;\n    this.usedTimes = 0;\n  }\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 p = 0, pl = programs.length; p < pl; p++) {\n      const preexistingProgram = programs[p];\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 i = programs.indexOf(program);\n      programs[i] = programs[programs.length - 1];\n      programs.pop();\n      program.destroy();\n    }\n  }\n  function releaseShaderCache(material) {\n    _customShaders.remove(material);\n  }\n  function dispose() {\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\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 dispose() {\n    properties = /* @__PURE__ */ new WeakMap();\n  }\n  return {\n    has,\n    get,\n    remove,\n    update,\n    dispose\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, z, 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,\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 = z;\n      renderItem.group = group;\n    }\n    renderItemsIndex++;\n    return renderItem;\n  }\n  function push(object, geometry, material, groupOrder, z, group) {\n    const renderItem = getNextRenderItem(object, geometry, material, groupOrder, z, 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, z, group) {\n    const renderItem = getNextRenderItem(object, geometry, material, groupOrder, z, 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 i = renderItemsIndex, il = renderItems.length; i < il; i++) {\n      const renderItem = renderItems[i];\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 dispose() {\n    lists = /* @__PURE__ */ new WeakMap();\n  }\n  return {\n    get,\n    dispose\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}\nvar nextVersion = 0;\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 i = 0; i < 9; i++) 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 r = 0, g = 0, b = 0;\n    for (let i = 0; i < 9; i++) state.probe[i].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 i = 0, l = lights.length; i < l; i++) {\n      const light = lights[i];\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        r += color.r * intensity;\n        g += color.g * intensity;\n        b += color.b * intensity;\n      } else if (light.isLightProbe) {\n        for (let j = 0; j < 9; j++) {\n          state.probe[j].addScaledVector(light.sh.coefficients[j], 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] = r;\n    state.ambient[1] = g;\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 i = 0, l = lights.length; i < l; i++) {\n      const light = lights[i];\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 dispose() {\n    renderStates = /* @__PURE__ */ new WeakMap();\n  }\n  return {\n    get,\n    dispose\n  };\n}\nvar 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};\nvar 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};\nvar vertex = \"void main() {\\n\tgl_Position = vec4( position, 1.0 );\\n}\";\nvar 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}\";\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 i = 0, il = lights.length; i < il; i++) {\n      const light = lights[i];\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 k = 0, kl = groups.length; k < kl; k++) {\n            const group = groups[k];\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 i = 0, l = children.length; i < l; i++) {\n      renderObject(children[i], 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}\nvar 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};\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(r, g, b, a, premultipliedAlpha) {\n        if (premultipliedAlpha === true) {\n          r *= a;\n          g *= a;\n          b *= a;\n        }\n        color.set(r, g, b, a);\n        if (currentColorClear.equals(color) === false) {\n          gl.clearColor(r, g, 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 version = 0;\n  const glVersion = gl.getParameter(gl.VERSION);\n  if (glVersion.indexOf(\"WebGL\") !== -1) {\n    version = parseFloat(/^WebGL (\\d)/.exec(glVersion)[1]);\n    lineWidthAvailable = version >= 1;\n  } else if (glVersion.indexOf(\"OpenGL ES\") !== -1) {\n    version = parseFloat(/^OpenGL ES (\\d)/.exec(glVersion)[1]);\n    lineWidthAvailable = version >= 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, target, 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 i = 0; i < count; i++) {\n      if (type === gl.TEXTURE_3D || type === gl.TEXTURE_2D_ARRAY) {\n        gl.texImage3D(target, 0, gl.RGBA, 1, 1, dimensions, 0, gl.RGBA, gl.UNSIGNED_BYTE, data);\n      } else {\n        gl.texImage2D(target + i, 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(target, framebuffer) {\n    if (currentBoundFramebuffers[target] !== framebuffer) {\n      gl.bindFramebuffer(target, framebuffer);\n      currentBoundFramebuffers[target] = framebuffer;\n      if (target === gl.DRAW_FRAMEBUFFER) {\n        currentBoundFramebuffers[gl.FRAMEBUFFER] = framebuffer;\n      }\n      if (target === 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 i = 0, il = textures.length; i < il; i++) {\n          drawBuffers2[i] = gl.COLOR_ATTACHMENT0 + i;\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 (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function compressedTexImage3D() {\n    try {\n      gl.compressedTexImage3D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function texSubImage2D() {\n    try {\n      gl.texSubImage2D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function texSubImage3D() {\n    try {\n      gl.texSubImage3D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function compressedTexSubImage2D() {\n    try {\n      gl.compressedTexSubImage2D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function compressedTexSubImage3D() {\n    try {\n      gl.compressedTexSubImage3D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function texStorage2D() {\n    try {\n      gl.texStorage2D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function texStorage3D() {\n    try {\n      gl.texStorage3D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function texImage2D() {\n    try {\n      gl.texImage2D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function texImage3D() {\n    try {\n      gl.texImage3D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\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}\nvar TextureUtils = {\n  contain,\n  cover,\n  fill,\n  getByteLength\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 context = canvas.getContext(\"2d\");\n        context.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(target) {\n    _gl.generateMipmap(target);\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 i = 0; i < 6; i++) {\n        if (Array.isArray(renderTargetProperties.__webglFramebuffer[i])) {\n          for (let level = 0; level < renderTargetProperties.__webglFramebuffer[i].length; level++) _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer[i][level]);\n        } else {\n          _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer[i]);\n        }\n        if (renderTargetProperties.__webglDepthbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer[i]);\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 i = 0; i < renderTargetProperties.__webglColorRenderbuffer.length; i++) {\n          if (renderTargetProperties.__webglColorRenderbuffer[i]) _gl.deleteRenderbuffer(renderTargetProperties.__webglColorRenderbuffer[i]);\n        }\n      }\n      if (renderTargetProperties.__webglDepthRenderbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthRenderbuffer);\n    }\n    const textures = renderTarget.textures;\n    for (let i = 0, il = textures.length; i < il; i++) {\n      const attachmentProperties = properties.get(textures[i]);\n      if (attachmentProperties.__webglTexture) {\n        _gl.deleteTexture(attachmentProperties.__webglTexture);\n        info.memory.textures--;\n      }\n      properties.remove(textures[i]);\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 i = 0, il = mipmaps.length; i < il; i++) {\n            mipmap = mipmaps[i];\n            if (useTexStorage) {\n              if (dataReady) {\n                state.texSubImage2D(_gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data);\n              }\n            } else {\n              state.texImage2D(_gl.TEXTURE_2D, i, 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 i = 0, il = mipmaps.length; i < il; i++) {\n            mipmap = mipmaps[i];\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, i, 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, i, 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, i, 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, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, glType, mipmap.data);\n                }\n              } else {\n                state.texImage3D(_gl.TEXTURE_2D_ARRAY, i, 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 i = 0, il = mipmaps.length; i < il; i++) {\n            mipmap = mipmaps[i];\n            if (texture.format !== RGBAFormat) {\n              if (glFormat !== null) {\n                if (useTexStorage) {\n                  if (dataReady) {\n                    state.compressedTexSubImage2D(_gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data);\n                  }\n                } else {\n                  state.compressedTexImage2D(_gl.TEXTURE_2D, i, 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, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data);\n                }\n              } else {\n                state.texImage2D(_gl.TEXTURE_2D, i, 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 i = 0; i < levels; i++) {\n              state.texImage2D(_gl.TEXTURE_2D, i, 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 i = 0, il = mipmaps.length; i < il; i++) {\n            mipmap = mipmaps[i];\n            if (useTexStorage) {\n              if (dataReady) {\n                state.texSubImage2D(_gl.TEXTURE_2D, i, 0, 0, glFormat, glType, mipmap);\n              }\n            } else {\n              state.texImage2D(_gl.TEXTURE_2D, i, 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 i = 0; i < 6; i++) {\n        if (!isCompressed && !isDataTexture) {\n          cubeImage[i] = resizeImage(texture.image[i], true, capabilities.maxCubemapSize);\n        } else {\n          cubeImage[i] = isDataTexture ? texture.image[i].image : texture.image[i];\n        }\n        cubeImage[i] = verifyColorSpace(texture, cubeImage[i]);\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 i = 0; i < 6; i++) {\n          mipmaps = cubeImage[i].mipmaps;\n          for (let j = 0; j < mipmaps.length; j++) {\n            const mipmap = mipmaps[j];\n            if (texture.format !== RGBAFormat) {\n              if (glFormat !== null) {\n                if (useTexStorage) {\n                  if (dataReady) {\n                    state.compressedTexSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data);\n                  }\n                } else {\n                  state.compressedTexImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 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 + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data);\n                }\n              } else {\n                state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 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 i = 0; i < 6; i++) {\n          if (isDataTexture) {\n            if (useTexStorage) {\n              if (dataReady) {\n                state.texSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, cubeImage[i].width, cubeImage[i].height, glFormat, glType, cubeImage[i].data);\n              }\n            } else {\n              state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, cubeImage[i].width, cubeImage[i].height, 0, glFormat, glType, cubeImage[i].data);\n            }\n            for (let j = 0; j < mipmaps.length; j++) {\n              const mipmap = mipmaps[j];\n              const mipmapImage = mipmap.image[i].image;\n              if (useTexStorage) {\n                if (dataReady) {\n                  state.texSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data);\n                }\n              } else {\n                state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 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 + i, 0, 0, 0, glFormat, glType, cubeImage[i]);\n              }\n            } else {\n              state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, glFormat, glType, cubeImage[i]);\n            }\n            for (let j = 0; j < mipmaps.length; j++) {\n              const mipmap = mipmaps[j];\n              if (useTexStorage) {\n                if (dataReady) {\n                  state.texSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, glFormat, glType, mipmap.image[i]);\n                }\n              } else {\n                state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[i]);\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 i = 0; i < textures.length; i++) {\n        const texture = textures[i];\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 i = 0; i < 6; i++) {\n          state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[i]);\n          if (renderTargetProperties.__webglDepthbuffer[i] === void 0) {\n            renderTargetProperties.__webglDepthbuffer[i] = _gl.createRenderbuffer();\n            setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer[i], renderTarget, false);\n          } else {\n            const glAttachmentType = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n            const renderbuffer = renderTargetProperties.__webglDepthbuffer[i];\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 i = 0; i < 6; i++) {\n        if (texture.mipmaps && texture.mipmaps.length > 0) {\n          renderTargetProperties.__webglFramebuffer[i] = [];\n          for (let level = 0; level < texture.mipmaps.length; level++) {\n            renderTargetProperties.__webglFramebuffer[i][level] = _gl.createFramebuffer();\n          }\n        } else {\n          renderTargetProperties.__webglFramebuffer[i] = _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 i = 0, il = textures.length; i < il; i++) {\n          const attachmentProperties = properties.get(textures[i]);\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 i = 0; i < textures.length; i++) {\n          const texture2 = textures[i];\n          renderTargetProperties.__webglColorRenderbuffer[i] = _gl.createRenderbuffer();\n          _gl.bindRenderbuffer(_gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[i]);\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 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[i]);\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 i = 0; i < 6; i++) {\n        if (texture.mipmaps && texture.mipmaps.length > 0) {\n          for (let level = 0; level < texture.mipmaps.length; level++) {\n            setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer[i][level], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, level);\n          }\n        } else {\n          setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer[i], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0);\n        }\n      }\n      if (textureNeedsGenerateMipmaps(texture)) {\n        generateMipmap(_gl.TEXTURE_CUBE_MAP);\n      }\n      state.unbindTexture();\n    } else if (isMultipleRenderTargets) {\n      for (let i = 0, il = textures.length; i < il; i++) {\n        const attachment = textures[i];\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 + i, _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 i = 0, il = textures.length; i < il; i++) {\n      const texture = textures[i];\n      if (textureNeedsGenerateMipmaps(texture)) {\n        const target = renderTarget.isWebGLCubeRenderTarget ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;\n        const webglTexture = properties.get(texture).__webglTexture;\n        state.bindTexture(target, webglTexture);\n        generateMipmap(target);\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 i = 0; i < textures.length; i++) {\n            state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer);\n            _gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, null);\n            state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer);\n            _gl.framebufferTexture2D(_gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _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 i = 0; i < textures.length; i++) {\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[i]);\n            const webglTexture = properties.get(textures[i]).__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 + i);\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 i = 0; i < textures.length; i++) {\n            state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer);\n            _gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[i]);\n            const webglTexture = properties.get(textures[i]).__webglTexture;\n            state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer);\n            _gl.framebufferTexture2D(_gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _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(p, colorSpace = NoColorSpace) {\n    let extension;\n    const transfer = ColorManagement.getTransfer(colorSpace);\n    if (p === UnsignedByteType) return gl.UNSIGNED_BYTE;\n    if (p === UnsignedShort4444Type) return gl.UNSIGNED_SHORT_4_4_4_4;\n    if (p === UnsignedShort5551Type) return gl.UNSIGNED_SHORT_5_5_5_1;\n    if (p === UnsignedInt5999Type) return gl.UNSIGNED_INT_5_9_9_9_REV;\n    if (p === ByteType) return gl.BYTE;\n    if (p === ShortType) return gl.SHORT;\n    if (p === UnsignedShortType) return gl.UNSIGNED_SHORT;\n    if (p === IntType) return gl.INT;\n    if (p === UnsignedIntType) return gl.UNSIGNED_INT;\n    if (p === FloatType) return gl.FLOAT;\n    if (p === HalfFloatType) return gl.HALF_FLOAT;\n    if (p === AlphaFormat) return gl.ALPHA;\n    if (p === RGBFormat) return gl.RGB;\n    if (p === RGBAFormat) return gl.RGBA;\n    if (p === LuminanceFormat) return gl.LUMINANCE;\n    if (p === LuminanceAlphaFormat) return gl.LUMINANCE_ALPHA;\n    if (p === DepthFormat) return gl.DEPTH_COMPONENT;\n    if (p === DepthStencilFormat) return gl.DEPTH_STENCIL;\n    if (p === RedFormat) return gl.RED;\n    if (p === RedIntegerFormat) return gl.RED_INTEGER;\n    if (p === RGFormat) return gl.RG;\n    if (p === RGIntegerFormat) return gl.RG_INTEGER;\n    if (p === RGBAIntegerFormat) return gl.RGBA_INTEGER;\n    if (p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format) {\n      if (transfer === SRGBTransfer) {\n        extension = extensions.get(\"WEBGL_compressed_texture_s3tc_srgb\");\n        if (extension !== null) {\n          if (p === RGB_S3TC_DXT1_Format) return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n          if (p === RGBA_S3TC_DXT1_Format) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n          if (p === RGBA_S3TC_DXT3_Format) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n          if (p === 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 (p === RGB_S3TC_DXT1_Format) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n          if (p === RGBA_S3TC_DXT1_Format) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n          if (p === RGBA_S3TC_DXT3_Format) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n          if (p === RGBA_S3TC_DXT5_Format) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n        } else {\n          return null;\n        }\n      }\n    }\n    if (p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format) {\n      extension = extensions.get(\"WEBGL_compressed_texture_pvrtc\");\n      if (extension !== null) {\n        if (p === RGB_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n        if (p === RGB_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n        if (p === RGBA_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n        if (p === RGBA_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n      } else {\n        return null;\n      }\n    }\n    if (p === RGB_ETC1_Format || p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format) {\n      extension = extensions.get(\"WEBGL_compressed_texture_etc\");\n      if (extension !== null) {\n        if (p === RGB_ETC1_Format || p === RGB_ETC2_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n        if (p === 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 (p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format || p === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format || p === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format || p === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format || p === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format) {\n      extension = extensions.get(\"WEBGL_compressed_texture_astc\");\n      if (extension !== null) {\n        if (p === RGBA_ASTC_4x4_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n        if (p === RGBA_ASTC_5x4_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n        if (p === RGBA_ASTC_5x5_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n        if (p === RGBA_ASTC_6x5_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n        if (p === RGBA_ASTC_6x6_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n        if (p === RGBA_ASTC_8x5_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n        if (p === RGBA_ASTC_8x6_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n        if (p === RGBA_ASTC_8x8_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n        if (p === RGBA_ASTC_10x5_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n        if (p === RGBA_ASTC_10x6_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n        if (p === RGBA_ASTC_10x8_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n        if (p === RGBA_ASTC_10x10_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n        if (p === RGBA_ASTC_12x10_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n        if (p === 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 (p === RGBA_BPTC_Format || p === RGB_BPTC_SIGNED_Format || p === RGB_BPTC_UNSIGNED_Format) {\n      extension = extensions.get(\"EXT_texture_compression_bptc\");\n      if (extension !== null) {\n        if (p === RGBA_BPTC_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n        if (p === RGB_BPTC_SIGNED_Format) return extension.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;\n        if (p === RGB_BPTC_UNSIGNED_Format) return extension.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT;\n      } else {\n        return null;\n      }\n    }\n    if (p === RED_RGTC1_Format || p === SIGNED_RED_RGTC1_Format || p === RED_GREEN_RGTC2_Format || p === SIGNED_RED_GREEN_RGTC2_Format) {\n      extension = extensions.get(\"EXT_texture_compression_rgtc\");\n      if (extension !== null) {\n        if (p === RGBA_BPTC_Format) return extension.COMPRESSED_RED_RGTC1_EXT;\n        if (p === SIGNED_RED_RGTC1_Format) return extension.COMPRESSED_SIGNED_RED_RGTC1_EXT;\n        if (p === RED_GREEN_RGTC2_Format) return extension.COMPRESSED_RED_GREEN_RGTC2_EXT;\n        if (p === SIGNED_RED_GREEN_RGTC2_Format) return extension.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT;\n      } else {\n        return null;\n      }\n    }\n    if (p === UnsignedInt248Type) return gl.UNSIGNED_INT_24_8;\n    return gl[p] !== void 0 ? gl[p] : null;\n  }\n  return { convert };\n}\nvar ArrayCamera = class extends PerspectiveCamera {\n  constructor(array = []) {\n    super();\n    this.isArrayCamera = true;\n    this.cameras = array;\n  }\n};\nvar Group = class extends Object3D {\n  constructor() {\n    super();\n    this.isGroup = true;\n    this.type = \"Group\";\n  }\n};\nvar _moveEvent = { type: \"move\" };\nvar 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};\nvar _occlusion_vertex = `\nvoid main() {\n\n\tgl_Position = vec4( position, 1.0 );\n\n}`;\nvar _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}`;\nvar 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};\nvar 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 i = 0; i < controllers.length; i++) {\n        const inputSource = controllerInputSources[i];\n        if (inputSource === null) continue;\n        controllerInputSources[i] = null;\n        controllers[i].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 i = 0; i < event.removed.length; i++) {\n        const inputSource = event.removed[i];\n        const index = controllerInputSources.indexOf(inputSource);\n        if (index >= 0) {\n          controllerInputSources[index] = null;\n          controllers[index].disconnect(inputSource);\n        }\n      }\n      for (let i = 0; i < event.added.length; i++) {\n        const inputSource = event.added[i];\n        let controllerIndex = controllerInputSources.indexOf(inputSource);\n        if (controllerIndex === -1) {\n          for (let i2 = 0; i2 < controllers.length; i2++) {\n            if (i2 >= controllerInputSources.length) {\n              controllerInputSources.push(inputSource);\n              controllerIndex = i2;\n              break;\n            } else if (controllerInputSources[i2] === null) {\n              controllerInputSources[i2] = inputSource;\n              controllerIndex = i2;\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 updateCamera(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      updateCamera(cameraXR, parent);\n      for (let i = 0; i < cameras2.length; i++) {\n        updateCamera(cameras2[i], 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 i = 0; i < views.length; i++) {\n          const view = views[i];\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 (i === 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[i];\n          if (camera === void 0) {\n            camera = new PerspectiveCamera();\n            camera.layers.enable(i);\n            camera.viewport = new Vector4();\n            cameras[i] = 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 (i === 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 i = 0; i < controllers.length; i++) {\n        const inputSource = controllerInputSources[i];\n        const controller = controllers[i];\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};\nvar _e1 = /* @__PURE__ */ new Euler();\nvar _m1 = /* @__PURE__ */ new Matrix4();\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 i = 0; i < maxBindingPoints; i++) {\n      if (allocatedBindingPoints.indexOf(i) === -1) {\n        allocatedBindingPoints.push(i);\n        return i;\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 i = 0, il = uniforms.length; i < il; i++) {\n      const uniformArray = Array.isArray(uniforms[i]) ? uniforms[i] : [uniforms[i]];\n      for (let j = 0, jl = uniformArray.length; j < jl; j++) {\n        const uniform = uniformArray[j];\n        if (hasUniformChanged(uniform, i, j, 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 k = 0; k < values.length; k++) {\n            const value = values[k];\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 i = 0, l = uniforms.length; i < l; i++) {\n      const uniformArray = Array.isArray(uniforms[i]) ? uniforms[i] : [uniforms[i]];\n      for (let j = 0, jl = uniformArray.length; j < jl; j++) {\n        const uniform = uniformArray[j];\n        const values = Array.isArray(uniform.value) ? uniform.value : [uniform.value];\n        for (let k = 0, kl = values.length; k < kl; k++) {\n          const value = values[k];\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 dispose() {\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\n  };\n}\nvar WebGLRenderer = class {\n  constructor(parameters = {}) {\n    const {\n      canvas = createCanvasElement(),\n      context = 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 (context !== null) {\n      if (typeof WebGLRenderingContext !== \"undefined\" && context instanceof WebGLRenderingContext) {\n        throw new Error(\"THREE.WebGLRenderer: WebGL 1 is not supported since r163.\");\n      }\n      _alpha = context.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 = context;\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 (error) {\n      console.error(\"THREE.WebGLRenderer: \" + error.message);\n      throw error;\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(target) {\n      return target.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(target) {\n      return target.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(target) {\n      return target.copy(_currentViewport);\n    };\n    this.getViewport = function(target) {\n      return target.copy(_viewport);\n    };\n    this.setViewport = function(x, y, width, height) {\n      if (x.isVector4) {\n        _viewport.set(x.x, x.y, x.z, x.w);\n      } else {\n        _viewport.set(x, y, width, height);\n      }\n      state.viewport(_currentViewport.copy(_viewport).multiplyScalar(_pixelRatio).round());\n    };\n    this.getScissor = function(target) {\n      return target.copy(_scissor);\n    };\n    this.setScissor = function(x, y, width, height) {\n      if (x.isVector4) {\n        _scissor.set(x.x, x.y, x.z, x.w);\n      } else {\n        _scissor.set(x, y, 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(target) {\n      return target.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 r = clearColor.r;\n          const g = clearColor.g;\n          const b = clearColor.b;\n          if (isUnsignedType) {\n            uintClearColor[0] = r;\n            uintClearColor[1] = g;\n            uintClearColor[2] = b;\n            uintClearColor[3] = a;\n            _gl.clearBufferuiv(_gl.COLOR, 0, uintClearColor);\n          } else {\n            intClearColor[0] = r;\n            intClearColor[1] = g;\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 i = 0; i < drawCount2; i++) {\n              uniforms.setValue(_gl, \"_gl_DrawID\", i);\n              renderer.render(starts[i] / bytesPerElement, counts[i]);\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 i = 0; i < material.length; i++) {\n              const material2 = material[i];\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((resolve) => {\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            resolve(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 i = 0, l = cameras.length; i < l; i++) {\n            const camera2 = cameras[i];\n            renderTransmissionPass(opaqueObjects, transmissiveObjects, scene, camera2);\n          }\n        }\n        if (_renderBackground) background.render(scene);\n        for (let i = 0, l = cameras.length; i < l; i++) {\n          const camera2 = cameras[i];\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 i = 0, l = groups.length; i < l; i++) {\n                const group = groups[i];\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 i = 0, l = children.length; i < l; i++) {\n        projectObject(children[i], 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 i = 0, l = transmissiveObjects.length; i < l; i++) {\n          const renderItem = transmissiveObjects[i];\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 i = 0, l = renderList.length; i < l; i++) {\n        const renderItem = renderList[i];\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 i = 0, l = groups.length; i < l; i++) {\n          const group = groups[i];\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, y, 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 && (y >= 0 && y <= renderTarget.height - height)) {\n            _gl.readPixels(x, y, 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, y, 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 && (y >= 0 && y <= 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, y, 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 y = position !== null ? position.y : 0;\n      textures.setTexture2D(texture, 0);\n      _gl.copyTexSubImage2D(_gl.TEXTURE_2D, level, 0, 0, x, y, 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(target) {\n      if (properties.get(target).__webglFramebuffer === void 0) {\n        textures.setupRenderTarget(target);\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};\nvar 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};\nvar 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};\nvar 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};\nvar 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 i = 0, l = this.stride; i < l; i++) {\n      this.array[index1 + i] = attribute.array[index2 + i];\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};\nvar _vector$6 = /* @__PURE__ */ new Vector3();\nvar 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 i = 0, l = this.data.count; i < l; i++) {\n      _vector$6.fromBufferAttribute(this, i);\n      _vector$6.applyMatrix4(m);\n      this.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z);\n    }\n    return this;\n  }\n  applyNormalMatrix(m) {\n    for (let i = 0, l = this.count; i < l; i++) {\n      _vector$6.fromBufferAttribute(this, i);\n      _vector$6.applyNormalMatrix(m);\n      this.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z);\n    }\n    return this;\n  }\n  transformDirection(m) {\n    for (let i = 0, l = this.count; i < l; i++) {\n      _vector$6.fromBufferAttribute(this, i);\n      _vector$6.transformDirection(m);\n      this.setXYZ(i, _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, y) {\n    if (this.normalized) y = normalize(y, this.array);\n    this.data.array[index * this.data.stride + this.offset + 1] = y;\n    return this;\n  }\n  setZ(index, z) {\n    if (this.normalized) z = normalize(z, this.array);\n    this.data.array[index * this.data.stride + this.offset + 2] = z;\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 y = this.data.array[index * this.data.stride + this.offset + 1];\n    if (this.normalized) y = denormalize(y, this.array);\n    return y;\n  }\n  getZ(index) {\n    let z = this.data.array[index * this.data.stride + this.offset + 2];\n    if (this.normalized) z = denormalize(z, this.array);\n    return z;\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, y) {\n    index = index * this.data.stride + this.offset;\n    if (this.normalized) {\n      x = normalize(x, this.array);\n      y = normalize(y, this.array);\n    }\n    this.data.array[index + 0] = x;\n    this.data.array[index + 1] = y;\n    return this;\n  }\n  setXYZ(index, x, y, z) {\n    index = index * this.data.stride + this.offset;\n    if (this.normalized) {\n      x = normalize(x, this.array);\n      y = normalize(y, this.array);\n      z = normalize(z, this.array);\n    }\n    this.data.array[index + 0] = x;\n    this.data.array[index + 1] = y;\n    this.data.array[index + 2] = z;\n    return this;\n  }\n  setXYZW(index, x, y, z, w) {\n    index = index * this.data.stride + this.offset;\n    if (this.normalized) {\n      x = normalize(x, this.array);\n      y = normalize(y, this.array);\n      z = normalize(z, this.array);\n      w = normalize(w, this.array);\n    }\n    this.data.array[index + 0] = x;\n    this.data.array[index + 1] = y;\n    this.data.array[index + 2] = z;\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 i = 0; i < this.count; i++) {\n        const index = i * this.data.stride + this.offset;\n        for (let j = 0; j < this.itemSize; j++) {\n          array.push(this.data.array[index + j]);\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 i = 0; i < this.count; i++) {\n        const index = i * this.data.stride + this.offset;\n        for (let j = 0; j < this.itemSize; j++) {\n          array.push(this.data.array[index + j]);\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};\nvar 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};\nvar _geometry;\nvar _intersectPoint = /* @__PURE__ */ new Vector3();\nvar _worldScale = /* @__PURE__ */ new Vector3();\nvar _mvPosition = /* @__PURE__ */ new Vector3();\nvar _alignedPosition = /* @__PURE__ */ new Vector2();\nvar _rotatedPosition = /* @__PURE__ */ new Vector2();\nvar _viewWorldMatrix = /* @__PURE__ */ new Matrix4();\nvar _vA = /* @__PURE__ */ new Vector3();\nvar _vB = /* @__PURE__ */ new Vector3();\nvar _vC = /* @__PURE__ */ new Vector3();\nvar _uvA = /* @__PURE__ */ new Vector2();\nvar _uvB = /* @__PURE__ */ new Vector2();\nvar _uvC = /* @__PURE__ */ new Vector2();\nvar 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};\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}\nvar _v1$2 = /* @__PURE__ */ new Vector3();\nvar _v2$1 = /* @__PURE__ */ new Vector3();\nvar 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 i = 0, l = levels.length; i < l; i++) {\n      const level = levels[i];\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 l;\n    for (l = 0; l < levels.length; l++) {\n      if (distance < levels[l].distance) {\n        break;\n      }\n    }\n    levels.splice(l, 0, { distance, hysteresis, object });\n    this.add(object);\n    return this;\n  }\n  removeLevel(distance) {\n    const levels = this.levels;\n    for (let i = 0; i < levels.length; i++) {\n      if (levels[i].distance === distance) {\n        const removedElements = levels.splice(i, 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 i, l;\n      for (i = 1, l = levels.length; i < l; i++) {\n        let levelDistance = levels[i].distance;\n        if (levels[i].object.visible) {\n          levelDistance -= levelDistance * levels[i].hysteresis;\n        }\n        if (distance < levelDistance) {\n          break;\n        }\n      }\n      return levels[i - 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 i, l;\n      for (i = 1, l = levels.length; i < l; i++) {\n        let levelDistance = levels[i].distance;\n        if (levels[i].object.visible) {\n          levelDistance -= levelDistance * levels[i].hysteresis;\n        }\n        if (distance >= levelDistance) {\n          levels[i - 1].object.visible = false;\n          levels[i].object.visible = true;\n        } else {\n          break;\n        }\n      }\n      this._currentLevel = i - 1;\n      for (; i < l; i++) {\n        levels[i].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 i = 0, l = levels.length; i < l; i++) {\n      const level = levels[i];\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};\nvar _basePosition = /* @__PURE__ */ new Vector3();\nvar _skinIndex = /* @__PURE__ */ new Vector4();\nvar _skinWeight = /* @__PURE__ */ new Vector4();\nvar _vector3 = /* @__PURE__ */ new Vector3();\nvar _matrix4 = /* @__PURE__ */ new Matrix4();\nvar _vertex = /* @__PURE__ */ new Vector3();\nvar _sphere$4 = /* @__PURE__ */ new Sphere();\nvar _inverseMatrix$2 = /* @__PURE__ */ new Matrix4();\nvar _ray$2 = /* @__PURE__ */ new Ray();\nvar 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 i = 0; i < positionAttribute.count; i++) {\n      this.getVertexPosition(i, _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 i = 0; i < positionAttribute.count; i++) {\n      this.getVertexPosition(i, _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, target) {\n    super.getVertexPosition(index, target);\n    this.applyBoneTransform(index, target);\n    return target;\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 i = 0, l = skinWeight.count; i < l; i++) {\n      vector.fromBufferAttribute(skinWeight, i);\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(i, 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 i = 0; i < 4; i++) {\n      const weight = _skinWeight.getComponent(i);\n      if (weight !== 0) {\n        const boneIndex = _skinIndex.getComponent(i);\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};\nvar Bone = class extends Object3D {\n  constructor() {\n    super();\n    this.isBone = true;\n    this.type = \"Bone\";\n  }\n};\nvar 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};\nvar _offsetMatrix = /* @__PURE__ */ new Matrix4();\nvar _identityMatrix$1 = /* @__PURE__ */ new Matrix4();\nvar 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 i = 0, il = this.bones.length; i < il; i++) {\n          this.boneInverses.push(new Matrix4());\n        }\n      }\n    }\n  }\n  calculateInverses() {\n    this.boneInverses.length = 0;\n    for (let i = 0, il = this.bones.length; i < il; i++) {\n      const inverse = new Matrix4();\n      if (this.bones[i]) {\n        inverse.copy(this.bones[i].matrixWorld).invert();\n      }\n      this.boneInverses.push(inverse);\n    }\n  }\n  pose() {\n    for (let i = 0, il = this.bones.length; i < il; i++) {\n      const bone = this.bones[i];\n      if (bone) {\n        bone.matrixWorld.copy(this.boneInverses[i]).invert();\n      }\n    }\n    for (let i = 0, il = this.bones.length; i < il; i++) {\n      const bone = this.bones[i];\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 i = 0, il = bones.length; i < il; i++) {\n      const matrix = bones[i] ? bones[i].matrixWorld : _identityMatrix$1;\n      _offsetMatrix.multiplyMatrices(matrix, boneInverses[i]);\n      _offsetMatrix.toArray(boneMatrices, i * 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 i = 0, il = this.bones.length; i < il; i++) {\n      const bone = this.bones[i];\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 i = 0, l = json.bones.length; i < l; i++) {\n      const uuid = json.bones[i];\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[i]));\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 i = 0, l = bones.length; i < l; i++) {\n      const bone = bones[i];\n      data.bones.push(bone.uuid);\n      const boneInverse = boneInverses[i];\n      data.boneInverses.push(boneInverse.toArray());\n    }\n    return data;\n  }\n};\nvar 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};\nvar _instanceLocalMatrix = /* @__PURE__ */ new Matrix4();\nvar _instanceWorldMatrix = /* @__PURE__ */ new Matrix4();\nvar _instanceIntersects = [];\nvar _box3 = /* @__PURE__ */ new Box3();\nvar _identity = /* @__PURE__ */ new Matrix4();\nvar _mesh$1 = /* @__PURE__ */ new Mesh();\nvar _sphere$3 = /* @__PURE__ */ new Sphere();\nvar 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 i = 0; i < count; i++) {\n      this.setMatrixAt(i, _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 i = 0; i < count; i++) {\n      this.getMatrixAt(i, _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 i = 0; i < count; i++) {\n      this.getMatrixAt(i, _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, matrix) {\n    matrix.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 i = 0; i < objectInfluences.length; i++) {\n      objectInfluences[i] = array[dataIndex + i];\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 i = 0, l = _instanceIntersects.length; i < l; i++) {\n        const intersect2 = _instanceIntersects[i];\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, matrix) {\n    matrix.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 i = 0; i < objectInfluences.length; i++) {\n      morphInfluencesSum += objectInfluences[i];\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};\nfunction sortOpaque(a, b) {\n  return a.z - b.z;\n}\nfunction sortTransparent(a, b) {\n  return b.z - a.z;\n}\nvar MultiDrawRenderList = class {\n  constructor() {\n    this.index = 0;\n    this.pool = [];\n    this.list = [];\n  }\n  push(drawRange, z, 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 = z;\n    item.index = index;\n  }\n  reset() {\n    this.list.length = 0;\n    this.index = 0;\n  }\n};\nvar _matrix$1 = /* @__PURE__ */ new Matrix4();\nvar _invMatrixWorld = /* @__PURE__ */ new Matrix4();\nvar _identityMatrix = /* @__PURE__ */ new Matrix4();\nvar _whiteColor = /* @__PURE__ */ new Color(1, 1, 1);\nvar _projScreenMatrix$2 = /* @__PURE__ */ new Matrix4();\nvar _frustum = /* @__PURE__ */ new Frustum();\nvar _box$1 = /* @__PURE__ */ new Box3();\nvar _sphere$2 = /* @__PURE__ */ new Sphere();\nvar _vector$5 = /* @__PURE__ */ new Vector3();\nvar _forward = /* @__PURE__ */ new Vector3();\nvar _temp = /* @__PURE__ */ new Vector3();\nvar _renderList = /* @__PURE__ */ new MultiDrawRenderList();\nvar _mesh = /* @__PURE__ */ new Mesh();\nvar _batchIntersects = [];\nfunction copyAttributeData(src, target, targetOffset = 0) {\n  const itemSize = target.itemSize;\n  if (src.isInterleavedBufferAttribute || src.array.constructor !== target.array.constructor) {\n    const vertexCount = src.count;\n    for (let i = 0; i < vertexCount; i++) {\n      for (let c = 0; c < itemSize; c++) {\n        target.setComponent(i + targetOffset, c, src.getComponent(i, c));\n      }\n    }\n  } else {\n    target.array.set(src.array, targetOffset * itemSize);\n  }\n  target.needsUpdate = true;\n}\nvar 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 i = 0, l = drawInfo.length; i < l; i++) {\n      if (drawInfo[i].active === false) continue;\n      const geometryId = drawInfo[i].geometryIndex;\n      this.getMatrixAt(i, _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 i = 0, l = drawInfo.length; i < l; i++) {\n      if (drawInfo[i].active === false) continue;\n      const geometryId = drawInfo[i].geometryIndex;\n      this.getMatrixAt(i, _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 i = srcAttribute.count, l = vertexCount; i < l; i++) {\n        const index = vertexStart + i;\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 i = 0; i < srcIndex.count; i++) {\n        dstIndex.setX(indexStart + i, vertexStart + srcIndex.getX(i));\n      }\n      for (let i = srcIndex.count, l = reservedRange.indexCount; i < l; i++) {\n        dstIndex.setX(indexStart + i, 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, target) {\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 i = drawRange.start, l = drawRange.start + drawRange.count; i < l; i++) {\n        let iv = i;\n        if (index) {\n          iv = index.getX(iv);\n        }\n        box.expandByPoint(_vector$5.fromBufferAttribute(position, iv));\n      }\n      bound.boxInitialized = true;\n    }\n    target.copy(box);\n    return target;\n  }\n  // get bounding sphere and compute it if it doesn't exist\n  getBoundingSphereAt(geometryId, target) {\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 i = drawRange.start, l = drawRange.start + drawRange.count; i < l; i++) {\n        let iv = i;\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    target.copy(sphere);\n    return target;\n  }\n  setMatrixAt(instanceId, matrix) {\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    matrix.toArray(matricesArray, instanceId * 16);\n    matricesTexture.needsUpdate = true;\n    return this;\n  }\n  getMatrixAt(instanceId, matrix) {\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 matrix.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, target = {}) {\n    if (geometryId < 0 || geometryId >= this._geometryCount) {\n      return null;\n    }\n    const drawRange = this._drawRanges[geometryId];\n    target.start = drawRange.start;\n    target.count = drawRange.count;\n    return target;\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 i = 0, l = drawInfo.length; i < l; i++) {\n      if (!drawInfo[i].visible || !drawInfo[i].active) {\n        continue;\n      }\n      const geometryId = drawInfo[i].geometryIndex;\n      const drawRange = drawRanges[geometryId];\n      _mesh.geometry.setDrawRange(drawRange.start, drawRange.count);\n      this.getMatrixAt(i, _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 j = 0, l2 = _batchIntersects.length; j < l2; j++) {\n        const intersect2 = _batchIntersects[j];\n        intersect2.object = this;\n        intersect2.batchId = i;\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 i = 0, l = drawInfo.length; i < l; i++) {\n        if (drawInfo[i].visible && drawInfo[i].active) {\n          const geometryId = drawInfo[i].geometryIndex;\n          this.getMatrixAt(i, _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 z = _temp.subVectors(_sphere$2.center, _vector$5).dot(_forward);\n            _renderList.push(drawRanges[geometryId], z, i);\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 i = 0, l = list.length; i < l; i++) {\n        const item = list[i];\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 i = 0, l = drawInfo.length; i < l; i++) {\n        if (drawInfo[i].visible && drawInfo[i].active) {\n          const geometryId = drawInfo[i].geometryIndex;\n          let culled = false;\n          if (perObjectFrustumCulled) {\n            this.getMatrixAt(i, _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] = i;\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};\nvar 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};\nvar _vStart = /* @__PURE__ */ new Vector3();\nvar _vEnd = /* @__PURE__ */ new Vector3();\nvar _inverseMatrix$1 = /* @__PURE__ */ new Matrix4();\nvar _ray$1 = /* @__PURE__ */ new Ray();\nvar _sphere$1 = /* @__PURE__ */ new Sphere();\nvar _intersectPointOnRay = /* @__PURE__ */ new Vector3();\nvar _intersectPointOnSegment = /* @__PURE__ */ new Vector3();\nvar 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 i = 1, l = positionAttribute.count; i < l; i++) {\n        _vStart.fromBufferAttribute(positionAttribute, i - 1);\n        _vEnd.fromBufferAttribute(positionAttribute, i);\n        lineDistances[i] = lineDistances[i - 1];\n        lineDistances[i] += _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 i = start, l = end - 1; i < l; i += step) {\n        const a = index.getX(i);\n        const b = index.getX(i + 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 i = start, l = end - 1; i < l; i += step) {\n        const intersect2 = checkIntersection(this, raycaster, _ray$1, localThresholdSq, i, i + 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};\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}\nvar _start = /* @__PURE__ */ new Vector3();\nvar _end = /* @__PURE__ */ new Vector3();\nvar 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 i = 0, l = positionAttribute.count; i < l; i += 2) {\n        _start.fromBufferAttribute(positionAttribute, i);\n        _end.fromBufferAttribute(positionAttribute, i + 1);\n        lineDistances[i] = i === 0 ? 0 : lineDistances[i - 1];\n        lineDistances[i + 1] = lineDistances[i] + _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};\nvar LineLoop = class extends Line {\n  constructor(geometry, material) {\n    super(geometry, material);\n    this.isLineLoop = true;\n    this.type = \"LineLoop\";\n  }\n};\nvar 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};\nvar _inverseMatrix = /* @__PURE__ */ new Matrix4();\nvar _ray = /* @__PURE__ */ new Ray();\nvar _sphere = /* @__PURE__ */ new Sphere();\nvar _position$2 = /* @__PURE__ */ new Vector3();\nvar 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 i = start, il = end; i < il; i++) {\n        const a = index.getX(i);\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 i = start, l = end; i < l; i++) {\n        _position$2.fromBufferAttribute(positionAttribute, i);\n        testPoint(_position$2, i, 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};\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}\nvar 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};\nvar 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};\nvar 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};\nvar 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};\nvar 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};\nvar 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};\nvar 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(u, optionalTarget) {\n    const t = this.getUtoTmapping(u);\n    return this.getPoint(t, 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 p = 1; p <= divisions; p++) {\n      current = this.getPoint(p / 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(u, distance) {\n    const arcLengths = this.getLengths();\n    let i = 0;\n    const il = arcLengths.length;\n    let targetArcLength;\n    if (distance) {\n      targetArcLength = distance;\n    } else {\n      targetArcLength = u * arcLengths[il - 1];\n    }\n    let low = 0, high = il - 1, comparison;\n    while (low <= high) {\n      i = Math.floor(low + (high - low) / 2);\n      comparison = arcLengths[i] - targetArcLength;\n      if (comparison < 0) {\n        low = i + 1;\n      } else if (comparison > 0) {\n        high = i - 1;\n      } else {\n        high = i;\n        break;\n      }\n    }\n    i = high;\n    if (arcLengths[i] === targetArcLength) {\n      return i / (il - 1);\n    }\n    const lengthBefore = arcLengths[i];\n    const lengthAfter = arcLengths[i + 1];\n    const segmentLength = lengthAfter - lengthBefore;\n    const segmentFraction = (targetArcLength - lengthBefore) / segmentLength;\n    const t = (i + segmentFraction) / (il - 1);\n    return t;\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(t, optionalTarget) {\n    const delta = 1e-4;\n    let t1 = t - delta;\n    let t2 = t + delta;\n    if (t1 < 0) t1 = 0;\n    if (t2 > 1) t2 = 1;\n    const pt1 = this.getPoint(t1);\n    const pt2 = this.getPoint(t2);\n    const tangent = optionalTarget || (pt1.isVector2 ? new Vector2() : new Vector3());\n    tangent.copy(pt2).sub(pt1).normalize();\n    return tangent;\n  }\n  getTangentAt(u, optionalTarget) {\n    const t = this.getUtoTmapping(u);\n    return this.getTangent(t, 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 i = 0; i <= segments; i++) {\n      const u = i / segments;\n      tangents[i] = this.getTangentAt(u, 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 i = 1; i <= segments; i++) {\n      normals[i] = normals[i - 1].clone();\n      binormals[i] = binormals[i - 1].clone();\n      vec.crossVectors(tangents[i - 1], tangents[i]);\n      if (vec.length() > Number.EPSILON) {\n        vec.normalize();\n        const theta = Math.acos(clamp(tangents[i - 1].dot(tangents[i]), -1, 1));\n        normals[i].applyMatrix4(mat.makeRotationAxis(vec, theta));\n      }\n      binormals[i].crossVectors(tangents[i], normals[i]);\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 i = 1; i <= segments; i++) {\n        normals[i].applyMatrix4(mat.makeRotationAxis(tangents[i], theta * i));\n        binormals[i].crossVectors(tangents[i], normals[i]);\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};\nvar 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(t, 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 + t * deltaAngle;\n    let x = this.aX + this.xRadius * Math.cos(angle);\n    let y = 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 = y - this.aY;\n      x = tx * cos - ty * sin + this.aX;\n      y = tx * sin + ty * cos + this.aY;\n    }\n    return point.set(x, y);\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};\nvar 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};\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(t) {\n      const t2 = t * t;\n      const t3 = t2 * t;\n      return c0 + c1 * t + c2 * t2 + c3 * t3;\n    }\n  };\n}\nvar tmp = /* @__PURE__ */ new Vector3();\nvar px = /* @__PURE__ */ new CubicPoly();\nvar py = /* @__PURE__ */ new CubicPoly();\nvar pz = /* @__PURE__ */ new CubicPoly();\nvar 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(t, optionalTarget = new Vector3()) {\n    const point = optionalTarget;\n    const points = this.points;\n    const l = points.length;\n    const p = (l - (this.closed ? 0 : 1)) * t;\n    let intPoint = Math.floor(p);\n    let weight = p - intPoint;\n    if (this.closed) {\n      intPoint += intPoint > 0 ? 0 : (Math.floor(Math.abs(intPoint) / l) + 1) * l;\n    } else if (weight === 0 && intPoint === l - 1) {\n      intPoint = l - 2;\n      weight = 1;\n    }\n    let p0, p3;\n    if (this.closed || intPoint > 0) {\n      p0 = points[(intPoint - 1) % l];\n    } else {\n      tmp.subVectors(points[0], points[1]).add(points[0]);\n      p0 = tmp;\n    }\n    const p1 = points[intPoint % l];\n    const p2 = points[(intPoint + 1) % l];\n    if (this.closed || intPoint + 2 < l) {\n      p3 = points[(intPoint + 2) % l];\n    } else {\n      tmp.subVectors(points[l - 1], points[l - 2]).add(points[l - 1]);\n      p3 = 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(p2), pow);\n      let dt2 = Math.pow(p2.distanceToSquared(p3), 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, p2.x, p3.x, dt0, dt1, dt2);\n      py.initNonuniformCatmullRom(p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2);\n      pz.initNonuniformCatmullRom(p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2);\n    } else if (this.curveType === \"catmullrom\") {\n      px.initCatmullRom(p0.x, p1.x, p2.x, p3.x, this.tension);\n      py.initCatmullRom(p0.y, p1.y, p2.y, p3.y, this.tension);\n      pz.initCatmullRom(p0.z, p1.z, p2.z, p3.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 i = 0, l = source.points.length; i < l; i++) {\n      const point = source.points[i];\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 i = 0, l = this.points.length; i < l; i++) {\n      const point = this.points[i];\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 i = 0, l = json.points.length; i < l; i++) {\n      const point = json.points[i];\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};\nfunction CatmullRom(t, p0, p1, p2, p3) {\n  const v0 = (p2 - p0) * 0.5;\n  const v1 = (p3 - p1) * 0.5;\n  const t2 = t * t;\n  const t3 = t * t2;\n  return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\nfunction QuadraticBezierP0(t, p) {\n  const k = 1 - t;\n  return k * k * p;\n}\nfunction QuadraticBezierP1(t, p) {\n  return 2 * (1 - t) * t * p;\n}\nfunction QuadraticBezierP2(t, p) {\n  return t * t * p;\n}\nfunction QuadraticBezier(t, p0, p1, p2) {\n  return QuadraticBezierP0(t, p0) + QuadraticBezierP1(t, p1) + QuadraticBezierP2(t, p2);\n}\nfunction CubicBezierP0(t, p) {\n  const k = 1 - t;\n  return k * k * k * p;\n}\nfunction CubicBezierP1(t, p) {\n  const k = 1 - t;\n  return 3 * k * k * t * p;\n}\nfunction CubicBezierP2(t, p) {\n  return 3 * (1 - t) * t * t * p;\n}\nfunction CubicBezierP3(t, p) {\n  return t * t * t * p;\n}\nfunction CubicBezier(t, p0, p1, p2, p3) {\n  return CubicBezierP0(t, p0) + CubicBezierP1(t, p1) + CubicBezierP2(t, p2) + CubicBezierP3(t, p3);\n}\nvar 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(t, 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(t, v0.x, v1.x, v2.x, v3.x),\n      CubicBezier(t, 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};\nvar 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(t, 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(t, v0.x, v1.x, v2.x, v3.x),\n      CubicBezier(t, v0.y, v1.y, v2.y, v3.y),\n      CubicBezier(t, 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};\nvar 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(t, optionalTarget = new Vector2()) {\n    const point = optionalTarget;\n    if (t === 1) {\n      point.copy(this.v2);\n    } else {\n      point.copy(this.v2).sub(this.v1);\n      point.multiplyScalar(t).add(this.v1);\n    }\n    return point;\n  }\n  // Line curve is linear, so we can overwrite default getPointAt\n  getPointAt(u, optionalTarget) {\n    return this.getPoint(u, optionalTarget);\n  }\n  getTangent(t, optionalTarget = new Vector2()) {\n    return optionalTarget.subVectors(this.v2, this.v1).normalize();\n  }\n  getTangentAt(u, optionalTarget) {\n    return this.getTangent(u, 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};\nvar 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(t, optionalTarget = new Vector3()) {\n    const point = optionalTarget;\n    if (t === 1) {\n      point.copy(this.v2);\n    } else {\n      point.copy(this.v2).sub(this.v1);\n      point.multiplyScalar(t).add(this.v1);\n    }\n    return point;\n  }\n  // Line curve is linear, so we can overwrite default getPointAt\n  getPointAt(u, optionalTarget) {\n    return this.getPoint(u, optionalTarget);\n  }\n  getTangent(t, optionalTarget = new Vector3()) {\n    return optionalTarget.subVectors(this.v2, this.v1).normalize();\n  }\n  getTangentAt(u, optionalTarget) {\n    return this.getTangent(u, 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};\nvar 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(t, optionalTarget = new Vector2()) {\n    const point = optionalTarget;\n    const v0 = this.v0, v1 = this.v1, v2 = this.v2;\n    point.set(\n      QuadraticBezier(t, v0.x, v1.x, v2.x),\n      QuadraticBezier(t, 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};\nvar 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(t, optionalTarget = new Vector3()) {\n    const point = optionalTarget;\n    const v0 = this.v0, v1 = this.v1, v2 = this.v2;\n    point.set(\n      QuadraticBezier(t, v0.x, v1.x, v2.x),\n      QuadraticBezier(t, v0.y, v1.y, v2.y),\n      QuadraticBezier(t, 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};\nvar SplineCurve = class extends Curve {\n  constructor(points = []) {\n    super();\n    this.isSplineCurve = true;\n    this.type = \"SplineCurve\";\n    this.points = points;\n  }\n  getPoint(t, optionalTarget = new Vector2()) {\n    const point = optionalTarget;\n    const points = this.points;\n    const p = (points.length - 1) * t;\n    const intPoint = Math.floor(p);\n    const weight = p - intPoint;\n    const p0 = points[intPoint === 0 ? intPoint : intPoint - 1];\n    const p1 = points[intPoint];\n    const p2 = points[intPoint > points.length - 2 ? points.length - 1 : intPoint + 1];\n    const p3 = points[intPoint > points.length - 3 ? points.length - 1 : intPoint + 2];\n    point.set(\n      CatmullRom(weight, p0.x, p1.x, p2.x, p3.x),\n      CatmullRom(weight, p0.y, p1.y, p2.y, p3.y)\n    );\n    return point;\n  }\n  copy(source) {\n    super.copy(source);\n    this.points = [];\n    for (let i = 0, l = source.points.length; i < l; i++) {\n      const point = source.points[i];\n      this.points.push(point.clone());\n    }\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.points = [];\n    for (let i = 0, l = this.points.length; i < l; i++) {\n      const point = this.points[i];\n      data.points.push(point.toArray());\n    }\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.points = [];\n    for (let i = 0, l = json.points.length; i < l; i++) {\n      const point = json.points[i];\n      this.points.push(new Vector2().fromArray(point));\n    }\n    return this;\n  }\n};\nvar 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});\nvar 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(t, optionalTarget) {\n    const d = t * this.getLength();\n    const curveLengths = this.getCurveLengths();\n    let i = 0;\n    while (i < curveLengths.length) {\n      if (curveLengths[i] >= d) {\n        const diff = curveLengths[i] - d;\n        const curve = this.curves[i];\n        const segmentLength = curve.getLength();\n        const u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n        return curve.getPointAt(u, optionalTarget);\n      }\n      i++;\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 i = 0, l = this.curves.length; i < l; i++) {\n      sums += this.curves[i].getLength();\n      lengths.push(sums);\n    }\n    this.cacheLengths = lengths;\n    return lengths;\n  }\n  getSpacedPoints(divisions = 40) {\n    const points = [];\n    for (let i = 0; i <= divisions; i++) {\n      points.push(this.getPoint(i / 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 i = 0, curves = this.curves; i < curves.length; i++) {\n      const curve = curves[i];\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 j = 0; j < pts.length; j++) {\n        const point = pts[j];\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 i = 0, l = source.curves.length; i < l; i++) {\n      const curve = source.curves[i];\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 i = 0, l = this.curves.length; i < l; i++) {\n      const curve = this.curves[i];\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 i = 0, l = json.curves.length; i < l; i++) {\n      const curve = json.curves[i];\n      this.curves.push(new Curves[curve.type]().fromJSON(curve));\n    }\n    return this;\n  }\n};\nvar 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 i = 1, l = points.length; i < l; i++) {\n      this.lineTo(points[i].x, points[i].y);\n    }\n    return this;\n  }\n  moveTo(x, y) {\n    this.currentPoint.set(x, y);\n    return this;\n  }\n  lineTo(x, y) {\n    const curve = new LineCurve(this.currentPoint.clone(), new Vector2(x, y));\n    this.curves.push(curve);\n    this.currentPoint.set(x, y);\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};\nvar 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 j = 0; j <= points.length - 1; j++) {\n      switch (j) {\n        case 0:\n          dx = points[j + 1].x - points[j].x;\n          dy = points[j + 1].y - points[j].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[j + 1].x - points[j].x;\n          dy = points[j + 1].y - points[j].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 i = 0; i <= segments; i++) {\n      const phi = phiStart + i * inverseSegments * phiLength;\n      const sin = Math.sin(phi);\n      const cos = Math.cos(phi);\n      for (let j = 0; j <= points.length - 1; j++) {\n        vertex2.x = points[j].x * sin;\n        vertex2.y = points[j].y;\n        vertex2.z = points[j].x * cos;\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n        uv.x = i / segments;\n        uv.y = j / (points.length - 1);\n        uvs.push(uv.x, uv.y);\n        const x = initNormals[3 * j + 0] * sin;\n        const y = initNormals[3 * j + 1];\n        const z = initNormals[3 * j + 0] * cos;\n        normals.push(x, y, z);\n      }\n    }\n    for (let i = 0; i < segments; i++) {\n      for (let j = 0; j < points.length - 1; j++) {\n        const base = j + i * 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};\nvar 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};\nvar 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, i = 3; s <= segments; s++, i += 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[i] / radius + 1) / 2;\n      uv.y = (vertices[i + 1] / radius + 1) / 2;\n      uvs.push(uv.x, uv.y);\n    }\n    for (let i = 1; i <= segments; i++) {\n      indices.push(i, i + 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};\nvar 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 y = 0; y <= heightSegments; y++) {\n        const indexRow = [];\n        const v = y / heightSegments;\n        const radius = v * (radiusBottom - radiusTop) + radiusTop;\n        for (let x = 0; x <= radialSegments; x++) {\n          const u = x / radialSegments;\n          const theta = u * thetaLength + thetaStart;\n          const sinTheta = Math.sin(theta);\n          const cosTheta = Math.cos(theta);\n          vertex2.x = radius * sinTheta;\n          vertex2.y = -v * 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(u, 1 - v);\n          indexRow.push(index++);\n        }\n        indexArray.push(indexRow);\n      }\n      for (let x = 0; x < radialSegments; x++) {\n        for (let y = 0; y < heightSegments; y++) {\n          const a = indexArray[y][x];\n          const b = indexArray[y + 1][x];\n          const c = indexArray[y + 1][x + 1];\n          const d = indexArray[y][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 u = x / radialSegments;\n        const theta = u * 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 i = centerIndexEnd + x;\n        if (top === true) {\n          indices.push(i, i + 1, c);\n        } else {\n          indices.push(i + 1, i, 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};\nvar 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};\nvar 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 i = 0; i < indices.length; i += 3) {\n        getVertexByIndex(indices[i + 0], a);\n        getVertexByIndex(indices[i + 1], b);\n        getVertexByIndex(indices[i + 2], c);\n        subdivideFace(a, b, c, detail2);\n      }\n    }\n    function subdivideFace(a, b, c, detail2) {\n      const cols = detail2 + 1;\n      const v = [];\n      for (let i = 0; i <= cols; i++) {\n        v[i] = [];\n        const aj = a.clone().lerp(c, i / cols);\n        const bj = b.clone().lerp(c, i / cols);\n        const rows = cols - i;\n        for (let j = 0; j <= rows; j++) {\n          if (j === 0 && i === cols) {\n            v[i][j] = aj;\n          } else {\n            v[i][j] = aj.clone().lerp(bj, j / rows);\n          }\n        }\n      }\n      for (let i = 0; i < cols; i++) {\n        for (let j = 0; j < 2 * (cols - i) - 1; j++) {\n          const k = Math.floor(j / 2);\n          if (j % 2 === 0) {\n            pushVertex(v[i][k + 1]);\n            pushVertex(v[i + 1][k]);\n            pushVertex(v[i][k]);\n          } else {\n            pushVertex(v[i][k + 1]);\n            pushVertex(v[i + 1][k + 1]);\n            pushVertex(v[i + 1][k]);\n          }\n        }\n      }\n    }\n    function applyRadius(radius2) {\n      const vertex2 = new Vector3();\n      for (let i = 0; i < vertexBuffer.length; i += 3) {\n        vertex2.x = vertexBuffer[i + 0];\n        vertex2.y = vertexBuffer[i + 1];\n        vertex2.z = vertexBuffer[i + 2];\n        vertex2.normalize().multiplyScalar(radius2);\n        vertexBuffer[i + 0] = vertex2.x;\n        vertexBuffer[i + 1] = vertex2.y;\n        vertexBuffer[i + 2] = vertex2.z;\n      }\n    }\n    function generateUVs() {\n      const vertex2 = new Vector3();\n      for (let i = 0; i < vertexBuffer.length; i += 3) {\n        vertex2.x = vertexBuffer[i + 0];\n        vertex2.y = vertexBuffer[i + 1];\n        vertex2.z = vertexBuffer[i + 2];\n        const u = azimuth(vertex2) / 2 / Math.PI + 0.5;\n        const v = inclination(vertex2) / Math.PI + 0.5;\n        uvBuffer.push(u, 1 - v);\n      }\n      correctUVs();\n      correctSeam();\n    }\n    function correctSeam() {\n      for (let i = 0; i < uvBuffer.length; i += 6) {\n        const x0 = uvBuffer[i + 0];\n        const x1 = uvBuffer[i + 2];\n        const x2 = uvBuffer[i + 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[i + 0] += 1;\n          if (x1 < 0.2) uvBuffer[i + 2] += 1;\n          if (x2 < 0.2) uvBuffer[i + 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 i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6) {\n        a.set(vertexBuffer[i + 0], vertexBuffer[i + 1], vertexBuffer[i + 2]);\n        b.set(vertexBuffer[i + 3], vertexBuffer[i + 4], vertexBuffer[i + 5]);\n        c.set(vertexBuffer[i + 6], vertexBuffer[i + 7], vertexBuffer[i + 8]);\n        uvA.set(uvBuffer[j + 0], uvBuffer[j + 1]);\n        uvB.set(uvBuffer[j + 2], uvBuffer[j + 3]);\n        uvC.set(uvBuffer[j + 4], uvBuffer[j + 5]);\n        centroid.copy(a).add(b).add(c).divideScalar(3);\n        const azi = azimuth(centroid);\n        correctUV(uvA, j + 0, a, azi);\n        correctUV(uvB, j + 2, b, azi);\n        correctUV(uvC, j + 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};\nvar DodecahedronGeometry = class _DodecahedronGeometry extends PolyhedronGeometry {\n  constructor(radius = 1, detail = 0) {\n    const t = (1 + Math.sqrt(5)) / 2;\n    const r = 1 / t;\n    const vertices = [\n      // (\u00B11, \u00B11, \u00B11)\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, \u00B11/\u03C6, \u00B1\u03C6)\n      0,\n      -r,\n      -t,\n      0,\n      -r,\n      t,\n      0,\n      r,\n      -t,\n      0,\n      r,\n      t,\n      // (\u00B11/\u03C6, \u00B1\u03C6, 0)\n      -r,\n      -t,\n      0,\n      -r,\n      t,\n      0,\n      r,\n      -t,\n      0,\n      r,\n      t,\n      0,\n      // (\u00B1\u03C6, 0, \u00B11/\u03C6)\n      -t,\n      0,\n      -r,\n      t,\n      0,\n      -r,\n      -t,\n      0,\n      r,\n      t,\n      0,\n      r\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};\nvar _v0 = /* @__PURE__ */ new Vector3();\nvar _v1$1 = /* @__PURE__ */ new Vector3();\nvar _normal = /* @__PURE__ */ new Vector3();\nvar _triangle = /* @__PURE__ */ new Triangle();\nvar 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 i = 0; i < indexCount; i += 3) {\n        if (indexAttr) {\n          indexArr[0] = indexAttr.getX(i);\n          indexArr[1] = indexAttr.getX(i + 1);\n          indexArr[2] = indexAttr.getX(i + 2);\n        } else {\n          indexArr[0] = i;\n          indexArr[1] = i + 1;\n          indexArr[2] = i + 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 j = 0; j < 3; j++) {\n          const jNext = (j + 1) % 3;\n          const vecHash0 = hashes[j];\n          const vecHash1 = hashes[jNext];\n          const v0 = _triangle[vertKeys[j]];\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[j],\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};\nvar 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 i = 0, l = this.holes.length; i < l; i++) {\n      holesPts[i] = this.holes[i].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 i = 0, l = source.holes.length; i < l; i++) {\n      const hole = source.holes[i];\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 i = 0, l = this.holes.length; i < l; i++) {\n      const hole = this.holes[i];\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 i = 0, l = json.holes.length; i < l; i++) {\n      const hole = json.holes[i];\n      this.holes.push(new Path().fromJSON(hole));\n    }\n    return this;\n  }\n};\nvar 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, y, 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 i = dim; i < outerLen; i += dim) {\n        x = data[i];\n        y = data[i + 1];\n        if (x < minX) minX = x;\n        if (y < minY) minY = y;\n        if (x > maxX) maxX = x;\n        if (y > maxY) maxY = y;\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};\nfunction linkedList(data, start, end, dim, clockwise) {\n  let i, last;\n  if (clockwise === signedArea(data, start, end, dim) > 0) {\n    for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n  } else {\n    for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 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 p = start, again;\n  do {\n    again = false;\n    if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n      removeNode(p);\n      p = end = p.prev;\n      if (p === p.next) break;\n      again = true;\n    } else {\n      p = p.next;\n    }\n  } while (again || p !== 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 p = c.next;\n  while (p !== a) {\n    if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n    p = p.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 p = ear.prevZ, n = ear.nextZ;\n  while (p && p.z >= minZ && n && n.z <= maxZ) {\n    if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c && pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n    p = p.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 (p && p.z >= minZ) {\n    if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c && pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n    p = p.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 p = start;\n  do {\n    const a = p.prev, b = p.next.next;\n    if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n      triangles.push(a.i / dim | 0);\n      triangles.push(p.i / dim | 0);\n      triangles.push(b.i / dim | 0);\n      removeNode(p);\n      removeNode(p.next);\n      p = start = b;\n    }\n    p = p.next;\n  } while (p !== start);\n  return filterPoints(p);\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 i, len, start, end, list;\n  for (i = 0, len = holeIndices.length; i < len; i++) {\n    start = holeIndices[i] * dim;\n    end = i < len - 1 ? holeIndices[i + 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 (i = 0; i < queue.length; i++) {\n    outerNode = eliminateHole(queue[i], 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 p = outerNode, qx = -Infinity, m;\n  const hx = hole.x, hy = hole.y;\n  do {\n    if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n      const x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n      if (x <= hx && x > qx) {\n        qx = x;\n        m = p.x < p.next.x ? p : p.next;\n        if (x === hx) return m;\n      }\n    }\n    p = p.next;\n  } while (p !== outerNode);\n  if (!m) return null;\n  const stop = m, mx = m.x, my = m.y;\n  let tanMin = Infinity, tan;\n  p = m;\n  do {\n    if (hx >= p.x && p.x >= mx && hx !== p.x && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n      tan = Math.abs(hy - p.y) / (hx - p.x);\n      if (locallyInside(p, hole) && (tan < tanMin || tan === tanMin && (p.x > m.x || p.x === m.x && sectorContainsSector(m, p)))) {\n        m = p;\n        tanMin = tan;\n      }\n    }\n    p = p.next;\n  } while (p !== stop);\n  return m;\n}\nfunction sectorContainsSector(m, p) {\n  return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\nfunction indexCurve(start, minX, minY, invSize) {\n  let p = start;\n  do {\n    if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n    p.prevZ = p.prev;\n    p.nextZ = p.next;\n    p = p.next;\n  } while (p !== start);\n  p.prevZ.nextZ = null;\n  p.prevZ = null;\n  sortLinked(p);\n}\nfunction sortLinked(list) {\n  let i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1;\n  do {\n    p = list;\n    list = null;\n    tail = null;\n    numMerges = 0;\n    while (p) {\n      numMerges++;\n      q = p;\n      pSize = 0;\n      for (i = 0; i < inSize; i++) {\n        pSize++;\n        q = q.nextZ;\n        if (!q) break;\n      }\n      qSize = inSize;\n      while (pSize > 0 || qSize > 0 && q) {\n        if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n          e = p;\n          p = p.nextZ;\n          pSize--;\n        } else {\n          e = q;\n          q = q.nextZ;\n          qSize--;\n        }\n        if (tail) tail.nextZ = e;\n        else list = e;\n        e.prevZ = tail;\n        tail = e;\n      }\n      p = q;\n    }\n    tail.nextZ = null;\n    inSize *= 2;\n  } while (numMerges > 1);\n  return list;\n}\nfunction zOrder(x, y, minX, minY, invSize) {\n  x = (x - minX) * invSize | 0;\n  y = (y - 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  y = (y | y << 8) & 16711935;\n  y = (y | y << 4) & 252645135;\n  y = (y | y << 2) & 858993459;\n  y = (y | y << 1) & 1431655765;\n  return x | y << 1;\n}\nfunction getLeftmost(start) {\n  let p = start, leftmost = start;\n  do {\n    if (p.x < leftmost.x || p.x === leftmost.x && p.y < leftmost.y) leftmost = p;\n    p = p.next;\n  } while (p !== 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(p, q, r) {\n  return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\nfunction equals(p1, p2) {\n  return p1.x === p2.x && p1.y === p2.y;\n}\nfunction intersects(p1, q1, p2, q2) {\n  const o1 = sign(area(p1, q1, p2));\n  const o2 = sign(area(p1, q1, q2));\n  const o3 = sign(area(p2, q2, p1));\n  const o4 = sign(area(p2, q2, q1));\n  if (o1 !== o2 && o3 !== o4) return true;\n  if (o1 === 0 && onSegment(p1, p2, q1)) return true;\n  if (o2 === 0 && onSegment(p1, q2, q1)) return true;\n  if (o3 === 0 && onSegment(p2, p1, q2)) return true;\n  if (o4 === 0 && onSegment(p2, q1, q2)) return true;\n  return false;\n}\nfunction onSegment(p, q, r) {\n  return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\nfunction sign(num) {\n  return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\nfunction intersectsPolygon(a, b) {\n  let p = a;\n  do {\n    if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && intersects(p, p.next, a, b)) return true;\n    p = p.next;\n  } while (p !== 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 p = a, inside = false;\n  const px2 = (a.x + b.x) / 2, py2 = (a.y + b.y) / 2;\n  do {\n    if (p.y > py2 !== p.next.y > py2 && p.next.y !== p.y && px2 < (p.next.x - p.x) * (py2 - p.y) / (p.next.y - p.y) + p.x)\n      inside = !inside;\n    p = p.next;\n  } while (p !== 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(i, x, y, last) {\n  const p = new Node(i, x, y);\n  if (!last) {\n    p.prev = p;\n    p.next = p;\n  } else {\n    p.next = last.next;\n    p.prev = last;\n    last.next.prev = p;\n    last.next = p;\n  }\n  return p;\n}\nfunction removeNode(p) {\n  p.next.prev = p.prev;\n  p.prev.next = p.next;\n  if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n  if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\nfunction Node(i, x, y) {\n  this.i = i;\n  this.x = x;\n  this.y = y;\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 i = start, j = end - dim; i < end; i += dim) {\n    sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n    j = i;\n  }\n  return sum;\n}\nvar 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 p = n - 1, q = 0; q < n; p = q++) {\n      a += contour[p].x * contour[q].y - contour[q].x * contour[p].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 i = 0; i < holes.length; i++) {\n      holeIndices.push(holeIndex);\n      holeIndex += holes[i].length;\n      addContour(vertices, holes[i]);\n    }\n    const triangles = Earcut.triangulate(vertices, holeIndices);\n    for (let i = 0; i < triangles.length; i += 3) {\n      faces.push(triangles.slice(i, i + 3));\n    }\n    return faces;\n  }\n};\nfunction removeDupEndPts(points) {\n  const l = points.length;\n  if (l > 2 && points[l - 1].equals(points[0])) {\n    points.pop();\n  }\n}\nfunction addContour(vertices, contour) {\n  for (let i = 0; i < contour.length; i++) {\n    vertices.push(contour[i].x);\n    vertices.push(contour[i].y);\n  }\n}\nvar 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 i = 0, l = shapes.length; i < l; i++) {\n      const shape = shapes[i];\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 h = 0, hl = holes.length; h < hl; h++) {\n          const ahole = holes[h];\n          if (ShapeUtils.isClockWise(ahole)) {\n            holes[h] = ahole.reverse();\n          }\n        }\n      }\n      const faces = ShapeUtils.triangulateShape(vertices, holes);\n      const contour = vertices;\n      for (let h = 0, hl = holes.length; h < hl; h++) {\n        const ahole = holes[h];\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 i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i++, j++, k++) {\n        if (j === il) j = 0;\n        if (k === il) k = 0;\n        contourMovements[i] = getBevelVec(contour[i], contour[j], contour[k]);\n      }\n      const holesMovements = [];\n      let oneHoleMovements, verticesMovements = contourMovements.concat();\n      for (let h = 0, hl = holes.length; h < hl; h++) {\n        const ahole = holes[h];\n        oneHoleMovements = [];\n        for (let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i++, j++, k++) {\n          if (j === il) j = 0;\n          if (k === il) k = 0;\n          oneHoleMovements[i] = getBevelVec(ahole[i], ahole[j], ahole[k]);\n        }\n        holesMovements.push(oneHoleMovements);\n        verticesMovements = verticesMovements.concat(oneHoleMovements);\n      }\n      for (let b = 0; b < bevelSegments; b++) {\n        const t = b / bevelSegments;\n        const z = bevelThickness * Math.cos(t * Math.PI / 2);\n        const bs2 = bevelSize * Math.sin(t * Math.PI / 2) + bevelOffset;\n        for (let i = 0, il = contour.length; i < il; i++) {\n          const vert = scalePt2(contour[i], contourMovements[i], bs2);\n          v(vert.x, vert.y, -z);\n        }\n        for (let h = 0, hl = holes.length; h < hl; h++) {\n          const ahole = holes[h];\n          oneHoleMovements = holesMovements[h];\n          for (let i = 0, il = ahole.length; i < il; i++) {\n            const vert = scalePt2(ahole[i], oneHoleMovements[i], bs2);\n            v(vert.x, vert.y, -z);\n          }\n        }\n      }\n      const bs = bevelSize + bevelOffset;\n      for (let i = 0; i < vlen; i++) {\n        const vert = bevelEnabled ? scalePt2(vertices[i], verticesMovements[i], bs) : vertices[i];\n        if (!extrudeByPath) {\n          v(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          v(position2.x, position2.y, position2.z);\n        }\n      }\n      for (let s = 1; s <= steps; s++) {\n        for (let i = 0; i < vlen; i++) {\n          const vert = bevelEnabled ? scalePt2(vertices[i], verticesMovements[i], bs) : vertices[i];\n          if (!extrudeByPath) {\n            v(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            v(position2.x, position2.y, position2.z);\n          }\n        }\n      }\n      for (let b = bevelSegments - 1; b >= 0; b--) {\n        const t = b / bevelSegments;\n        const z = bevelThickness * Math.cos(t * Math.PI / 2);\n        const bs2 = bevelSize * Math.sin(t * Math.PI / 2) + bevelOffset;\n        for (let i = 0, il = contour.length; i < il; i++) {\n          const vert = scalePt2(contour[i], contourMovements[i], bs2);\n          v(vert.x, vert.y, depth + z);\n        }\n        for (let h = 0, hl = holes.length; h < hl; h++) {\n          const ahole = holes[h];\n          oneHoleMovements = holesMovements[h];\n          for (let i = 0, il = ahole.length; i < il; i++) {\n            const vert = scalePt2(ahole[i], oneHoleMovements[i], bs2);\n            if (!extrudeByPath) {\n              v(vert.x, vert.y, depth + z);\n            } else {\n              v(vert.x, vert.y + extrudePts[steps - 1].y, extrudePts[steps - 1].x + z);\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 i = 0; i < flen; i++) {\n            const face = faces[i];\n            f3(face[2] + offset, face[1] + offset, face[0] + offset);\n          }\n          layer = steps + bevelSegments * 2;\n          offset = vlen * layer;\n          for (let i = 0; i < flen; i++) {\n            const face = faces[i];\n            f3(face[0] + offset, face[1] + offset, face[2] + offset);\n          }\n        } else {\n          for (let i = 0; i < flen; i++) {\n            const face = faces[i];\n            f3(face[2], face[1], face[0]);\n          }\n          for (let i = 0; i < flen; i++) {\n            const face = faces[i];\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 h = 0, hl = holes.length; h < hl; h++) {\n          const ahole = holes[h];\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 i = contour2.length;\n        while (--i >= 0) {\n          const j = i;\n          let k = i - 1;\n          if (k < 0) k = 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 + j + slen1, b = layeroffset + k + slen1, c = layeroffset + k + slen2, d = layeroffset + j + slen2;\n            f4(a, b, c, d);\n          }\n        }\n      }\n      function v(x, y, z) {\n        placeholder.push(x);\n        placeholder.push(y);\n        placeholder.push(z);\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 j = 0, jl = data.shapes.length; j < jl; j++) {\n      const shape = shapes[data.shapes[j]];\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};\nvar 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};\nfunction toJSON$1(shapes, options, data) {\n  data.shapes = [];\n  if (Array.isArray(shapes)) {\n    for (let i = 0, l = shapes.length; i < l; i++) {\n      const shape = shapes[i];\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}\nvar IcosahedronGeometry = class _IcosahedronGeometry extends PolyhedronGeometry {\n  constructor(radius = 1, detail = 0) {\n    const t = (1 + Math.sqrt(5)) / 2;\n    const vertices = [\n      -1,\n      t,\n      0,\n      1,\n      t,\n      0,\n      -1,\n      -t,\n      0,\n      1,\n      -t,\n      0,\n      0,\n      -1,\n      t,\n      0,\n      1,\n      t,\n      0,\n      -1,\n      -t,\n      0,\n      1,\n      -t,\n      t,\n      0,\n      -1,\n      t,\n      0,\n      1,\n      -t,\n      0,\n      -1,\n      -t,\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};\nvar 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};\nvar 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 j = 0; j <= phiSegments; j++) {\n      for (let i = 0; i <= thetaSegments; i++) {\n        const segment = thetaStart + i / 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 j = 0; j < phiSegments; j++) {\n      const thetaSegmentLevel = j * (thetaSegments + 1);\n      for (let i = 0; i < thetaSegments; i++) {\n        const segment = i + 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};\nvar 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 i = 0; i < shapes.length; i++) {\n        addShape(shapes[i]);\n        this.addGroup(groupStart, groupCount, i);\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 i = 0, l = shapeHoles.length; i < l; i++) {\n        const shapeHole = shapeHoles[i];\n        if (ShapeUtils.isClockWise(shapeHole) === true) {\n          shapeHoles[i] = shapeHole.reverse();\n        }\n      }\n      const faces = ShapeUtils.triangulateShape(shapeVertices, shapeHoles);\n      for (let i = 0, l = shapeHoles.length; i < l; i++) {\n        const shapeHole = shapeHoles[i];\n        shapeVertices = shapeVertices.concat(shapeHole);\n      }\n      for (let i = 0, l = shapeVertices.length; i < l; i++) {\n        const vertex2 = shapeVertices[i];\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 i = 0, l = faces.length; i < l; i++) {\n        const face = faces[i];\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 j = 0, jl = data.shapes.length; j < jl; j++) {\n      const shape = shapes[data.shapes[j]];\n      geometryShapes.push(shape);\n    }\n    return new _ShapeGeometry(geometryShapes, data.curveSegments);\n  }\n};\nfunction toJSON(shapes, data) {\n  data.shapes = [];\n  if (Array.isArray(shapes)) {\n    for (let i = 0, l = shapes.length; i < l; i++) {\n      const shape = shapes[i];\n      data.shapes.push(shape.uuid);\n    }\n  } else {\n    data.shapes.push(shapes.uuid);\n  }\n  return data;\n}\nvar 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 v = 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 u = ix / widthSegments;\n        vertex2.x = -radius * Math.cos(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength);\n        vertex2.y = radius * Math.cos(thetaStart + v * thetaLength);\n        vertex2.z = radius * Math.sin(phiStart + u * phiLength) * Math.sin(thetaStart + v * 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(u + uOffset, 1 - v);\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};\nvar 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};\nvar 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 j = 0; j <= radialSegments; j++) {\n      for (let i = 0; i <= tubularSegments; i++) {\n        const u = i / tubularSegments * arc;\n        const v = j / radialSegments * Math.PI * 2;\n        vertex2.x = (radius + tube * Math.cos(v)) * Math.cos(u);\n        vertex2.y = (radius + tube * Math.cos(v)) * Math.sin(u);\n        vertex2.z = tube * Math.sin(v);\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n        center.x = radius * Math.cos(u);\n        center.y = radius * Math.sin(u);\n        normal.subVectors(vertex2, center).normalize();\n        normals.push(normal.x, normal.y, normal.z);\n        uvs.push(i / tubularSegments);\n        uvs.push(j / radialSegments);\n      }\n    }\n    for (let j = 1; j <= radialSegments; j++) {\n      for (let i = 1; i <= tubularSegments; i++) {\n        const a = (tubularSegments + 1) * j + i - 1;\n        const b = (tubularSegments + 1) * (j - 1) + i - 1;\n        const c = (tubularSegments + 1) * (j - 1) + i;\n        const d = (tubularSegments + 1) * j + i;\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};\nvar TorusKnotGeometry = class _TorusKnotGeometry extends BufferGeometry {\n  constructor(radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3) {\n    super();\n    this.type = \"TorusKnotGeometry\";\n    this.parameters = {\n      radius,\n      tube,\n      tubularSegments,\n      radialSegments,\n      p,\n      q\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 B = new Vector3();\n    const T = new Vector3();\n    const N = new Vector3();\n    for (let i = 0; i <= tubularSegments; ++i) {\n      const u = i / tubularSegments * p * Math.PI * 2;\n      calculatePositionOnCurve(u, p, q, radius, P1);\n      calculatePositionOnCurve(u + 0.01, p, q, radius, P2);\n      T.subVectors(P2, P1);\n      N.addVectors(P2, P1);\n      B.crossVectors(T, N);\n      N.crossVectors(B, T);\n      B.normalize();\n      N.normalize();\n      for (let j = 0; j <= radialSegments; ++j) {\n        const v = j / radialSegments * Math.PI * 2;\n        const cx = -tube * Math.cos(v);\n        const cy = tube * Math.sin(v);\n        vertex2.x = P1.x + (cx * N.x + cy * B.x);\n        vertex2.y = P1.y + (cx * N.y + cy * B.y);\n        vertex2.z = P1.z + (cx * N.z + cy * B.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(i / tubularSegments);\n        uvs.push(j / radialSegments);\n      }\n    }\n    for (let j = 1; j <= tubularSegments; j++) {\n      for (let i = 1; i <= radialSegments; i++) {\n        const a = (radialSegments + 1) * (j - 1) + (i - 1);\n        const b = (radialSegments + 1) * j + (i - 1);\n        const c = (radialSegments + 1) * j + i;\n        const d = (radialSegments + 1) * (j - 1) + i;\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(u, p2, q2, radius2, position) {\n      const cu = Math.cos(u);\n      const su = Math.sin(u);\n      const quOverP = q2 / p2 * u;\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};\nvar 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 P = 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 i = 0; i < tubularSegments; i++) {\n        generateSegment(i);\n      }\n      generateSegment(closed === false ? tubularSegments : 0);\n      generateUVs();\n      generateIndices();\n    }\n    function generateSegment(i) {\n      P = path.getPointAt(i / tubularSegments, P);\n      const N = frames.normals[i];\n      const B = frames.binormals[i];\n      for (let j = 0; j <= radialSegments; j++) {\n        const v = j / radialSegments * Math.PI * 2;\n        const sin = Math.sin(v);\n        const cos = -Math.cos(v);\n        normal.x = cos * N.x + sin * B.x;\n        normal.y = cos * N.y + sin * B.y;\n        normal.z = cos * N.z + sin * B.z;\n        normal.normalize();\n        normals.push(normal.x, normal.y, normal.z);\n        vertex2.x = P.x + radius * normal.x;\n        vertex2.y = P.y + radius * normal.y;\n        vertex2.z = P.z + radius * normal.z;\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n      }\n    }\n    function generateIndices() {\n      for (let j = 1; j <= tubularSegments; j++) {\n        for (let i = 1; i <= radialSegments; i++) {\n          const a = (radialSegments + 1) * (j - 1) + (i - 1);\n          const b = (radialSegments + 1) * j + (i - 1);\n          const c = (radialSegments + 1) * j + i;\n          const d = (radialSegments + 1) * (j - 1) + i;\n          indices.push(a, b, d);\n          indices.push(b, c, d);\n        }\n      }\n    }\n    function generateUVs() {\n      for (let i = 0; i <= tubularSegments; i++) {\n        for (let j = 0; j <= radialSegments; j++) {\n          uv.x = i / tubularSegments;\n          uv.y = j / 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};\nvar 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 i = groupStart, l = groupStart + groupCount; i < l; i += 3) {\n            for (let j = 0; j < 3; j++) {\n              const index1 = indices.getX(i + j);\n              const index2 = indices.getX(i + (j + 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 i = 0, l = position.count / 3; i < l; i++) {\n          for (let j = 0; j < 3; j++) {\n            const index1 = 3 * i + j;\n            const index2 = 3 * i + (j + 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};\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}\nvar 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});\nvar 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};\nvar RawShaderMaterial = class extends ShaderMaterial {\n  constructor(parameters) {\n    super(parameters);\n    this.isRawShaderMaterial = true;\n    this.type = \"RawShaderMaterial\";\n  }\n};\nvar 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};\nvar 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};\nvar 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};\nvar 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};\nvar 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};\nvar 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};\nvar 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};\nvar 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};\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(i, j) {\n    return times[i] - times[j];\n  }\n  const n = times.length;\n  const result = new Array(n);\n  for (let i = 0; i !== n; ++i) result[i] = i;\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 i = 0, dstOffset = 0; dstOffset !== nValues; ++i) {\n    const srcOffset = order[i] * stride;\n    for (let j = 0; j !== stride; ++j) {\n      result[dstOffset++] = values[srcOffset + j];\n    }\n  }\n  return result;\n}\nfunction flattenJSON(jsonKeys, times, values, valuePropertyName) {\n  let i = 1, key = jsonKeys[0];\n  while (key !== void 0 && key[valuePropertyName] === void 0) {\n    key = jsonKeys[i++];\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[i++];\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[i++];\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[i++];\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 i = 0; i < clip.tracks.length; ++i) {\n    const track = clip.tracks[i];\n    const valueSize = track.getValueSize();\n    const times = [];\n    const values = [];\n    for (let j = 0; j < track.times.length; ++j) {\n      const frame = track.times[j] * fps;\n      if (frame < startFrame || frame >= endFrame) continue;\n      times.push(track.times[j]);\n      for (let k = 0; k < valueSize; ++k) {\n        values.push(track.values[j * valueSize + k]);\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 i = 0; i < clip.tracks.length; ++i) {\n    if (minStartTime > clip.tracks[i].times[0]) {\n      minStartTime = clip.tracks[i].times[0];\n    }\n  }\n  for (let i = 0; i < clip.tracks.length; ++i) {\n    clip.tracks[i].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 i = 0; i < numTracks; ++i) {\n    const referenceTrack = referenceClip.tracks[i];\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 j = 0; j < numTimes; ++j) {\n      const valueStart = j * 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 k = 0; k < valueEnd; ++k) {\n          targetTrack.values[valueStart + k] -= referenceValue[k];\n        }\n      }\n    }\n  }\n  targetClip.blendMode = AdditiveAnimationBlendMode;\n  return targetClip;\n}\nvar AnimationUtils = {\n  convertArray,\n  isTypedArray,\n  getKeyframeOrder,\n  sortedArray,\n  flattenJSON,\n  subclip,\n  makeClipAdditive\n};\nvar 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(t) {\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 (!(t < t1)) {\n            for (let giveUpAt = i1 + 2; ; ) {\n              if (t1 === void 0) {\n                if (t < 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 (t < t1) {\n                break seek;\n              }\n            }\n            right = pp.length;\n            break linear_scan;\n          }\n          if (!(t >= t0)) {\n            const t1global = pp[1];\n            if (t < 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 (t >= 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 (t < 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, t, 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 i = 0; i !== stride; ++i) {\n      result[i] = values[offset + i];\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};\nvar 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, t, 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, p = (t - t0) / (t1 - t0), pp = p * p, ppp = pp * p;\n    const sP = -wP * ppp + 2 * wP * pp - wP * p;\n    const s0 = (1 + wP) * ppp + (-1.5 - 2 * wP) * pp + (-0.5 + wP) * p + 1;\n    const s1 = (-1 - wN) * ppp + (1.5 + wN) * pp + 0.5 * p;\n    const sN = wN * ppp - wN * pp;\n    for (let i = 0; i !== stride; ++i) {\n      result[i] = sP * values[oP + i] + s0 * values[o0 + i] + s1 * values[o1 + i] + sN * values[oN + i];\n    }\n    return result;\n  }\n};\nvar LinearInterpolant = class extends Interpolant {\n  constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n    super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n  }\n  interpolate_(i1, t0, t, t1) {\n    const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, offset1 = i1 * stride, offset0 = offset1 - stride, weight1 = (t - t0) / (t1 - t0), weight0 = 1 - weight1;\n    for (let i = 0; i !== stride; ++i) {\n      result[i] = values[offset0 + i] * weight0 + values[offset1 + i] * weight1;\n    }\n    return result;\n  }\n};\nvar 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};\nvar 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 i = 0, n = times.length; i !== n; ++i) {\n        times[i] += 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 i = 0, n = times.length; i !== n; ++i) {\n        times[i] *= 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 i = 0; i !== nKeys; i++) {\n      const currTime = times[i];\n      if (typeof currTime === \"number\" && isNaN(currTime)) {\n        console.error(\"THREE.KeyframeTrack: Time is not a valid number.\", this, i, currTime);\n        valid = false;\n        break;\n      }\n      if (prevTime !== null && prevTime > currTime) {\n        console.error(\"THREE.KeyframeTrack: Out of order keys.\", this, i, currTime, prevTime);\n        valid = false;\n        break;\n      }\n      prevTime = currTime;\n    }\n    if (values !== void 0) {\n      if (isTypedArray(values)) {\n        for (let i = 0, n = values.length; i !== n; ++i) {\n          const value = values[i];\n          if (isNaN(value)) {\n            console.error(\"THREE.KeyframeTrack: Value is not a valid number.\", this, i, 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 i = 1; i < lastIndex; ++i) {\n      let keep = false;\n      const time = times[i];\n      const timeNext = times[i + 1];\n      if (time !== timeNext && (i !== 1 || time !== times[0])) {\n        if (!smoothInterpolation) {\n          const offset = i * stride, offsetP = offset - stride, offsetN = offset + stride;\n          for (let j = 0; j !== stride; ++j) {\n            const value = values[offset + j];\n            if (value !== values[offsetP + j] || value !== values[offsetN + j]) {\n              keep = true;\n              break;\n            }\n          }\n        } else {\n          keep = true;\n        }\n      }\n      if (keep) {\n        if (i !== writeIndex) {\n          times[writeIndex] = times[i];\n          const readOffset = i * stride, writeOffset = writeIndex * stride;\n          for (let j = 0; j !== stride; ++j) {\n            values[writeOffset + j] = values[readOffset + j];\n          }\n        }\n        ++writeIndex;\n      }\n    }\n    if (lastIndex > 0) {\n      times[writeIndex] = times[lastIndex];\n      for (let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++j) {\n        values[writeOffset + j] = values[readOffset + j];\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};\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nvar 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};\nBooleanKeyframeTrack.prototype.ValueTypeName = \"bool\";\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = void 0;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0;\nvar ColorKeyframeTrack = class extends KeyframeTrack {\n};\nColorKeyframeTrack.prototype.ValueTypeName = \"color\";\nvar NumberKeyframeTrack = class extends KeyframeTrack {\n};\nNumberKeyframeTrack.prototype.ValueTypeName = \"number\";\nvar QuaternionLinearInterpolant = class extends Interpolant {\n  constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n    super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n  }\n  interpolate_(i1, t0, t, t1) {\n    const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, alpha = (t - 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};\nvar QuaternionKeyframeTrack = class extends KeyframeTrack {\n  InterpolantFactoryMethodLinear(result) {\n    return new QuaternionLinearInterpolant(this.times, this.values, this.getValueSize(), result);\n  }\n};\nQuaternionKeyframeTrack.prototype.ValueTypeName = \"quaternion\";\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0;\nvar 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};\nStringKeyframeTrack.prototype.ValueTypeName = \"string\";\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = void 0;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0;\nvar VectorKeyframeTrack = class extends KeyframeTrack {\n};\nVectorKeyframeTrack.prototype.ValueTypeName = \"vector\";\nvar 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 i = 0, n = jsonTracks.length; i !== n; ++i) {\n      tracks.push(parseKeyframeTrack(jsonTracks[i]).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 i = 0, n = clipTracks.length; i !== n; ++i) {\n      tracks.push(KeyframeTrack.toJSON(clipTracks[i]));\n    }\n    return json;\n  }\n  static CreateFromMorphTargetSequence(name, morphTargetSequence, fps, noLoop) {\n    const numMorphTargets = morphTargetSequence.length;\n    const tracks = [];\n    for (let i = 0; i < numMorphTargets; i++) {\n      let times = [];\n      let values = [];\n      times.push(\n        (i + numMorphTargets - 1) % numMorphTargets,\n        i,\n        (i + 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[i].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 i = 0; i < clipArray.length; i++) {\n      if (clipArray[i].name === name) {\n        return clipArray[i];\n      }\n    }\n    return null;\n  }\n  static CreateClipsFromMorphTargetSequences(morphTargets, fps, noLoop) {\n    const animationToMorphTargets = {};\n    const pattern = /^([\\w-]*?)([\\d]+)$/;\n    for (let i = 0, il = morphTargets.length; i < il; i++) {\n      const morphTarget = morphTargets[i];\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 h = 0; h < hierarchyTracks.length; h++) {\n      const animationKeys = hierarchyTracks[h].keys;\n      if (!animationKeys || animationKeys.length === 0) continue;\n      if (animationKeys[0].morphTargets) {\n        const morphTargetNames = {};\n        let k;\n        for (k = 0; k < animationKeys.length; k++) {\n          if (animationKeys[k].morphTargets) {\n            for (let m = 0; m < animationKeys[k].morphTargets.length; m++) {\n              morphTargetNames[animationKeys[k].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[k].morphTargets.length; ++m) {\n            const animationKey = animationKeys[k];\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[h].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 i = 0, n = tracks.length; i !== n; ++i) {\n      const track = this.tracks[i];\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 i = 0; i < this.tracks.length; i++) {\n      this.tracks[i].trim(0, this.duration);\n    }\n    return this;\n  }\n  validate() {\n    let valid = true;\n    for (let i = 0; i < this.tracks.length; i++) {\n      valid = valid && this.tracks[i].validate();\n    }\n    return valid;\n  }\n  optimize() {\n    for (let i = 0; i < this.tracks.length; i++) {\n      this.tracks[i].optimize();\n    }\n    return this;\n  }\n  clone() {\n    const tracks = [];\n    for (let i = 0; i < this.tracks.length; i++) {\n      tracks.push(this.tracks[i].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};\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}\nvar 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};\nvar 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 i = 0, l = handlers.length; i < l; i += 2) {\n        const regex = handlers[i];\n        const loader = handlers[i + 1];\n        if (regex.global) regex.lastIndex = 0;\n        if (regex.test(file)) {\n          return loader;\n        }\n      }\n      return null;\n    };\n  }\n};\nvar DefaultLoadingManager = /* @__PURE__ */ new LoadingManager();\nvar 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(resolve, reject) {\n      scope.load(url, resolve, 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};\nLoader.DEFAULT_MATERIAL_NAME = \"__DEFAULT\";\nvar loading = {};\nvar HttpError = class extends Error {\n  constructor(message, response) {\n    super(message);\n    this.response = response;\n  }\n};\nvar 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 i = 0, il = callbacks.length; i < il; i++) {\n                    const callback = callbacks[i];\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 i = 0, il = callbacks.length; i < il; i++) {\n        const callback = callbacks[i];\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 i = 0, il = callbacks.length; i < il; i++) {\n        const callback = callbacks[i];\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};\nvar 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 i = 0; i < json.length; i++) {\n      const clip = AnimationClip.parse(json[i]);\n      animations.push(clip);\n    }\n    return animations;\n  }\n};\nvar 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(i) {\n      loader.load(url[i], function(buffer) {\n        const texDatas = scope.parse(buffer, true);\n        images[i] = {\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 i = 0, il = url.length; i < il; ++i) {\n        loadTexture(i);\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 f = 0; f < faces; f++) {\n            images[f] = { mipmaps: [] };\n            for (let i = 0; i < texDatas.mipmapCount; i++) {\n              images[f].mipmaps.push(texDatas.mipmaps[f * texDatas.mipmapCount + i]);\n              images[f].format = texDatas.format;\n              images[f].width = texDatas.width;\n              images[f].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};\nvar 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};\nvar 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(i) {\n      loader.load(urls[i], function(image) {\n        texture.images[i] = 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 i = 0; i < urls.length; ++i) {\n      loadTexture(i);\n    }\n    return texture;\n  }\n};\nvar 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 (error) {\n        if (onError !== void 0) {\n          onError(error);\n        } else {\n          console.error(error);\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};\nvar 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};\nvar 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};\nvar 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};\nvar _projScreenMatrix$1 = /* @__PURE__ */ new Matrix4();\nvar _lightPositionWorld$1 = /* @__PURE__ */ new Vector3();\nvar _lookTarget$1 = /* @__PURE__ */ new Vector3();\nvar 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};\nvar 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};\nvar 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};\nvar _projScreenMatrix = /* @__PURE__ */ new Matrix4();\nvar _lightPositionWorld = /* @__PURE__ */ new Vector3();\nvar _lookTarget = /* @__PURE__ */ new Vector3();\nvar 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};\nvar 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};\nvar DirectionalLightShadow = class extends LightShadow {\n  constructor() {\n    super(new OrthographicCamera(-5, 5, 5, -5, 0.5, 500));\n    this.isDirectionalLightShadow = true;\n  }\n};\nvar 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};\nvar AmbientLight = class extends Light {\n  constructor(color, intensity) {\n    super(color, intensity);\n    this.isAmbientLight = true;\n    this.type = \"AmbientLight\";\n  }\n};\nvar 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};\nvar SphericalHarmonics3 = class {\n  constructor() {\n    this.isSphericalHarmonics3 = true;\n    this.coefficients = [];\n    for (let i = 0; i < 9; i++) {\n      this.coefficients.push(new Vector3());\n    }\n  }\n  set(coefficients) {\n    for (let i = 0; i < 9; i++) {\n      this.coefficients[i].copy(coefficients[i]);\n    }\n    return this;\n  }\n  zero() {\n    for (let i = 0; i < 9; i++) {\n      this.coefficients[i].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, target) {\n    const x = normal.x, y = normal.y, z = normal.z;\n    const coeff = this.coefficients;\n    target.copy(coeff[0]).multiplyScalar(0.282095);\n    target.addScaledVector(coeff[1], 0.488603 * y);\n    target.addScaledVector(coeff[2], 0.488603 * z);\n    target.addScaledVector(coeff[3], 0.488603 * x);\n    target.addScaledVector(coeff[4], 1.092548 * (x * y));\n    target.addScaledVector(coeff[5], 1.092548 * (y * z));\n    target.addScaledVector(coeff[6], 0.315392 * (3 * z * z - 1));\n    target.addScaledVector(coeff[7], 1.092548 * (x * z));\n    target.addScaledVector(coeff[8], 0.546274 * (x * x - y * y));\n    return target;\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, target) {\n    const x = normal.x, y = normal.y, z = normal.z;\n    const coeff = this.coefficients;\n    target.copy(coeff[0]).multiplyScalar(0.886227);\n    target.addScaledVector(coeff[1], 2 * 0.511664 * y);\n    target.addScaledVector(coeff[2], 2 * 0.511664 * z);\n    target.addScaledVector(coeff[3], 2 * 0.511664 * x);\n    target.addScaledVector(coeff[4], 2 * 0.429043 * x * y);\n    target.addScaledVector(coeff[5], 2 * 0.429043 * y * z);\n    target.addScaledVector(coeff[6], 0.743125 * z * z - 0.247708);\n    target.addScaledVector(coeff[7], 2 * 0.429043 * x * z);\n    target.addScaledVector(coeff[8], 0.429043 * (x * x - y * y));\n    return target;\n  }\n  add(sh) {\n    for (let i = 0; i < 9; i++) {\n      this.coefficients[i].add(sh.coefficients[i]);\n    }\n    return this;\n  }\n  addScaledSH(sh, s) {\n    for (let i = 0; i < 9; i++) {\n      this.coefficients[i].addScaledVector(sh.coefficients[i], s);\n    }\n    return this;\n  }\n  scale(s) {\n    for (let i = 0; i < 9; i++) {\n      this.coefficients[i].multiplyScalar(s);\n    }\n    return this;\n  }\n  lerp(sh, alpha) {\n    for (let i = 0; i < 9; i++) {\n      this.coefficients[i].lerp(sh.coefficients[i], alpha);\n    }\n    return this;\n  }\n  equals(sh) {\n    for (let i = 0; i < 9; i++) {\n      if (!this.coefficients[i].equals(sh.coefficients[i])) {\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 i = 0; i < 9; i++) {\n      coefficients[i].fromArray(array, offset + i * 3);\n    }\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    const coefficients = this.coefficients;\n    for (let i = 0; i < 9; i++) {\n      coefficients[i].toArray(array, offset + i * 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, y = normal.y, z = normal.z;\n    shBasis[0] = 0.282095;\n    shBasis[1] = 0.488603 * y;\n    shBasis[2] = 0.488603 * z;\n    shBasis[3] = 0.488603 * x;\n    shBasis[4] = 1.092548 * x * y;\n    shBasis[5] = 1.092548 * y * z;\n    shBasis[6] = 0.315392 * (3 * z * z - 1);\n    shBasis[7] = 1.092548 * x * z;\n    shBasis[8] = 0.546274 * (x * x - y * y);\n  }\n};\nvar 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};\nvar 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};\nvar 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 i = 0, il = array.length; i < il; i++) {\n      s += String.fromCharCode(array[i]);\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};\nvar 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};\nvar 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 i = 0, il = attributeArray.length; i < il; i++) {\n          const attribute = attributeArray[i];\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 i = 0, n = groups.length; i !== n; ++i) {\n        const group = groups[i];\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};\nvar 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 (error) {\n        if (onError !== void 0) onError(error);\n        console.error(\"THREE:ObjectLoader: Can't parse \" + url + \".\", error.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 i = 0, l = json.length; i < l; i++) {\n        const shape = new Shape().fromJSON(json[i]);\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 i = 0, l = json.length; i < l; i++) {\n        const skeleton = new Skeleton().fromJSON(json[i], 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 i = 0, l = json.length; i < l; i++) {\n        let geometry;\n        const data = json[i];\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 i = 0, l = json.length; i < l; i++) {\n        const data = json[i];\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 i = 0; i < json.length; i++) {\n        const data = json[i];\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 i = 0, il = json.length; i < il; i++) {\n        const image = json[i];\n        const url = image.url;\n        if (Array.isArray(url)) {\n          const imageArray = [];\n          for (let j = 0, jl = url.length; j < jl; j++) {\n            const currentUrl = url[j];\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 i = 0, il = json.length; i < il; i++) {\n          const image = json[i];\n          const url = image.url;\n          if (Array.isArray(url)) {\n            const imageArray = [];\n            for (let j = 0, jl = url.length; j < jl; j++) {\n              const currentUrl = url[j];\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 i = 0, l = json.length; i < l; i++) {\n        const data = json[i];\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 i = 0, l = name.length; i < l; i++) {\n          const uuid = name[i];\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 i = 0; i < children.length; i++) {\n        object.add(this.parseObject(children[i], geometries, materials, textures, animations));\n      }\n    }\n    if (data.animations !== void 0) {\n      const objectAnimations = data.animations;\n      for (let i = 0; i < objectAnimations.length; i++) {\n        const uuid = objectAnimations[i];\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 l = 0; l < levels.length; l++) {\n        const level = levels[l];\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 target = object.getObjectByProperty(\"uuid\", uuid);\n        if (target !== void 0) {\n          child.target = target;\n        } else {\n          child.target = new Object3D();\n        }\n      }\n    });\n  }\n};\nvar TEXTURE_MAPPING = {\n  UVMapping,\n  CubeReflectionMapping,\n  CubeRefractionMapping,\n  EquirectangularReflectionMapping,\n  EquirectangularRefractionMapping,\n  CubeUVReflectionMapping\n};\nvar TEXTURE_WRAPPING = {\n  RepeatWrapping,\n  ClampToEdgeWrapping,\n  MirroredRepeatWrapping\n};\nvar TEXTURE_FILTER = {\n  NearestFilter,\n  NearestMipmapNearestFilter,\n  NearestMipmapLinearFilter,\n  LinearFilter,\n  LinearMipmapNearestFilter,\n  LinearMipmapLinearFilter\n};\nvar 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};\nvar _context;\nvar 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};\nvar 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 context = AudioContext.getContext();\n        context.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};\nvar _eyeRight = /* @__PURE__ */ new Matrix4();\nvar _eyeLeft = /* @__PURE__ */ new Matrix4();\nvar _projectionMatrix = /* @__PURE__ */ new Matrix4();\nvar 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};\nvar 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};\nfunction now() {\n  return performance.now();\n}\nvar _position$1 = /* @__PURE__ */ new Vector3();\nvar _quaternion$1 = /* @__PURE__ */ new Quaternion();\nvar _scale$1 = /* @__PURE__ */ new Vector3();\nvar _orientation$1 = /* @__PURE__ */ new Vector3();\nvar 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};\nvar 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 i = 1, l = this.filters.length; i < l; i++) {\n        this.filters[i - 1].connect(this.filters[i]);\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 i = 1, l = this.filters.length; i < l; i++) {\n        this.filters[i - 1].disconnect(this.filters[i]);\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};\nvar _position = /* @__PURE__ */ new Vector3();\nvar _quaternion = /* @__PURE__ */ new Quaternion();\nvar _scale = /* @__PURE__ */ new Vector3();\nvar _orientation = /* @__PURE__ */ new Vector3();\nvar 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};\nvar 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 i = 0; i < data.length; i++) {\n      value += data[i];\n    }\n    return value / data.length;\n  }\n};\nvar 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 i = 0; i !== stride; ++i) {\n        buffer[offset + i] = buffer[i];\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 i = stride, e = stride + stride; i !== e; ++i) {\n      if (buffer[i] !== buffer[i + 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 i = stride, e = originalValueOffset; i !== e; ++i) {\n      buffer[i] = buffer[originalValueOffset + i % 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 i = startIndex; i < endIndex; i++) {\n      this.buffer[i] = 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 i = 0; i < this.valueSize; i++) {\n      this.buffer[targetIndex + i] = this.buffer[startIndex + i];\n    }\n  }\n  // mix functions\n  _select(buffer, dstOffset, srcOffset, t, stride) {\n    if (t >= 0.5) {\n      for (let i = 0; i !== stride; ++i) {\n        buffer[dstOffset + i] = buffer[srcOffset + i];\n      }\n    }\n  }\n  _slerp(buffer, dstOffset, srcOffset, t) {\n    Quaternion.slerpFlat(buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t);\n  }\n  _slerpAdditive(buffer, dstOffset, srcOffset, t, 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, t);\n  }\n  _lerp(buffer, dstOffset, srcOffset, t, stride) {\n    const s = 1 - t;\n    for (let i = 0; i !== stride; ++i) {\n      const j = dstOffset + i;\n      buffer[j] = buffer[j] * s + buffer[srcOffset + i] * t;\n    }\n  }\n  _lerpAdditive(buffer, dstOffset, srcOffset, t, stride) {\n    for (let i = 0; i !== stride; ++i) {\n      const j = dstOffset + i;\n      buffer[j] = buffer[j] + buffer[srcOffset + i] * t;\n    }\n  }\n};\nvar _RESERVED_CHARS_RE = \"\\\\[\\\\]\\\\.:\\\\/\";\nvar _reservedRe = new RegExp(\"[\" + _RESERVED_CHARS_RE + \"]\", \"g\");\nvar _wordChar = \"[^\" + _RESERVED_CHARS_RE + \"]\";\nvar _wordCharOrDot = \"[^\" + _RESERVED_CHARS_RE.replace(\"\\\\.\", \"\") + \"]\";\nvar _directoryRe = /* @__PURE__ */ /((?:WC+[\\/:])*)/.source.replace(\"WC\", _wordChar);\nvar _nodeRe = /* @__PURE__ */ /(WCOD+)?/.source.replace(\"WCOD\", _wordCharOrDot);\nvar _objectRe = /* @__PURE__ */ /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace(\"WC\", _wordChar);\nvar _propertyRe = /* @__PURE__ */ /\\.(WC+)(?:\\[(.+)\\])?/.source.replace(\"WC\", _wordChar);\nvar _trackRe = new RegExp(\n  \"^\" + _directoryRe + _nodeRe + _objectRe + _propertyRe + \"$\"\n);\nvar _supportedObjectNames = [\"material\", \"materials\", \"bones\", \"map\"];\nvar 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 i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) {\n      bindings[i].setValue(array, offset);\n    }\n  }\n  bind() {\n    const bindings = this._bindings;\n    for (let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) {\n      bindings[i].bind();\n    }\n  }\n  unbind() {\n    const bindings = this._bindings;\n    for (let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) {\n      bindings[i].unbind();\n    }\n  }\n};\nvar 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 i = 0; i < children.length; i++) {\n          const childNode = children[i];\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 i = 0, n = source.length; i !== n; ++i) {\n      buffer[offset++] = source[i];\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 i = 0, n = dest.length; i !== n; ++i) {\n      dest[i] = buffer[offset++];\n    }\n  }\n  _setValue_array_setNeedsUpdate(buffer, offset) {\n    const dest = this.resolvedProperty;\n    for (let i = 0, n = dest.length; i !== n; ++i) {\n      dest[i] = buffer[offset++];\n    }\n    this.targetObject.needsUpdate = true;\n  }\n  _setValue_array_setMatrixWorldNeedsUpdate(buffer, offset) {\n    const dest = this.resolvedProperty;\n    for (let i = 0, n = dest.length; i !== n; ++i) {\n      dest[i] = 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 i = 0; i < targetObject.length; i++) {\n            if (targetObject[i].name === objectIndex) {\n              objectIndex = i;\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};\nPropertyBinding.Composite = Composite;\nPropertyBinding.prototype.BindingType = {\n  Direct: 0,\n  EntireArray: 1,\n  ArrayElement: 2,\n  HasFromToArray: 3\n};\nPropertyBinding.prototype.Versioning = {\n  None: 0,\n  NeedsUpdate: 1,\n  MatrixWorldNeedsUpdate: 2\n};\nPropertyBinding.prototype.GetterByBindingType = [\n  PropertyBinding.prototype._getValue_direct,\n  PropertyBinding.prototype._getValue_array,\n  PropertyBinding.prototype._getValue_arrayElement,\n  PropertyBinding.prototype._getValue_toArray\n];\nPropertyBinding.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];\nvar 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 i = 0, n = arguments.length; i !== n; ++i) {\n      indices[arguments[i].uuid] = i;\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 i = 0, n = arguments.length; i !== n; ++i) {\n      const object = arguments[i], 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 j = 0, m = nBindings; j !== m; ++j) {\n          bindings[j].push(new PropertyBinding(object, paths[j], parsedPaths[j]));\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 j = 0, m = nBindings; j !== m; ++j) {\n          const bindingsForPath = bindings[j], lastCached = bindingsForPath[firstActiveIndex];\n          let binding = bindingsForPath[index];\n          bindingsForPath[index] = lastCached;\n          if (binding === void 0) {\n            binding = new PropertyBinding(object, paths[j], parsedPaths[j]);\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 i = 0, n = arguments.length; i !== n; ++i) {\n      const object = arguments[i], 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 j = 0, m = nBindings; j !== m; ++j) {\n          const bindingsForPath = bindings[j], 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 i = 0, n = arguments.length; i !== n; ++i) {\n      const object = arguments[i], 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 j = 0, m = nBindings; j !== m; ++j) {\n            const bindingsForPath = bindings[j], 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 j = 0, m = nBindings; j !== m; ++j) {\n            const bindingsForPath = bindings[j];\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 i = nCachedObjects, n = objects.length; i !== n; ++i) {\n      const object = objects[i];\n      bindingsForPath[i] = 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};\nvar 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 i = 0; i !== nTracks; ++i) {\n      const interpolant = tracks[i].createInterpolant(null);\n      interpolants[i] = 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 j = 0, m = interpolants.length; j !== m; ++j) {\n            interpolants[j].evaluate(clipTime);\n            propertyMixers[j].accumulateAdditive(weight);\n          }\n          break;\n        case NormalAnimationBlendMode:\n        default:\n          for (let j = 0, m = interpolants.length; j !== m; ++j) {\n            interpolants[j].evaluate(clipTime);\n            propertyMixers[j].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};\nvar _controlInterpolantsResultBuffer = new Float32Array(1);\nvar 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 i = 0; i !== nTracks; ++i) {\n      const track = tracks[i], trackName = track.name;\n      let binding = bindingsByName[trackName];\n      if (binding !== void 0) {\n        ++binding.referenceCount;\n        bindings[i] = binding;\n      } else {\n        binding = bindings[i];\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[i].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[i] = binding;\n      }\n      interpolants[i].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 i = 0, n = bindings.length; i !== n; ++i) {\n        const binding = bindings[i];\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 i = 0, n = bindings.length; i !== n; ++i) {\n        const binding = bindings[i];\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 i = 0, n = bindings.length; i !== n; ++i) {\n      const binding = bindings[i];\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 i = nActions - 1; i >= 0; --i) {\n      actions[i].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 i = 0; i !== nActions; ++i) {\n      const action = actions[i];\n      action._update(time, deltaTime, timeDirection, accuIndex);\n    }\n    const bindings = this._bindings, nBindings = this._nActiveBindings;\n    for (let i = 0; i !== nBindings; ++i) {\n      bindings[i].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 i = 0; i < this._actions.length; i++) {\n      this._actions[i].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 i = 0, n = actionsToRemove.length; i !== n; ++i) {\n        const action = actionsToRemove[i];\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};\nvar 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};\nvar _id = 0;\nvar 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 i = 0, l = uniformsSource.length; i < l; i++) {\n      const uniforms = Array.isArray(uniformsSource[i]) ? uniformsSource[i] : [uniformsSource[i]];\n      for (let j = 0; j < uniforms.length; j++) {\n        this.uniforms.push(uniforms[j].clone());\n      }\n    }\n    return this;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n};\nvar 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};\nvar 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};\nvar _matrix = /* @__PURE__ */ new Matrix4();\nvar 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 i = 0, l = objects.length; i < l; i++) {\n      intersect(objects[i], this, intersects2, recursive);\n    }\n    intersects2.sort(ascSort);\n    return intersects2;\n  }\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 i = 0, l = children.length; i < l; i++) {\n      intersect(children[i], raycaster, intersects2, true);\n    }\n  }\n}\nvar 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(v) {\n    return this.setFromCartesianCoords(v.x, v.y, v.z);\n  }\n  setFromCartesianCoords(x, y, z) {\n    this.radius = Math.sqrt(x * x + y * y + z * z);\n    if (this.radius === 0) {\n      this.theta = 0;\n      this.phi = 0;\n    } else {\n      this.theta = Math.atan2(x, z);\n      this.phi = Math.acos(clamp(y / this.radius, -1, 1));\n    }\n    return this;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n};\nvar Cylindrical = class {\n  constructor(radius = 1, theta = 0, y = 0) {\n    this.radius = radius;\n    this.theta = theta;\n    this.y = y;\n    return this;\n  }\n  set(radius, theta, y) {\n    this.radius = radius;\n    this.theta = theta;\n    this.y = y;\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(v) {\n    return this.setFromCartesianCoords(v.x, v.y, v.z);\n  }\n  setFromCartesianCoords(x, y, z) {\n    this.radius = Math.sqrt(x * x + z * z);\n    this.theta = Math.atan2(x, z);\n    this.y = y;\n    return this;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n};\nvar 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 i = 0; i < 4; i++) {\n      this.elements[i] = array[i + 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};\nvar _vector$4 = /* @__PURE__ */ new Vector2();\nvar 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 i = 0, il = points.length; i < il; i++) {\n      this.expandByPoint(points[i]);\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(target) {\n    return this.isEmpty() ? target.set(0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5);\n  }\n  getSize(target) {\n    return this.isEmpty() ? target.set(0, 0) : target.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, target) {\n    return target.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, target) {\n    return target.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};\nvar _startP = /* @__PURE__ */ new Vector3();\nvar _startEnd = /* @__PURE__ */ new Vector3();\nvar 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(target) {\n    return target.addVectors(this.start, this.end).multiplyScalar(0.5);\n  }\n  delta(target) {\n    return target.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(t, target) {\n    return this.delta(target).multiplyScalar(t).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 t = startEnd_startP / startEnd2;\n    if (clampToLine) {\n      t = clamp(t, 0, 1);\n    }\n    return t;\n  }\n  closestPointToPoint(point, clampToLine, target) {\n    const t = this.closestPointToPointParameter(point, clampToLine);\n    return this.delta(target).multiplyScalar(t).add(this.start);\n  }\n  applyMatrix4(matrix) {\n    this.start.applyMatrix4(matrix);\n    this.end.applyMatrix4(matrix);\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};\nvar _vector$3 = /* @__PURE__ */ new Vector3();\nvar 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 i = 0, j = 1, l = 32; i < l; i++, j++) {\n      const p1 = i / l * Math.PI * 2;\n      const p2 = j / l * Math.PI * 2;\n      positions.push(\n        Math.cos(p1),\n        Math.sin(p1),\n        1,\n        Math.cos(p2),\n        Math.sin(p2),\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};\nvar _vector$2 = /* @__PURE__ */ new Vector3();\nvar _boneMatrix = /* @__PURE__ */ new Matrix4();\nvar _matrixWorldInv = /* @__PURE__ */ new Matrix4();\nvar 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 i = 0; i < bones.length; i++) {\n      const bone = bones[i];\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 i = 0, j = 0; i < bones.length; i++) {\n      const bone = bones[i];\n      if (bone.parent && bone.parent.isBone) {\n        _boneMatrix.multiplyMatrices(_matrixWorldInv, bone.matrixWorld);\n        _vector$2.setFromMatrixPosition(_boneMatrix);\n        position.setXYZ(j, _vector$2.x, _vector$2.y, _vector$2.z);\n        _boneMatrix.multiplyMatrices(_matrixWorldInv, bone.parent.matrixWorld);\n        _vector$2.setFromMatrixPosition(_boneMatrix);\n        position.setXYZ(j + 1, _vector$2.x, _vector$2.y, _vector$2.z);\n        j += 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};\nfunction getBoneList(object) {\n  const boneList = [];\n  if (object.isBone === true) {\n    boneList.push(object);\n  }\n  for (let i = 0; i < object.children.length; i++) {\n    boneList.push.apply(boneList, getBoneList(object.children[i]));\n  }\n  return boneList;\n}\nvar 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};\nvar _vector$1 = /* @__PURE__ */ new Vector3();\nvar _color1 = /* @__PURE__ */ new Color();\nvar _color2 = /* @__PURE__ */ new Color();\nvar 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 i = 0, l = colors.count; i < l; i++) {\n        const color = i < l / 2 ? _color1 : _color2;\n        colors.setXYZ(i, 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};\nvar 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 i = 0, j = 0, k = -halfSize; i <= divisions; i++, k += step) {\n      vertices.push(-halfSize, 0, k, halfSize, 0, k);\n      vertices.push(k, 0, -halfSize, k, 0, halfSize);\n      const color = i === center ? color1 : color2;\n      color.toArray(colors, j);\n      j += 3;\n      color.toArray(colors, j);\n      j += 3;\n      color.toArray(colors, j);\n      j += 3;\n      color.toArray(colors, j);\n      j += 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};\nvar 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 i = 0; i < sectors; i++) {\n        const v = i / sectors * (Math.PI * 2);\n        const x = Math.sin(v) * radius;\n        const z = Math.cos(v) * radius;\n        vertices.push(0, 0, 0);\n        vertices.push(x, 0, z);\n        const color = i & 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 i = 0; i < rings; i++) {\n      const color = i & 1 ? color1 : color2;\n      const r = radius - radius / rings * i;\n      for (let j = 0; j < divisions; j++) {\n        let v = j / divisions * (Math.PI * 2);\n        let x = Math.sin(v) * r;\n        let z = Math.cos(v) * r;\n        vertices.push(x, 0, z);\n        colors.push(color.r, color.g, color.b);\n        v = (j + 1) / divisions * (Math.PI * 2);\n        x = Math.sin(v) * r;\n        z = Math.cos(v) * r;\n        vertices.push(x, 0, z);\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};\nvar _v1 = /* @__PURE__ */ new Vector3();\nvar _v2 = /* @__PURE__ */ new Vector3();\nvar _v3 = /* @__PURE__ */ new Vector3();\nvar 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};\nvar _vector = /* @__PURE__ */ new Vector3();\nvar _camera = /* @__PURE__ */ new Camera();\nvar 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, target, 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, target.r, target.g, target.b);\n    colorAttribute.setXYZ(39, target.r, target.g, target.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, h = 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, -h, -1);\n    setPoint(\"n2\", pointMap, geometry, _camera, w, -h, -1);\n    setPoint(\"n3\", pointMap, geometry, _camera, -w, h, -1);\n    setPoint(\"n4\", pointMap, geometry, _camera, w, h, -1);\n    setPoint(\"f1\", pointMap, geometry, _camera, -w, -h, 1);\n    setPoint(\"f2\", pointMap, geometry, _camera, w, -h, 1);\n    setPoint(\"f3\", pointMap, geometry, _camera, -w, h, 1);\n    setPoint(\"f4\", pointMap, geometry, _camera, w, h, 1);\n    setPoint(\"u1\", pointMap, geometry, _camera, w * 0.7, h * 1.1, -1);\n    setPoint(\"u2\", pointMap, geometry, _camera, -w * 0.7, h * 1.1, -1);\n    setPoint(\"u3\", pointMap, geometry, _camera, 0, h * 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, -h, 1);\n    setPoint(\"cf4\", pointMap, geometry, _camera, 0, h, 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, -h, -1);\n    setPoint(\"cn4\", pointMap, geometry, _camera, 0, h, -1);\n    geometry.getAttribute(\"position\").needsUpdate = true;\n  }\n  dispose() {\n    this.geometry.dispose();\n    this.material.dispose();\n  }\n};\nfunction setPoint(point, pointMap, geometry, camera, x, y, z) {\n  _vector.set(x, y, z).unproject(camera);\n  const points = pointMap[point];\n  if (points !== void 0) {\n    const position = geometry.getAttribute(\"position\");\n    for (let i = 0, l = points.length; i < l; i++) {\n      position.setXYZ(points[i], _vector.x, _vector.y, _vector.z);\n    }\n  }\n}\nvar _box = /* @__PURE__ */ new Box3();\nvar 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};\nvar 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};\nvar 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};\nvar _axis = /* @__PURE__ */ new Vector3();\nvar _lineGeometry;\nvar _coneGeometry;\nvar 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};\nvar 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};\nvar ShapePath = class {\n  constructor() {\n    this.type = \"ShapePath\";\n    this.color = new Color();\n    this.subPaths = [];\n    this.currentPath = null;\n  }\n  moveTo(x, y) {\n    this.currentPath = new Path();\n    this.subPaths.push(this.currentPath);\n    this.currentPath.moveTo(x, y);\n    return this;\n  }\n  lineTo(x, y) {\n    this.currentPath.lineTo(x, y);\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 i = 0, l = inSubpaths.length; i < l; i++) {\n        const tmpPath2 = inSubpaths[i];\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 p = polyLen - 1, q = 0; q < polyLen; p = q++) {\n        let edgeLowPt = inPolygon[p];\n        let edgeHighPt = inPolygon[q];\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[q];\n            edgeDx = -edgeDx;\n            edgeHighPt = inPolygon[p];\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 i = 0, l = subPaths.length; i < l; i++) {\n      tmpPath = subPaths[i];\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 i = 0, il = newShapes.length; i < il; i++) {\n      tmpShape = newShapes[i].s;\n      shapes.push(tmpShape);\n      tmpHoles = newShapeHoles[i];\n      for (let j = 0, jl = tmpHoles.length; j < jl; j++) {\n        tmpShape.holes.push(tmpHoles[j].h);\n      }\n    }\n    return shapes;\n  }\n};\nvar 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};\nvar 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};\nif (typeof __THREE_DEVTOOLS__ !== \"undefined\") {\n  __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"register\", { detail: {\n    revision: REVISION\n  } }));\n}\nif (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\nexport {\n  BasicShadowMap,\n  PCFShadowMap,\n  PCFSoftShadowMap,\n  VSMShadowMap,\n  DoubleSide,\n  NoToneMapping,\n  ACESFilmicToneMapping,\n  EquirectangularReflectionMapping,\n  LinearFilter,\n  UnsignedByteType,\n  FloatType,\n  HalfFloatType,\n  RGBAFormat,\n  EventDispatcher,\n  Vector2,\n  Texture,\n  WebGLRenderTarget,\n  Vector3,\n  Layers,\n  Color,\n  Material,\n  DataUtils,\n  Float32BufferAttribute,\n  BufferGeometry,\n  Mesh,\n  UniformsUtils,\n  ShaderMaterial,\n  Camera,\n  PerspectiveCamera,\n  ShaderChunk,\n  OrthographicCamera,\n  WebGLRenderer,\n  Scene,\n  MeshPhysicalMaterial,\n  DataTextureLoader,\n  Clock,\n  Uniform,\n  Raycaster,\n  three_module_exports\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", "import {\n  ACESFilmicToneMapping,\n  BasicShadowMap,\n  BufferGeometry,\n  Camera,\n  Clock,\n  Color,\n  Layers,\n  Material,\n  NoToneMapping,\n  OrthographicCamera,\n  PCFShadowMap,\n  PCFSoftShadowMap,\n  PerspectiveCamera,\n  RGBAFormat,\n  Raycaster,\n  Scene,\n  Texture,\n  UnsignedByteType,\n  VSMShadowMap,\n  Vector2,\n  Vector3,\n  WebGLRenderer,\n  three_module_exports\n} from \"./chunk-M5G6JQMQ.mjs\";\nimport {\n  __export,\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-5BEQP2BQ.mjs\";\n\n// ../../node_modules/.pnpm/@react-three+fiber@8.17.10_react-dom@18.3.1_react@18.3.1_three@0.169.0/node_modules/@react-three/fiber/dist/events-321b05fb.esm.js\nimport * as React from \"react\";\nimport { DefaultEventPriority, ContinuousEventPriority, DiscreteEventPriority, ConcurrentRoot } from \"react-reconciler/constants\";\n\n// ../../node_modules/.pnpm/zustand@3.7.2_react@18.3.1/node_modules/zustand/esm/index.js\nimport { useReducer, useRef, useDebugValue, useEffect, useLayoutEffect } from \"react\";\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}\nvar isSSR = typeof window === \"undefined\" || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\nvar useIsomorphicLayoutEffect = isSSR ? useEffect : useLayoutEffect;\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 = useRef(state);\n    const selectorRef = useRef(selector);\n    const equalityFnRef = useRef(equalityFn);\n    const erroredRef = useRef(false);\n    const currentSliceRef = useRef();\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 = useRef(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 (error) {\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}\n\n// ../../node_modules/.pnpm/suspend-react@0.1.3_react@18.3.1/node_modules/suspend-react/index.js\nvar isPromise = (promise) => typeof promise === \"object\" && typeof promise.then === \"function\";\nvar globalCache = [];\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, keys2 = null, preload2 = false, config = {}) {\n  if (keys2 === null) keys2 = [fn];\n  for (const entry2 of globalCache) {\n    if (shallowEqualArrays(keys2, 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: keys2,\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(...keys2)).then((response) => {\n        entry.response = response;\n        if (config.lifespan && config.lifespan > 0) {\n          entry.timeout = setTimeout(entry.remove, config.lifespan);\n        }\n      }).catch((error) => entry.error = error)\n    )\n  };\n  globalCache.push(entry);\n  if (!preload2) throw entry.promise;\n  return void 0;\n}\nvar suspend = (fn, keys2, config) => query(fn, keys2, false, config);\nvar preload = (fn, keys2, config) => void query(fn, keys2, true, config);\nvar clear = (keys2) => {\n  if (keys2 === void 0 || keys2.length === 0) globalCache.splice(0, globalCache.length);\n  else {\n    const entry = globalCache.find((entry2) => shallowEqualArrays(keys2, entry2.keys, entry2.equal));\n    if (entry) entry.remove();\n  }\n};\n\n// ../../node_modules/.pnpm/@react-three+fiber@8.17.10_react-dom@18.3.1_react@18.3.1_three@0.169.0/node_modules/@react-three/fiber/dist/events-321b05fb.esm.js\nimport { jsx, Fragment } from \"react/jsx-runtime\";\nimport Reconciler from \"react-reconciler\";\n\n// ../../node_modules/.pnpm/scheduler@0.21.0/node_modules/scheduler/cjs/scheduler.development.js\nvar 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});\nvar exports = {};\nvar module = {\n  get exports() {\n    return exports;\n  },\n  set exports(value) {\n    exports = value;\n  }\n};\nif (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 (error) {\n            if (currentTask !== null) {\n              var currentTime = exports.unstable_now();\n              markTaskErrored(currentTask, currentTime);\n              currentTask.isQueued = false;\n            }\n            throw error;\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}\nvar __export0;\nvar __export1;\nvar __export2;\nvar __export3;\nvar __export4;\nvar __export5;\nvar __export6;\nvar __export7;\nvar __export8;\nvar __export9;\nvar __export10;\nvar __export11;\nvar __export12;\nvar __export13;\nvar __export14;\nvar __export15;\nvar __export16;\nvar __export17;\nvar __export18;\nif (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}\nvar scheduler_development_default = module.exports;\n\n// ../../node_modules/.pnpm/scheduler@0.21.0/node_modules/scheduler/cjs/scheduler.production.min.js\nvar exports2 = {};\nvar module2 = {\n  get exports() {\n    return exports2;\n  },\n  set exports(value) {\n    exports2 = value;\n  }\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}\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n  l = performance;\n  exports2.unstable_now = function() {\n    return l.now();\n  };\n} else {\n  p = Date, q = p.now();\n  exports2.unstable_now = function() {\n    return p.now() - q;\n  };\n}\nvar l;\nvar p;\nvar q;\nvar r = [];\nvar t = [];\nvar u = 1;\nvar v = null;\nvar y = 3;\nvar z = false;\nvar A = false;\nvar B = false;\nvar D = \"function\" === typeof setTimeout ? setTimeout : null;\nvar E = \"function\" === typeof clearTimeout ? clearTimeout : null;\nvar 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);\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}\nvar N = false;\nvar O = null;\nvar L = -1;\nvar P = 5;\nvar Q = -1;\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}\nvar S;\nif (\"function\" === typeof F) S = function() {\n  F(R);\n};\nelse if (\"undefined\" !== typeof MessageChannel) {\n  T = new MessageChannel(), U = T.port2;\n  T.port1.onmessage = R;\n  S = function() {\n    U.postMessage(null);\n  };\n} else S = function() {\n  D(R, 0);\n};\nvar T;\nvar U;\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}\nexports2.unstable_IdlePriority = 5;\nexports2.unstable_ImmediatePriority = 1;\nexports2.unstable_LowPriority = 4;\nexports2.unstable_NormalPriority = 3;\nexports2.unstable_Profiling = null;\nexports2.unstable_UserBlockingPriority = 2;\nexports2.unstable_cancelCallback = function(a) {\n  a.callback = null;\n};\nexports2.unstable_continueExecution = function() {\n  A || z || (A = true, I(J));\n};\nexports2.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};\nexports2.unstable_getCurrentPriorityLevel = function() {\n  return y;\n};\nexports2.unstable_getFirstCallbackNode = function() {\n  return h(r);\n};\nexports2.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};\nexports2.unstable_pauseExecution = function() {\n};\nexports2.unstable_requestPaint = function() {\n};\nexports2.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};\nexports2.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};\nexports2.unstable_shouldYield = M;\nexports2.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};\nvar __export02;\nvar __export19;\nvar __export22;\nvar __export32;\nvar __export42;\nvar __export52;\nvar __export62;\nvar __export72;\nvar __export82;\nvar __export92;\nvar __export102;\nvar __export112;\nvar __export122;\nvar __export132;\nvar __export142;\nvar __export152;\nvar __export162;\nvar __export172;\nvar __export182;\nif (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}\nvar scheduler_production_min_default = module2.exports;\n\n// ../../node_modules/.pnpm/scheduler@0.21.0/node_modules/scheduler/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(k2) {\n      if (k2 === \"default\") {\n        hasDefaultExport = true;\n      } else if (!hasNamedExports && k2 != \"__esModule\") {\n        try {\n          hasNamedExports = requiredModule[k2] != null;\n        } catch (err) {\n        }\n      }\n      Object2.defineProperty(specifiers, k2, {\n        get: function() {\n          return requiredModule[k2];\n        },\n        enumerable: true,\n        configurable: false\n      });\n    });\n    if (Object2.getOwnPropertySymbols) {\n      var symbols = Object2.getOwnPropertySymbols(requiredModule);\n      symbols.forEach(function(k2) {\n        Object2.defineProperty(specifiers, k2, {\n          get: function() {\n            return requiredModule[k2];\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 global = typeof window !== \"undefined\" && window || typeof self !== \"undefined\" && self || typeof global !== \"undefined\" && global || typeof globalThis !== \"undefined\" && globalThis || {};\nvar exports3 = {};\nvar module3 = {\n  get exports() {\n    return exports3;\n  },\n  set exports(value) {\n    exports3 = value;\n  }\n};\nif (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}\nvar scheduler_default = module3.exports;\n\n// ../../node_modules/.pnpm/@react-three+fiber@8.17.10_react-dom@18.3.1_react@18.3.1_three@0.169.0/node_modules/@react-three/fiber/dist/events-321b05fb.esm.js\nvar catalogue = {};\nvar extend = (objects) => void Object.assign(catalogue, objects);\nfunction createRenderer(_roots, _getEventPriority) {\n  function createInstance(type, _a, root) {\n    var _b = _a, {\n      args = [],\n      attach: attach2\n    } = _b, props = __objRest(_b, [\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 target = catalogue[name];\n      if (!target) {\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 target(...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 instanceof BufferGeometry) instance.__r3f.attach = \"geometry\";\n      else if (instance instanceof Material) 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 _a = newProps, {\n          args: argsNew = [],\n          children: cN\n        } = _a, restNew = __objRest(_a, [\n          \"args\",\n          \"children\"\n        ]);\n        const _b = oldProps, {\n          args: argsOld = [],\n          children: cO\n        } = _b, restOld = __objRest(_b, [\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}\nvar _window$document;\nvar _window$navigator;\nvar hasColorSpace = (object) => \"colorSpace\" in object || \"outputColorSpace\" in object;\nvar getColorManagement = () => {\n  var _ColorManagement;\n  return (_ColorManagement = catalogue.ColorManagement) != null ? _ColorManagement : null;\n};\nvar isOrthographicCamera = (def) => def && def.isOrthographicCamera;\nvar isRef = (obj) => obj && obj.hasOwnProperty(\"current\");\nvar 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;\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}\nvar 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};\nErrorBoundary.getDerivedStateFromError = () => ({\n  error: true\n});\nvar DEFAULT = \"__default\";\nvar DEFAULTS = /* @__PURE__ */ new Map();\nvar isDiffSet = (def) => def && !!def.memoized && !!def.changes;\nfunction calculateDpr(dpr) {\n  var _window$devicePixelRa;\n  const target = typeof window !== \"undefined\" ? (_window$devicePixelRa = window.devicePixelRatio) != null ? _window$devicePixelRa : 2 : 1;\n  return Array.isArray(dpr) ? Math.min(Math.max(dpr[0], target), dpr[1]) : dpr;\n}\nvar getRootState = (obj) => {\n  var _r3f;\n  return (_r3f = obj.__r3f) == null ? void 0 : _r3f.root.getState();\n};\nfunction findInitialRoot(child) {\n  let root = child.__r3f.root;\n  while (root.getState().previousRoot) root = root.getState().previousRoot;\n  return root;\n}\nvar 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};\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 p in obj) {\n    p.dispose == null ? void 0 : p.dispose();\n    delete obj[p];\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 target = instance;\n  if (key.includes(\"-\")) {\n    const entries = key.split(\"-\");\n    const last = entries.pop();\n    target = entries.reduce((acc, key2) => acc[key2], instance);\n    return {\n      target,\n      key: last\n    };\n  } else return {\n    target,\n    key\n  };\n}\nvar INDEX_REGEX = /-\\d+$/;\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: target2,\n        key: key2\n      } = resolve(parent, root);\n      if (!Array.isArray(target2[key2])) target2[key2] = [];\n    }\n    const {\n      target,\n      key\n    } = resolve(parent, type);\n    child.__r3f.previousAttach = target[key];\n    target[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,\n      key\n    } = resolve(parent, type);\n    const previous = child.__r3f.previousAttach;\n    if (previous === void 0) delete target[key];\n    else target[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, _a, _c = {}, remove = false) {\n  var _b = _a, {\n    children: cN,\n    key: kN,\n    ref: rN\n  } = _b, props = __objRest(_b, [\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}\nvar __DEV__ = typeof process !== \"undefined\" && true;\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, keys2] = changes[i2];\n    if (hasColorSpace(instance)) {\n      const sRGBEncoding = 3001;\n      const SRGBColorSpace = \"srgb\";\n      const LinearSRGBColorSpace = \"srgb-linear\";\n      if (key === \"encoding\") {\n        key = \"colorSpace\";\n        value = value === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;\n      } else if (key === \"outputEncoding\") {\n        key = \"outputColorSpace\";\n        value = value === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;\n      }\n    }\n    let currentInstance = instance;\n    let targetProp = currentInstance[key];\n    if (keys2.length) {\n      targetProp = keys2.reduce((acc, key2) => acc[key2], instance);\n      if (!(targetProp && targetProp.set)) {\n        const [name, ...reverseEntries] = keys2.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        const isColor = targetProp instanceof Color;\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      currentInstance[key] = value;\n      if (currentInstance[key] instanceof Texture && // 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 intersect(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 = intersect(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}\nvar isRenderer = (def) => !!(def != null && def.render);\nvar context = /* @__PURE__ */ React.createContext(null);\nvar 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, target = defaultTarget, size = get().size) {\n      const {\n        width,\n        height,\n        top,\n        left\n      } = size;\n      const aspect = width / height;\n      if (target instanceof Vector3) tempTarget.copy(target);\n      else tempTarget.set(...target);\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\n        };\n      } else {\n        const fov = camera.fov * Math.PI / 180;\n        const h2 = 2 * Math.tan(fov / 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\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};\nvar i;\nvar globalEffects = /* @__PURE__ */ new Set();\nvar globalAfterEffects = /* @__PURE__ */ new Set();\nvar globalTailEffects = /* @__PURE__ */ new Set();\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}\nvar subscribers;\nvar subscription;\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}\nvar memoizedLoaders = /* @__PURE__ */ new WeakMap();\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, (error) => reject(new Error(`Could not load ${input2}: ${error == null ? void 0 : error.message}`))))));\n  };\n}\nfunction useLoader(Proto, input, extensions, onProgress) {\n  const keys2 = Array.isArray(input) ? input : [input];\n  const results = suspend(loadingFn(extensions, onProgress), [Proto, ...keys2], {\n    equal: is.equ\n  });\n  return Array.isArray(input) ? results : results[0];\n}\nuseLoader.preload = function(Proto, input, extensions) {\n  const keys2 = Array.isArray(input) ? input : [input];\n  return preload(loadingFn(extensions), [Proto, ...keys2]);\n};\nuseLoader.clear = function(Proto, input) {\n  const keys2 = Array.isArray(input) ? input : [input];\n  return clear([Proto, ...keys2]);\n};\nvar roots = /* @__PURE__ */ new Map();\nvar {\n  invalidate,\n  advance\n} = createLoop(roots);\nvar {\n  reconciler,\n  applyProps\n} = createRenderer(roots, getEventPriority);\nvar shallowLoose = {\n  objects: \"shallow\",\n  strict: false\n};\nvar 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};\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 _a = raycastOptions || {}, {\n        params\n      } = _a, options = __objRest(_a, [\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 instanceof Scene) {\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 ColorManagement = getColorManagement();\n      if (ColorManagement) {\n        if (\"enabled\" in ColorManagement) ColorManagement.enabled = !legacy;\n        else if (\"legacyMode\" in ColorManagement) ColorManagement.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__ */ jsx(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__ */ jsx(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}\nreconciler.injectIntoDevTools({\n  bundleType: false ? 0 : 1,\n  rendererPackageName: \"@react-three/fiber\",\n  version: React.version\n});\nvar 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};\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: (target) => {\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: target\n        })\n      }));\n      Object.entries((_events$handlers = events.handlers) != null ? _events$handlers : []).forEach(([name, event]) => {\n        const [eventName, passive] = DOM_EVENTS[name];\n        target.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}\n\n// ../../node_modules/.pnpm/@react-three+fiber@8.17.10_react-dom@18.3.1_react@18.3.1_three@0.169.0/node_modules/@react-three/fiber/dist/react-three-fiber.esm.js\nimport * as React3 from \"react\";\nimport { useState as useState4, useRef as useRef5, useEffect as useEffect4, useMemo as useMemo4 } from \"react\";\n\n// ../../node_modules/.pnpm/debounce@1.2.1/node_modules/debounce/index.js\nvar exports4 = {};\nvar module4 = {\n  get exports() {\n    return exports4;\n  },\n  set exports(value) {\n    exports4 = value;\n  }\n};\nfunction debounce(func, wait, immediate) {\n  var timeout, args, context2, timestamp, result;\n  if (null == wait) wait = 100;\n  function later() {\n    var last = Date.now() - timestamp;\n    if (last < wait && last >= 0) {\n      timeout = setTimeout(later, wait - last);\n    } else {\n      timeout = null;\n      if (!immediate) {\n        result = func.apply(context2, args);\n        context2 = args = null;\n      }\n    }\n  }\n  ;\n  var debounced = function() {\n    context2 = this;\n    args = arguments;\n    timestamp = Date.now();\n    var callNow = immediate && !timeout;\n    if (!timeout) timeout = setTimeout(later, wait);\n    if (callNow) {\n      result = func.apply(context2, args);\n      context2 = args = null;\n    }\n    return result;\n  };\n  debounced.clear = function() {\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = null;\n    }\n  };\n  debounced.flush = function() {\n    if (timeout) {\n      result = func.apply(context2, args);\n      context2 = args = null;\n      clearTimeout(timeout);\n      timeout = null;\n    }\n  };\n  return debounced;\n}\ndebounce.debounce = debounce;\nmodule4.exports = debounce;\nvar debounce_default = module4.exports;\n\n// ../../node_modules/.pnpm/its-fine@1.0.8_react@18.3.1/node_modules/its-fine/dist/index.js\nimport * as React2 from \"react\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\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 __spreadValues2 = (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 __spreadProps2 = (a, b) => __defProps(a, __getOwnPropDescs(b));\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}\nvar FiberContext = wrapContext(React2.createContext(null));\nvar FiberProvider = class extends React2.Component {\n  render() {\n    return /* @__PURE__ */ React2.createElement(FiberContext.Provider, {\n      value: this._reactInternals\n    }, this.props.children);\n  }\n};\nvar { ReactCurrentOwner, ReactCurrentDispatcher } = React2.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\nfunction useFiber() {\n  const root = React2.useContext(FiberContext);\n  if (!root)\n    throw new Error(\"its-fine: useFiber must be called within a <FiberProvider />!\");\n  const id = React2.useId();\n  const fiber = React2.useMemo(\n    () => {\n      var _a;\n      return (_a = ReactCurrentOwner.current) != null ? _a : traverseFiber(root, 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    },\n    [root, id]\n  );\n  return fiber;\n}\nfunction useContextBridge() {\n  var _a, _b;\n  const fiber = useFiber();\n  const [contexts] = React2.useState(() => /* @__PURE__ */ new Map());\n  contexts.clear();\n  let node = fiber;\n  while (node) {\n    const context2 = (_a = node.type) == null ? void 0 : _a._context;\n    if (context2 && context2 !== FiberContext && !contexts.has(context2)) {\n      contexts.set(context2, (_b = ReactCurrentDispatcher.current) == null ? void 0 : _b.readContext(wrapContext(context2)));\n    }\n    node = node.return;\n  }\n  return React2.useMemo(\n    () => Array.from(contexts.keys()).reduce(\n      (Prev, context2) => (props) => /* @__PURE__ */ React2.createElement(Prev, null, /* @__PURE__ */ React2.createElement(context2.Provider, __spreadProps2(__spreadValues2({}, props), {\n        value: contexts.get(context2)\n      }))),\n      (props) => /* @__PURE__ */ React2.createElement(FiberProvider, __spreadValues2({}, props))\n    ),\n    [contexts]\n  );\n}\n\n// ../../node_modules/.pnpm/@react-three+fiber@8.17.10_react-dom@18.3.1_react@18.3.1_three@0.169.0/node_modules/@react-three/fiber/dist/react-three-fiber.esm.js\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nimport \"react-reconciler/constants\";\nimport \"react-reconciler\";\nfunction useMeasure({\n  debounce: debounce2,\n  scroll,\n  polyfill,\n  offsetSize\n} = {\n  debounce: 0,\n  scroll: false,\n  offsetSize: false\n}) {\n  const ResizeObserver = polyfill || typeof window !== \"undefined\" && window.ResizeObserver;\n  const [bounds, set] = useState4({\n    left: 0,\n    top: 0,\n    width: 0,\n    height: 0,\n    bottom: 0,\n    right: 0,\n    x: 0,\n    y: 0\n  });\n  if (!ResizeObserver) {\n    bounds.width = 1280;\n    bounds.height = 800;\n    return [() => {\n    }, bounds, () => {\n    }];\n  }\n  const state = useRef5({\n    element: null,\n    scrollContainers: null,\n    resizeObserver: null,\n    lastBounds: bounds,\n    orientationHandler: null\n  });\n  const scrollDebounce = debounce2 ? typeof debounce2 === \"number\" ? debounce2 : debounce2.scroll : null;\n  const resizeDebounce = debounce2 ? typeof debounce2 === \"number\" ? debounce2 : debounce2.resize : null;\n  const mounted = useRef5(false);\n  useEffect4(() => {\n    mounted.current = true;\n    return () => void (mounted.current = false);\n  });\n  const [forceRefresh, resizeChange, scrollChange] = useMemo4(() => {\n    const callback = () => {\n      if (!state.current.element) return;\n      const {\n        left,\n        top,\n        width,\n        height,\n        bottom,\n        right,\n        x,\n        y: y2\n      } = state.current.element.getBoundingClientRect();\n      const size = {\n        left,\n        top,\n        width,\n        height,\n        bottom,\n        right,\n        x,\n        y: y2\n      };\n      if (state.current.element instanceof HTMLElement && offsetSize) {\n        size.height = state.current.element.offsetHeight;\n        size.width = state.current.element.offsetWidth;\n      }\n      Object.freeze(size);\n      if (mounted.current && !areBoundsEqual(state.current.lastBounds, size)) set(state.current.lastBounds = size);\n    };\n    return [callback, resizeDebounce ? debounce_default(callback, resizeDebounce) : callback, scrollDebounce ? debounce_default(callback, scrollDebounce) : callback];\n  }, [set, offsetSize, scrollDebounce, resizeDebounce]);\n  function removeListeners() {\n    if (state.current.scrollContainers) {\n      state.current.scrollContainers.forEach((element) => element.removeEventListener(\"scroll\", scrollChange, true));\n      state.current.scrollContainers = null;\n    }\n    if (state.current.resizeObserver) {\n      state.current.resizeObserver.disconnect();\n      state.current.resizeObserver = null;\n    }\n    if (state.current.orientationHandler) {\n      if (\"orientation\" in screen && \"removeEventListener\" in screen.orientation) {\n        screen.orientation.removeEventListener(\"change\", state.current.orientationHandler);\n      } else if (\"onorientationchange\" in window) {\n        window.removeEventListener(\"orientationchange\", state.current.orientationHandler);\n      }\n    }\n  }\n  function addListeners() {\n    var _state$current$resize;\n    if (!state.current.element) return;\n    state.current.resizeObserver = new ResizeObserver(resizeChange);\n    (_state$current$resize = state.current.resizeObserver) == null ? void 0 : _state$current$resize.observe(state.current.element);\n    if (scroll && state.current.scrollContainers) {\n      state.current.scrollContainers.forEach((scrollContainer) => scrollContainer.addEventListener(\"scroll\", scrollChange, {\n        capture: true,\n        passive: true\n      }));\n    }\n    state.current.orientationHandler = () => {\n      scrollChange();\n    };\n    if (\"orientation\" in screen && \"addEventListener\" in screen.orientation) {\n      screen.orientation.addEventListener(\"change\", state.current.orientationHandler);\n    } else if (\"onorientationchange\" in window) {\n      window.addEventListener(\"orientationchange\", state.current.orientationHandler);\n    }\n  }\n  const ref = (node) => {\n    if (!node || node === state.current.element) return;\n    removeListeners();\n    state.current.element = node;\n    state.current.scrollContainers = findScrollContainers(node);\n    addListeners();\n  };\n  useOnWindowScroll(scrollChange, Boolean(scroll));\n  useOnWindowResize(resizeChange);\n  useEffect4(() => {\n    removeListeners();\n    addListeners();\n  }, [scroll, scrollChange, resizeChange]);\n  useEffect4(() => removeListeners, []);\n  return [ref, bounds, forceRefresh];\n}\nfunction useOnWindowResize(onWindowResize) {\n  useEffect4(() => {\n    const cb = onWindowResize;\n    window.addEventListener(\"resize\", cb);\n    return () => void window.removeEventListener(\"resize\", cb);\n  }, [onWindowResize]);\n}\nfunction useOnWindowScroll(onScroll, enabled) {\n  useEffect4(() => {\n    if (enabled) {\n      const cb = onScroll;\n      window.addEventListener(\"scroll\", cb, {\n        capture: true,\n        passive: true\n      });\n      return () => void window.removeEventListener(\"scroll\", cb, true);\n    }\n  }, [onScroll, enabled]);\n}\nfunction findScrollContainers(element) {\n  const result = [];\n  if (!element || element === document.body) return result;\n  const {\n    overflow,\n    overflowX,\n    overflowY\n  } = window.getComputedStyle(element);\n  if ([overflow, overflowX, overflowY].some((prop) => prop === \"auto\" || prop === \"scroll\")) result.push(element);\n  return [...result, ...findScrollContainers(element.parentElement)];\n}\nvar keys = [\"x\", \"y\", \"top\", \"bottom\", \"left\", \"right\", \"width\", \"height\"];\nvar areBoundsEqual = (a, b) => keys.every((key) => a[key] === b[key]);\nvar CanvasImpl = /* @__PURE__ */ React3.forwardRef(function Canvas(_a, forwardedRef) {\n  var _b = _a, {\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  } = _b, props = __objRest(_b, [\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] = useMeasure(__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 [error, setError] = React3.useState(false);\n  if (block) throw block;\n  if (error) throw error;\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__ */ jsx2(Bridge, {\n        children: /* @__PURE__ */ jsx2(ErrorBoundary, {\n          set: setError,\n          children: /* @__PURE__ */ jsx2(React3.Suspense, {\n            fallback: /* @__PURE__ */ jsx2(Block, {\n              set: setBlock\n            }),\n            children\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__ */ jsx2(\"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__ */ jsx2(\"div\", {\n      ref: containerRef,\n      style: {\n        width: \"100%\",\n        height: \"100%\"\n      },\n      children: /* @__PURE__ */ jsx2(\"canvas\", {\n        ref: canvasRef,\n        style: {\n          display: \"block\"\n        },\n        children: fallback\n      })\n    })\n  }));\n});\nvar Canvas2 = /* @__PURE__ */ React3.forwardRef(function CanvasWrapper(props, ref) {\n  return /* @__PURE__ */ jsx2(FiberProvider, {\n    children: /* @__PURE__ */ jsx2(CanvasImpl, __spreadProps(__spreadValues({}, props), {\n      ref\n    }))\n  });\n});\n\nexport {\n  extend,\n  useThree,\n  useFrame,\n  useLoader,\n  Canvas2 as Canvas\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", "// src/consts.ts\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});\nvar links = [\n  {\n    title: \"Figma  \\u2192\",\n    link: \"https://www.figma.com/community/plugin/958202093377483021/Mesh-Gradient\"\n  },\n  {\n    title: \"React  \\u2192\",\n    link: \"https://codesandbox.io/s/optimistic-benji-pw64i\"\n  },\n  {\n    title: \"Framer  \\u2192\",\n    link: \"https://framer.com/projects/ShaderGradient--7fmA9c0AApv3vyjCPpS3-emceg\"\n  }\n];\nvar defaultPlanesZoom = 1;\nvar defaultSphereDistance = 14;\nvar zoomOutPlanes = { zoom: 1, distance: 14 };\nvar zoomOutSphere = { zoom: 5, distance: 14 };\nvar aboutAngles = [190, 140];\nvar aboutPositions = [0, 10, 0];\nvar aboutRotations = [0, 10, 50];\nvar aboutMobilePositions = [0, 20, 0];\nvar hdrBase = \"https://ruucm.github.io/shadergradient/shadergradient@1.0.0\";\nvar mainLoading = {\n  // mesh animation\n  meshDelay: 0,\n  meshDur: 0,\n  // rotation animation\n  rotDelay: 1.7,\n  rotDur: 1,\n  // position animation\n  posDelay: 1.3,\n  posDur: 2.2,\n  logoTransition: 3.1,\n  // Timing for the logo\n  text: 2.5,\n  // Timing for the preset title appearing\n  // mesh\n  to: 1\n  // end factor (0 -> 1) for the mesh noisestrength\n};\nvar envBasePath = \"https://ruucm.github.io/shadergradient/shadergradient@1.0.0/hdr/\";\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  canvasProps,\n  links,\n  defaultPlanesZoom,\n  defaultSphereDistance,\n  zoomOutPlanes,\n  zoomOutSphere,\n  aboutAngles,\n  aboutPositions,\n  aboutRotations,\n  aboutMobilePositions,\n  hdrBase,\n  mainLoading,\n  envBasePath,\n  STRIPE_BUY_YEARLY_URL,\n  STRIPE_BUY_MONTHLY_URL,\n  STRIPE_BILLING_URL\n};\n", "import {\n  Canvas\n} from \"./chunk-PBAUXUVF.mjs\";\nimport {\n  ShaderChunk\n} from \"./chunk-M5G6JQMQ.mjs\";\nimport {\n  canvasProps\n} from \"./chunk-SX7QUDKQ.mjs\";\nimport {\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-5BEQP2BQ.mjs\";\n\n// src/ShaderGradientCanvas.tsx\nimport { useEffect } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction ShaderGradientCanvas({\n  children,\n  style = {},\n  pixelDensity = 1,\n  fov = 45,\n  pointerEvents,\n  className\n}) {\n  useShaderChunkFix();\n  return /* @__PURE__ */ jsx(\n    Canvas,\n    __spreadProps(__spreadValues({\n      style: __spreadProps(__spreadValues({}, style), { pointerEvents }),\n      resize: { offsetSize: true },\n      className\n    }, canvasProps(pixelDensity, fov)), {\n      children\n    })\n  );\n}\nfunction useShaderChunkFix() {\n  useEffect(() => {\n    ShaderChunk[\"uv2_pars_vertex\"] = ``;\n    ShaderChunk[\"uv2_vertex\"] = ``;\n    ShaderChunk[\"uv2_pars_fragment\"] = ``;\n    ShaderChunk[\"encodings_fragment\"] = ``;\n  }, []);\n}\n\nexport {\n  ShaderGradientCanvas\n};\n", "import {\n  BufferGeometry,\n  Float32BufferAttribute,\n  Mesh,\n  OrthographicCamera\n} from \"./chunk-M5G6JQMQ.mjs\";\n\n// src/ShaderGradient/PostProcessing/lib/pp/from-threejs/postprocessing/Pass.js\nvar 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};\nvar _camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1);\nvar _geometry = new BufferGeometry();\n_geometry.setAttribute(\n  \"position\",\n  new Float32BufferAttribute([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)\n);\n_geometry.setAttribute(\"uv\", new Float32BufferAttribute([0, 2, 0, 0, 2, 0], 2));\nvar FullScreenQuad = class {\n  constructor(material) {\n    this._mesh = new Mesh(_geometry, material);\n  }\n  dispose() {\n    this._mesh.geometry.dispose();\n  }\n  render(renderer) {\n    renderer.render(this._mesh, _camera);\n  }\n  get material() {\n    return this._mesh.material;\n  }\n  set material(value) {\n    this._mesh.material = value;\n  }\n};\n\nexport {\n  Pass,\n  FullScreenQuad\n};\n", "import {\n  Pass\n} from \"./chunk-C4TFB3WJ.mjs\";\n\n// src/ShaderGradient/PostProcessing/lib/pp/from-threejs/postprocessing/MaskPass.js\nvar 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 context = 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      context.REPLACE,\n      context.REPLACE,\n      context.REPLACE\n    );\n    state.buffers.stencil.setFunc(context.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(context.EQUAL, 1, 4294967295);\n    state.buffers.stencil.setOp(context.KEEP, context.KEEP, context.KEEP);\n    state.buffers.stencil.setLocked(true);\n  }\n};\nvar 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\nexport {\n  MaskPass,\n  ClearMaskPass\n};\n", "import {\n  FullScreenQuad,\n  Pass\n} from \"./chunk-C4TFB3WJ.mjs\";\nimport {\n  ShaderMaterial,\n  UniformsUtils\n} from \"./chunk-M5G6JQMQ.mjs\";\n\n// src/ShaderGradient/PostProcessing/lib/pp/from-threejs/postprocessing/ShaderPass.js\nvar 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\nexport {\n  ShaderPass\n};\n", "// src/ShaderGradient/PostProcessing/lib/pp/from-threejs/shaders/CopyShader.js\nvar 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\nexport {\n  CopyShader\n};\n", "import {\n  ClearMaskPass,\n  MaskPass\n} from \"./chunk-2FDB6CTQ.mjs\";\nimport {\n  ShaderPass\n} from \"./chunk-Z2ZIK3HP.mjs\";\nimport {\n  CopyShader\n} from \"./chunk-USQFKVUW.mjs\";\nimport {\n  BufferGeometry,\n  Clock,\n  Float32BufferAttribute,\n  LinearFilter,\n  Mesh,\n  OrthographicCamera,\n  RGBAFormat,\n  Vector2,\n  WebGLRenderTarget\n} from \"./chunk-M5G6JQMQ.mjs\";\n\n// src/ShaderGradient/PostProcessing/lib/pp/from-threejs/postprocessing/EffectComposer.js\nvar 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 tmp = this.readBuffer;\n    this.readBuffer = this.writeBuffer;\n    this.writeBuffer = tmp;\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 i = passIndex + 1; i < this.passes.length; i++) {\n      if (this.passes[i].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 i = 0, il = this.passes.length; i < il; i++) {\n      const pass = this.passes[i];\n      if (pass.enabled === false) continue;\n      pass.renderToScreen = this.renderToScreen && this.isLastEnabledPass(i);\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 context = this.renderer.getContext();\n          const stencil = this.renderer.state.buffers.stencil;\n          stencil.setFunc(context.NOTEQUAL, 1, 4294967295);\n          this.copyPass.render(\n            this.renderer,\n            this.writeBuffer,\n            this.readBuffer,\n            deltaTime\n          );\n          stencil.setFunc(context.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 i = 0; i < this.passes.length; i++) {\n      this.passes[i].setSize(effectiveWidth, effectiveHeight);\n    }\n  }\n  setPixelRatio(pixelRatio) {\n    this._pixelRatio = pixelRatio;\n    this.setSize(this._width, this._height);\n  }\n};\nvar 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};\nvar _camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1);\nvar _geometry = new BufferGeometry();\n_geometry.setAttribute(\n  \"position\",\n  new Float32BufferAttribute([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)\n);\n_geometry.setAttribute(\"uv\", new Float32BufferAttribute([0, 2, 0, 0, 2, 0], 2));\nvar FullScreenQuad = class {\n  constructor(material) {\n    this._mesh = new Mesh(_geometry, material);\n  }\n  dispose() {\n    this._mesh.geometry.dispose();\n  }\n  render(renderer) {\n    renderer.render(this._mesh, _camera);\n  }\n  get material() {\n    return this._mesh.material;\n  }\n  set material(value) {\n    this._mesh.material = value;\n  }\n};\n\nexport {\n  EffectComposer,\n  Pass,\n  FullScreenQuad\n};\n", "import {\n  Pass\n} from \"./chunk-C4TFB3WJ.mjs\";\nimport {\n  Color\n} from \"./chunk-M5G6JQMQ.mjs\";\n\n// src/ShaderGradient/PostProcessing/lib/pp/from-threejs/postprocessing/RenderPass.js\nvar 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\nexport {\n  RenderPass\n};\n", "// src/ShaderGradient/PostProcessing/lib/pp/HalftoneShader.js\nvar 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\nexport {\n  HalftoneShader\n};\n", "import {\n  BufferGeometry,\n  Float32BufferAttribute,\n  Mesh,\n  OrthographicCamera\n} from \"./chunk-M5G6JQMQ.mjs\";\n\n// src/ShaderGradient/PostProcessing/lib/pp/Pass.js\nvar 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};\nvar _camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1);\nvar _geometry = new BufferGeometry();\n_geometry.setAttribute(\n  \"position\",\n  new Float32BufferAttribute([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)\n);\n_geometry.setAttribute(\"uv\", new Float32BufferAttribute([0, 2, 0, 0, 2, 0], 2));\nvar FullScreenQuad = class {\n  constructor(material) {\n    this._mesh = new Mesh(_geometry, material);\n  }\n  dispose() {\n    this._mesh.geometry.dispose();\n  }\n  render(renderer) {\n    renderer.render(this._mesh, _camera);\n  }\n  get material() {\n    return this._mesh.material;\n  }\n  set material(value) {\n    this._mesh.material = value;\n  }\n};\n\nexport {\n  Pass,\n  FullScreenQuad\n};\n", "// src/ShaderGradient/PostProcessing/lib/pp/blending/BlendFunction.js\nvar 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\nexport {\n  BlendFunction\n};\n", "import {\n  BlendFunction\n} from \"./chunk-4NRCS6EB.mjs\";\nimport {\n  EventDispatcher,\n  Uniform\n} from \"./chunk-M5G6JQMQ.mjs\";\n\n// src/ShaderGradient/PostProcessing/lib/pp/blending/glsl/add/shader.frag\nvar 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\n// src/ShaderGradient/PostProcessing/lib/pp/blending/glsl/alpha/shader.frag\nvar 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\n// src/ShaderGradient/PostProcessing/lib/pp/blending/glsl/average/shader.frag\nvar 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\n// src/ShaderGradient/PostProcessing/lib/pp/blending/glsl/color-burn/shader.frag\nvar 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\n// src/ShaderGradient/PostProcessing/lib/pp/blending/glsl/color-dodge/shader.frag\nvar 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\n// src/ShaderGradient/PostProcessing/lib/pp/blending/glsl/darken/shader.frag\nvar 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\n// src/ShaderGradient/PostProcessing/lib/pp/blending/glsl/difference/shader.frag\nvar 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\n// src/ShaderGradient/PostProcessing/lib/pp/blending/glsl/divide/shader.frag\nvar 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\n// src/ShaderGradient/PostProcessing/lib/pp/blending/glsl/exclusion/shader.frag\nvar 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\n// src/ShaderGradient/PostProcessing/lib/pp/blending/glsl/lighten/shader.frag\nvar 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\n// src/ShaderGradient/PostProcessing/lib/pp/blending/glsl/multiply/shader.frag\nvar 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\n// src/ShaderGradient/PostProcessing/lib/pp/blending/glsl/negation/shader.frag\nvar 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\n// src/ShaderGradient/PostProcessing/lib/pp/blending/glsl/normal/shader.frag\nvar 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\n// src/ShaderGradient/PostProcessing/lib/pp/blending/glsl/overlay/shader.frag\nvar 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\n// src/ShaderGradient/PostProcessing/lib/pp/blending/glsl/reflect/shader.frag\nvar 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\n// src/ShaderGradient/PostProcessing/lib/pp/blending/glsl/screen/shader.frag\nvar 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\n// src/ShaderGradient/PostProcessing/lib/pp/blending/glsl/soft-light/shader.frag\nvar 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\n// src/ShaderGradient/PostProcessing/lib/pp/blending/glsl/subtract/shader.frag\nvar 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\n// src/ShaderGradient/PostProcessing/lib/pp/blending/BlendMode.js\nvar 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]);\nvar 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\nexport {\n  BlendMode\n};\n", "import {\n  HalftoneShader\n} from \"./chunk-3U6A2N6D.mjs\";\nimport {\n  FullScreenQuad,\n  Pass\n} from \"./chunk-AJ4ZTHOA.mjs\";\nimport {\n  BlendMode\n} from \"./chunk-54NE35C4.mjs\";\nimport {\n  BlendFunction\n} from \"./chunk-4NRCS6EB.mjs\";\nimport {\n  ShaderMaterial,\n  UniformsUtils\n} from \"./chunk-M5G6JQMQ.mjs\";\n\n// src/ShaderGradient/PostProcessing/lib/pp/HalftonePass.ts\nvar usePassedMeshSize = true;\nvar HalftonePass = class extends Pass {\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 FullScreenQuad(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\nexport {\n  HalftonePass\n};\n", "import {\n  EffectComposer\n} from \"./chunk-FFUMSB5Y.mjs\";\nimport {\n  RenderPass\n} from \"./chunk-D6HO7KA7.mjs\";\nimport {\n  HalftonePass\n} from \"./chunk-7HNM7AEP.mjs\";\nimport {\n  useFrame,\n  useThree\n} from \"./chunk-PBAUXUVF.mjs\";\n\n// src/ShaderGradient/PostProcessing/PostProcessing.tsx\nimport { useEffect, useMemo } from \"react\";\nimport { Fragment, jsx } from \"react/jsx-runtime\";\nfunction PostProcessing({ disable = false }) {\n  const { gl, scene, camera, size } = useThree();\n  const composer = useMemo(() => {\n    const effectComposer = new EffectComposer(gl);\n    effectComposer.addPass(new RenderPass(scene, camera));\n    const halftoneParams = {\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      disable\n    };\n    const halftonePass = new HalftonePass(\n      size.width,\n      size.height,\n      halftoneParams\n    );\n    effectComposer.addPass(halftonePass);\n    return effectComposer;\n  }, [gl, scene, camera, size, disable]);\n  useEffect(() => composer == null ? void 0 : composer.setSize(size.width, size.height), [composer, size]);\n  useFrame(\n    (_, delta) => void (gl.autoClear = true, composer.render(delta)),\n    1\n  );\n  return /* @__PURE__ */ jsx(Fragment, {});\n}\n\nexport {\n  PostProcessing\n};\n", "// src/utils/index.ts\nfunction degToRad(deg) {\n  return deg * (Math.PI / 180);\n}\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}\n\nexport {\n  degToRad,\n  dToR,\n  dToRArr,\n  formatUrlString\n};\n", "import {\n  dToR\n} from \"./chunk-G7COPUKV.mjs\";\nimport {\n  useFrame\n} from \"./chunk-PBAUXUVF.mjs\";\nimport {\n  defaultPlanesZoom,\n  defaultSphereDistance,\n  zoomOutPlanes,\n  zoomOutSphere\n} from \"./chunk-SX7QUDKQ.mjs\";\n\n// src/ShaderGradient/Controls/useCameraAnimation.ts\nimport { useEffect, useRef } from \"react\";\nfunction useCameraAnimation({\n  type,\n  cAzimuthAngle,\n  cPolarAngle,\n  cDistance,\n  cameraZoom,\n  zoomOut,\n  enableTransition = true\n}) {\n  const ref = useRef();\n  useFrame((state, delta) => ref.current.update(delta));\n  useEffect(() => {\n    const control = ref.current;\n    control == null ? void 0 : control.rotateTo(dToR(cAzimuthAngle), dToR(cPolarAngle), enableTransition);\n  }, [ref, cAzimuthAngle, cPolarAngle]);\n  useEffect(() => {\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]);\n  return ref;\n}\n\nexport {\n  useCameraAnimation\n};\n", "import {\n  useCameraAnimation\n} from \"./chunk-XX6QE2RT.mjs\";\nimport {\n  extend,\n  useThree\n} from \"./chunk-PBAUXUVF.mjs\";\nimport {\n  three_module_exports\n} from \"./chunk-M5G6JQMQ.mjs\";\nimport {\n  __objRest\n} from \"./chunk-5BEQP2BQ.mjs\";\n\n// ../../node_modules/.pnpm/camera-controls@2.9.0_three@0.169.0/node_modules/camera-controls/dist/camera-controls.module.js\nvar MOUSE_BUTTON = {\n  LEFT: 1,\n  RIGHT: 2,\n  MIDDLE: 4\n};\nvar 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});\nvar DOLLY_DIRECTION = {\n  NONE: 0,\n  IN: 1,\n  OUT: -1\n};\nfunction isPerspectiveCamera(camera) {\n  return camera.isPerspectiveCamera;\n}\nfunction isOrthographicCamera(camera) {\n  return camera.isOrthographicCamera;\n}\nvar PI_2 = Math.PI * 2;\nvar PI_HALF = Math.PI / 2;\nvar EPSILON = 1e-5;\nvar DEG2RAD = Math.PI / 180;\nfunction clamp(value, min, max) {\n  return Math.max(min, Math.min(max, value));\n}\nfunction approxZero(number, error = EPSILON) {\n  return Math.abs(number) < error;\n}\nfunction approxEquals(a, b, error = EPSILON) {\n  return approxZero(a - b, error);\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, target, 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 - target;\n  const originalTo = target;\n  const maxChange = maxSpeed * smoothTime;\n  change = clamp(change, -maxChange, maxChange);\n  target = current - change;\n  const temp = (currentVelocityRef.value + omega * change) * deltaTime;\n  currentVelocityRef.value = (currentVelocityRef.value - omega * temp) * exp;\n  let output = target + (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, target, 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 = target.x;\n  let targetY = target.y;\n  let targetZ = target.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 (isOrthographicCamera(camera)) {\n    console.warn(`${message} is not supported in OrthographicCamera`);\n    return true;\n  }\n  return false;\n}\nvar EventDispatcher = 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 i = 0, l = array.length; i < l; i++) {\n        array[i].call(this, event);\n      }\n    }\n  }\n};\nvar _a;\nvar VERSION = \"2.9.0\";\nvar TOUCH_DOLLY_FACTOR = 1 / 8;\nvar isMac = /Mac/.test((_a = globalThis === null || globalThis === void 0 ? void 0 : globalThis.navigator) === null || _a === void 0 ? void 0 : _a.platform);\nvar THREE;\nvar _ORIGIN;\nvar _AXIS_Y;\nvar _AXIS_Z;\nvar _v2;\nvar _v3A;\nvar _v3B;\nvar _v3C;\nvar _cameraDirection;\nvar _xColumn;\nvar _yColumn;\nvar _zColumn;\nvar _deltaTarget;\nvar _deltaOffset;\nvar _sphericalA;\nvar _sphericalB;\nvar _box3A;\nvar _box3B;\nvar _sphere;\nvar _quaternionA;\nvar _quaternionB;\nvar _rotationMatrix;\nvar _raycaster;\nvar CameraControls = class _CameraControls extends EventDispatcher {\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    _v2 = 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    _sphere = 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 fov = this._camera.getEffectiveFOV() * DEG2RAD;\n        const targetDistance = offset.length() * Math.tan(fov * 0.5);\n        truckX = this.truckSpeed * deltaX * targetDistance / this._elementRect.height;\n        pedestalY = this.truckSpeed * deltaY * targetDistance / this._elementRect.height;\n      } else if (isOrthographicCamera(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, y) => {\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 = clamp(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, y);\n      }\n      this._lastDollyDirection = Math.sign(-delta);\n    };\n    this._zoomInternal = (delta, x, y) => {\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, y);\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 : isOrthographicCamera(this._camera) ? ACTION.ZOOM : ACTION.NONE\n    };\n    this.touches = {\n      one: ACTION.TOUCH_ROTATE,\n      two: isPerspectiveCamera(this._camera) ? ACTION.TOUCH_DOLLY_TRUCK : isOrthographicCamera(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 now = performance.now();\n        if (lastScrollTimeStamp - now < 1e3)\n          this._getClientRect(this._elementRect);\n        lastScrollTimeStamp = now;\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 y = 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, y);\n          this._isUserControllingDolly = true;\n          break;\n        }\n        case ACTION.ZOOM: {\n          this._zoomInternal(-delta, x, y);\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, _v2);\n      this._getClientRect(this._elementRect);\n      dragStartPosition.copy(_v2);\n      lastDragPosition.copy(_v2);\n      const isMultiTouch = this._activePointers.length >= 2;\n      if (isMultiTouch) {\n        const dx = _v2.x - this._activePointers[1].clientX;\n        const dy = _v2.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 y = (this._activePointers[0].clientY + this._activePointers[1].clientY) * 0.5;\n        lastDragPosition.set(x, y);\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, _v2);\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 - _v2.x;\n      const deltaY = lockedPointer ? -lockedPointer.deltaY : lastDragPosition.y - _v2.y;\n      lastDragPosition.copy(_v2);\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 = _v2.x - this._activePointers[1].clientX;\n        const dy = _v2.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, _v2);\n      lastDragPosition.copy(_v2);\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 _a2, _b, _c;\n      if (this._lockedPointer !== null) {\n        this._disposePointer(this._lockedPointer);\n        this._lockedPointer = null;\n      }\n      (_a2 = this._domElement) === null || _a2 === void 0 ? void 0 : _a2.ownerDocument.exitPointerLock();\n      (_b = this._domElement) === null || _b === void 0 ? void 0 : _b.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 = clamp(interactiveArea.width, 0, 1);\n    this._interactiveArea.height = clamp(interactiveArea.height, 0, 1);\n    this._interactiveArea.x = clamp(interactiveArea.x, 0, 1 - this._interactiveArea.width);\n    this._interactiveArea.y = clamp(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. \u00B9 |\n   * | `'control'`         | When the user controls the camera (dragging). |\n   * | `'controlend'`      | When the user ends to control the camera. \u00B9 |\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` \u00B2. |\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\u00BA\n   *         \\\n   * 90\u00BA -----+----- -90\u00BA\n   *           \\\n   *           180\u00BA\n   * ```\n   * | direction | angle                  |\n   * | --------- | ---------------------- |\n   * | front     | 0\u00BA                     |\n   * | left      | 90\u00BA (`Math.PI / 2`)    |\n   * | right     | -90\u00BA (`- Math.PI / 2`) |\n   * | back      | 180\u00BA (`Math.PI`)       |\n   *\n   * polarAngle\n   * ```\n   *     180\u00BA\n   *      |\n   *      90\u00BA\n   *      |\n   *      0\u00BA\n   * ```\n   * | direction            | angle                  |\n   * | -------------------- | ---------------------- |\n   * | top/sky              | 180\u00BA (`Math.PI`)       |\n   * | horizontal from view | 90\u00BA (`Math.PI / 2`)    |\n   * | bottom/floor         | 0\u00BA                     |\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 = clamp(azimuthAngle, this.minAzimuthAngle, this.maxAzimuthAngle);\n    const phi = clamp(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(clamp(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 = clamp(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, y, enableTransition = false) {\n    console.warn(\"`pan` has been renamed to `truck`\");\n    return this.truck(x, y, 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, y, 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(-y);\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, y, z, enableTransition = false) {\n    this._isUserControllingTruck = false;\n    const offset = _v3A.set(x, y, z).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, y, z, enableTransition = false) {\n    const point = _v3A.set(x, y, z);\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 = 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, cover);\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 (isOrthographicCamera(this._camera)) {\n      const camera = this._camera;\n      const width = camera.right - camera.left;\n      const height = camera.top - camera.bottom;\n      const zoom = cover ? 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, _sphere) : _sphere.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 (isOrthographicCamera(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 target = _v3B.set(targetX, targetY, targetZ);\n    const position = _v3A.set(positionX, positionY, positionZ);\n    this._targetEnd.copy(target);\n    this._sphericalEnd.setFromVector3(position.sub(target).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, t, 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, t));\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 * t, _sphericalA.phi + deltaPhi * t, _sphericalA.theta + deltaTheta * t);\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 = clamp(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, y, z, enableTransition = false) {\n    this._isUserControllingOffset = false;\n    this._focalOffsetEnd.set(x, y, z);\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, y, 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, y, 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, cover = false) {\n    if (notSupportedInOrthographicCamera(this._camera, \"getDistanceToFitBox\"))\n      return this._spherical.radius;\n    const boundingRectAspect = width / height;\n    const fov = this._camera.getEffectiveFOV() * DEG2RAD;\n    const aspect = this._camera.aspect;\n    const heightToFit = (cover ? boundingRectAspect > aspect : boundingRectAspect < aspect) ? height : width / aspect;\n    return heightToFit * 0.5 / Math.tan(fov * 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() * DEG2RAD;\n    const hFOV = Math.atan(Math.tan(vFOV * 0.5) * this._camera.aspect) * 2;\n    const fov = 1 < this._camera.aspect ? vFOV : hFOV;\n    return radius / Math.sin(fov * 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() * DEG2RAD * 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 (isOrthographicCamera(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 fov = camera.getEffectiveFOV() * DEG2RAD;\n      const heightHalf = Math.tan(fov * 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 (isOrthographicCamera(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 i = 0; i < 4; i++) {\n      const nearPlaneCorner = _v3B.copy(this._nearPlaneCorners[i]);\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 intersects = _raycaster.intersectObjects(this.colliderMeshes);\n      if (intersects.length !== 0 && intersects[0].distance < distance) {\n        distance = intersects[0].distance;\n      }\n    }\n    return distance;\n  }\n  /**\n   * Get its client rect and package into given `DOMRect` .\n   */\n  _getClientRect(target) {\n    if (!this._domElement)\n      return;\n    const rect = this._domElement.getBoundingClientRect();\n    target.x = rect.left;\n    target.y = rect.top;\n    if (this._viewport) {\n      target.x += this._viewport.x;\n      target.y += rect.height - this._viewport.w - this._viewport.y;\n      target.width = this._viewport.z;\n      target.height = this._viewport.w;\n    } else {\n      target.width = rect.width;\n      target.height = rect.height;\n    }\n    return target;\n  }\n  _createOnRestPromise(resolveImmediately) {\n    if (resolveImmediately)\n      return Promise.resolve();\n    this._hasRested = false;\n    this.dispatchEvent({ type: \"transitionstart\" });\n    return new Promise((resolve) => {\n      const onResolve = () => {\n        this.removeEventListener(\"rest\", onResolve);\n        resolve();\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 i = 0, l = position.count; i < l; i++) {\n        _v3A.fromBufferAttribute(position, i);\n        maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_v3A));\n      }\n    });\n    boundingSphere.radius = Math.sqrt(maxRadiusSq);\n    return boundingSphere;\n  }\n};\n\n// src/ShaderGradient/Controls/CameraControl.tsx\nimport { jsx } from \"react/jsx-runtime\";\nfunction CameraControl(_a2) {\n  var _b = _a2, {\n    smoothTime = 0.05\n  } = _b, props = __objRest(_b, [\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  return (\n    // @ts-ignore\n    /* @__PURE__ */ jsx(\n      \"cameraControls\",\n      {\n        ref,\n        args: [camera, gl.domElement],\n        enableDamping: true,\n        smoothTime,\n        zoomSpeed: 10,\n        dollySpeed: 10,\n        restThreshold: 0\n      }\n    )\n  );\n}\n\nexport {\n  CameraControl\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  CameraControl\n} from \"./chunk-SU6VHGW3.mjs\";\nimport {\n  __spreadValues\n} from \"./chunk-5BEQP2BQ.mjs\";\n\n// src/ShaderGradient/Controls/Controls.tsx\nimport { Fragment, jsx } from \"react/jsx-runtime\";\nfunction Controls(props) {\n  return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(CameraControl, __spreadValues({}, props)) });\n}\n\nexport {\n  Controls\n};\n", "import {\n  useLoader\n} from \"./chunk-PBAUXUVF.mjs\";\nimport {\n  DataTextureLoader,\n  DataUtils,\n  FloatType,\n  HalfFloatType,\n  LinearFilter\n} from \"./chunk-M5G6JQMQ.mjs\";\n\n// ../../node_modules/.pnpm/three-stdlib@2.30.1_three@0.169.0/node_modules/three-stdlib/loaders/RGBELoader.js\nvar 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 p = buffer2.pos, i = -1, len = 0, s = \"\", chunk = String.fromCharCode.apply(null, new Uint16Array(buffer2.subarray(p, p + chunkSize)));\n      while (0 > (i = chunk.indexOf(NEWLINE)) && len < lineLimit && p < buffer2.byteLength) {\n        s += chunk;\n        len += chunk.length;\n        p += chunkSize;\n        chunk += String.fromCharCode.apply(null, new Uint16Array(buffer2.subarray(p, p + chunkSize)));\n      }\n      if (-1 < i) {\n        if (false !== consume)\n          buffer2.pos += len + i + 1;\n        return s + chunk.slice(0, i);\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, h2) {\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 * h2);\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 = h2;\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 i = 0; i < count; i++) {\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 l = scanline_width;\n        for (let i = 0; i < l; i++) {\n          let off = 0;\n          data_rgba[offset] = scanline_buffer[i + off];\n          off += scanline_width;\n          data_rgba[offset + 1] = scanline_buffer[i + off];\n          off += scanline_width;\n          data_rgba[offset + 2] = scanline_buffer[i + off];\n          off += scanline_width;\n          data_rgba[offset + 3] = scanline_buffer[i + 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, h = rgbe_header_info.height, image_rgba_data = RGBE_ReadPixels_RLE(byteArray.subarray(byteArray.pos), w, h);\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 j = 0; j < numElements; j++) {\n          RGBEByteToRGBFloat(image_rgba_data, j * 4, floatArray, j * 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 j = 0; j < numElements; j++) {\n          RGBEByteToRGBHalf(image_rgba_data, j * 4, halfArray, j * 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: h,\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\n// src/ShaderGradient/Lights/Environment/useRGBELoader.ts\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}\n\nexport {\n  useRGBELoader\n};\n", "import {\n  useRGBELoader\n} from \"./chunk-FMYDOIX6.mjs\";\nimport {\n  useThree\n} from \"./chunk-PBAUXUVF.mjs\";\nimport {\n  EquirectangularReflectionMapping\n} from \"./chunk-M5G6JQMQ.mjs\";\nimport {\n  envBasePath\n} from \"./chunk-SX7QUDKQ.mjs\";\n\n// src/ShaderGradient/Lights/Environment/EnvironmentMap.tsx\nimport React from \"react\";\nvar isRef = (obj) => obj.current && obj.current.isScene;\nvar resolveScene = (scene) => isRef(scene) ? scene.current : scene;\nfunction EnvironmentMap({ background = false, envPreset }) {\n  const city = useRGBELoader(\"city.hdr\", { path: envBasePath });\n  const dawn = useRGBELoader(\"dawn.hdr\", { path: envBasePath });\n  const lobby = useRGBELoader(\"lobby.hdr\", { path: envBasePath });\n  const textures = { city, dawn, lobby };\n  const map = textures[envPreset];\n  const defaultScene = useThree((state) => state.scene);\n  React.useLayoutEffect(() => {\n    if (map) {\n      const target = resolveScene(defaultScene);\n      const oldbg = target.background;\n      const oldenv = target.environment;\n      if (background !== \"only\") target.environment = map;\n      if (background) target.background = map;\n      return () => {\n        if (background !== \"only\") target.environment = oldenv;\n        if (background) target.background = \"black\";\n      };\n    }\n  }, [defaultScene, map, background]);\n  const texture = map;\n  texture.mapping = EquirectangularReflectionMapping;\n  return null;\n}\n\nexport {\n  EnvironmentMap\n};\n", "import {\n  EnvironmentMap\n} from \"./chunk-3IAOHWI6.mjs\";\n\n// src/ShaderGradient/Lights/Lights.tsx\nimport { Suspense } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nfunction Lights({\n  lightType,\n  brightness,\n  envPreset\n}) {\n  return /* @__PURE__ */ jsxs(Fragment, { children: [\n    lightType === \"3d\" && /* @__PURE__ */ jsx(\"ambientLight\", { intensity: (brightness || 1) * Math.PI }),\n    lightType === \"env\" && /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(Loader, {}), children: /* @__PURE__ */ jsx(\n      EnvironmentMap,\n      {\n        envPreset,\n        background: false,\n        loadingCallback: () => void 0\n      }\n    ) })\n  ] });\n}\nfunction Loader() {\n  return /* @__PURE__ */ jsx(\"ambientLight\", { intensity: 0.4 });\n}\n\nexport {\n  Lights\n};\n", "// src/shaders/a/vertex.glsl\nvar 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;\\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  // 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// src/shaders/a/fragment.glsl\nvar 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\n// src/shaders/a/vertexSphere.glsl\nvar vertexSphere_default = \"// #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// src/shaders/a/fragmentSphere.glsl\nvar fragmentSphere_default = \"\\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\nexport {\n  vertex_default,\n  fragment_default,\n  vertexSphere_default,\n  fragmentSphere_default\n};\n", "// src/ShaderGradient/Mesh/Geometry.tsx\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar meshCount = 192;\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}\n\nexport {\n  Geometry\n};\n", "// src/utils/color.ts\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}\n\nexport {\n  colorToRgb,\n  formatColor\n};\n", "import {\n  colorToRgb,\n  formatColor\n} from \"./chunk-BI5IV7LU.mjs\";\nimport {\n  useFrame\n} from \"./chunk-PBAUXUVF.mjs\";\nimport {\n  DoubleSide,\n  MeshPhysicalMaterial,\n  UniformsUtils\n} from \"./chunk-M5G6JQMQ.mjs\";\nimport {\n  __spreadValues\n} from \"./chunk-5BEQP2BQ.mjs\";\n\n// src/ShaderGradient/Mesh/Materials.tsx\nimport { useEffect, useMemo } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar Materials = ({\n  animate,\n  uniforms,\n  vertexShader,\n  fragmentShader,\n  onInit\n}) => {\n  const material = useMemo(() => {\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 material2 = new MeshPhysicalMaterial({\n      userData: uniformValues,\n      // sync uniform and userData to update uniforms from outside (MeshPhysicalMaterial)\n      metalness: 0.2,\n      // similar effects reducing -0.2 intensity of the ambient light\n      side: DoubleSide,\n      onBeforeCompile: (shader) => {\n        shader.uniforms = __spreadValues(__spreadValues(__spreadValues({}, shader.uniforms), uniformValues), rgbColors);\n        shader.vertexShader = vertexShader;\n        shader.fragmentShader = fragmentShader;\n      }\n      // wireframe: true,\n    });\n    entries.forEach(\n      ([name]) => Object.defineProperty(material2, name, {\n        get: () => material2.uniforms[name].value,\n        set: (v) => material2.uniforms[name].value = v\n      })\n    );\n    if (onInit) onInit(material2);\n    return material2;\n  }, [uniforms, vertexShader, fragmentShader, onInit]);\n  useEffect(() => {\n    return () => {\n      material.dispose();\n    };\n  }, [material]);\n  useFrame(({ clock }) => {\n    if (animate === \"on\" && material.userData.uTime) {\n      material.userData.uTime.value = clock.getElapsedTime();\n    }\n  });\n  return /* @__PURE__ */ jsx(\"primitive\", { attach: \"material\", object: material });\n};\n\nexport {\n  Materials\n};\n", "import {\n  fragmentSphere_default,\n  fragment_default,\n  vertexSphere_default,\n  vertex_default\n} from \"./chunk-WMVG427C.mjs\";\nimport {\n  Geometry\n} from \"./chunk-WBM42ICI.mjs\";\nimport {\n  Materials\n} from \"./chunk-LJBCYGOI.mjs\";\nimport {\n  dToRArr\n} from \"./chunk-G7COPUKV.mjs\";\n\n// src/ShaderGradient/Mesh/Mesh.tsx\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction Mesh({\n  animate,\n  positionX,\n  positionY,\n  positionZ,\n  rotationX,\n  rotationY,\n  rotationZ,\n  type,\n  color1,\n  color2,\n  color3,\n  uTime,\n  uSpeed,\n  uDensity,\n  uStrength,\n  uFrequency,\n  uAmplitude\n}) {\n  return /* @__PURE__ */ jsxs(\n    \"mesh\",\n    {\n      name: \"shadergradient-mesh\",\n      position: [positionX, positionY, positionZ],\n      rotation: dToRArr([rotationX, rotationY, rotationZ]),\n      children: [\n        /* @__PURE__ */ jsx(Geometry, { type }),\n        /* @__PURE__ */ jsx(\n          Materials,\n          {\n            animate,\n            uniforms: {\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            },\n            vertexShader: type === \"sphere\" ? vertexSphere_default : vertex_default,\n            fragmentShader: type === \"sphere\" ? fragmentSphere_default : fragment_default,\n            onInit: (material) => {\n              console.log(\"material (onInit)\", material);\n            }\n          }\n        )\n      ]\n    }\n  );\n}\n\nexport {\n  Mesh\n};\n", "import {\n  __export\n} from \"./chunk-5BEQP2BQ.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 = {};\nvar module = {\n  get exports() {\n    return exports;\n  },\n  set exports(value) {\n    exports = value;\n  }\n};\nmodule.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};\nvar filter_obj_default = module.exports;\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 = {};\nvar module2 = {\n  get exports() {\n    return exports2;\n  },\n  set exports(value) {\n    exports2 = value;\n  }\n};\nmodule2.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};\nvar split_on_first_default = module2.exports;\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});\nvar exports3 = {};\nvar module3 = {\n  get exports() {\n    return exports3;\n  },\n  set exports(value) {\n    exports3 = value;\n  }\n};\nvar token = \"%[a-f0-9]{2}\";\nvar singleMatcher = new RegExp(\"(\" + token + \")|([^%]+?)\", \"gi\");\nvar multiMatcher = new RegExp(\"(\" + token + \")+\", \"gi\");\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}\nmodule3.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};\nvar decode_uri_component_default = module3.exports;\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 = {};\nvar module4 = {\n  get exports() {\n    return exports4;\n  },\n  set exports(value) {\n    exports4 = value;\n  }\n};\nmodule4.exports = (str) => encodeURIComponent(str).replace(/[!'()*]/g, (x) => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\nvar strict_uri_encode_default = module4.exports;\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}\nvar global = typeof window !== \"undefined\" && window || typeof self !== \"undefined\" && self || typeof global !== \"undefined\" && global || typeof globalThis !== \"undefined\" && globalThis || {};\nvar exports5 = {};\nvar module5 = {\n  get exports() {\n    return exports5;\n  },\n  set exports(value) {\n    exports5 = value;\n  }\n};\nvar strictUriEncode = __cjs_default__(typeof strict_uri_encode_exports !== \"undefined\" ? strict_uri_encode_exports : {});\nvar decodeComponent = __cjs_default__(typeof decode_uri_component_exports !== \"undefined\" ? decode_uri_component_exports : {});\nvar splitOnFirst = __cjs_default__(typeof split_on_first_exports !== \"undefined\" ? split_on_first_exports : {});\nvar filterObject = __cjs_default__(typeof filter_obj_exports !== \"undefined\" ? filter_obj_exports : {});\nvar isNullOrUndefined = (value) => value === null || value === void 0;\nvar encodeFragmentIdentifier = Symbol(\"encodeFragmentIdentifier\");\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}\nexports5.extract = extract;\nexports5.parse = parse;\nexports5.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};\nexports5.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};\nexports5.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};\nexports5.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};\nexports5.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};\nvar __export0;\nvar __export1;\nvar __export2;\nvar __export3;\nvar __export4;\nvar __export5;\nvar __export6;\nif (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}\nvar query_string_default = module5.exports;\n\nexport {\n  __export1,\n  __export4\n};\n", "// src/presets.ts\nvar presets = {\n  base: {\n    title: \"Base\",\n    color: \"white\",\n    props: {\n      positionX: 0,\n      positionY: 0,\n      positionZ: 0,\n      rotationX: 0,\n      rotationY: 0,\n      rotationZ: 0,\n      uAmplitude: 2,\n      color1: \"#ff5005\",\n      color2: \"#dbba95\",\n      color3: \"#d0bce1\"\n    }\n  },\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: \"enabled\",\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: \"enabled\",\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: \"enabled\",\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: \"enabled\",\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};\nvar initialActivePreset = 0;\nvar presetsArray = Object.values(presets);\n\nexport {\n  presets,\n  initialActivePreset,\n  presetsArray\n};\n", "import {\n  PostProcessing\n} from \"./chunk-K6AX6D7Y.mjs\";\nimport {\n  Controls\n} from \"./chunk-UBHL4FP4.mjs\";\nimport {\n  Lights\n} from \"./chunk-3TWSDFLC.mjs\";\nimport {\n  Mesh\n} from \"./chunk-K4ZFJCJ3.mjs\";\nimport {\n  __export1\n} from \"./chunk-AVODCFKL.mjs\";\nimport {\n  formatUrlString\n} from \"./chunk-G7COPUKV.mjs\";\nimport {\n  presets\n} from \"./chunk-RFZ5WM4S.mjs\";\nimport {\n  __objRest,\n  __spreadValues\n} from \"./chunk-5BEQP2BQ.mjs\";\n\n// src/ShaderGradient/ShaderGradient.tsx\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nfunction ShaderGradient(passedProps) {\n  const _a = __spreadValues(__spreadValues({}, presets.halo.props), passedProps), { control, urlString } = _a, rest = __objRest(_a, [\"control\", \"urlString\"]);\n  let props = rest;\n  if (control === \"query\")\n    props = __export1(formatUrlString(urlString), {\n      parseNumbers: true,\n      parseBooleans: true,\n      arrayFormat: \"index\"\n    });\n  const _b = props, { lightType, envPreset, brightness, grain, toggleAxis } = _b, others = __objRest(_b, [\"lightType\", \"envPreset\", \"brightness\", \"grain\", \"toggleAxis\"]);\n  return /* @__PURE__ */ jsxs(Fragment, { children: [\n    /* @__PURE__ */ jsx(Mesh, __spreadValues({}, props)),\n    /* @__PURE__ */ jsx(\n      Lights,\n      {\n        lightType,\n        brightness,\n        envPreset\n      }\n    ),\n    grain !== \"off\" && /* @__PURE__ */ jsx(PostProcessing, {}),\n    /* @__PURE__ */ jsx(Controls, __spreadValues({}, props))\n  ] });\n}\n\nexport {\n  ShaderGradient\n};\n", "import {\n  ShaderGradientCanvas\n} from \"./chunk-RNORR4OK.mjs\";\nimport \"./chunk-35NIH65G.mjs\";\nimport {\n  ShaderGradient\n} from \"./chunk-BWWR5P6F.mjs\";\nimport \"./chunk-BKMGN7IO.mjs\";\nimport \"./chunk-WGOL3MLC.mjs\";\nimport \"./chunk-K6AX6D7Y.mjs\";\nimport \"./chunk-FFUMSB5Y.mjs\";\nimport \"./chunk-2FDB6CTQ.mjs\";\nimport \"./chunk-D6HO7KA7.mjs\";\nimport \"./chunk-Z2ZIK3HP.mjs\";\nimport \"./chunk-C4TFB3WJ.mjs\";\nimport \"./chunk-USQFKVUW.mjs\";\nimport \"./chunk-7HNM7AEP.mjs\";\nimport \"./chunk-N6TUE7XZ.mjs\";\nimport \"./chunk-3U6A2N6D.mjs\";\nimport \"./chunk-AJ4ZTHOA.mjs\";\nimport \"./chunk-54NE35C4.mjs\";\nimport \"./chunk-4NRCS6EB.mjs\";\nimport \"./chunk-X2NOPSAQ.mjs\";\nimport \"./chunk-UBHL4FP4.mjs\";\nimport \"./chunk-F5B5J54Z.mjs\";\nimport \"./chunk-3TWSDFLC.mjs\";\nimport \"./chunk-EQTKUIXJ.mjs\";\nimport \"./chunk-3IAOHWI6.mjs\";\nimport \"./chunk-FMYDOIX6.mjs\";\nimport \"./chunk-K4ZFJCJ3.mjs\";\nimport \"./chunk-WMVG427C.mjs\";\nimport \"./chunk-WBM42ICI.mjs\";\nimport \"./chunk-LJBCYGOI.mjs\";\nimport \"./chunk-AVODCFKL.mjs\";\nimport \"./chunk-SU6VHGW3.mjs\";\nimport \"./chunk-XX6QE2RT.mjs\";\nimport \"./chunk-G7COPUKV.mjs\";\nimport \"./chunk-BI5IV7LU.mjs\";\nimport \"./chunk-PBAUXUVF.mjs\";\nimport \"./chunk-M5G6JQMQ.mjs\";\nimport \"./chunk-SX7QUDKQ.mjs\";\nimport \"./chunk-RFZ5WM4S.mjs\";\nimport {\n  __objRest,\n  __spreadValues\n} from \"./chunk-5BEQP2BQ.mjs\";\n\n// src/FramerShaderGradient.tsx\nimport { ControlType } from \"framer\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction FramerShaderGradient(_a) {\n  var _b = _a, {\n    position,\n    rotation,\n    cameraAngle,\n    noise\n  } = _b, rest = __objRest(_b, [\n    \"position\",\n    \"rotation\",\n    \"cameraAngle\",\n    \"noise\"\n  ]);\n  const { positionX, positionY, positionZ } = position;\n  const { rotationX, rotationY, rotationZ } = rotation;\n  const { cAzimuthAngle, cPolarAngle } = cameraAngle;\n  const { uDensity, uStrength } = noise;\n  return /* @__PURE__ */ jsx(\n    ShaderGradient,\n    __spreadValues({\n      positionX,\n      positionY,\n      positionZ,\n      rotationX,\n      rotationY,\n      rotationZ,\n      cAzimuthAngle,\n      cPolarAngle,\n      uDensity,\n      uStrength\n    }, rest)\n  );\n}\nFramerShaderGradient.propertyControls = {\n  control: {\n    type: ControlType.Enum,\n    options: [\"props\", \"query\"],\n    optionTitles: [\"Props\", \"Query\"],\n    displaySegmentedControl: true\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\"],\n    optionTitles: [\"Type A\", \"Type B\"],\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  pixelDensity: {\n    type: ControlType.Number,\n    step: 0.1,\n    min: 0,\n    max: 3,\n    displayStepper: true,\n    defaultValue: 1,\n    hidden: (props) => 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: \"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=enabled&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 (\uD83E\uDDF0)\n  zoomOut: {\n    type: ControlType.Boolean,\n    title: \"View\",\n    enabledTitle: \"Wide\",\n    disabledTitle: \"-\",\n    hidden: (props) => props.control === \"query\"\n  },\n  toggleAxis: {\n    type: ControlType.Boolean,\n    title: \"Axis\",\n    enabledTitle: \"Guide\",\n    disabledTitle: \"-\",\n    hidden: (props) => props.control === \"query\"\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  performantOnCanvas: {\n    type: ControlType.Boolean,\n    defaultValue: false\n  }\n};\nexport {\n  FramerShaderGradient,\n  ShaderGradientCanvas\n};\n", "import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls}from\"framer\";import*as m from\"https://ruucm.github.io/shadergradient/shadergradient@2.0.15/FramerShaderGradient.mjs\";/**\n * @framerIntrinsicHeight 700\n * @framerIntrinsicWidth 500\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function ShaderGradient(props){return /*#__PURE__*/_jsx(m.ShaderGradientCanvas,{pointerEvents:props.pointerEvents,children:/*#__PURE__*/_jsx(m.FramerShaderGradient,{...props})});}addPropertyControls(ShaderGradient,m.FramerShaderGradient.propertyControls||{});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ShaderGradient\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"700\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerIntrinsicWidth\":\"500\",\"framerSupportedLayoutWidth\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ShaderGradient.map"],
  "mappings": "0dACqW,IAAMA,GAAW,CAAC,YAAY,YAAY,YAAY,WAAW,EAAQC,GAAkB,eAAqBC,GAAkB,CAAC,UAAU,kBAAkB,UAAU,kBAAkB,UAAU,kBAAkB,UAAU,iBAAiB,EAAE,SAASC,GAAqBC,KAAaC,EAAS,CAAC,IAAMC,EAAc,CAAC,EAAE,OAAAD,GAAU,QAAQE,GAASA,GAAS,OAAO,OAAOD,EAAcF,EAAUG,CAAO,CAAC,CAAC,EAASD,CAAc,CAAC,IAAME,GAAY,CAAC,QAAQ,GAAG,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,KAAK,QAAQ,EAAQC,GAAW,CAAC,CAAC,MAAAC,EAAM,SAAAC,CAAQ,IAAI,CAAC,IAAMC,EAAaC,GAAWC,EAAmB,EAAQC,EAAWL,GAAOE,EAAO,WAAiBI,EAAmBC,GAAQ,KAAK,CAAC,GAAGL,EAAO,WAAAG,CAAU,GAAG,CAAC,KAAK,UAAUA,CAAU,CAAC,CAAC,EAAE,OAAoBG,GAAKJ,GAAoB,SAAS,CAAC,MAAME,EAAa,SAASL,CAAQ,CAAC,CAAE,EAAQQ,GAASC,GAAO,OAAaC,EAAQ,EAAQC,GAAwB,CAAC,eAAe,YAAY,eAAe,YAAY,aAAa,YAAY,aAAa,WAAW,EAAQC,GAAS,CAAC,CAAC,OAAAC,EAAO,GAAAC,EAAG,KAAAC,EAAK,MAAAC,EAAM,GAAGC,CAAK,KAAW,CAAC,GAAGA,EAAM,UAAUF,GAAME,EAAM,WAAW,mDAAmD,QAAQN,GAAwBM,EAAM,OAAO,GAAGA,EAAM,SAAS,WAAW,GAAUC,GAAuB,CAACD,EAAMvB,IAAeuB,EAAM,iBAAwBvB,EAAS,KAAK,GAAG,EAAEuB,EAAM,iBAAwBvB,EAAS,KAAK,GAAG,EAAUyB,GAA6BC,GAAW,SAASH,EAAMI,EAAI,CAAC,IAAMC,EAAYC,GAAO,IAAI,EAAQC,EAAWH,GAAKC,EAAkBG,EAAsBC,GAAM,EAAO,CAAC,aAAAC,EAAa,UAAAC,CAAS,EAAEC,GAAc,EAAQC,EAAkBC,GAAqB,EAAO,CAAC,MAAAC,EAAM,UAAAC,EAAU,SAAAC,EAAS,QAAAtC,EAAQ,UAAAuC,EAAU,GAAGC,CAAS,EAAExB,GAASK,CAAK,EAAO,CAAC,YAAAoB,EAAY,WAAAC,EAAW,oBAAAC,EAAoB,gBAAAC,EAAgB,eAAAC,EAAe,UAAAC,EAAU,gBAAAC,EAAgB,WAAAC,EAAW,SAAAlD,CAAQ,EAAEmD,GAAgB,CAAC,WAAAxD,GAAW,eAAe,YAAY,IAAImC,EAAW,QAAA5B,EAAQ,kBAAAL,EAAiB,CAAC,EAAQuD,EAAiB5B,GAAuBD,EAAMvB,CAAQ,EAAO,CAAC,sBAAAqD,EAAsB,MAAAC,CAAK,EAAEC,GAAyBZ,CAAW,EAAQa,EAAeH,EAAsB,SAASI,IAAO,CAAC,MAAMH,EAAM,IAAIJ,EAAW,WAAW,EAAE,GAAG,CAAE,CAAC,EAAQQ,EAAgBL,EAAsB,SAASI,IAAO,CAAC,MAAMH,EAAM,IAAIJ,EAAW,WAAW,EAAE,GAAG,CAAE,CAAC,EAAES,GAAmBhB,EAAY,CAAC,UAAU,OAAU,QAAQa,EAAe,UAAUE,EAAgB,UAAU,MAAS,CAAC,EAAiC,IAAME,EAAkBC,GAAGjE,GAAkB,GAAhD,CAAC,CAAuE,EAAQkE,EAAY,IAAQ,GAAC,YAAY,WAAW,EAAE,SAASnB,CAAW,EAA6B,OAAoB9B,GAAKkD,GAAY,CAAC,GAAGvB,GAAUT,EAAgB,SAAsBlB,GAAKC,GAAS,CAAC,QAAQd,EAAS,QAAQ,GAAM,SAAsBa,GAAKT,GAAW,CAAC,MAAMD,GAAY,SAAsB6D,GAAMjD,GAAO,IAAI,CAAC,GAAG2B,EAAU,GAAGI,EAAgB,UAAUe,GAAGD,EAAkB,gBAAgBrB,EAAUK,CAAU,EAAE,mBAAmB,eAAe,iBAAiB,GAAK,iBAAiBQ,EAAiB,SAAS,YAAY,IAAItB,EAAW,MAAM,CAAC,GAAGQ,CAAK,EAAE,GAAGxC,GAAqB,CAAC,UAAU,CAAC,mBAAmB,aAAa,iBAAiB,MAAS,EAAE,UAAU,CAAC,mBAAmB,cAAc,EAAE,UAAU,CAAC,mBAAmB,aAAa,iBAAiB,MAAS,CAAC,EAAE6C,EAAYI,CAAc,EAAE,SAAS,CAAclC,GAAKoD,GAAI,CAAC,UAAU,iBAAiB,mBAAmB,YAAY,OAAO,WAAW,iBAAiBb,EAAiB,SAAS,YAAY,QAAQ,EAAE,IAAI,mRAAmR,aAAa,YAAY,mBAAmB,GAAK,GAAGtD,GAAqB,CAAC,UAAU,CAAC,IAAI,4XAA4X,aAAa,WAAW,EAAE,UAAU,CAAC,IAAI,4XAA4X,aAAa,WAAW,CAAC,EAAE6C,EAAYI,CAAc,CAAC,CAAC,EAAEe,EAAY,GAAgBjD,GAAKqD,GAAS,CAAC,sBAAsB,GAAK,SAAsBrD,GAAWG,GAAS,CAAC,SAAsBH,GAAKE,GAAO,GAAG,CAAC,MAAM,CAAC,kBAAkB,uCAAuC,uBAAuB,+DAA+D,qBAAqB,OAAO,0BAA0B,UAAU,uBAAuB,OAAO,0BAA0B,SAAS,sBAAsB,6FAA6F,EAAE,SAAS,kDAAkD,CAAC,CAAC,CAAC,EAAE,UAAU,eAAe,mBAAmB,mDAAmD,MAAM,CAAC,4BAA4B,EAAE,iBAAiBqC,EAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,qEAAqE,6BAA6B,KAAK,EAAE,KAAKX,EAAU,SAAS,CAAC,UAAU,CAAC,qBAAqB,uEAAuE,CAAC,EAAE,kBAAkB,MAAM,mBAAmB,GAAK,GAAG3C,GAAqB,CAAC,UAAU,CAAC,SAAsBe,GAAWG,GAAS,CAAC,SAAsBH,GAAKE,GAAO,GAAG,CAAC,MAAM,CAAC,kBAAkB,uCAAuC,uBAAuB,+DAA+D,qBAAqB,OAAO,0BAA0B,UAAU,uBAAuB,OAAO,0BAA0B,SAAS,sBAAsB,gGAAgG,EAAE,SAAS,kDAAkD,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE4B,EAAYI,CAAc,CAAC,CAAC,EAAelC,GAAKoD,GAAI,CAAC,UAAU,gBAAgB,mBAAmB,aAAa,OAAO,WAAW,iBAAiBb,EAAiB,SAAS,YAAY,QAAQ,EAAE,IAAI,mRAAmR,aAAa,WAAW,mBAAmB,GAAK,GAAGtD,GAAqB,CAAC,UAAU,CAAC,IAAI,4XAA4X,aAAa,UAAU,EAAE,UAAU,CAAC,IAAI,4XAA4X,aAAa,UAAU,CAAC,EAAE6C,EAAYI,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAQoB,GAAI,CAAC,kFAAkF,gFAAgF,kQAAkQ,8HAA8H,kKAAkK,yGAAyG,EAW10RC,GAAgBC,GAAQ5C,GAAU0C,GAAI,cAAc,EAASG,GAAQF,GAAgBA,GAAgB,YAAY,yBAAyBA,GAAgB,aAAa,CAAC,OAAO,IAAI,MAAM,MAAM,EAAEG,GAAoBH,GAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,YAAY,YAAY,WAAW,EAAE,aAAa,CAAC,eAAe,aAAa,eAAe,YAAY,EAAE,MAAM,UAAU,KAAKI,GAAY,IAAI,EAAE,UAAU,CAAC,aAAa,mDAAmD,gBAAgB,GAAK,MAAM,OAAO,KAAKA,GAAY,MAAM,CAAC,CAAC,EAAEC,GAASL,GAAgB,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,OAAO,kBAAkB,OAAO,SAAS,MAAM,SAAS,IAAI,8GAA8G,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,6BAA6B,EAAI,CAAC,ECXjf,IAAMM,GAAW,CAAC,YAAY,YAAY,YAAY,WAAW,EAAQC,GAAkB,eAAqBC,GAAkB,CAAC,UAAU,mBAAmB,UAAU,mBAAmB,UAAU,mBAAmB,UAAU,kBAAkB,EAAE,SAASC,GAAqBC,KAAaC,EAAS,CAAC,IAAMC,EAAc,CAAC,EAAE,OAA0CD,GAAS,QAAQE,GAASA,GAAS,OAAO,OAAOD,EAAcF,EAAUG,CAAO,CAAC,CAAC,EAASD,CAAc,CAAC,IAAME,GAAY,CAAC,QAAQ,GAAG,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,KAAK,QAAQ,EAAQC,GAAW,CAAC,CAAC,MAAAC,EAAM,SAAAC,CAAQ,IAAI,CAAC,IAAMC,EAAaC,GAAWC,EAAmB,EAAQC,EAAWL,GAAmCE,EAAO,WAAiBI,EAAmBC,GAAQ,KAAK,CAAC,GAAGL,EAAO,WAAAG,CAAU,GAAG,CAAC,KAAK,UAAUA,CAAU,CAAC,CAAC,EAAE,OAAoBG,GAAKJ,GAAoB,SAAS,CAAC,MAAME,EAAa,SAASL,CAAQ,CAAC,CAAE,EAAQQ,GAASC,GAAO,OAAaC,EAAQ,EAAQC,GAAwB,CAAC,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAQC,GAAS,CAAC,CAAC,OAAAC,EAAO,GAAAC,EAAG,KAAAC,EAAK,MAAAC,EAAM,GAAGC,CAAK,IAAI,CAAC,IAAIC,EAAKC,EAAuCC,EAAM,MAAM,CAAC,GAAGH,EAAM,WAAWC,EAAKH,GAAgCE,EAAM,aAAa,MAAMC,IAAO,OAAOA,EAAK,mDAAmD,SAASE,GAAOD,EAAuCR,GAAwBM,EAAM,OAAO,KAAK,MAAME,IAAyC,OAAOA,EAAuCF,EAAM,WAAW,MAAMG,IAAQ,OAAOA,EAAM,WAAW,CAAE,EAAQC,GAAuB,CAACJ,EAAMvB,IAAeuB,EAAM,iBAAwBvB,EAAS,KAAK,GAAG,EAAEuB,EAAM,iBAAwBvB,EAAS,KAAK,GAAG,EAAU4B,GAA6BC,GAAW,SAASN,EAAMO,EAAI,CAAC,GAAK,CAAC,aAAAC,EAAa,UAAAC,CAAS,EAAEC,GAAc,EAAO,CAAC,MAAAC,EAAM,UAAAC,EAAU,SAAAC,EAAS,QAAAlC,EAAQ,UAAAmC,EAAU,GAAGC,CAAS,EAAEpB,GAASK,CAAK,EAAO,CAAC,YAAAgB,EAAY,WAAAC,EAAW,oBAAAC,EAAoB,gBAAAC,EAAgB,eAAAC,EAAe,UAAAC,EAAU,gBAAAC,EAAgB,WAAAC,EAAW,SAAA9C,CAAQ,EAAE+C,GAAgB,CAAC,WAAApD,GAAW,eAAe,YAAY,QAAAO,EAAQ,kBAAAL,EAAiB,CAAC,EAAQmD,EAAiBrB,GAAuBJ,EAAMvB,CAAQ,EAAO,CAAC,sBAAAiD,EAAsB,MAAAC,CAAK,EAAEC,GAAyBZ,CAAW,EAAQa,EAAgBH,EAAsB,SAASI,IAAO,CAAC,MAAMH,EAAM,IAAIJ,EAAW,WAAW,EAAE,GAAG,CAAE,CAAC,EAAQQ,EAAeL,EAAsB,SAASI,IAAO,CAAC,MAAMH,EAAM,IAAIJ,EAAW,WAAW,EAAE,GAAG,CAAE,CAAC,EAAES,GAAmBhB,EAAY,CAAC,QAAQa,EAAgB,UAAUE,EAAe,UAAU,MAAS,CAAC,EAAE,IAAME,EAAWC,GAAO,IAAI,EAAQC,EAAY,IAAQ,GAAC,YAAY,WAAW,EAAE,SAASnB,CAAW,EAAmCoB,EAAsBC,GAAM,EAAQC,EAAsB,CAAC,EAAQC,EAAkBC,GAAqB,EAAE,OAAoBlD,GAAKmD,GAAY,CAAC,GAAG5B,GAA4CuB,EAAgB,SAAsB9C,GAAKC,GAAS,CAAC,QAAQd,EAAS,QAAQ,GAAM,SAAsBa,GAAKT,GAAW,CAAC,MAAMD,GAAY,SAAsB8D,GAAMlD,GAAO,IAAI,CAAC,GAAGuB,EAAU,GAAGI,EAAgB,UAAUwB,GAAGtE,GAAkB,GAAGiE,EAAsB,iBAAiB1B,EAAUK,CAAU,EAAE,mBAAmB,YAAY,iBAAiB,GAAK,iBAAiBQ,EAAiB,SAAS,YAAY,IAAIlB,GAA6B0B,EAAK,MAAM,CAAC,GAAGtB,CAAK,EAAE,GAAGpC,GAAqB,CAAC,UAAU,CAAC,mBAAmB,WAAW,EAAE,UAAU,CAAC,mBAAmB,WAAW,EAAE,UAAU,CAAC,mBAAmB,YAAY,iBAAiB,MAAS,CAAC,EAAEyC,EAAYI,CAAc,EAAE,SAAS,CAAc9B,GAAKsD,GAAI,CAAC,UAAU,iBAAiB,mBAAmB,YAAY,OAAO,WAAW,iBAAiBnB,EAAiB,SAAS,YAAY,QAAQ,EAAE,IAAI,8QAA8Q,aAAa,YAAY,mBAAmB,GAAK,GAAGlD,GAAqB,CAAC,UAAU,CAAC,IAAI,uXAAuX,aAAa,WAAW,EAAE,UAAU,CAAC,IAAI,uXAAuX,aAAa,WAAW,CAAC,EAAEyC,EAAYI,CAAc,CAAC,CAAC,EAAEe,EAAY,GAAgB7C,GAAKuD,GAAS,CAAC,sBAAsB,GAAK,SAAsBH,GAAYjD,GAAS,CAAC,SAAS,CAAcH,GAAKE,GAAO,EAAE,CAAC,MAAM,CAAC,kBAAkB,uCAAuC,uBAAuB,+DAA+D,qBAAqB,OAAO,0BAA0B,UAAU,uBAAuB,OAAO,0BAA0B,SAAS,sBAAsB,0CAA0C,EAAE,SAAS,iBAAiB,CAAC,EAAeF,GAAKE,GAAO,EAAE,CAAC,MAAM,CAAC,kBAAkB,uCAAuC,uBAAuB,+DAA+D,qBAAqB,OAAO,0BAA0B,UAAU,uBAAuB,OAAO,0BAA0B,SAAS,sBAAsB,0CAA0C,EAAE,SAAS,mCAAmC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,gBAAgB,mBAAmB,mDAAmD,MAAM,CAAC,4BAA4B,EAAE,iBAAiBiC,EAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,kBAAkB,qBAAqB,kBAAkB,6BAA6B,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC,qBAAqB,wEAAwE,qBAAqB,uEAAuE,CAAC,EAAE,kBAAkB,MAAM,mBAAmB,GAAK,GAAGlD,GAAqB,CAAC,UAAU,CAAC,SAAsBmE,GAAYjD,GAAS,CAAC,SAAS,CAAcH,GAAKE,GAAO,EAAE,CAAC,MAAM,CAAC,kBAAkB,uCAAuC,uBAAuB,+DAA+D,qBAAqB,OAAO,0BAA0B,UAAU,uBAAuB,OAAO,0BAA0B,SAAS,sBAAsB,gGAAgG,EAAE,SAAS,iBAAiB,CAAC,EAAeF,GAAKE,GAAO,EAAE,CAAC,MAAM,CAAC,kBAAkB,uCAAuC,uBAAuB,+DAA+D,qBAAqB,OAAO,0BAA0B,UAAU,uBAAuB,OAAO,0BAA0B,SAAS,sBAAsB,gGAAgG,EAAE,SAAS,mCAAmC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKsB,CAAS,CAAC,EAAEE,EAAYI,CAAc,CAAC,CAAC,EAAe9B,GAAKsD,GAAI,CAAC,UAAU,iBAAiB,mBAAmB,aAAa,OAAO,WAAW,iBAAiBnB,EAAiB,SAAS,YAAY,QAAQ,EAAE,IAAI,8QAA8Q,aAAa,WAAW,mBAAmB,GAAK,GAAGlD,GAAqB,CAAC,UAAU,CAAC,IAAI,uXAAuX,aAAa,WAAW,EAAE,UAAU,CAAC,IAAI,uXAAuX,aAAa,WAAW,CAAC,EAAEyC,EAAYI,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAQ0B,GAAI,CAAC,kFAAkF,gFAAgF,iQAAiQ,+HAA+H,mKAAmK,+WAA+W,8GAA8G,mbAAmb,+GAA+G,+GAA+G,8DAA8D,kbAAkb,EAS12WC,GAAgBC,GAAQ3C,GAAUyC,GAAI,cAAc,EAASG,GAAQF,GAAgBA,GAAgB,YAAY,4BAA4BA,GAAgB,aAAa,CAAC,OAAO,IAAI,MAAM,GAAG,EAAEG,GAAoBH,GAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,YAAY,YAAY,WAAW,EAAE,aAAa,CAAC,YAAY,YAAY,YAAY,WAAW,EAAE,MAAM,UAAU,KAAKI,GAAY,IAAI,EAAE,UAAU,CAAC,aAAa,mDAAmD,gBAAgB,GAAK,MAAM,OAAO,KAAKA,GAAY,MAAM,CAAC,CAAC,EAAEC,GAASL,GAAgB,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,OAAO,kBAAkB,OAAO,SAAS,MAAM,SAAS,IAAI,8GAA8G,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,6BAA6B,EAAI,CAAC,ECVpzB,IAAIM,GAAY,OAAO,eACnBC,GAAa,OAAO,iBACpBC,GAAoB,OAAO,0BAC3BC,GAAsB,OAAO,sBAC7BC,GAAe,OAAO,UAAU,eAChCC,GAAe,OAAO,UAAU,qBAChCC,GAAQ,KAAK,IACbC,GAAkB,CAACC,EAAKC,EAAKC,IAAUD,KAAOD,EAAMR,GAAUQ,EAAKC,EAAK,CAAE,WAAY,GAAM,aAAc,GAAM,SAAU,GAAM,MAAAC,CAAM,CAAC,EAAIF,EAAIC,CAAG,EAAIC,EACtJC,GAAiB,CAACC,EAAGC,IAAM,CAC7B,QAASC,KAAQD,IAAMA,EAAI,CAAC,GACtBT,GAAa,KAAKS,EAAGC,CAAI,GAC3BP,GAAgBK,EAAGE,EAAMD,EAAEC,CAAI,CAAC,EACpC,GAAIX,GACF,QAASW,KAAQX,GAAoBU,CAAC,EAChCR,GAAa,KAAKQ,EAAGC,CAAI,GAC3BP,GAAgBK,EAAGE,EAAMD,EAAEC,CAAI,CAAC,EAEtC,OAAOF,CACT,EACIG,GAAgB,CAACH,EAAGC,IAAMZ,GAAWW,EAAGV,GAAkBW,CAAC,CAAC,EAC5DG,GAAY,CAACC,EAAQC,IAAY,CACnC,IAAIC,EAAS,CAAC,EACd,QAASL,KAAQG,EACXb,GAAa,KAAKa,EAAQH,CAAI,GAAKI,EAAQ,QAAQJ,CAAI,EAAI,IAC7DK,EAAOL,CAAI,EAAIG,EAAOH,CAAI,GAC9B,GAAIG,GAAU,MAAQd,GACpB,QAASW,KAAQX,GAAoBc,CAAM,EACrCC,EAAQ,QAAQJ,CAAI,EAAI,GAAKT,GAAa,KAAKY,EAAQH,CAAI,IAC7DK,EAAOL,CAAI,EAAIG,EAAOH,CAAI,GAEhC,OAAOK,CACT,EACIC,GAAW,CAACD,EAAQE,IAAQ,CAC9B,QAASC,KAAQD,EACfrB,GAAUmB,EAAQG,EAAM,CAAE,IAAKD,EAAIC,CAAI,EAAG,WAAY,EAAK,CAAC,CAChE,EACIC,GAAU,CAACC,EAAQC,EAAaC,IAC3B,IAAI,QAAQ,CAACC,EAASC,IAAW,CACtC,IAAIC,EAAanB,GAAU,CACzB,GAAI,CACFoB,EAAKJ,EAAU,KAAKhB,CAAK,CAAC,CAC5B,OAASqB,EAAG,CACVH,EAAOG,CAAC,CACV,CACF,EACIC,EAAYtB,GAAU,CACxB,GAAI,CACFoB,EAAKJ,EAAU,MAAMhB,CAAK,CAAC,CAC7B,OAASqB,EAAG,CACVH,EAAOG,CAAC,CACV,CACF,EACID,EAAQG,GAAMA,EAAE,KAAON,EAAQM,EAAE,KAAK,EAAI,QAAQ,QAAQA,EAAE,KAAK,EAAE,KAAKJ,EAAWG,CAAQ,EAC/FF,GAAMJ,EAAYA,EAAU,MAAMF,EAAQC,CAAW,GAAG,KAAK,CAAC,CAChE,CAAC,EC7CH,IAAIS,GAAuB,CAAC,EAC5BC,GAASD,GAAsB,CAC7B,sBAAuB,IAAME,GAC7B,YAAa,IAAMC,GACnB,aAAc,IAAMC,GACpB,2BAA4B,IAAMC,GAClC,iBAAkB,IAAMC,GACxB,eAAgB,IAAMC,GACtB,YAAa,IAAMC,GACnB,cAAe,IAAMC,GACrB,YAAa,IAAMC,GACnB,kBAAmB,IAAMC,GACzB,aAAc,IAAMC,GACpB,gBAAiB,IAAMC,GACvB,cAAe,IAAMC,GACrB,gBAAiB,IAAMC,GACvB,eAAgB,IAAMC,GACtB,qBAAsB,IAAMC,GAC5B,eAAgB,IAAMC,GACtB,SAAU,IAAMC,GAChB,YAAa,IAAMC,GACnB,YAAa,IAAMC,GACnB,iBAAkB,IAAMC,GACxB,MAAO,IAAMC,GACb,cAAe,IAAMC,GACrB,aAAc,IAAMC,GACpB,cAAe,IAAMC,GACrB,YAAa,IAAMC,GACnB,WAAY,IAAMC,GAClB,SAAU,IAAMC,GAChB,kBAAmB,IAAMC,GACzB,eAAgB,IAAMC,GACtB,YAAa,IAAMC,GACnB,KAAM,IAAMC,GACZ,qBAAsB,IAAMC,GAC5B,KAAM,IAAMC,GACZ,KAAM,IAAMC,GACZ,WAAY,IAAMC,GAClB,YAAa,IAAMC,GACnB,UAAW,IAAMC,GACjB,gBAAiB,IAAMC,GACvB,eAAgB,IAAMC,GACtB,qBAAsB,IAAMC,GAC5B,SAAU,IAAMC,GAChB,MAAO,IAAMC,GACb,OAAQ,IAAMC,GACd,aAAc,IAAMC,GACpB,cAAe,IAAMC,GACrB,gBAAiB,IAAMC,GACvB,iBAAkB,IAAMC,GACxB,kBAAmB,IAAMC,GACzB,eAAgB,IAAMC,GACtB,oBAAqB,IAAMC,GAC3B,MAAO,IAAMC,GACb,MAAO,IAAMC,GACb,mBAAoB,IAAMC,GAC1B,gBAAiB,IAAMC,GACvB,uBAAwB,IAAMC,GAC9B,sBAAuB,IAAMC,GAC7B,kBAAmB,IAAMC,GACzB,wBAAyB,IAAMC,GAC/B,aAAc,IAAMC,GACpB,oBAAqB,IAAMC,GAC3B,oBAAqB,IAAMC,GAC3B,SAAU,IAAMC,GAChB,WAAY,IAAMC,GAClB,sBAAuB,IAAMC,GAC7B,sBAAuB,IAAMC,GAC7B,YAAa,IAAMC,GACnB,kBAAmB,IAAMC,GACzB,wBAAyB,IAAMC,GAC/B,iBAAkB,IAAMC,GACxB,kBAAmB,IAAMC,GACzB,iBAAkB,IAAMC,GACxB,aAAc,IAAMC,GACpB,cAAe,IAAMC,GACrB,kBAAmB,IAAMC,GACzB,aAAc,IAAMC,GACpB,MAAO,IAAMC,GACb,UAAW,IAAMC,GACjB,eAAgB,IAAMC,GACtB,kBAAmB,IAAMC,GACzB,iBAAkB,IAAMC,GACxB,YAAa,IAAMC,GACnB,cAAe,IAAMC,GACrB,iBAAkB,IAAMC,GACxB,YAAa,IAAMC,GACnB,kBAAmB,IAAMC,GACzB,UAAW,IAAMC,GACjB,mBAAoB,IAAMC,GAC1B,uBAAwB,IAAMC,GAC9B,sBAAuB,IAAMC,GAC7B,YAAa,IAAMC,GACnB,mBAAoB,IAAMC,GAC1B,aAAc,IAAMC,GACpB,iBAAkB,IAAMC,GACxB,iBAAkB,IAAMC,GACxB,uBAAwB,IAAMC,GAC9B,oBAAqB,IAAMC,GAC3B,oBAAqB,IAAMC,GAC3B,qBAAsB,IAAMC,GAC5B,WAAY,IAAMC,GAClB,eAAgB,IAAMC,GACtB,eAAgB,IAAMC,GACtB,iBAAkB,IAAMC,GACxB,iBAAkB,IAAMC,GACxB,iBAAkB,IAAMC,GACxB,cAAe,IAAMC,GACrB,aAAc,IAAMC,GACpB,aAAc,IAAMC,GACpB,WAAY,IAAMC,GAClB,iBAAkB,IAAMC,GACxB,iCAAkC,IAAMC,GACxC,iCAAkC,IAAMC,GACxC,MAAO,IAAMC,GACb,gBAAiB,IAAMC,GACvB,gBAAiB,IAAMC,GACvB,WAAY,IAAMC,GAClB,uBAAwB,IAAMC,GAC9B,uBAAwB,IAAMC,GAC9B,UAAW,IAAMC,GACjB,IAAK,IAAMC,GACX,QAAS,IAAMC,GACf,mBAAoB,IAAMC,GAC1B,UAAW,IAAMC,GACjB,QAAS,IAAMC,GACf,kBAAmB,IAAMC,GACzB,MAAO,IAAMC,GACb,MAAO,IAAMC,GACb,eAAgB,IAAMC,GACtB,aAAc,IAAMC,GACpB,oBAAqB,IAAMC,GAC3B,kBAAmB,IAAMC,GACzB,wBAAyB,IAAMC,GAC/B,mBAAoB,IAAMC,GAC1B,WAAY,IAAMC,GAClB,MAAO,IAAMC,GACb,cAAe,IAAMC,GACrB,gBAAiB,IAAMC,GACvB,sBAAuB,IAAMC,GAC7B,oBAAqB,IAAMC,GAC3B,kBAAmB,IAAMC,GACzB,YAAa,IAAMC,GACnB,WAAY,IAAMC,GAClB,mBAAoB,IAAMC,GAC1B,uBAAwB,IAAMC,GAC9B,yBAA0B,IAAMC,GAChC,wBAAyB,IAAMC,GAC/B,2BAA4B,IAAMC,GAClC,cAAe,IAAMC,GACrB,qBAAsB,IAAMC,GAC5B,qBAAsB,IAAMC,GAC5B,oBAAqB,IAAMC,GAC3B,QAAS,IAAMC,GACf,kBAAmB,IAAMC,GACzB,2BAA4B,IAAMC,GAClC,YAAa,IAAMC,GACnB,oBAAqB,IAAMC,GAC3B,kBAAmB,IAAMC,GACzB,kBAAmB,IAAMC,GACzB,gBAAiB,IAAMC,GACvB,cAAe,IAAMC,GACrB,cAAe,IAAMC,GACrB,IAAK,IAAMC,GACX,cAAe,IAAMC,GACrB,OAAQ,IAAMC,GACd,YAAa,IAAMC,GACnB,UAAW,IAAMC,GACjB,iBAAkB,IAAMC,GACxB,eAAgB,IAAMC,GACtB,qBAAsB,IAAMC,GAC5B,gBAAiB,IAAMC,GACvB,MAAO,IAAMC,GACb,WAAY,IAAMC,GAClB,KAAM,IAAMC,GACZ,MAAO,IAAMC,GACb,kBAAmB,IAAMC,GACzB,UAAW,IAAMC,GACjB,WAAY,IAAMC,GAClB,mBAAoB,IAAMC,GAC1B,SAAU,IAAMC,GAChB,aAAc,IAAMC,GACpB,0BAA2B,IAAMC,GACjC,aAAc,IAAMC,GACpB,kBAAmB,IAAMC,GACzB,yBAA0B,IAAMC,GAChC,0BAA2B,IAAMC,GACjC,yBAA0B,IAAMC,GAChC,0BAA2B,IAAMC,GACjC,qBAAsB,IAAMC,GAC5B,kBAAmB,IAAMC,GACzB,eAAgB,IAAMC,GACtB,OAAQ,IAAMC,GACd,YAAa,IAAMC,GACnB,eAAgB,IAAMC,GACtB,SAAU,IAAMC,GAChB,aAAc,IAAMC,GACpB,WAAY,IAAMC,GAClB,qBAAsB,IAAMC,GAC5B,gBAAiB,IAAMC,GACvB,MAAO,IAAMC,GACb,SAAU,IAAMC,GAChB,eAAgB,IAAMC,GACtB,UAAW,IAAMC,GACjB,QAAS,IAAMC,GACf,QAAS,IAAMC,GACf,QAAS,IAAMC,GACf,YAAa,IAAMC,GACnB,KAAM,IAAMC,GACZ,kBAAmB,IAAMC,GACzB,kBAAmB,IAAMC,GACzB,qBAAsB,IAAMC,GAC5B,oBAAqB,IAAMC,GAC3B,mBAAoB,IAAMC,GAC1B,mBAAoB,IAAMC,GAC1B,kBAAmB,IAAMC,GACzB,qBAAsB,IAAMC,GAC5B,qBAAsB,IAAMC,GAC5B,iBAAkB,IAAMC,GACxB,YAAa,IAAMC,GACnB,uBAAwB,IAAMC,GAC9B,aAAc,IAAMC,GACpB,iBAAkB,IAAMC,GACxB,kBAAmB,IAAMC,GACzB,cAAe,IAAMC,GACrB,0BAA2B,IAAMC,GACjC,2BAA4B,IAAMC,GAClC,0BAA2B,IAAMC,GACjC,2BAA4B,IAAMC,GAClC,mBAAoB,IAAMC,GAC1B,aAAc,IAAMC,GACpB,WAAY,IAAMC,GAClB,iBAAkB,IAAMC,GACxB,WAAY,IAAMC,GAClB,aAAc,IAAMC,GACpB,cAAe,IAAMC,GACrB,yBAA0B,IAAMC,GAChC,eAAgB,IAAMC,GACtB,gBAAiB,IAAMC,GACvB,cAAe,IAAMC,GACrB,oBAAqB,IAAMC,GAC3B,oBAAqB,IAAMC,GAC3B,SAAU,IAAMC,GAChB,aAAc,IAAMC,GACpB,qBAAsB,IAAMC,GAC5B,mBAAoB,IAAMC,GAC1B,UAAW,IAAMC,GACjB,4BAA6B,IAAMC,GACnC,4BAA6B,IAAMC,GACnC,uBAAwB,IAAMC,GAC9B,uBAAwB,IAAMC,GAC9B,uBAAwB,IAAMC,GAC9B,uBAAwB,IAAMC,GAC9B,mBAAoB,IAAMC,GAC1B,YAAa,IAAMC,GACnB,aAAc,IAAMC,GACpB,iBAAkB,IAAMC,GACxB,eAAgB,IAAMC,GACtB,KAAM,IAAMC,GACZ,kBAAmB,IAAMC,GACzB,MAAO,IAAMC,GACb,cAAe,IAAMC,GACrB,YAAa,IAAMC,GACnB,WAAY,IAAMC,GAClB,iBAAkB,IAAMC,GACxB,OAAQ,IAAMC,GACd,eAAgB,IAAMC,GACtB,gBAAiB,IAAMC,GACvB,mBAAoB,IAAMC,GAC1B,gBAAiB,IAAMC,GACvB,gBAAiB,IAAMC,GACvB,cAAe,IAAMC,GACrB,qBAAsB,IAAMC,GAC5B,sBAAuB,IAAMC,GAC7B,WAAY,IAAMC,GAClB,wBAAyB,IAAMC,GAC/B,4BAA6B,IAAMC,GACnC,uBAAwB,IAAMC,GAC9B,iBAAkB,IAAMC,GACxB,SAAU,IAAMC,GAChB,iBAAkB,IAAMC,GACxB,WAAY,IAAMC,GAClB,kBAAmB,IAAMC,GACzB,uBAAwB,IAAMC,GAC9B,sBAAuB,IAAMC,GAC7B,sBAAuB,IAAMC,GAC7B,sBAAuB,IAAMC,GAC7B,uBAAwB,IAAMC,GAC9B,uBAAwB,IAAMC,GAC9B,qBAAsB,IAAMC,GAC5B,qBAAsB,IAAMC,GAC5B,qBAAsB,IAAMC,GAC5B,qBAAsB,IAAMC,GAC5B,qBAAsB,IAAMC,GAC5B,qBAAsB,IAAMC,GAC5B,qBAAsB,IAAMC,GAC5B,qBAAsB,IAAMC,GAC5B,iBAAkB,IAAMC,GACxB,qBAAsB,IAAMC,GAC5B,yBAA0B,IAAMC,GAChC,yBAA0B,IAAMC,GAChC,sBAAuB,IAAMC,GAC7B,sBAAuB,IAAMC,GAC7B,sBAAuB,IAAMC,GAC7B,gBAAiB,IAAMC,GACvB,UAAW,IAAMC,GACjB,iBAAkB,IAAMC,GACxB,uBAAwB,IAAMC,GAC9B,yBAA0B,IAAMC,GAChC,gBAAiB,IAAMC,GACvB,gBAAiB,IAAMC,GACvB,wBAAyB,IAAMC,GAC/B,wBAAyB,IAAMC,GAC/B,qBAAsB,IAAMC,GAC5B,eAAgB,IAAMC,GACtB,SAAU,IAAMC,GAChB,gBAAiB,IAAMC,GACvB,kBAAmB,IAAMC,GACzB,IAAK,IAAMC,GACX,UAAW,IAAMC,GACjB,gBAAiB,IAAMC,GACvB,cAAe,IAAMC,GACrB,UAAW,IAAMC,GACjB,iBAAkB,IAAMC,GACxB,oBAAqB,IAAMC,GAC3B,aAAc,IAAMC,GACpB,eAAgB,IAAMC,GACtB,iBAAkB,IAAMC,GACxB,wBAAyB,IAAMC,GAC/B,aAAc,IAAMC,GACpB,8BAA+B,IAAMC,GACrC,wBAAyB,IAAMC,GAC/B,eAAgB,IAAMC,GACtB,aAAc,IAAMC,GACpB,MAAO,IAAMC,GACb,YAAa,IAAMC,GACnB,UAAW,IAAMC,GACjB,eAAgB,IAAMC,GACtB,eAAgB,IAAMC,GACtB,MAAO,IAAMC,GACb,cAAe,IAAMC,GACrB,UAAW,IAAMC,GACjB,WAAY,IAAMC,GAClB,UAAW,IAAMC,GACjB,SAAU,IAAMC,GAChB,eAAgB,IAAMC,GACtB,YAAa,IAAMC,GACnB,OAAQ,IAAMC,GACd,OAAQ,IAAMC,GACd,eAAgB,IAAMC,GACtB,UAAW,IAAMC,GACjB,oBAAqB,IAAMC,GAC3B,YAAa,IAAMC,GACnB,UAAW,IAAMC,GACjB,gBAAiB,IAAMC,GACvB,OAAQ,IAAMC,GACd,eAAgB,IAAMC,GACtB,eAAgB,IAAMC,GACtB,uBAAwB,IAAMC,GAC9B,eAAgB,IAAMC,GACtB,gBAAiB,IAAMC,GACvB,gBAAiB,IAAMC,GACvB,gBAAiB,IAAMC,GACvB,aAAc,IAAMC,GACpB,gBAAiB,IAAMC,GACvB,gBAAiB,IAAMC,GACvB,gBAAiB,IAAMC,GACvB,oBAAqB,IAAMC,GAC3B,iBAAkB,IAAMC,GACxB,oBAAqB,IAAMC,GAC3B,MAAO,IAAMC,GACb,sBAAuB,IAAMC,GAC7B,oBAAqB,IAAMC,GAC3B,QAAS,IAAMC,GACf,cAAe,IAAMC,GACrB,aAAc,IAAMC,GACpB,cAAe,IAAMC,GACrB,kBAAmB,IAAMC,GACzB,SAAU,IAAMC,GAChB,oBAAqB,IAAMC,GAC3B,sBAAuB,IAAMC,GAC7B,kBAAmB,IAAMC,GACzB,aAAc,IAAMC,GACpB,UAAW,IAAMC,GACjB,sBAAuB,IAAMC,GAC7B,sBAAuB,IAAMC,GAC7B,qBAAsB,IAAMC,GAC5B,4BAA6B,IAAMC,GACnC,QAAS,IAAMC,GACf,cAAe,IAAMC,GACrB,YAAa,IAAMC,GACnB,cAAe,IAAMC,GACrB,iBAAkB,IAAMC,GACxB,mBAAoB,IAAMC,GAC1B,oBAAqB,IAAMC,GAC3B,gBAAiB,IAAMC,GACvB,sBAAuB,IAAMC,GAC7B,sBAAuB,IAAMC,GAC7B,kBAAmB,IAAMC,GACzB,aAAc,IAAMC,GACpB,QAAS,IAAMC,EACf,QAAS,IAAMC,EACf,QAAS,IAAMC,GACf,oBAAqB,IAAMC,GAC3B,aAAc,IAAMC,GACpB,oBAAqB,IAAMC,GAC3B,uBAAwB,IAAMC,GAC9B,sBAAuB,IAAMC,GAC7B,sBAAuB,IAAMC,GAC7B,2BAA4B,IAAMC,GAClC,kBAAmB,IAAMC,GACzB,cAAe,IAAMC,GACrB,WAAY,IAAMC,GAClB,uBAAwB,IAAMC,GAC9B,kBAAmB,IAAMC,GACzB,iBAAkB,IAAMC,GACxB,oBAAqB,IAAMC,GAC3B,WAAY,IAAMC,GAClB,gBAAiB,IAAMC,GACvB,cAAe,IAAMC,GACrB,oBAAqB,IAAMC,EAC7B,CAAC,EACD,IAAI7I,GAAW,MACX/E,GAAQ,CAAE,KAAM,EAAG,OAAQ,EAAG,MAAO,EAAG,OAAQ,EAAG,MAAO,EAAG,IAAK,CAAE,EACpE0K,GAAQ,CAAE,OAAQ,EAAG,IAAK,EAAG,UAAW,EAAG,aAAc,CAAE,EAC3DrS,GAAe,EACfH,GAAe,EACfC,GAAgB,EAChBC,GAAoB,EACpB7C,GAAiB,EACjBgO,GAAe,EACfC,GAAmB,EACnB+I,GAAe,EACfnR,GAAY,EACZ/F,GAAW,EACXwE,GAAa,EACboI,GAAa,EACbI,GAAiB,EACjBvO,GAAmB,EACnB2W,GAAsB,EACtBnJ,GAAmB,EACnB9I,GAAiB,EACjB7E,GAAc,IACd6W,GAAmB,IACnBxC,GAA0B,IAC1B7G,GAAc,IACdZ,GAAc,IACdkN,GAAa,IACb3K,GAAY,IACZiH,GAAiB,IACjB3G,GAAyB,IACzByG,GAAiB,IACjB1G,GAAyB,IACzBrJ,GAAiB,IACjBmJ,GAAyB,IACzBlJ,GAAiB,IACjBmJ,GAAyB,IACzB4G,GAAyB,IACzBvS,GAAsB,IACtByL,GAA8B,IAC9B1L,GAAsB,IACtByL,GAA8B,IAC9BhB,GAAa,EACb7N,GAAc,EACd6J,GAAY,EACZE,GAAiB,EACjB3D,GAAa,EACbsB,GAAoB,EACpBF,GAAe,EACf6G,GAAgB,EAChBhB,GAAoB,EACpBF,GAAe,EACfzN,GAAe,EACfuO,GAAgB,EAChB7C,GAAoB,EACpBsI,GAAsB,EACtBlR,GAAoB,EACpBhD,GAAwB,EACxB+E,GAAoB,EACpB1E,GAAiB,EACjB8N,GAAqB,EACrB/M,GAAmB,WACnByE,GAAmB,WACnBgS,GAAY,IACZ7T,GAAwB,IACxBC,GAAwB,IACxB6C,GAAmC,IACnCC,GAAmC,IACnC3C,GAA0B,IAC1BgQ,GAAiB,IACjBlR,GAAsB,KACtBwK,GAAyB,KACzBI,GAAgB,KAChBI,GAA6B,KAC7BF,GAA6B,KAC7BC,GAA4B,KAC5BF,GAA4B,KAC5B1C,GAAe,KACfK,GAA4B,KAC5BF,GAA4B,KAC5BC,GAA2B,KAC3BF,GAA2B,KAC3B+M,GAAmB,KACnB7V,GAAW,KACX4S,GAAY,KACZuD,GAAoB,KACpBrP,GAAU,KACVkP,GAAkB,KAClBnR,GAAY,KACZiB,GAAgB,KAChBmQ,GAAwB,KACxBC,GAAwB,KACxBJ,GAAqB,KACrBC,GAAsB,MACtBlY,GAAc,KACdyS,GAAY,KACZxB,GAAa,KACblF,GAAkB,KAClBD,GAAuB,KACvB1G,GAAc,KACdC,GAAqB,KACrBqO,GAAY,KACZC,GAAmB,KACnBR,GAAW,KACXC,GAAkB,KAClBV,GAAmB,KACnBxB,GAAoB,KACpB+B,GAAuB,MACvBZ,GAAwB,MACxBC,GAAwB,MACxBC,GAAwB,MACxBS,GAA0B,MAC1BD,GAA0B,MAC1BX,GAA2B,MAC3BD,GAA2B,MAC3BU,GAAkB,MAClBC,GAAkB,MAClBZ,GAAuB,MACvBT,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBZ,GAAwB,MACxBC,GAAwB,MACxBC,GAAwB,MACxBH,GAAyB,MACzBI,GAAyB,MACzBC,GAAyB,MACzBS,GAAmB,MACnBU,GAAyB,MACzBC,GAA2B,MAC3B9B,GAAmB,MACnBqD,GAA0B,MAC1BtD,GAAyB,MACzBqD,GAAgC,MAChCvI,GAAW,KACXE,GAAa,KACbD,GAAe,KACfvC,GAAsB,KACtBC,GAAoB,KACpBC,GAAoB,KACpBiQ,GAAsB,KACtBE,GAAkB,KAClBH,GAAmB,KACnBnL,GAA2B,KAC3BvO,GAA6B,KAC7BwX,GAAoB,EACpBD,GAAwB,EACxBD,GAAsB,EACtB7V,GAAoB,KACpB0P,GAAmB,KACnBwB,GAAkB,KAClBU,GAAiB,KACjByD,GAAwB,EACxB/H,GAAuB,EACvBV,GAAe,GACfkG,GAAiB,OACjB/I,GAAuB,cACvB1F,GAAsB,aACtBmF,GAA4B,oBAC5BS,GAAiB,SACjB8I,GAAe,OACfb,GAAkB,SAClBlE,GAAc,KACdqK,GAAgB,EAChBlQ,GAAgB,KAChBsK,GAAmB,KACnBvL,GAAqB,KACrBvD,GAAqB,KACrBwD,GAAyB,MACzBvD,GAAyB,MACzBsE,GAAkB,KAClBwE,GAAmB,IACnB7D,GAAkB,IAClB5D,GAAmB,IACnB2D,GAAuB,IACvBpC,GAAqB,IACrB0G,GAAsB,IACtB3G,GAA0B,IAC1B1H,GAAoB,IACpB2N,GAAe,IACfhE,GAAc,IACdzD,GAAe,IACf2D,GAAmB,IACnBvC,GAAiB,IACjB6G,GAAkB,IAClB3G,GAAsB,IACtB1H,GAAgB,IAChBgW,GAAkB,MAClBhQ,GAAmB,MACnBoQ,GAAkB,MAClBH,GAAkB,MAClBhQ,GAAmB,MACnBoQ,GAAkB,MAClBN,GAAkB,MAClBhQ,GAAmB,MACnBoQ,GAAkB,MAClB7O,GAAQ,MACRC,GAAQ,SACRuR,GAAwB,IACxBM,GAAyB,KACzB1S,GAAkB,KAAM,CAC1B,iBAAiBkT,EAAMC,EAAU,CAC3B,KAAK,aAAe,SAAQ,KAAK,WAAa,CAAC,GACnD,IAAMC,EAAY,KAAK,WACnBA,EAAUF,CAAI,IAAM,SACtBE,EAAUF,CAAI,EAAI,CAAC,GAEjBE,EAAUF,CAAI,EAAE,QAAQC,CAAQ,IAAM,IACxCC,EAAUF,CAAI,EAAE,KAAKC,CAAQ,CAEjC,CACA,iBAAiBD,EAAMC,EAAU,CAC/B,GAAI,KAAK,aAAe,OAAQ,MAAO,GACvC,IAAMC,EAAY,KAAK,WACvB,OAAOA,EAAUF,CAAI,IAAM,QAAUE,EAAUF,CAAI,EAAE,QAAQC,CAAQ,IAAM,EAC7E,CACA,oBAAoBD,EAAMC,EAAU,CAClC,GAAI,KAAK,aAAe,OAAQ,OAEhC,IAAME,EADY,KAAK,WACSH,CAAI,EACpC,GAAIG,IAAkB,OAAQ,CAC5B,IAAMC,EAAQD,EAAc,QAAQF,CAAQ,EACxCG,IAAU,IACZD,EAAc,OAAOC,EAAO,CAAC,CAEjC,CACF,CACA,cAAcC,EAAO,CACnB,GAAI,KAAK,aAAe,OAAQ,OAEhC,IAAMF,EADY,KAAK,WACSE,EAAM,IAAI,EAC1C,GAAIF,IAAkB,OAAQ,CAC5BE,EAAM,OAAS,KACf,IAAMC,EAAQH,EAAc,MAAM,CAAC,EACnC,QAASI,EAAI,EAAGC,EAAIF,EAAM,OAAQC,EAAIC,EAAGD,IACvCD,EAAMC,CAAC,EAAE,KAAK,KAAMF,CAAK,EAE3BA,EAAM,OAAS,IACjB,CACF,CACF,EACII,GAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACtgDC,GAAQ,QACRC,GAAU,KAAK,GAAK,IACpBC,GAAU,IAAM,KAAK,GACzB,SAASC,IAAe,CACtB,IAAMC,EAAK,KAAK,OAAO,EAAI,WAAa,EAClCC,EAAK,KAAK,OAAO,EAAI,WAAa,EAClCC,EAAK,KAAK,OAAO,EAAI,WAAa,EAClCC,EAAK,KAAK,OAAO,EAAI,WAAa,EAExC,OADaR,GAAKK,EAAK,GAAG,EAAIL,GAAKK,GAAM,EAAI,GAAG,EAAIL,GAAKK,GAAM,GAAK,GAAG,EAAIL,GAAKK,GAAM,GAAK,GAAG,EAAI,IAAML,GAAKM,EAAK,GAAG,EAAIN,GAAKM,GAAM,EAAI,GAAG,EAAI,IAAMN,GAAKM,GAAM,GAAK,GAAK,EAAE,EAAIN,GAAKM,GAAM,GAAK,GAAG,EAAI,IAAMN,GAAKO,EAAK,GAAK,GAAG,EAAIP,GAAKO,GAAM,EAAI,GAAG,EAAI,IAAMP,GAAKO,GAAM,GAAK,GAAG,EAAIP,GAAKO,GAAM,GAAK,GAAG,EAAIP,GAAKQ,EAAK,GAAG,EAAIR,GAAKQ,GAAM,EAAI,GAAG,EAAIR,GAAKQ,GAAM,GAAK,GAAG,EAAIR,GAAKQ,GAAM,GAAK,GAAG,GAClX,YAAY,CAC1B,CACA,SAASC,GAAMC,EAAOC,EAAKC,EAAK,CAC9B,OAAO,KAAK,IAAID,EAAK,KAAK,IAAIC,EAAKF,CAAK,CAAC,CAC3C,CACA,SAASG,GAAgBC,EAAGC,EAAG,CAC7B,OAAQD,EAAIC,EAAIA,GAAKA,CACvB,CACA,SAASC,GAAUC,EAAGC,EAAIC,EAAIC,EAAIC,EAAI,CACpC,OAAOD,GAAMH,EAAIC,IAAOG,EAAKD,IAAOD,EAAKD,EAC3C,CACA,SAASI,GAAYL,EAAGM,EAAGb,EAAO,CAChC,OAAIO,IAAMM,GACAb,EAAQO,IAAMM,EAAIN,GAEnB,CAEX,CACA,SAASO,GAAKP,EAAGM,EAAGE,EAAG,CACrB,OAAQ,EAAIA,GAAKR,EAAIQ,EAAIF,CAC3B,CACA,SAASG,GAAKT,EAAGM,EAAGI,EAAQC,EAAI,CAC9B,OAAOJ,GAAKP,EAAGM,EAAG,EAAI,KAAK,IAAI,CAACI,EAASC,CAAE,CAAC,CAC9C,CACA,SAASC,GAASZ,EAAGa,EAAS,EAAG,CAC/B,OAAOA,EAAS,KAAK,IAAIjB,GAAgBI,EAAGa,EAAS,CAAC,EAAIA,CAAM,CAClE,CACA,SAASC,GAAWd,EAAGN,EAAKC,EAAK,CAC/B,OAAIK,GAAKN,EAAY,EACjBM,GAAKL,EAAY,GACrBK,GAAKA,EAAIN,IAAQC,EAAMD,GAChBM,EAAIA,GAAK,EAAI,EAAIA,GAC1B,CACA,SAASe,GAAaf,EAAGN,EAAKC,EAAK,CACjC,OAAIK,GAAKN,EAAY,EACjBM,GAAKL,EAAY,GACrBK,GAAKA,EAAIN,IAAQC,EAAMD,GAChBM,EAAIA,EAAIA,GAAKA,GAAKA,EAAI,EAAI,IAAM,IACzC,CACA,SAASgB,GAAQC,EAAKC,EAAM,CAC1B,OAAOD,EAAM,KAAK,MAAM,KAAK,OAAO,GAAKC,EAAOD,EAAM,EAAE,CAC1D,CACA,SAASE,GAAUF,EAAKC,EAAM,CAC5B,OAAOD,EAAM,KAAK,OAAO,GAAKC,EAAOD,EACvC,CACA,SAASG,GAAgBC,EAAO,CAC9B,OAAOA,GAAS,GAAM,KAAK,OAAO,EACpC,CACA,SAASC,GAAaC,EAAG,CACnBA,IAAM,SAAQvC,GAAQuC,GAC1B,IAAI,EAAIvC,IAAS,WACjB,SAAI,KAAK,KAAK,EAAI,IAAM,GAAI,EAAI,CAAC,EACjC,GAAK,EAAI,KAAK,KAAK,EAAI,IAAM,EAAG,EAAI,EAAE,IAC7B,EAAI,IAAM,MAAQ,GAAK,UAClC,CACA,SAASwC,GAASC,EAAS,CACzB,OAAOA,EAAUxC,EACnB,CACA,SAASyC,GAASC,EAAS,CACzB,OAAOA,EAAUzC,EACnB,CACA,SAAS0C,GAAanC,EAAO,CAC3B,OAAQA,EAAQA,EAAQ,KAAO,GAAKA,IAAU,CAChD,CACA,SAASoC,GAAepC,EAAO,CAC7B,OAAO,KAAK,IAAI,EAAG,KAAK,KAAK,KAAK,IAAIA,CAAK,EAAI,KAAK,GAAG,CAAC,CAC1D,CACA,SAASqC,GAAgBrC,EAAO,CAC9B,OAAO,KAAK,IAAI,EAAG,KAAK,MAAM,KAAK,IAAIA,CAAK,EAAI,KAAK,GAAG,CAAC,CAC3D,CACA,SAASsC,GAA6BC,EAAGC,EAAGC,EAAGC,EAAGC,EAAO,CACvD,IAAMC,EAAM,KAAK,IACXC,EAAM,KAAK,IACXC,EAAKF,EAAIH,EAAI,CAAC,EACdM,EAAKF,EAAIJ,EAAI,CAAC,EACdO,EAAMJ,GAAKJ,EAAIE,GAAK,CAAC,EACrBO,EAAMJ,GAAKL,EAAIE,GAAK,CAAC,EACrBQ,EAAON,GAAKJ,EAAIE,GAAK,CAAC,EACtBS,EAAON,GAAKL,EAAIE,GAAK,CAAC,EACtBU,EAAOR,GAAKF,EAAIF,GAAK,CAAC,EACtBa,EAAOR,GAAKH,EAAIF,GAAK,CAAC,EAC5B,OAAQG,EAAO,CACb,IAAK,MACHJ,EAAE,IAAIO,EAAKG,EAAKF,EAAKG,EAAMH,EAAKI,EAAML,EAAKE,CAAG,EAC9C,MACF,IAAK,MACHT,EAAE,IAAIQ,EAAKI,EAAML,EAAKG,EAAKF,EAAKG,EAAMJ,EAAKE,CAAG,EAC9C,MACF,IAAK,MACHT,EAAE,IAAIQ,EAAKG,EAAMH,EAAKI,EAAML,EAAKG,EAAKH,EAAKE,CAAG,EAC9C,MACF,IAAK,MACHT,EAAE,IAAIO,EAAKG,EAAKF,EAAKM,EAAMN,EAAKK,EAAMN,EAAKE,CAAG,EAC9C,MACF,IAAK,MACHT,EAAE,IAAIQ,EAAKK,EAAMN,EAAKG,EAAKF,EAAKM,EAAMP,EAAKE,CAAG,EAC9C,MACF,IAAK,MACHT,EAAE,IAAIQ,EAAKM,EAAMN,EAAKK,EAAMN,EAAKG,EAAKH,EAAKE,CAAG,EAC9C,MACF,QACE,QAAQ,KAAK,kFAAoFL,CAAK,CAC1G,CACF,CACA,SAASW,GAAYtD,EAAOb,EAAO,CACjC,OAAQA,EAAM,YAAa,CACzB,KAAK,aACH,OAAOa,EACT,KAAK,YACH,OAAOA,EAAQ,WACjB,KAAK,YACH,OAAOA,EAAQ,MACjB,KAAK,WACH,OAAOA,EAAQ,IACjB,KAAK,WACH,OAAO,KAAK,IAAIA,EAAQ,WAAY,EAAE,EACxC,KAAK,WACH,OAAO,KAAK,IAAIA,EAAQ,MAAO,EAAE,EACnC,KAAK,UACH,OAAO,KAAK,IAAIA,EAAQ,IAAK,EAAE,EACjC,QACE,MAAM,IAAI,MAAM,yBAAyB,CAC7C,CACF,CACA,SAASuD,GAAUvD,EAAOb,EAAO,CAC/B,OAAQA,EAAM,YAAa,CACzB,KAAK,aACH,OAAOa,EACT,KAAK,YACH,OAAO,KAAK,MAAMA,EAAQ,UAAU,EACtC,KAAK,YACH,OAAO,KAAK,MAAMA,EAAQ,KAAK,EACjC,KAAK,WACH,OAAO,KAAK,MAAMA,EAAQ,GAAG,EAC/B,KAAK,WACH,OAAO,KAAK,MAAMA,EAAQ,UAAU,EACtC,KAAK,WACH,OAAO,KAAK,MAAMA,EAAQ,KAAK,EACjC,KAAK,UACH,OAAO,KAAK,MAAMA,EAAQ,GAAG,EAC/B,QACE,MAAM,IAAI,MAAM,yBAAyB,CAC7C,CACF,CACA,IAAI7O,GAAY,CACd,QAAAqO,GACA,QAAAC,GACA,aAAAC,GACA,MAAAK,GACA,gBAAAI,GACA,UAAAG,GACA,YAAAM,GACA,KAAAE,GACA,KAAAE,GACA,SAAAG,GACA,WAAAE,GACA,aAAAC,GACA,QAAAC,GACA,UAAAG,GACA,gBAAAC,GACA,aAAAE,GACA,SAAAE,GACA,SAAAE,GACA,aAAAE,GACA,eAAAC,GACA,gBAAAC,GACA,6BAAAC,GACA,UAAAiB,GACA,YAAAD,EACF,EACI9F,EAAU,MAAMgG,EAAS,CAC3B,YAAYjD,EAAI,EAAGM,EAAI,EAAG,CACxB2C,GAAS,UAAU,UAAY,GAC/B,KAAK,EAAIjD,EACT,KAAK,EAAIM,CACX,CACA,IAAI,OAAQ,CACV,OAAO,KAAK,CACd,CACA,IAAI,MAAMb,EAAO,CACf,KAAK,EAAIA,CACX,CACA,IAAI,QAAS,CACX,OAAO,KAAK,CACd,CACA,IAAI,OAAOA,EAAO,CAChB,KAAK,EAAIA,CACX,CACA,IAAIO,EAAGM,EAAG,CACR,YAAK,EAAIN,EACT,KAAK,EAAIM,EACF,IACT,CACA,UAAU4C,EAAQ,CAChB,YAAK,EAAIA,EACT,KAAK,EAAIA,EACF,IACT,CACA,KAAKlD,EAAG,CACN,YAAK,EAAIA,EACF,IACT,CACA,KAAKM,EAAG,CACN,YAAK,EAAIA,EACF,IACT,CACA,aAAa5B,EAAOe,EAAO,CACzB,OAAQf,EAAO,CACb,IAAK,GACH,KAAK,EAAIe,EACT,MACF,IAAK,GACH,KAAK,EAAIA,EACT,MACF,QACE,MAAM,IAAI,MAAM,0BAA4Bf,CAAK,CACrD,CACA,OAAO,IACT,CACA,aAAaA,EAAO,CAClB,OAAQA,EAAO,CACb,IAAK,GACH,OAAO,KAAK,EACd,IAAK,GACH,OAAO,KAAK,EACd,QACE,MAAM,IAAI,MAAM,0BAA4BA,CAAK,CACrD,CACF,CACA,OAAQ,CACN,OAAO,IAAI,KAAK,YAAY,KAAK,EAAG,KAAK,CAAC,CAC5C,CACA,KAAKyE,EAAG,CACN,YAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EACJ,IACT,CACA,IAAIA,EAAG,CACL,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CACA,UAAU5B,EAAG,CACX,YAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IACT,CACA,WAAWU,EAAGC,EAAG,CACf,YAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EACV,IACT,CACA,gBAAgBiB,EAAG5B,EAAG,CACpB,YAAK,GAAK4B,EAAE,EAAI5B,EAChB,KAAK,GAAK4B,EAAE,EAAI5B,EACT,IACT,CACA,IAAI4B,EAAG,CACL,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CACA,UAAU5B,EAAG,CACX,YAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IACT,CACA,WAAWU,EAAGC,EAAG,CACf,YAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EACV,IACT,CACA,SAASiB,EAAG,CACV,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CACA,eAAeD,EAAQ,CACrB,YAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IACT,CACA,OAAOC,EAAG,CACR,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CACA,aAAaD,EAAQ,CACnB,OAAO,KAAK,eAAe,EAAIA,CAAM,CACvC,CACA,aAAapD,EAAG,CACd,IAAME,EAAI,KAAK,EAAGM,EAAI,KAAK,EACrB8C,EAAItD,EAAE,SACZ,YAAK,EAAIsD,EAAE,CAAC,EAAIpD,EAAIoD,EAAE,CAAC,EAAI9C,EAAI8C,EAAE,CAAC,EAClC,KAAK,EAAIA,EAAE,CAAC,EAAIpD,EAAIoD,EAAE,CAAC,EAAI9C,EAAI8C,EAAE,CAAC,EAC3B,IACT,CACA,IAAID,EAAG,CACL,YAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EACtB,IACT,CACA,IAAIA,EAAG,CACL,YAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EACtB,IACT,CACA,MAAMzD,EAAKC,EAAK,CACd,YAAK,EAAI,KAAK,IAAID,EAAI,EAAG,KAAK,IAAIC,EAAI,EAAG,KAAK,CAAC,CAAC,EAChD,KAAK,EAAI,KAAK,IAAID,EAAI,EAAG,KAAK,IAAIC,EAAI,EAAG,KAAK,CAAC,CAAC,EACzC,IACT,CACA,YAAY0D,EAAQC,EAAQ,CAC1B,YAAK,EAAI,KAAK,IAAID,EAAQ,KAAK,IAAIC,EAAQ,KAAK,CAAC,CAAC,EAClD,KAAK,EAAI,KAAK,IAAID,EAAQ,KAAK,IAAIC,EAAQ,KAAK,CAAC,CAAC,EAC3C,IACT,CACA,YAAY5D,EAAKC,EAAK,CACpB,IAAMkB,EAAS,KAAK,OAAO,EAC3B,OAAO,KAAK,aAAaA,GAAU,CAAC,EAAE,eAAe,KAAK,IAAInB,EAAK,KAAK,IAAIC,EAAKkB,CAAM,CAAC,CAAC,CAC3F,CACA,OAAQ,CACN,YAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EACnB,IACT,CACA,MAAO,CACL,YAAK,EAAI,KAAK,KAAK,KAAK,CAAC,EACzB,KAAK,EAAI,KAAK,KAAK,KAAK,CAAC,EAClB,IACT,CACA,OAAQ,CACN,YAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EACnB,IACT,CACA,aAAc,CACZ,YAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EACnB,IACT,CACA,QAAS,CACP,YAAK,EAAI,CAAC,KAAK,EACf,KAAK,EAAI,CAAC,KAAK,EACR,IACT,CACA,IAAIsC,EAAG,CACL,OAAO,KAAK,EAAIA,EAAE,EAAI,KAAK,EAAIA,EAAE,CACnC,CACA,MAAMA,EAAG,CACP,OAAO,KAAK,EAAIA,EAAE,EAAI,KAAK,EAAIA,EAAE,CACnC,CACA,UAAW,CACT,OAAO,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,CACzC,CACA,QAAS,CACP,OAAO,KAAK,KAAK,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,CAAC,CACpD,CACA,iBAAkB,CAChB,OAAO,KAAK,IAAI,KAAK,CAAC,EAAI,KAAK,IAAI,KAAK,CAAC,CAC3C,CACA,WAAY,CACV,OAAO,KAAK,aAAa,KAAK,OAAO,GAAK,CAAC,CAC7C,CACA,OAAQ,CAEN,OADc,KAAK,MAAM,CAAC,KAAK,EAAG,CAAC,KAAK,CAAC,EAAI,KAAK,EAEpD,CACA,QAAQA,EAAG,CACT,IAAMI,EAAc,KAAK,KAAK,KAAK,SAAS,EAAIJ,EAAE,SAAS,CAAC,EAC5D,GAAII,IAAgB,EAAG,OAAO,KAAK,GAAK,EACxC,IAAMC,EAAQ,KAAK,IAAIL,CAAC,EAAII,EAC5B,OAAO,KAAK,KAAK/D,GAAMgE,EAAO,GAAI,CAAC,CAAC,CACtC,CACA,WAAWL,EAAG,CACZ,OAAO,KAAK,KAAK,KAAK,kBAAkBA,CAAC,CAAC,CAC5C,CACA,kBAAkBA,EAAG,CACnB,IAAMM,EAAK,KAAK,EAAIN,EAAE,EAAGO,EAAK,KAAK,EAAIP,EAAE,EACzC,OAAOM,EAAKA,EAAKC,EAAKA,CACxB,CACA,oBAAoBP,EAAG,CACrB,OAAO,KAAK,IAAI,KAAK,EAAIA,EAAE,CAAC,EAAI,KAAK,IAAI,KAAK,EAAIA,EAAE,CAAC,CACvD,CACA,UAAUtC,EAAQ,CAChB,OAAO,KAAK,UAAU,EAAE,eAAeA,CAAM,CAC/C,CACA,KAAKsC,EAAGQ,EAAO,CACb,YAAK,IAAMR,EAAE,EAAI,KAAK,GAAKQ,EAC3B,KAAK,IAAMR,EAAE,EAAI,KAAK,GAAKQ,EACpB,IACT,CACA,YAAYC,EAAIC,EAAIF,EAAO,CACzB,YAAK,EAAIC,EAAG,GAAKC,EAAG,EAAID,EAAG,GAAKD,EAChC,KAAK,EAAIC,EAAG,GAAKC,EAAG,EAAID,EAAG,GAAKD,EACzB,IACT,CACA,OAAOR,EAAG,CACR,OAAOA,EAAE,IAAM,KAAK,GAAKA,EAAE,IAAM,KAAK,CACxC,CACA,UAAUvE,EAAOkF,EAAS,EAAG,CAC3B,YAAK,EAAIlF,EAAMkF,CAAM,EACrB,KAAK,EAAIlF,EAAMkF,EAAS,CAAC,EAClB,IACT,CACA,QAAQlF,EAAQ,CAAC,EAAGkF,EAAS,EAAG,CAC9B,OAAAlF,EAAMkF,CAAM,EAAI,KAAK,EACrBlF,EAAMkF,EAAS,CAAC,EAAI,KAAK,EAClBlF,CACT,CACA,oBAAoBmF,EAAWrF,EAAO,CACpC,YAAK,EAAIqF,EAAU,KAAKrF,CAAK,EAC7B,KAAK,EAAIqF,EAAU,KAAKrF,CAAK,EACtB,IACT,CACA,aAAasF,EAAQC,EAAO,CAC1B,IAAM9B,EAAI,KAAK,IAAI8B,CAAK,EAAG1C,EAAI,KAAK,IAAI0C,CAAK,EACvCjE,EAAI,KAAK,EAAIgE,EAAO,EACpB1D,EAAI,KAAK,EAAI0D,EAAO,EAC1B,YAAK,EAAIhE,EAAImC,EAAI7B,EAAIiB,EAAIyC,EAAO,EAChC,KAAK,EAAIhE,EAAIuB,EAAIjB,EAAI6B,EAAI6B,EAAO,EACzB,IACT,CACA,QAAS,CACP,YAAK,EAAI,KAAK,OAAO,EACrB,KAAK,EAAI,KAAK,OAAO,EACd,IACT,CACA,EAAE,OAAO,QAAQ,GAAI,CACnB,MAAM,KAAK,EACX,MAAM,KAAK,CACb,CACF,EACIlT,GAAU,MAAMoT,EAAS,CAC3B,YAAYC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAK,CACvDT,GAAS,UAAU,UAAY,GAC/B,KAAK,SAAW,CACd,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACF,EACIC,IAAQ,QACV,KAAK,IAAIA,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,CAAG,CAExD,CACA,IAAIR,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAK,CAC/C,IAAMC,EAAK,KAAK,SAChB,OAAAA,EAAG,CAAC,EAAIT,EACRS,EAAG,CAAC,EAAIN,EACRM,EAAG,CAAC,EAAIH,EACRG,EAAG,CAAC,EAAIR,EACRQ,EAAG,CAAC,EAAIL,EACRK,EAAG,CAAC,EAAIF,EACRE,EAAG,CAAC,EAAIP,EACRO,EAAG,CAAC,EAAIJ,EACRI,EAAG,CAAC,EAAID,EACD,IACT,CACA,UAAW,CACT,YAAK,IACH,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACF,EACO,IACT,CACA,KAAK7E,EAAG,CACN,IAAM8E,EAAK,KAAK,SACVC,EAAK/E,EAAE,SACb,OAAA8E,EAAG,CAAC,EAAIC,EAAG,CAAC,EACZD,EAAG,CAAC,EAAIC,EAAG,CAAC,EACZD,EAAG,CAAC,EAAIC,EAAG,CAAC,EACZD,EAAG,CAAC,EAAIC,EAAG,CAAC,EACZD,EAAG,CAAC,EAAIC,EAAG,CAAC,EACZD,EAAG,CAAC,EAAIC,EAAG,CAAC,EACZD,EAAG,CAAC,EAAIC,EAAG,CAAC,EACZD,EAAG,CAAC,EAAIC,EAAG,CAAC,EACZD,EAAG,CAAC,EAAIC,EAAG,CAAC,EACL,IACT,CACA,aAAaC,EAAOC,EAAOC,EAAO,CAChC,OAAAF,EAAM,qBAAqB,KAAM,CAAC,EAClCC,EAAM,qBAAqB,KAAM,CAAC,EAClCC,EAAM,qBAAqB,KAAM,CAAC,EAC3B,IACT,CACA,eAAelF,EAAG,CAChB,IAAM+E,EAAK/E,EAAE,SACb,YAAK,IACH+E,EAAG,CAAC,EACJA,EAAG,CAAC,EACJA,EAAG,CAAC,EACJA,EAAG,CAAC,EACJA,EAAG,CAAC,EACJA,EAAG,CAAC,EACJA,EAAG,CAAC,EACJA,EAAG,CAAC,EACJA,EAAG,EAAE,CACP,EACO,IACT,CACA,SAAS/E,EAAG,CACV,OAAO,KAAK,iBAAiB,KAAMA,CAAC,CACtC,CACA,YAAYA,EAAG,CACb,OAAO,KAAK,iBAAiBA,EAAG,IAAI,CACtC,CACA,iBAAiBmC,EAAGC,EAAG,CACrB,IAAM+C,EAAKhD,EAAE,SACPiD,EAAKhD,EAAE,SACP0C,EAAK,KAAK,SACVO,EAAMF,EAAG,CAAC,EAAGG,EAAMH,EAAG,CAAC,EAAGI,EAAMJ,EAAG,CAAC,EACpCK,EAAML,EAAG,CAAC,EAAGM,EAAMN,EAAG,CAAC,EAAGO,EAAMP,EAAG,CAAC,EACpCQ,EAAMR,EAAG,CAAC,EAAGS,EAAMT,EAAG,CAAC,EAAGU,EAAMV,EAAG,CAAC,EACpCW,EAAMV,EAAG,CAAC,EAAGW,EAAMX,EAAG,CAAC,EAAGY,EAAMZ,EAAG,CAAC,EACpCa,EAAMb,EAAG,CAAC,EAAGc,EAAMd,EAAG,CAAC,EAAGe,EAAMf,EAAG,CAAC,EACpCgB,EAAMhB,EAAG,CAAC,EAAGiB,EAAMjB,EAAG,CAAC,EAAGkB,EAAMlB,EAAG,CAAC,EAC1C,OAAAN,EAAG,CAAC,EAAIO,EAAMS,EAAMR,EAAMW,EAAMV,EAAMa,EACtCtB,EAAG,CAAC,EAAIO,EAAMU,EAAMT,EAAMY,EAAMX,EAAMc,EACtCvB,EAAG,CAAC,EAAIO,EAAMW,EAAMV,EAAMa,EAAMZ,EAAMe,EACtCxB,EAAG,CAAC,EAAIU,EAAMM,EAAML,EAAMQ,EAAMP,EAAMU,EACtCtB,EAAG,CAAC,EAAIU,EAAMO,EAAMN,EAAMS,EAAMR,EAAMW,EACtCvB,EAAG,CAAC,EAAIU,EAAMQ,EAAMP,EAAMU,EAAMT,EAAMY,EACtCxB,EAAG,CAAC,EAAIa,EAAMG,EAAMF,EAAMK,EAAMJ,EAAMO,EACtCtB,EAAG,CAAC,EAAIa,EAAMI,EAAMH,EAAMM,EAAML,EAAMQ,EACtCvB,EAAG,CAAC,EAAIa,EAAMK,EAAMJ,EAAMO,EAAMN,EAAMS,EAC/B,IACT,CACA,eAAe7E,EAAG,CAChB,IAAMqD,EAAK,KAAK,SAChB,OAAAA,EAAG,CAAC,GAAKrD,EACTqD,EAAG,CAAC,GAAKrD,EACTqD,EAAG,CAAC,GAAKrD,EACTqD,EAAG,CAAC,GAAKrD,EACTqD,EAAG,CAAC,GAAKrD,EACTqD,EAAG,CAAC,GAAKrD,EACTqD,EAAG,CAAC,GAAKrD,EACTqD,EAAG,CAAC,GAAKrD,EACTqD,EAAG,CAAC,GAAKrD,EACF,IACT,CACA,aAAc,CACZ,IAAMqD,EAAK,KAAK,SACV3C,EAAI2C,EAAG,CAAC,EAAG1C,EAAI0C,EAAG,CAAC,EAAGzC,EAAIyC,EAAG,CAAC,EAAGyB,EAAIzB,EAAG,CAAC,EAAGxB,EAAIwB,EAAG,CAAC,EAAG0B,EAAI1B,EAAG,CAAC,EAAG2B,EAAI3B,EAAG,CAAC,EAAG4B,EAAI5B,EAAG,CAAC,EAAG/F,EAAI+F,EAAG,CAAC,EACtG,OAAO3C,EAAImB,EAAIvE,EAAIoD,EAAIqE,EAAIE,EAAItE,EAAImE,EAAIxH,EAAIqD,EAAIoE,EAAIC,EAAIpE,EAAIkE,EAAIG,EAAIrE,EAAIiB,EAAImD,CAC7E,CACA,QAAS,CACP,IAAM3B,EAAK,KAAK,SAAUT,EAAMS,EAAG,CAAC,EAAGN,EAAMM,EAAG,CAAC,EAAGH,EAAMG,EAAG,CAAC,EAAGR,EAAMQ,EAAG,CAAC,EAAGL,EAAMK,EAAG,CAAC,EAAGF,EAAME,EAAG,CAAC,EAAGP,EAAMO,EAAG,CAAC,EAAGJ,EAAMI,EAAG,CAAC,EAAGD,EAAMC,EAAG,CAAC,EAAG6B,EAAM9B,EAAMJ,EAAMG,EAAMF,EAAKkC,EAAMhC,EAAML,EAAMM,EAAMP,EAAKuC,EAAMnC,EAAMJ,EAAMG,EAAMF,EAAKuC,EAAMzC,EAAMsC,EAAMnC,EAAMoC,EAAMjC,EAAMkC,EAC1Q,GAAIC,IAAQ,EAAG,OAAO,KAAK,IAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACxD,IAAMC,EAAS,EAAID,EACnB,OAAAhC,EAAG,CAAC,EAAI6B,EAAMI,EACdjC,EAAG,CAAC,GAAKH,EAAMD,EAAMG,EAAML,GAAOuC,EAClCjC,EAAG,CAAC,GAAKF,EAAMJ,EAAMG,EAAMF,GAAOsC,EAClCjC,EAAG,CAAC,EAAI8B,EAAMG,EACdjC,EAAG,CAAC,GAAKD,EAAMR,EAAMM,EAAMJ,GAAOwC,EAClCjC,EAAG,CAAC,GAAKH,EAAML,EAAMM,EAAMP,GAAO0C,EAClCjC,EAAG,CAAC,EAAI+B,EAAME,EACdjC,EAAG,CAAC,GAAKN,EAAMD,EAAMG,EAAML,GAAO0C,EAClCjC,EAAG,CAAC,GAAKL,EAAMJ,EAAMG,EAAMF,GAAOyC,EAC3B,IACT,CACA,WAAY,CACV,IAAIC,EACEhH,EAAI,KAAK,SACf,OAAAgH,EAAOhH,EAAE,CAAC,EACVA,EAAE,CAAC,EAAIA,EAAE,CAAC,EACVA,EAAE,CAAC,EAAIgH,EACPA,EAAOhH,EAAE,CAAC,EACVA,EAAE,CAAC,EAAIA,EAAE,CAAC,EACVA,EAAE,CAAC,EAAIgH,EACPA,EAAOhH,EAAE,CAAC,EACVA,EAAE,CAAC,EAAIA,EAAE,CAAC,EACVA,EAAE,CAAC,EAAIgH,EACA,IACT,CACA,gBAAgBC,EAAS,CACvB,OAAO,KAAK,eAAeA,CAAO,EAAE,OAAO,EAAE,UAAU,CACzD,CACA,mBAAmBC,EAAG,CACpB,IAAMlH,EAAI,KAAK,SACf,OAAAkH,EAAE,CAAC,EAAIlH,EAAE,CAAC,EACVkH,EAAE,CAAC,EAAIlH,EAAE,CAAC,EACVkH,EAAE,CAAC,EAAIlH,EAAE,CAAC,EACVkH,EAAE,CAAC,EAAIlH,EAAE,CAAC,EACVkH,EAAE,CAAC,EAAIlH,EAAE,CAAC,EACVkH,EAAE,CAAC,EAAIlH,EAAE,CAAC,EACVkH,EAAE,CAAC,EAAIlH,EAAE,CAAC,EACVkH,EAAE,CAAC,EAAIlH,EAAE,CAAC,EACVkH,EAAE,CAAC,EAAIlH,EAAE,CAAC,EACH,IACT,CACA,eAAemH,EAAIC,EAAIC,EAAIC,EAAIC,EAAUC,EAAIC,EAAI,CAC/C,IAAMpF,EAAI,KAAK,IAAIkF,CAAQ,EACrB9F,EAAI,KAAK,IAAI8F,CAAQ,EAC3B,YAAK,IACHF,EAAKhF,EACLgF,EAAK5F,EACL,CAAC4F,GAAMhF,EAAImF,EAAK/F,EAAIgG,GAAMD,EAAKL,EAC/B,CAACG,EAAK7F,EACN6F,EAAKjF,EACL,CAACiF,GAAM,CAAC7F,EAAI+F,EAAKnF,EAAIoF,GAAMA,EAAKL,EAChC,EACA,EACA,CACF,EACO,IACT,CAEA,MAAMC,EAAIC,EAAI,CACZ,YAAK,YAAYI,GAAI,UAAUL,EAAIC,CAAE,CAAC,EAC/B,IACT,CACA,OAAO5D,EAAO,CACZ,YAAK,YAAYgE,GAAI,aAAa,CAAChE,CAAK,CAAC,EAClC,IACT,CACA,UAAUyD,EAAIC,EAAI,CAChB,YAAK,YAAYM,GAAI,gBAAgBP,EAAIC,CAAE,CAAC,EACrC,IACT,CAEA,gBAAgBlH,EAAGM,EAAG,CACpB,OAAIN,EAAE,UACJ,KAAK,IACH,EACA,EACAA,EAAE,EACF,EACA,EACAA,EAAE,EACF,EACA,EACA,CACF,EAEA,KAAK,IACH,EACA,EACAA,EACA,EACA,EACAM,EACA,EACA,EACA,CACF,EAEK,IACT,CACA,aAAakD,EAAO,CAClB,IAAMrB,EAAI,KAAK,IAAIqB,CAAK,EAClBjC,EAAI,KAAK,IAAIiC,CAAK,EACxB,YAAK,IACHrB,EACA,CAACZ,EACD,EACAA,EACAY,EACA,EACA,EACA,EACA,CACF,EACO,IACT,CACA,UAAUnC,EAAGM,EAAG,CACd,YAAK,IACHN,EACA,EACA,EACA,EACAM,EACA,EACA,EACA,EACA,CACF,EACO,IACT,CAEA,OAAOmH,EAAQ,CACb,IAAM7C,EAAK,KAAK,SACVC,EAAK4C,EAAO,SAClB,QAAS5I,EAAI,EAAGA,EAAI,EAAGA,IACrB,GAAI+F,EAAG/F,CAAC,IAAMgG,EAAGhG,CAAC,EAAG,MAAO,GAE9B,MAAO,EACT,CACA,UAAUD,EAAOkF,EAAS,EAAG,CAC3B,QAAS,EAAI,EAAG,EAAI,EAAG,IACrB,KAAK,SAAS,CAAC,EAAIlF,EAAM,EAAIkF,CAAM,EAErC,OAAO,IACT,CACA,QAAQlF,EAAQ,CAAC,EAAGkF,EAAS,EAAG,CAC9B,IAAMc,EAAK,KAAK,SAChB,OAAAhG,EAAMkF,CAAM,EAAIc,EAAG,CAAC,EACpBhG,EAAMkF,EAAS,CAAC,EAAIc,EAAG,CAAC,EACxBhG,EAAMkF,EAAS,CAAC,EAAIc,EAAG,CAAC,EACxBhG,EAAMkF,EAAS,CAAC,EAAIc,EAAG,CAAC,EACxBhG,EAAMkF,EAAS,CAAC,EAAIc,EAAG,CAAC,EACxBhG,EAAMkF,EAAS,CAAC,EAAIc,EAAG,CAAC,EACxBhG,EAAMkF,EAAS,CAAC,EAAIc,EAAG,CAAC,EACxBhG,EAAMkF,EAAS,CAAC,EAAIc,EAAG,CAAC,EACxBhG,EAAMkF,EAAS,CAAC,EAAIc,EAAG,CAAC,EACjBhG,CACT,CACA,OAAQ,CACN,OAAO,IAAI,KAAK,YAAY,EAAE,UAAU,KAAK,QAAQ,CACvD,CACF,EACI4I,GAAsB,IAAI1W,GAC9B,SAAS4W,GAAiB9I,EAAO,CAC/B,QAASC,EAAID,EAAM,OAAS,EAAGC,GAAK,EAAG,EAAEA,EACvC,GAAID,EAAMC,CAAC,GAAK,MAAO,MAAO,GAEhC,MAAO,EACT,CACA,IAAI8I,GAAe,CACjB,UACA,WACA,kBACA,WACA,YACA,WACA,YACA,aACA,YACF,EACA,SAASC,GAActJ,EAAMuJ,EAAQ,CACnC,OAAO,IAAIF,GAAarJ,CAAI,EAAEuJ,CAAM,CACtC,CACA,SAASC,GAAgBC,EAAM,CAC7B,OAAO,SAAS,gBAAgB,+BAAgCA,CAAI,CACtE,CACA,SAAS1J,IAAsB,CAC7B,IAAM2J,EAASF,GAAgB,QAAQ,EACvC,OAAAE,EAAO,MAAM,QAAU,QAChBA,CACT,CACA,IAAIC,GAAS,CAAC,EACd,SAASC,GAASC,EAAS,CACrBA,KAAWF,KACfA,GAAOE,CAAO,EAAI,GAClB,QAAQ,KAAKA,CAAO,EACtB,CACA,SAASC,GAAWC,EAAIC,EAAMC,EAAU,CACtC,OAAO,IAAI,QAAQ,SAASC,EAASC,EAAQ,CAC3C,SAASC,GAAQ,CACf,OAAQL,EAAG,eAAeC,EAAMD,EAAG,wBAAyB,CAAC,EAAG,CAC9D,KAAKA,EAAG,YACNI,EAAO,EACP,MACF,KAAKJ,EAAG,gBACN,WAAWK,EAAOH,CAAQ,EAC1B,MACF,QACEC,EAAQ,CACZ,CACF,CACA,WAAWE,EAAOH,CAAQ,CAC5B,CAAC,CACH,CACA,SAASI,GAA6BC,EAAkB,CACtD,IAAM9I,EAAI8I,EAAiB,SAC3B9I,EAAE,CAAC,EAAI,GAAMA,EAAE,CAAC,EAAI,GAAMA,EAAE,CAAC,EAC7BA,EAAE,CAAC,EAAI,GAAMA,EAAE,CAAC,EAAI,GAAMA,EAAE,CAAC,EAC7BA,EAAE,EAAE,EAAI,GAAMA,EAAE,EAAE,EAAI,GAAMA,EAAE,EAAE,EAChCA,EAAE,EAAE,EAAI,GAAMA,EAAE,EAAE,EAAI,GAAMA,EAAE,EAAE,CAClC,CACA,SAAS+I,GAA2BD,EAAkB,CACpD,IAAM9I,EAAI8I,EAAiB,SACC9I,EAAE,EAAE,IAAM,IAEpCA,EAAE,EAAE,EAAI,CAACA,EAAE,EAAE,EAAI,EACjBA,EAAE,EAAE,EAAI,CAACA,EAAE,EAAE,IAEbA,EAAE,EAAE,EAAI,CAACA,EAAE,EAAE,EACbA,EAAE,EAAE,EAAI,CAACA,EAAE,EAAE,EAAI,EAErB,CACA,IAAIgJ,GAAmD,IAAIhY,GAAQ,EAAE,IACnE,SACA,QACA,EACA,SACA,SACA,EACA,SACA,SACA,QACF,EACIiY,GAAmD,IAAIjY,GAAQ,EAAE,IACnE,UACA,UACA,EACA,UACA,UACA,EACA,UACA,UACA,SACF,EACIkY,GAAe,CACjB,CAAClZ,EAAoB,EAAG,CACtB,SAAUE,GACV,UAAWiI,GACX,sBAAuB,CAAC,MAAQ,MAAQ,KAAM,EAC9C,YAAcgR,GAAUA,EACxB,cAAgBA,GAAUA,CAC5B,EACA,CAACpQ,EAAc,EAAG,CAChB,SAAUC,GACV,UAAWb,GACX,sBAAuB,CAAC,MAAQ,MAAQ,KAAM,EAC9C,YAAcgR,GAAUA,EAAM,oBAAoB,EAClD,cAAgBA,GAAUA,EAAM,oBAAoB,CACtD,EACA,CAAC1Z,EAAyB,EAAG,CAC3B,SAAUS,GACV,UAAW+D,GACX,sBAAuB,CAAC,MAAQ,MAAQ,KAAM,EAC9C,YAAckV,GAAUA,EAAM,aAAaF,EAAgC,EAC3E,cAAgBE,GAAUA,EAAM,aAAaH,EAAgC,CAC/E,EACA,CAAC1e,EAAmB,EAAG,CACrB,SAAU0O,GACV,UAAW/E,GACX,sBAAuB,CAAC,MAAQ,MAAQ,KAAM,EAC9C,YAAckV,GAAUA,EAAM,oBAAoB,EAAE,aAAaF,EAAgC,EACjG,cAAgBE,GAAUA,EAAM,aAAaH,EAAgC,EAAE,oBAAoB,CACrG,CACF,EACII,GAAiD,IAAI,IAAI,CAACpZ,GAAsBP,EAAyB,CAAC,EAC1G9H,GAAkB,CACpB,QAAS,GACT,mBAAoBqI,GACpB,IAAI,mBAAoB,CACtB,OAAO,KAAK,kBACd,EACA,IAAI,kBAAkBqZ,EAAY,CAChC,GAAI,CAACD,GAA+B,IAAIC,CAAU,EAChD,MAAM,IAAI,MAAM,qCAAqCA,CAAU,IAAI,EAErE,KAAK,mBAAqBA,CAC5B,EACA,QAAS,SAASF,EAAOG,EAAkBC,EAAkB,CAC3D,GAAI,KAAK,UAAY,IAASD,IAAqBC,GAAoB,CAACD,GAAoB,CAACC,EAC3F,OAAOJ,EAET,IAAMK,EAAoBN,GAAaI,CAAgB,EAAE,YACnDG,EAAsBP,GAAaK,CAAgB,EAAE,cAC3D,OAAOE,EAAoBD,EAAkBL,CAAK,CAAC,CACrD,EACA,sBAAuB,SAASA,EAAOI,EAAkB,CACvD,OAAO,KAAK,QAAQJ,EAAO,KAAK,mBAAoBI,CAAgB,CACtE,EACA,oBAAqB,SAASJ,EAAOG,EAAkB,CACrD,OAAO,KAAK,QAAQH,EAAOG,EAAkB,KAAK,kBAAkB,CACtE,EACA,aAAc,SAASD,EAAY,CACjC,OAAOH,GAAaG,CAAU,EAAE,SAClC,EACA,YAAa,SAASA,EAAY,CAChC,OAAIA,IAAexW,GAAqB3C,GACjCgZ,GAAaG,CAAU,EAAE,QAClC,EACA,yBAA0B,SAASK,EAAQL,EAAa,KAAK,mBAAoB,CAC/E,OAAOK,EAAO,UAAUR,GAAaG,CAAU,EAAE,qBAAqB,CACxE,CACF,EACA,SAASM,GAAatH,EAAG,CACvB,OAAOA,EAAI,OAAUA,EAAI,YAAe,KAAK,IAAIA,EAAI,YAAe,YAAc,GAAG,CACvF,CACA,SAASuH,GAAavH,EAAG,CACvB,OAAOA,EAAI,SAAWA,EAAI,MAAQ,MAAQ,KAAK,IAAIA,EAAG,MAAO,EAAI,IACnE,CACA,IAAIwH,GACA3c,GAAa,KAAM,CACrB,OAAO,WAAW4c,EAAO,CAIvB,GAHI,UAAU,KAAKA,EAAM,GAAG,GAGxB,OAAO,kBAAsB,IAC/B,OAAOA,EAAM,IAEf,IAAI5B,EACJ,GAAI4B,aAAiB,kBACnB5B,EAAS4B,MACJ,CACDD,KAAY,SAAQA,GAAU7B,GAAgB,QAAQ,GAC1D6B,GAAQ,MAAQC,EAAM,MACtBD,GAAQ,OAASC,EAAM,OACvB,IAAMC,EAAUF,GAAQ,WAAW,IAAI,EACnCC,aAAiB,UACnBC,EAAQ,aAAaD,EAAO,EAAG,CAAC,EAEhCC,EAAQ,UAAUD,EAAO,EAAG,EAAGA,EAAM,MAAOA,EAAM,MAAM,EAE1D5B,EAAS2B,EACX,CACA,OAAI3B,EAAO,MAAQ,MAAQA,EAAO,OAAS,MACzC,QAAQ,KAAK,8EAA+E4B,CAAK,EAC1F5B,EAAO,UAAU,aAAc,EAAG,GAElCA,EAAO,UAAU,WAAW,CAEvC,CACA,OAAO,aAAa4B,EAAO,CACzB,GAAI,OAAO,iBAAqB,KAAeA,aAAiB,kBAAoB,OAAO,kBAAsB,KAAeA,aAAiB,mBAAqB,OAAO,YAAgB,KAAeA,aAAiB,YAAa,CACxO,IAAM5B,EAASF,GAAgB,QAAQ,EACvCE,EAAO,MAAQ4B,EAAM,MACrB5B,EAAO,OAAS4B,EAAM,OACtB,IAAMC,EAAU7B,EAAO,WAAW,IAAI,EACtC6B,EAAQ,UAAUD,EAAO,EAAG,EAAGA,EAAM,MAAOA,EAAM,MAAM,EACxD,IAAME,EAAYD,EAAQ,aAAa,EAAG,EAAGD,EAAM,MAAOA,EAAM,MAAM,EAChEG,EAAOD,EAAU,KACvB,QAASjL,EAAI,EAAGA,EAAIkL,EAAK,OAAQlL,IAC/BkL,EAAKlL,CAAC,EAAI4K,GAAaM,EAAKlL,CAAC,EAAI,GAAG,EAAI,IAE1C,OAAAgL,EAAQ,aAAaC,EAAW,EAAG,CAAC,EAC7B9B,CACT,SAAW4B,EAAM,KAAM,CACrB,IAAMG,EAAOH,EAAM,KAAK,MAAM,CAAC,EAC/B,QAAS/K,EAAI,EAAGA,EAAIkL,EAAK,OAAQlL,IAC3BkL,aAAgB,YAAcA,aAAgB,kBAChDA,EAAKlL,CAAC,EAAI,KAAK,MAAM4K,GAAaM,EAAKlL,CAAC,EAAI,GAAG,EAAI,GAAG,EAEtDkL,EAAKlL,CAAC,EAAI4K,GAAaM,EAAKlL,CAAC,CAAC,EAGlC,MAAO,CACL,KAAAkL,EACA,MAAOH,EAAM,MACb,OAAQA,EAAM,MAChB,CACF,KACE,gBAAQ,KAAK,6FAA6F,EACnGA,CAEX,CACF,EACII,GAAY,EACZpQ,GAAS,KAAM,CACjB,YAAYmQ,EAAO,KAAM,CACvB,KAAK,SAAW,GAChB,OAAO,eAAe,KAAM,KAAM,CAAE,MAAOC,IAAY,CAAC,EACxD,KAAK,KAAO7K,GAAa,EACzB,KAAK,KAAO4K,EACZ,KAAK,UAAY,GACjB,KAAK,QAAU,CACjB,CACA,IAAI,YAAYtK,EAAO,CACjBA,IAAU,IAAM,KAAK,SAC3B,CACA,OAAOwK,EAAM,CACX,IAAMC,EAAeD,IAAS,QAAU,OAAOA,GAAS,SACxD,GAAI,CAACC,GAAgBD,EAAK,OAAO,KAAK,IAAI,IAAM,OAC9C,OAAOA,EAAK,OAAO,KAAK,IAAI,EAE9B,IAAME,EAAS,CACb,KAAM,KAAK,KACX,IAAK,EACP,EACMJ,EAAO,KAAK,KAClB,GAAIA,IAAS,KAAM,CACjB,IAAIK,EACJ,GAAI,MAAM,QAAQL,CAAI,EAAG,CACvBK,EAAM,CAAC,EACP,QAASvL,EAAI,EAAGC,EAAIiL,EAAK,OAAQlL,EAAIC,EAAGD,IAClCkL,EAAKlL,CAAC,EAAE,cACVuL,EAAI,KAAKC,GAAeN,EAAKlL,CAAC,EAAE,KAAK,CAAC,EAEtCuL,EAAI,KAAKC,GAAeN,EAAKlL,CAAC,CAAC,CAAC,CAGtC,MACEuL,EAAMC,GAAeN,CAAI,EAE3BI,EAAO,IAAMC,CACf,CACA,OAAKF,IACHD,EAAK,OAAO,KAAK,IAAI,EAAIE,GAEpBA,CACT,CACF,EACA,SAASE,GAAeT,EAAO,CAC7B,OAAI,OAAO,iBAAqB,KAAeA,aAAiB,kBAAoB,OAAO,kBAAsB,KAAeA,aAAiB,mBAAqB,OAAO,YAAgB,KAAeA,aAAiB,YACpN5c,GAAW,WAAW4c,CAAK,EAE9BA,EAAM,KACD,CACL,KAAM,MAAM,KAAKA,EAAM,IAAI,EAC3B,MAAOA,EAAM,MACb,OAAQA,EAAM,OACd,KAAMA,EAAM,KAAK,YAAY,IAC/B,GAEA,QAAQ,KAAK,6CAA6C,EACnD,CAAC,EAGd,CACA,IAAIU,GAAa,EACbhP,GAAU,MAAMiP,WAAiBnf,EAAgB,CACnD,YAAYwe,EAAQW,GAAS,cAAeC,EAAUD,GAAS,gBAAiBE,EAAQpjB,GAAqBqjB,EAAQrjB,GAAqBsjB,EAAYnb,GAAcob,EAAYhb,GAA0Bib,EAASnV,GAAY4I,EAAO7B,GAAkBqO,EAAaP,GAAS,mBAAoBpB,EAAaxW,GAAc,CAC3T,MAAM,EACN,KAAK,UAAY,GACjB,OAAO,eAAe,KAAM,KAAM,CAAE,MAAO2X,IAAa,CAAC,EACzD,KAAK,KAAOnL,GAAa,EACzB,KAAK,KAAO,GACZ,KAAK,OAAS,IAAIvF,GAAOgQ,CAAK,EAC9B,KAAK,QAAU,CAAC,EAChB,KAAK,QAAUY,EACf,KAAK,QAAU,EACf,KAAK,MAAQC,EACb,KAAK,MAAQC,EACb,KAAK,UAAYC,EACjB,KAAK,UAAYC,EACjB,KAAK,WAAaE,EAClB,KAAK,OAASD,EACd,KAAK,eAAiB,KACtB,KAAK,KAAOvM,EACZ,KAAK,OAAS,IAAIrB,EAAQ,EAAG,CAAC,EAC9B,KAAK,OAAS,IAAIA,EAAQ,EAAG,CAAC,EAC9B,KAAK,OAAS,IAAIA,EAAQ,EAAG,CAAC,EAC9B,KAAK,SAAW,EAChB,KAAK,iBAAmB,GACxB,KAAK,OAAS,IAAInM,GAClB,KAAK,gBAAkB,GACvB,KAAK,iBAAmB,GACxB,KAAK,MAAQ,GACb,KAAK,gBAAkB,EACvB,KAAK,WAAaqY,EAClB,KAAK,SAAW,CAAC,EACjB,KAAK,QAAU,EACf,KAAK,SAAW,KAChB,KAAK,sBAAwB,GAC7B,KAAK,aAAe,CACtB,CACA,IAAI,OAAQ,CACV,OAAO,KAAK,OAAO,IACrB,CACA,IAAI,MAAM1J,EAAQ,KAAM,CACtB,KAAK,OAAO,KAAOA,CACrB,CACA,cAAe,CACb,KAAK,OAAO,eAAe,KAAK,OAAO,EAAG,KAAK,OAAO,EAAG,KAAK,OAAO,EAAG,KAAK,OAAO,EAAG,KAAK,SAAU,KAAK,OAAO,EAAG,KAAK,OAAO,CAAC,CACpI,CACA,OAAQ,CACN,OAAO,IAAI,KAAK,YAAY,EAAE,KAAK,IAAI,CACzC,CACA,KAAKsL,EAAQ,CACX,YAAK,KAAOA,EAAO,KACnB,KAAK,OAASA,EAAO,OACrB,KAAK,QAAUA,EAAO,QAAQ,MAAM,CAAC,EACrC,KAAK,QAAUA,EAAO,QACtB,KAAK,QAAUA,EAAO,QACtB,KAAK,MAAQA,EAAO,MACpB,KAAK,MAAQA,EAAO,MACpB,KAAK,UAAYA,EAAO,UACxB,KAAK,UAAYA,EAAO,UACxB,KAAK,WAAaA,EAAO,WACzB,KAAK,OAASA,EAAO,OACrB,KAAK,eAAiBA,EAAO,eAC7B,KAAK,KAAOA,EAAO,KACnB,KAAK,OAAO,KAAKA,EAAO,MAAM,EAC9B,KAAK,OAAO,KAAKA,EAAO,MAAM,EAC9B,KAAK,OAAO,KAAKA,EAAO,MAAM,EAC9B,KAAK,SAAWA,EAAO,SACvB,KAAK,iBAAmBA,EAAO,iBAC/B,KAAK,OAAO,KAAKA,EAAO,MAAM,EAC9B,KAAK,gBAAkBA,EAAO,gBAC9B,KAAK,iBAAmBA,EAAO,iBAC/B,KAAK,MAAQA,EAAO,MACpB,KAAK,gBAAkBA,EAAO,gBAC9B,KAAK,WAAaA,EAAO,WACzB,KAAK,SAAW,KAAK,MAAM,KAAK,UAAUA,EAAO,QAAQ,CAAC,EAC1D,KAAK,YAAc,GACZ,IACT,CACA,OAAOd,EAAM,CACX,IAAMC,EAAeD,IAAS,QAAU,OAAOA,GAAS,SACxD,GAAI,CAACC,GAAgBD,EAAK,SAAS,KAAK,IAAI,IAAM,OAChD,OAAOA,EAAK,SAAS,KAAK,IAAI,EAEhC,IAAME,EAAS,CACb,SAAU,CACR,QAAS,IACT,KAAM,UACN,UAAW,gBACb,EACA,KAAM,KAAK,KACX,KAAM,KAAK,KACX,MAAO,KAAK,OAAO,OAAOF,CAAI,EAAE,KAChC,QAAS,KAAK,QACd,QAAS,KAAK,QACd,OAAQ,CAAC,KAAK,OAAO,EAAG,KAAK,OAAO,CAAC,EACrC,OAAQ,CAAC,KAAK,OAAO,EAAG,KAAK,OAAO,CAAC,EACrC,OAAQ,CAAC,KAAK,OAAO,EAAG,KAAK,OAAO,CAAC,EACrC,SAAU,KAAK,SACf,KAAM,CAAC,KAAK,MAAO,KAAK,KAAK,EAC7B,OAAQ,KAAK,OACb,eAAgB,KAAK,eACrB,KAAM,KAAK,KACX,WAAY,KAAK,WACjB,UAAW,KAAK,UAChB,UAAW,KAAK,UAChB,WAAY,KAAK,WACjB,MAAO,KAAK,MACZ,gBAAiB,KAAK,gBACtB,iBAAkB,KAAK,iBACvB,gBAAiB,KAAK,eACxB,EACA,OAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,OAAS,IAAGE,EAAO,SAAW,KAAK,UAC7DD,IACHD,EAAK,SAAS,KAAK,IAAI,EAAIE,GAEtBA,CACT,CACA,SAAU,CACR,KAAK,cAAc,CAAE,KAAM,SAAU,CAAC,CACxC,CACA,YAAYa,EAAI,CACd,GAAI,KAAK,UAAYhP,GAAW,OAAOgP,EAEvC,GADAA,EAAG,aAAa,KAAK,MAAM,EACvBA,EAAG,EAAI,GAAKA,EAAG,EAAI,EACrB,OAAQ,KAAK,MAAO,CAClB,KAAKzS,GACHyS,EAAG,EAAIA,EAAG,EAAI,KAAK,MAAMA,EAAG,CAAC,EAC7B,MACF,KAAK3jB,GACH2jB,EAAG,EAAIA,EAAG,EAAI,EAAI,EAAI,EACtB,MACF,KAAKnZ,GACC,KAAK,IAAI,KAAK,MAAMmZ,EAAG,CAAC,EAAI,CAAC,IAAM,EACrCA,EAAG,EAAI,KAAK,KAAKA,EAAG,CAAC,EAAIA,EAAG,EAE5BA,EAAG,EAAIA,EAAG,EAAI,KAAK,MAAMA,EAAG,CAAC,EAE/B,KACJ,CAEF,GAAIA,EAAG,EAAI,GAAKA,EAAG,EAAI,EACrB,OAAQ,KAAK,MAAO,CAClB,KAAKzS,GACHyS,EAAG,EAAIA,EAAG,EAAI,KAAK,MAAMA,EAAG,CAAC,EAC7B,MACF,KAAK3jB,GACH2jB,EAAG,EAAIA,EAAG,EAAI,EAAI,EAAI,EACtB,MACF,KAAKnZ,GACC,KAAK,IAAI,KAAK,MAAMmZ,EAAG,CAAC,EAAI,CAAC,IAAM,EACrCA,EAAG,EAAI,KAAK,KAAKA,EAAG,CAAC,EAAIA,EAAG,EAE5BA,EAAG,EAAIA,EAAG,EAAI,KAAK,MAAMA,EAAG,CAAC,EAE/B,KACJ,CAEF,OAAI,KAAK,QACPA,EAAG,EAAI,EAAIA,EAAG,GAETA,CACT,CACA,IAAI,YAAYvL,EAAO,CACjBA,IAAU,KACZ,KAAK,UACL,KAAK,OAAO,YAAc,GAE9B,CACA,IAAI,iBAAiBA,EAAO,CACtBA,IAAU,IACZ,KAAK,cAET,CACF,EACAnE,GAAQ,cAAgB,KACxBA,GAAQ,gBAAkBU,GAC1BV,GAAQ,mBAAqB,EAC7B,IAAI6B,GAAU,MAAM8N,EAAS,CAC3B,YAAYjL,EAAI,EAAGM,EAAI,EAAG4K,EAAI,EAAGC,EAAI,EAAG,CACtCF,GAAS,UAAU,UAAY,GAC/B,KAAK,EAAIjL,EACT,KAAK,EAAIM,EACT,KAAK,EAAI4K,EACT,KAAK,EAAIC,CACX,CACA,IAAI,OAAQ,CACV,OAAO,KAAK,CACd,CACA,IAAI,MAAM1L,EAAO,CACf,KAAK,EAAIA,CACX,CACA,IAAI,QAAS,CACX,OAAO,KAAK,CACd,CACA,IAAI,OAAOA,EAAO,CAChB,KAAK,EAAIA,CACX,CACA,IAAIO,EAAGM,EAAG4K,EAAGC,EAAG,CACd,YAAK,EAAInL,EACT,KAAK,EAAIM,EACT,KAAK,EAAI4K,EACT,KAAK,EAAIC,EACF,IACT,CACA,UAAUjI,EAAQ,CAChB,YAAK,EAAIA,EACT,KAAK,EAAIA,EACT,KAAK,EAAIA,EACT,KAAK,EAAIA,EACF,IACT,CACA,KAAKlD,EAAG,CACN,YAAK,EAAIA,EACF,IACT,CACA,KAAKM,EAAG,CACN,YAAK,EAAIA,EACF,IACT,CACA,KAAK4K,EAAG,CACN,YAAK,EAAIA,EACF,IACT,CACA,KAAKC,EAAG,CACN,YAAK,EAAIA,EACF,IACT,CACA,aAAazM,EAAOe,EAAO,CACzB,OAAQf,EAAO,CACb,IAAK,GACH,KAAK,EAAIe,EACT,MACF,IAAK,GACH,KAAK,EAAIA,EACT,MACF,IAAK,GACH,KAAK,EAAIA,EACT,MACF,IAAK,GACH,KAAK,EAAIA,EACT,MACF,QACE,MAAM,IAAI,MAAM,0BAA4Bf,CAAK,CACrD,CACA,OAAO,IACT,CACA,aAAaA,EAAO,CAClB,OAAQA,EAAO,CACb,IAAK,GACH,OAAO,KAAK,EACd,IAAK,GACH,OAAO,KAAK,EACd,IAAK,GACH,OAAO,KAAK,EACd,IAAK,GACH,OAAO,KAAK,EACd,QACE,MAAM,IAAI,MAAM,0BAA4BA,CAAK,CACrD,CACF,CACA,OAAQ,CACN,OAAO,IAAI,KAAK,YAAY,KAAK,EAAG,KAAK,EAAG,KAAK,EAAG,KAAK,CAAC,CAC5D,CACA,KAAKyE,EAAG,CACN,YAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,IAAM,OAASA,EAAE,EAAI,EACzB,IACT,CACA,IAAIA,EAAG,CACL,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CACA,UAAU5B,EAAG,CACX,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IACT,CACA,WAAWU,EAAGC,EAAG,CACf,YAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EACV,IACT,CACA,gBAAgBiB,EAAG5B,EAAG,CACpB,YAAK,GAAK4B,EAAE,EAAI5B,EAChB,KAAK,GAAK4B,EAAE,EAAI5B,EAChB,KAAK,GAAK4B,EAAE,EAAI5B,EAChB,KAAK,GAAK4B,EAAE,EAAI5B,EACT,IACT,CACA,IAAI4B,EAAG,CACL,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CACA,UAAU5B,EAAG,CACX,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IACT,CACA,WAAWU,EAAGC,EAAG,CACf,YAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EACV,IACT,CACA,SAASiB,EAAG,CACV,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CACA,eAAeD,EAAQ,CACrB,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IACT,CACA,aAAapD,EAAG,CACd,IAAME,EAAI,KAAK,EAAGM,EAAI,KAAK,EAAG4K,EAAI,KAAK,EAAGC,EAAI,KAAK,EAC7C/H,EAAItD,EAAE,SACZ,YAAK,EAAIsD,EAAE,CAAC,EAAIpD,EAAIoD,EAAE,CAAC,EAAI9C,EAAI8C,EAAE,CAAC,EAAI8H,EAAI9H,EAAE,EAAE,EAAI+H,EAClD,KAAK,EAAI/H,EAAE,CAAC,EAAIpD,EAAIoD,EAAE,CAAC,EAAI9C,EAAI8C,EAAE,CAAC,EAAI8H,EAAI9H,EAAE,EAAE,EAAI+H,EAClD,KAAK,EAAI/H,EAAE,CAAC,EAAIpD,EAAIoD,EAAE,CAAC,EAAI9C,EAAI8C,EAAE,EAAE,EAAI8H,EAAI9H,EAAE,EAAE,EAAI+H,EACnD,KAAK,EAAI/H,EAAE,CAAC,EAAIpD,EAAIoD,EAAE,CAAC,EAAI9C,EAAI8C,EAAE,EAAE,EAAI8H,EAAI9H,EAAE,EAAE,EAAI+H,EAC5C,IACT,CACA,aAAajI,EAAQ,CACnB,OAAO,KAAK,eAAe,EAAIA,CAAM,CACvC,CACA,2BAA2BlB,EAAG,CAC5B,KAAK,EAAI,EAAI,KAAK,KAAKA,EAAE,CAAC,EAC1B,IAAMT,EAAI,KAAK,KAAK,EAAIS,EAAE,EAAIA,EAAE,CAAC,EACjC,OAAIT,EAAI,MACN,KAAK,EAAI,EACT,KAAK,EAAI,EACT,KAAK,EAAI,IAET,KAAK,EAAIS,EAAE,EAAIT,EACf,KAAK,EAAIS,EAAE,EAAIT,EACf,KAAK,EAAIS,EAAE,EAAIT,GAEV,IACT,CACA,+BAA+BzB,EAAG,CAChC,IAAImE,EAAOjE,EAAGM,EAAG4K,EACqBtG,EAAK9E,EAAE,SAAUsL,EAAMxG,EAAG,CAAC,EAAGyG,EAAMzG,EAAG,CAAC,EAAG0G,EAAM1G,EAAG,CAAC,EAAG2G,EAAM3G,EAAG,CAAC,EAAG4G,EAAM5G,EAAG,CAAC,EAAG6G,EAAM7G,EAAG,CAAC,EAAG8G,EAAM9G,EAAG,CAAC,EAAG+G,EAAM/G,EAAG,CAAC,EAAGgH,EAAMhH,EAAG,EAAE,EAC1K,GAAI,KAAK,IAAIyG,EAAME,CAAG,EAAI,KAAW,KAAK,IAAID,EAAMI,CAAG,EAAI,KAAW,KAAK,IAAID,EAAME,CAAG,EAAI,IAAS,CACnG,GAAI,KAAK,IAAIN,EAAME,CAAG,EAAI,IAAY,KAAK,IAAID,EAAMI,CAAG,EAAI,IAAY,KAAK,IAAID,EAAME,CAAG,EAAI,IAAY,KAAK,IAAIP,EAAMI,EAAMI,EAAM,CAAC,EAAI,GACxI,YAAK,IAAI,EAAG,EAAG,EAAG,CAAC,EACZ,KAET3H,EAAQ,KAAK,GACb,IAAM4H,GAAMT,EAAM,GAAK,EACjBU,GAAMN,EAAM,GAAK,EACjBO,GAAMH,EAAM,GAAK,EACjBI,GAAMX,EAAME,GAAO,EACnBU,GAAMX,EAAMI,GAAO,EACnBQ,GAAMT,EAAME,GAAO,EACzB,OAAIE,EAAKC,GAAMD,EAAKE,EACdF,EAAK,KACP7L,EAAI,EACJM,EAAI,WACJ4K,EAAI,aAEJlL,EAAI,KAAK,KAAK6L,CAAE,EAChBvL,EAAI0L,EAAKhM,EACTkL,EAAIe,EAAKjM,GAEF8L,EAAKC,EACVD,EAAK,KACP9L,EAAI,WACJM,EAAI,EACJ4K,EAAI,aAEJ5K,EAAI,KAAK,KAAKwL,CAAE,EAChB9L,EAAIgM,EAAK1L,EACT4K,EAAIgB,EAAK5L,GAGPyL,EAAK,KACP/L,EAAI,WACJM,EAAI,WACJ4K,EAAI,IAEJA,EAAI,KAAK,KAAKa,CAAE,EAChB/L,EAAIiM,EAAKf,EACT5K,EAAI4L,EAAKhB,GAGb,KAAK,IAAIlL,EAAGM,EAAG4K,EAAGjH,CAAK,EAChB,IACT,CACA,IAAI1C,EAAI,KAAK,MAAMoK,EAAMF,IAAQE,EAAMF,IAAQH,EAAMI,IAAQJ,EAAMI,IAAQH,EAAMF,IAAQE,EAAMF,EAAI,EACnG,OAAI,KAAK,IAAI9J,CAAC,EAAI,OAAMA,EAAI,GAC5B,KAAK,GAAKoK,EAAMF,GAAOlK,EACvB,KAAK,GAAK+J,EAAMI,GAAOnK,EACvB,KAAK,GAAKgK,EAAMF,GAAO9J,EACvB,KAAK,EAAI,KAAK,MAAM6J,EAAMI,EAAMI,EAAM,GAAK,CAAC,EACrC,IACT,CACA,sBAAsB9L,EAAG,CACvB,IAAMsD,EAAItD,EAAE,SACZ,YAAK,EAAIsD,EAAE,EAAE,EACb,KAAK,EAAIA,EAAE,EAAE,EACb,KAAK,EAAIA,EAAE,EAAE,EACb,KAAK,EAAIA,EAAE,EAAE,EACN,IACT,CACA,IAAID,EAAG,CACL,YAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EACtB,IACT,CACA,IAAIA,EAAG,CACL,YAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EACtB,IACT,CACA,MAAMzD,EAAKC,EAAK,CACd,YAAK,EAAI,KAAK,IAAID,EAAI,EAAG,KAAK,IAAIC,EAAI,EAAG,KAAK,CAAC,CAAC,EAChD,KAAK,EAAI,KAAK,IAAID,EAAI,EAAG,KAAK,IAAIC,EAAI,EAAG,KAAK,CAAC,CAAC,EAChD,KAAK,EAAI,KAAK,IAAID,EAAI,EAAG,KAAK,IAAIC,EAAI,EAAG,KAAK,CAAC,CAAC,EAChD,KAAK,EAAI,KAAK,IAAID,EAAI,EAAG,KAAK,IAAIC,EAAI,EAAG,KAAK,CAAC,CAAC,EACzC,IACT,CACA,YAAY0D,EAAQC,EAAQ,CAC1B,YAAK,EAAI,KAAK,IAAID,EAAQ,KAAK,IAAIC,EAAQ,KAAK,CAAC,CAAC,EAClD,KAAK,EAAI,KAAK,IAAID,EAAQ,KAAK,IAAIC,EAAQ,KAAK,CAAC,CAAC,EAClD,KAAK,EAAI,KAAK,IAAID,EAAQ,KAAK,IAAIC,EAAQ,KAAK,CAAC,CAAC,EAClD,KAAK,EAAI,KAAK,IAAID,EAAQ,KAAK,IAAIC,EAAQ,KAAK,CAAC,CAAC,EAC3C,IACT,CACA,YAAY5D,EAAKC,EAAK,CACpB,IAAMkB,EAAS,KAAK,OAAO,EAC3B,OAAO,KAAK,aAAaA,GAAU,CAAC,EAAE,eAAe,KAAK,IAAInB,EAAK,KAAK,IAAIC,EAAKkB,CAAM,CAAC,CAAC,CAC3F,CACA,OAAQ,CACN,YAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EACnB,IACT,CACA,MAAO,CACL,YAAK,EAAI,KAAK,KAAK,KAAK,CAAC,EACzB,KAAK,EAAI,KAAK,KAAK,KAAK,CAAC,EACzB,KAAK,EAAI,KAAK,KAAK,KAAK,CAAC,EACzB,KAAK,EAAI,KAAK,KAAK,KAAK,CAAC,EAClB,IACT,CACA,OAAQ,CACN,YAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EACnB,IACT,CACA,aAAc,CACZ,YAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EACnB,IACT,CACA,QAAS,CACP,YAAK,EAAI,CAAC,KAAK,EACf,KAAK,EAAI,CAAC,KAAK,EACf,KAAK,EAAI,CAAC,KAAK,EACf,KAAK,EAAI,CAAC,KAAK,EACR,IACT,CACA,IAAIsC,EAAG,CACL,OAAO,KAAK,EAAIA,EAAE,EAAI,KAAK,EAAIA,EAAE,EAAI,KAAK,EAAIA,EAAE,EAAI,KAAK,EAAIA,EAAE,CACjE,CACA,UAAW,CACT,OAAO,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,CAC7E,CACA,QAAS,CACP,OAAO,KAAK,KAAK,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,CAAC,CACxF,CACA,iBAAkB,CAChB,OAAO,KAAK,IAAI,KAAK,CAAC,EAAI,KAAK,IAAI,KAAK,CAAC,EAAI,KAAK,IAAI,KAAK,CAAC,EAAI,KAAK,IAAI,KAAK,CAAC,CACjF,CACA,WAAY,CACV,OAAO,KAAK,aAAa,KAAK,OAAO,GAAK,CAAC,CAC7C,CACA,UAAUtC,EAAQ,CAChB,OAAO,KAAK,UAAU,EAAE,eAAeA,CAAM,CAC/C,CACA,KAAKsC,EAAGQ,EAAO,CACb,YAAK,IAAMR,EAAE,EAAI,KAAK,GAAKQ,EAC3B,KAAK,IAAMR,EAAE,EAAI,KAAK,GAAKQ,EAC3B,KAAK,IAAMR,EAAE,EAAI,KAAK,GAAKQ,EAC3B,KAAK,IAAMR,EAAE,EAAI,KAAK,GAAKQ,EACpB,IACT,CACA,YAAYC,EAAIC,EAAIF,EAAO,CACzB,YAAK,EAAIC,EAAG,GAAKC,EAAG,EAAID,EAAG,GAAKD,EAChC,KAAK,EAAIC,EAAG,GAAKC,EAAG,EAAID,EAAG,GAAKD,EAChC,KAAK,EAAIC,EAAG,GAAKC,EAAG,EAAID,EAAG,GAAKD,EAChC,KAAK,EAAIC,EAAG,GAAKC,EAAG,EAAID,EAAG,GAAKD,EACzB,IACT,CACA,OAAOR,EAAG,CACR,OAAOA,EAAE,IAAM,KAAK,GAAKA,EAAE,IAAM,KAAK,GAAKA,EAAE,IAAM,KAAK,GAAKA,EAAE,IAAM,KAAK,CAC5E,CACA,UAAUvE,EAAOkF,EAAS,EAAG,CAC3B,YAAK,EAAIlF,EAAMkF,CAAM,EACrB,KAAK,EAAIlF,EAAMkF,EAAS,CAAC,EACzB,KAAK,EAAIlF,EAAMkF,EAAS,CAAC,EACzB,KAAK,EAAIlF,EAAMkF,EAAS,CAAC,EAClB,IACT,CACA,QAAQlF,EAAQ,CAAC,EAAGkF,EAAS,EAAG,CAC9B,OAAAlF,EAAMkF,CAAM,EAAI,KAAK,EACrBlF,EAAMkF,EAAS,CAAC,EAAI,KAAK,EACzBlF,EAAMkF,EAAS,CAAC,EAAI,KAAK,EACzBlF,EAAMkF,EAAS,CAAC,EAAI,KAAK,EAClBlF,CACT,CACA,oBAAoBmF,EAAWrF,EAAO,CACpC,YAAK,EAAIqF,EAAU,KAAKrF,CAAK,EAC7B,KAAK,EAAIqF,EAAU,KAAKrF,CAAK,EAC7B,KAAK,EAAIqF,EAAU,KAAKrF,CAAK,EAC7B,KAAK,EAAIqF,EAAU,KAAKrF,CAAK,EACtB,IACT,CACA,QAAS,CACP,YAAK,EAAI,KAAK,OAAO,EACrB,KAAK,EAAI,KAAK,OAAO,EACrB,KAAK,EAAI,KAAK,OAAO,EACrB,KAAK,EAAI,KAAK,OAAO,EACd,IACT,CACA,EAAE,OAAO,QAAQ,GAAI,CACnB,MAAM,KAAK,EACX,MAAM,KAAK,EACX,MAAM,KAAK,EACX,MAAM,KAAK,CACb,CACF,EACIpG,GAAe,cAAclN,EAAgB,CAC/C,YAAY+gB,EAAQ,EAAGC,EAAS,EAAGC,EAAU,CAAC,EAAG,CAC/C,MAAM,EACN,KAAK,eAAiB,GACtB,KAAK,MAAQF,EACb,KAAK,OAASC,EACd,KAAK,MAAQ,EACb,KAAK,QAAU,IAAIjP,GAAQ,EAAG,EAAGgP,EAAOC,CAAM,EAC9C,KAAK,YAAc,GACnB,KAAK,SAAW,IAAIjP,GAAQ,EAAG,EAAGgP,EAAOC,CAAM,EAC/C,IAAMxC,EAAQ,CAAE,MAAAuC,EAAO,OAAAC,EAAQ,MAAO,CAAE,EACxCC,EAAU,OAAO,OAAO,CACtB,gBAAiB,GACjB,eAAgB,KAChB,UAAW7c,GACX,YAAa,GACb,cAAe,GACf,mBAAoB,GACpB,qBAAsB,GACtB,aAAc,KACd,QAAS,EACT,MAAO,CACT,EAAG6c,CAAO,EACV,IAAMC,EAAU,IAAIhR,GAAQsO,EAAOyC,EAAQ,QAASA,EAAQ,MAAOA,EAAQ,MAAOA,EAAQ,UAAWA,EAAQ,UAAWA,EAAQ,OAAQA,EAAQ,KAAMA,EAAQ,WAAYA,EAAQ,UAAU,EAC5LC,EAAQ,MAAQ,GAChBA,EAAQ,gBAAkBD,EAAQ,gBAClCC,EAAQ,eAAiBD,EAAQ,eACjC,KAAK,SAAW,CAAC,EACjB,IAAME,EAAQF,EAAQ,MACtB,QAASxN,EAAI,EAAGA,EAAI0N,EAAO1N,IACzB,KAAK,SAASA,CAAC,EAAIyN,EAAQ,MAAM,EACjC,KAAK,SAASzN,CAAC,EAAE,sBAAwB,GAE3C,KAAK,YAAcwN,EAAQ,YAC3B,KAAK,cAAgBA,EAAQ,cAC7B,KAAK,mBAAqBA,EAAQ,mBAClC,KAAK,qBAAuBA,EAAQ,qBACpC,KAAK,aAAeA,EAAQ,aAC5B,KAAK,QAAUA,EAAQ,OACzB,CACA,IAAI,SAAU,CACZ,OAAO,KAAK,SAAS,CAAC,CACxB,CACA,IAAI,QAAQ5M,EAAO,CACjB,KAAK,SAAS,CAAC,EAAIA,CACrB,CACA,QAAQ0M,EAAOC,EAAQI,EAAQ,EAAG,CAChC,GAAI,KAAK,QAAUL,GAAS,KAAK,SAAWC,GAAU,KAAK,QAAUI,EAAO,CAC1E,KAAK,MAAQL,EACb,KAAK,OAASC,EACd,KAAK,MAAQI,EACb,QAAS,EAAI,EAAGC,EAAK,KAAK,SAAS,OAAQ,EAAIA,EAAI,IACjD,KAAK,SAAS,CAAC,EAAE,MAAM,MAAQN,EAC/B,KAAK,SAAS,CAAC,EAAE,MAAM,OAASC,EAChC,KAAK,SAAS,CAAC,EAAE,MAAM,MAAQI,EAEjC,KAAK,QAAQ,CACf,CACA,KAAK,SAAS,IAAI,EAAG,EAAGL,EAAOC,CAAM,EACrC,KAAK,QAAQ,IAAI,EAAG,EAAGD,EAAOC,CAAM,CACtC,CACA,OAAQ,CACN,OAAO,IAAI,KAAK,YAAY,EAAE,KAAK,IAAI,CACzC,CACA,KAAKrB,EAAQ,CACX,KAAK,MAAQA,EAAO,MACpB,KAAK,OAASA,EAAO,OACrB,KAAK,MAAQA,EAAO,MACpB,KAAK,QAAQ,KAAKA,EAAO,OAAO,EAChC,KAAK,YAAcA,EAAO,YAC1B,KAAK,SAAS,KAAKA,EAAO,QAAQ,EAClC,KAAK,SAAS,OAAS,EACvB,QAASlM,EAAI,EAAG4N,EAAK1B,EAAO,SAAS,OAAQlM,EAAI4N,EAAI5N,IACnD,KAAK,SAASA,CAAC,EAAIkM,EAAO,SAASlM,CAAC,EAAE,MAAM,EAC5C,KAAK,SAASA,CAAC,EAAE,sBAAwB,GAE3C,IAAM+K,EAAQ,OAAO,OAAO,CAAC,EAAGmB,EAAO,QAAQ,KAAK,EACpD,YAAK,QAAQ,OAAS,IAAInR,GAAOgQ,CAAK,EACtC,KAAK,YAAcmB,EAAO,YAC1B,KAAK,cAAgBA,EAAO,cAC5B,KAAK,mBAAqBA,EAAO,mBACjC,KAAK,qBAAuBA,EAAO,qBAC/BA,EAAO,eAAiB,OAAM,KAAK,aAAeA,EAAO,aAAa,MAAM,GAChF,KAAK,QAAUA,EAAO,QACf,IACT,CACA,SAAU,CACR,KAAK,cAAc,CAAE,KAAM,SAAU,CAAC,CACxC,CACF,EACIpN,GAAoB,cAAcrF,EAAa,CACjD,YAAY6T,EAAQ,EAAGC,EAAS,EAAGC,EAAU,CAAC,EAAG,CAC/C,MAAMF,EAAOC,EAAQC,CAAO,EAC5B,KAAK,oBAAsB,EAC7B,CACF,EACI/iB,GAAmB,cAAcgS,EAAQ,CAC3C,YAAYyO,EAAO,KAAMoC,EAAQ,EAAGC,EAAS,EAAGI,EAAQ,EAAG,CACzD,MAAM,IAAI,EACV,KAAK,mBAAqB,GAC1B,KAAK,MAAQ,CAAE,KAAAzC,EAAM,MAAAoC,EAAO,OAAAC,EAAQ,MAAAI,CAAM,EAC1C,KAAK,UAAYva,GACjB,KAAK,UAAYA,GACjB,KAAK,MAAQ5K,GACb,KAAK,gBAAkB,GACvB,KAAK,MAAQ,GACb,KAAK,gBAAkB,EACvB,KAAK,aAA+B,IAAI,GAC1C,CACA,eAAeqlB,EAAY,CACzB,KAAK,aAAa,IAAIA,CAAU,CAClC,CACA,mBAAoB,CAClB,KAAK,aAAa,MAAM,CAC1B,CACF,EACInP,GAAyB,cAAcI,EAAkB,CAC3D,YAAYwO,EAAQ,EAAGC,EAAS,EAAGI,EAAQ,EAAGH,EAAU,CAAC,EAAG,CAC1D,MAAMF,EAAOC,EAAQC,CAAO,EAC5B,KAAK,yBAA2B,GAChC,KAAK,MAAQG,EACb,KAAK,QAAU,IAAIljB,GAAiB,KAAM6iB,EAAOC,EAAQI,CAAK,EAC9D,KAAK,QAAQ,sBAAwB,EACvC,CACF,EACInjB,GAAgB,cAAciS,EAAQ,CACxC,YAAYyO,EAAO,KAAMoC,EAAQ,EAAGC,EAAS,EAAGI,EAAQ,EAAG,CACzD,MAAM,IAAI,EACV,KAAK,gBAAkB,GACvB,KAAK,MAAQ,CAAE,KAAAzC,EAAM,MAAAoC,EAAO,OAAAC,EAAQ,MAAAI,CAAM,EAC1C,KAAK,UAAYva,GACjB,KAAK,UAAYA,GACjB,KAAK,MAAQ5K,GACb,KAAK,gBAAkB,GACvB,KAAK,MAAQ,GACb,KAAK,gBAAkB,CACzB,CACF,EACIiW,GAAsB,cAAcK,EAAkB,CACxD,YAAYwO,EAAQ,EAAGC,EAAS,EAAGI,EAAQ,EAAGH,EAAU,CAAC,EAAG,CAC1D,MAAMF,EAAOC,EAAQC,CAAO,EAC5B,KAAK,sBAAwB,GAC7B,KAAK,MAAQG,EACb,KAAK,QAAU,IAAInjB,GAAc,KAAM8iB,EAAOC,EAAQI,CAAK,EAC3D,KAAK,QAAQ,sBAAwB,EACvC,CACF,EACIrX,GAAa,KAAM,CACrB,YAAY6K,EAAI,EAAGM,EAAI,EAAG4K,EAAI,EAAGC,EAAI,EAAG,CACtC,KAAK,aAAe,GACpB,KAAK,GAAKnL,EACV,KAAK,GAAKM,EACV,KAAK,GAAK4K,EACV,KAAK,GAAKC,CACZ,CACA,OAAO,UAAUwB,EAAKC,EAAWC,EAAMC,EAAYC,EAAMC,EAAYxM,EAAG,CACtE,IAAIyM,EAAKJ,EAAKC,EAAa,CAAC,EAAGI,EAAKL,EAAKC,EAAa,CAAC,EAAGK,EAAKN,EAAKC,EAAa,CAAC,EAAGM,EAAKP,EAAKC,EAAa,CAAC,EACvGO,EAAKN,EAAKC,EAAa,CAAC,EAAGM,EAAKP,EAAKC,EAAa,CAAC,EAAGO,EAAKR,EAAKC,EAAa,CAAC,EAAGQ,EAAKT,EAAKC,EAAa,CAAC,EAC/G,GAAIxM,IAAM,EAAG,CACXmM,EAAIC,EAAY,CAAC,EAAIK,EACrBN,EAAIC,EAAY,CAAC,EAAIM,EACrBP,EAAIC,EAAY,CAAC,EAAIO,EACrBR,EAAIC,EAAY,CAAC,EAAIQ,EACrB,MACF,CACA,GAAI5M,IAAM,EAAG,CACXmM,EAAIC,EAAY,CAAC,EAAIS,EACrBV,EAAIC,EAAY,CAAC,EAAIU,EACrBX,EAAIC,EAAY,CAAC,EAAIW,EACrBZ,EAAIC,EAAY,CAAC,EAAIY,EACrB,MACF,CACA,GAAIJ,IAAOI,GAAMP,IAAOI,GAAMH,IAAOI,GAAMH,IAAOI,EAAI,CACpD,IAAIhM,EAAI,EAAIf,EACN6B,EAAM4K,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAAIC,EAAMpL,GAAO,EAAI,EAAI,GAAIqL,EAAS,EAAIrL,EAAMA,EAC/F,GAAIqL,EAAS,OAAO,QAAS,CAC3B,IAAMpL,EAAM,KAAK,KAAKoL,CAAM,EAAGC,EAAM,KAAK,MAAMrL,EAAKD,EAAMoL,CAAG,EAC9DlM,EAAI,KAAK,IAAIA,EAAIoM,CAAG,EAAIrL,EACxB9B,EAAI,KAAK,IAAIA,EAAImN,CAAG,EAAIrL,CAC1B,CACA,IAAMsL,EAAOpN,EAAIiN,EAKjB,GAJAR,EAAKA,EAAK1L,EAAI8L,EAAKO,EACnBV,EAAKA,EAAK3L,EAAI+L,EAAKM,EACnBT,EAAKA,EAAK5L,EAAIgM,EAAKK,EACnBR,EAAKA,EAAK7L,EAAIiM,EAAKI,EACfrM,IAAM,EAAIf,EAAG,CACf,IAAM8F,EAAI,EAAI,KAAK,KAAK2G,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,CAAE,EAC7DH,GAAM3G,EACN4G,GAAM5G,EACN6G,GAAM7G,EACN8G,GAAM9G,CACR,CACF,CACAqG,EAAIC,CAAS,EAAIK,EACjBN,EAAIC,EAAY,CAAC,EAAIM,EACrBP,EAAIC,EAAY,CAAC,EAAIO,EACrBR,EAAIC,EAAY,CAAC,EAAIQ,CACvB,CACA,OAAO,wBAAwBT,EAAKC,EAAWC,EAAMC,EAAYC,EAAMC,EAAY,CACjF,IAAMC,EAAKJ,EAAKC,CAAU,EACpBI,EAAKL,EAAKC,EAAa,CAAC,EACxBK,EAAKN,EAAKC,EAAa,CAAC,EACxBM,EAAKP,EAAKC,EAAa,CAAC,EACxBO,EAAKN,EAAKC,CAAU,EACpBM,EAAKP,EAAKC,EAAa,CAAC,EACxBO,EAAKR,EAAKC,EAAa,CAAC,EACxBQ,EAAKT,EAAKC,EAAa,CAAC,EAC9B,OAAAL,EAAIC,CAAS,EAAIK,EAAKO,EAAKJ,EAAKC,EAAKH,EAAKK,EAAKJ,EAAKG,EACpDX,EAAIC,EAAY,CAAC,EAAIM,EAAKM,EAAKJ,EAAKE,EAAKH,EAAKE,EAAKJ,EAAKM,EACxDZ,EAAIC,EAAY,CAAC,EAAIO,EAAKK,EAAKJ,EAAKG,EAAKN,EAAKK,EAAKJ,EAAKG,EACxDV,EAAIC,EAAY,CAAC,EAAIQ,EAAKI,EAAKP,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EACjDZ,CACT,CACA,IAAI,GAAI,CACN,OAAO,KAAK,EACd,CACA,IAAI,EAAElN,EAAO,CACX,KAAK,GAAKA,EACV,KAAK,kBAAkB,CACzB,CACA,IAAI,GAAI,CACN,OAAO,KAAK,EACd,CACA,IAAI,EAAEA,EAAO,CACX,KAAK,GAAKA,EACV,KAAK,kBAAkB,CACzB,CACA,IAAI,GAAI,CACN,OAAO,KAAK,EACd,CACA,IAAI,EAAEA,EAAO,CACX,KAAK,GAAKA,EACV,KAAK,kBAAkB,CACzB,CACA,IAAI,GAAI,CACN,OAAO,KAAK,EACd,CACA,IAAI,EAAEA,EAAO,CACX,KAAK,GAAKA,EACV,KAAK,kBAAkB,CACzB,CACA,IAAIO,EAAGM,EAAG4K,EAAGC,EAAG,CACd,YAAK,GAAKnL,EACV,KAAK,GAAKM,EACV,KAAK,GAAK4K,EACV,KAAK,GAAKC,EACV,KAAK,kBAAkB,EAChB,IACT,CACA,OAAQ,CACN,OAAO,IAAI,KAAK,YAAY,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,EAAE,CAChE,CACA,KAAK0C,EAAY,CACf,YAAK,GAAKA,EAAW,EACrB,KAAK,GAAKA,EAAW,EACrB,KAAK,GAAKA,EAAW,EACrB,KAAK,GAAKA,EAAW,EACrB,KAAK,kBAAkB,EAChB,IACT,CACA,aAAaC,EAAOC,EAAS,GAAM,CACjC,IAAM/N,EAAI8N,EAAM,GAAIxN,EAAIwN,EAAM,GAAI5C,EAAI4C,EAAM,GAAI1L,EAAQ0L,EAAM,OACxDzL,EAAM,KAAK,IACXC,EAAM,KAAK,IACX0L,EAAK3L,EAAIrC,EAAI,CAAC,EACduC,EAAKF,EAAI/B,EAAI,CAAC,EACd2N,EAAK5L,EAAI6I,EAAI,CAAC,EACdgD,EAAK5L,EAAItC,EAAI,CAAC,EACdwC,EAAKF,EAAIhC,EAAI,CAAC,EACd6N,EAAK7L,EAAI4I,EAAI,CAAC,EACpB,OAAQ9I,EAAO,CACb,IAAK,MACH,KAAK,GAAK8L,EAAK3L,EAAK0L,EAAKD,EAAKxL,EAAK2L,EACnC,KAAK,GAAKH,EAAKxL,EAAKyL,EAAKC,EAAK3L,EAAK4L,EACnC,KAAK,GAAKH,EAAKzL,EAAK4L,EAAKD,EAAK1L,EAAKyL,EACnC,KAAK,GAAKD,EAAKzL,EAAK0L,EAAKC,EAAK1L,EAAK2L,EACnC,MACF,IAAK,MACH,KAAK,GAAKD,EAAK3L,EAAK0L,EAAKD,EAAKxL,EAAK2L,EACnC,KAAK,GAAKH,EAAKxL,EAAKyL,EAAKC,EAAK3L,EAAK4L,EACnC,KAAK,GAAKH,EAAKzL,EAAK4L,EAAKD,EAAK1L,EAAKyL,EACnC,KAAK,GAAKD,EAAKzL,EAAK0L,EAAKC,EAAK1L,EAAK2L,EACnC,MACF,IAAK,MACH,KAAK,GAAKD,EAAK3L,EAAK0L,EAAKD,EAAKxL,EAAK2L,EACnC,KAAK,GAAKH,EAAKxL,EAAKyL,EAAKC,EAAK3L,EAAK4L,EACnC,KAAK,GAAKH,EAAKzL,EAAK4L,EAAKD,EAAK1L,EAAKyL,EACnC,KAAK,GAAKD,EAAKzL,EAAK0L,EAAKC,EAAK1L,EAAK2L,EACnC,MACF,IAAK,MACH,KAAK,GAAKD,EAAK3L,EAAK0L,EAAKD,EAAKxL,EAAK2L,EACnC,KAAK,GAAKH,EAAKxL,EAAKyL,EAAKC,EAAK3L,EAAK4L,EACnC,KAAK,GAAKH,EAAKzL,EAAK4L,EAAKD,EAAK1L,EAAKyL,EACnC,KAAK,GAAKD,EAAKzL,EAAK0L,EAAKC,EAAK1L,EAAK2L,EACnC,MACF,IAAK,MACH,KAAK,GAAKD,EAAK3L,EAAK0L,EAAKD,EAAKxL,EAAK2L,EACnC,KAAK,GAAKH,EAAKxL,EAAKyL,EAAKC,EAAK3L,EAAK4L,EACnC,KAAK,GAAKH,EAAKzL,EAAK4L,EAAKD,EAAK1L,EAAKyL,EACnC,KAAK,GAAKD,EAAKzL,EAAK0L,EAAKC,EAAK1L,EAAK2L,EACnC,MACF,IAAK,MACH,KAAK,GAAKD,EAAK3L,EAAK0L,EAAKD,EAAKxL,EAAK2L,EACnC,KAAK,GAAKH,EAAKxL,EAAKyL,EAAKC,EAAK3L,EAAK4L,EACnC,KAAK,GAAKH,EAAKzL,EAAK4L,EAAKD,EAAK1L,EAAKyL,EACnC,KAAK,GAAKD,EAAKzL,EAAK0L,EAAKC,EAAK1L,EAAK2L,EACnC,MACF,QACE,QAAQ,KAAK,mEAAqE/L,CAAK,CAC3F,CACA,OAAI2L,IAAW,IAAM,KAAK,kBAAkB,EACrC,IACT,CACA,iBAAiBK,EAAMnK,EAAO,CAC5B,IAAMoK,EAAYpK,EAAQ,EAAG1C,EAAI,KAAK,IAAI8M,CAAS,EACnD,YAAK,GAAKD,EAAK,EAAI7M,EACnB,KAAK,GAAK6M,EAAK,EAAI7M,EACnB,KAAK,GAAK6M,EAAK,EAAI7M,EACnB,KAAK,GAAK,KAAK,IAAI8M,CAAS,EAC5B,KAAK,kBAAkB,EAChB,IACT,CACA,sBAAsBvO,EAAG,CACvB,IAAM8E,EAAK9E,EAAE,SAAUsL,EAAMxG,EAAG,CAAC,EAAGyG,EAAMzG,EAAG,CAAC,EAAG0G,EAAM1G,EAAG,CAAC,EAAG2G,EAAM3G,EAAG,CAAC,EAAG4G,EAAM5G,EAAG,CAAC,EAAG6G,EAAM7G,EAAG,CAAC,EAAG8G,EAAM9G,EAAG,CAAC,EAAG+G,EAAM/G,EAAG,CAAC,EAAGgH,EAAMhH,EAAG,EAAE,EAAG0J,EAAQlD,EAAMI,EAAMI,EACjK,GAAI0C,EAAQ,EAAG,CACb,IAAM/M,EAAI,GAAM,KAAK,KAAK+M,EAAQ,CAAC,EACnC,KAAK,GAAK,IAAO/M,EACjB,KAAK,IAAMoK,EAAMF,GAAOlK,EACxB,KAAK,IAAM+J,EAAMI,GAAOnK,EACxB,KAAK,IAAMgK,EAAMF,GAAO9J,CAC1B,SAAW6J,EAAMI,GAAOJ,EAAMQ,EAAK,CACjC,IAAMrK,EAAI,EAAI,KAAK,KAAK,EAAI6J,EAAMI,EAAMI,CAAG,EAC3C,KAAK,IAAMD,EAAMF,GAAOlK,EACxB,KAAK,GAAK,IAAOA,EACjB,KAAK,IAAM8J,EAAME,GAAOhK,EACxB,KAAK,IAAM+J,EAAMI,GAAOnK,CAC1B,SAAWiK,EAAMI,EAAK,CACpB,IAAMrK,EAAI,EAAI,KAAK,KAAK,EAAIiK,EAAMJ,EAAMQ,CAAG,EAC3C,KAAK,IAAMN,EAAMI,GAAOnK,EACxB,KAAK,IAAM8J,EAAME,GAAOhK,EACxB,KAAK,GAAK,IAAOA,EACjB,KAAK,IAAMkK,EAAME,GAAOpK,CAC1B,KAAO,CACL,IAAMA,EAAI,EAAI,KAAK,KAAK,EAAIqK,EAAMR,EAAMI,CAAG,EAC3C,KAAK,IAAMD,EAAMF,GAAO9J,EACxB,KAAK,IAAM+J,EAAMI,GAAOnK,EACxB,KAAK,IAAMkK,EAAME,GAAOpK,EACxB,KAAK,GAAK,IAAOA,CACnB,CACA,YAAK,kBAAkB,EAChB,IACT,CACA,mBAAmBgN,EAAOC,EAAK,CAC7B,IAAIxH,EAAIuH,EAAM,IAAIC,CAAG,EAAI,EACzB,OAAIxH,EAAI,OAAO,SACbA,EAAI,EACA,KAAK,IAAIuH,EAAM,CAAC,EAAI,KAAK,IAAIA,EAAM,CAAC,GACtC,KAAK,GAAK,CAACA,EAAM,EACjB,KAAK,GAAKA,EAAM,EAChB,KAAK,GAAK,EACV,KAAK,GAAKvH,IAEV,KAAK,GAAK,EACV,KAAK,GAAK,CAACuH,EAAM,EACjB,KAAK,GAAKA,EAAM,EAChB,KAAK,GAAKvH,KAGZ,KAAK,GAAKuH,EAAM,EAAIC,EAAI,EAAID,EAAM,EAAIC,EAAI,EAC1C,KAAK,GAAKD,EAAM,EAAIC,EAAI,EAAID,EAAM,EAAIC,EAAI,EAC1C,KAAK,GAAKD,EAAM,EAAIC,EAAI,EAAID,EAAM,EAAIC,EAAI,EAC1C,KAAK,GAAKxH,GAEL,KAAK,UAAU,CACxB,CACA,QAAQhF,EAAG,CACT,MAAO,GAAI,KAAK,KAAK,KAAK,IAAIxC,GAAM,KAAK,IAAIwC,CAAC,EAAG,GAAI,CAAC,CAAC,CAAC,CAC1D,CACA,cAAcA,EAAGyM,EAAM,CACrB,IAAMxK,EAAQ,KAAK,QAAQjC,CAAC,EAC5B,GAAIiC,IAAU,EAAG,OAAO,KACxB,IAAMzD,EAAI,KAAK,IAAI,EAAGiO,EAAOxK,CAAK,EAClC,YAAK,MAAMjC,EAAGxB,CAAC,EACR,IACT,CACA,UAAW,CACT,OAAO,KAAK,IAAI,EAAG,EAAG,EAAG,CAAC,CAC5B,CACA,QAAS,CACP,OAAO,KAAK,UAAU,CACxB,CACA,WAAY,CACV,YAAK,IAAM,GACX,KAAK,IAAM,GACX,KAAK,IAAM,GACX,KAAK,kBAAkB,EAChB,IACT,CACA,IAAI2C,EAAG,CACL,OAAO,KAAK,GAAKA,EAAE,GAAK,KAAK,GAAKA,EAAE,GAAK,KAAK,GAAKA,EAAE,GAAK,KAAK,GAAKA,EAAE,EACxE,CACA,UAAW,CACT,OAAO,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,EACpF,CACA,QAAS,CACP,OAAO,KAAK,KAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,EAAE,CAChG,CACA,WAAY,CACV,IAAIrE,EAAI,KAAK,OAAO,EACpB,OAAIA,IAAM,GACR,KAAK,GAAK,EACV,KAAK,GAAK,EACV,KAAK,GAAK,EACV,KAAK,GAAK,IAEVA,EAAI,EAAIA,EACR,KAAK,GAAK,KAAK,GAAKA,EACpB,KAAK,GAAK,KAAK,GAAKA,EACpB,KAAK,GAAK,KAAK,GAAKA,EACpB,KAAK,GAAK,KAAK,GAAKA,GAEtB,KAAK,kBAAkB,EAChB,IACT,CACA,SAASkD,EAAG,CACV,OAAO,KAAK,oBAAoB,KAAMA,CAAC,CACzC,CACA,YAAYA,EAAG,CACb,OAAO,KAAK,oBAAoBA,EAAG,IAAI,CACzC,CACA,oBAAoBC,EAAGC,EAAG,CACxB,IAAMwM,EAAMzM,EAAE,GAAI0M,EAAM1M,EAAE,GAAI2M,EAAM3M,EAAE,GAAI4M,EAAM5M,EAAE,GAC5C6M,EAAM5M,EAAE,GAAI6M,EAAM7M,EAAE,GAAI8M,EAAM9M,EAAE,GAAI+M,EAAM/M,EAAE,GAClD,YAAK,GAAKwM,EAAMO,EAAMJ,EAAMC,EAAMH,EAAMK,EAAMJ,EAAMG,EACpD,KAAK,GAAKJ,EAAMM,EAAMJ,EAAME,EAAMH,EAAME,EAAMJ,EAAMM,EACpD,KAAK,GAAKJ,EAAMK,EAAMJ,EAAMG,EAAMN,EAAMK,EAAMJ,EAAMG,EACpD,KAAK,GAAKD,EAAMI,EAAMP,EAAMI,EAAMH,EAAMI,EAAMH,EAAMI,EACpD,KAAK,kBAAkB,EAChB,IACT,CACA,MAAME,EAAI,EAAG,CACX,GAAI,IAAM,EAAG,OAAO,KACpB,GAAI,IAAM,EAAG,OAAO,KAAK,KAAKA,CAAE,EAChC,IAAMlP,EAAI,KAAK,GAAIM,EAAI,KAAK,GAAI4K,EAAI,KAAK,GAAIC,EAAI,KAAK,GAClDgE,EAAehE,EAAI+D,EAAG,GAAKlP,EAAIkP,EAAG,GAAK5O,EAAI4O,EAAG,GAAKhE,EAAIgE,EAAG,GAU9D,GATIC,EAAe,GACjB,KAAK,GAAK,CAACD,EAAG,GACd,KAAK,GAAK,CAACA,EAAG,GACd,KAAK,GAAK,CAACA,EAAG,GACd,KAAK,GAAK,CAACA,EAAG,GACdC,EAAe,CAACA,GAEhB,KAAK,KAAKD,CAAE,EAEVC,GAAgB,EAClB,YAAK,GAAKhE,EACV,KAAK,GAAKnL,EACV,KAAK,GAAKM,EACV,KAAK,GAAK4K,EACH,KAET,IAAMkE,EAAkB,EAAID,EAAeA,EAC3C,GAAIC,GAAmB,OAAO,QAAS,CACrC,IAAM7N,EAAI,EAAI,EACd,YAAK,GAAKA,EAAI4J,EAAI,EAAI,KAAK,GAC3B,KAAK,GAAK5J,EAAIvB,EAAI,EAAI,KAAK,GAC3B,KAAK,GAAKuB,EAAIjB,EAAI,EAAI,KAAK,GAC3B,KAAK,GAAKiB,EAAI2J,EAAI,EAAI,KAAK,GAC3B,KAAK,UAAU,EACR,IACT,CACA,IAAMmE,EAAe,KAAK,KAAKD,CAAe,EACxCE,EAAY,KAAK,MAAMD,EAAcF,CAAY,EACjDI,EAAS,KAAK,KAAK,EAAI,GAAKD,CAAS,EAAID,EAAcG,EAAS,KAAK,IAAI,EAAIF,CAAS,EAAID,EAChG,YAAK,GAAKlE,EAAIoE,EAAS,KAAK,GAAKC,EACjC,KAAK,GAAKxP,EAAIuP,EAAS,KAAK,GAAKC,EACjC,KAAK,GAAKlP,EAAIiP,EAAS,KAAK,GAAKC,EACjC,KAAK,GAAKtE,EAAIqE,EAAS,KAAK,GAAKC,EACjC,KAAK,kBAAkB,EAChB,IACT,CACA,iBAAiBC,EAAIP,EAAI1O,EAAG,CAC1B,OAAO,KAAK,KAAKiP,CAAE,EAAE,MAAMP,EAAI1O,CAAC,CAClC,CACA,QAAS,CACP,IAAMkP,EAAS,EAAI,KAAK,GAAK,KAAK,OAAO,EACnCC,EAAS,EAAI,KAAK,GAAK,KAAK,OAAO,EACnC1C,EAAK,KAAK,OAAO,EACjB2C,EAAK,KAAK,KAAK,EAAI3C,CAAE,EACrB4C,EAAK,KAAK,KAAK5C,CAAE,EACvB,OAAO,KAAK,IACV2C,EAAK,KAAK,IAAIF,CAAM,EACpBE,EAAK,KAAK,IAAIF,CAAM,EACpBG,EAAK,KAAK,IAAIF,CAAM,EACpBE,EAAK,KAAK,IAAIF,CAAM,CACtB,CACF,CACA,OAAO9B,EAAY,CACjB,OAAOA,EAAW,KAAO,KAAK,IAAMA,EAAW,KAAO,KAAK,IAAMA,EAAW,KAAO,KAAK,IAAMA,EAAW,KAAO,KAAK,EACvH,CACA,UAAUjP,EAAOkF,EAAS,EAAG,CAC3B,YAAK,GAAKlF,EAAMkF,CAAM,EACtB,KAAK,GAAKlF,EAAMkF,EAAS,CAAC,EAC1B,KAAK,GAAKlF,EAAMkF,EAAS,CAAC,EAC1B,KAAK,GAAKlF,EAAMkF,EAAS,CAAC,EAC1B,KAAK,kBAAkB,EAChB,IACT,CACA,QAAQlF,EAAQ,CAAC,EAAGkF,EAAS,EAAG,CAC9B,OAAAlF,EAAMkF,CAAM,EAAI,KAAK,GACrBlF,EAAMkF,EAAS,CAAC,EAAI,KAAK,GACzBlF,EAAMkF,EAAS,CAAC,EAAI,KAAK,GACzBlF,EAAMkF,EAAS,CAAC,EAAI,KAAK,GAClBlF,CACT,CACA,oBAAoBmF,EAAWrF,EAAO,CACpC,YAAK,GAAKqF,EAAU,KAAKrF,CAAK,EAC9B,KAAK,GAAKqF,EAAU,KAAKrF,CAAK,EAC9B,KAAK,GAAKqF,EAAU,KAAKrF,CAAK,EAC9B,KAAK,GAAKqF,EAAU,KAAKrF,CAAK,EAC9B,KAAK,kBAAkB,EAChB,IACT,CACA,QAAS,CACP,OAAO,KAAK,QAAQ,CACtB,CACA,UAAUoR,EAAU,CAClB,YAAK,kBAAoBA,EAClB,IACT,CACA,mBAAoB,CACpB,CACA,EAAE,OAAO,QAAQ,GAAI,CACnB,MAAM,KAAK,GACX,MAAM,KAAK,GACX,MAAM,KAAK,GACX,MAAM,KAAK,EACb,CACF,EACI5S,EAAU,MAAM6S,EAAS,CAC3B,YAAY/P,EAAI,EAAGM,EAAI,EAAG4K,EAAI,EAAG,CAC/B6E,GAAS,UAAU,UAAY,GAC/B,KAAK,EAAI/P,EACT,KAAK,EAAIM,EACT,KAAK,EAAI4K,CACX,CACA,IAAIlL,EAAGM,EAAG4K,EAAG,CACX,OAAIA,IAAM,SAAQA,EAAI,KAAK,GAC3B,KAAK,EAAIlL,EACT,KAAK,EAAIM,EACT,KAAK,EAAI4K,EACF,IACT,CACA,UAAUhI,EAAQ,CAChB,YAAK,EAAIA,EACT,KAAK,EAAIA,EACT,KAAK,EAAIA,EACF,IACT,CACA,KAAKlD,EAAG,CACN,YAAK,EAAIA,EACF,IACT,CACA,KAAKM,EAAG,CACN,YAAK,EAAIA,EACF,IACT,CACA,KAAK4K,EAAG,CACN,YAAK,EAAIA,EACF,IACT,CACA,aAAaxM,EAAOe,EAAO,CACzB,OAAQf,EAAO,CACb,IAAK,GACH,KAAK,EAAIe,EACT,MACF,IAAK,GACH,KAAK,EAAIA,EACT,MACF,IAAK,GACH,KAAK,EAAIA,EACT,MACF,QACE,MAAM,IAAI,MAAM,0BAA4Bf,CAAK,CACrD,CACA,OAAO,IACT,CACA,aAAaA,EAAO,CAClB,OAAQA,EAAO,CACb,IAAK,GACH,OAAO,KAAK,EACd,IAAK,GACH,OAAO,KAAK,EACd,IAAK,GACH,OAAO,KAAK,EACd,QACE,MAAM,IAAI,MAAM,0BAA4BA,CAAK,CACrD,CACF,CACA,OAAQ,CACN,OAAO,IAAI,KAAK,YAAY,KAAK,EAAG,KAAK,EAAG,KAAK,CAAC,CACpD,CACA,KAAKyE,EAAG,CACN,YAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EACJ,IACT,CACA,IAAIA,EAAG,CACL,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CACA,UAAU5B,EAAG,CACX,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IACT,CACA,WAAWU,EAAGC,EAAG,CACf,YAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EACV,IACT,CACA,gBAAgBiB,EAAG5B,EAAG,CACpB,YAAK,GAAK4B,EAAE,EAAI5B,EAChB,KAAK,GAAK4B,EAAE,EAAI5B,EAChB,KAAK,GAAK4B,EAAE,EAAI5B,EACT,IACT,CACA,IAAI4B,EAAG,CACL,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CACA,UAAU5B,EAAG,CACX,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IACT,CACA,WAAWU,EAAGC,EAAG,CACf,YAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EACV,IACT,CACA,SAASiB,EAAG,CACV,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CACA,eAAeD,EAAQ,CACrB,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IACT,CACA,gBAAgBjB,EAAGC,EAAG,CACpB,YAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EACV,IACT,CACA,WAAW4L,EAAO,CAChB,OAAO,KAAK,gBAAgBkC,GAAc,aAAalC,CAAK,CAAC,CAC/D,CACA,eAAeM,EAAMnK,EAAO,CAC1B,OAAO,KAAK,gBAAgB+L,GAAc,iBAAiB5B,EAAMnK,CAAK,CAAC,CACzE,CACA,aAAanE,EAAG,CACd,IAAME,EAAI,KAAK,EAAGM,EAAI,KAAK,EAAG4K,EAAI,KAAK,EACjC9H,EAAItD,EAAE,SACZ,YAAK,EAAIsD,EAAE,CAAC,EAAIpD,EAAIoD,EAAE,CAAC,EAAI9C,EAAI8C,EAAE,CAAC,EAAI8H,EACtC,KAAK,EAAI9H,EAAE,CAAC,EAAIpD,EAAIoD,EAAE,CAAC,EAAI9C,EAAI8C,EAAE,CAAC,EAAI8H,EACtC,KAAK,EAAI9H,EAAE,CAAC,EAAIpD,EAAIoD,EAAE,CAAC,EAAI9C,EAAI8C,EAAE,CAAC,EAAI8H,EAC/B,IACT,CACA,kBAAkBpL,EAAG,CACnB,OAAO,KAAK,aAAaA,CAAC,EAAE,UAAU,CACxC,CACA,aAAaA,EAAG,CACd,IAAME,EAAI,KAAK,EAAGM,EAAI,KAAK,EAAG4K,EAAI,KAAK,EACjC9H,EAAItD,EAAE,SACNqL,EAAI,GAAK/H,EAAE,CAAC,EAAIpD,EAAIoD,EAAE,CAAC,EAAI9C,EAAI8C,EAAE,EAAE,EAAI8H,EAAI9H,EAAE,EAAE,GACrD,YAAK,GAAKA,EAAE,CAAC,EAAIpD,EAAIoD,EAAE,CAAC,EAAI9C,EAAI8C,EAAE,CAAC,EAAI8H,EAAI9H,EAAE,EAAE,GAAK+H,EACpD,KAAK,GAAK/H,EAAE,CAAC,EAAIpD,EAAIoD,EAAE,CAAC,EAAI9C,EAAI8C,EAAE,CAAC,EAAI8H,EAAI9H,EAAE,EAAE,GAAK+H,EACpD,KAAK,GAAK/H,EAAE,CAAC,EAAIpD,EAAIoD,EAAE,CAAC,EAAI9C,EAAI8C,EAAE,EAAE,EAAI8H,EAAI9H,EAAE,EAAE,GAAK+H,EAC9C,IACT,CACA,gBAAgBnJ,EAAG,CACjB,IAAMiO,EAAK,KAAK,EAAGC,EAAK,KAAK,EAAGC,EAAK,KAAK,EACpCC,EAAKpO,EAAE,EAAGqO,EAAKrO,EAAE,EAAGsO,EAAKtO,EAAE,EAAGuO,EAAKvO,EAAE,EACrCiF,EAAK,GAAKoJ,EAAKF,EAAKG,EAAKJ,GACzBhJ,EAAK,GAAKoJ,EAAKL,EAAKG,EAAKD,GACzBK,EAAK,GAAKJ,EAAKF,EAAKG,EAAKJ,GAC/B,YAAK,EAAIA,EAAKM,EAAKtJ,EAAKoJ,EAAKG,EAAKF,EAAKpJ,EACvC,KAAK,EAAIgJ,EAAKK,EAAKrJ,EAAKoJ,EAAKrJ,EAAKmJ,EAAKI,EACvC,KAAK,EAAIL,EAAKI,EAAKC,EAAKJ,EAAKlJ,EAAKmJ,EAAKpJ,EAChC,IACT,CACA,QAAQwJ,EAAQ,CACd,OAAO,KAAK,aAAaA,EAAO,kBAAkB,EAAE,aAAaA,EAAO,gBAAgB,CAC1F,CACA,UAAUA,EAAQ,CAChB,OAAO,KAAK,aAAaA,EAAO,uBAAuB,EAAE,aAAaA,EAAO,WAAW,CAC1F,CACA,mBAAmB3Q,EAAG,CACpB,IAAME,EAAI,KAAK,EAAGM,EAAI,KAAK,EAAG4K,EAAI,KAAK,EACjC9H,EAAItD,EAAE,SACZ,YAAK,EAAIsD,EAAE,CAAC,EAAIpD,EAAIoD,EAAE,CAAC,EAAI9C,EAAI8C,EAAE,CAAC,EAAI8H,EACtC,KAAK,EAAI9H,EAAE,CAAC,EAAIpD,EAAIoD,EAAE,CAAC,EAAI9C,EAAI8C,EAAE,CAAC,EAAI8H,EACtC,KAAK,EAAI9H,EAAE,CAAC,EAAIpD,EAAIoD,EAAE,CAAC,EAAI9C,EAAI8C,EAAE,EAAE,EAAI8H,EAChC,KAAK,UAAU,CACxB,CACA,OAAO/H,EAAG,CACR,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACL,IACT,CACA,aAAaD,EAAQ,CACnB,OAAO,KAAK,eAAe,EAAIA,CAAM,CACvC,CACA,IAAIC,EAAG,CACL,YAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EACtB,IACT,CACA,IAAIA,EAAG,CACL,YAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EAC7B,KAAK,EAAI,KAAK,IAAI,KAAK,EAAGA,EAAE,CAAC,EACtB,IACT,CACA,MAAMzD,EAAKC,EAAK,CACd,YAAK,EAAI,KAAK,IAAID,EAAI,EAAG,KAAK,IAAIC,EAAI,EAAG,KAAK,CAAC,CAAC,EAChD,KAAK,EAAI,KAAK,IAAID,EAAI,EAAG,KAAK,IAAIC,EAAI,EAAG,KAAK,CAAC,CAAC,EAChD,KAAK,EAAI,KAAK,IAAID,EAAI,EAAG,KAAK,IAAIC,EAAI,EAAG,KAAK,CAAC,CAAC,EACzC,IACT,CACA,YAAY0D,EAAQC,EAAQ,CAC1B,YAAK,EAAI,KAAK,IAAID,EAAQ,KAAK,IAAIC,EAAQ,KAAK,CAAC,CAAC,EAClD,KAAK,EAAI,KAAK,IAAID,EAAQ,KAAK,IAAIC,EAAQ,KAAK,CAAC,CAAC,EAClD,KAAK,EAAI,KAAK,IAAID,EAAQ,KAAK,IAAIC,EAAQ,KAAK,CAAC,CAAC,EAC3C,IACT,CACA,YAAY5D,EAAKC,EAAK,CACpB,IAAMkB,EAAS,KAAK,OAAO,EAC3B,OAAO,KAAK,aAAaA,GAAU,CAAC,EAAE,eAAe,KAAK,IAAInB,EAAK,KAAK,IAAIC,EAAKkB,CAAM,CAAC,CAAC,CAC3F,CACA,OAAQ,CACN,YAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EACnB,IACT,CACA,MAAO,CACL,YAAK,EAAI,KAAK,KAAK,KAAK,CAAC,EACzB,KAAK,EAAI,KAAK,KAAK,KAAK,CAAC,EACzB,KAAK,EAAI,KAAK,KAAK,KAAK,CAAC,EAClB,IACT,CACA,OAAQ,CACN,YAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EACnB,IACT,CACA,aAAc,CACZ,YAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,MAAM,KAAK,CAAC,EACnB,IACT,CACA,QAAS,CACP,YAAK,EAAI,CAAC,KAAK,EACf,KAAK,EAAI,CAAC,KAAK,EACf,KAAK,EAAI,CAAC,KAAK,EACR,IACT,CACA,IAAIsC,EAAG,CACL,OAAO,KAAK,EAAIA,EAAE,EAAI,KAAK,EAAIA,EAAE,EAAI,KAAK,EAAIA,EAAE,CAClD,CAEA,UAAW,CACT,OAAO,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,CAC3D,CACA,QAAS,CACP,OAAO,KAAK,KAAK,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,CAAC,CACtE,CACA,iBAAkB,CAChB,OAAO,KAAK,IAAI,KAAK,CAAC,EAAI,KAAK,IAAI,KAAK,CAAC,EAAI,KAAK,IAAI,KAAK,CAAC,CAC9D,CACA,WAAY,CACV,OAAO,KAAK,aAAa,KAAK,OAAO,GAAK,CAAC,CAC7C,CACA,UAAUtC,EAAQ,CAChB,OAAO,KAAK,UAAU,EAAE,eAAeA,CAAM,CAC/C,CACA,KAAKsC,EAAGQ,EAAO,CACb,YAAK,IAAMR,EAAE,EAAI,KAAK,GAAKQ,EAC3B,KAAK,IAAMR,EAAE,EAAI,KAAK,GAAKQ,EAC3B,KAAK,IAAMR,EAAE,EAAI,KAAK,GAAKQ,EACpB,IACT,CACA,YAAYC,EAAIC,EAAIF,EAAO,CACzB,YAAK,EAAIC,EAAG,GAAKC,EAAG,EAAID,EAAG,GAAKD,EAChC,KAAK,EAAIC,EAAG,GAAKC,EAAG,EAAID,EAAG,GAAKD,EAChC,KAAK,EAAIC,EAAG,GAAKC,EAAG,EAAID,EAAG,GAAKD,EACzB,IACT,CACA,MAAMR,EAAG,CACP,OAAO,KAAK,aAAa,KAAMA,CAAC,CAClC,CACA,aAAalB,EAAGC,EAAG,CACjB,IAAMwO,EAAKzO,EAAE,EAAG0O,EAAK1O,EAAE,EAAG2O,EAAK3O,EAAE,EAC3B4O,EAAK3O,EAAE,EAAG4O,EAAK5O,EAAE,EAAG6O,EAAK7O,EAAE,EACjC,YAAK,EAAIyO,EAAKI,EAAKH,EAAKE,EACxB,KAAK,EAAIF,EAAKC,EAAKH,EAAKK,EACxB,KAAK,EAAIL,EAAKI,EAAKH,EAAKE,EACjB,IACT,CACA,gBAAgB1N,EAAG,CACjB,IAAMI,EAAcJ,EAAE,SAAS,EAC/B,GAAII,IAAgB,EAAG,OAAO,KAAK,IAAI,EAAG,EAAG,CAAC,EAC9C,IAAML,EAASC,EAAE,IAAI,IAAI,EAAII,EAC7B,OAAO,KAAK,KAAKJ,CAAC,EAAE,eAAeD,CAAM,CAC3C,CACA,eAAe8N,EAAa,CAC1B,OAAAC,GAAU,KAAK,IAAI,EAAE,gBAAgBD,CAAW,EACzC,KAAK,IAAIC,EAAS,CAC3B,CACA,QAAQC,EAAQ,CACd,OAAO,KAAK,IAAID,GAAU,KAAKC,CAAM,EAAE,eAAe,EAAI,KAAK,IAAIA,CAAM,CAAC,CAAC,CAC7E,CACA,QAAQ/N,EAAG,CACT,IAAMI,EAAc,KAAK,KAAK,KAAK,SAAS,EAAIJ,EAAE,SAAS,CAAC,EAC5D,GAAII,IAAgB,EAAG,OAAO,KAAK,GAAK,EACxC,IAAMC,EAAQ,KAAK,IAAIL,CAAC,EAAII,EAC5B,OAAO,KAAK,KAAK/D,GAAMgE,EAAO,GAAI,CAAC,CAAC,CACtC,CACA,WAAWL,EAAG,CACZ,OAAO,KAAK,KAAK,KAAK,kBAAkBA,CAAC,CAAC,CAC5C,CACA,kBAAkBA,EAAG,CACnB,IAAMM,EAAK,KAAK,EAAIN,EAAE,EAAGO,EAAK,KAAK,EAAIP,EAAE,EAAGgO,EAAK,KAAK,EAAIhO,EAAE,EAC5D,OAAOM,EAAKA,EAAKC,EAAKA,EAAKyN,EAAKA,CAClC,CACA,oBAAoBhO,EAAG,CACrB,OAAO,KAAK,IAAI,KAAK,EAAIA,EAAE,CAAC,EAAI,KAAK,IAAI,KAAK,EAAIA,EAAE,CAAC,EAAI,KAAK,IAAI,KAAK,EAAIA,EAAE,CAAC,CAChF,CACA,iBAAiB5B,EAAG,CAClB,OAAO,KAAK,uBAAuBA,EAAE,OAAQA,EAAE,IAAKA,EAAE,KAAK,CAC7D,CACA,uBAAuB6P,EAAQC,EAAK7N,EAAO,CACzC,IAAM8N,EAAe,KAAK,IAAID,CAAG,EAAID,EACrC,YAAK,EAAIE,EAAe,KAAK,IAAI9N,CAAK,EACtC,KAAK,EAAI,KAAK,IAAI6N,CAAG,EAAID,EACzB,KAAK,EAAIE,EAAe,KAAK,IAAI9N,CAAK,EAC/B,IACT,CACA,mBAAmBrB,EAAG,CACpB,OAAO,KAAK,yBAAyBA,EAAE,OAAQA,EAAE,MAAOA,EAAE,CAAC,CAC7D,CACA,yBAAyBiP,EAAQ5N,EAAOlD,EAAG,CACzC,YAAK,EAAI8Q,EAAS,KAAK,IAAI5N,CAAK,EAChC,KAAK,EAAIlD,EACT,KAAK,EAAI8Q,EAAS,KAAK,IAAI5N,CAAK,EACzB,IACT,CACA,sBAAsB1D,EAAG,CACvB,IAAMsD,EAAItD,EAAE,SACZ,YAAK,EAAIsD,EAAE,EAAE,EACb,KAAK,EAAIA,EAAE,EAAE,EACb,KAAK,EAAIA,EAAE,EAAE,EACN,IACT,CACA,mBAAmBtD,EAAG,CACpB,IAAMqH,EAAK,KAAK,oBAAoBrH,EAAG,CAAC,EAAE,OAAO,EAC3CsH,EAAK,KAAK,oBAAoBtH,EAAG,CAAC,EAAE,OAAO,EAC3CyR,EAAK,KAAK,oBAAoBzR,EAAG,CAAC,EAAE,OAAO,EACjD,YAAK,EAAIqH,EACT,KAAK,EAAIC,EACT,KAAK,EAAImK,EACF,IACT,CACA,oBAAoBzR,EAAGpB,EAAO,CAC5B,OAAO,KAAK,UAAUoB,EAAE,SAAUpB,EAAQ,CAAC,CAC7C,CACA,qBAAqBoB,EAAGpB,EAAO,CAC7B,OAAO,KAAK,UAAUoB,EAAE,SAAUpB,EAAQ,CAAC,CAC7C,CACA,aAAa0E,EAAG,CACd,YAAK,EAAIA,EAAE,GACX,KAAK,EAAIA,EAAE,GACX,KAAK,EAAIA,EAAE,GACJ,IACT,CACA,aAAajB,EAAG,CACd,YAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EACJ,IACT,CACA,OAAOgB,EAAG,CACR,OAAOA,EAAE,IAAM,KAAK,GAAKA,EAAE,IAAM,KAAK,GAAKA,EAAE,IAAM,KAAK,CAC1D,CACA,UAAUvE,EAAOkF,EAAS,EAAG,CAC3B,YAAK,EAAIlF,EAAMkF,CAAM,EACrB,KAAK,EAAIlF,EAAMkF,EAAS,CAAC,EACzB,KAAK,EAAIlF,EAAMkF,EAAS,CAAC,EAClB,IACT,CACA,QAAQlF,EAAQ,CAAC,EAAGkF,EAAS,EAAG,CAC9B,OAAAlF,EAAMkF,CAAM,EAAI,KAAK,EACrBlF,EAAMkF,EAAS,CAAC,EAAI,KAAK,EACzBlF,EAAMkF,EAAS,CAAC,EAAI,KAAK,EAClBlF,CACT,CACA,oBAAoBmF,EAAWrF,EAAO,CACpC,YAAK,EAAIqF,EAAU,KAAKrF,CAAK,EAC7B,KAAK,EAAIqF,EAAU,KAAKrF,CAAK,EAC7B,KAAK,EAAIqF,EAAU,KAAKrF,CAAK,EACtB,IACT,CACA,QAAS,CACP,YAAK,EAAI,KAAK,OAAO,EACrB,KAAK,EAAI,KAAK,OAAO,EACrB,KAAK,EAAI,KAAK,OAAO,EACd,IACT,CACA,iBAAkB,CAChB,IAAM8E,EAAQ,KAAK,OAAO,EAAI,KAAK,GAAK,EAClCgO,EAAI,KAAK,OAAO,EAAI,EAAI,EACxBrP,EAAI,KAAK,KAAK,EAAIqP,EAAIA,CAAC,EAC7B,YAAK,EAAIrP,EAAI,KAAK,IAAIqB,CAAK,EAC3B,KAAK,EAAIgO,EACT,KAAK,EAAIrP,EAAI,KAAK,IAAIqB,CAAK,EACpB,IACT,CACA,EAAE,OAAO,QAAQ,GAAI,CACnB,MAAM,KAAK,EACX,MAAM,KAAK,EACX,MAAM,KAAK,CACb,CACF,EACIyN,GAA4B,IAAI/T,EAChC8S,GAAgC,IAAI7a,GACpC9O,GAAO,KAAM,CACf,YAAYqZ,EAAM,IAAIxC,EAAQ,IAAU,IAAU,GAAQ,EAAGyC,EAAM,IAAIzC,EAAQ,KAAW,KAAW,IAAS,EAAG,CAC/G,KAAK,OAAS,GACd,KAAK,IAAMwC,EACX,KAAK,IAAMC,CACb,CACA,IAAID,EAAKC,EAAK,CACZ,YAAK,IAAI,KAAKD,CAAG,EACjB,KAAK,IAAI,KAAKC,CAAG,EACV,IACT,CACA,aAAaf,EAAO,CAClB,KAAK,UAAU,EACf,QAASC,EAAI,EAAG4N,EAAK7N,EAAM,OAAQC,EAAI4N,EAAI5N,GAAK,EAC9C,KAAK,cAAc4S,GAAU,UAAU7S,EAAOC,CAAC,CAAC,EAElD,OAAO,IACT,CACA,uBAAuBkF,EAAW,CAChC,KAAK,UAAU,EACf,QAASlF,EAAI,EAAG4N,EAAK1I,EAAU,MAAOlF,EAAI4N,EAAI5N,IAC5C,KAAK,cAAc4S,GAAU,oBAAoB1N,EAAWlF,CAAC,CAAC,EAEhE,OAAO,IACT,CACA,cAAc6S,EAAQ,CACpB,KAAK,UAAU,EACf,QAAS7S,EAAI,EAAG4N,EAAKiF,EAAO,OAAQ7S,EAAI4N,EAAI5N,IAC1C,KAAK,cAAc6S,EAAO7S,CAAC,CAAC,EAE9B,OAAO,IACT,CACA,qBAAqBmF,EAAQ2N,EAAM,CACjC,IAAMC,EAAWH,GAAU,KAAKE,CAAI,EAAE,eAAe,EAAG,EACxD,YAAK,IAAI,KAAK3N,CAAM,EAAE,IAAI4N,CAAQ,EAClC,KAAK,IAAI,KAAK5N,CAAM,EAAE,IAAI4N,CAAQ,EAC3B,IACT,CACA,cAAcC,EAAQC,EAAU,GAAO,CACrC,YAAK,UAAU,EACR,KAAK,eAAeD,EAAQC,CAAO,CAC5C,CACA,OAAQ,CACN,OAAO,IAAI,KAAK,YAAY,EAAE,KAAK,IAAI,CACzC,CACA,KAAKC,EAAK,CACR,YAAK,IAAI,KAAKA,EAAI,GAAG,EACrB,KAAK,IAAI,KAAKA,EAAI,GAAG,EACd,IACT,CACA,WAAY,CACV,YAAK,IAAI,EAAI,KAAK,IAAI,EAAI,KAAK,IAAI,EAAI,IACvC,KAAK,IAAI,EAAI,KAAK,IAAI,EAAI,KAAK,IAAI,EAAI,KAChC,IACT,CACA,SAAU,CACR,OAAO,KAAK,IAAI,EAAI,KAAK,IAAI,GAAK,KAAK,IAAI,EAAI,KAAK,IAAI,GAAK,KAAK,IAAI,EAAI,KAAK,IAAI,CACrF,CACA,UAAUvI,EAAQ,CAChB,OAAO,KAAK,QAAQ,EAAIA,EAAO,IAAI,EAAG,EAAG,CAAC,EAAIA,EAAO,WAAW,KAAK,IAAK,KAAK,GAAG,EAAE,eAAe,EAAG,CACxG,CACA,QAAQA,EAAQ,CACd,OAAO,KAAK,QAAQ,EAAIA,EAAO,IAAI,EAAG,EAAG,CAAC,EAAIA,EAAO,WAAW,KAAK,IAAK,KAAK,GAAG,CACpF,CACA,cAAcwI,EAAO,CACnB,YAAK,IAAI,IAAIA,CAAK,EAClB,KAAK,IAAI,IAAIA,CAAK,EACX,IACT,CACA,eAAeC,EAAQ,CACrB,YAAK,IAAI,IAAIA,CAAM,EACnB,KAAK,IAAI,IAAIA,CAAM,EACZ,IACT,CACA,eAAe/O,EAAQ,CACrB,YAAK,IAAI,UAAU,CAACA,CAAM,EAC1B,KAAK,IAAI,UAAUA,CAAM,EAClB,IACT,CACA,eAAe2O,EAAQC,EAAU,GAAO,CACtCD,EAAO,kBAAkB,GAAO,EAAK,EACrC,IAAMK,EAAWL,EAAO,SACxB,GAAIK,IAAa,OAAQ,CACvB,IAAMC,EAAoBD,EAAS,aAAa,UAAU,EAC1D,GAAIJ,IAAY,IAAQK,IAAsB,QAAUN,EAAO,kBAAoB,GACjF,QAAShT,EAAI,EAAGC,EAAIqT,EAAkB,MAAOtT,EAAIC,EAAGD,IAC9CgT,EAAO,SAAW,GACpBA,EAAO,kBAAkBhT,EAAG4S,EAAS,EAErCA,GAAU,oBAAoBU,EAAmBtT,CAAC,EAEpD4S,GAAU,aAAaI,EAAO,WAAW,EACzC,KAAK,cAAcJ,EAAS,OAG1BI,EAAO,cAAgB,QACrBA,EAAO,cAAgB,MACzBA,EAAO,mBAAmB,EAE5BO,GAAO,KAAKP,EAAO,WAAW,IAE1BK,EAAS,cAAgB,MAC3BA,EAAS,mBAAmB,EAE9BE,GAAO,KAAKF,EAAS,WAAW,GAElCE,GAAO,aAAaP,EAAO,WAAW,EACtC,KAAK,MAAMO,EAAM,CAErB,CACA,IAAMC,EAAWR,EAAO,SACxB,QAAShT,EAAI,EAAGC,EAAIuT,EAAS,OAAQxT,EAAIC,EAAGD,IAC1C,KAAK,eAAewT,EAASxT,CAAC,EAAGiT,CAAO,EAE1C,OAAO,IACT,CACA,cAAcE,EAAO,CACnB,OAAOA,EAAM,GAAK,KAAK,IAAI,GAAKA,EAAM,GAAK,KAAK,IAAI,GAAKA,EAAM,GAAK,KAAK,IAAI,GAAKA,EAAM,GAAK,KAAK,IAAI,GAAKA,EAAM,GAAK,KAAK,IAAI,GAAKA,EAAM,GAAK,KAAK,IAAI,CAC1J,CACA,YAAYD,EAAK,CACf,OAAO,KAAK,IAAI,GAAKA,EAAI,IAAI,GAAKA,EAAI,IAAI,GAAK,KAAK,IAAI,GAAK,KAAK,IAAI,GAAKA,EAAI,IAAI,GAAKA,EAAI,IAAI,GAAK,KAAK,IAAI,GAAK,KAAK,IAAI,GAAKA,EAAI,IAAI,GAAKA,EAAI,IAAI,GAAK,KAAK,IAAI,CACtK,CACA,aAAaC,EAAOxI,EAAQ,CAC1B,OAAOA,EAAO,KACXwI,EAAM,EAAI,KAAK,IAAI,IAAM,KAAK,IAAI,EAAI,KAAK,IAAI,IAC/CA,EAAM,EAAI,KAAK,IAAI,IAAM,KAAK,IAAI,EAAI,KAAK,IAAI,IAC/CA,EAAM,EAAI,KAAK,IAAI,IAAM,KAAK,IAAI,EAAI,KAAK,IAAI,EAClD,CACF,CACA,cAAcD,EAAK,CACjB,OAAOA,EAAI,IAAI,GAAK,KAAK,IAAI,GAAKA,EAAI,IAAI,GAAK,KAAK,IAAI,GAAKA,EAAI,IAAI,GAAK,KAAK,IAAI,GAAKA,EAAI,IAAI,GAAK,KAAK,IAAI,GAAKA,EAAI,IAAI,GAAK,KAAK,IAAI,GAAKA,EAAI,IAAI,GAAK,KAAK,IAAI,CACtK,CACA,iBAAiBO,EAAQ,CACvB,YAAK,WAAWA,EAAO,OAAQb,EAAS,EACjCA,GAAU,kBAAkBa,EAAO,MAAM,GAAKA,EAAO,OAASA,EAAO,MAC9E,CACA,gBAAgBC,EAAO,CACrB,IAAI7S,EAAKC,EACT,OAAI4S,EAAM,OAAO,EAAI,GACnB7S,EAAM6S,EAAM,OAAO,EAAI,KAAK,IAAI,EAChC5S,EAAM4S,EAAM,OAAO,EAAI,KAAK,IAAI,IAEhC7S,EAAM6S,EAAM,OAAO,EAAI,KAAK,IAAI,EAChC5S,EAAM4S,EAAM,OAAO,EAAI,KAAK,IAAI,GAE9BA,EAAM,OAAO,EAAI,GACnB7S,GAAO6S,EAAM,OAAO,EAAI,KAAK,IAAI,EACjC5S,GAAO4S,EAAM,OAAO,EAAI,KAAK,IAAI,IAEjC7S,GAAO6S,EAAM,OAAO,EAAI,KAAK,IAAI,EACjC5S,GAAO4S,EAAM,OAAO,EAAI,KAAK,IAAI,GAE/BA,EAAM,OAAO,EAAI,GACnB7S,GAAO6S,EAAM,OAAO,EAAI,KAAK,IAAI,EACjC5S,GAAO4S,EAAM,OAAO,EAAI,KAAK,IAAI,IAEjC7S,GAAO6S,EAAM,OAAO,EAAI,KAAK,IAAI,EACjC5S,GAAO4S,EAAM,OAAO,EAAI,KAAK,IAAI,GAE5B7S,GAAO,CAAC6S,EAAM,UAAY5S,GAAO,CAAC4S,EAAM,QACjD,CACA,mBAAmBC,EAAU,CAC3B,GAAI,KAAK,QAAQ,EACf,MAAO,GAET,KAAK,UAAUC,EAAO,EACtBC,GAAS,WAAW,KAAK,IAAKD,EAAO,EACrCE,GAAM,WAAWH,EAAS,EAAGC,EAAO,EACpCG,GAAM,WAAWJ,EAAS,EAAGC,EAAO,EACpCI,GAAM,WAAWL,EAAS,EAAGC,EAAO,EACpCK,GAAI,WAAWF,GAAOD,EAAK,EAC3BI,GAAI,WAAWF,GAAOD,EAAK,EAC3BI,GAAI,WAAWL,GAAOE,EAAK,EAC3B,IAAII,EAAO,CACT,EACA,CAACH,GAAI,EACLA,GAAI,EACJ,EACA,CAACC,GAAI,EACLA,GAAI,EACJ,EACA,CAACC,GAAI,EACLA,GAAI,EACJF,GAAI,EACJ,EACA,CAACA,GAAI,EACLC,GAAI,EACJ,EACA,CAACA,GAAI,EACLC,GAAI,EACJ,EACA,CAACA,GAAI,EACL,CAACF,GAAI,EACLA,GAAI,EACJ,EACA,CAACC,GAAI,EACLA,GAAI,EACJ,EACA,CAACC,GAAI,EACLA,GAAI,EACJ,CACF,EAKA,MAJI,CAACE,GAAWD,EAAMN,GAAOC,GAAOC,GAAOH,EAAQ,IAGnDO,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC7B,CAACC,GAAWD,EAAMN,GAAOC,GAAOC,GAAOH,EAAQ,GAC1C,IAETS,GAAgB,aAAaL,GAAKC,EAAG,EACrCE,EAAO,CAACE,GAAgB,EAAGA,GAAgB,EAAGA,GAAgB,CAAC,EACxDD,GAAWD,EAAMN,GAAOC,GAAOC,GAAOH,EAAQ,EACvD,CACA,WAAWV,EAAOxI,EAAQ,CACxB,OAAOA,EAAO,KAAKwI,CAAK,EAAE,MAAM,KAAK,IAAK,KAAK,GAAG,CACpD,CACA,gBAAgBA,EAAO,CACrB,OAAO,KAAK,WAAWA,EAAOP,EAAS,EAAE,WAAWO,CAAK,CAC3D,CACA,kBAAkBxI,EAAQ,CACxB,OAAI,KAAK,QAAQ,EACfA,EAAO,UAAU,GAEjB,KAAK,UAAUA,EAAO,MAAM,EAC5BA,EAAO,OAAS,KAAK,QAAQiI,EAAS,EAAE,OAAO,EAAI,IAE9CjI,CACT,CACA,UAAUuI,EAAK,CACb,YAAK,IAAI,IAAIA,EAAI,GAAG,EACpB,KAAK,IAAI,IAAIA,EAAI,GAAG,EAChB,KAAK,QAAQ,GAAG,KAAK,UAAU,EAC5B,IACT,CACA,MAAMA,EAAK,CACT,YAAK,IAAI,IAAIA,EAAI,GAAG,EACpB,KAAK,IAAI,IAAIA,EAAI,GAAG,EACb,IACT,CACA,aAAatK,EAAQ,CACnB,OAAI,KAAK,QAAQ,EAAU,MAC3B2L,GAAQ,CAAC,EAAE,IAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAAK,IAAI,CAAC,EAAE,aAAa3L,CAAM,EACtE2L,GAAQ,CAAC,EAAE,IAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAAK,IAAI,CAAC,EAAE,aAAa3L,CAAM,EACtE2L,GAAQ,CAAC,EAAE,IAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAAK,IAAI,CAAC,EAAE,aAAa3L,CAAM,EACtE2L,GAAQ,CAAC,EAAE,IAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAAK,IAAI,CAAC,EAAE,aAAa3L,CAAM,EACtE2L,GAAQ,CAAC,EAAE,IAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAAK,IAAI,CAAC,EAAE,aAAa3L,CAAM,EACtE2L,GAAQ,CAAC,EAAE,IAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAAK,IAAI,CAAC,EAAE,aAAa3L,CAAM,EACtE2L,GAAQ,CAAC,EAAE,IAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAAK,IAAI,CAAC,EAAE,aAAa3L,CAAM,EACtE2L,GAAQ,CAAC,EAAE,IAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAAK,IAAI,CAAC,EAAE,aAAa3L,CAAM,EACtE,KAAK,cAAc2L,EAAO,EACnB,KACT,CACA,UAAUtP,EAAQ,CAChB,YAAK,IAAI,IAAIA,CAAM,EACnB,KAAK,IAAI,IAAIA,CAAM,EACZ,IACT,CACA,OAAOiO,EAAK,CACV,OAAOA,EAAI,IAAI,OAAO,KAAK,GAAG,GAAKA,EAAI,IAAI,OAAO,KAAK,GAAG,CAC5D,CACF,EACIqB,GAAU,CACI,IAAIlW,EACJ,IAAIA,EACJ,IAAIA,EACJ,IAAIA,EACJ,IAAIA,EACJ,IAAIA,EACJ,IAAIA,EACJ,IAAIA,CACtB,EACIuU,GAA4B,IAAIvU,EAChCkV,GAAyB,IAAI/rB,GAC7BssB,GAAwB,IAAIzV,EAC5B0V,GAAwB,IAAI1V,EAC5B2V,GAAwB,IAAI3V,EAC5B4V,GAAsB,IAAI5V,EAC1B6V,GAAsB,IAAI7V,EAC1B8V,GAAsB,IAAI9V,EAC1BuV,GAA0B,IAAIvV,EAC9BwV,GAA2B,IAAIxV,EAC/BiW,GAAkC,IAAIjW,EACtCmW,GAA4B,IAAInW,EACpC,SAASgW,GAAWD,EAAMK,EAAI1P,EAAIC,EAAI0P,EAAS,CAC7C,QAAS1U,EAAI,EAAG2U,EAAIP,EAAK,OAAS,EAAGpU,GAAK2U,EAAG3U,GAAK,EAAG,CACnDwU,GAAU,UAAUJ,EAAMpU,CAAC,EAC3B,IAAMmI,EAAIuM,EAAQ,EAAI,KAAK,IAAIF,GAAU,CAAC,EAAIE,EAAQ,EAAI,KAAK,IAAIF,GAAU,CAAC,EAAIE,EAAQ,EAAI,KAAK,IAAIF,GAAU,CAAC,EAC5GI,EAAKH,EAAG,IAAID,EAAS,EACrBK,EAAK9P,EAAG,IAAIyP,EAAS,EACrBM,EAAK9P,EAAG,IAAIwP,EAAS,EAC3B,GAAI,KAAK,IAAI,CAAC,KAAK,IAAII,EAAIC,EAAIC,CAAE,EAAG,KAAK,IAAIF,EAAIC,EAAIC,CAAE,CAAC,EAAI3M,EAC1D,MAAO,EAEX,CACA,MAAO,EACT,CACA,IAAI4M,GAAyB,IAAIvtB,GAC7BwtB,GAAwB,IAAI3W,EAC5B4W,GAAwB,IAAI5W,EAC5BrD,GAAS,KAAM,CACjB,YAAYmK,EAAS,IAAI9G,EAAWkU,EAAS,GAAI,CAC/C,KAAK,SAAW,GAChB,KAAK,OAASpN,EACd,KAAK,OAASoN,CAChB,CACA,IAAIpN,EAAQoN,EAAQ,CAClB,YAAK,OAAO,KAAKpN,CAAM,EACvB,KAAK,OAASoN,EACP,IACT,CACA,cAAcM,EAAQqC,EAAgB,CACpC,IAAM/P,EAAS,KAAK,OAChB+P,IAAmB,OACrB/P,EAAO,KAAK+P,CAAc,EAE1BH,GAAO,cAAclC,CAAM,EAAE,UAAU1N,CAAM,EAE/C,IAAIgQ,EAAc,EAClB,QAASnV,EAAI,EAAG4N,EAAKiF,EAAO,OAAQ7S,EAAI4N,EAAI5N,IAC1CmV,EAAc,KAAK,IAAIA,EAAahQ,EAAO,kBAAkB0N,EAAO7S,CAAC,CAAC,CAAC,EAEzE,YAAK,OAAS,KAAK,KAAKmV,CAAW,EAC5B,IACT,CACA,KAAK1B,EAAQ,CACX,YAAK,OAAO,KAAKA,EAAO,MAAM,EAC9B,KAAK,OAASA,EAAO,OACd,IACT,CACA,SAAU,CACR,OAAO,KAAK,OAAS,CACvB,CACA,WAAY,CACV,YAAK,OAAO,IAAI,EAAG,EAAG,CAAC,EACvB,KAAK,OAAS,GACP,IACT,CACA,cAAcN,EAAO,CACnB,OAAOA,EAAM,kBAAkB,KAAK,MAAM,GAAK,KAAK,OAAS,KAAK,MACpE,CACA,gBAAgBA,EAAO,CACrB,OAAOA,EAAM,WAAW,KAAK,MAAM,EAAI,KAAK,MAC9C,CACA,iBAAiBM,EAAQ,CACvB,IAAM2B,EAAY,KAAK,OAAS3B,EAAO,OACvC,OAAOA,EAAO,OAAO,kBAAkB,KAAK,MAAM,GAAK2B,EAAYA,CACrE,CACA,cAAclC,EAAK,CACjB,OAAOA,EAAI,iBAAiB,IAAI,CAClC,CACA,gBAAgBQ,EAAO,CACrB,OAAO,KAAK,IAAIA,EAAM,gBAAgB,KAAK,MAAM,CAAC,GAAK,KAAK,MAC9D,CACA,WAAWP,EAAOxI,EAAQ,CACxB,IAAM0K,EAAgB,KAAK,OAAO,kBAAkBlC,CAAK,EACzD,OAAAxI,EAAO,KAAKwI,CAAK,EACbkC,EAAgB,KAAK,OAAS,KAAK,SACrC1K,EAAO,IAAI,KAAK,MAAM,EAAE,UAAU,EAClCA,EAAO,eAAe,KAAK,MAAM,EAAE,IAAI,KAAK,MAAM,GAE7CA,CACT,CACA,eAAeA,EAAQ,CACrB,OAAI,KAAK,QAAQ,GACfA,EAAO,UAAU,EACVA,IAETA,EAAO,IAAI,KAAK,OAAQ,KAAK,MAAM,EACnCA,EAAO,eAAe,KAAK,MAAM,EAC1BA,EACT,CACA,aAAa/B,EAAQ,CACnB,YAAK,OAAO,aAAaA,CAAM,EAC/B,KAAK,OAAS,KAAK,OAASA,EAAO,kBAAkB,EAC9C,IACT,CACA,UAAU3D,EAAQ,CAChB,YAAK,OAAO,IAAIA,CAAM,EACf,IACT,CACA,cAAckO,EAAO,CACnB,GAAI,KAAK,QAAQ,EACf,YAAK,OAAO,KAAKA,CAAK,EACtB,KAAK,OAAS,EACP,KAET6B,GAAM,WAAW7B,EAAO,KAAK,MAAM,EACnC,IAAMmC,EAAWN,GAAM,SAAS,EAChC,GAAIM,EAAW,KAAK,OAAS,KAAK,OAAQ,CACxC,IAAMtT,EAAS,KAAK,KAAKsT,CAAQ,EAC3BC,GAASvT,EAAS,KAAK,QAAU,GACvC,KAAK,OAAO,gBAAgBgT,GAAOO,EAAQvT,CAAM,EACjD,KAAK,QAAUuT,CACjB,CACA,OAAO,IACT,CACA,MAAM9B,EAAQ,CACZ,OAAIA,EAAO,QAAQ,EACV,KAEL,KAAK,QAAQ,GACf,KAAK,KAAKA,CAAM,EACT,OAEL,KAAK,OAAO,OAAOA,EAAO,MAAM,IAAM,GACxC,KAAK,OAAS,KAAK,IAAI,KAAK,OAAQA,EAAO,MAAM,GAEjDwB,GAAM,WAAWxB,EAAO,OAAQ,KAAK,MAAM,EAAE,UAAUA,EAAO,MAAM,EACpE,KAAK,cAAcuB,GAAM,KAAKvB,EAAO,MAAM,EAAE,IAAIwB,EAAK,CAAC,EACvD,KAAK,cAAcD,GAAM,KAAKvB,EAAO,MAAM,EAAE,IAAIwB,EAAK,CAAC,GAElD,KACT,CACA,OAAOxB,EAAQ,CACb,OAAOA,EAAO,OAAO,OAAO,KAAK,MAAM,GAAKA,EAAO,SAAW,KAAK,MACrE,CACA,OAAQ,CACN,OAAO,IAAI,KAAK,YAAY,EAAE,KAAK,IAAI,CACzC,CACF,EACI+B,GAA4B,IAAInX,EAChCoX,GAA6B,IAAIpX,EACjCqX,GAA0B,IAAIrX,EAC9BsX,GAAwB,IAAItX,EAC5BuX,GAAyB,IAAIvX,EAC7BwX,GAAyB,IAAIxX,EAC7ByX,GAA4B,IAAIzX,EAChCnF,GAAM,KAAM,CACd,YAAY6c,EAAS,IAAI1X,EAAW2X,EAAY,IAAI3X,EAAQ,EAAG,EAAG,EAAE,EAAG,CACrE,KAAK,OAAS0X,EACd,KAAK,UAAYC,CACnB,CACA,IAAID,EAAQC,EAAW,CACrB,YAAK,OAAO,KAAKD,CAAM,EACvB,KAAK,UAAU,KAAKC,CAAS,EACtB,IACT,CACA,KAAKC,EAAK,CACR,YAAK,OAAO,KAAKA,EAAI,MAAM,EAC3B,KAAK,UAAU,KAAKA,EAAI,SAAS,EAC1B,IACT,CACA,GAAGtU,EAAGgJ,EAAQ,CACZ,OAAOA,EAAO,KAAK,KAAK,MAAM,EAAE,gBAAgB,KAAK,UAAWhJ,CAAC,CACnE,CACA,OAAO2C,EAAG,CACR,YAAK,UAAU,KAAKA,CAAC,EAAE,IAAI,KAAK,MAAM,EAAE,UAAU,EAC3C,IACT,CACA,OAAO3C,EAAG,CACR,YAAK,OAAO,KAAK,KAAK,GAAGA,EAAG6T,EAAS,CAAC,EAC/B,IACT,CACA,oBAAoBrC,EAAOxI,EAAQ,CACjCA,EAAO,WAAWwI,EAAO,KAAK,MAAM,EACpC,IAAM+C,EAAoBvL,EAAO,IAAI,KAAK,SAAS,EACnD,OAAIuL,EAAoB,EACfvL,EAAO,KAAK,KAAK,MAAM,EAEzBA,EAAO,KAAK,KAAK,MAAM,EAAE,gBAAgB,KAAK,UAAWuL,CAAiB,CACnF,CACA,gBAAgB/C,EAAO,CACrB,OAAO,KAAK,KAAK,KAAK,kBAAkBA,CAAK,CAAC,CAChD,CACA,kBAAkBA,EAAO,CACvB,IAAM+C,EAAoBV,GAAU,WAAWrC,EAAO,KAAK,MAAM,EAAE,IAAI,KAAK,SAAS,EACrF,OAAI+C,EAAoB,EACf,KAAK,OAAO,kBAAkB/C,CAAK,GAE5CqC,GAAU,KAAK,KAAK,MAAM,EAAE,gBAAgB,KAAK,UAAWU,CAAiB,EACtEV,GAAU,kBAAkBrC,CAAK,EAC1C,CACA,oBAAoBsB,EAAI1P,EAAIoR,EAAoBC,EAAwB,CACtEX,GAAW,KAAKhB,CAAE,EAAE,IAAI1P,CAAE,EAAE,eAAe,EAAG,EAC9C2Q,GAAQ,KAAK3Q,CAAE,EAAE,IAAI0P,CAAE,EAAE,UAAU,EACnCkB,GAAM,KAAK,KAAK,MAAM,EAAE,IAAIF,EAAU,EACtC,IAAMY,EAAY5B,EAAG,WAAW1P,CAAE,EAAI,GAChCuR,EAAM,CAAC,KAAK,UAAU,IAAIZ,EAAO,EACjCa,EAAKZ,GAAM,IAAI,KAAK,SAAS,EAC7BrU,EAAK,CAACqU,GAAM,IAAID,EAAO,EACvBpS,EAAIqS,GAAM,SAAS,EACnB5N,EAAM,KAAK,IAAI,EAAIuO,EAAMA,CAAG,EAC9BE,EAAInH,EAAIoH,EAASC,EACrB,GAAI3O,EAAM,EAIR,GAHAyO,EAAKF,EAAMhV,EAAKiV,EAChBlH,EAAKiH,EAAMC,EAAKjV,EAChBoV,EAASL,EAAYtO,EACjByO,GAAM,EACR,GAAInH,GAAM,CAACqH,EACT,GAAIrH,GAAMqH,EAAQ,CAChB,IAAMC,EAAS,EAAI5O,EACnByO,GAAMG,EACNtH,GAAMsH,EACNF,EAAUD,GAAMA,EAAKF,EAAMjH,EAAK,EAAIkH,GAAMlH,GAAMiH,EAAME,EAAKnH,EAAK,EAAI/N,GAAMgC,CAC5E,MACE+L,EAAKgH,EACLG,EAAK,KAAK,IAAI,EAAG,EAAEF,EAAMjH,EAAKkH,EAAG,EACjCE,EAAU,CAACD,EAAKA,EAAKnH,GAAMA,EAAK,EAAI/N,GAAMgC,OAG5C+L,EAAK,CAACgH,EACNG,EAAK,KAAK,IAAI,EAAG,EAAEF,EAAMjH,EAAKkH,EAAG,EACjCE,EAAU,CAACD,EAAKA,EAAKnH,GAAMA,EAAK,EAAI/N,GAAMgC,OAGxC+L,GAAM,CAACqH,GACTF,EAAK,KAAK,IAAI,EAAG,EAAE,CAACF,EAAMD,EAAYE,EAAG,EACzClH,EAAKmH,EAAK,EAAI,CAACH,EAAY,KAAK,IAAI,KAAK,IAAI,CAACA,EAAW,CAAC/U,CAAE,EAAG+U,CAAS,EACxEI,EAAU,CAACD,EAAKA,EAAKnH,GAAMA,EAAK,EAAI/N,GAAMgC,GACjC+L,GAAMqH,GACfF,EAAK,EACLnH,EAAK,KAAK,IAAI,KAAK,IAAI,CAACgH,EAAW,CAAC/U,CAAE,EAAG+U,CAAS,EAClDI,EAAUpH,GAAMA,EAAK,EAAI/N,GAAMgC,IAE/BkT,EAAK,KAAK,IAAI,EAAG,EAAEF,EAAMD,EAAYE,EAAG,EACxClH,EAAKmH,EAAK,EAAIH,EAAY,KAAK,IAAI,KAAK,IAAI,CAACA,EAAW,CAAC/U,CAAE,EAAG+U,CAAS,EACvEI,EAAU,CAACD,EAAKA,EAAKnH,GAAMA,EAAK,EAAI/N,GAAMgC,QAI9C+L,EAAKiH,EAAM,EAAI,CAACD,EAAYA,EAC5BG,EAAK,KAAK,IAAI,EAAG,EAAEF,EAAMjH,EAAKkH,EAAG,EACjCE,EAAU,CAACD,EAAKA,EAAKnH,GAAMA,EAAK,EAAI/N,GAAMgC,EAE5C,OAAI6S,GACFA,EAAmB,KAAK,KAAK,MAAM,EAAE,gBAAgB,KAAK,UAAWK,CAAE,EAErEJ,GACFA,EAAuB,KAAKX,EAAU,EAAE,gBAAgBC,GAASrG,CAAE,EAE9DoH,CACT,CACA,gBAAgBhD,EAAQ9I,EAAQ,CAC9B6K,GAAU,WAAW/B,EAAO,OAAQ,KAAK,MAAM,EAC/C,IAAMmD,EAAMpB,GAAU,IAAI,KAAK,SAAS,EAClC/U,EAAK+U,GAAU,IAAIA,EAAS,EAAIoB,EAAMA,EACtCC,EAAUpD,EAAO,OAASA,EAAO,OACvC,GAAIhT,EAAKoW,EAAS,OAAO,KACzB,IAAMC,EAAM,KAAK,KAAKD,EAAUpW,CAAE,EAC5BsW,EAAKH,EAAME,EACXE,EAAKJ,EAAME,EACjB,OAAIE,EAAK,EAAU,KACfD,EAAK,EAAU,KAAK,GAAGC,EAAIrM,CAAM,EAC9B,KAAK,GAAGoM,EAAIpM,CAAM,CAC3B,CACA,iBAAiB8I,EAAQ,CACvB,OAAO,KAAK,kBAAkBA,EAAO,MAAM,GAAKA,EAAO,OAASA,EAAO,MACzE,CACA,gBAAgBC,EAAO,CACrB,IAAMhP,EAAcgP,EAAM,OAAO,IAAI,KAAK,SAAS,EACnD,GAAIhP,IAAgB,EAClB,OAAIgP,EAAM,gBAAgB,KAAK,MAAM,IAAM,EAClC,EAEF,KAET,IAAM/R,EAAI,EAAE,KAAK,OAAO,IAAI+R,EAAM,MAAM,EAAIA,EAAM,UAAYhP,EAC9D,OAAO/C,GAAK,EAAIA,EAAI,IACtB,CACA,eAAe+R,EAAO/I,EAAQ,CAC5B,IAAMhJ,EAAI,KAAK,gBAAgB+R,CAAK,EACpC,OAAI/R,IAAM,KACD,KAEF,KAAK,GAAGA,EAAGgJ,CAAM,CAC1B,CACA,gBAAgB+I,EAAO,CACrB,IAAMuD,EAAcvD,EAAM,gBAAgB,KAAK,MAAM,EAKrD,OAJIuD,IAAgB,GAGAvD,EAAM,OAAO,IAAI,KAAK,SAAS,EACjCuD,EAAc,CAIlC,CACA,aAAa/D,EAAKvI,EAAQ,CACxB,IAAIuM,EAAMC,EAAMC,EAAOC,EAAOC,EAAOC,EAC/BC,EAAU,EAAI,KAAK,UAAU,EAAGC,EAAU,EAAI,KAAK,UAAU,EAAGC,EAAU,EAAI,KAAK,UAAU,EAC7F3B,EAAS,KAAK,OA4BpB,OA3BIyB,GAAW,GACbN,GAAQhE,EAAI,IAAI,EAAI6C,EAAO,GAAKyB,EAChCL,GAAQjE,EAAI,IAAI,EAAI6C,EAAO,GAAKyB,IAEhCN,GAAQhE,EAAI,IAAI,EAAI6C,EAAO,GAAKyB,EAChCL,GAAQjE,EAAI,IAAI,EAAI6C,EAAO,GAAKyB,GAE9BC,GAAW,GACbL,GAASlE,EAAI,IAAI,EAAI6C,EAAO,GAAK0B,EACjCJ,GAASnE,EAAI,IAAI,EAAI6C,EAAO,GAAK0B,IAEjCL,GAASlE,EAAI,IAAI,EAAI6C,EAAO,GAAK0B,EACjCJ,GAASnE,EAAI,IAAI,EAAI6C,EAAO,GAAK0B,GAE/BP,EAAOG,GAASD,EAAQD,KACxBC,EAAQF,GAAQ,MAAMA,CAAI,KAAGA,EAAOE,IACpCC,EAAQF,GAAQ,MAAMA,CAAI,KAAGA,EAAOE,GACpCK,GAAW,GACbJ,GAASpE,EAAI,IAAI,EAAI6C,EAAO,GAAK2B,EACjCH,GAASrE,EAAI,IAAI,EAAI6C,EAAO,GAAK2B,IAEjCJ,GAASpE,EAAI,IAAI,EAAI6C,EAAO,GAAK2B,EACjCH,GAASrE,EAAI,IAAI,EAAI6C,EAAO,GAAK2B,GAE/BR,EAAOK,GAASD,EAAQH,MACxBG,EAAQJ,GAAQA,IAASA,KAAMA,EAAOI,IACtCC,EAAQJ,GAAQA,IAASA,KAAMA,EAAOI,GACtCJ,EAAO,GAAU,KACd,KAAK,GAAGD,GAAQ,EAAIA,EAAOC,EAAMxM,CAAM,CAChD,CACA,cAAcuI,EAAK,CACjB,OAAO,KAAK,aAAaA,EAAKsC,EAAS,IAAM,IAC/C,CACA,kBAAkBpS,EAAGC,EAAGC,EAAGqU,EAAiBhN,EAAQ,CAClDiL,GAAO,WAAWvS,EAAGD,CAAC,EACtByS,GAAO,WAAWvS,EAAGF,CAAC,EACtB0S,GAAU,aAAaF,GAAQC,EAAM,EACrC,IAAI+B,EAAM,KAAK,UAAU,IAAI9B,EAAS,EAClC+B,EACJ,GAAID,EAAM,EAAG,CACX,GAAID,EAAiB,OAAO,KAC5BE,EAAQ,CACV,SAAWD,EAAM,EACfC,EAAQ,GACRD,EAAM,CAACA,MAEP,QAAO,KAETjC,GAAM,WAAW,KAAK,OAAQvS,CAAC,EAC/B,IAAM0U,EAASD,EAAQ,KAAK,UAAU,IAAIhC,GAAO,aAAaF,GAAOE,EAAM,CAAC,EAC5E,GAAIiC,EAAS,EACX,OAAO,KAET,IAAMC,EAASF,EAAQ,KAAK,UAAU,IAAIjC,GAAO,MAAMD,EAAK,CAAC,EAI7D,GAHIoC,EAAS,GAGTD,EAASC,EAASH,EACpB,OAAO,KAET,IAAMI,EAAM,CAACH,EAAQlC,GAAM,IAAIG,EAAS,EACxC,OAAIkC,EAAM,EACD,KAEF,KAAK,GAAGA,EAAMJ,EAAKjN,CAAM,CAClC,CACA,aAAazC,EAAS,CACpB,YAAK,OAAO,aAAaA,CAAO,EAChC,KAAK,UAAU,mBAAmBA,CAAO,EAClC,IACT,CACA,OAAO+N,EAAK,CACV,OAAOA,EAAI,OAAO,OAAO,KAAK,MAAM,GAAKA,EAAI,UAAU,OAAO,KAAK,SAAS,CAC9E,CACA,OAAQ,CACN,OAAO,IAAI,KAAK,YAAY,EAAE,KAAK,IAAI,CACzC,CACF,EACI/jB,GAAU,MAAM+lB,EAAS,CAC3B,YAAY3S,EAAKC,EAAKC,EAAK0S,EAAKzS,EAAKC,EAAKC,EAAKwS,EAAKvS,EAAKC,EAAKC,EAAKsS,EAAKC,EAAKC,EAAKC,EAAKC,EAAK,CAC1FP,GAAS,UAAU,UAAY,GAC/B,KAAK,SAAW,CACd,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACF,EACI3S,IAAQ,QACV,KAAK,IAAIA,EAAKC,EAAKC,EAAK0S,EAAKzS,EAAKC,EAAKC,EAAKwS,EAAKvS,EAAKC,EAAKC,EAAKsS,EAAKC,EAAKC,EAAKC,EAAKC,CAAG,CAE3F,CACA,IAAIlT,EAAKC,EAAKC,EAAK0S,EAAKzS,EAAKC,EAAKC,EAAKwS,EAAKvS,EAAKC,EAAKC,EAAKsS,EAAKC,EAAKC,EAAKC,EAAKC,EAAK,CAClF,IAAMzS,EAAK,KAAK,SAChB,OAAAA,EAAG,CAAC,EAAIT,EACRS,EAAG,CAAC,EAAIR,EACRQ,EAAG,CAAC,EAAIP,EACRO,EAAG,EAAE,EAAImS,EACTnS,EAAG,CAAC,EAAIN,EACRM,EAAG,CAAC,EAAIL,EACRK,EAAG,CAAC,EAAIJ,EACRI,EAAG,EAAE,EAAIoS,EACTpS,EAAG,CAAC,EAAIH,EACRG,EAAG,CAAC,EAAIF,EACRE,EAAG,EAAE,EAAID,EACTC,EAAG,EAAE,EAAIqS,EACTrS,EAAG,CAAC,EAAIsS,EACRtS,EAAG,CAAC,EAAIuS,EACRvS,EAAG,EAAE,EAAIwS,EACTxS,EAAG,EAAE,EAAIyS,EACF,IACT,CACA,UAAW,CACT,YAAK,IACH,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACF,EACO,IACT,CACA,OAAQ,CACN,OAAO,IAAIP,GAAS,EAAE,UAAU,KAAK,QAAQ,CAC/C,CACA,KAAKhX,EAAG,CACN,IAAM8E,EAAK,KAAK,SACVC,EAAK/E,EAAE,SACb,OAAA8E,EAAG,CAAC,EAAIC,EAAG,CAAC,EACZD,EAAG,CAAC,EAAIC,EAAG,CAAC,EACZD,EAAG,CAAC,EAAIC,EAAG,CAAC,EACZD,EAAG,CAAC,EAAIC,EAAG,CAAC,EACZD,EAAG,CAAC,EAAIC,EAAG,CAAC,EACZD,EAAG,CAAC,EAAIC,EAAG,CAAC,EACZD,EAAG,CAAC,EAAIC,EAAG,CAAC,EACZD,EAAG,CAAC,EAAIC,EAAG,CAAC,EACZD,EAAG,CAAC,EAAIC,EAAG,CAAC,EACZD,EAAG,CAAC,EAAIC,EAAG,CAAC,EACZD,EAAG,EAAE,EAAIC,EAAG,EAAE,EACdD,EAAG,EAAE,EAAIC,EAAG,EAAE,EACdD,EAAG,EAAE,EAAIC,EAAG,EAAE,EACdD,EAAG,EAAE,EAAIC,EAAG,EAAE,EACdD,EAAG,EAAE,EAAIC,EAAG,EAAE,EACdD,EAAG,EAAE,EAAIC,EAAG,EAAE,EACP,IACT,CACA,aAAa/E,EAAG,CACd,IAAM8E,EAAK,KAAK,SAAUC,EAAK/E,EAAE,SACjC,OAAA8E,EAAG,EAAE,EAAIC,EAAG,EAAE,EACdD,EAAG,EAAE,EAAIC,EAAG,EAAE,EACdD,EAAG,EAAE,EAAIC,EAAG,EAAE,EACP,IACT,CACA,eAAe/E,EAAG,CAChB,IAAM+E,EAAK/E,EAAE,SACb,YAAK,IACH+E,EAAG,CAAC,EACJA,EAAG,CAAC,EACJA,EAAG,CAAC,EACJ,EACAA,EAAG,CAAC,EACJA,EAAG,CAAC,EACJA,EAAG,CAAC,EACJ,EACAA,EAAG,CAAC,EACJA,EAAG,CAAC,EACJA,EAAG,CAAC,EACJ,EACA,EACA,EACA,EACA,CACF,EACO,IACT,CACA,aAAaC,EAAOC,EAAOC,EAAO,CAChC,OAAAF,EAAM,oBAAoB,KAAM,CAAC,EACjCC,EAAM,oBAAoB,KAAM,CAAC,EACjCC,EAAM,oBAAoB,KAAM,CAAC,EAC1B,IACT,CACA,UAAUF,EAAOC,EAAOC,EAAO,CAC7B,YAAK,IACHF,EAAM,EACNC,EAAM,EACNC,EAAM,EACN,EACAF,EAAM,EACNC,EAAM,EACNC,EAAM,EACN,EACAF,EAAM,EACNC,EAAM,EACNC,EAAM,EACN,EACA,EACA,EACA,EACA,CACF,EACO,IACT,CACA,gBAAgBlF,EAAG,CACjB,IAAM8E,EAAK,KAAK,SACVC,EAAK/E,EAAE,SACPwX,EAAS,EAAIC,GAAM,oBAAoBzX,EAAG,CAAC,EAAE,OAAO,EACpD0X,EAAS,EAAID,GAAM,oBAAoBzX,EAAG,CAAC,EAAE,OAAO,EACpD2X,EAAS,EAAIF,GAAM,oBAAoBzX,EAAG,CAAC,EAAE,OAAO,EAC1D,OAAA8E,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAIyS,EAChB1S,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAIyS,EAChB1S,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAIyS,EAChB1S,EAAG,CAAC,EAAI,EACRA,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAI2S,EAChB5S,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAI2S,EAChB5S,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAI2S,EAChB5S,EAAG,CAAC,EAAI,EACRA,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAI4S,EAChB7S,EAAG,CAAC,EAAIC,EAAG,CAAC,EAAI4S,EAChB7S,EAAG,EAAE,EAAIC,EAAG,EAAE,EAAI4S,EAClB7S,EAAG,EAAE,EAAI,EACTA,EAAG,EAAE,EAAI,EACTA,EAAG,EAAE,EAAI,EACTA,EAAG,EAAE,EAAI,EACTA,EAAG,EAAE,EAAI,EACF,IACT,CACA,sBAAsBkJ,EAAO,CAC3B,IAAMlJ,EAAK,KAAK,SACV5E,EAAI8N,EAAM,EAAGxN,EAAIwN,EAAM,EAAG5C,EAAI4C,EAAM,EACpC,EAAI,KAAK,IAAI9N,CAAC,EAAGkC,EAAI,KAAK,IAAIlC,CAAC,EAC/BmC,EAAI,KAAK,IAAI7B,CAAC,EAAG+F,EAAI,KAAK,IAAI/F,CAAC,EAC/B8C,EAAI,KAAK,IAAI8H,CAAC,EAAG5E,EAAI,KAAK,IAAI4E,CAAC,EACrC,GAAI4C,EAAM,QAAU,MAAO,CACzB,IAAM7I,EAAK,EAAI7B,EAAGsU,EAAK,EAAIpR,EAAGpB,EAAKhD,EAAIkB,EAAGuU,EAAKzV,EAAIoE,EACnD1B,EAAG,CAAC,EAAIzC,EAAIiB,EACZwB,EAAG,CAAC,EAAI,CAACzC,EAAImE,EACb1B,EAAG,CAAC,EAAIyB,EACRzB,EAAG,CAAC,EAAI8S,EAAKxS,EAAKmB,EAClBzB,EAAG,CAAC,EAAIK,EAAK0S,EAAKtR,EAClBzB,EAAG,CAAC,EAAI,CAAC1C,EAAIC,EACbyC,EAAG,CAAC,EAAI+S,EAAK1S,EAAKoB,EAClBzB,EAAG,CAAC,EAAIM,EAAKwS,EAAKrR,EAClBzB,EAAG,EAAE,EAAI,EAAIzC,CACf,SAAW2L,EAAM,QAAU,MAAO,CAChC,IAAM8J,EAAKzV,EAAIiB,EAAGyU,EAAK1V,EAAImE,EAAGwR,EAAKzR,EAAIjD,EAAG2U,EAAK1R,EAAIC,EACnD1B,EAAG,CAAC,EAAIgT,EAAKG,EAAK7V,EAClB0C,EAAG,CAAC,EAAIkT,EAAK5V,EAAI2V,EACjBjT,EAAG,CAAC,EAAI,EAAIyB,EACZzB,EAAG,CAAC,EAAI,EAAI0B,EACZ1B,EAAG,CAAC,EAAI,EAAIxB,EACZwB,EAAG,CAAC,EAAI,CAAC1C,EACT0C,EAAG,CAAC,EAAIiT,EAAK3V,EAAI4V,EACjBlT,EAAG,CAAC,EAAImT,EAAKH,EAAK1V,EAClB0C,EAAG,EAAE,EAAI,EAAIzC,CACf,SAAW2L,EAAM,QAAU,MAAO,CAChC,IAAM8J,EAAKzV,EAAIiB,EAAGyU,EAAK1V,EAAImE,EAAGwR,EAAKzR,EAAIjD,EAAG2U,EAAK1R,EAAIC,EACnD1B,EAAG,CAAC,EAAIgT,EAAKG,EAAK7V,EAClB0C,EAAG,CAAC,EAAI,CAAC,EAAI0B,EACb1B,EAAG,CAAC,EAAIkT,EAAKD,EAAK3V,EAClB0C,EAAG,CAAC,EAAIiT,EAAKC,EAAK5V,EAClB0C,EAAG,CAAC,EAAI,EAAIxB,EACZwB,EAAG,CAAC,EAAImT,EAAKH,EAAK1V,EAClB0C,EAAG,CAAC,EAAI,CAAC,EAAIyB,EACbzB,EAAG,CAAC,EAAI1C,EACR0C,EAAG,EAAE,EAAI,EAAIzC,CACf,SAAW2L,EAAM,QAAU,MAAO,CAChC,IAAM7I,EAAK,EAAI7B,EAAGsU,EAAK,EAAIpR,EAAGpB,EAAKhD,EAAIkB,EAAGuU,EAAKzV,EAAIoE,EACnD1B,EAAG,CAAC,EAAIzC,EAAIiB,EACZwB,EAAG,CAAC,EAAIM,EAAKmB,EAAIqR,EACjB9S,EAAG,CAAC,EAAIK,EAAKoB,EAAIsR,EACjB/S,EAAG,CAAC,EAAIzC,EAAImE,EACZ1B,EAAG,CAAC,EAAI+S,EAAKtR,EAAIpB,EACjBL,EAAG,CAAC,EAAI8S,EAAKrR,EAAInB,EACjBN,EAAG,CAAC,EAAI,CAACyB,EACTzB,EAAG,CAAC,EAAI1C,EAAIC,EACZyC,EAAG,EAAE,EAAI,EAAIzC,CACf,SAAW2L,EAAM,QAAU,MAAO,CAChC,IAAMkK,EAAK,EAAI7V,EAAG8V,EAAK,EAAI5R,EAAG6R,EAAKhW,EAAIC,EAAGgW,EAAKjW,EAAImE,EACnDzB,EAAG,CAAC,EAAIzC,EAAIiB,EACZwB,EAAG,CAAC,EAAIuT,EAAKH,EAAK1R,EAClB1B,EAAG,CAAC,EAAIsT,EAAK5R,EAAI2R,EACjBrT,EAAG,CAAC,EAAI0B,EACR1B,EAAG,CAAC,EAAI,EAAIxB,EACZwB,EAAG,CAAC,EAAI,CAAC1C,EAAIkB,EACbwB,EAAG,CAAC,EAAI,CAACyB,EAAIjD,EACbwB,EAAG,CAAC,EAAIqT,EAAK3R,EAAI4R,EACjBtT,EAAG,EAAE,EAAIoT,EAAKG,EAAK7R,CACrB,SAAWwH,EAAM,QAAU,MAAO,CAChC,IAAMkK,EAAK,EAAI7V,EAAG8V,EAAK,EAAI5R,EAAG6R,EAAKhW,EAAIC,EAAGgW,EAAKjW,EAAImE,EACnDzB,EAAG,CAAC,EAAIzC,EAAIiB,EACZwB,EAAG,CAAC,EAAI,CAAC0B,EACT1B,EAAG,CAAC,EAAIyB,EAAIjD,EACZwB,EAAG,CAAC,EAAIoT,EAAK1R,EAAI6R,EACjBvT,EAAG,CAAC,EAAI,EAAIxB,EACZwB,EAAG,CAAC,EAAIqT,EAAK3R,EAAI4R,EACjBtT,EAAG,CAAC,EAAIsT,EAAK5R,EAAI2R,EACjBrT,EAAG,CAAC,EAAI1C,EAAIkB,EACZwB,EAAG,EAAE,EAAIuT,EAAK7R,EAAI0R,CACpB,CACA,OAAApT,EAAG,CAAC,EAAI,EACRA,EAAG,CAAC,EAAI,EACRA,EAAG,EAAE,EAAI,EACTA,EAAG,EAAE,EAAI,EACTA,EAAG,EAAE,EAAI,EACTA,EAAG,EAAE,EAAI,EACTA,EAAG,EAAE,EAAI,EACF,IACT,CACA,2BAA2B5C,EAAG,CAC5B,OAAO,KAAK,QAAQoW,GAAOpW,EAAGqW,EAAI,CACpC,CACA,OAAOC,EAAK9O,EAAQ+O,EAAI,CACtB,IAAM3T,EAAK,KAAK,SAChB,OAAA4T,GAAG,WAAWF,EAAK9O,CAAM,EACrBgP,GAAG,SAAS,IAAM,IACpBA,GAAG,EAAI,GAETA,GAAG,UAAU,EACbC,GAAG,aAAaF,EAAIC,EAAE,EAClBC,GAAG,SAAS,IAAM,IAChB,KAAK,IAAIF,EAAG,CAAC,IAAM,EACrBC,GAAG,GAAK,KAERA,GAAG,GAAK,KAEVA,GAAG,UAAU,EACbC,GAAG,aAAaF,EAAIC,EAAE,GAExBC,GAAG,UAAU,EACbC,GAAG,aAAaF,GAAIC,EAAE,EACtB7T,EAAG,CAAC,EAAI6T,GAAG,EACX7T,EAAG,CAAC,EAAI8T,GAAG,EACX9T,EAAG,CAAC,EAAI4T,GAAG,EACX5T,EAAG,CAAC,EAAI6T,GAAG,EACX7T,EAAG,CAAC,EAAI8T,GAAG,EACX9T,EAAG,CAAC,EAAI4T,GAAG,EACX5T,EAAG,CAAC,EAAI6T,GAAG,EACX7T,EAAG,CAAC,EAAI8T,GAAG,EACX9T,EAAG,EAAE,EAAI4T,GAAG,EACL,IACT,CACA,SAAS1Y,EAAG,CACV,OAAO,KAAK,iBAAiB,KAAMA,CAAC,CACtC,CACA,YAAYA,EAAG,CACb,OAAO,KAAK,iBAAiBA,EAAG,IAAI,CACtC,CACA,iBAAiBmC,EAAGC,EAAG,CACrB,IAAM+C,EAAKhD,EAAE,SACPiD,EAAKhD,EAAE,SACP0C,EAAK,KAAK,SACVO,EAAMF,EAAG,CAAC,EAAGG,EAAMH,EAAG,CAAC,EAAGI,EAAMJ,EAAG,CAAC,EAAG0T,EAAM1T,EAAG,EAAE,EAClDK,EAAML,EAAG,CAAC,EAAGM,EAAMN,EAAG,CAAC,EAAGO,EAAMP,EAAG,CAAC,EAAG2T,EAAM3T,EAAG,EAAE,EAClDQ,EAAMR,EAAG,CAAC,EAAGS,EAAMT,EAAG,CAAC,EAAGU,EAAMV,EAAG,EAAE,EAAG4T,EAAM5T,EAAG,EAAE,EACnD6T,EAAM7T,EAAG,CAAC,EAAG8T,EAAM9T,EAAG,CAAC,EAAG+T,EAAM/T,EAAG,EAAE,EAAGgU,EAAMhU,EAAG,EAAE,EACnDW,EAAMV,EAAG,CAAC,EAAGW,EAAMX,EAAG,CAAC,EAAGY,EAAMZ,EAAG,CAAC,EAAGgU,EAAMhU,EAAG,EAAE,EAClDa,EAAMb,EAAG,CAAC,EAAGc,EAAMd,EAAG,CAAC,EAAGe,EAAMf,EAAG,CAAC,EAAGiU,EAAMjU,EAAG,EAAE,EAClDgB,EAAMhB,EAAG,CAAC,EAAGiB,EAAMjB,EAAG,CAAC,EAAGkB,EAAMlB,EAAG,EAAE,EAAGkU,GAAMlU,EAAG,EAAE,EACnDmU,EAAMnU,EAAG,CAAC,EAAGoU,GAAMpU,EAAG,CAAC,EAAGqU,GAAMrU,EAAG,EAAE,EAAGsU,GAAMtU,EAAG,EAAE,EACzD,OAAAN,EAAG,CAAC,EAAIO,EAAMS,EAAMR,EAAMW,EAAMV,EAAMa,EAAMyS,EAAMU,EAClDzU,EAAG,CAAC,EAAIO,EAAMU,EAAMT,EAAMY,EAAMX,EAAMc,EAAMwS,EAAMW,GAClD1U,EAAG,CAAC,EAAIO,EAAMW,EAAMV,EAAMa,EAAMZ,EAAMe,EAAMuS,EAAMY,GAClD3U,EAAG,EAAE,EAAIO,EAAM+T,EAAM9T,EAAM+T,EAAM9T,EAAM+T,GAAMT,EAAMa,GACnD5U,EAAG,CAAC,EAAIU,EAAMM,EAAML,EAAMQ,EAAMP,EAAMU,EAAM0S,EAAMS,EAClDzU,EAAG,CAAC,EAAIU,EAAMO,EAAMN,EAAMS,EAAMR,EAAMW,EAAMyS,EAAMU,GAClD1U,EAAG,CAAC,EAAIU,EAAMQ,EAAMP,EAAMU,EAAMT,EAAMY,EAAMwS,EAAMW,GAClD3U,EAAG,EAAE,EAAIU,EAAM4T,EAAM3T,EAAM4T,EAAM3T,EAAM4T,GAAMR,EAAMY,GACnD5U,EAAG,CAAC,EAAIa,EAAMG,EAAMF,EAAMK,EAAMJ,EAAMO,EAAM2S,EAAMQ,EAClDzU,EAAG,CAAC,EAAIa,EAAMI,EAAMH,EAAMM,EAAML,EAAMQ,EAAM0S,EAAMS,GAClD1U,EAAG,EAAE,EAAIa,EAAMK,EAAMJ,EAAMO,EAAMN,EAAMS,EAAMyS,EAAMU,GACnD3U,EAAG,EAAE,EAAIa,EAAMyT,EAAMxT,EAAMyT,EAAMxT,EAAMyT,GAAMP,EAAMW,GACnD5U,EAAG,CAAC,EAAIkU,EAAMlT,EAAMmT,EAAMhT,EAAMiT,EAAM9S,EAAM+S,EAAMI,EAClDzU,EAAG,CAAC,EAAIkU,EAAMjT,EAAMkT,EAAM/S,EAAMgT,EAAM7S,EAAM8S,EAAMK,GAClD1U,EAAG,EAAE,EAAIkU,EAAMhT,EAAMiT,EAAM9S,EAAM+S,EAAM5S,EAAM6S,EAAMM,GACnD3U,EAAG,EAAE,EAAIkU,EAAMI,EAAMH,EAAMI,EAAMH,EAAMI,GAAMH,EAAMO,GAC5C,IACT,CACA,eAAejY,EAAG,CAChB,IAAMqD,EAAK,KAAK,SAChB,OAAAA,EAAG,CAAC,GAAKrD,EACTqD,EAAG,CAAC,GAAKrD,EACTqD,EAAG,CAAC,GAAKrD,EACTqD,EAAG,EAAE,GAAKrD,EACVqD,EAAG,CAAC,GAAKrD,EACTqD,EAAG,CAAC,GAAKrD,EACTqD,EAAG,CAAC,GAAKrD,EACTqD,EAAG,EAAE,GAAKrD,EACVqD,EAAG,CAAC,GAAKrD,EACTqD,EAAG,CAAC,GAAKrD,EACTqD,EAAG,EAAE,GAAKrD,EACVqD,EAAG,EAAE,GAAKrD,EACVqD,EAAG,CAAC,GAAKrD,EACTqD,EAAG,CAAC,GAAKrD,EACTqD,EAAG,EAAE,GAAKrD,EACVqD,EAAG,EAAE,GAAKrD,EACH,IACT,CACA,aAAc,CACZ,IAAMqD,EAAK,KAAK,SACVT,EAAMS,EAAG,CAAC,EAAGR,EAAMQ,EAAG,CAAC,EAAGP,EAAMO,EAAG,CAAC,EAAGmS,EAAMnS,EAAG,EAAE,EAClDN,EAAMM,EAAG,CAAC,EAAGL,EAAMK,EAAG,CAAC,EAAGJ,EAAMI,EAAG,CAAC,EAAGoS,EAAMpS,EAAG,EAAE,EAClDH,EAAMG,EAAG,CAAC,EAAGF,EAAME,EAAG,CAAC,EAAGD,EAAMC,EAAG,EAAE,EAAGqS,EAAMrS,EAAG,EAAE,EACnDsS,EAAMtS,EAAG,CAAC,EAAGuS,EAAMvS,EAAG,CAAC,EAAGwS,EAAMxS,EAAG,EAAE,EAAGyS,EAAMzS,EAAG,EAAE,EACzD,OAAOsS,GAAO,CAACH,EAAMvS,EAAME,EAAML,EAAM2S,EAAMtS,EAAMqS,EAAMxS,EAAMI,EAAMP,EAAM4S,EAAMrS,EAAMN,EAAME,EAAM0S,EAAM7S,EAAMI,EAAMyS,GAAOE,GAAO,CAAChT,EAAMK,EAAMyS,EAAM9S,EAAM6S,EAAMrS,EAAMoS,EAAMzS,EAAMK,EAAMN,EAAMC,EAAM2S,EAAM5S,EAAM2S,EAAMvS,EAAMsS,EAAMvS,EAAMC,GAAO2S,GAAO,CAACjT,EAAM6S,EAAMtS,EAAMP,EAAMI,EAAM0S,EAAMF,EAAMzS,EAAMI,EAAMN,EAAME,EAAM2S,EAAMF,EAAMxS,EAAME,EAAML,EAAM4S,EAAMvS,GAAO4S,GAAO,CAAChT,EAAME,EAAME,EAAMN,EAAMK,EAAME,EAAMP,EAAMI,EAAMI,EAAMN,EAAMC,EAAMI,EAAMN,EAAME,EAAMK,EAAMP,EAAMI,EAAMC,EACtd,CACA,WAAY,CACV,IAAMG,EAAK,KAAK,SACZkC,EACJ,OAAAA,EAAOlC,EAAG,CAAC,EACXA,EAAG,CAAC,EAAIA,EAAG,CAAC,EACZA,EAAG,CAAC,EAAIkC,EACRA,EAAOlC,EAAG,CAAC,EACXA,EAAG,CAAC,EAAIA,EAAG,CAAC,EACZA,EAAG,CAAC,EAAIkC,EACRA,EAAOlC,EAAG,CAAC,EACXA,EAAG,CAAC,EAAIA,EAAG,CAAC,EACZA,EAAG,CAAC,EAAIkC,EACRA,EAAOlC,EAAG,CAAC,EACXA,EAAG,CAAC,EAAIA,EAAG,EAAE,EACbA,EAAG,EAAE,EAAIkC,EACTA,EAAOlC,EAAG,CAAC,EACXA,EAAG,CAAC,EAAIA,EAAG,EAAE,EACbA,EAAG,EAAE,EAAIkC,EACTA,EAAOlC,EAAG,EAAE,EACZA,EAAG,EAAE,EAAIA,EAAG,EAAE,EACdA,EAAG,EAAE,EAAIkC,EACF,IACT,CACA,YAAY9G,EAAGM,EAAG4K,EAAG,CACnB,IAAMtG,EAAK,KAAK,SAChB,OAAI5E,EAAE,WACJ4E,EAAG,EAAE,EAAI5E,EAAE,EACX4E,EAAG,EAAE,EAAI5E,EAAE,EACX4E,EAAG,EAAE,EAAI5E,EAAE,IAEX4E,EAAG,EAAE,EAAI5E,EACT4E,EAAG,EAAE,EAAItE,EACTsE,EAAG,EAAE,EAAIsG,GAEJ,IACT,CACA,QAAS,CACP,IAAMtG,EAAK,KAAK,SAAUT,EAAMS,EAAG,CAAC,EAAGN,EAAMM,EAAG,CAAC,EAAGH,EAAMG,EAAG,CAAC,EAAGsS,EAAMtS,EAAG,CAAC,EAAGR,EAAMQ,EAAG,CAAC,EAAGL,EAAMK,EAAG,CAAC,EAAGF,EAAME,EAAG,CAAC,EAAGuS,EAAMvS,EAAG,CAAC,EAAGP,EAAMO,EAAG,CAAC,EAAGJ,EAAMI,EAAG,CAAC,EAAGD,EAAMC,EAAG,EAAE,EAAGwS,EAAMxS,EAAG,EAAE,EAAGmS,EAAMnS,EAAG,EAAE,EAAGoS,EAAMpS,EAAG,EAAE,EAAGqS,EAAMrS,EAAG,EAAE,EAAGyS,EAAMzS,EAAG,EAAE,EAAG6B,EAAMjC,EAAMyS,EAAME,EAAMH,EAAMrS,EAAMwS,EAAMH,EAAMtS,EAAM0S,EAAM7S,EAAM0S,EAAMG,EAAM5S,EAAME,EAAM2S,EAAM9S,EAAMI,EAAM0S,EAAK3Q,EAAMqQ,EAAMpS,EAAMwS,EAAM9S,EAAM4S,EAAME,EAAMJ,EAAMrS,EAAM0S,EAAMhT,EAAM6S,EAAMG,EAAM/S,EAAMK,EAAM2S,EAAMjT,EAAMO,EAAM0S,EAAK1Q,EAAMtC,EAAM2S,EAAMG,EAAMJ,EAAMvS,EAAM2S,EAAMJ,EAAMxS,EAAM6S,EAAMhT,EAAM4S,EAAMI,EAAM/S,EAAME,EAAM8S,EAAMjT,EAAMI,EAAM6S,EAAKoC,EAAM1C,EAAMvS,EAAME,EAAML,EAAM2S,EAAMtS,EAAMqS,EAAMxS,EAAMI,EAAMP,EAAM4S,EAAMrS,EAAMN,EAAME,EAAM0S,EAAM7S,EAAMI,EAAMyS,EACzqBrQ,EAAMzC,EAAMsC,EAAMnC,EAAMoC,EAAMjC,EAAMkC,EAAMuQ,EAAMuC,EACtD,GAAI7S,IAAQ,EAAG,OAAO,KAAK,IAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC7E,IAAMC,EAAS,EAAID,EACnB,OAAAhC,EAAG,CAAC,EAAI6B,EAAMI,EACdjC,EAAG,CAAC,GAAKoS,EAAMrS,EAAMuS,EAAM1S,EAAMyS,EAAMC,EAAMF,EAAMvS,EAAM2S,EAAM9S,EAAM2S,EAAMG,EAAM5S,EAAMC,EAAM4S,EAAM/S,EAAMK,EAAM0S,GAAOxQ,EACtHjC,EAAG,CAAC,GAAKL,EAAM0S,EAAMC,EAAMF,EAAMtS,EAAMwS,EAAMF,EAAMvS,EAAM0S,EAAM7S,EAAM2S,EAAME,EAAM5S,EAAME,EAAM4S,EAAM/S,EAAMI,EAAM2S,GAAOxQ,EACtHjC,EAAG,CAAC,GAAKJ,EAAME,EAAMwS,EAAM3S,EAAMI,EAAMuS,EAAM1S,EAAMC,EAAM0S,EAAM7S,EAAMK,EAAMwS,EAAM5S,EAAME,EAAM2S,EAAM9S,EAAMI,EAAM0S,GAAOvQ,EACtHjC,EAAG,CAAC,EAAI8B,EAAMG,EACdjC,EAAG,CAAC,GAAKP,EAAM4S,EAAMC,EAAMH,EAAMpS,EAAMuS,EAAMH,EAAMtS,EAAM2S,EAAMjT,EAAM8S,EAAMG,EAAM/S,EAAMI,EAAM4S,EAAMlT,EAAMQ,EAAM0S,GAAOxQ,EACtHjC,EAAG,CAAC,GAAKmS,EAAMrS,EAAMwS,EAAM9S,EAAM6S,EAAMC,EAAMH,EAAMtS,EAAM0S,EAAMhT,EAAM8S,EAAME,EAAM/S,EAAMK,EAAM4S,EAAMlT,EAAMO,EAAM2S,GAAOxQ,EACtHjC,EAAG,CAAC,GAAKR,EAAMO,EAAMuS,EAAM7S,EAAMK,EAAMwS,EAAM7S,EAAMI,EAAM0S,EAAMhT,EAAMQ,EAAMwS,EAAM/S,EAAMK,EAAM2S,EAAMjT,EAAMO,EAAM0S,GAAOvQ,EACtHjC,EAAG,CAAC,EAAI+B,EAAME,EACdjC,EAAG,CAAC,GAAKmS,EAAMvS,EAAM0S,EAAM7S,EAAM2S,EAAME,EAAMH,EAAMzS,EAAM8S,EAAMjT,EAAM6S,EAAMI,EAAM/S,EAAMC,EAAM+S,EAAMlT,EAAMK,EAAM6S,GAAOxQ,EACtHjC,EAAG,EAAE,GAAKR,EAAM4S,EAAME,EAAMH,EAAMxS,EAAM2S,EAAMH,EAAMzS,EAAM6S,EAAMhT,EAAM6S,EAAMG,EAAM/S,EAAME,EAAM+S,EAAMlT,EAAMI,EAAM8S,GAAOxQ,EACvHjC,EAAG,EAAE,GAAKP,EAAME,EAAM2S,EAAM9S,EAAMI,EAAM0S,EAAM7S,EAAMC,EAAM6S,EAAMhT,EAAMK,EAAM2S,EAAM/S,EAAME,EAAM8S,EAAMjT,EAAMI,EAAM6S,GAAOvQ,EACvHjC,EAAG,EAAE,EAAI6U,EAAM5S,EACfjC,EAAG,EAAE,GAAKP,EAAM2S,EAAMvS,EAAMsS,EAAMvS,EAAMC,EAAMsS,EAAMzS,EAAMK,EAAMR,EAAM6S,EAAMrS,EAAMN,EAAMC,EAAM2S,EAAM9S,EAAMK,EAAMyS,GAAOpQ,EACvHjC,EAAG,EAAE,GAAKmS,EAAMxS,EAAME,EAAML,EAAM4S,EAAMvS,EAAMsS,EAAMzS,EAAMI,EAAMP,EAAM6S,EAAMtS,EAAMN,EAAME,EAAM2S,EAAM9S,EAAMI,EAAM0S,GAAOpQ,EACvHjC,EAAG,EAAE,GAAKR,EAAMI,EAAMC,EAAMJ,EAAME,EAAME,EAAMJ,EAAMC,EAAMI,EAAMP,EAAMK,EAAME,EAAMN,EAAME,EAAMK,EAAMR,EAAMI,EAAMI,GAAOkC,EAChH,IACT,CACA,MAAM1D,EAAG,CACP,IAAMyB,EAAK,KAAK,SACV5E,EAAImD,EAAE,EAAG7C,EAAI6C,EAAE,EAAG+H,EAAI/H,EAAE,EAC9B,OAAAyB,EAAG,CAAC,GAAK5E,EACT4E,EAAG,CAAC,GAAKtE,EACTsE,EAAG,CAAC,GAAKsG,EACTtG,EAAG,CAAC,GAAK5E,EACT4E,EAAG,CAAC,GAAKtE,EACTsE,EAAG,CAAC,GAAKsG,EACTtG,EAAG,CAAC,GAAK5E,EACT4E,EAAG,CAAC,GAAKtE,EACTsE,EAAG,EAAE,GAAKsG,EACVtG,EAAG,CAAC,GAAK5E,EACT4E,EAAG,CAAC,GAAKtE,EACTsE,EAAG,EAAE,GAAKsG,EACH,IACT,CACA,mBAAoB,CAClB,IAAMtG,EAAK,KAAK,SACV8U,EAAW9U,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EACvD+U,EAAW/U,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EACvDgV,EAAWhV,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAIA,EAAG,EAAE,EAAIA,EAAG,EAAE,EAC/D,OAAO,KAAK,KAAK,KAAK,IAAI8U,EAAUC,EAAUC,CAAQ,CAAC,CACzD,CACA,gBAAgB5Z,EAAGM,EAAG4K,EAAG,CACvB,OAAIlL,EAAE,UACJ,KAAK,IACH,EACA,EACA,EACAA,EAAE,EACF,EACA,EACA,EACAA,EAAE,EACF,EACA,EACA,EACAA,EAAE,EACF,EACA,EACA,EACA,CACF,EAEA,KAAK,IACH,EACA,EACA,EACAA,EACA,EACA,EACA,EACAM,EACA,EACA,EACA,EACA4K,EACA,EACA,EACA,EACA,CACF,EAEK,IACT,CACA,cAAc1H,EAAO,CACnB,IAAMrB,EAAI,KAAK,IAAIqB,CAAK,EAAGjC,EAAI,KAAK,IAAIiC,CAAK,EAC7C,YAAK,IACH,EACA,EACA,EACA,EACA,EACArB,EACA,CAACZ,EACD,EACA,EACAA,EACAY,EACA,EACA,EACA,EACA,EACA,CACF,EACO,IACT,CACA,cAAcqB,EAAO,CACnB,IAAMrB,EAAI,KAAK,IAAIqB,CAAK,EAAGjC,EAAI,KAAK,IAAIiC,CAAK,EAC7C,YAAK,IACHrB,EACA,EACAZ,EACA,EACA,EACA,EACA,EACA,EACA,CAACA,EACD,EACAY,EACA,EACA,EACA,EACA,EACA,CACF,EACO,IACT,CACA,cAAcqB,EAAO,CACnB,IAAMrB,EAAI,KAAK,IAAIqB,CAAK,EAAGjC,EAAI,KAAK,IAAIiC,CAAK,EAC7C,YAAK,IACHrB,EACA,CAACZ,EACD,EACA,EACAA,EACAY,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACF,EACO,IACT,CACA,iBAAiBiM,EAAMnK,EAAO,CAC5B,IAAM9B,EAAI,KAAK,IAAI8B,CAAK,EAClB1C,EAAI,KAAK,IAAI0C,CAAK,EAClBzD,EAAI,EAAI2B,EACRnC,EAAIoO,EAAK,EAAG9N,EAAI8N,EAAK,EAAGlD,EAAIkD,EAAK,EACjCnH,EAAKzG,EAAIR,EAAGkH,EAAK1G,EAAIF,EAC3B,YAAK,IACH2G,EAAKjH,EAAImC,EACT8E,EAAK3G,EAAIiB,EAAI2J,EACbjE,EAAKiE,EAAI3J,EAAIjB,EACb,EACA2G,EAAK3G,EAAIiB,EAAI2J,EACbhE,EAAK5G,EAAI6B,EACT+E,EAAKgE,EAAI3J,EAAIvB,EACb,EACAiH,EAAKiE,EAAI3J,EAAIjB,EACb4G,EAAKgE,EAAI3J,EAAIvB,EACbQ,EAAI0K,EAAIA,EAAI/I,EACZ,EACA,EACA,EACA,EACA,CACF,EACO,IACT,CACA,UAAUnC,EAAGM,EAAG4K,EAAG,CACjB,YAAK,IACHlL,EACA,EACA,EACA,EACA,EACAM,EACA,EACA,EACA,EACA,EACA4K,EACA,EACA,EACA,EACA,EACA,CACF,EACO,IACT,CACA,UAAUc,EAAIC,EAAI4N,EAAI3N,EAAI4N,EAAIC,EAAI,CAChC,YAAK,IACH,EACAF,EACAC,EACA,EACA9N,EACA,EACA+N,EACA,EACA9N,EACAC,EACA,EACA,EACA,EACA,EACA,EACA,CACF,EACO,IACT,CACA,QAAQ8N,EAAUnM,EAAYoM,EAAO,CACnC,IAAMrV,EAAK,KAAK,SACV5E,EAAI6N,EAAW,GAAIvN,EAAIuN,EAAW,GAAI3C,EAAI2C,EAAW,GAAI1C,EAAI0C,EAAW,GACxEqM,EAAKla,EAAIA,EAAGma,EAAK7Z,EAAIA,EAAG8Z,EAAKlP,EAAIA,EACjCW,EAAK7L,EAAIka,EAAIlO,EAAKhM,EAAIma,EAAIlO,EAAKjM,EAAIoa,EACnCtO,EAAKxL,EAAI6Z,EAAIjO,EAAK5L,EAAI8Z,EAAIrO,EAAKb,EAAIkP,EACnCC,EAAKlP,EAAI+O,EAAII,EAAKnP,EAAIgP,EAAII,EAAKpP,EAAIiP,EACnCjT,EAAK8S,EAAM,EAAG7S,EAAK6S,EAAM,EAAG1I,EAAK0I,EAAM,EAC7C,OAAArV,EAAG,CAAC,GAAK,GAAKkH,EAAKC,IAAO5E,EAC1BvC,EAAG,CAAC,GAAKoH,EAAKuO,GAAMpT,EACpBvC,EAAG,CAAC,GAAKqH,EAAKqO,GAAMnT,EACpBvC,EAAG,CAAC,EAAI,EACRA,EAAG,CAAC,GAAKoH,EAAKuO,GAAMnT,EACpBxC,EAAG,CAAC,GAAK,GAAKiH,EAAKE,IAAO3E,EAC1BxC,EAAG,CAAC,GAAKsH,EAAKmO,GAAMjT,EACpBxC,EAAG,CAAC,EAAI,EACRA,EAAG,CAAC,GAAKqH,EAAKqO,GAAM/I,EACpB3M,EAAG,CAAC,GAAKsH,EAAKmO,GAAM9I,EACpB3M,EAAG,EAAE,GAAK,GAAKiH,EAAKC,IAAOyF,EAC3B3M,EAAG,EAAE,EAAI,EACTA,EAAG,EAAE,EAAIoV,EAAS,EAClBpV,EAAG,EAAE,EAAIoV,EAAS,EAClBpV,EAAG,EAAE,EAAIoV,EAAS,EAClBpV,EAAG,EAAE,EAAI,EACF,IACT,CACA,UAAUoV,EAAUnM,EAAYoM,EAAO,CACrC,IAAMrV,EAAK,KAAK,SACZuC,EAAKoQ,GAAM,IAAI3S,EAAG,CAAC,EAAGA,EAAG,CAAC,EAAGA,EAAG,CAAC,CAAC,EAAE,OAAO,EACzCwC,EAAKmQ,GAAM,IAAI3S,EAAG,CAAC,EAAGA,EAAG,CAAC,EAAGA,EAAG,CAAC,CAAC,EAAE,OAAO,EAC3C2M,EAAKgG,GAAM,IAAI3S,EAAG,CAAC,EAAGA,EAAG,CAAC,EAAGA,EAAG,EAAE,CAAC,EAAE,OAAO,EACtC,KAAK,YAAY,EACnB,IAAGuC,EAAK,CAACA,GACnB6S,EAAS,EAAIpV,EAAG,EAAE,EAClBoV,EAAS,EAAIpV,EAAG,EAAE,EAClBoV,EAAS,EAAIpV,EAAG,EAAE,EAClB4V,GAAM,KAAK,IAAI,EACf,IAAMC,EAAQ,EAAItT,EACZuT,EAAQ,EAAItT,EACZuT,EAAQ,EAAIpJ,EAClB,OAAAiJ,GAAM,SAAS,CAAC,GAAKC,EACrBD,GAAM,SAAS,CAAC,GAAKC,EACrBD,GAAM,SAAS,CAAC,GAAKC,EACrBD,GAAM,SAAS,CAAC,GAAKE,EACrBF,GAAM,SAAS,CAAC,GAAKE,EACrBF,GAAM,SAAS,CAAC,GAAKE,EACrBF,GAAM,SAAS,CAAC,GAAKG,EACrBH,GAAM,SAAS,CAAC,GAAKG,EACrBH,GAAM,SAAS,EAAE,GAAKG,EACtB9M,EAAW,sBAAsB2M,EAAK,EACtCP,EAAM,EAAI9S,EACV8S,EAAM,EAAI7S,EACV6S,EAAM,EAAI1I,EACH,IACT,CACA,gBAAgBqJ,EAAMC,EAAOC,EAAKC,EAAQC,EAAMC,EAAKC,EAAmB1d,GAAuB,CAC7F,IAAMoH,EAAK,KAAK,SACV5E,EAAI,EAAIgb,GAAQH,EAAQD,GACxBta,EAAI,EAAI0a,GAAQF,EAAMC,GACtB9Y,GAAK4Y,EAAQD,IAASC,EAAQD,GAC9B1Y,GAAK4Y,EAAMC,IAAWD,EAAMC,GAC9B5Y,EAAGkE,EACP,GAAI6U,IAAqB1d,GACvB2E,EAAI,EAAE8Y,EAAMD,IAASC,EAAMD,GAC3B3U,EAAI,GAAK4U,EAAMD,GAAQC,EAAMD,WACpBE,IAAqBpd,GAC9BqE,EAAI,CAAC8Y,GAAOA,EAAMD,GAClB3U,EAAI,CAAC4U,EAAMD,GAAQC,EAAMD,OAEzB,OAAM,IAAI,MAAM,+DAAiEE,CAAgB,EAEnG,OAAAtW,EAAG,CAAC,EAAI5E,EACR4E,EAAG,CAAC,EAAI,EACRA,EAAG,CAAC,EAAI3C,EACR2C,EAAG,EAAE,EAAI,EACTA,EAAG,CAAC,EAAI,EACRA,EAAG,CAAC,EAAItE,EACRsE,EAAG,CAAC,EAAI1C,EACR0C,EAAG,EAAE,EAAI,EACTA,EAAG,CAAC,EAAI,EACRA,EAAG,CAAC,EAAI,EACRA,EAAG,EAAE,EAAIzC,EACTyC,EAAG,EAAE,EAAIyB,EACTzB,EAAG,CAAC,EAAI,EACRA,EAAG,CAAC,EAAI,EACRA,EAAG,EAAE,EAAI,GACTA,EAAG,EAAE,EAAI,EACF,IACT,CACA,iBAAiBgW,EAAMC,EAAOC,EAAKC,EAAQC,EAAMC,EAAKC,EAAmB1d,GAAuB,CAC9F,IAAMoH,EAAK,KAAK,SACVuG,EAAI,GAAK0P,EAAQD,GACjB,EAAI,GAAKE,EAAMC,GACfI,EAAI,GAAKF,EAAMD,GACfhb,GAAK6a,EAAQD,GAAQzP,EACrB7K,GAAKwa,EAAMC,GAAU,EACvB7P,EAAGkQ,EACP,GAAIF,IAAqB1d,GACvB0N,GAAK+P,EAAMD,GAAQG,EACnBC,EAAO,GAAKD,UACHD,IAAqBpd,GAC9BoN,EAAI8P,EAAOG,EACXC,EAAO,GAAKD,MAEZ,OAAM,IAAI,MAAM,gEAAkED,CAAgB,EAEpG,OAAAtW,EAAG,CAAC,EAAI,EAAIuG,EACZvG,EAAG,CAAC,EAAI,EACRA,EAAG,CAAC,EAAI,EACRA,EAAG,EAAE,EAAI,CAAC5E,EACV4E,EAAG,CAAC,EAAI,EACRA,EAAG,CAAC,EAAI,EAAI,EACZA,EAAG,CAAC,EAAI,EACRA,EAAG,EAAE,EAAI,CAACtE,EACVsE,EAAG,CAAC,EAAI,EACRA,EAAG,CAAC,EAAI,EACRA,EAAG,EAAE,EAAIwW,EACTxW,EAAG,EAAE,EAAI,CAACsG,EACVtG,EAAG,CAAC,EAAI,EACRA,EAAG,CAAC,EAAI,EACRA,EAAG,EAAE,EAAI,EACTA,EAAG,EAAE,EAAI,EACF,IACT,CACA,OAAO6C,EAAQ,CACb,IAAM7C,EAAK,KAAK,SACVC,EAAK4C,EAAO,SAClB,QAAS5I,EAAI,EAAGA,EAAI,GAAIA,IACtB,GAAI+F,EAAG/F,CAAC,IAAMgG,EAAGhG,CAAC,EAAG,MAAO,GAE9B,MAAO,EACT,CACA,UAAUD,EAAOkF,EAAS,EAAG,CAC3B,QAAS,EAAI,EAAG,EAAI,GAAI,IACtB,KAAK,SAAS,CAAC,EAAIlF,EAAM,EAAIkF,CAAM,EAErC,OAAO,IACT,CACA,QAAQlF,EAAQ,CAAC,EAAGkF,EAAS,EAAG,CAC9B,IAAMc,EAAK,KAAK,SAChB,OAAAhG,EAAMkF,CAAM,EAAIc,EAAG,CAAC,EACpBhG,EAAMkF,EAAS,CAAC,EAAIc,EAAG,CAAC,EACxBhG,EAAMkF,EAAS,CAAC,EAAIc,EAAG,CAAC,EACxBhG,EAAMkF,EAAS,CAAC,EAAIc,EAAG,CAAC,EACxBhG,EAAMkF,EAAS,CAAC,EAAIc,EAAG,CAAC,EACxBhG,EAAMkF,EAAS,CAAC,EAAIc,EAAG,CAAC,EACxBhG,EAAMkF,EAAS,CAAC,EAAIc,EAAG,CAAC,EACxBhG,EAAMkF,EAAS,CAAC,EAAIc,EAAG,CAAC,EACxBhG,EAAMkF,EAAS,CAAC,EAAIc,EAAG,CAAC,EACxBhG,EAAMkF,EAAS,CAAC,EAAIc,EAAG,CAAC,EACxBhG,EAAMkF,EAAS,EAAE,EAAIc,EAAG,EAAE,EAC1BhG,EAAMkF,EAAS,EAAE,EAAIc,EAAG,EAAE,EAC1BhG,EAAMkF,EAAS,EAAE,EAAIc,EAAG,EAAE,EAC1BhG,EAAMkF,EAAS,EAAE,EAAIc,EAAG,EAAE,EAC1BhG,EAAMkF,EAAS,EAAE,EAAIc,EAAG,EAAE,EAC1BhG,EAAMkF,EAAS,EAAE,EAAIc,EAAG,EAAE,EACnBhG,CACT,CACF,EACI2Y,GAAwB,IAAIra,EAC5Bsd,GAAwB,IAAIzpB,GAC5BqnB,GAAwB,IAAIlb,EAAQ,EAAG,EAAG,CAAC,EAC3Cmb,GAAuB,IAAInb,EAAQ,EAAG,EAAG,CAAC,EAC1Cub,GAAqB,IAAIvb,EACzBwb,GAAqB,IAAIxb,EACzBsb,GAAqB,IAAItb,EACzBme,GAA4B,IAAItqB,GAChCuqB,GAAgC,IAAInmB,GACpChK,GAAQ,MAAMowB,EAAO,CACvB,YAAYvb,EAAI,EAAGM,EAAI,EAAG4K,EAAI,EAAG9I,EAAQmZ,GAAO,cAAe,CAC7D,KAAK,QAAU,GACf,KAAK,GAAKvb,EACV,KAAK,GAAKM,EACV,KAAK,GAAK4K,EACV,KAAK,OAAS9I,CAChB,CACA,IAAI,GAAI,CACN,OAAO,KAAK,EACd,CACA,IAAI,EAAE3C,EAAO,CACX,KAAK,GAAKA,EACV,KAAK,kBAAkB,CACzB,CACA,IAAI,GAAI,CACN,OAAO,KAAK,EACd,CACA,IAAI,EAAEA,EAAO,CACX,KAAK,GAAKA,EACV,KAAK,kBAAkB,CACzB,CACA,IAAI,GAAI,CACN,OAAO,KAAK,EACd,CACA,IAAI,EAAEA,EAAO,CACX,KAAK,GAAKA,EACV,KAAK,kBAAkB,CACzB,CACA,IAAI,OAAQ,CACV,OAAO,KAAK,MACd,CACA,IAAI,MAAMA,EAAO,CACf,KAAK,OAASA,EACd,KAAK,kBAAkB,CACzB,CACA,IAAIO,EAAGM,EAAG4K,EAAG9I,EAAQ,KAAK,OAAQ,CAChC,YAAK,GAAKpC,EACV,KAAK,GAAKM,EACV,KAAK,GAAK4K,EACV,KAAK,OAAS9I,EACd,KAAK,kBAAkB,EAChB,IACT,CACA,OAAQ,CACN,OAAO,IAAI,KAAK,YAAY,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,MAAM,CACpE,CACA,KAAK0L,EAAO,CACV,YAAK,GAAKA,EAAM,GAChB,KAAK,GAAKA,EAAM,GAChB,KAAK,GAAKA,EAAM,GAChB,KAAK,OAASA,EAAM,OACpB,KAAK,kBAAkB,EAChB,IACT,CACA,sBAAsBhO,EAAGsC,EAAQ,KAAK,OAAQ2L,EAAS,GAAM,CAC3D,IAAMnJ,EAAK9E,EAAE,SACPsL,EAAMxG,EAAG,CAAC,EAAGyG,EAAMzG,EAAG,CAAC,EAAG0G,EAAM1G,EAAG,CAAC,EACpC2G,EAAM3G,EAAG,CAAC,EAAG4G,EAAM5G,EAAG,CAAC,EAAG6G,EAAM7G,EAAG,CAAC,EACpC8G,EAAM9G,EAAG,CAAC,EAAG+G,EAAM/G,EAAG,CAAC,EAAGgH,EAAMhH,EAAG,EAAE,EAC3C,OAAQxC,EAAO,CACb,IAAK,MACH,KAAK,GAAK,KAAK,KAAK5C,GAAM8L,EAAK,GAAI,CAAC,CAAC,EACjC,KAAK,IAAIA,CAAG,EAAI,UAClB,KAAK,GAAK,KAAK,MAAM,CAACG,EAAKG,CAAG,EAC9B,KAAK,GAAK,KAAK,MAAM,CAACP,EAAKD,CAAG,IAE9B,KAAK,GAAK,KAAK,MAAMO,EAAKH,CAAG,EAC7B,KAAK,GAAK,GAEZ,MACF,IAAK,MACH,KAAK,GAAK,KAAK,KAAK,CAAChM,GAAMiM,EAAK,GAAI,CAAC,CAAC,EAClC,KAAK,IAAIA,CAAG,EAAI,UAClB,KAAK,GAAK,KAAK,MAAMH,EAAKM,CAAG,EAC7B,KAAK,GAAK,KAAK,MAAML,EAAKC,CAAG,IAE7B,KAAK,GAAK,KAAK,MAAM,CAACE,EAAKN,CAAG,EAC9B,KAAK,GAAK,GAEZ,MACF,IAAK,MACH,KAAK,GAAK,KAAK,KAAK5L,GAAMmM,EAAK,GAAI,CAAC,CAAC,EACjC,KAAK,IAAIA,CAAG,EAAI,UAClB,KAAK,GAAK,KAAK,MAAM,CAACD,EAAKE,CAAG,EAC9B,KAAK,GAAK,KAAK,MAAM,CAACP,EAAKG,CAAG,IAE9B,KAAK,GAAK,EACV,KAAK,GAAK,KAAK,MAAMD,EAAKH,CAAG,GAE/B,MACF,IAAK,MACH,KAAK,GAAK,KAAK,KAAK,CAAC5L,GAAMkM,EAAK,GAAI,CAAC,CAAC,EAClC,KAAK,IAAIA,CAAG,EAAI,UAClB,KAAK,GAAK,KAAK,MAAMC,EAAKC,CAAG,EAC7B,KAAK,GAAK,KAAK,MAAML,EAAKH,CAAG,IAE7B,KAAK,GAAK,EACV,KAAK,GAAK,KAAK,MAAM,CAACC,EAAKG,CAAG,GAEhC,MACF,IAAK,MACH,KAAK,GAAK,KAAK,KAAKhM,GAAM+L,EAAK,GAAI,CAAC,CAAC,EACjC,KAAK,IAAIA,CAAG,EAAI,UAClB,KAAK,GAAK,KAAK,MAAM,CAACE,EAAKD,CAAG,EAC9B,KAAK,GAAK,KAAK,MAAM,CAACE,EAAKN,CAAG,IAE9B,KAAK,GAAK,EACV,KAAK,GAAK,KAAK,MAAME,EAAKM,CAAG,GAE/B,MACF,IAAK,MACH,KAAK,GAAK,KAAK,KAAK,CAACpM,GAAM6L,EAAK,GAAI,CAAC,CAAC,EAClC,KAAK,IAAIA,CAAG,EAAI,UAClB,KAAK,GAAK,KAAK,MAAMM,EAAKH,CAAG,EAC7B,KAAK,GAAK,KAAK,MAAMF,EAAKF,CAAG,IAE7B,KAAK,GAAK,KAAK,MAAM,CAACK,EAAKG,CAAG,EAC9B,KAAK,GAAK,GAEZ,MACF,QACE,QAAQ,KAAK,uEAAyExJ,CAAK,CAC/F,CACA,YAAK,OAASA,EACV2L,IAAW,IAAM,KAAK,kBAAkB,EACrC,IACT,CACA,kBAAkB/L,EAAGI,EAAO2L,EAAQ,CAClC,OAAAsN,GAAU,2BAA2BrZ,CAAC,EAC/B,KAAK,sBAAsBqZ,GAAWjZ,EAAO2L,CAAM,CAC5D,CACA,eAAe5K,EAAGf,EAAQ,KAAK,OAAQ,CACrC,OAAO,KAAK,IAAIe,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGf,CAAK,CACtC,CACA,QAAQoZ,EAAU,CAChB,OAAAF,GAAc,aAAa,IAAI,EACxB,KAAK,kBAAkBA,GAAeE,CAAQ,CACvD,CACA,OAAO1N,EAAO,CACZ,OAAOA,EAAM,KAAO,KAAK,IAAMA,EAAM,KAAO,KAAK,IAAMA,EAAM,KAAO,KAAK,IAAMA,EAAM,SAAW,KAAK,MACvG,CACA,UAAUlP,EAAO,CACf,YAAK,GAAKA,EAAM,CAAC,EACjB,KAAK,GAAKA,EAAM,CAAC,EACjB,KAAK,GAAKA,EAAM,CAAC,EACbA,EAAM,CAAC,IAAM,SAAQ,KAAK,OAASA,EAAM,CAAC,GAC9C,KAAK,kBAAkB,EAChB,IACT,CACA,QAAQA,EAAQ,CAAC,EAAGkF,EAAS,EAAG,CAC9B,OAAAlF,EAAMkF,CAAM,EAAI,KAAK,GACrBlF,EAAMkF,EAAS,CAAC,EAAI,KAAK,GACzBlF,EAAMkF,EAAS,CAAC,EAAI,KAAK,GACzBlF,EAAMkF,EAAS,CAAC,EAAI,KAAK,OAClBlF,CACT,CACA,UAAUkR,EAAU,CAClB,YAAK,kBAAoBA,EAClB,IACT,CACA,mBAAoB,CACpB,CACA,EAAE,OAAO,QAAQ,GAAI,CACnB,MAAM,KAAK,GACX,MAAM,KAAK,GACX,MAAM,KAAK,GACX,MAAM,KAAK,MACb,CACF,EACA3kB,GAAM,cAAgB,MACtB,IAAImD,GAAS,KAAM,CACjB,aAAc,CACZ,KAAK,KAAO,CACd,CACA,IAAImtB,EAAS,CACX,KAAK,MAAQ,GAAKA,EAAU,KAAO,CACrC,CACA,OAAOA,EAAS,CACd,KAAK,MAAQ,GAAKA,EAAU,CAC9B,CACA,WAAY,CACV,KAAK,KAAO,EACd,CACA,OAAOA,EAAS,CACd,KAAK,MAAQ,GAAKA,EAAU,CAC9B,CACA,QAAQA,EAAS,CACf,KAAK,MAAQ,EAAE,GAAKA,EAAU,EAChC,CACA,YAAa,CACX,KAAK,KAAO,CACd,CACA,KAAKC,EAAQ,CACX,OAAQ,KAAK,KAAOA,EAAO,QAAU,CACvC,CACA,UAAUD,EAAS,CACjB,OAAQ,KAAK,MAAQ,GAAKA,EAAU,MAAQ,CAC9C,CACF,EACIE,GAAc,EACdC,GAAwB,IAAI1e,EAC5B2e,GAAsB,IAAI1mB,GAC1B2mB,GAAwB,IAAI/qB,GAC5BgrB,GAA0B,IAAI7e,EAC9B8e,GAA8B,IAAI9e,EAClC+e,GAA2B,IAAI/e,EAC/Bgf,GAAgC,IAAI/mB,GACpCgnB,GAAyB,IAAIjf,EAAQ,EAAG,EAAG,CAAC,EAC5Ckf,GAAyB,IAAIlf,EAAQ,EAAG,EAAG,CAAC,EAC5Cmf,GAAyB,IAAInf,EAAQ,EAAG,EAAG,CAAC,EAC5Cof,GAAc,CAAE,KAAM,OAAQ,EAC9BC,GAAgB,CAAE,KAAM,SAAU,EAClCC,GAAmB,CAAE,KAAM,aAAc,MAAO,IAAK,EACrDC,GAAqB,CAAE,KAAM,eAAgB,MAAO,IAAK,EACzDtpB,GAAW,MAAMupB,WAAkBtxB,EAAgB,CACrD,aAAc,CACZ,MAAM,EACN,KAAK,WAAa,GAClB,OAAO,eAAe,KAAM,KAAM,CAAE,MAAOuwB,IAAc,CAAC,EAC1D,KAAK,KAAOxc,GAAa,EACzB,KAAK,KAAO,GACZ,KAAK,KAAO,WACZ,KAAK,OAAS,KACd,KAAK,SAAW,CAAC,EACjB,KAAK,GAAKud,GAAU,WAAW,MAAM,EACrC,IAAM1C,EAAW,IAAI9c,EACfmK,EAAW,IAAIlc,GACf0iB,EAAa,IAAI1Y,GACjB8kB,EAAQ,IAAI/c,EAAQ,EAAG,EAAG,CAAC,EACjC,SAASyf,GAAmB,CAC1B9O,EAAW,aAAaxG,EAAU,EAAK,CACzC,CACA,SAASuV,GAAqB,CAC5BvV,EAAS,kBAAkBwG,EAAY,OAAQ,EAAK,CACtD,CACAxG,EAAS,UAAUsV,CAAgB,EACnC9O,EAAW,UAAU+O,CAAkB,EACvC,OAAO,iBAAiB,KAAM,CAC5B,SAAU,CACR,aAAc,GACd,WAAY,GACZ,MAAO5C,CACT,EACA,SAAU,CACR,aAAc,GACd,WAAY,GACZ,MAAO3S,CACT,EACA,WAAY,CACV,aAAc,GACd,WAAY,GACZ,MAAOwG,CACT,EACA,MAAO,CACL,aAAc,GACd,WAAY,GACZ,MAAOoM,CACT,EACA,gBAAiB,CACf,MAAO,IAAIlpB,EACb,EACA,aAAc,CACZ,MAAO,IAAID,EACb,CACF,CAAC,EACD,KAAK,OAAS,IAAIC,GAClB,KAAK,YAAc,IAAIA,GACvB,KAAK,iBAAmB2rB,GAAU,2BAClC,KAAK,sBAAwBA,GAAU,iCACvC,KAAK,uBAAyB,GAC9B,KAAK,OAAS,IAAIpuB,GAClB,KAAK,QAAU,GACf,KAAK,WAAa,GAClB,KAAK,cAAgB,GACrB,KAAK,cAAgB,GACrB,KAAK,YAAc,EACnB,KAAK,WAAa,CAAC,EACnB,KAAK,SAAW,CAAC,CACnB,CACA,gBAAiB,CACjB,CACA,eAAgB,CAChB,CACA,gBAAiB,CACjB,CACA,eAAgB,CAChB,CACA,aAAamZ,EAAQ,CACf,KAAK,kBAAkB,KAAK,aAAa,EAC7C,KAAK,OAAO,YAAYA,CAAM,EAC9B,KAAK,OAAO,UAAU,KAAK,SAAU,KAAK,WAAY,KAAK,KAAK,CAClE,CACA,gBAAgBzF,EAAG,CACjB,YAAK,WAAW,YAAYA,CAAC,EACtB,IACT,CACA,yBAAyBoM,EAAMnK,EAAO,CACpC,KAAK,WAAW,iBAAiBmK,EAAMnK,CAAK,CAC9C,CACA,qBAAqB6J,EAAO,CAC1B,KAAK,WAAW,aAAaA,EAAO,EAAI,CAC1C,CACA,sBAAsBhO,EAAG,CACvB,KAAK,WAAW,sBAAsBA,CAAC,CACzC,CACA,0BAA0BkC,EAAG,CAC3B,KAAK,WAAW,KAAKA,CAAC,CACxB,CACA,aAAaoM,EAAMnK,EAAO,CACxB,OAAA4X,GAAI,iBAAiBzN,EAAMnK,CAAK,EAChC,KAAK,WAAW,SAAS4X,EAAG,EACrB,IACT,CACA,kBAAkBzN,EAAMnK,EAAO,CAC7B,OAAA4X,GAAI,iBAAiBzN,EAAMnK,CAAK,EAChC,KAAK,WAAW,YAAY4X,EAAG,EACxB,IACT,CACA,QAAQ5X,EAAO,CACb,OAAO,KAAK,aAAakY,GAAQlY,CAAK,CACxC,CACA,QAAQA,EAAO,CACb,OAAO,KAAK,aAAamY,GAAQnY,CAAK,CACxC,CACA,QAAQA,EAAO,CACb,OAAO,KAAK,aAAaoY,GAAQpY,CAAK,CACxC,CACA,gBAAgBmK,EAAMyO,EAAU,CAC9B,OAAAjB,GAAM,KAAKxN,CAAI,EAAE,gBAAgB,KAAK,UAAU,EAChD,KAAK,SAAS,IAAIwN,GAAM,eAAeiB,CAAQ,CAAC,EACzC,IACT,CACA,WAAWA,EAAU,CACnB,OAAO,KAAK,gBAAgBV,GAAQU,CAAQ,CAC9C,CACA,WAAWA,EAAU,CACnB,OAAO,KAAK,gBAAgBT,GAAQS,CAAQ,CAC9C,CACA,WAAWA,EAAU,CACnB,OAAO,KAAK,gBAAgBR,GAAQQ,CAAQ,CAC9C,CACA,aAAa5K,EAAQ,CACnB,YAAK,kBAAkB,GAAM,EAAK,EAC3BA,EAAO,aAAa,KAAK,WAAW,CAC7C,CACA,aAAaA,EAAQ,CACnB,YAAK,kBAAkB,GAAM,EAAK,EAC3BA,EAAO,aAAa6J,GAAM,KAAK,KAAK,WAAW,EAAE,OAAO,CAAC,CAClE,CACA,OAAO9b,EAAGM,EAAG4K,EAAG,CACVlL,EAAE,UACJ+b,GAAQ,KAAK/b,CAAC,EAEd+b,GAAQ,IAAI/b,EAAGM,EAAG4K,CAAC,EAErB,IAAM4R,EAAS,KAAK,OACpB,KAAK,kBAAkB,GAAM,EAAK,EAClCd,GAAY,sBAAsB,KAAK,WAAW,EAC9C,KAAK,UAAY,KAAK,QACxBF,GAAM,OAAOE,GAAaD,GAAS,KAAK,EAAE,EAE1CD,GAAM,OAAOC,GAASC,GAAa,KAAK,EAAE,EAE5C,KAAK,WAAW,sBAAsBF,EAAK,EACvCgB,IACFhB,GAAM,gBAAgBgB,EAAO,WAAW,EACxCjB,GAAI,sBAAsBC,EAAK,EAC/B,KAAK,WAAW,YAAYD,GAAI,OAAO,CAAC,EAE5C,CACA,IAAIhK,EAAQ,CACV,GAAI,UAAU,OAAS,EAAG,CACxB,QAAShT,EAAI,EAAGA,EAAI,UAAU,OAAQA,IACpC,KAAK,IAAI,UAAUA,CAAC,CAAC,EAEvB,OAAO,IACT,CACA,OAAIgT,IAAW,MACb,QAAQ,MAAM,kEAAmEA,CAAM,EAChF,OAELA,GAAUA,EAAO,YACnBA,EAAO,iBAAiB,EACxBA,EAAO,OAAS,KAChB,KAAK,SAAS,KAAKA,CAAM,EACzBA,EAAO,cAAcyK,EAAW,EAChCE,GAAiB,MAAQ3K,EACzB,KAAK,cAAc2K,EAAgB,EACnCA,GAAiB,MAAQ,MAEzB,QAAQ,MAAM,gEAAiE3K,CAAM,EAEhF,KACT,CACA,OAAOA,EAAQ,CACb,GAAI,UAAU,OAAS,EAAG,CACxB,QAAS,EAAI,EAAG,EAAI,UAAU,OAAQ,IACpC,KAAK,OAAO,UAAU,CAAC,CAAC,EAE1B,OAAO,IACT,CACA,IAAMnT,EAAQ,KAAK,SAAS,QAAQmT,CAAM,EAC1C,OAAInT,IAAU,KACZmT,EAAO,OAAS,KAChB,KAAK,SAAS,OAAOnT,EAAO,CAAC,EAC7BmT,EAAO,cAAc0K,EAAa,EAClCE,GAAmB,MAAQ5K,EAC3B,KAAK,cAAc4K,EAAkB,EACrCA,GAAmB,MAAQ,MAEtB,IACT,CACA,kBAAmB,CACjB,IAAMK,EAAS,KAAK,OACpB,OAAIA,IAAW,MACbA,EAAO,OAAO,IAAI,EAEb,IACT,CACA,OAAQ,CACN,OAAO,KAAK,OAAO,GAAG,KAAK,QAAQ,CACrC,CACA,OAAOjL,EAAQ,CACb,YAAK,kBAAkB,GAAM,EAAK,EAClCiK,GAAM,KAAK,KAAK,WAAW,EAAE,OAAO,EAChCjK,EAAO,SAAW,OACpBA,EAAO,OAAO,kBAAkB,GAAM,EAAK,EAC3CiK,GAAM,SAASjK,EAAO,OAAO,WAAW,GAE1CA,EAAO,aAAaiK,EAAK,EACzBjK,EAAO,iBAAiB,EACxBA,EAAO,OAAS,KAChB,KAAK,SAAS,KAAKA,CAAM,EACzBA,EAAO,kBAAkB,GAAO,EAAI,EACpCA,EAAO,cAAcyK,EAAW,EAChCE,GAAiB,MAAQ3K,EACzB,KAAK,cAAc2K,EAAgB,EACnCA,GAAiB,MAAQ,KAClB,IACT,CACA,cAAcO,EAAI,CAChB,OAAO,KAAK,oBAAoB,KAAMA,CAAE,CAC1C,CACA,gBAAgBhV,EAAM,CACpB,OAAO,KAAK,oBAAoB,OAAQA,CAAI,CAC9C,CACA,oBAAoBA,EAAMtI,EAAO,CAC/B,GAAI,KAAKsI,CAAI,IAAMtI,EAAO,OAAO,KACjC,QAAS,EAAI,EAAGX,EAAI,KAAK,SAAS,OAAQ,EAAIA,EAAG,IAAK,CAEpD,IAAM+S,EADQ,KAAK,SAAS,CAAC,EACR,oBAAoB9J,EAAMtI,CAAK,EACpD,GAAIoS,IAAW,OACb,OAAOA,CAEX,CAEF,CACA,qBAAqB9J,EAAMtI,EAAOud,EAAS,CAAC,EAAG,CACzC,KAAKjV,CAAI,IAAMtI,GAAOud,EAAO,KAAK,IAAI,EAC1C,IAAM3K,EAAW,KAAK,SACtB,QAASxT,EAAI,EAAGC,EAAIuT,EAAS,OAAQxT,EAAIC,EAAGD,IAC1CwT,EAASxT,CAAC,EAAE,qBAAqBkJ,EAAMtI,EAAOud,CAAM,EAEtD,OAAOA,CACT,CACA,iBAAiBxT,EAAQ,CACvB,YAAK,kBAAkB,GAAM,EAAK,EAC3BA,EAAO,sBAAsB,KAAK,WAAW,CACtD,CACA,mBAAmBA,EAAQ,CACzB,YAAK,kBAAkB,GAAM,EAAK,EAClC,KAAK,YAAY,UAAUwS,GAAaxS,EAAQyS,EAAQ,EACjDzS,CACT,CACA,cAAcA,EAAQ,CACpB,YAAK,kBAAkB,GAAM,EAAK,EAClC,KAAK,YAAY,UAAUwS,GAAaE,GAAe1S,CAAM,EACtDA,CACT,CACA,kBAAkBA,EAAQ,CACxB,KAAK,kBAAkB,GAAM,EAAK,EAClC,IAAMpG,EAAI,KAAK,YAAY,SAC3B,OAAOoG,EAAO,IAAIpG,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,EAAE,CAAC,EAAE,UAAU,CACjD,CACA,SAAU,CACV,CACA,SAAS0M,EAAU,CACjBA,EAAS,IAAI,EACb,IAAMuC,EAAW,KAAK,SACtB,QAAS,EAAI,EAAGvT,EAAIuT,EAAS,OAAQ,EAAIvT,EAAG,IAC1CuT,EAAS,CAAC,EAAE,SAASvC,CAAQ,CAEjC,CACA,gBAAgBA,EAAU,CACxB,GAAI,KAAK,UAAY,GAAO,OAC5BA,EAAS,IAAI,EACb,IAAMuC,EAAW,KAAK,SACtB,QAAS,EAAI,EAAGvT,EAAIuT,EAAS,OAAQ,EAAIvT,EAAG,IAC1CuT,EAAS,CAAC,EAAE,gBAAgBvC,CAAQ,CAExC,CACA,kBAAkBA,EAAU,CAC1B,IAAMgN,EAAS,KAAK,OAChBA,IAAW,OACbhN,EAASgN,CAAM,EACfA,EAAO,kBAAkBhN,CAAQ,EAErC,CACA,cAAe,CACb,KAAK,OAAO,QAAQ,KAAK,SAAU,KAAK,WAAY,KAAK,KAAK,EAC9D,KAAK,uBAAyB,EAChC,CACA,kBAAkBmN,EAAO,CACnB,KAAK,kBAAkB,KAAK,aAAa,GACzC,KAAK,wBAA0BA,KAC7B,KAAK,wBAA0B,KAC7B,KAAK,SAAW,KAClB,KAAK,YAAY,KAAK,KAAK,MAAM,EAEjC,KAAK,YAAY,iBAAiB,KAAK,OAAO,YAAa,KAAK,MAAM,GAG1E,KAAK,uBAAyB,GAC9BA,EAAQ,IAEV,IAAM5K,EAAW,KAAK,SACtB,QAAS,EAAI,EAAGvT,EAAIuT,EAAS,OAAQ,EAAIvT,EAAG,IAC5BuT,EAAS,CAAC,EAClB,kBAAkB4K,CAAK,CAEjC,CACA,kBAAkBC,EAAeC,EAAgB,CAC/C,IAAML,EAAS,KAAK,OAYpB,GAXII,IAAkB,IAAQJ,IAAW,MACvCA,EAAO,kBAAkB,GAAM,EAAK,EAElC,KAAK,kBAAkB,KAAK,aAAa,EACzC,KAAK,wBAA0B,KAC7B,KAAK,SAAW,KAClB,KAAK,YAAY,KAAK,KAAK,MAAM,EAEjC,KAAK,YAAY,iBAAiB,KAAK,OAAO,YAAa,KAAK,MAAM,GAGtEK,IAAmB,GAAM,CAC3B,IAAM9K,EAAW,KAAK,SACtB,QAASxT,EAAI,EAAGC,EAAIuT,EAAS,OAAQxT,EAAIC,EAAGD,IAC5BwT,EAASxT,CAAC,EAClB,kBAAkB,GAAO,EAAI,CAEvC,CACF,CACA,OAAOoL,EAAM,CACX,IAAMC,EAAeD,IAAS,QAAU,OAAOA,GAAS,SAClDE,EAAS,CAAC,EACZD,IACFD,EAAO,CACL,WAAY,CAAC,EACb,UAAW,CAAC,EACZ,SAAU,CAAC,EACX,OAAQ,CAAC,EACT,OAAQ,CAAC,EACT,UAAW,CAAC,EACZ,WAAY,CAAC,EACb,MAAO,CAAC,CACV,EACAE,EAAO,SAAW,CAChB,QAAS,IACT,KAAM,SACN,UAAW,iBACb,GAEF,IAAM0H,EAAS,CAAC,EAChBA,EAAO,KAAO,KAAK,KACnBA,EAAO,KAAO,KAAK,KACf,KAAK,OAAS,KAAIA,EAAO,KAAO,KAAK,MACrC,KAAK,aAAe,KAAMA,EAAO,WAAa,IAC9C,KAAK,gBAAkB,KAAMA,EAAO,cAAgB,IACpD,KAAK,UAAY,KAAOA,EAAO,QAAU,IACzC,KAAK,gBAAkB,KAAOA,EAAO,cAAgB,IACrD,KAAK,cAAgB,IAAGA,EAAO,YAAc,KAAK,aAClD,OAAO,KAAK,KAAK,QAAQ,EAAE,OAAS,IAAGA,EAAO,SAAW,KAAK,UAClEA,EAAO,OAAS,KAAK,OAAO,KAC5BA,EAAO,OAAS,KAAK,OAAO,QAAQ,EACpCA,EAAO,GAAK,KAAK,GAAG,QAAQ,EACxB,KAAK,mBAAqB,KAAOA,EAAO,iBAAmB,IAC3D,KAAK,kBACPA,EAAO,KAAO,gBACdA,EAAO,MAAQ,KAAK,MACpBA,EAAO,eAAiB,KAAK,eAAe,OAAO,EAC/C,KAAK,gBAAkB,OAAMA,EAAO,cAAgB,KAAK,cAAc,OAAO,IAEhF,KAAK,gBACPA,EAAO,KAAO,cACdA,EAAO,uBAAyB,KAAK,uBACrCA,EAAO,YAAc,KAAK,YAC1BA,EAAO,WAAa,KAAK,YACzBA,EAAO,eAAiB,KAAK,gBAC7BA,EAAO,WAAa,KAAK,YACzBA,EAAO,OAAS,KAAK,QACrBA,EAAO,OAAS,KAAK,QAAQ,IAAKuL,IAAW,CAC3C,eAAgBA,EAAM,eACtB,OAAQA,EAAM,IAAI,IAAI,QAAQ,EAC9B,OAAQA,EAAM,IAAI,IAAI,QAAQ,EAC9B,kBAAmBA,EAAM,kBACzB,aAAcA,EAAM,OAAO,OAC3B,aAAcA,EAAM,OAAO,OAAO,QAAQ,CAC5C,EAAE,EACFvL,EAAO,iBAAmB,KAAK,kBAC/BA,EAAO,eAAiB,KAAK,gBAC7BA,EAAO,cAAgB,KAAK,eAC5BA,EAAO,oBAAsB,KAAK,qBAClCA,EAAO,cAAgB,KAAK,eAC5BA,EAAO,gBAAkB,KAAK,iBAAiB,OAAO5H,CAAI,EACtD,KAAK,iBAAmB,OAAM4H,EAAO,cAAgB,KAAK,eAAe,OAAO5H,CAAI,GACpF,KAAK,iBAAmB,OAC1B4H,EAAO,eAAiB,CACtB,OAAQA,EAAO,eAAe,OAAO,QAAQ,EAC7C,OAAQA,EAAO,eAAe,MAChC,GAEE,KAAK,cAAgB,OACvBA,EAAO,YAAc,CACnB,IAAKA,EAAO,YAAY,IAAI,QAAQ,EACpC,IAAKA,EAAO,YAAY,IAAI,QAAQ,CACtC,IAGJ,SAASwL,EAAUC,EAASC,EAAS,CACnC,OAAID,EAAQC,EAAQ,IAAI,IAAM,SAC5BD,EAAQC,EAAQ,IAAI,EAAIA,EAAQ,OAAOtT,CAAI,GAEtCsT,EAAQ,IACjB,CACA,GAAI,KAAK,QACH,KAAK,aACH,KAAK,WAAW,QAClB1L,EAAO,WAAa,KAAK,WAAW,OAAO,EAClC,KAAK,WAAW,YACzBA,EAAO,WAAa,KAAK,WAAW,OAAO5H,CAAI,EAAE,OAGjD,KAAK,aAAe,KAAK,YAAY,WAAa,KAAK,YAAY,wBAA0B,KAC/F4H,EAAO,YAAc,KAAK,YAAY,OAAO5H,CAAI,EAAE,cAE5C,KAAK,QAAU,KAAK,QAAU,KAAK,SAAU,CACtD4H,EAAO,SAAWwL,EAAUpT,EAAK,WAAY,KAAK,QAAQ,EAC1D,IAAMuT,EAAa,KAAK,SAAS,WACjC,GAAIA,IAAe,QAAUA,EAAW,SAAW,OAAQ,CACzD,IAAMC,EAASD,EAAW,OAC1B,GAAI,MAAM,QAAQC,CAAM,EACtB,QAAS5e,EAAI,EAAGC,EAAI2e,EAAO,OAAQ5e,EAAIC,EAAGD,IAAK,CAC7C,IAAM6e,EAAQD,EAAO5e,CAAC,EACtBwe,EAAUpT,EAAK,OAAQyT,CAAK,CAC9B,MAEAL,EAAUpT,EAAK,OAAQwT,CAAM,CAEjC,CACF,CASA,GARI,KAAK,gBACP5L,EAAO,SAAW,KAAK,SACvBA,EAAO,WAAa,KAAK,WAAW,QAAQ,EACxC,KAAK,WAAa,SACpBwL,EAAUpT,EAAK,UAAW,KAAK,QAAQ,EACvC4H,EAAO,SAAW,KAAK,SAAS,OAGhC,KAAK,WAAa,OACpB,GAAI,MAAM,QAAQ,KAAK,QAAQ,EAAG,CAChC,IAAM8L,EAAQ,CAAC,EACf,QAAS9e,EAAI,EAAGC,EAAI,KAAK,SAAS,OAAQD,EAAIC,EAAGD,IAC/C8e,EAAM,KAAKN,EAAUpT,EAAK,UAAW,KAAK,SAASpL,CAAC,CAAC,CAAC,EAExDgT,EAAO,SAAW8L,CACpB,MACE9L,EAAO,SAAWwL,EAAUpT,EAAK,UAAW,KAAK,QAAQ,EAG7D,GAAI,KAAK,SAAS,OAAS,EAAG,CAC5B4H,EAAO,SAAW,CAAC,EACnB,QAAShT,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,IACxCgT,EAAO,SAAS,KAAK,KAAK,SAAShT,CAAC,EAAE,OAAOoL,CAAI,EAAE,MAAM,CAE7D,CACA,GAAI,KAAK,WAAW,OAAS,EAAG,CAC9B4H,EAAO,WAAa,CAAC,EACrB,QAAShT,EAAI,EAAGA,EAAI,KAAK,WAAW,OAAQA,IAAK,CAC/C,IAAM+e,EAAY,KAAK,WAAW/e,CAAC,EACnCgT,EAAO,WAAW,KAAKwL,EAAUpT,EAAK,WAAY2T,CAAS,CAAC,CAC9D,CACF,CACA,GAAI1T,EAAc,CAChB,IAAM2T,EAAaC,EAAiB7T,EAAK,UAAU,EAC7C8T,EAAYD,EAAiB7T,EAAK,SAAS,EAC3C+T,EAAWF,EAAiB7T,EAAK,QAAQ,EACzCgU,EAASH,EAAiB7T,EAAK,MAAM,EACrCwT,EAASK,EAAiB7T,EAAK,MAAM,EACrCiU,EAAYJ,EAAiB7T,EAAK,SAAS,EAC3CkU,EAAaL,EAAiB7T,EAAK,UAAU,EAC7CmU,EAAQN,EAAiB7T,EAAK,KAAK,EACrC4T,EAAW,OAAS,IAAG1T,EAAO,WAAa0T,GAC3CE,EAAU,OAAS,IAAG5T,EAAO,UAAY4T,GACzCC,EAAS,OAAS,IAAG7T,EAAO,SAAW6T,GACvCC,EAAO,OAAS,IAAG9T,EAAO,OAAS8T,GACnCR,EAAO,OAAS,IAAGtT,EAAO,OAASsT,GACnCS,EAAU,OAAS,IAAG/T,EAAO,UAAY+T,GACzCC,EAAW,OAAS,IAAGhU,EAAO,WAAagU,GAC3CC,EAAM,OAAS,IAAGjU,EAAO,MAAQiU,EACvC,CACA,OAAAjU,EAAO,OAAS0H,EACT1H,EACP,SAAS2T,EAAiBO,EAAO,CAC/B,IAAMC,EAAS,CAAC,EAChB,QAAWC,KAAOF,EAAO,CACvB,IAAMtU,EAAOsU,EAAME,CAAG,EACtB,OAAOxU,EAAK,SACZuU,EAAO,KAAKvU,CAAI,CAClB,CACA,OAAOuU,CACT,CACF,CACA,MAAME,EAAW,CACf,OAAO,IAAI,KAAK,YAAY,EAAE,KAAK,KAAMA,CAAS,CACpD,CACA,KAAKzT,EAAQyT,EAAY,GAAM,CAoB7B,GAnBA,KAAK,KAAOzT,EAAO,KACnB,KAAK,GAAG,KAAKA,EAAO,EAAE,EACtB,KAAK,SAAS,KAAKA,EAAO,QAAQ,EAClC,KAAK,SAAS,MAAQA,EAAO,SAAS,MACtC,KAAK,WAAW,KAAKA,EAAO,UAAU,EACtC,KAAK,MAAM,KAAKA,EAAO,KAAK,EAC5B,KAAK,OAAO,KAAKA,EAAO,MAAM,EAC9B,KAAK,YAAY,KAAKA,EAAO,WAAW,EACxC,KAAK,iBAAmBA,EAAO,iBAC/B,KAAK,sBAAwBA,EAAO,sBACpC,KAAK,uBAAyBA,EAAO,uBACrC,KAAK,OAAO,KAAOA,EAAO,OAAO,KACjC,KAAK,QAAUA,EAAO,QACtB,KAAK,WAAaA,EAAO,WACzB,KAAK,cAAgBA,EAAO,cAC5B,KAAK,cAAgBA,EAAO,cAC5B,KAAK,YAAcA,EAAO,YAC1B,KAAK,WAAaA,EAAO,WAAW,MAAM,EAC1C,KAAK,SAAW,KAAK,MAAM,KAAK,UAAUA,EAAO,QAAQ,CAAC,EACtDyT,IAAc,GAChB,QAAS,EAAI,EAAG,EAAIzT,EAAO,SAAS,OAAQ,IAAK,CAC/C,IAAM0T,EAAQ1T,EAAO,SAAS,CAAC,EAC/B,KAAK,IAAI0T,EAAM,MAAM,CAAC,CACxB,CAEF,OAAO,IACT,CACF,EACAtrB,GAAS,WAA6B,IAAI+J,EAAQ,EAAG,EAAG,CAAC,EACzD/J,GAAS,2BAA6B,GACtCA,GAAS,iCAAmC,GAC5C,IAAIurB,GAAwB,IAAIxhB,EAC5ByhB,GAAwB,IAAIzhB,EAC5B0hB,GAAwB,IAAI1hB,EAC5B2hB,GAAwB,IAAI3hB,EAC5B4hB,GAAuB,IAAI5hB,EAC3B6hB,GAAuB,IAAI7hB,EAC3B8hB,GAAuB,IAAI9hB,EAC3B+hB,GAAuB,IAAI/hB,EAC3BgiB,GAAuB,IAAIhiB,EAC3BiiB,GAAuB,IAAIjiB,EAC3BkiB,GAAuB,IAAIjiB,GAC3BkiB,GAAuB,IAAIliB,GAC3BmiB,GAAuB,IAAIniB,GAC3BxB,GAAW,MAAM4jB,EAAU,CAC7B,YAAYtd,EAAI,IAAI/E,EAAWgF,EAAI,IAAIhF,EAAWiF,EAAI,IAAIjF,EAAW,CACnE,KAAK,EAAI+E,EACT,KAAK,EAAIC,EACT,KAAK,EAAIC,CACX,CACA,OAAO,UAAUF,EAAGC,EAAGC,EAAGqH,EAAQ,CAChCA,EAAO,WAAWrH,EAAGD,CAAC,EACtBwc,GAAM,WAAWzc,EAAGC,CAAC,EACrBsH,EAAO,MAAMkV,EAAK,EAClB,IAAMc,EAAiBhW,EAAO,SAAS,EACvC,OAAIgW,EAAiB,EACZhW,EAAO,eAAe,EAAI,KAAK,KAAKgW,CAAc,CAAC,EAErDhW,EAAO,IAAI,EAAG,EAAG,CAAC,CAC3B,CAGA,OAAO,aAAawI,EAAO/P,EAAGC,EAAGC,EAAGqH,EAAQ,CAC1CkV,GAAM,WAAWvc,EAAGF,CAAC,EACrB0c,GAAM,WAAWzc,EAAGD,CAAC,EACrB2c,GAAM,WAAW5M,EAAO/P,CAAC,EACzB,IAAMwd,EAAQf,GAAM,IAAIA,EAAK,EACvBgB,EAAQhB,GAAM,IAAIC,EAAK,EACvBgB,EAAQjB,GAAM,IAAIE,EAAK,EACvBgB,EAAQjB,GAAM,IAAIA,EAAK,EACvBkB,EAAQlB,GAAM,IAAIC,EAAK,EACvBkB,EAAQL,EAAQG,EAAQF,EAAQA,EACtC,GAAII,IAAU,EACZ,OAAAtW,EAAO,IAAI,EAAG,EAAG,CAAC,EACX,KAET,IAAMuW,EAAW,EAAID,EACftO,GAAKoO,EAAQD,EAAQD,EAAQG,GAASE,EACtC5c,GAAKsc,EAAQI,EAAQH,EAAQC,GAASI,EAC5C,OAAOvW,EAAO,IAAI,EAAIgI,EAAIrO,EAAGA,EAAGqO,CAAC,CACnC,CACA,OAAO,cAAcQ,EAAO/P,EAAGC,EAAGC,EAAG,CACnC,OAAI,KAAK,aAAa6P,EAAO/P,EAAGC,EAAGC,EAAG0c,EAAK,IAAM,KACxC,GAEFA,GAAM,GAAK,GAAKA,GAAM,GAAK,GAAKA,GAAM,EAAIA,GAAM,GAAK,CAC9D,CACA,OAAO,iBAAiB7M,EAAO0B,EAAIC,EAAIqM,EAAIpc,EAAIC,EAAIoc,EAAIzW,EAAQ,CAC7D,OAAI,KAAK,aAAawI,EAAO0B,EAAIC,EAAIqM,EAAInB,EAAK,IAAM,MAClDrV,EAAO,EAAI,EACXA,EAAO,EAAI,EACP,MAAOA,IAAQA,EAAO,EAAI,GAC1B,MAAOA,IAAQA,EAAO,EAAI,GACvB,OAETA,EAAO,UAAU,CAAC,EAClBA,EAAO,gBAAgB5F,EAAIib,GAAM,CAAC,EAClCrV,EAAO,gBAAgB3F,EAAIgb,GAAM,CAAC,EAClCrV,EAAO,gBAAgByW,EAAIpB,GAAM,CAAC,EAC3BrV,EACT,CACA,OAAO,yBAAyB0W,EAAMC,EAAIC,EAAIC,EAAIC,EAAW9W,EAAQ,CACnE,OAAA4V,GAAK,UAAU,CAAC,EAChBC,GAAK,UAAU,CAAC,EAChBC,GAAK,UAAU,CAAC,EAChBF,GAAK,oBAAoBc,EAAMC,CAAE,EACjCd,GAAK,oBAAoBa,EAAME,CAAE,EACjCd,GAAK,oBAAoBY,EAAMG,CAAE,EACjC7W,EAAO,UAAU,CAAC,EAClBA,EAAO,gBAAgB4V,GAAMkB,EAAU,CAAC,EACxC9W,EAAO,gBAAgB6V,GAAMiB,EAAU,CAAC,EACxC9W,EAAO,gBAAgB8V,GAAMgB,EAAU,CAAC,EACjC9W,CACT,CACA,OAAO,cAAcvH,EAAGC,EAAGC,EAAG0S,EAAW,CACvC,OAAA6J,GAAM,WAAWvc,EAAGD,CAAC,EACrByc,GAAM,WAAW1c,EAAGC,CAAC,EACdwc,GAAM,MAAMC,EAAK,EAAE,IAAI9J,CAAS,EAAI,CAC7C,CACA,IAAI5S,EAAGC,EAAGC,EAAG,CACX,YAAK,EAAE,KAAKF,CAAC,EACb,KAAK,EAAE,KAAKC,CAAC,EACb,KAAK,EAAE,KAAKC,CAAC,EACN,IACT,CACA,wBAAwBuP,EAAQ6O,EAAIJ,EAAIC,EAAI,CAC1C,YAAK,EAAE,KAAK1O,EAAO6O,CAAE,CAAC,EACtB,KAAK,EAAE,KAAK7O,EAAOyO,CAAE,CAAC,EACtB,KAAK,EAAE,KAAKzO,EAAO0O,CAAE,CAAC,EACf,IACT,CACA,2BAA2Brc,EAAWwc,EAAIJ,EAAIC,EAAI,CAChD,YAAK,EAAE,oBAAoBrc,EAAWwc,CAAE,EACxC,KAAK,EAAE,oBAAoBxc,EAAWoc,CAAE,EACxC,KAAK,EAAE,oBAAoBpc,EAAWqc,CAAE,EACjC,IACT,CACA,OAAQ,CACN,OAAO,IAAI,KAAK,YAAY,EAAE,KAAK,IAAI,CACzC,CACA,KAAK5N,EAAU,CACb,YAAK,EAAE,KAAKA,EAAS,CAAC,EACtB,KAAK,EAAE,KAAKA,EAAS,CAAC,EACtB,KAAK,EAAE,KAAKA,EAAS,CAAC,EACf,IACT,CACA,SAAU,CACR,OAAAkM,GAAM,WAAW,KAAK,EAAG,KAAK,CAAC,EAC/BC,GAAM,WAAW,KAAK,EAAG,KAAK,CAAC,EACxBD,GAAM,MAAMC,EAAK,EAAE,OAAO,EAAI,EACvC,CACA,YAAYnV,EAAQ,CAClB,OAAOA,EAAO,WAAW,KAAK,EAAG,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,eAAe,EAAI,CAAC,CAC3E,CACA,UAAUA,EAAQ,CAChB,OAAO+V,GAAU,UAAU,KAAK,EAAG,KAAK,EAAG,KAAK,EAAG/V,CAAM,CAC3D,CACA,SAASA,EAAQ,CACf,OAAOA,EAAO,sBAAsB,KAAK,EAAG,KAAK,EAAG,KAAK,CAAC,CAC5D,CACA,aAAawI,EAAOxI,EAAQ,CAC1B,OAAO+V,GAAU,aAAavN,EAAO,KAAK,EAAG,KAAK,EAAG,KAAK,EAAGxI,CAAM,CACrE,CACA,iBAAiBwI,EAAOpO,EAAIC,EAAIoc,EAAIzW,EAAQ,CAC1C,OAAO+V,GAAU,iBAAiBvN,EAAO,KAAK,EAAG,KAAK,EAAG,KAAK,EAAGpO,EAAIC,EAAIoc,EAAIzW,CAAM,CACrF,CACA,cAAcwI,EAAO,CACnB,OAAOuN,GAAU,cAAcvN,EAAO,KAAK,EAAG,KAAK,EAAG,KAAK,CAAC,CAC9D,CACA,cAAc6C,EAAW,CACvB,OAAO0K,GAAU,cAAc,KAAK,EAAG,KAAK,EAAG,KAAK,EAAG1K,CAAS,CAClE,CACA,cAAc9C,EAAK,CACjB,OAAOA,EAAI,mBAAmB,IAAI,CACpC,CACA,oBAAoBoJ,EAAG3R,EAAQ,CAC7B,IAAMvH,EAAI,KAAK,EAAGC,EAAI,KAAK,EAAGC,EAAI,KAAK,EACnCgB,EAAGgI,EACP2T,GAAK,WAAW5c,EAAGD,CAAC,EACpB8c,GAAK,WAAW5c,EAAGF,CAAC,EACpBgd,GAAK,WAAW9D,EAAGlZ,CAAC,EACpB,IAAM5C,EAAKyf,GAAK,IAAIG,EAAI,EAClB3f,EAAKyf,GAAK,IAAIE,EAAI,EACxB,GAAI5f,GAAM,GAAKC,GAAM,EACnB,OAAOkK,EAAO,KAAKvH,CAAC,EAEtBid,GAAK,WAAW/D,EAAGjZ,CAAC,EACpB,IAAM3C,EAAKuf,GAAK,IAAII,EAAI,EAClBsB,EAAKzB,GAAK,IAAIG,EAAI,EACxB,GAAI3f,GAAM,GAAKihB,GAAMjhB,EACnB,OAAOiK,EAAO,KAAKtH,CAAC,EAEtB,IAAMue,EAAKphB,EAAKmhB,EAAKjhB,EAAKD,EAC1B,GAAImhB,GAAM,GAAKphB,GAAM,GAAKE,GAAM,EAC9B,OAAA4D,EAAI9D,GAAMA,EAAKE,GACRiK,EAAO,KAAKvH,CAAC,EAAE,gBAAgB6c,GAAM3b,CAAC,EAE/Cgc,GAAK,WAAWhE,EAAGhZ,CAAC,EACpB,IAAMue,EAAK5B,GAAK,IAAIK,EAAI,EAClBwB,EAAK5B,GAAK,IAAII,EAAI,EACxB,GAAIwB,GAAM,GAAKD,GAAMC,EACnB,OAAOnX,EAAO,KAAKrH,CAAC,EAEtB,IAAMye,EAAKF,EAAKphB,EAAKD,EAAKshB,EAC1B,GAAIC,GAAM,GAAKthB,GAAM,GAAKqhB,GAAM,EAC9B,OAAAxV,EAAI7L,GAAMA,EAAKqhB,GACRnX,EAAO,KAAKvH,CAAC,EAAE,gBAAgB8c,GAAM5T,CAAC,EAE/C,IAAM0V,EAAKthB,EAAKohB,EAAKD,EAAKF,EAC1B,GAAIK,GAAM,GAAKL,EAAKjhB,GAAM,GAAKmhB,EAAKC,GAAM,EACxC,OAAA3B,GAAK,WAAW7c,EAAGD,CAAC,EACpBiJ,GAAKqV,EAAKjhB,IAAOihB,EAAKjhB,GAAMmhB,EAAKC,IAC1BnX,EAAO,KAAKtH,CAAC,EAAE,gBAAgB8c,GAAM7T,CAAC,EAE/C,IAAM2U,EAAQ,GAAKe,EAAKD,EAAKH,GAC7B,OAAAtd,EAAIyd,EAAKd,EACT3U,EAAIsV,EAAKX,EACFtW,EAAO,KAAKvH,CAAC,EAAE,gBAAgB6c,GAAM3b,CAAC,EAAE,gBAAgB4b,GAAM5T,CAAC,CACxE,CACA,OAAOqH,EAAU,CACf,OAAOA,EAAS,EAAE,OAAO,KAAK,CAAC,GAAKA,EAAS,EAAE,OAAO,KAAK,CAAC,GAAKA,EAAS,EAAE,OAAO,KAAK,CAAC,CAC3F,CACF,EACIsO,GAAiB,CACnB,UAAa,SACb,aAAgB,SAChB,KAAQ,MACR,WAAc,QACd,MAAS,SACT,MAAS,SACT,OAAU,SACV,MAAS,EACT,eAAkB,SAClB,KAAQ,IACR,WAAc,QACd,MAAS,SACT,UAAa,SACb,UAAa,QACb,WAAc,QACd,UAAa,SACb,MAAS,SACT,eAAkB,QAClB,SAAY,SACZ,QAAW,SACX,KAAQ,MACR,SAAY,IACZ,SAAY,MACZ,cAAiB,SACjB,SAAY,SACZ,UAAa,MACb,SAAY,SACZ,UAAa,SACb,YAAe,QACf,eAAkB,QAClB,WAAc,SACd,WAAc,SACd,QAAW,QACX,WAAc,SACd,aAAgB,QAChB,cAAiB,QACjB,cAAiB,QACjB,cAAiB,QACjB,cAAiB,MACjB,WAAc,QACd,SAAY,SACZ,YAAe,MACf,QAAW,QACX,QAAW,QACX,WAAc,QACd,UAAa,SACb,YAAe,SACf,YAAe,QACf,QAAW,SACX,UAAa,SACb,WAAc,SACd,KAAQ,SACR,UAAa,SACb,KAAQ,QACR,MAAS,MACT,YAAe,SACf,KAAQ,QACR,SAAY,SACZ,QAAW,SACX,UAAa,SACb,OAAU,QACV,MAAS,SACT,MAAS,SACT,SAAY,SACZ,cAAiB,SACjB,UAAa,QACb,aAAgB,SAChB,UAAa,SACb,WAAc,SACd,UAAa,SACb,qBAAwB,SACxB,UAAa,SACb,WAAc,QACd,UAAa,SACb,UAAa,SACb,YAAe,SACf,cAAiB,QACjB,aAAgB,QAChB,eAAkB,QAClB,eAAkB,QAClB,eAAkB,SAClB,YAAe,SACf,KAAQ,MACR,UAAa,QACb,MAAS,SACT,QAAW,SACX,OAAU,QACV,iBAAoB,QACpB,WAAc,IACd,aAAgB,SAChB,aAAgB,QAChB,eAAkB,QAClB,gBAAmB,QACnB,kBAAqB,MACrB,gBAAmB,QACnB,gBAAmB,SACnB,aAAgB,QAChB,UAAa,SACb,UAAa,SACb,SAAY,SACZ,YAAe,SACf,KAAQ,IACR,QAAW,SACX,MAAS,QACT,UAAa,QACb,OAAU,SACV,UAAa,SACb,OAAU,SACV,cAAiB,SACjB,UAAa,SACb,cAAiB,SACjB,cAAiB,SACjB,WAAc,SACd,UAAa,SACb,KAAQ,SACR,KAAQ,SACR,KAAQ,SACR,WAAc,SACd,OAAU,QACV,cAAiB,QACjB,IAAO,SACP,UAAa,SACb,UAAa,QACb,YAAe,QACf,OAAU,SACV,WAAc,SACd,SAAY,QACZ,SAAY,SACZ,OAAU,SACV,OAAU,SACV,QAAW,QACX,UAAa,QACb,UAAa,QACb,UAAa,QACb,KAAQ,SACR,YAAe,MACf,UAAa,QACb,IAAO,SACP,KAAQ,MACR,QAAW,SACX,OAAU,SACV,UAAa,QACb,OAAU,SACV,MAAS,SACT,MAAS,SACT,WAAc,SACd,OAAU,SACV,YAAe,QACjB,EACIC,GAAQ,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,EAC3BC,GAAQ,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,EAC/B,SAASC,GAAQ9F,EAAGnZ,EAAGxB,EAAG,CAGxB,OAFIA,EAAI,IAAGA,GAAK,GACZA,EAAI,IAAGA,GAAK,GACZA,EAAI,EAAI,EAAU2a,GAAKnZ,EAAImZ,GAAK,EAAI3a,EACpCA,EAAI,EAAI,EAAUwB,EAClBxB,EAAI,EAAI,EAAU2a,GAAKnZ,EAAImZ,GAAK,GAAK,EAAI,EAAI3a,GAC1C2a,CACT,CACA,IAAI5zB,GAAQ,KAAM,CAChB,YAAYyf,EAAGT,EAAGrE,EAAG,CACnB,YAAK,QAAU,GACf,KAAK,EAAI,EACT,KAAK,EAAI,EACT,KAAK,EAAI,EACF,KAAK,IAAI8E,EAAGT,EAAGrE,CAAC,CACzB,CACA,IAAI8E,EAAGT,EAAGrE,EAAG,CACX,GAAIqE,IAAM,QAAUrE,IAAM,OAAQ,CAChC,IAAMzC,EAAQuH,EACVvH,GAASA,EAAM,QACjB,KAAK,KAAKA,CAAK,EACN,OAAOA,GAAU,SAC1B,KAAK,OAAOA,CAAK,EACR,OAAOA,GAAU,UAC1B,KAAK,SAASA,CAAK,CAEvB,MACE,KAAK,OAAOuH,EAAGT,EAAGrE,CAAC,EAErB,OAAO,IACT,CACA,UAAUgB,EAAQ,CAChB,YAAK,EAAIA,EACT,KAAK,EAAIA,EACT,KAAK,EAAIA,EACF,IACT,CACA,OAAOge,EAAK/X,EAAatQ,GAAgB,CACvC,OAAAqoB,EAAM,KAAK,MAAMA,CAAG,EACpB,KAAK,GAAKA,GAAO,GAAK,KAAO,IAC7B,KAAK,GAAKA,GAAO,EAAI,KAAO,IAC5B,KAAK,GAAKA,EAAM,KAAO,IACvBz5B,GAAgB,oBAAoB,KAAM0hB,CAAU,EAC7C,IACT,CACA,OAAOnC,EAAGT,EAAGrE,EAAGiH,EAAa1hB,GAAgB,kBAAmB,CAC9D,YAAK,EAAIuf,EACT,KAAK,EAAIT,EACT,KAAK,EAAIrE,EACTza,GAAgB,oBAAoB,KAAM0hB,CAAU,EAC7C,IACT,CACA,OAAO3C,EAAGjF,EAAGzC,EAAGqK,EAAa1hB,GAAgB,kBAAmB,CAI9D,GAHA+e,EAAI5G,GAAgB4G,EAAG,CAAC,EACxBjF,EAAI/B,GAAM+B,EAAG,EAAG,CAAC,EACjBzC,EAAIU,GAAMV,EAAG,EAAG,CAAC,EACbyC,IAAM,EACR,KAAK,EAAI,KAAK,EAAI,KAAK,EAAIzC,MACtB,CACL,IAAMqc,EAAIrc,GAAK,GAAMA,GAAK,EAAIyC,GAAKzC,EAAIyC,EAAIzC,EAAIyC,EACzCS,EAAI,EAAIlD,EAAIqc,EAClB,KAAK,EAAI8F,GAAQjf,EAAGmZ,EAAG3U,EAAI,EAAI,CAAC,EAChC,KAAK,EAAIya,GAAQjf,EAAGmZ,EAAG3U,CAAC,EACxB,KAAK,EAAIya,GAAQjf,EAAGmZ,EAAG3U,EAAI,EAAI,CAAC,CAClC,CACA,OAAA/e,GAAgB,oBAAoB,KAAM0hB,CAAU,EAC7C,IACT,CACA,SAASgY,EAAOhY,EAAatQ,GAAgB,CAC3C,SAASuoB,EAAYC,EAAQ,CACvBA,IAAW,QACX,WAAWA,CAAM,EAAI,GACvB,QAAQ,KAAK,mCAAqCF,EAAQ,mBAAmB,CAEjF,CACA,IAAIrhB,EACJ,GAAIA,EAAI,qBAAqB,KAAKqhB,CAAK,EAAG,CACxC,IAAIlY,EACElB,EAAOjI,EAAE,CAAC,EACVwhB,EAAaxhB,EAAE,CAAC,EACtB,OAAQiI,EAAM,CACZ,IAAK,MACL,IAAK,OACH,GAAIkB,EAAQ,+DAA+D,KAAKqY,CAAU,EACxF,OAAAF,EAAYnY,EAAM,CAAC,CAAC,EACb,KAAK,OACV,KAAK,IAAI,IAAK,SAASA,EAAM,CAAC,EAAG,EAAE,CAAC,EAAI,IACxC,KAAK,IAAI,IAAK,SAASA,EAAM,CAAC,EAAG,EAAE,CAAC,EAAI,IACxC,KAAK,IAAI,IAAK,SAASA,EAAM,CAAC,EAAG,EAAE,CAAC,EAAI,IACxCE,CACF,EAEF,GAAIF,EAAQ,qEAAqE,KAAKqY,CAAU,EAC9F,OAAAF,EAAYnY,EAAM,CAAC,CAAC,EACb,KAAK,OACV,KAAK,IAAI,IAAK,SAASA,EAAM,CAAC,EAAG,EAAE,CAAC,EAAI,IACxC,KAAK,IAAI,IAAK,SAASA,EAAM,CAAC,EAAG,EAAE,CAAC,EAAI,IACxC,KAAK,IAAI,IAAK,SAASA,EAAM,CAAC,EAAG,EAAE,CAAC,EAAI,IACxCE,CACF,EAEF,MACF,IAAK,MACL,IAAK,OACH,GAAIF,EAAQ,qFAAqF,KAAKqY,CAAU,EAC9G,OAAAF,EAAYnY,EAAM,CAAC,CAAC,EACb,KAAK,OACV,WAAWA,EAAM,CAAC,CAAC,EAAI,IACvB,WAAWA,EAAM,CAAC,CAAC,EAAI,IACvB,WAAWA,EAAM,CAAC,CAAC,EAAI,IACvBE,CACF,EAEF,MACF,QACE,QAAQ,KAAK,oCAAsCgY,CAAK,CAC5D,CACF,SAAWrhB,EAAI,oBAAoB,KAAKqhB,CAAK,EAAG,CAC9C,IAAMD,EAAMphB,EAAE,CAAC,EACT6R,EAAOuP,EAAI,OACjB,GAAIvP,IAAS,EACX,OAAO,KAAK,OACV,SAASuP,EAAI,OAAO,CAAC,EAAG,EAAE,EAAI,GAC9B,SAASA,EAAI,OAAO,CAAC,EAAG,EAAE,EAAI,GAC9B,SAASA,EAAI,OAAO,CAAC,EAAG,EAAE,EAAI,GAC9B/X,CACF,EACK,GAAIwI,IAAS,EAClB,OAAO,KAAK,OAAO,SAASuP,EAAK,EAAE,EAAG/X,CAAU,EAEhD,QAAQ,KAAK,kCAAoCgY,CAAK,CAE1D,SAAWA,GAASA,EAAM,OAAS,EACjC,OAAO,KAAK,aAAaA,EAAOhY,CAAU,EAE5C,OAAO,IACT,CACA,aAAagY,EAAOhY,EAAatQ,GAAgB,CAC/C,IAAMqoB,EAAMJ,GAAeK,EAAM,YAAY,CAAC,EAC9C,OAAID,IAAQ,OACV,KAAK,OAAOA,EAAK/X,CAAU,EAE3B,QAAQ,KAAK,8BAAgCgY,CAAK,EAE7C,IACT,CACA,OAAQ,CACN,OAAO,IAAI,KAAK,YAAY,KAAK,EAAG,KAAK,EAAG,KAAK,CAAC,CACpD,CACA,KAAKlY,EAAO,CACV,YAAK,EAAIA,EAAM,EACf,KAAK,EAAIA,EAAM,EACf,KAAK,EAAIA,EAAM,EACR,IACT,CACA,iBAAiBA,EAAO,CACtB,YAAK,EAAIQ,GAAaR,EAAM,CAAC,EAC7B,KAAK,EAAIQ,GAAaR,EAAM,CAAC,EAC7B,KAAK,EAAIQ,GAAaR,EAAM,CAAC,EACtB,IACT,CACA,iBAAiBA,EAAO,CACtB,YAAK,EAAIS,GAAaT,EAAM,CAAC,EAC7B,KAAK,EAAIS,GAAaT,EAAM,CAAC,EAC7B,KAAK,EAAIS,GAAaT,EAAM,CAAC,EACtB,IACT,CACA,qBAAsB,CACpB,YAAK,iBAAiB,IAAI,EACnB,IACT,CACA,qBAAsB,CACpB,YAAK,iBAAiB,IAAI,EACnB,IACT,CACA,OAAOE,EAAatQ,GAAgB,CAClC,OAAApR,GAAgB,sBAAsB85B,GAAO,KAAK,IAAI,EAAGpY,CAAU,EAC5D,KAAK,MAAM3J,GAAM+hB,GAAO,EAAI,IAAK,EAAG,GAAG,CAAC,EAAI,MAAQ,KAAK,MAAM/hB,GAAM+hB,GAAO,EAAI,IAAK,EAAG,GAAG,CAAC,EAAI,IAAM,KAAK,MAAM/hB,GAAM+hB,GAAO,EAAI,IAAK,EAAG,GAAG,CAAC,CACvJ,CACA,aAAapY,EAAatQ,GAAgB,CACxC,OAAQ,SAAW,KAAK,OAAOsQ,CAAU,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CACnE,CACA,OAAOK,EAAQL,EAAa1hB,GAAgB,kBAAmB,CAC7DA,GAAgB,sBAAsB85B,GAAO,KAAK,IAAI,EAAGpY,CAAU,EACnE,IAAMnC,EAAIua,GAAO,EAAGhb,EAAIgb,GAAO,EAAGrf,EAAIqf,GAAO,EACvC5hB,EAAM,KAAK,IAAIqH,EAAGT,EAAGrE,CAAC,EACtBxC,EAAM,KAAK,IAAIsH,EAAGT,EAAGrE,CAAC,EACxBsf,EAAKC,EACHC,GAAahiB,EAAMC,GAAO,EAChC,GAAID,IAAQC,EACV6hB,EAAM,EACNC,EAAa,MACR,CACL,IAAMrN,EAAQzU,EAAMD,EAEpB,OADA+hB,EAAaC,GAAa,GAAMtN,GAASzU,EAAMD,GAAO0U,GAAS,EAAIzU,EAAMD,GACjEC,EAAK,CACX,KAAKqH,EACHwa,GAAOjb,EAAIrE,GAAKkS,GAAS7N,EAAIrE,EAAI,EAAI,GACrC,MACF,KAAKqE,EACHib,GAAOtf,EAAI8E,GAAKoN,EAAQ,EACxB,MACF,KAAKlS,EACHsf,GAAOxa,EAAIT,GAAK6N,EAAQ,EACxB,KACJ,CACAoN,GAAO,CACT,CACA,OAAAhY,EAAO,EAAIgY,EACXhY,EAAO,EAAIiY,EACXjY,EAAO,EAAIkY,EACJlY,CACT,CACA,OAAOA,EAAQL,EAAa1hB,GAAgB,kBAAmB,CAC7D,OAAAA,GAAgB,sBAAsB85B,GAAO,KAAK,IAAI,EAAGpY,CAAU,EACnEK,EAAO,EAAI+X,GAAO,EAClB/X,EAAO,EAAI+X,GAAO,EAClB/X,EAAO,EAAI+X,GAAO,EACX/X,CACT,CACA,SAASL,EAAatQ,GAAgB,CACpCpR,GAAgB,sBAAsB85B,GAAO,KAAK,IAAI,EAAGpY,CAAU,EACnE,IAAMnC,EAAIua,GAAO,EAAGhb,EAAIgb,GAAO,EAAGrf,EAAIqf,GAAO,EAC7C,OAAIpY,IAAetQ,GACV,SAASsQ,CAAU,IAAInC,EAAE,QAAQ,CAAC,CAAC,IAAIT,EAAE,QAAQ,CAAC,CAAC,IAAIrE,EAAE,QAAQ,CAAC,CAAC,IAErE,OAAO,KAAK,MAAM8E,EAAI,GAAG,CAAC,IAAI,KAAK,MAAMT,EAAI,GAAG,CAAC,IAAI,KAAK,MAAMrE,EAAI,GAAG,CAAC,GACjF,CACA,UAAUsE,EAAGjF,EAAGzC,EAAG,CACjB,YAAK,OAAOiiB,EAAK,EACV,KAAK,OAAOA,GAAM,EAAIva,EAAGua,GAAM,EAAIxf,EAAGwf,GAAM,EAAIjiB,CAAC,CAC1D,CACA,IAAImK,EAAO,CACT,YAAK,GAAKA,EAAM,EAChB,KAAK,GAAKA,EAAM,EAChB,KAAK,GAAKA,EAAM,EACT,IACT,CACA,UAAU0Y,EAAQC,EAAQ,CACxB,YAAK,EAAID,EAAO,EAAIC,EAAO,EAC3B,KAAK,EAAID,EAAO,EAAIC,EAAO,EAC3B,KAAK,EAAID,EAAO,EAAIC,EAAO,EACpB,IACT,CACA,UAAUrgB,EAAG,CACX,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IACT,CACA,IAAI0H,EAAO,CACT,YAAK,EAAI,KAAK,IAAI,EAAG,KAAK,EAAIA,EAAM,CAAC,EACrC,KAAK,EAAI,KAAK,IAAI,EAAG,KAAK,EAAIA,EAAM,CAAC,EACrC,KAAK,EAAI,KAAK,IAAI,EAAG,KAAK,EAAIA,EAAM,CAAC,EAC9B,IACT,CACA,SAASA,EAAO,CACd,YAAK,GAAKA,EAAM,EAChB,KAAK,GAAKA,EAAM,EAChB,KAAK,GAAKA,EAAM,EACT,IACT,CACA,eAAe1H,EAAG,CAChB,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACH,IACT,CACA,KAAK0H,EAAOtF,EAAO,CACjB,YAAK,IAAMsF,EAAM,EAAI,KAAK,GAAKtF,EAC/B,KAAK,IAAMsF,EAAM,EAAI,KAAK,GAAKtF,EAC/B,KAAK,IAAMsF,EAAM,EAAI,KAAK,GAAKtF,EACxB,IACT,CACA,WAAWge,EAAQC,EAAQje,EAAO,CAChC,YAAK,EAAIge,EAAO,GAAKC,EAAO,EAAID,EAAO,GAAKhe,EAC5C,KAAK,EAAIge,EAAO,GAAKC,EAAO,EAAID,EAAO,GAAKhe,EAC5C,KAAK,EAAIge,EAAO,GAAKC,EAAO,EAAID,EAAO,GAAKhe,EACrC,IACT,CACA,QAAQsF,EAAOtF,EAAO,CACpB,KAAK,OAAOod,EAAK,EACjB9X,EAAM,OAAO+X,EAAK,EAClB,IAAMxa,EAAIjG,GAAKwgB,GAAM,EAAGC,GAAM,EAAGrd,CAAK,EAChCpC,EAAIhB,GAAKwgB,GAAM,EAAGC,GAAM,EAAGrd,CAAK,EAChC7E,EAAIyB,GAAKwgB,GAAM,EAAGC,GAAM,EAAGrd,CAAK,EACtC,YAAK,OAAO6C,EAAGjF,EAAGzC,CAAC,EACZ,IACT,CACA,eAAeqE,EAAG,CAChB,YAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EACJ,IACT,CACA,aAAarD,EAAG,CACd,IAAMkH,EAAI,KAAK,EAAGT,EAAI,KAAK,EAAGrE,EAAI,KAAK,EACjCkB,EAAItD,EAAE,SACZ,YAAK,EAAIsD,EAAE,CAAC,EAAI4D,EAAI5D,EAAE,CAAC,EAAImD,EAAInD,EAAE,CAAC,EAAIlB,EACtC,KAAK,EAAIkB,EAAE,CAAC,EAAI4D,EAAI5D,EAAE,CAAC,EAAImD,EAAInD,EAAE,CAAC,EAAIlB,EACtC,KAAK,EAAIkB,EAAE,CAAC,EAAI4D,EAAI5D,EAAE,CAAC,EAAImD,EAAInD,EAAE,CAAC,EAAIlB,EAC/B,IACT,CACA,OAAOC,EAAG,CACR,OAAOA,EAAE,IAAM,KAAK,GAAKA,EAAE,IAAM,KAAK,GAAKA,EAAE,IAAM,KAAK,CAC1D,CACA,UAAUvD,EAAOkF,EAAS,EAAG,CAC3B,YAAK,EAAIlF,EAAMkF,CAAM,EACrB,KAAK,EAAIlF,EAAMkF,EAAS,CAAC,EACzB,KAAK,EAAIlF,EAAMkF,EAAS,CAAC,EAClB,IACT,CACA,QAAQlF,EAAQ,CAAC,EAAGkF,EAAS,EAAG,CAC9B,OAAAlF,EAAMkF,CAAM,EAAI,KAAK,EACrBlF,EAAMkF,EAAS,CAAC,EAAI,KAAK,EACzBlF,EAAMkF,EAAS,CAAC,EAAI,KAAK,EAClBlF,CACT,CACA,oBAAoBmF,EAAWrF,EAAO,CACpC,YAAK,EAAIqF,EAAU,KAAKrF,CAAK,EAC7B,KAAK,EAAIqF,EAAU,KAAKrF,CAAK,EAC7B,KAAK,EAAIqF,EAAU,KAAKrF,CAAK,EACtB,IACT,CACA,QAAS,CACP,OAAO,KAAK,OAAO,CACrB,CACA,EAAE,OAAO,QAAQ,GAAI,CACnB,MAAM,KAAK,EACX,MAAM,KAAK,EACX,MAAM,KAAK,CACb,CACF,EACI6iB,GAAyB,IAAIh6B,GACjCA,GAAM,MAAQu5B,GACd,IAAIe,GAAc,EACdnxB,GAAW,cAActF,EAAgB,CAC3C,aAAc,CACZ,MAAM,EACN,KAAK,WAAa,GAClB,OAAO,eAAe,KAAM,KAAM,CAAE,MAAOy2B,IAAc,CAAC,EAC1D,KAAK,KAAO1iB,GAAa,EACzB,KAAK,KAAO,GACZ,KAAK,KAAO,WACZ,KAAK,SAAWrM,GAChB,KAAK,KAAOjH,GACZ,KAAK,aAAe,GACpB,KAAK,QAAU,EACf,KAAK,YAAc,GACnB,KAAK,UAAY,GACjB,KAAK,SAAWyO,GAChB,KAAK,SAAW1G,GAChB,KAAK,cAAgBxP,GACrB,KAAK,cAAgB,KACrB,KAAK,cAAgB,KACrB,KAAK,mBAAqB,KAC1B,KAAK,WAAa,IAAImD,GAAM,EAAG,EAAG,CAAC,EACnC,KAAK,WAAa,EAClB,KAAK,UAAYmH,GACjB,KAAK,UAAY,GACjB,KAAK,WAAa,GAClB,KAAK,iBAAmB,IACxB,KAAK,YAAc9J,GACnB,KAAK,WAAa,EAClB,KAAK,gBAAkB,IACvB,KAAK,YAAcsJ,GACnB,KAAK,aAAeA,GACpB,KAAK,aAAeA,GACpB,KAAK,aAAe,GACpB,KAAK,eAAiB,KACtB,KAAK,iBAAmB,GACxB,KAAK,YAAc,GACnB,KAAK,WAAa,KAClB,KAAK,WAAa,GAClB,KAAK,UAAY,KACjB,KAAK,cAAgB,GACrB,KAAK,oBAAsB,EAC3B,KAAK,mBAAqB,EAC1B,KAAK,UAAY,GACjB,KAAK,gBAAkB,GACvB,KAAK,mBAAqB,GAC1B,KAAK,gBAAkB,GACvB,KAAK,QAAU,GACf,KAAK,WAAa,GAClB,KAAK,SAAW,CAAC,EACjB,KAAK,QAAU,EACf,KAAK,WAAa,CACpB,CACA,IAAI,WAAY,CACd,OAAO,KAAK,UACd,CACA,IAAI,UAAUuR,EAAO,CACf,KAAK,WAAa,GAAMA,EAAQ,GAClC,KAAK,UAEP,KAAK,WAAaA,CACpB,CAEA,gBAAiB,CACjB,CACA,iBAAkB,CAClB,CACA,uBAAwB,CACtB,OAAO,KAAK,gBAAgB,SAAS,CACvC,CACA,UAAU6e,EAAQ,CAChB,GAAIA,IAAW,OACf,QAAWC,KAAOD,EAAQ,CACxB,IAAMwD,EAAWxD,EAAOC,CAAG,EAC3B,GAAIuD,IAAa,OAAQ,CACvB,QAAQ,KAAK,8BAA8BvD,CAAG,2BAA2B,EACzE,QACF,CACA,IAAMwD,EAAe,KAAKxD,CAAG,EAC7B,GAAIwD,IAAiB,OAAQ,CAC3B,QAAQ,KAAK,oBAAoBxD,CAAG,gCAAgC,KAAK,IAAI,GAAG,EAChF,QACF,CACIwD,GAAgBA,EAAa,QAC/BA,EAAa,IAAID,CAAQ,EAChBC,GAAgBA,EAAa,WAAcD,GAAYA,EAAS,UACzEC,EAAa,KAAKD,CAAQ,EAE1B,KAAKvD,CAAG,EAAIuD,CAEhB,CACF,CACA,OAAO7X,EAAM,CACX,IAAMC,EAAeD,IAAS,QAAU,OAAOA,GAAS,SACpDC,IACFD,EAAO,CACL,SAAU,CAAC,EACX,OAAQ,CAAC,CACX,GAEF,IAAMF,EAAO,CACX,SAAU,CACR,QAAS,IACT,KAAM,WACN,UAAW,iBACb,CACF,EACAA,EAAK,KAAO,KAAK,KACjBA,EAAK,KAAO,KAAK,KACb,KAAK,OAAS,KAAIA,EAAK,KAAO,KAAK,MACnC,KAAK,OAAS,KAAK,MAAM,UAASA,EAAK,MAAQ,KAAK,MAAM,OAAO,GACjE,KAAK,YAAc,SAAQA,EAAK,UAAY,KAAK,WACjD,KAAK,YAAc,SAAQA,EAAK,UAAY,KAAK,WACjD,KAAK,QAAU,SAAQA,EAAK,MAAQ,KAAK,OACzC,KAAK,YAAc,KAAK,WAAW,UAASA,EAAK,WAAa,KAAK,WAAW,OAAO,GACrF,KAAK,iBAAmB,SAAQA,EAAK,eAAiB,KAAK,gBAC3D,KAAK,UAAY,KAAK,SAAS,UAASA,EAAK,SAAW,KAAK,SAAS,OAAO,GAC7E,KAAK,oBAAsB,QAAU,KAAK,oBAAsB,IAAGA,EAAK,kBAAoB,KAAK,mBACjG,KAAK,UAAY,KAAK,SAAS,UAASA,EAAK,SAAW,KAAK,SAAS,OAAO,GAC7E,KAAK,oBAAsB,SAAQA,EAAK,kBAAoB,KAAK,mBACjE,KAAK,eAAiB,KAAK,cAAc,UAASA,EAAK,cAAgB,KAAK,cAAc,OAAO,GACjG,KAAK,YAAc,SAAQA,EAAK,UAAY,KAAK,WACjD,KAAK,YAAc,SAAQA,EAAK,UAAY,KAAK,WACjD,KAAK,qBAAuB,SAAQA,EAAK,mBAAqB,KAAK,oBACnE,KAAK,cAAgB,KAAK,aAAa,YACzCA,EAAK,aAAe,KAAK,aAAa,OAAOE,CAAI,EAAE,MAEjD,KAAK,uBAAyB,KAAK,sBAAsB,YAC3DF,EAAK,sBAAwB,KAAK,sBAAsB,OAAOE,CAAI,EAAE,MAEnE,KAAK,oBAAsB,KAAK,mBAAmB,YACrDF,EAAK,mBAAqB,KAAK,mBAAmB,OAAOE,CAAI,EAAE,KAC/DF,EAAK,qBAAuB,KAAK,qBAAqB,QAAQ,GAE5D,KAAK,aAAe,SAAQA,EAAK,WAAa,KAAK,YACnD,KAAK,cAAgB,SAAQA,EAAK,YAAc,KAAK,aACrD,KAAK,iBAAmB,SAAQA,EAAK,eAAiB,KAAK,gBAC3D,KAAK,4BAA8B,SAAQA,EAAK,0BAA4B,KAAK,2BACjF,KAAK,gBAAkB,KAAK,eAAe,YAC7CA,EAAK,eAAiB,KAAK,eAAe,OAAOE,CAAI,EAAE,MAErD,KAAK,yBAA2B,KAAK,wBAAwB,YAC/DF,EAAK,wBAA0B,KAAK,wBAAwB,OAAOE,CAAI,EAAE,MAEvE,KAAK,aAAe,SAAQF,EAAK,WAAa,KAAK,YACnD,KAAK,qBAAuB,SAAQA,EAAK,mBAAqB,KAAK,oBACnE,KAAK,eAAiB,KAAK,cAAc,YAC3CA,EAAK,cAAgB,KAAK,cAAc,OAAOE,CAAI,EAAE,MAEnD,KAAK,KAAO,KAAK,IAAI,YAAWF,EAAK,IAAM,KAAK,IAAI,OAAOE,CAAI,EAAE,MACjE,KAAK,QAAU,KAAK,OAAO,YAAWF,EAAK,OAAS,KAAK,OAAO,OAAOE,CAAI,EAAE,MAC7E,KAAK,UAAY,KAAK,SAAS,YAAWF,EAAK,SAAW,KAAK,SAAS,OAAOE,CAAI,EAAE,MACrF,KAAK,UAAY,KAAK,SAAS,YACjCF,EAAK,SAAW,KAAK,SAAS,OAAOE,CAAI,EAAE,KAC3CF,EAAK,kBAAoB,KAAK,mBAE5B,KAAK,OAAS,KAAK,MAAM,YAC3BA,EAAK,MAAQ,KAAK,MAAM,OAAOE,CAAI,EAAE,KACrCF,EAAK,eAAiB,KAAK,gBAEzB,KAAK,SAAW,KAAK,QAAQ,YAC/BA,EAAK,QAAU,KAAK,QAAQ,OAAOE,CAAI,EAAE,KACzCF,EAAK,UAAY,KAAK,WAEpB,KAAK,WAAa,KAAK,UAAU,YACnCA,EAAK,UAAY,KAAK,UAAU,OAAOE,CAAI,EAAE,KAC7CF,EAAK,cAAgB,KAAK,cAC1BA,EAAK,YAAc,KAAK,YAAY,QAAQ,GAE1C,KAAK,iBAAmB,KAAK,gBAAgB,YAC/CA,EAAK,gBAAkB,KAAK,gBAAgB,OAAOE,CAAI,EAAE,KACzDF,EAAK,kBAAoB,KAAK,kBAC9BA,EAAK,iBAAmB,KAAK,kBAE3B,KAAK,cAAgB,KAAK,aAAa,YAAWA,EAAK,aAAe,KAAK,aAAa,OAAOE,CAAI,EAAE,MACrG,KAAK,cAAgB,KAAK,aAAa,YAAWF,EAAK,aAAe,KAAK,aAAa,OAAOE,CAAI,EAAE,MACrG,KAAK,aAAe,KAAK,YAAY,YAAWF,EAAK,YAAc,KAAK,YAAY,OAAOE,CAAI,EAAE,MACjG,KAAK,aAAe,KAAK,YAAY,YAAWF,EAAK,YAAc,KAAK,YAAY,OAAOE,CAAI,EAAE,MACjG,KAAK,sBAAwB,KAAK,qBAAqB,YAAWF,EAAK,qBAAuB,KAAK,qBAAqB,OAAOE,CAAI,EAAE,MACrI,KAAK,kBAAoB,KAAK,iBAAiB,YAAWF,EAAK,iBAAmB,KAAK,iBAAiB,OAAOE,CAAI,EAAE,MACrH,KAAK,QAAU,KAAK,OAAO,YAC7BF,EAAK,OAAS,KAAK,OAAO,OAAOE,CAAI,EAAE,KACnC,KAAK,UAAY,SAAQF,EAAK,QAAU,KAAK,UAE/C,KAAK,iBAAmB,SAAQA,EAAK,eAAiB,KAAK,eAAe,QAAQ,GAClF,KAAK,kBAAoB,SAAQA,EAAK,gBAAkB,KAAK,iBAC7D,KAAK,eAAiB,SAAQA,EAAK,aAAe,KAAK,cACvD,KAAK,kBAAoB,SAAQA,EAAK,gBAAkB,KAAK,iBAC7D,KAAK,aAAe,KAAK,YAAY,YACvCA,EAAK,YAAc,KAAK,YAAY,OAAOE,CAAI,EAAE,MAE/C,KAAK,eAAiB,SAAQF,EAAK,aAAe,KAAK,cACvD,KAAK,iBAAmB,KAAK,gBAAgB,YAAWA,EAAK,gBAAkB,KAAK,gBAAgB,OAAOE,CAAI,EAAE,MACjH,KAAK,YAAc,SAAQF,EAAK,UAAY,KAAK,WACjD,KAAK,cAAgB,KAAK,aAAa,YAAWA,EAAK,aAAe,KAAK,aAAa,OAAOE,CAAI,EAAE,MACrG,KAAK,sBAAwB,QAAU,KAAK,sBAAwB,MAAUF,EAAK,oBAAsB,KAAK,qBAC9G,KAAK,mBAAqB,SAAQA,EAAK,iBAAmB,KAAK,iBAAiB,OAAO,GACvF,KAAK,OAAS,SAAQA,EAAK,KAAO,KAAK,MACvC,KAAK,aAAe,OAAMA,EAAK,WAAa,KAAK,YACjD,KAAK,kBAAoB,SAAQA,EAAK,gBAAkB,KAAK,iBAC7D,KAAK,WAAajX,KAAgBiX,EAAK,SAAW,KAAK,UACvD,KAAK,OAASle,KAAWke,EAAK,KAAO,KAAK,MAC1C,KAAK,eAAiB,KAAMA,EAAK,aAAe,IAChD,KAAK,QAAU,IAAGA,EAAK,QAAU,KAAK,SACtC,KAAK,cAAgB,KAAMA,EAAK,YAAc,IAC9C,KAAK,WAAazP,KAAgByP,EAAK,SAAW,KAAK,UACvD,KAAK,WAAanW,KAAwBmW,EAAK,SAAW,KAAK,UAC/D,KAAK,gBAAkB3lB,KAAa2lB,EAAK,cAAgB,KAAK,eAC9D,KAAK,gBAAkB,OAAMA,EAAK,cAAgB,KAAK,eACvD,KAAK,gBAAkB,OAAMA,EAAK,cAAgB,KAAK,eACvD,KAAK,qBAAuB,OAAMA,EAAK,mBAAqB,KAAK,oBACjE,KAAK,YAAc,KAAK,WAAW,UAASA,EAAK,WAAa,KAAK,WAAW,OAAO,GACrF,KAAK,aAAe,IAAGA,EAAK,WAAa,KAAK,YAC9C,KAAK,YAAcrb,KAAgBqb,EAAK,UAAY,KAAK,WACzD,KAAK,YAAc,KAAOA,EAAK,UAAY,KAAK,WAChD,KAAK,aAAe,KAAOA,EAAK,WAAa,KAAK,YAClD,KAAK,aAAe,KAAOA,EAAK,WAAa,KAAK,YAClD,KAAK,mBAAqB,MAAKA,EAAK,iBAAmB,KAAK,kBAC5D,KAAK,cAAgBnlB,KAAmBmlB,EAAK,YAAc,KAAK,aAChE,KAAK,aAAe,IAAGA,EAAK,WAAa,KAAK,YAC9C,KAAK,kBAAoB,MAAKA,EAAK,gBAAkB,KAAK,iBAC1D,KAAK,cAAgB7b,KAAe6b,EAAK,YAAc,KAAK,aAC5D,KAAK,eAAiB7b,KAAe6b,EAAK,aAAe,KAAK,cAC9D,KAAK,eAAiB7b,KAAe6b,EAAK,aAAe,KAAK,cAC9D,KAAK,eAAiB,KAAMA,EAAK,aAAe,KAAK,cACrD,KAAK,WAAa,QAAU,KAAK,WAAa,IAAGA,EAAK,SAAW,KAAK,UACtE,KAAK,gBAAkB,KAAMA,EAAK,cAAgB,IAClD,KAAK,sBAAwB,IAAGA,EAAK,oBAAsB,KAAK,qBAChE,KAAK,qBAAuB,IAAGA,EAAK,mBAAqB,KAAK,oBAC9D,KAAK,YAAc,QAAU,KAAK,YAAc,IAAGA,EAAK,UAAY,KAAK,WACzE,KAAK,WAAa,SAAQA,EAAK,SAAW,KAAK,UAC/C,KAAK,UAAY,SAAQA,EAAK,QAAU,KAAK,SAC7C,KAAK,QAAU,SAAQA,EAAK,MAAQ,KAAK,OACzC,KAAK,YAAc,KAAMA,EAAK,UAAY,IAC1C,KAAK,UAAY,IAAGA,EAAK,UAAY,KAAK,WAC1C,KAAK,YAAc,KAAMA,EAAK,UAAY,IAC1C,KAAK,kBAAoB,KAAMA,EAAK,gBAAkB,IACtD,KAAK,qBAAuB,KAAMA,EAAK,mBAAqB,IAC5D,KAAK,kBAAoB,KAAMA,EAAK,gBAAkB,IACtD,KAAK,YAAc,KAAMA,EAAK,UAAY,IAC1C,KAAK,mBAAqB,IAAGA,EAAK,mBAAqB,KAAK,oBAC5D,KAAK,mBAAqB,UAASA,EAAK,iBAAmB,KAAK,kBAChE,KAAK,oBAAsB,UAASA,EAAK,kBAAoB,KAAK,mBAClE,KAAK,cAAgB,KAAMA,EAAK,YAAc,IAC9C,KAAK,UAAY,KAAOA,EAAK,QAAU,IACvC,KAAK,aAAe,KAAOA,EAAK,WAAa,IAC7C,KAAK,MAAQ,KAAOA,EAAK,IAAM,IAC/B,OAAO,KAAK,KAAK,QAAQ,EAAE,OAAS,IAAGA,EAAK,SAAW,KAAK,UAChE,SAAS+T,EAAiBO,EAAO,CAC/B,IAAMC,EAAS,CAAC,EAChB,QAAWC,KAAOF,EAAO,CACvB,IAAM2D,EAAQ3D,EAAME,CAAG,EACvB,OAAOyD,EAAM,SACb1D,EAAO,KAAK0D,CAAK,CACnB,CACA,OAAO1D,CACT,CACA,GAAIpU,EAAc,CAChB,IAAM8T,EAAWF,EAAiB7T,EAAK,QAAQ,EACzCgU,EAASH,EAAiB7T,EAAK,MAAM,EACvC+T,EAAS,OAAS,IAAGjU,EAAK,SAAWiU,GACrCC,EAAO,OAAS,IAAGlU,EAAK,OAASkU,EACvC,CACA,OAAOlU,CACT,CACA,OAAQ,CACN,OAAO,IAAI,KAAK,YAAY,EAAE,KAAK,IAAI,CACzC,CACA,KAAKgB,EAAQ,CACX,KAAK,KAAOA,EAAO,KACnB,KAAK,SAAWA,EAAO,SACvB,KAAK,KAAOA,EAAO,KACnB,KAAK,aAAeA,EAAO,aAC3B,KAAK,QAAUA,EAAO,QACtB,KAAK,YAAcA,EAAO,YAC1B,KAAK,SAAWA,EAAO,SACvB,KAAK,SAAWA,EAAO,SACvB,KAAK,cAAgBA,EAAO,cAC5B,KAAK,cAAgBA,EAAO,cAC5B,KAAK,cAAgBA,EAAO,cAC5B,KAAK,mBAAqBA,EAAO,mBACjC,KAAK,WAAW,KAAKA,EAAO,UAAU,EACtC,KAAK,WAAaA,EAAO,WACzB,KAAK,UAAYA,EAAO,UACxB,KAAK,UAAYA,EAAO,UACxB,KAAK,WAAaA,EAAO,WACzB,KAAK,iBAAmBA,EAAO,iBAC/B,KAAK,YAAcA,EAAO,YAC1B,KAAK,WAAaA,EAAO,WACzB,KAAK,gBAAkBA,EAAO,gBAC9B,KAAK,YAAcA,EAAO,YAC1B,KAAK,aAAeA,EAAO,aAC3B,KAAK,aAAeA,EAAO,aAC3B,KAAK,aAAeA,EAAO,aAC3B,IAAMkX,EAAYlX,EAAO,eACrBmX,EAAY,KAChB,GAAID,IAAc,KAAM,CACtB,IAAMpiB,EAAIoiB,EAAU,OACpBC,EAAY,IAAI,MAAMriB,CAAC,EACvB,QAAShB,EAAI,EAAGA,IAAMgB,EAAG,EAAEhB,EACzBqjB,EAAUrjB,CAAC,EAAIojB,EAAUpjB,CAAC,EAAE,MAAM,CAEtC,CACA,YAAK,eAAiBqjB,EACtB,KAAK,iBAAmBnX,EAAO,iBAC/B,KAAK,YAAcA,EAAO,YAC1B,KAAK,WAAaA,EAAO,WACzB,KAAK,WAAaA,EAAO,WACzB,KAAK,UAAYA,EAAO,UACxB,KAAK,cAAgBA,EAAO,cAC5B,KAAK,oBAAsBA,EAAO,oBAClC,KAAK,mBAAqBA,EAAO,mBACjC,KAAK,UAAYA,EAAO,UACxB,KAAK,UAAYA,EAAO,UACxB,KAAK,UAAYA,EAAO,UACxB,KAAK,gBAAkBA,EAAO,gBAC9B,KAAK,mBAAqBA,EAAO,mBACjC,KAAK,gBAAkBA,EAAO,gBAC9B,KAAK,QAAUA,EAAO,QACtB,KAAK,WAAaA,EAAO,WACzB,KAAK,SAAW,KAAK,MAAM,KAAK,UAAUA,EAAO,QAAQ,CAAC,EACnD,IACT,CACA,SAAU,CACR,KAAK,cAAc,CAAE,KAAM,SAAU,CAAC,CACxC,CACA,IAAI,YAAYtL,EAAO,CACjBA,IAAU,IAAM,KAAK,SAC3B,CACA,SAAU,CACR,QAAQ,KAAK,uCAAuC,CACtD,CACF,EACIvO,GAAoB,cAAcR,EAAS,CAC7C,YAAY8sB,EAAY,CACtB,MAAM,EACN,KAAK,oBAAsB,GAC3B,KAAK,KAAO,oBACZ,KAAK,MAAQ,IAAIj2B,GAAM,QAAQ,EAC/B,KAAK,IAAM,KACX,KAAK,SAAW,KAChB,KAAK,kBAAoB,EACzB,KAAK,MAAQ,KACb,KAAK,eAAiB,EACtB,KAAK,YAAc,KACnB,KAAK,SAAW,KAChB,KAAK,OAAS,KACd,KAAK,eAAiB,IAAI4D,GAC1B,KAAK,QAAU6G,GACf,KAAK,aAAe,EACpB,KAAK,gBAAkB,IACvB,KAAK,UAAY,GACjB,KAAK,mBAAqB,EAC1B,KAAK,iBAAmB,QACxB,KAAK,kBAAoB,QACzB,KAAK,IAAM,GACX,KAAK,UAAUwrB,CAAU,CAC3B,CACA,KAAKzS,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,MAAM,KAAKA,EAAO,KAAK,EAC5B,KAAK,IAAMA,EAAO,IAClB,KAAK,SAAWA,EAAO,SACvB,KAAK,kBAAoBA,EAAO,kBAChC,KAAK,MAAQA,EAAO,MACpB,KAAK,eAAiBA,EAAO,eAC7B,KAAK,YAAcA,EAAO,YAC1B,KAAK,SAAWA,EAAO,SACvB,KAAK,OAASA,EAAO,OACrB,KAAK,eAAe,KAAKA,EAAO,cAAc,EAC9C,KAAK,QAAUA,EAAO,QACtB,KAAK,aAAeA,EAAO,aAC3B,KAAK,gBAAkBA,EAAO,gBAC9B,KAAK,UAAYA,EAAO,UACxB,KAAK,mBAAqBA,EAAO,mBACjC,KAAK,iBAAmBA,EAAO,iBAC/B,KAAK,kBAAoBA,EAAO,kBAChC,KAAK,IAAMA,EAAO,IACX,IACT,CACF,EACIoX,GAA0BC,GAAgB,EAC9C,SAASA,IAAkB,CACzB,IAAMva,EAAS,IAAI,YAAY,CAAC,EAC1Bwa,EAAY,IAAI,aAAaxa,CAAM,EACnCya,EAAa,IAAI,YAAYza,CAAM,EACnC0a,EAAY,IAAI,YAAY,GAAG,EAC/BC,EAAa,IAAI,YAAY,GAAG,EACtC,QAAS3jB,EAAI,EAAGA,EAAI,IAAK,EAAEA,EAAG,CAC5B,IAAMuE,EAAIvE,EAAI,IACVuE,EAAI,KACNmf,EAAU1jB,CAAC,EAAI,EACf0jB,EAAU1jB,EAAI,GAAG,EAAI,MACrB2jB,EAAW3jB,CAAC,EAAI,GAChB2jB,EAAW3jB,EAAI,GAAG,EAAI,IACbuE,EAAI,KACbmf,EAAU1jB,CAAC,EAAI,MAAQ,CAACuE,EAAI,GAC5Bmf,EAAU1jB,EAAI,GAAG,EAAI,MAAQ,CAACuE,EAAI,GAAK,MACvCof,EAAW3jB,CAAC,EAAI,CAACuE,EAAI,EACrBof,EAAW3jB,EAAI,GAAG,EAAI,CAACuE,EAAI,GAClBA,GAAK,IACdmf,EAAU1jB,CAAC,EAAIuE,EAAI,IAAM,GACzBmf,EAAU1jB,EAAI,GAAG,EAAIuE,EAAI,IAAM,GAAK,MACpCof,EAAW3jB,CAAC,EAAI,GAChB2jB,EAAW3jB,EAAI,GAAG,EAAI,IACbuE,EAAI,KACbmf,EAAU1jB,CAAC,EAAI,MACf0jB,EAAU1jB,EAAI,GAAG,EAAI,MACrB2jB,EAAW3jB,CAAC,EAAI,GAChB2jB,EAAW3jB,EAAI,GAAG,EAAI,KAEtB0jB,EAAU1jB,CAAC,EAAI,MACf0jB,EAAU1jB,EAAI,GAAG,EAAI,MACrB2jB,EAAW3jB,CAAC,EAAI,GAChB2jB,EAAW3jB,EAAI,GAAG,EAAI,GAE1B,CACA,IAAM4jB,EAAgB,IAAI,YAAY,IAAI,EACpCC,EAAgB,IAAI,YAAY,EAAE,EAClCC,EAAc,IAAI,YAAY,EAAE,EACtC,QAAS9jB,EAAI,EAAGA,EAAI,KAAM,EAAEA,EAAG,CAC7B,IAAIiB,EAAIjB,GAAK,GACTuE,EAAI,EACR,MAAQtD,EAAI,WAAa,GACvBA,IAAM,EACNsD,GAAK,QAEPtD,GAAK,SACLsD,GAAK,UACLqf,EAAc5jB,CAAC,EAAIiB,EAAIsD,CACzB,CACA,QAASvE,EAAI,KAAMA,EAAI,KAAM,EAAEA,EAC7B4jB,EAAc5jB,CAAC,EAAI,WAAaA,EAAI,MAAQ,IAE9C,QAASA,EAAI,EAAGA,EAAI,GAAI,EAAEA,EACxB6jB,EAAc7jB,CAAC,EAAIA,GAAK,GAE1B6jB,EAAc,EAAE,EAAI,WACpBA,EAAc,EAAE,EAAI,WACpB,QAAS7jB,EAAI,GAAIA,EAAI,GAAI,EAAEA,EACzB6jB,EAAc7jB,CAAC,EAAI,YAAcA,EAAI,IAAM,IAE7C6jB,EAAc,EAAE,EAAI,WACpB,QAAS7jB,EAAI,EAAGA,EAAI,GAAI,EAAEA,EACpBA,IAAM,KACR8jB,EAAY9jB,CAAC,EAAI,MAGrB,MAAO,CACL,UAAAwjB,EACA,WAAAC,EACA,UAAAC,EACA,WAAAC,EACA,cAAAC,EACA,cAAAC,EACA,YAAAC,CACF,CACF,CACA,SAASC,GAAYC,EAAK,CACpB,KAAK,IAAIA,CAAG,EAAI,OAAO,QAAQ,KAAK,oDAAoD,EAC5FA,EAAMrjB,GAAMqjB,EAAK,OAAQ,KAAK,EAC9BV,GAAQ,UAAU,CAAC,EAAIU,EACvB,IAAMvc,EAAI6b,GAAQ,WAAW,CAAC,EACxB/e,EAAIkD,GAAK,GAAK,IACpB,OAAO6b,GAAQ,UAAU/e,CAAC,IAAMkD,EAAI,UAAY6b,GAAQ,WAAW/e,CAAC,EACtE,CACA,SAAS0f,GAAcD,EAAK,CAC1B,IAAM/iB,EAAI+iB,GAAO,GACjB,OAAAV,GAAQ,WAAW,CAAC,EAAIA,GAAQ,cAAcA,GAAQ,YAAYriB,CAAC,GAAK+iB,EAAM,KAAK,EAAIV,GAAQ,cAAcriB,CAAC,EACvGqiB,GAAQ,UAAU,CAAC,CAC5B,CACA,IAAI14B,GAAY,CACd,YAAAm5B,GACA,cAAAE,EACF,EACIC,GAA4B,IAAI7lB,EAChC8lB,GAA6B,IAAI/lB,EACjCxW,GAAkB,KAAM,CAC1B,YAAYmY,EAAOqkB,EAAUC,EAAa,GAAO,CAC/C,GAAI,MAAM,QAAQtkB,CAAK,EACrB,MAAM,IAAI,UAAU,uDAAuD,EAE7E,KAAK,kBAAoB,GACzB,KAAK,KAAO,GACZ,KAAK,MAAQA,EACb,KAAK,SAAWqkB,EAChB,KAAK,MAAQrkB,IAAU,OAASA,EAAM,OAASqkB,EAAW,EAC1D,KAAK,WAAaC,EAClB,KAAK,MAAQxoB,GACb,KAAK,aAAe,CAAC,EACrB,KAAK,QAAUjP,GACf,KAAK,QAAU,CACjB,CACA,kBAAmB,CACnB,CACA,IAAI,YAAYgU,EAAO,CACjBA,IAAU,IAAM,KAAK,SAC3B,CACA,SAASA,EAAO,CACd,YAAK,MAAQA,EACN,IACT,CACA,eAAe0jB,EAAO5W,EAAO,CAC3B,KAAK,aAAa,KAAK,CAAE,MAAA4W,EAAO,MAAA5W,CAAM,CAAC,CACzC,CACA,mBAAoB,CAClB,KAAK,aAAa,OAAS,CAC7B,CACA,KAAKxB,EAAQ,CACX,YAAK,KAAOA,EAAO,KACnB,KAAK,MAAQ,IAAIA,EAAO,MAAM,YAAYA,EAAO,KAAK,EACtD,KAAK,SAAWA,EAAO,SACvB,KAAK,MAAQA,EAAO,MACpB,KAAK,WAAaA,EAAO,WACzB,KAAK,MAAQA,EAAO,MACpB,KAAK,QAAUA,EAAO,QACf,IACT,CACA,OAAOqY,EAAQrf,EAAWsf,EAAQ,CAChCD,GAAU,KAAK,SACfC,GAAUtf,EAAU,SACpB,QAAS,EAAI,EAAGjF,EAAI,KAAK,SAAU,EAAIA,EAAG,IACxC,KAAK,MAAMskB,EAAS,CAAC,EAAIrf,EAAU,MAAMsf,EAAS,CAAC,EAErD,OAAO,IACT,CACA,UAAUzkB,EAAO,CACf,YAAK,MAAM,IAAIA,CAAK,EACb,IACT,CACA,aAAakB,EAAG,CACd,GAAI,KAAK,WAAa,EACpB,QAASjB,EAAI,EAAGC,EAAI,KAAK,MAAOD,EAAIC,EAAGD,IACrCmkB,GAAW,oBAAoB,KAAMnkB,CAAC,EACtCmkB,GAAW,aAAaljB,CAAC,EACzB,KAAK,MAAMjB,EAAGmkB,GAAW,EAAGA,GAAW,CAAC,UAEjC,KAAK,WAAa,EAC3B,QAASnkB,EAAI,EAAGC,EAAI,KAAK,MAAOD,EAAIC,EAAGD,IACrCkkB,GAAU,oBAAoB,KAAMlkB,CAAC,EACrCkkB,GAAU,aAAajjB,CAAC,EACxB,KAAK,OAAOjB,EAAGkkB,GAAU,EAAGA,GAAU,EAAGA,GAAU,CAAC,EAGxD,OAAO,IACT,CACA,aAAajjB,EAAG,CACd,QAASjB,EAAI,EAAGC,EAAI,KAAK,MAAOD,EAAIC,EAAGD,IACrCkkB,GAAU,oBAAoB,KAAMlkB,CAAC,EACrCkkB,GAAU,aAAajjB,CAAC,EACxB,KAAK,OAAOjB,EAAGkkB,GAAU,EAAGA,GAAU,EAAGA,GAAU,CAAC,EAEtD,OAAO,IACT,CACA,kBAAkBjjB,EAAG,CACnB,QAASjB,EAAI,EAAGC,EAAI,KAAK,MAAOD,EAAIC,EAAGD,IACrCkkB,GAAU,oBAAoB,KAAMlkB,CAAC,EACrCkkB,GAAU,kBAAkBjjB,CAAC,EAC7B,KAAK,OAAOjB,EAAGkkB,GAAU,EAAGA,GAAU,EAAGA,GAAU,CAAC,EAEtD,OAAO,IACT,CACA,mBAAmBjjB,EAAG,CACpB,QAASjB,EAAI,EAAGC,EAAI,KAAK,MAAOD,EAAIC,EAAGD,IACrCkkB,GAAU,oBAAoB,KAAMlkB,CAAC,EACrCkkB,GAAU,mBAAmBjjB,CAAC,EAC9B,KAAK,OAAOjB,EAAGkkB,GAAU,EAAGA,GAAU,EAAGA,GAAU,CAAC,EAEtD,OAAO,IACT,CACA,IAAItjB,EAAOqE,EAAS,EAAG,CACrB,YAAK,MAAM,IAAIrE,EAAOqE,CAAM,EACrB,IACT,CACA,aAAapF,EAAO4kB,EAAW,CAC7B,IAAI7jB,EAAQ,KAAK,MAAMf,EAAQ,KAAK,SAAW4kB,CAAS,EACxD,OAAI,KAAK,aAAY7jB,EAAQsD,GAAYtD,EAAO,KAAK,KAAK,GACnDA,CACT,CACA,aAAaf,EAAO4kB,EAAW7jB,EAAO,CACpC,OAAI,KAAK,aAAYA,EAAQuD,GAAUvD,EAAO,KAAK,KAAK,GACxD,KAAK,MAAMf,EAAQ,KAAK,SAAW4kB,CAAS,EAAI7jB,EACzC,IACT,CACA,KAAKf,EAAO,CACV,IAAIsB,EAAI,KAAK,MAAMtB,EAAQ,KAAK,QAAQ,EACxC,OAAI,KAAK,aAAYsB,EAAI+C,GAAY/C,EAAG,KAAK,KAAK,GAC3CA,CACT,CACA,KAAKtB,EAAOsB,EAAG,CACb,OAAI,KAAK,aAAYA,EAAIgD,GAAUhD,EAAG,KAAK,KAAK,GAChD,KAAK,MAAMtB,EAAQ,KAAK,QAAQ,EAAIsB,EAC7B,IACT,CACA,KAAKtB,EAAO,CACV,IAAI4B,EAAI,KAAK,MAAM5B,EAAQ,KAAK,SAAW,CAAC,EAC5C,OAAI,KAAK,aAAY4B,EAAIyC,GAAYzC,EAAG,KAAK,KAAK,GAC3CA,CACT,CACA,KAAK5B,EAAO4B,EAAG,CACb,OAAI,KAAK,aAAYA,EAAI0C,GAAU1C,EAAG,KAAK,KAAK,GAChD,KAAK,MAAM5B,EAAQ,KAAK,SAAW,CAAC,EAAI4B,EACjC,IACT,CACA,KAAK5B,EAAO,CACV,IAAIwM,EAAI,KAAK,MAAMxM,EAAQ,KAAK,SAAW,CAAC,EAC5C,OAAI,KAAK,aAAYwM,EAAInI,GAAYmI,EAAG,KAAK,KAAK,GAC3CA,CACT,CACA,KAAKxM,EAAOwM,EAAG,CACb,OAAI,KAAK,aAAYA,EAAIlI,GAAUkI,EAAG,KAAK,KAAK,GAChD,KAAK,MAAMxM,EAAQ,KAAK,SAAW,CAAC,EAAIwM,EACjC,IACT,CACA,KAAKxM,EAAO,CACV,IAAIyM,EAAI,KAAK,MAAMzM,EAAQ,KAAK,SAAW,CAAC,EAC5C,OAAI,KAAK,aAAYyM,EAAIpI,GAAYoI,EAAG,KAAK,KAAK,GAC3CA,CACT,CACA,KAAKzM,EAAOyM,EAAG,CACb,OAAI,KAAK,aAAYA,EAAInI,GAAUmI,EAAG,KAAK,KAAK,GAChD,KAAK,MAAMzM,EAAQ,KAAK,SAAW,CAAC,EAAIyM,EACjC,IACT,CACA,MAAMzM,EAAOsB,EAAGM,EAAG,CACjB,OAAA5B,GAAS,KAAK,SACV,KAAK,aACPsB,EAAIgD,GAAUhD,EAAG,KAAK,KAAK,EAC3BM,EAAI0C,GAAU1C,EAAG,KAAK,KAAK,GAE7B,KAAK,MAAM5B,EAAQ,CAAC,EAAIsB,EACxB,KAAK,MAAMtB,EAAQ,CAAC,EAAI4B,EACjB,IACT,CACA,OAAO5B,EAAOsB,EAAGM,EAAG4K,EAAG,CACrB,OAAAxM,GAAS,KAAK,SACV,KAAK,aACPsB,EAAIgD,GAAUhD,EAAG,KAAK,KAAK,EAC3BM,EAAI0C,GAAU1C,EAAG,KAAK,KAAK,EAC3B4K,EAAIlI,GAAUkI,EAAG,KAAK,KAAK,GAE7B,KAAK,MAAMxM,EAAQ,CAAC,EAAIsB,EACxB,KAAK,MAAMtB,EAAQ,CAAC,EAAI4B,EACxB,KAAK,MAAM5B,EAAQ,CAAC,EAAIwM,EACjB,IACT,CACA,QAAQxM,EAAOsB,EAAGM,EAAG4K,EAAGC,EAAG,CACzB,OAAAzM,GAAS,KAAK,SACV,KAAK,aACPsB,EAAIgD,GAAUhD,EAAG,KAAK,KAAK,EAC3BM,EAAI0C,GAAU1C,EAAG,KAAK,KAAK,EAC3B4K,EAAIlI,GAAUkI,EAAG,KAAK,KAAK,EAC3BC,EAAInI,GAAUmI,EAAG,KAAK,KAAK,GAE7B,KAAK,MAAMzM,EAAQ,CAAC,EAAIsB,EACxB,KAAK,MAAMtB,EAAQ,CAAC,EAAI4B,EACxB,KAAK,MAAM5B,EAAQ,CAAC,EAAIwM,EACxB,KAAK,MAAMxM,EAAQ,CAAC,EAAIyM,EACjB,IACT,CACA,SAAS2E,EAAU,CACjB,YAAK,iBAAmBA,EACjB,IACT,CACA,OAAQ,CACN,OAAO,IAAI,KAAK,YAAY,KAAK,MAAO,KAAK,QAAQ,EAAE,KAAK,IAAI,CAClE,CACA,QAAS,CACP,IAAM/F,EAAO,CACX,SAAU,KAAK,SACf,KAAM,KAAK,MAAM,YAAY,KAC7B,MAAO,MAAM,KAAK,KAAK,KAAK,EAC5B,WAAY,KAAK,UACnB,EACA,OAAI,KAAK,OAAS,KAAIA,EAAK,KAAO,KAAK,MACnC,KAAK,QAAUrP,KAAiBqP,EAAK,MAAQ,KAAK,OAC/CA,CACT,CACF,EACItc,GAAsB,cAAchH,EAAgB,CACtD,YAAYmY,EAAOqkB,EAAUC,EAAY,CACvC,MAAM,IAAI,UAAUtkB,CAAK,EAAGqkB,EAAUC,CAAU,CAClD,CACF,EACI/mB,GAAuB,cAAc1V,EAAgB,CACvD,YAAYmY,EAAOqkB,EAAUC,EAAY,CACvC,MAAM,IAAI,WAAWtkB,CAAK,EAAGqkB,EAAUC,CAAU,CACnD,CACF,EACI9mB,GAA8B,cAAc3V,EAAgB,CAC9D,YAAYmY,EAAOqkB,EAAUC,EAAY,CACvC,MAAM,IAAI,kBAAkBtkB,CAAK,EAAGqkB,EAAUC,CAAU,CAC1D,CACF,EACI31B,GAAuB,cAAc9G,EAAgB,CACvD,YAAYmY,EAAOqkB,EAAUC,EAAY,CACvC,MAAM,IAAI,WAAWtkB,CAAK,EAAGqkB,EAAUC,CAAU,CACnD,CACF,EACIjnB,GAAwB,cAAcxV,EAAgB,CACxD,YAAYmY,EAAOqkB,EAAUC,EAAY,CACvC,MAAM,IAAI,YAAYtkB,CAAK,EAAGqkB,EAAUC,CAAU,CACpD,CACF,EACI11B,GAAuB,cAAc/G,EAAgB,CACvD,YAAYmY,EAAOqkB,EAAUC,EAAY,CACvC,MAAM,IAAI,WAAWtkB,CAAK,EAAGqkB,EAAUC,CAAU,CACnD,CACF,EACIhnB,GAAwB,cAAczV,EAAgB,CACxD,YAAYmY,EAAOqkB,EAAUC,EAAY,CACvC,MAAM,IAAI,YAAYtkB,CAAK,EAAGqkB,EAAUC,CAAU,CACpD,CACF,EACI33B,GAAyB,cAAc9E,EAAgB,CACzD,YAAYmY,EAAOqkB,EAAUC,EAAY,CACvC,MAAM,IAAI,YAAYtkB,CAAK,EAAGqkB,EAAUC,CAAU,EAClD,KAAK,yBAA2B,EAClC,CACA,KAAKxkB,EAAO,CACV,IAAIsB,EAAI8iB,GAAc,KAAK,MAAMpkB,EAAQ,KAAK,QAAQ,CAAC,EACvD,OAAI,KAAK,aAAYsB,EAAI+C,GAAY/C,EAAG,KAAK,KAAK,GAC3CA,CACT,CACA,KAAKtB,EAAOsB,EAAG,CACb,OAAI,KAAK,aAAYA,EAAIgD,GAAUhD,EAAG,KAAK,KAAK,GAChD,KAAK,MAAMtB,EAAQ,KAAK,QAAQ,EAAIkkB,GAAY5iB,CAAC,EAC1C,IACT,CACA,KAAKtB,EAAO,CACV,IAAI4B,EAAIwiB,GAAc,KAAK,MAAMpkB,EAAQ,KAAK,SAAW,CAAC,CAAC,EAC3D,OAAI,KAAK,aAAY4B,EAAIyC,GAAYzC,EAAG,KAAK,KAAK,GAC3CA,CACT,CACA,KAAK5B,EAAO4B,EAAG,CACb,OAAI,KAAK,aAAYA,EAAI0C,GAAU1C,EAAG,KAAK,KAAK,GAChD,KAAK,MAAM5B,EAAQ,KAAK,SAAW,CAAC,EAAIkkB,GAAYtiB,CAAC,EAC9C,IACT,CACA,KAAK5B,EAAO,CACV,IAAIwM,EAAI4X,GAAc,KAAK,MAAMpkB,EAAQ,KAAK,SAAW,CAAC,CAAC,EAC3D,OAAI,KAAK,aAAYwM,EAAInI,GAAYmI,EAAG,KAAK,KAAK,GAC3CA,CACT,CACA,KAAKxM,EAAOwM,EAAG,CACb,OAAI,KAAK,aAAYA,EAAIlI,GAAUkI,EAAG,KAAK,KAAK,GAChD,KAAK,MAAMxM,EAAQ,KAAK,SAAW,CAAC,EAAIkkB,GAAY1X,CAAC,EAC9C,IACT,CACA,KAAKxM,EAAO,CACV,IAAIyM,EAAI2X,GAAc,KAAK,MAAMpkB,EAAQ,KAAK,SAAW,CAAC,CAAC,EAC3D,OAAI,KAAK,aAAYyM,EAAIpI,GAAYoI,EAAG,KAAK,KAAK,GAC3CA,CACT,CACA,KAAKzM,EAAOyM,EAAG,CACb,OAAI,KAAK,aAAYA,EAAInI,GAAUmI,EAAG,KAAK,KAAK,GAChD,KAAK,MAAMzM,EAAQ,KAAK,SAAW,CAAC,EAAIkkB,GAAYzX,CAAC,EAC9C,IACT,CACA,MAAMzM,EAAOsB,EAAGM,EAAG,CACjB,OAAA5B,GAAS,KAAK,SACV,KAAK,aACPsB,EAAIgD,GAAUhD,EAAG,KAAK,KAAK,EAC3BM,EAAI0C,GAAU1C,EAAG,KAAK,KAAK,GAE7B,KAAK,MAAM5B,EAAQ,CAAC,EAAIkkB,GAAY5iB,CAAC,EACrC,KAAK,MAAMtB,EAAQ,CAAC,EAAIkkB,GAAYtiB,CAAC,EAC9B,IACT,CACA,OAAO5B,EAAOsB,EAAGM,EAAG4K,EAAG,CACrB,OAAAxM,GAAS,KAAK,SACV,KAAK,aACPsB,EAAIgD,GAAUhD,EAAG,KAAK,KAAK,EAC3BM,EAAI0C,GAAU1C,EAAG,KAAK,KAAK,EAC3B4K,EAAIlI,GAAUkI,EAAG,KAAK,KAAK,GAE7B,KAAK,MAAMxM,EAAQ,CAAC,EAAIkkB,GAAY5iB,CAAC,EACrC,KAAK,MAAMtB,EAAQ,CAAC,EAAIkkB,GAAYtiB,CAAC,EACrC,KAAK,MAAM5B,EAAQ,CAAC,EAAIkkB,GAAY1X,CAAC,EAC9B,IACT,CACA,QAAQxM,EAAOsB,EAAGM,EAAG4K,EAAGC,EAAG,CACzB,OAAAzM,GAAS,KAAK,SACV,KAAK,aACPsB,EAAIgD,GAAUhD,EAAG,KAAK,KAAK,EAC3BM,EAAI0C,GAAU1C,EAAG,KAAK,KAAK,EAC3B4K,EAAIlI,GAAUkI,EAAG,KAAK,KAAK,EAC3BC,EAAInI,GAAUmI,EAAG,KAAK,KAAK,GAE7B,KAAK,MAAMzM,EAAQ,CAAC,EAAIkkB,GAAY5iB,CAAC,EACrC,KAAK,MAAMtB,EAAQ,CAAC,EAAIkkB,GAAYtiB,CAAC,EACrC,KAAK,MAAM5B,EAAQ,CAAC,EAAIkkB,GAAY1X,CAAC,EACrC,KAAK,MAAMxM,EAAQ,CAAC,EAAIkkB,GAAYzX,CAAC,EAC9B,IACT,CACF,EACI3f,GAAyB,cAAc/E,EAAgB,CACzD,YAAYmY,EAAOqkB,EAAUC,EAAY,CACvC,MAAM,IAAI,aAAatkB,CAAK,EAAGqkB,EAAUC,CAAU,CACrD,CACF,EACIK,GAAQ,EACRC,GAAwB,IAAIzyB,GAC5B0yB,GAAuB,IAAItwB,GAC3BuwB,GAA0B,IAAIxmB,EAC9BymB,GAAyB,IAAIt9B,GAC7Bu9B,GAAmC,IAAIv9B,GACvCw9B,GAA4B,IAAI3mB,EAChCxW,GAAiB,MAAMo9B,WAAwB14B,EAAgB,CACjE,aAAc,CACZ,MAAM,EACN,KAAK,iBAAmB,GACxB,OAAO,eAAe,KAAM,KAAM,CAAE,MAAOm4B,IAAQ,CAAC,EACpD,KAAK,KAAOpkB,GAAa,EACzB,KAAK,KAAO,GACZ,KAAK,KAAO,iBACZ,KAAK,MAAQ,KACb,KAAK,WAAa,CAAC,EACnB,KAAK,gBAAkB,CAAC,EACxB,KAAK,qBAAuB,GAC5B,KAAK,OAAS,CAAC,EACf,KAAK,YAAc,KACnB,KAAK,eAAiB,KACtB,KAAK,UAAY,CAAE,MAAO,EAAG,MAAO,GAAS,EAC7C,KAAK,SAAW,CAAC,CACnB,CACA,UAAW,CACT,OAAO,KAAK,KACd,CACA,SAAST,EAAO,CACd,OAAI,MAAM,QAAQA,CAAK,EACrB,KAAK,MAAQ,IAAKgJ,GAAiBhJ,CAAK,EAAIxC,GAAwBD,IAAuByC,EAAO,CAAC,EAEnG,KAAK,MAAQA,EAER,IACT,CACA,aAAaqJ,EAAM,CACjB,OAAO,KAAK,WAAWA,CAAI,CAC7B,CACA,aAAaA,EAAMhE,EAAW,CAC5B,YAAK,WAAWgE,CAAI,EAAIhE,EACjB,IACT,CACA,gBAAgBgE,EAAM,CACpB,cAAO,KAAK,WAAWA,CAAI,EACpB,IACT,CACA,aAAaA,EAAM,CACjB,OAAO,KAAK,WAAWA,CAAI,IAAM,MACnC,CACA,SAASob,EAAO5W,EAAOwX,EAAgB,EAAG,CACxC,KAAK,OAAO,KAAK,CACf,MAAAZ,EACA,MAAA5W,EACA,cAAAwX,CACF,CAAC,CACH,CACA,aAAc,CACZ,KAAK,OAAS,CAAC,CACjB,CACA,aAAaZ,EAAO5W,EAAO,CACzB,KAAK,UAAU,MAAQ4W,EACvB,KAAK,UAAU,MAAQ5W,CACzB,CACA,aAAa9E,EAAQ,CACnB,IAAMuS,EAAW,KAAK,WAAW,SAC7BA,IAAa,SACfA,EAAS,aAAavS,CAAM,EAC5BuS,EAAS,YAAc,IAEzB,IAAM9I,EAAS,KAAK,WAAW,OAC/B,GAAIA,IAAW,OAAQ,CACrB,IAAM8S,EAAe,IAAIlzB,GAAQ,EAAE,gBAAgB2W,CAAM,EACzDyJ,EAAO,kBAAkB8S,CAAY,EACrC9S,EAAO,YAAc,EACvB,CACA,IAAM+S,EAAU,KAAK,WAAW,QAChC,OAAIA,IAAY,SACdA,EAAQ,mBAAmBxc,CAAM,EACjCwc,EAAQ,YAAc,IAEpB,KAAK,cAAgB,MACvB,KAAK,mBAAmB,EAEtB,KAAK,iBAAmB,MAC1B,KAAK,sBAAsB,EAEtB,IACT,CACA,gBAAgBjiB,EAAG,CACjB,OAAAwhB,GAAM,2BAA2BxhB,CAAC,EAClC,KAAK,aAAawhB,EAAK,EAChB,IACT,CACA,QAAQvf,EAAO,CACb,OAAAuf,GAAM,cAAcvf,CAAK,EACzB,KAAK,aAAauf,EAAK,EAChB,IACT,CACA,QAAQvf,EAAO,CACb,OAAAuf,GAAM,cAAcvf,CAAK,EACzB,KAAK,aAAauf,EAAK,EAChB,IACT,CACA,QAAQvf,EAAO,CACb,OAAAuf,GAAM,cAAcvf,CAAK,EACzB,KAAK,aAAauf,EAAK,EAChB,IACT,CACA,UAAUxjB,EAAGM,EAAG4K,EAAG,CACjB,OAAAsY,GAAM,gBAAgBxjB,EAAGM,EAAG4K,CAAC,EAC7B,KAAK,aAAasY,EAAK,EAChB,IACT,CACA,MAAMxjB,EAAGM,EAAG4K,EAAG,CACb,OAAAsY,GAAM,UAAUxjB,EAAGM,EAAG4K,CAAC,EACvB,KAAK,aAAasY,EAAK,EAChB,IACT,CACA,OAAOvR,EAAQ,CACb,OAAAwR,GAAK,OAAOxR,CAAM,EAClBwR,GAAK,aAAa,EAClB,KAAK,aAAaA,GAAK,MAAM,EACtB,IACT,CACA,QAAS,CACP,YAAK,mBAAmB,EACxB,KAAK,YAAY,UAAUC,EAAO,EAAE,OAAO,EAC3C,KAAK,UAAUA,GAAQ,EAAGA,GAAQ,EAAGA,GAAQ,CAAC,EACvC,IACT,CACA,cAAchS,EAAQ,CACpB,IAAMsI,EAAW,CAAC,EAClB,QAAS,EAAI,EAAGlb,EAAI4S,EAAO,OAAQ,EAAI5S,EAAG,IAAK,CAC7C,IAAMkT,EAAQN,EAAO,CAAC,EACtBsI,EAAS,KAAKhI,EAAM,EAAGA,EAAM,EAAGA,EAAM,GAAK,CAAC,CAC9C,CACA,YAAK,aAAa,WAAY,IAAIxmB,GAAuBwuB,EAAU,CAAC,CAAC,EAC9D,IACT,CACA,oBAAqB,CACf,KAAK,cAAgB,OACvB,KAAK,YAAc,IAAI3zB,IAEzB,IAAM2zB,EAAW,KAAK,WAAW,SAC3BkK,EAA0B,KAAK,gBAAgB,SACrD,GAAIlK,GAAYA,EAAS,oBAAqB,CAC5C,QAAQ,MAAM,+FAAgG,IAAI,EAClH,KAAK,YAAY,IACf,IAAI9c,EAAQ,KAAW,KAAW,IAAS,EAC3C,IAAIA,EAAQ,IAAU,IAAU,GAAQ,CAC1C,EACA,MACF,CACA,GAAI8c,IAAa,QAEf,GADA,KAAK,YAAY,uBAAuBA,CAAQ,EAC5CkK,EACF,QAAS,EAAI,EAAGzX,EAAKyX,EAAwB,OAAQ,EAAIzX,EAAI,IAAK,CAChE,IAAM0X,EAAiBD,EAAwB,CAAC,EAChDP,GAAO,uBAAuBQ,CAAc,EACxC,KAAK,sBACPN,GAAU,WAAW,KAAK,YAAY,IAAKF,GAAO,GAAG,EACrD,KAAK,YAAY,cAAcE,EAAS,EACxCA,GAAU,WAAW,KAAK,YAAY,IAAKF,GAAO,GAAG,EACrD,KAAK,YAAY,cAAcE,EAAS,IAExC,KAAK,YAAY,cAAcF,GAAO,GAAG,EACzC,KAAK,YAAY,cAAcA,GAAO,GAAG,EAE7C,OAGF,KAAK,YAAY,UAAU,GAEzB,MAAM,KAAK,YAAY,IAAI,CAAC,GAAK,MAAM,KAAK,YAAY,IAAI,CAAC,GAAK,MAAM,KAAK,YAAY,IAAI,CAAC,IAChG,QAAQ,MAAM,sIAAuI,IAAI,CAE7J,CACA,uBAAwB,CAClB,KAAK,iBAAmB,OAC1B,KAAK,eAAiB,IAAI9pB,IAE5B,IAAMmgB,EAAW,KAAK,WAAW,SAC3BkK,EAA0B,KAAK,gBAAgB,SACrD,GAAIlK,GAAYA,EAAS,oBAAqB,CAC5C,QAAQ,MAAM,qGAAsG,IAAI,EACxH,KAAK,eAAe,IAAI,IAAI9c,EAAW,GAAQ,EAC/C,MACF,CACA,GAAI8c,EAAU,CACZ,IAAMhW,EAAS,KAAK,eAAe,OAEnC,GADA2f,GAAO,uBAAuB3J,CAAQ,EAClCkK,EACF,QAASrlB,EAAI,EAAG4N,EAAKyX,EAAwB,OAAQrlB,EAAI4N,EAAI5N,IAAK,CAChE,IAAMslB,EAAiBD,EAAwBrlB,CAAC,EAChD+kB,GAAiB,uBAAuBO,CAAc,EAClD,KAAK,sBACPN,GAAU,WAAWF,GAAO,IAAKC,GAAiB,GAAG,EACrDD,GAAO,cAAcE,EAAS,EAC9BA,GAAU,WAAWF,GAAO,IAAKC,GAAiB,GAAG,EACrDD,GAAO,cAAcE,EAAS,IAE9BF,GAAO,cAAcC,GAAiB,GAAG,EACzCD,GAAO,cAAcC,GAAiB,GAAG,EAE7C,CAEFD,GAAO,UAAU3f,CAAM,EACvB,IAAIgQ,EAAc,EAClB,QAASnV,EAAI,EAAG4N,EAAKuN,EAAS,MAAOnb,EAAI4N,EAAI5N,IAC3CglB,GAAU,oBAAoB7J,EAAUnb,CAAC,EACzCmV,EAAc,KAAK,IAAIA,EAAahQ,EAAO,kBAAkB6f,EAAS,CAAC,EAEzE,GAAIK,EACF,QAASrlB,EAAI,EAAG4N,EAAKyX,EAAwB,OAAQrlB,EAAI4N,EAAI5N,IAAK,CAChE,IAAMslB,EAAiBD,EAAwBrlB,CAAC,EAC1CulB,EAAuB,KAAK,qBAClC,QAAS5Q,EAAI,EAAG6Q,EAAKF,EAAe,MAAO3Q,EAAI6Q,EAAI7Q,IACjDqQ,GAAU,oBAAoBM,EAAgB3Q,CAAC,EAC3C4Q,IACFV,GAAQ,oBAAoB1J,EAAUxG,CAAC,EACvCqQ,GAAU,IAAIH,EAAO,GAEvB1P,EAAc,KAAK,IAAIA,EAAahQ,EAAO,kBAAkB6f,EAAS,CAAC,CAE3E,CAEF,KAAK,eAAe,OAAS,KAAK,KAAK7P,CAAW,EAC9C,MAAM,KAAK,eAAe,MAAM,GAClC,QAAQ,MAAM,+HAAgI,IAAI,CAEtJ,CACF,CACA,iBAAkB,CAChB,IAAMtV,EAAQ,KAAK,MACb4lB,EAAa,KAAK,WACxB,GAAI5lB,IAAU,MAAQ4lB,EAAW,WAAa,QAAUA,EAAW,SAAW,QAAUA,EAAW,KAAO,OAAQ,CAChH,QAAQ,MAAM,8GAA8G,EAC5H,MACF,CACA,IAAMnS,EAAoBmS,EAAW,SAC/BC,EAAkBD,EAAW,OAC7BE,EAAcF,EAAW,GAC3B,KAAK,aAAa,SAAS,IAAM,IACnC,KAAK,aAAa,UAAW,IAAI79B,GAAgB,IAAI,aAAa,EAAI0rB,EAAkB,KAAK,EAAG,CAAC,CAAC,EAEpG,IAAMsS,EAAmB,KAAK,aAAa,SAAS,EAC9CC,EAAO,CAAC,EAAGC,EAAO,CAAC,EACzB,QAAS9lB,EAAI,EAAGA,EAAIsT,EAAkB,MAAOtT,IAC3C6lB,EAAK7lB,CAAC,EAAI,IAAI3B,EACdynB,EAAK9lB,CAAC,EAAI,IAAI3B,EAEhB,IAAM0nB,EAAK,IAAI1nB,EAAW2nB,EAAK,IAAI3nB,EAAW4nB,EAAK,IAAI5nB,EAAW6nB,EAAM,IAAI9nB,EAAW+nB,EAAM,IAAI/nB,EAAWgoB,EAAM,IAAIhoB,EAAWioB,EAAO,IAAIhoB,EAAWioB,EAAO,IAAIjoB,EAClK,SAASkoB,EAAenjB,EAAGC,EAAGC,EAAG,CAC/ByiB,EAAG,oBAAoBzS,EAAmBlQ,CAAC,EAC3C4iB,EAAG,oBAAoB1S,EAAmBjQ,CAAC,EAC3C4iB,EAAG,oBAAoB3S,EAAmBhQ,CAAC,EAC3C4iB,EAAI,oBAAoBP,EAAaviB,CAAC,EACtC+iB,EAAI,oBAAoBR,EAAatiB,CAAC,EACtC+iB,EAAI,oBAAoBT,EAAariB,CAAC,EACtC0iB,EAAG,IAAID,CAAE,EACTE,EAAG,IAAIF,CAAE,EACTI,EAAI,IAAID,CAAG,EACXE,EAAI,IAAIF,CAAG,EACX,IAAM/d,EAAI,GAAKge,EAAI,EAAIC,EAAI,EAAIA,EAAI,EAAID,EAAI,GACtC,SAAShe,CAAC,IACfke,EAAK,KAAKL,CAAE,EAAE,eAAeI,EAAI,CAAC,EAAE,gBAAgBH,EAAI,CAACE,EAAI,CAAC,EAAE,eAAehe,CAAC,EAChFme,EAAK,KAAKL,CAAE,EAAE,eAAeE,EAAI,CAAC,EAAE,gBAAgBH,EAAI,CAACI,EAAI,CAAC,EAAE,eAAeje,CAAC,EAChF0d,EAAKziB,CAAC,EAAE,IAAIijB,CAAI,EAChBR,EAAKxiB,CAAC,EAAE,IAAIgjB,CAAI,EAChBR,EAAKviB,CAAC,EAAE,IAAI+iB,CAAI,EAChBP,EAAK1iB,CAAC,EAAE,IAAIkjB,CAAI,EAChBR,EAAKziB,CAAC,EAAE,IAAIijB,CAAI,EAChBR,EAAKxiB,CAAC,EAAE,IAAIgjB,CAAI,EAClB,CACA,IAAIE,EAAS,KAAK,OACdA,EAAO,SAAW,IACpBA,EAAS,CAAC,CACR,MAAO,EACP,MAAO3mB,EAAM,KACf,CAAC,GAEH,QAASG,EAAI,EAAG4N,EAAK4Y,EAAO,OAAQxmB,EAAI4N,EAAI,EAAE5N,EAAG,CAC/C,IAAMymB,EAAQD,EAAOxmB,CAAC,EAChBskB,EAAQmC,EAAM,MACd/Y,EAAQ+Y,EAAM,MACpB,QAAS9R,EAAI2P,EAAOkB,EAAKlB,EAAQ5W,EAAOiH,EAAI6Q,EAAI7Q,GAAK,EACnD4R,EACE1mB,EAAM,KAAK8U,EAAI,CAAC,EAChB9U,EAAM,KAAK8U,EAAI,CAAC,EAChB9U,EAAM,KAAK8U,EAAI,CAAC,CAClB,CAEJ,CACA,IAAM1M,EAAO,IAAI5J,EAAWqoB,EAAQ,IAAIroB,EAClC2C,EAAI,IAAI3C,EAAWsoB,EAAK,IAAItoB,EAClC,SAASuoB,EAAatiB,EAAG,CACvBtD,EAAE,oBAAoB0kB,EAAiBphB,CAAC,EACxCqiB,EAAG,KAAK3lB,CAAC,EACT,IAAMW,EAAIkkB,EAAKvhB,CAAC,EAChB2D,EAAK,KAAKtG,CAAC,EACXsG,EAAK,IAAIjH,EAAE,eAAeA,EAAE,IAAIW,CAAC,CAAC,CAAC,EAAE,UAAU,EAC/C+kB,EAAM,aAAaC,EAAIhlB,CAAC,EAExB,IAAM2K,EADOoa,EAAM,IAAIZ,EAAKxhB,CAAC,CAAC,EACb,EAAI,GAAK,EAC1BshB,EAAiB,QAAQthB,EAAG2D,EAAK,EAAGA,EAAK,EAAGA,EAAK,EAAGqE,CAAC,CACvD,CACA,QAAStM,EAAI,EAAG4N,EAAK4Y,EAAO,OAAQxmB,EAAI4N,EAAI,EAAE5N,EAAG,CAC/C,IAAMymB,EAAQD,EAAOxmB,CAAC,EAChBskB,EAAQmC,EAAM,MACd/Y,EAAQ+Y,EAAM,MACpB,QAAS9R,EAAI2P,EAAOkB,EAAKlB,EAAQ5W,EAAOiH,EAAI6Q,EAAI7Q,GAAK,EACnDiS,EAAa/mB,EAAM,KAAK8U,EAAI,CAAC,CAAC,EAC9BiS,EAAa/mB,EAAM,KAAK8U,EAAI,CAAC,CAAC,EAC9BiS,EAAa/mB,EAAM,KAAK8U,EAAI,CAAC,CAAC,CAElC,CACF,CACA,sBAAuB,CACrB,IAAM9U,EAAQ,KAAK,MACbyT,EAAoB,KAAK,aAAa,UAAU,EACtD,GAAIA,IAAsB,OAAQ,CAChC,IAAIoS,EAAkB,KAAK,aAAa,QAAQ,EAChD,GAAIA,IAAoB,OACtBA,EAAkB,IAAI99B,GAAgB,IAAI,aAAa0rB,EAAkB,MAAQ,CAAC,EAAG,CAAC,EACtF,KAAK,aAAa,SAAUoS,CAAe,MAE3C,SAAS1lB,EAAI,EAAG4N,EAAK8X,EAAgB,MAAO1lB,EAAI4N,EAAI5N,IAClD0lB,EAAgB,OAAO1lB,EAAG,EAAG,EAAG,CAAC,EAGrC,IAAM6mB,EAAK,IAAIxoB,EAAWyoB,EAAK,IAAIzoB,EAAW0oB,EAAK,IAAI1oB,EACjD2oB,EAAK,IAAI3oB,EAAW4oB,EAAK,IAAI5oB,EAAW6oB,EAAK,IAAI7oB,EACjD8oB,EAAK,IAAI9oB,EAAW+oB,EAAK,IAAI/oB,EACnC,GAAIwB,EACF,QAASG,EAAI,EAAG4N,EAAK/N,EAAM,MAAOG,EAAI4N,EAAI5N,GAAK,EAAG,CAChD,IAAM+lB,EAAKlmB,EAAM,KAAKG,EAAI,CAAC,EACrBgmB,EAAKnmB,EAAM,KAAKG,EAAI,CAAC,EACrBimB,EAAKpmB,EAAM,KAAKG,EAAI,CAAC,EAC3B6mB,EAAG,oBAAoBvT,EAAmByS,CAAE,EAC5Ce,EAAG,oBAAoBxT,EAAmB0S,CAAE,EAC5Ce,EAAG,oBAAoBzT,EAAmB2S,CAAE,EAC5CkB,EAAG,WAAWJ,EAAID,CAAE,EACpBM,EAAG,WAAWP,EAAIC,CAAE,EACpBK,EAAG,MAAMC,CAAE,EACXJ,EAAG,oBAAoBtB,EAAiBK,CAAE,EAC1CkB,EAAG,oBAAoBvB,EAAiBM,CAAE,EAC1CkB,EAAG,oBAAoBxB,EAAiBO,CAAE,EAC1Ce,EAAG,IAAIG,CAAE,EACTF,EAAG,IAAIE,CAAE,EACTD,EAAG,IAAIC,CAAE,EACTzB,EAAgB,OAAOK,EAAIiB,EAAG,EAAGA,EAAG,EAAGA,EAAG,CAAC,EAC3CtB,EAAgB,OAAOM,EAAIiB,EAAG,EAAGA,EAAG,EAAGA,EAAG,CAAC,EAC3CvB,EAAgB,OAAOO,EAAIiB,EAAG,EAAGA,EAAG,EAAGA,EAAG,CAAC,CAC7C,KAEA,SAASlnB,EAAI,EAAG4N,EAAK0F,EAAkB,MAAOtT,EAAI4N,EAAI5N,GAAK,EACzD6mB,EAAG,oBAAoBvT,EAAmBtT,EAAI,CAAC,EAC/C8mB,EAAG,oBAAoBxT,EAAmBtT,EAAI,CAAC,EAC/C+mB,EAAG,oBAAoBzT,EAAmBtT,EAAI,CAAC,EAC/CmnB,EAAG,WAAWJ,EAAID,CAAE,EACpBM,EAAG,WAAWP,EAAIC,CAAE,EACpBK,EAAG,MAAMC,CAAE,EACX1B,EAAgB,OAAO1lB,EAAI,EAAGmnB,EAAG,EAAGA,EAAG,EAAGA,EAAG,CAAC,EAC9CzB,EAAgB,OAAO1lB,EAAI,EAAGmnB,EAAG,EAAGA,EAAG,EAAGA,EAAG,CAAC,EAC9CzB,EAAgB,OAAO1lB,EAAI,EAAGmnB,EAAG,EAAGA,EAAG,EAAGA,EAAG,CAAC,EAGlD,KAAK,iBAAiB,EACtBzB,EAAgB,YAAc,EAChC,CACF,CACA,kBAAmB,CACjB,IAAM2B,EAAU,KAAK,WAAW,OAChC,QAASrnB,EAAI,EAAG4N,EAAKyZ,EAAQ,MAAOrnB,EAAI4N,EAAI5N,IAC1CglB,GAAU,oBAAoBqC,EAASrnB,CAAC,EACxCglB,GAAU,UAAU,EACpBqC,EAAQ,OAAOrnB,EAAGglB,GAAU,EAAGA,GAAU,EAAGA,GAAU,CAAC,CAE3D,CACA,cAAe,CACb,SAASsC,EAAuBpiB,EAAWqiB,EAAU,CACnD,IAAMxnB,EAAQmF,EAAU,MAClBkf,EAAWlf,EAAU,SACrBmf,EAAanf,EAAU,WACvBsiB,EAAS,IAAIznB,EAAM,YAAYwnB,EAAS,OAASnD,CAAQ,EAC3DvkB,EAAQ,EAAG2kB,EAAS,EACxB,QAASxkB,EAAI,EAAGC,EAAIsnB,EAAS,OAAQvnB,EAAIC,EAAGD,IAAK,CAC3CkF,EAAU,6BACZrF,EAAQ0nB,EAASvnB,CAAC,EAAIkF,EAAU,KAAK,OAASA,EAAU,OAExDrF,EAAQ0nB,EAASvnB,CAAC,EAAIokB,EAExB,QAASzP,EAAI,EAAGA,EAAIyP,EAAUzP,IAC5B6S,EAAOhD,GAAQ,EAAIzkB,EAAMF,GAAO,CAEpC,CACA,OAAO,IAAIjY,GAAgB4/B,EAAQpD,EAAUC,CAAU,CACzD,CACA,GAAI,KAAK,QAAU,KACjB,eAAQ,KAAK,6EAA6E,EACnF,KAET,IAAMoD,EAAY,IAAIxC,GAChByC,EAAU,KAAK,MAAM,MACrBjC,EAAa,KAAK,WACxB,QAAWvc,KAAQuc,EAAY,CAC7B,IAAMvgB,EAAYugB,EAAWvc,CAAI,EAC3Bye,EAAeL,EAAuBpiB,EAAWwiB,CAAO,EAC9DD,EAAU,aAAave,EAAMye,CAAY,CAC3C,CACA,IAAMC,EAAkB,KAAK,gBAC7B,QAAW1e,KAAQ0e,EAAiB,CAClC,IAAMC,EAAa,CAAC,EACdvC,EAAiBsC,EAAgB1e,CAAI,EAC3C,QAASlJ,EAAI,EAAG4N,EAAK0X,EAAe,OAAQtlB,EAAI4N,EAAI5N,IAAK,CACvD,IAAMkF,EAAYogB,EAAetlB,CAAC,EAC5B2nB,EAAeL,EAAuBpiB,EAAWwiB,CAAO,EAC9DG,EAAW,KAAKF,CAAY,CAC9B,CACAF,EAAU,gBAAgBve,CAAI,EAAI2e,CACpC,CACAJ,EAAU,qBAAuB,KAAK,qBACtC,IAAMjB,EAAS,KAAK,OACpB,QAASxmB,EAAI,EAAG,EAAIwmB,EAAO,OAAQxmB,EAAI,EAAGA,IAAK,CAC7C,IAAMymB,EAAQD,EAAOxmB,CAAC,EACtBynB,EAAU,SAAShB,EAAM,MAAOA,EAAM,MAAOA,EAAM,aAAa,CAClE,CACA,OAAOgB,CACT,CACA,QAAS,CACP,IAAMvc,EAAO,CACX,SAAU,CACR,QAAS,IACT,KAAM,iBACN,UAAW,uBACb,CACF,EAKA,GAJAA,EAAK,KAAO,KAAK,KACjBA,EAAK,KAAO,KAAK,KACb,KAAK,OAAS,KAAIA,EAAK,KAAO,KAAK,MACnC,OAAO,KAAK,KAAK,QAAQ,EAAE,OAAS,IAAGA,EAAK,SAAW,KAAK,UAC5D,KAAK,aAAe,OAAQ,CAC9B,IAAMyT,EAAa,KAAK,WACxB,QAAWe,KAAOf,EACZA,EAAWe,CAAG,IAAM,SAAQxU,EAAKwU,CAAG,EAAIf,EAAWe,CAAG,GAE5D,OAAOxU,CACT,CACAA,EAAK,KAAO,CAAE,WAAY,CAAC,CAAE,EAC7B,IAAMrL,EAAQ,KAAK,MACfA,IAAU,OACZqL,EAAK,KAAK,MAAQ,CAChB,KAAMrL,EAAM,MAAM,YAAY,KAC9B,MAAO,MAAM,UAAU,MAAM,KAAKA,EAAM,KAAK,CAC/C,GAEF,IAAM4lB,EAAa,KAAK,WACxB,QAAW/F,KAAO+F,EAAY,CAC5B,IAAMvgB,EAAYugB,EAAW/F,CAAG,EAChCxU,EAAK,KAAK,WAAWwU,CAAG,EAAIxa,EAAU,OAAOgG,EAAK,IAAI,CACxD,CACA,IAAM0c,EAAkB,CAAC,EACrBE,EAAqB,GACzB,QAAWpI,KAAO,KAAK,gBAAiB,CACtC,IAAMqI,EAAiB,KAAK,gBAAgBrI,CAAG,EACzC3f,EAAQ,CAAC,EACf,QAASC,EAAI,EAAG4N,EAAKma,EAAe,OAAQ/nB,EAAI4N,EAAI5N,IAAK,CACvD,IAAMkF,EAAY6iB,EAAe/nB,CAAC,EAClCD,EAAM,KAAKmF,EAAU,OAAOgG,EAAK,IAAI,CAAC,CACxC,CACInL,EAAM,OAAS,IACjB6nB,EAAgBlI,CAAG,EAAI3f,EACvB+nB,EAAqB,GAEzB,CACIA,IACF5c,EAAK,KAAK,gBAAkB0c,EAC5B1c,EAAK,KAAK,qBAAuB,KAAK,sBAExC,IAAMsb,EAAS,KAAK,OAChBA,EAAO,OAAS,IAClBtb,EAAK,KAAK,OAAS,KAAK,MAAM,KAAK,UAAUsb,CAAM,CAAC,GAEtD,IAAMwB,EAAiB,KAAK,eAC5B,OAAIA,IAAmB,OACrB9c,EAAK,KAAK,eAAiB,CACzB,OAAQ8c,EAAe,OAAO,QAAQ,EACtC,OAAQA,EAAe,MACzB,GAEK9c,CACT,CACA,OAAQ,CACN,OAAO,IAAI,KAAK,YAAY,EAAE,KAAK,IAAI,CACzC,CACA,KAAKgB,EAAQ,CACX,KAAK,MAAQ,KACb,KAAK,WAAa,CAAC,EACnB,KAAK,gBAAkB,CAAC,EACxB,KAAK,OAAS,CAAC,EACf,KAAK,YAAc,KACnB,KAAK,eAAiB,KACtB,IAAMhB,EAAO,CAAC,EACd,KAAK,KAAOgB,EAAO,KACnB,IAAMrM,EAAQqM,EAAO,MACjBrM,IAAU,MACZ,KAAK,SAASA,EAAM,MAAMqL,CAAI,CAAC,EAEjC,IAAMua,EAAavZ,EAAO,WAC1B,QAAWhD,KAAQuc,EAAY,CAC7B,IAAMvgB,EAAYugB,EAAWvc,CAAI,EACjC,KAAK,aAAaA,EAAMhE,EAAU,MAAMgG,CAAI,CAAC,CAC/C,CACA,IAAM0c,EAAkB1b,EAAO,gBAC/B,QAAWhD,KAAQ0e,EAAiB,CAClC,IAAM7nB,EAAQ,CAAC,EACTulB,EAAiBsC,EAAgB1e,CAAI,EAC3C,QAASlJ,EAAI,EAAGC,EAAIqlB,EAAe,OAAQtlB,EAAIC,EAAGD,IAChDD,EAAM,KAAKulB,EAAetlB,CAAC,EAAE,MAAMkL,CAAI,CAAC,EAE1C,KAAK,gBAAgBhC,CAAI,EAAInJ,CAC/B,CACA,KAAK,qBAAuBmM,EAAO,qBACnC,IAAMsa,EAASta,EAAO,OACtB,QAASlM,EAAI,EAAGC,EAAIumB,EAAO,OAAQxmB,EAAIC,EAAGD,IAAK,CAC7C,IAAMymB,EAAQD,EAAOxmB,CAAC,EACtB,KAAK,SAASymB,EAAM,MAAOA,EAAM,MAAOA,EAAM,aAAa,CAC7D,CACA,IAAMwB,EAAc/b,EAAO,YACvB+b,IAAgB,OAClB,KAAK,YAAcA,EAAY,MAAM,GAEvC,IAAMD,EAAiB9b,EAAO,eAC9B,OAAI8b,IAAmB,OACrB,KAAK,eAAiBA,EAAe,MAAM,GAE7C,KAAK,UAAU,MAAQ9b,EAAO,UAAU,MACxC,KAAK,UAAU,MAAQA,EAAO,UAAU,MACxC,KAAK,SAAWA,EAAO,SAChB,IACT,CACA,SAAU,CACR,KAAK,cAAc,CAAE,KAAM,SAAU,CAAC,CACxC,CACF,EACIgc,GAAmC,IAAIh2B,GACvCi2B,GAAyB,IAAIjvB,GAC7BkvB,GAA4B,IAAIptB,GAChCqtB,GAA+B,IAAIhqB,EACnCiqB,GAAwB,IAAIjqB,EAC5BkqB,GAAwB,IAAIlqB,EAC5BmqB,GAAwB,IAAInqB,EAC5BoqB,GAAyB,IAAIpqB,EAC7BqqB,GAA0B,IAAIrqB,EAC9BsqB,GAAqC,IAAItqB,EACzCuqB,GAA0C,IAAIvqB,EAC9CjM,GAAO,cAAckC,EAAS,CAChC,YAAY+e,EAAW,IAAIxrB,GAAkBghC,EAAW,IAAIx2B,GAAqB,CAC/E,MAAM,EACN,KAAK,OAAS,GACd,KAAK,KAAO,OACZ,KAAK,SAAWghB,EAChB,KAAK,SAAWwV,EAChB,KAAK,mBAAmB,CAC1B,CACA,KAAK3c,EAAQyT,EAAW,CACtB,aAAM,KAAKzT,EAAQyT,CAAS,EACxBzT,EAAO,wBAA0B,SACnC,KAAK,sBAAwBA,EAAO,sBAAsB,MAAM,GAE9DA,EAAO,wBAA0B,SACnC,KAAK,sBAAwB,OAAO,OAAO,CAAC,EAAGA,EAAO,qBAAqB,GAE7E,KAAK,SAAW,MAAM,QAAQA,EAAO,QAAQ,EAAIA,EAAO,SAAS,MAAM,EAAIA,EAAO,SAClF,KAAK,SAAWA,EAAO,SAChB,IACT,CACA,oBAAqB,CAEnB,IAAM0b,EADW,KAAK,SACW,gBAC3BkB,EAAO,OAAO,KAAKlB,CAAe,EACxC,GAAIkB,EAAK,OAAS,EAAG,CACnB,IAAMxD,EAAiBsC,EAAgBkB,EAAK,CAAC,CAAC,EAC9C,GAAIxD,IAAmB,OAAQ,CAC7B,KAAK,sBAAwB,CAAC,EAC9B,KAAK,sBAAwB,CAAC,EAC9B,QAASrkB,EAAI,EAAG8nB,EAAKzD,EAAe,OAAQrkB,EAAI8nB,EAAI9nB,IAAK,CACvD,IAAMiI,EAAOoc,EAAerkB,CAAC,EAAE,MAAQ,OAAOA,CAAC,EAC/C,KAAK,sBAAsB,KAAK,CAAC,EACjC,KAAK,sBAAsBiI,CAAI,EAAIjI,CACrC,CACF,CACF,CACF,CACA,kBAAkBpB,EAAO8K,EAAQ,CAC/B,IAAM0I,EAAW,KAAK,SAChB8H,EAAW9H,EAAS,WAAW,SAC/B2V,EAAgB3V,EAAS,gBAAgB,SACzCkS,EAAuBlS,EAAS,qBACtC1I,EAAO,oBAAoBwQ,EAAUtb,CAAK,EAC1C,IAAMopB,EAAkB,KAAK,sBAC7B,GAAID,GAAiBC,EAAiB,CACpCP,GAAQ,IAAI,EAAG,EAAG,CAAC,EACnB,QAAS1oB,EAAI,EAAG4N,EAAKob,EAAc,OAAQhpB,EAAI4N,EAAI5N,IAAK,CACtD,IAAMkpB,EAAYD,EAAgBjpB,CAAC,EAC7BslB,EAAiB0D,EAAchpB,CAAC,EAClCkpB,IAAc,IAClBT,GAAO,oBAAoBnD,EAAgBzlB,CAAK,EAC5C0lB,EACFmD,GAAQ,gBAAgBD,GAAQS,CAAS,EAEzCR,GAAQ,gBAAgBD,GAAO,IAAI9d,CAAM,EAAGue,CAAS,EAEzD,CACAve,EAAO,IAAI+d,EAAO,CACpB,CACA,OAAO/d,CACT,CACA,QAAQwe,EAAWC,EAAa,CAC9B,IAAM/V,EAAW,KAAK,SAChBwV,EAAW,KAAK,SAChBQ,EAAc,KAAK,YACrBR,IAAa,SACbxV,EAAS,iBAAmB,MAAMA,EAAS,sBAAsB,EACrE+U,GAAU,KAAK/U,EAAS,cAAc,EACtC+U,GAAU,aAAaiB,CAAW,EAClClB,GAAO,KAAKgB,EAAU,GAAG,EAAE,OAAOA,EAAU,IAAI,EAC5C,EAAAf,GAAU,cAAcD,GAAO,MAAM,IAAM,KACzCA,GAAO,gBAAgBC,GAAWC,EAAY,IAAM,MACpDF,GAAO,OAAO,kBAAkBE,EAAY,EAAIiB,GAAMH,EAAU,IAAMA,EAAU,KAAM,CAAC,MAE7FjB,GAAiB,KAAKmB,CAAW,EAAE,OAAO,EAC1ClB,GAAO,KAAKgB,EAAU,GAAG,EAAE,aAAajB,EAAgB,EACpD,EAAA7U,EAAS,cAAgB,MACvB8U,GAAO,cAAc9U,EAAS,WAAW,IAAM,KAErD,KAAK,sBAAsB8V,EAAWC,EAAajB,EAAM,GAC3D,CACA,sBAAsBgB,EAAWC,EAAaG,EAAe,CAC3D,IAAIC,EACEnW,EAAW,KAAK,SAChBwV,EAAW,KAAK,SAChBhpB,EAAQwT,EAAS,MACjB8H,EAAW9H,EAAS,WAAW,SAC/BlH,EAAKkH,EAAS,WAAW,GACzBoW,EAAMpW,EAAS,WAAW,IAC1BhB,EAASgB,EAAS,WAAW,OAC7BmT,EAASnT,EAAS,OAClBqW,EAAYrW,EAAS,UAC3B,GAAIxT,IAAU,KACZ,GAAI,MAAM,QAAQgpB,CAAQ,EACxB,QAAS7oB,EAAI,EAAG4N,EAAK4Y,EAAO,OAAQxmB,EAAI4N,EAAI5N,IAAK,CAC/C,IAAMymB,EAAQD,EAAOxmB,CAAC,EAChB2pB,EAAgBd,EAASpC,EAAM,aAAa,EAC5CnC,EAAQ,KAAK,IAAImC,EAAM,MAAOiD,EAAU,KAAK,EAC7CE,EAAM,KAAK,IAAI/pB,EAAM,MAAO,KAAK,IAAI4mB,EAAM,MAAQA,EAAM,MAAOiD,EAAU,MAAQA,EAAU,KAAK,CAAC,EACxG,QAAS/U,EAAI2P,EAAOkB,EAAKoE,EAAKjV,EAAI6Q,EAAI7Q,GAAK,EAAG,CAC5C,IAAMvR,EAAIvD,EAAM,KAAK8U,CAAC,EAChB,EAAI9U,EAAM,KAAK8U,EAAI,CAAC,EACpBrR,EAAIzD,EAAM,KAAK8U,EAAI,CAAC,EAC1B6U,EAAeK,GAA0B,KAAMF,EAAeR,EAAWI,EAAepd,EAAIsd,EAAKpX,EAAQjP,EAAG,EAAGE,CAAC,EAC5GkmB,IACFA,EAAa,UAAY,KAAK,MAAM7U,EAAI,CAAC,EACzC6U,EAAa,KAAK,cAAgB/C,EAAM,cACxC2C,EAAY,KAAKI,CAAY,EAEjC,CACF,KACK,CACL,IAAMlF,EAAQ,KAAK,IAAI,EAAGoF,EAAU,KAAK,EACnCE,EAAM,KAAK,IAAI/pB,EAAM,MAAO6pB,EAAU,MAAQA,EAAU,KAAK,EACnE,QAAS1pB,EAAIskB,EAAO1W,EAAKgc,EAAK5pB,EAAI4N,EAAI5N,GAAK,EAAG,CAC5C,IAAMoD,EAAIvD,EAAM,KAAKG,CAAC,EAChBqD,EAAIxD,EAAM,KAAKG,EAAI,CAAC,EACpBsD,EAAIzD,EAAM,KAAKG,EAAI,CAAC,EAC1BwpB,EAAeK,GAA0B,KAAMhB,EAAUM,EAAWI,EAAepd,EAAIsd,EAAKpX,EAAQjP,EAAGC,EAAGC,CAAC,EACvGkmB,IACFA,EAAa,UAAY,KAAK,MAAMxpB,EAAI,CAAC,EACzCopB,EAAY,KAAKI,CAAY,EAEjC,CACF,SACSrO,IAAa,OACtB,GAAI,MAAM,QAAQ0N,CAAQ,EACxB,QAAS7oB,EAAI,EAAG4N,EAAK4Y,EAAO,OAAQxmB,EAAI4N,EAAI5N,IAAK,CAC/C,IAAMymB,EAAQD,EAAOxmB,CAAC,EAChB2pB,EAAgBd,EAASpC,EAAM,aAAa,EAC5CnC,EAAQ,KAAK,IAAImC,EAAM,MAAOiD,EAAU,KAAK,EAC7CE,EAAM,KAAK,IAAIzO,EAAS,MAAO,KAAK,IAAIsL,EAAM,MAAQA,EAAM,MAAOiD,EAAU,MAAQA,EAAU,KAAK,CAAC,EAC3G,QAAS/U,EAAI2P,EAAOkB,EAAKoE,EAAKjV,EAAI6Q,EAAI7Q,GAAK,EAAG,CAC5C,IAAMvR,EAAIuR,EACJ,EAAIA,EAAI,EACRrR,EAAIqR,EAAI,EACd6U,EAAeK,GAA0B,KAAMF,EAAeR,EAAWI,EAAepd,EAAIsd,EAAKpX,EAAQjP,EAAG,EAAGE,CAAC,EAC5GkmB,IACFA,EAAa,UAAY,KAAK,MAAM7U,EAAI,CAAC,EACzC6U,EAAa,KAAK,cAAgB/C,EAAM,cACxC2C,EAAY,KAAKI,CAAY,EAEjC,CACF,KACK,CACL,IAAMlF,EAAQ,KAAK,IAAI,EAAGoF,EAAU,KAAK,EACnCE,EAAM,KAAK,IAAIzO,EAAS,MAAOuO,EAAU,MAAQA,EAAU,KAAK,EACtE,QAAS1pB,EAAIskB,EAAO1W,EAAKgc,EAAK5pB,EAAI4N,EAAI5N,GAAK,EAAG,CAC5C,IAAMoD,EAAIpD,EACJqD,EAAIrD,EAAI,EACRsD,EAAItD,EAAI,EACdwpB,EAAeK,GAA0B,KAAMhB,EAAUM,EAAWI,EAAepd,EAAIsd,EAAKpX,EAAQjP,EAAGC,EAAGC,CAAC,EACvGkmB,IACFA,EAAa,UAAY,KAAK,MAAMxpB,EAAI,CAAC,EACzCopB,EAAY,KAAKI,CAAY,EAEjC,CACF,CAEJ,CACF,EACA,SAASM,GAAoB9W,EAAQ6V,EAAUM,EAAWlT,EAAK4Q,EAAIC,EAAIC,EAAI5T,EAAO,CAChF,IAAI4W,EAMJ,GALIlB,EAAS,OAAS5hC,GACpB8iC,EAAa9T,EAAI,kBAAkB8Q,EAAID,EAAID,EAAI,GAAM1T,CAAK,EAE1D4W,EAAa9T,EAAI,kBAAkB4Q,EAAIC,EAAIC,EAAI8B,EAAS,OAAS77B,GAAWmmB,CAAK,EAE/E4W,IAAe,KAAM,OAAO,KAChCnB,GAAwB,KAAKzV,CAAK,EAClCyV,GAAwB,aAAa5V,EAAO,WAAW,EACvD,IAAMgL,EAAWmL,EAAU,IAAI,OAAO,WAAWP,EAAuB,EACxE,OAAI5K,EAAWmL,EAAU,MAAQnL,EAAWmL,EAAU,IAAY,KAC3D,CACL,SAAAnL,EACA,MAAO4K,GAAwB,MAAM,EACrC,OAAA5V,CACF,CACF,CACA,SAAS6W,GAA0B7W,EAAQ6V,EAAUM,EAAWlT,EAAK9J,EAAIsd,EAAKpX,EAAQjP,EAAGC,EAAG,EAAG,CAC7F2P,EAAO,kBAAkB5P,EAAGklB,EAAK,EACjCtV,EAAO,kBAAkB3P,EAAGklB,EAAK,EACjCvV,EAAO,kBAAkB,EAAGwV,EAAK,EACjC,IAAMgB,EAAeM,GAAoB9W,EAAQ6V,EAAUM,EAAWlT,EAAKqS,GAAOC,GAAOC,GAAOG,EAAkB,EAClH,GAAIa,EAAc,CAChB,IAAM/H,EAAY,IAAIpjB,EACtBvB,GAAS,aAAa6rB,GAAoBL,GAAOC,GAAOC,GAAO/G,CAAS,EACpEtV,IACFqd,EAAa,GAAK1sB,GAAS,yBAAyBqP,EAAI/I,EAAGC,EAAG,EAAGoe,EAAW,IAAIrjB,CAAS,GAEvFqrB,IACFD,EAAa,IAAM1sB,GAAS,yBAAyB2sB,EAAKrmB,EAAGC,EAAG,EAAGoe,EAAW,IAAIrjB,CAAS,GAEzFiU,IACFmX,EAAa,OAAS1sB,GAAS,yBAAyBuV,EAAQjP,EAAGC,EAAG,EAAGoe,EAAW,IAAIpjB,CAAS,EAC7FmrB,EAAa,OAAO,IAAIvT,EAAI,SAAS,EAAI,GAC3CuT,EAAa,OAAO,eAAe,EAAE,GAGzC,IAAMQ,EAAO,CACX,EAAA5mB,EACA,EAAAC,EACA,EACA,OAAQ,IAAIhF,EACZ,cAAe,CACjB,EACAvB,GAAS,UAAUwrB,GAAOC,GAAOC,GAAOwB,EAAK,MAAM,EACnDR,EAAa,KAAOQ,EACpBR,EAAa,UAAY/H,CAC3B,CACA,OAAO+H,CACT,CACA,IAAI9hC,GAAc,MAAMuiC,WAAqBpiC,EAAe,CAC1D,YAAYylB,EAAQ,EAAGC,EAAS,EAAGI,EAAQ,EAAGuc,EAAgB,EAAGC,EAAiB,EAAGC,EAAgB,EAAG,CACtG,MAAM,EACN,KAAK,KAAO,cACZ,KAAK,WAAa,CAChB,MAAA9c,EACA,OAAAC,EACA,MAAAI,EACA,cAAAuc,EACA,eAAAC,EACA,cAAAC,CACF,EACA,IAAMC,EAAQ,KACdH,EAAgB,KAAK,MAAMA,CAAa,EACxCC,EAAiB,KAAK,MAAMA,CAAc,EAC1CC,EAAgB,KAAK,MAAMA,CAAa,EACxC,IAAM1C,EAAU,CAAC,EACX4C,EAAW,CAAC,EACZjD,EAAU,CAAC,EACXkD,EAAM,CAAC,EACTC,EAAmB,EACnBC,EAAa,EACjBC,EAAW,IAAK,IAAK,IAAK,GAAI,GAAI/c,EAAOJ,EAAQD,EAAO8c,EAAeD,EAAgB,CAAC,EACxFO,EAAW,IAAK,IAAK,IAAK,EAAG,GAAI/c,EAAOJ,EAAQ,CAACD,EAAO8c,EAAeD,EAAgB,CAAC,EACxFO,EAAW,IAAK,IAAK,IAAK,EAAG,EAAGpd,EAAOK,EAAOJ,EAAQ2c,EAAeE,EAAe,CAAC,EACrFM,EAAW,IAAK,IAAK,IAAK,EAAG,GAAIpd,EAAOK,EAAO,CAACJ,EAAQ2c,EAAeE,EAAe,CAAC,EACvFM,EAAW,IAAK,IAAK,IAAK,EAAG,GAAIpd,EAAOC,EAAQI,EAAOuc,EAAeC,EAAgB,CAAC,EACvFO,EAAW,IAAK,IAAK,IAAK,GAAI,GAAIpd,EAAOC,EAAQ,CAACI,EAAOuc,EAAeC,EAAgB,CAAC,EACzF,KAAK,SAASzC,CAAO,EACrB,KAAK,aAAa,WAAY,IAAI/6B,GAAuB29B,EAAU,CAAC,CAAC,EACrE,KAAK,aAAa,SAAU,IAAI39B,GAAuB06B,EAAS,CAAC,CAAC,EAClE,KAAK,aAAa,KAAM,IAAI16B,GAAuB49B,EAAK,CAAC,CAAC,EAC1D,SAASG,EAAW/X,EAAGrO,EAAGgI,EAAGqe,EAAMC,EAAMC,EAAQC,EAASC,EAAQC,EAAOC,EAAO/F,EAAe,CAC7F,IAAMgG,EAAeL,EAASG,EACxBG,EAAgBL,EAAUG,EAC1BG,EAAYP,EAAS,EACrBQ,EAAaP,EAAU,EACvBQ,EAAYP,EAAS,EACrBQ,EAASP,EAAQ,EACjBQ,EAASP,EAAQ,EACnBQ,GAAgB,EAChBC,EAAa,EACXtY,GAAS,IAAI/U,EACnB,QAASstB,GAAK,EAAGA,GAAKH,EAAQG,KAAM,CAClC,IAAMlqB,GAAIkqB,GAAKR,EAAgBE,EAC/B,QAASO,GAAK,EAAGA,GAAKL,EAAQK,KAAM,CAClC,IAAMzqB,EAAIyqB,GAAKV,EAAeE,EAC9BhY,GAAOT,CAAC,EAAIxR,EAAIwpB,EAChBvX,GAAO9O,CAAC,EAAI7C,GAAImpB,EAChBxX,GAAO9G,CAAC,EAAIgf,EACZhB,EAAS,KAAKlX,GAAO,EAAGA,GAAO,EAAGA,GAAO,CAAC,EAC1CA,GAAOT,CAAC,EAAI,EACZS,GAAO9O,CAAC,EAAI,EACZ8O,GAAO9G,CAAC,EAAIye,EAAS,EAAI,EAAI,GAC7B1D,EAAQ,KAAKjU,GAAO,EAAGA,GAAO,EAAGA,GAAO,CAAC,EACzCmX,EAAI,KAAKqB,GAAKZ,CAAK,EACnBT,EAAI,KAAK,EAAIoB,GAAKV,CAAK,EACvBQ,IAAiB,CACnB,CACF,CACA,QAASE,GAAK,EAAGA,GAAKV,EAAOU,KAC3B,QAASC,GAAK,EAAGA,GAAKZ,EAAOY,KAAM,CACjC,IAAMxoB,GAAIonB,EAAmBoB,GAAKL,EAASI,GACrCtoB,EAAImnB,EAAmBoB,GAAKL,GAAUI,GAAK,GAC3CroB,GAAIknB,GAAoBoB,GAAK,GAAKL,GAAUI,GAAK,GACjDnkB,GAAIgjB,GAAoBoB,GAAK,GAAKL,EAASI,GACjDjE,EAAQ,KAAKtkB,GAAGC,EAAGmE,EAAC,EACpBkgB,EAAQ,KAAKrkB,EAAGC,GAAGkE,EAAC,EACpBkkB,GAAc,CAChB,CAEFrB,EAAM,SAASI,EAAYiB,EAAYxG,CAAa,EACpDuF,GAAciB,EACdlB,GAAoBiB,EACtB,CACF,CACA,KAAKvf,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,WAAa,OAAO,OAAO,CAAC,EAAGA,EAAO,UAAU,EAC9C,IACT,CACA,OAAO,SAAShB,EAAM,CACpB,OAAO,IAAI+e,GAAa/e,EAAK,MAAOA,EAAK,OAAQA,EAAK,MAAOA,EAAK,cAAeA,EAAK,eAAgBA,EAAK,aAAa,CAC1H,CACF,EACA,SAAS2gB,GAAcC,EAAK,CAC1B,IAAMhe,EAAM,CAAC,EACb,QAAW6E,KAAKmZ,EAAK,CACnBhe,EAAI6E,CAAC,EAAI,CAAC,EACV,QAAW2J,KAAKwP,EAAInZ,CAAC,EAAG,CACtB,IAAMoZ,EAAWD,EAAInZ,CAAC,EAAE2J,CAAC,EACrByP,IAAaA,EAAS,SAAWA,EAAS,WAAaA,EAAS,WAAaA,EAAS,WAAaA,EAAS,WAAaA,EAAS,WAAaA,EAAS,WAAaA,EAAS,cAC5KA,EAAS,uBACX,QAAQ,KAAK,oGAAoG,EACjHje,EAAI6E,CAAC,EAAE2J,CAAC,EAAI,MAEZxO,EAAI6E,CAAC,EAAE2J,CAAC,EAAIyP,EAAS,MAAM,EAEpB,MAAM,QAAQA,CAAQ,EAC/Bje,EAAI6E,CAAC,EAAE2J,CAAC,EAAIyP,EAAS,MAAM,EAE3Bje,EAAI6E,CAAC,EAAE2J,CAAC,EAAIyP,CAEhB,CACF,CACA,OAAOje,CACT,CACA,SAASke,GAAcC,EAAU,CAC/B,IAAMC,EAAS,CAAC,EAChB,QAASvZ,EAAI,EAAGA,EAAIsZ,EAAS,OAAQtZ,IAAK,CACxC,IAAM1K,EAAO4jB,GAAcI,EAAStZ,CAAC,CAAC,EACtC,QAAW2J,KAAKrU,EACdikB,EAAO5P,CAAC,EAAIrU,EAAKqU,CAAC,CAEtB,CACA,OAAO4P,CACT,CACA,SAASC,GAAoBL,EAAK,CAChC,IAAMhe,EAAM,CAAC,EACb,QAAS6E,EAAI,EAAGA,EAAImZ,EAAI,OAAQnZ,IAC9B7E,EAAI,KAAKge,EAAInZ,CAAC,EAAE,MAAM,CAAC,EAEzB,OAAO7E,CACT,CACA,SAASse,GAA0BC,EAAU,CAC3C,IAAMC,EAAsBD,EAAS,gBAAgB,EACrD,OAAIC,IAAwB,KACnBD,EAAS,iBAEdC,EAAoB,mBAAqB,GACpCA,EAAoB,QAAQ,WAE9B1jC,GAAgB,iBACzB,CACA,IAAI+U,GAAgB,CAAE,MAAOkuB,GAAe,MAAOG,EAAc,EAC7DO,GAAiB;AAAA;AAAA,GACjBC,GAAmB;AAAA;AAAA,GACnBnyB,GAAiB,cAAcxI,EAAS,CAC1C,YAAY8sB,EAAY,CACtB,MAAM,EACN,KAAK,iBAAmB,GACxB,KAAK,KAAO,iBACZ,KAAK,QAAU,CAAC,EAChB,KAAK,SAAW,CAAC,EACjB,KAAK,eAAiB,CAAC,EACvB,KAAK,aAAe4N,GACpB,KAAK,eAAiBC,GACtB,KAAK,UAAY,EACjB,KAAK,UAAY,GACjB,KAAK,mBAAqB,EAC1B,KAAK,IAAM,GACX,KAAK,OAAS,GACd,KAAK,SAAW,GAChB,KAAK,gBAAkB,GACvB,KAAK,WAAa,CAChB,iBAAkB,GAElB,UAAW,EAEb,EACA,KAAK,uBAAyB,CAC5B,MAAS,CAAC,EAAG,EAAG,CAAC,EACjB,GAAM,CAAC,EAAG,CAAC,EACX,IAAO,CAAC,EAAG,CAAC,CACd,EACA,KAAK,oBAAsB,OAC3B,KAAK,mBAAqB,GAC1B,KAAK,YAAc,KACf7N,IAAe,QACjB,KAAK,UAAUA,CAAU,CAE7B,CACA,KAAKzS,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,eAAiBA,EAAO,eAC7B,KAAK,aAAeA,EAAO,aAC3B,KAAK,SAAW2f,GAAc3f,EAAO,QAAQ,EAC7C,KAAK,eAAiBigB,GAAoBjgB,EAAO,cAAc,EAC/D,KAAK,QAAU,OAAO,OAAO,CAAC,EAAGA,EAAO,OAAO,EAC/C,KAAK,UAAYA,EAAO,UACxB,KAAK,mBAAqBA,EAAO,mBACjC,KAAK,IAAMA,EAAO,IAClB,KAAK,OAASA,EAAO,OACrB,KAAK,SAAWA,EAAO,SACvB,KAAK,WAAa,OAAO,OAAO,CAAC,EAAGA,EAAO,UAAU,EACrD,KAAK,YAAcA,EAAO,YACnB,IACT,CACA,OAAOd,EAAM,CACX,IAAMF,EAAO,MAAM,OAAOE,CAAI,EAC9BF,EAAK,YAAc,KAAK,YACxBA,EAAK,SAAW,CAAC,EACjB,QAAWhC,KAAQ,KAAK,SAAU,CAEhC,IAAMtI,EADU,KAAK,SAASsI,CAAI,EACZ,MAClBtI,GAASA,EAAM,UACjBsK,EAAK,SAAShC,CAAI,EAAI,CACpB,KAAM,IACN,MAAOtI,EAAM,OAAOwK,CAAI,EAAE,IAC5B,EACSxK,GAASA,EAAM,QACxBsK,EAAK,SAAShC,CAAI,EAAI,CACpB,KAAM,IACN,MAAOtI,EAAM,OAAO,CACtB,EACSA,GAASA,EAAM,UACxBsK,EAAK,SAAShC,CAAI,EAAI,CACpB,KAAM,KACN,MAAOtI,EAAM,QAAQ,CACvB,EACSA,GAASA,EAAM,UACxBsK,EAAK,SAAShC,CAAI,EAAI,CACpB,KAAM,KACN,MAAOtI,EAAM,QAAQ,CACvB,EACSA,GAASA,EAAM,UACxBsK,EAAK,SAAShC,CAAI,EAAI,CACpB,KAAM,KACN,MAAOtI,EAAM,QAAQ,CACvB,EACSA,GAASA,EAAM,UACxBsK,EAAK,SAAShC,CAAI,EAAI,CACpB,KAAM,KACN,MAAOtI,EAAM,QAAQ,CACvB,EACSA,GAASA,EAAM,UACxBsK,EAAK,SAAShC,CAAI,EAAI,CACpB,KAAM,KACN,MAAOtI,EAAM,QAAQ,CACvB,EAEAsK,EAAK,SAAShC,CAAI,EAAI,CACpB,MAAAtI,CACF,CAEJ,CACI,OAAO,KAAK,KAAK,OAAO,EAAE,OAAS,IAAGsK,EAAK,QAAU,KAAK,SAC9DA,EAAK,aAAe,KAAK,aACzBA,EAAK,eAAiB,KAAK,eAC3BA,EAAK,OAAS,KAAK,OACnBA,EAAK,SAAW,KAAK,SACrB,IAAMuhB,EAAa,CAAC,EACpB,QAAW/M,KAAO,KAAK,WACjB,KAAK,WAAWA,CAAG,IAAM,KAAM+M,EAAW/M,CAAG,EAAI,IAEvD,OAAI,OAAO,KAAK+M,CAAU,EAAE,OAAS,IAAGvhB,EAAK,WAAauhB,GACnDvhB,CACT,CACF,EACIjjB,GAAS,cAAcqM,EAAS,CAClC,aAAc,CACZ,MAAM,EACN,KAAK,SAAW,GAChB,KAAK,KAAO,SACZ,KAAK,mBAAqB,IAAIpC,GAC9B,KAAK,iBAAmB,IAAIA,GAC5B,KAAK,wBAA0B,IAAIA,GACnC,KAAK,iBAAmByM,EAC1B,CACA,KAAKuN,EAAQyT,EAAW,CACtB,aAAM,KAAKzT,EAAQyT,CAAS,EAC5B,KAAK,mBAAmB,KAAKzT,EAAO,kBAAkB,EACtD,KAAK,iBAAiB,KAAKA,EAAO,gBAAgB,EAClD,KAAK,wBAAwB,KAAKA,EAAO,uBAAuB,EAChE,KAAK,iBAAmBA,EAAO,iBACxB,IACT,CACA,kBAAkBvB,EAAQ,CACxB,OAAO,MAAM,kBAAkBA,CAAM,EAAE,OAAO,CAChD,CACA,kBAAkByT,EAAO,CACvB,MAAM,kBAAkBA,CAAK,EAC7B,KAAK,mBAAmB,KAAK,KAAK,WAAW,EAAE,OAAO,CACxD,CACA,kBAAkBC,EAAeC,EAAgB,CAC/C,MAAM,kBAAkBD,EAAeC,CAAc,EACrD,KAAK,mBAAmB,KAAK,KAAK,WAAW,EAAE,OAAO,CACxD,CACA,OAAQ,CACN,OAAO,IAAI,KAAK,YAAY,EAAE,KAAK,IAAI,CACzC,CACF,EACIoO,GAAwB,IAAIruB,EAC5BsuB,GAA6B,IAAIvuB,EACjCwuB,GAA6B,IAAIxuB,EACjC7I,GAAoB,cAActN,EAAO,CAC3C,YAAY4kC,EAAO,GAAIC,EAAU,EAAG3Q,EAAO,GAAKC,EAAM,IAAK,CACzD,MAAM,EACN,KAAK,oBAAsB,GAC3B,KAAK,KAAO,oBACZ,KAAK,IAAMyQ,EACX,KAAK,KAAO,EACZ,KAAK,KAAO1Q,EACZ,KAAK,IAAMC,EACX,KAAK,MAAQ,GACb,KAAK,OAAS0Q,EACd,KAAK,KAAO,KACZ,KAAK,UAAY,GACjB,KAAK,WAAa,EAClB,KAAK,uBAAuB,CAC9B,CACA,KAAK5gB,EAAQyT,EAAW,CACtB,aAAM,KAAKzT,EAAQyT,CAAS,EAC5B,KAAK,IAAMzT,EAAO,IAClB,KAAK,KAAOA,EAAO,KACnB,KAAK,KAAOA,EAAO,KACnB,KAAK,IAAMA,EAAO,IAClB,KAAK,MAAQA,EAAO,MACpB,KAAK,OAASA,EAAO,OACrB,KAAK,KAAOA,EAAO,OAAS,KAAO,KAAO,OAAO,OAAO,CAAC,EAAGA,EAAO,IAAI,EACvE,KAAK,UAAYA,EAAO,UACxB,KAAK,WAAaA,EAAO,WAClB,IACT,CASA,eAAe6gB,EAAa,CAC1B,IAAMC,EAAe,GAAM,KAAK,cAAc,EAAID,EAClD,KAAK,IAAM1sB,GAAU,EAAI,KAAK,KAAK2sB,CAAY,EAC/C,KAAK,uBAAuB,CAC9B,CAIA,gBAAiB,CACf,IAAMA,EAAe,KAAK,IAAI5sB,GAAU,GAAM,KAAK,GAAG,EACtD,MAAO,IAAM,KAAK,cAAc,EAAI4sB,CACtC,CACA,iBAAkB,CAChB,OAAO3sB,GAAU,EAAI,KAAK,KACxB,KAAK,IAAID,GAAU,GAAM,KAAK,GAAG,EAAI,KAAK,IAC5C,CACF,CACA,cAAe,CACb,OAAO,KAAK,UAAY,KAAK,IAAI,KAAK,OAAQ,CAAC,CACjD,CACA,eAAgB,CACd,OAAO,KAAK,UAAY,KAAK,IAAI,KAAK,OAAQ,CAAC,CACjD,CAKA,cAAc4d,EAAUiP,EAAWC,EAAW,CAC5CR,GAAM,IAAI,GAAI,GAAI,EAAG,EAAE,aAAa,KAAK,uBAAuB,EAChEO,EAAU,IAAIP,GAAM,EAAGA,GAAM,CAAC,EAAE,eAAe,CAAC1O,EAAW0O,GAAM,CAAC,EAClEA,GAAM,IAAI,EAAG,EAAG,EAAG,EAAE,aAAa,KAAK,uBAAuB,EAC9DQ,EAAU,IAAIR,GAAM,EAAGA,GAAM,CAAC,EAAE,eAAe,CAAC1O,EAAW0O,GAAM,CAAC,CACpE,CAKA,YAAY1O,EAAUrT,EAAQ,CAC5B,YAAK,cAAcqT,EAAU2O,GAAYC,EAAU,EAC5CjiB,EAAO,WAAWiiB,GAAYD,EAAU,CACjD,CAoCA,cAAcQ,EAAWC,EAAYjsB,EAAGM,EAAG6L,EAAOC,EAAQ,CACxD,KAAK,OAAS4f,EAAYC,EACtB,KAAK,OAAS,OAChB,KAAK,KAAO,CACV,QAAS,GACT,UAAW,EACX,WAAY,EACZ,QAAS,EACT,QAAS,EACT,MAAO,EACP,OAAQ,CACV,GAEF,KAAK,KAAK,QAAU,GACpB,KAAK,KAAK,UAAYD,EACtB,KAAK,KAAK,WAAaC,EACvB,KAAK,KAAK,QAAUjsB,EACpB,KAAK,KAAK,QAAUM,EACpB,KAAK,KAAK,MAAQ6L,EAClB,KAAK,KAAK,OAASC,EACnB,KAAK,uBAAuB,CAC9B,CACA,iBAAkB,CACZ,KAAK,OAAS,OAChB,KAAK,KAAK,QAAU,IAEtB,KAAK,uBAAuB,CAC9B,CACA,wBAAyB,CACvB,IAAM4O,EAAO,KAAK,KACdF,EAAME,EAAO,KAAK,IAAI/b,GAAU,GAAM,KAAK,GAAG,EAAI,KAAK,KACvDmN,EAAS,EAAI0O,EACb3O,EAAQ,KAAK,OAASC,EACtBwO,EAAO,IAAOzO,EACZ+f,EAAO,KAAK,KAClB,GAAI,KAAK,OAAS,MAAQ,KAAK,KAAK,QAAS,CAC3C,IAAMF,EAAYE,EAAK,UAAWD,EAAaC,EAAK,WACpDtR,GAAQsR,EAAK,QAAU/f,EAAQ6f,EAC/BlR,GAAOoR,EAAK,QAAU9f,EAAS6f,EAC/B9f,GAAS+f,EAAK,MAAQF,EACtB5f,GAAU8f,EAAK,OAASD,CAC1B,CACA,IAAME,EAAO,KAAK,WACdA,IAAS,IAAGvR,GAAQI,EAAOmR,EAAO,KAAK,aAAa,GACxD,KAAK,iBAAiB,gBAAgBvR,EAAMA,EAAOzO,EAAO2O,EAAKA,EAAM1O,EAAQ4O,EAAM,KAAK,IAAK,KAAK,gBAAgB,EAClH,KAAK,wBAAwB,KAAK,KAAK,gBAAgB,EAAE,OAAO,CAClE,CACA,OAAO/Q,EAAM,CACX,IAAMF,EAAO,MAAM,OAAOE,CAAI,EAC9B,OAAAF,EAAK,OAAO,IAAM,KAAK,IACvBA,EAAK,OAAO,KAAO,KAAK,KACxBA,EAAK,OAAO,KAAO,KAAK,KACxBA,EAAK,OAAO,IAAM,KAAK,IACvBA,EAAK,OAAO,MAAQ,KAAK,MACzBA,EAAK,OAAO,OAAS,KAAK,OACtB,KAAK,OAAS,OAAMA,EAAK,OAAO,KAAO,OAAO,OAAO,CAAC,EAAG,KAAK,IAAI,GACtEA,EAAK,OAAO,UAAY,KAAK,UAC7BA,EAAK,OAAO,WAAa,KAAK,WACvBA,CACT,CACF,EACIqiB,GAAM,IACNC,GAAS,EACTnkC,GAAa,cAAciL,EAAS,CACtC,YAAY6nB,EAAMC,EAAKqR,EAAc,CACnC,MAAM,EACN,KAAK,KAAO,aACZ,KAAK,aAAeA,EACpB,KAAK,iBAAmB,KACxB,KAAK,kBAAoB,EACzB,IAAMC,EAAW,IAAIn4B,GAAkBg4B,GAAKC,GAAQrR,EAAMC,CAAG,EAC7DsR,EAAS,OAAS,KAAK,OACvB,KAAK,IAAIA,CAAQ,EACjB,IAAMC,EAAW,IAAIp4B,GAAkBg4B,GAAKC,GAAQrR,EAAMC,CAAG,EAC7DuR,EAAS,OAAS,KAAK,OACvB,KAAK,IAAIA,CAAQ,EACjB,IAAMC,EAAW,IAAIr4B,GAAkBg4B,GAAKC,GAAQrR,EAAMC,CAAG,EAC7DwR,EAAS,OAAS,KAAK,OACvB,KAAK,IAAIA,CAAQ,EACjB,IAAMC,EAAW,IAAIt4B,GAAkBg4B,GAAKC,GAAQrR,EAAMC,CAAG,EAC7DyR,EAAS,OAAS,KAAK,OACvB,KAAK,IAAIA,CAAQ,EACjB,IAAMC,EAAW,IAAIv4B,GAAkBg4B,GAAKC,GAAQrR,EAAMC,CAAG,EAC7D0R,EAAS,OAAS,KAAK,OACvB,KAAK,IAAIA,CAAQ,EACjB,IAAMC,EAAW,IAAIx4B,GAAkBg4B,GAAKC,GAAQrR,EAAMC,CAAG,EAC7D2R,EAAS,OAAS,KAAK,OACvB,KAAK,IAAIA,CAAQ,CACnB,CACA,wBAAyB,CACvB,IAAM1R,EAAmB,KAAK,iBACxB2R,EAAU,KAAK,SAAS,OAAO,EAC/B,CAACN,EAAUC,EAAUC,EAAUC,EAAUC,EAAUC,CAAQ,EAAIC,EACrE,QAAWpc,KAAUoc,EAAS,KAAK,OAAOpc,CAAM,EAChD,GAAIyK,IAAqB1d,GACvB+uB,EAAS,GAAG,IAAI,EAAG,EAAG,CAAC,EACvBA,EAAS,OAAO,EAAG,EAAG,CAAC,EACvBC,EAAS,GAAG,IAAI,EAAG,EAAG,CAAC,EACvBA,EAAS,OAAO,GAAI,EAAG,CAAC,EACxBC,EAAS,GAAG,IAAI,EAAG,EAAG,EAAE,EACxBA,EAAS,OAAO,EAAG,EAAG,CAAC,EACvBC,EAAS,GAAG,IAAI,EAAG,EAAG,CAAC,EACvBA,EAAS,OAAO,EAAG,GAAI,CAAC,EACxBC,EAAS,GAAG,IAAI,EAAG,EAAG,CAAC,EACvBA,EAAS,OAAO,EAAG,EAAG,CAAC,EACvBC,EAAS,GAAG,IAAI,EAAG,EAAG,CAAC,EACvBA,EAAS,OAAO,EAAG,EAAG,EAAE,UACf1R,IAAqBpd,GAC9ByuB,EAAS,GAAG,IAAI,EAAG,GAAI,CAAC,EACxBA,EAAS,OAAO,GAAI,EAAG,CAAC,EACxBC,EAAS,GAAG,IAAI,EAAG,GAAI,CAAC,EACxBA,EAAS,OAAO,EAAG,EAAG,CAAC,EACvBC,EAAS,GAAG,IAAI,EAAG,EAAG,CAAC,EACvBA,EAAS,OAAO,EAAG,EAAG,CAAC,EACvBC,EAAS,GAAG,IAAI,EAAG,EAAG,EAAE,EACxBA,EAAS,OAAO,EAAG,GAAI,CAAC,EACxBC,EAAS,GAAG,IAAI,EAAG,GAAI,CAAC,EACxBA,EAAS,OAAO,EAAG,EAAG,CAAC,EACvBC,EAAS,GAAG,IAAI,EAAG,GAAI,CAAC,EACxBA,EAAS,OAAO,EAAG,EAAG,EAAE,MAExB,OAAM,IAAI,MAAM,yEAA2E1R,CAAgB,EAE7G,QAAWzK,KAAUoc,EACnB,KAAK,IAAIpc,CAAM,EACfA,EAAO,kBAAkB,CAE7B,CACA,OAAOya,EAAU4B,EAAO,CAClB,KAAK,SAAW,MAAM,KAAK,kBAAkB,EACjD,GAAM,CAAE,aAAAR,EAAc,kBAAAS,CAAkB,EAAI,KACxC,KAAK,mBAAqB7B,EAAS,mBACrC,KAAK,iBAAmBA,EAAS,iBACjC,KAAK,uBAAuB,GAE9B,GAAM,CAACqB,EAAUC,EAAUC,EAAUC,EAAUC,EAAUC,CAAQ,EAAI,KAAK,SACpEzB,EAAsBD,EAAS,gBAAgB,EAC/C8B,EAAwB9B,EAAS,kBAAkB,EACnD+B,EAA2B/B,EAAS,qBAAqB,EACzDgC,EAAmBhC,EAAS,GAAG,QACrCA,EAAS,GAAG,QAAU,GACtB,IAAMiC,EAAkBb,EAAa,QAAQ,gBAC7CA,EAAa,QAAQ,gBAAkB,GACvCpB,EAAS,gBAAgBoB,EAAc,EAAGS,CAAiB,EAC3D7B,EAAS,OAAO4B,EAAOP,CAAQ,EAC/BrB,EAAS,gBAAgBoB,EAAc,EAAGS,CAAiB,EAC3D7B,EAAS,OAAO4B,EAAON,CAAQ,EAC/BtB,EAAS,gBAAgBoB,EAAc,EAAGS,CAAiB,EAC3D7B,EAAS,OAAO4B,EAAOL,CAAQ,EAC/BvB,EAAS,gBAAgBoB,EAAc,EAAGS,CAAiB,EAC3D7B,EAAS,OAAO4B,EAAOJ,CAAQ,EAC/BxB,EAAS,gBAAgBoB,EAAc,EAAGS,CAAiB,EAC3D7B,EAAS,OAAO4B,EAAOH,CAAQ,EAC/BL,EAAa,QAAQ,gBAAkBa,EACvCjC,EAAS,gBAAgBoB,EAAc,EAAGS,CAAiB,EAC3D7B,EAAS,OAAO4B,EAAOF,CAAQ,EAC/B1B,EAAS,gBAAgBC,EAAqB6B,EAAuBC,CAAwB,EAC7F/B,EAAS,GAAG,QAAUgC,EACtBZ,EAAa,QAAQ,iBAAmB,EAC1C,CACF,EACIjkC,GAAc,cAAciT,EAAQ,CACtC,YAAY2iB,EAAQzT,EAASC,EAAOC,EAAOC,EAAWC,EAAWC,EAAQvM,EAAMwM,EAAY3B,EAAY,CACrG8U,EAASA,IAAW,OAASA,EAAS,CAAC,EACvCzT,EAAUA,IAAY,OAASA,EAAUriB,GACzC,MAAM81B,EAAQzT,EAASC,EAAOC,EAAOC,EAAWC,EAAWC,EAAQvM,EAAMwM,EAAY3B,CAAU,EAC/F,KAAK,cAAgB,GACrB,KAAK,MAAQ,EACf,CACA,IAAI,QAAS,CACX,OAAO,KAAK,KACd,CACA,IAAI,OAAO1J,EAAO,CAChB,KAAK,MAAQA,CACf,CACF,EACIhC,GAAwB,cAAcE,EAAkB,CAC1D,YAAYgU,EAAO,EAAGtF,EAAU,CAAC,EAAG,CAClC,MAAMsF,EAAMA,EAAMtF,CAAO,EACzB,KAAK,wBAA0B,GAC/B,IAAMzC,EAAQ,CAAE,MAAO+H,EAAM,OAAQA,EAAM,MAAO,CAAE,EAC9CsM,EAAS,CAACrU,EAAOA,EAAOA,EAAOA,EAAOA,EAAOA,CAAK,EACxD,KAAK,QAAU,IAAIvhB,GAAY41B,EAAQ5R,EAAQ,QAASA,EAAQ,MAAOA,EAAQ,MAAOA,EAAQ,UAAWA,EAAQ,UAAWA,EAAQ,OAAQA,EAAQ,KAAMA,EAAQ,WAAYA,EAAQ,UAAU,EAChM,KAAK,QAAQ,sBAAwB,GACrC,KAAK,QAAQ,gBAAkBA,EAAQ,kBAAoB,OAASA,EAAQ,gBAAkB,GAC9F,KAAK,QAAQ,UAAYA,EAAQ,YAAc,OAASA,EAAQ,UAAY7c,EAC9E,CACA,2BAA2B07B,EAAU5e,EAAS,CAC5C,KAAK,QAAQ,KAAOA,EAAQ,KAC5B,KAAK,QAAQ,WAAaA,EAAQ,WAClC,KAAK,QAAQ,gBAAkBA,EAAQ,gBACvC,KAAK,QAAQ,UAAYA,EAAQ,UACjC,KAAK,QAAQ,UAAYA,EAAQ,UACjC,IAAM8gB,EAAS,CACb,SAAU,CACR,UAAW,CAAE,MAAO,IAAK,CAC3B,EACA,aAEE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAoBF,eAEE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAmBJ,EACMlb,EAAW,IAAI3rB,GAAY,EAAG,EAAG,CAAC,EAClCmhC,EAAW,IAAIxuB,GAAe,CAClC,KAAM,sBACN,SAAUwxB,GAAc0C,EAAO,QAAQ,EACvC,aAAcA,EAAO,aACrB,eAAgBA,EAAO,eACvB,KAAMtnC,GACN,SAAU4M,EACZ,CAAC,EACDg1B,EAAS,SAAS,UAAU,MAAQpb,EACpC,IAAM+gB,EAAO,IAAIp8B,GAAKihB,EAAUwV,CAAQ,EAClC4F,EAAmBhhB,EAAQ,UACjC,OAAIA,EAAQ,YAAc1c,KAA0B0c,EAAQ,UAAY9c,IACzD,IAAItH,GAAW,EAAG,GAAI,IAAI,EAClC,OAAOgjC,EAAUmC,CAAI,EAC5B/gB,EAAQ,UAAYghB,EACpBD,EAAK,SAAS,QAAQ,EACtBA,EAAK,SAAS,QAAQ,EACf,IACT,CACA,MAAMnC,EAAUjiB,EAAOuD,EAAO+gB,EAAS,CACrC,IAAMpC,EAAsBD,EAAS,gBAAgB,EACrD,QAASrsB,EAAI,EAAGA,EAAI,EAAGA,IACrBqsB,EAAS,gBAAgB,KAAMrsB,CAAC,EAChCqsB,EAAS,MAAMjiB,EAAOuD,EAAO+gB,CAAO,EAEtCrC,EAAS,gBAAgBC,CAAmB,CAC9C,CACF,EACIqC,GAA2B,IAAItwB,EAC/BuwB,GAA2B,IAAIvwB,EAC/BwwB,GAAgC,IAAI58B,GACpCuD,GAAQ,KAAM,CAChB,YAAY6c,EAAS,IAAIhU,EAAQ,EAAG,EAAG,CAAC,EAAGywB,EAAW,EAAG,CACvD,KAAK,QAAU,GACf,KAAK,OAASzc,EACd,KAAK,SAAWyc,CAClB,CACA,IAAIzc,EAAQyc,EAAU,CACpB,YAAK,OAAO,KAAKzc,CAAM,EACvB,KAAK,SAAWyc,EACT,IACT,CACA,cAAc3tB,EAAGM,EAAG4K,EAAGC,EAAG,CACxB,YAAK,OAAO,IAAInL,EAAGM,EAAG4K,CAAC,EACvB,KAAK,SAAWC,EACT,IACT,CACA,8BAA8B+F,EAAQc,EAAO,CAC3C,YAAK,OAAO,KAAKd,CAAM,EACvB,KAAK,SAAW,CAACc,EAAM,IAAI,KAAK,MAAM,EAC/B,IACT,CACA,sBAAsB/P,EAAGC,EAAGC,EAAG,CAC7B,IAAM+O,EAASsc,GAAS,WAAWrrB,EAAGD,CAAC,EAAE,MAAMurB,GAAS,WAAWxrB,EAAGC,CAAC,CAAC,EAAE,UAAU,EACpF,YAAK,8BAA8BgP,EAAQjP,CAAC,EACrC,IACT,CACA,KAAKsQ,EAAO,CACV,YAAK,OAAO,KAAKA,EAAM,MAAM,EAC7B,KAAK,SAAWA,EAAM,SACf,IACT,CACA,WAAY,CACV,IAAMqb,EAAsB,EAAI,KAAK,OAAO,OAAO,EACnD,YAAK,OAAO,eAAeA,CAAmB,EAC9C,KAAK,UAAYA,EACV,IACT,CACA,QAAS,CACP,YAAK,UAAY,GACjB,KAAK,OAAO,OAAO,EACZ,IACT,CACA,gBAAgB5b,EAAO,CACrB,OAAO,KAAK,OAAO,IAAIA,CAAK,EAAI,KAAK,QACvC,CACA,iBAAiBM,EAAQ,CACvB,OAAO,KAAK,gBAAgBA,EAAO,MAAM,EAAIA,EAAO,MACtD,CACA,aAAaN,EAAOxI,EAAQ,CAC1B,OAAOA,EAAO,KAAKwI,CAAK,EAAE,gBAAgB,KAAK,OAAQ,CAAC,KAAK,gBAAgBA,CAAK,CAAC,CACrF,CACA,cAAc6b,EAAMrkB,EAAQ,CAC1B,IAAMqL,EAAYgZ,EAAK,MAAML,EAAQ,EAC/BjqB,EAAc,KAAK,OAAO,IAAIsR,CAAS,EAC7C,GAAItR,IAAgB,EAClB,OAAI,KAAK,gBAAgBsqB,EAAK,KAAK,IAAM,EAChCrkB,EAAO,KAAKqkB,EAAK,KAAK,EAExB,KAET,IAAMrtB,EAAI,EAAEqtB,EAAK,MAAM,IAAI,KAAK,MAAM,EAAI,KAAK,UAAYtqB,EAC3D,OAAI/C,EAAI,GAAKA,EAAI,EACR,KAEFgJ,EAAO,KAAKqkB,EAAK,KAAK,EAAE,gBAAgBhZ,EAAWrU,CAAC,CAC7D,CACA,eAAeqtB,EAAM,CACnB,IAAMC,EAAY,KAAK,gBAAgBD,EAAK,KAAK,EAC3CE,EAAU,KAAK,gBAAgBF,EAAK,GAAG,EAC7C,OAAOC,EAAY,GAAKC,EAAU,GAAKA,EAAU,GAAKD,EAAY,CACpE,CACA,cAAc/b,EAAK,CACjB,OAAOA,EAAI,gBAAgB,IAAI,CACjC,CACA,iBAAiBO,EAAQ,CACvB,OAAOA,EAAO,gBAAgB,IAAI,CACpC,CACA,cAAc9I,EAAQ,CACpB,OAAOA,EAAO,KAAK,KAAK,MAAM,EAAE,eAAe,CAAC,KAAK,QAAQ,CAC/D,CACA,aAAa/B,EAAQumB,EAAsB,CACzC,IAAMhK,EAAegK,GAAwBN,GAAc,gBAAgBjmB,CAAM,EAC3EwmB,EAAiB,KAAK,cAAcT,EAAQ,EAAE,aAAa/lB,CAAM,EACjEyJ,EAAS,KAAK,OAAO,aAAa8S,CAAY,EAAE,UAAU,EAChE,YAAK,SAAW,CAACiK,EAAe,IAAI/c,CAAM,EACnC,IACT,CACA,UAAUpN,EAAQ,CAChB,YAAK,UAAYA,EAAO,IAAI,KAAK,MAAM,EAChC,IACT,CACA,OAAOyO,EAAO,CACZ,OAAOA,EAAM,OAAO,OAAO,KAAK,MAAM,GAAKA,EAAM,WAAa,KAAK,QACrE,CACA,OAAQ,CACN,OAAO,IAAI,KAAK,YAAY,EAAE,KAAK,IAAI,CACzC,CACF,EACI2b,GAA4B,IAAIr0B,GAChCs0B,GAA4B,IAAIjxB,EAChCpR,GAAU,KAAM,CAClB,YAAY2nB,EAAK,IAAIpf,GAASqf,EAAK,IAAIrf,GAASsf,EAAK,IAAItf,GAAS2rB,EAAK,IAAI3rB,GAAS+5B,EAAK,IAAI/5B,GAASg6B,EAAK,IAAIh6B,GAAS,CACtH,KAAK,OAAS,CAACof,EAAIC,EAAIC,EAAIqM,EAAIoO,EAAIC,CAAE,CACvC,CACA,IAAI5a,EAAIC,EAAIC,EAAIqM,EAAIoO,EAAIC,EAAI,CAC1B,IAAMC,EAAS,KAAK,OACpB,OAAAA,EAAO,CAAC,EAAE,KAAK7a,CAAE,EACjB6a,EAAO,CAAC,EAAE,KAAK5a,CAAE,EACjB4a,EAAO,CAAC,EAAE,KAAK3a,CAAE,EACjB2a,EAAO,CAAC,EAAE,KAAKtO,CAAE,EACjBsO,EAAO,CAAC,EAAE,KAAKF,CAAE,EACjBE,EAAO,CAAC,EAAE,KAAKD,CAAE,EACV,IACT,CACA,KAAKE,EAAS,CACZ,IAAMD,EAAS,KAAK,OACpB,QAASzvB,EAAI,EAAGA,EAAI,EAAGA,IACrByvB,EAAOzvB,CAAC,EAAE,KAAK0vB,EAAQ,OAAO1vB,CAAC,CAAC,EAElC,OAAO,IACT,CACA,wBAAwBiB,EAAGob,EAAmB1d,GAAuB,CACnE,IAAM8wB,EAAS,KAAK,OACdzpB,EAAK/E,EAAE,SACP0uB,EAAM3pB,EAAG,CAAC,EAAG4pB,EAAM5pB,EAAG,CAAC,EAAG6pB,EAAM7pB,EAAG,CAAC,EAAG8pB,EAAM9pB,EAAG,CAAC,EACjD+pB,EAAM/pB,EAAG,CAAC,EAAGgqB,EAAMhqB,EAAG,CAAC,EAAGiqB,EAAMjqB,EAAG,CAAC,EAAGkqB,EAAMlqB,EAAG,CAAC,EACjDmqB,EAAMnqB,EAAG,CAAC,EAAGoqB,EAAMpqB,EAAG,CAAC,EAAGqqB,EAAOrqB,EAAG,EAAE,EAAGsqB,EAAOtqB,EAAG,EAAE,EACrDuqB,EAAOvqB,EAAG,EAAE,EAAGwqB,EAAOxqB,EAAG,EAAE,EAAGyqB,EAAOzqB,EAAG,EAAE,EAAG0qB,EAAO1qB,EAAG,EAAE,EAM/D,GALAypB,EAAO,CAAC,EAAE,cAAcK,EAAMH,EAAKO,EAAMH,EAAKO,EAAOH,EAAKO,EAAOH,CAAI,EAAE,UAAU,EACjFd,EAAO,CAAC,EAAE,cAAcK,EAAMH,EAAKO,EAAMH,EAAKO,EAAOH,EAAKO,EAAOH,CAAI,EAAE,UAAU,EACjFd,EAAO,CAAC,EAAE,cAAcK,EAAMF,EAAKM,EAAMF,EAAKM,EAAOF,EAAKM,EAAOF,CAAI,EAAE,UAAU,EACjFf,EAAO,CAAC,EAAE,cAAcK,EAAMF,EAAKM,EAAMF,EAAKM,EAAOF,EAAKM,EAAOF,CAAI,EAAE,UAAU,EACjFf,EAAO,CAAC,EAAE,cAAcK,EAAMD,EAAKK,EAAMD,EAAKK,EAAOD,EAAMK,EAAOD,CAAI,EAAE,UAAU,EAC9EpU,IAAqB1d,GACvB8wB,EAAO,CAAC,EAAE,cAAcK,EAAMD,EAAKK,EAAMD,EAAKK,EAAOD,EAAMK,EAAOD,CAAI,EAAE,UAAU,UACzEpU,IAAqBpd,GAC9BwwB,EAAO,CAAC,EAAE,cAAcI,EAAKI,EAAKI,EAAMI,CAAI,EAAE,UAAU,MAExD,OAAM,IAAI,MAAM,uEAAyEpU,CAAgB,EAE3G,OAAO,IACT,CACA,iBAAiBrJ,EAAQ,CACvB,GAAIA,EAAO,iBAAmB,OACxBA,EAAO,iBAAmB,MAAMA,EAAO,sBAAsB,EACjEqc,GAAU,KAAKrc,EAAO,cAAc,EAAE,aAAaA,EAAO,WAAW,MAChE,CACL,IAAMK,EAAWL,EAAO,SACpBK,EAAS,iBAAmB,MAAMA,EAAS,sBAAsB,EACrEgc,GAAU,KAAKhc,EAAS,cAAc,EAAE,aAAaL,EAAO,WAAW,CACzE,CACA,OAAO,KAAK,iBAAiBqc,EAAS,CACxC,CACA,iBAAiBsB,EAAQ,CACvB,OAAAtB,GAAU,OAAO,IAAI,EAAG,EAAG,CAAC,EAC5BA,GAAU,OAAS,kBACnBA,GAAU,aAAasB,EAAO,WAAW,EAClC,KAAK,iBAAiBtB,EAAS,CACxC,CACA,iBAAiB5b,EAAQ,CACvB,IAAMgc,EAAS,KAAK,OACdtqB,EAASsO,EAAO,OAChBmd,EAAY,CAACnd,EAAO,OAC1B,QAASzT,EAAI,EAAGA,EAAI,EAAGA,IAErB,GADiByvB,EAAOzvB,CAAC,EAAE,gBAAgBmF,CAAM,EAClCyrB,EACb,MAAO,GAGX,MAAO,EACT,CACA,cAAc1d,EAAK,CACjB,IAAMuc,EAAS,KAAK,OACpB,QAASzvB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAM0T,EAAQ+b,EAAOzvB,CAAC,EAItB,GAHAsvB,GAAU,EAAI5b,EAAM,OAAO,EAAI,EAAIR,EAAI,IAAI,EAAIA,EAAI,IAAI,EACvDoc,GAAU,EAAI5b,EAAM,OAAO,EAAI,EAAIR,EAAI,IAAI,EAAIA,EAAI,IAAI,EACvDoc,GAAU,EAAI5b,EAAM,OAAO,EAAI,EAAIR,EAAI,IAAI,EAAIA,EAAI,IAAI,EACnDQ,EAAM,gBAAgB4b,EAAS,EAAI,EACrC,MAAO,EAEX,CACA,MAAO,EACT,CACA,cAAcnc,EAAO,CACnB,IAAMsc,EAAS,KAAK,OACpB,QAASzvB,EAAI,EAAGA,EAAI,EAAGA,IACrB,GAAIyvB,EAAOzvB,CAAC,EAAE,gBAAgBmT,CAAK,EAAI,EACrC,MAAO,GAGX,MAAO,EACT,CACA,OAAQ,CACN,OAAO,IAAI,KAAK,YAAY,EAAE,KAAK,IAAI,CACzC,CACF,EACA,SAAS0d,IAAiB,CACxB,IAAI7lB,EAAU,KACV8lB,EAAc,GACdC,EAAgB,KAChBC,EAAY,KAChB,SAASC,EAAiBC,EAAMC,EAAO,CACrCJ,EAAcG,EAAMC,CAAK,EACzBH,EAAYhmB,EAAQ,sBAAsBimB,CAAgB,CAC5D,CACA,MAAO,CACL,MAAO,UAAW,CACZH,IAAgB,IAChBC,IAAkB,OACtBC,EAAYhmB,EAAQ,sBAAsBimB,CAAgB,EAC1DH,EAAc,GAChB,EACA,KAAM,UAAW,CACf9lB,EAAQ,qBAAqBgmB,CAAS,EACtCF,EAAc,EAChB,EACA,iBAAkB,SAAS7f,EAAU,CACnC8f,EAAgB9f,CAClB,EACA,WAAY,SAASrQ,EAAO,CAC1BoK,EAAUpK,CACZ,CACF,CACF,CACA,SAASwwB,GAAgB5nB,EAAI,CAC3B,IAAM6nB,EAA0B,IAAI,QACpC,SAASC,EAAapsB,EAAWqsB,EAAY,CAC3C,IAAMxxB,EAAQmF,EAAU,MAClBssB,EAAQtsB,EAAU,MAClB4N,EAAO/S,EAAM,WACbiJ,EAASQ,EAAG,aAAa,EAC/BA,EAAG,WAAW+nB,EAAYvoB,CAAM,EAChCQ,EAAG,WAAW+nB,EAAYxxB,EAAOyxB,CAAK,EACtCtsB,EAAU,iBAAiB,EAC3B,IAAIzF,EACJ,GAAIM,aAAiB,aACnBN,EAAO+J,EAAG,cACDzJ,aAAiB,YACtBmF,EAAU,yBACZzF,EAAO+J,EAAG,WAEV/J,EAAO+J,EAAG,uBAEHzJ,aAAiB,WAC1BN,EAAO+J,EAAG,cACDzJ,aAAiB,YAC1BN,EAAO+J,EAAG,qBACDzJ,aAAiB,WAC1BN,EAAO+J,EAAG,YACDzJ,aAAiB,UAC1BN,EAAO+J,EAAG,aACDzJ,aAAiB,WAC1BN,EAAO+J,EAAG,sBACDzJ,aAAiB,kBAC1BN,EAAO+J,EAAG,kBAEV,OAAM,IAAI,MAAM,0DAA4DzJ,CAAK,EAEnF,MAAO,CACL,OAAAiJ,EACA,KAAAvJ,EACA,gBAAiBM,EAAM,kBACvB,QAASmF,EAAU,QACnB,KAAA4N,CACF,CACF,CACA,SAAS2e,EAAazoB,EAAQ9D,EAAWqsB,EAAY,CACnD,IAAMxxB,EAAQmF,EAAU,MAClBwsB,EAAexsB,EAAU,aAE/B,GADAsE,EAAG,WAAW+nB,EAAYvoB,CAAM,EAC5B0oB,EAAa,SAAW,EAC1BloB,EAAG,cAAc+nB,EAAY,EAAGxxB,CAAK,MAChC,CACL2xB,EAAa,KAAK,CAACtuB,EAAGC,IAAMD,EAAE,MAAQC,EAAE,KAAK,EAC7C,IAAIsuB,EAAa,EACjB,QAAS3xB,EAAI,EAAGA,EAAI0xB,EAAa,OAAQ1xB,IAAK,CAC5C,IAAM4xB,EAAgBF,EAAaC,CAAU,EACvCnvB,EAAQkvB,EAAa1xB,CAAC,EACxBwC,EAAM,OAASovB,EAAc,MAAQA,EAAc,MAAQ,EAC7DA,EAAc,MAAQ,KAAK,IACzBA,EAAc,MACdpvB,EAAM,MAAQA,EAAM,MAAQovB,EAAc,KAC5C,GAEA,EAAED,EACFD,EAAaC,CAAU,EAAInvB,EAE/B,CACAkvB,EAAa,OAASC,EAAa,EACnC,QAAS3xB,EAAI,EAAGC,EAAIyxB,EAAa,OAAQ1xB,EAAIC,EAAGD,IAAK,CACnD,IAAMwC,EAAQkvB,EAAa1xB,CAAC,EAC5BwJ,EAAG,cACD+nB,EACA/uB,EAAM,MAAQzC,EAAM,kBACpBA,EACAyC,EAAM,MACNA,EAAM,KACR,CACF,CACA0C,EAAU,kBAAkB,CAC9B,CACAA,EAAU,iBAAiB,CAC7B,CACA,SAAS2sB,EAAI3sB,EAAW,CACtB,OAAIA,EAAU,+BAA8BA,EAAYA,EAAU,MAC3DmsB,EAAQ,IAAInsB,CAAS,CAC9B,CACA,SAAS4sB,EAAO5sB,EAAW,CACrBA,EAAU,+BAA8BA,EAAYA,EAAU,MAClE,IAAMgG,EAAOmmB,EAAQ,IAAInsB,CAAS,EAC9BgG,IACF1B,EAAG,aAAa0B,EAAK,MAAM,EAC3BmmB,EAAQ,OAAOnsB,CAAS,EAE5B,CACA,SAASgK,EAAOhK,EAAWqsB,EAAY,CAErC,GADIrsB,EAAU,+BAA8BA,EAAYA,EAAU,MAC9DA,EAAU,oBAAqB,CACjC,IAAM6sB,EAASV,EAAQ,IAAInsB,CAAS,GAChC,CAAC6sB,GAAUA,EAAO,QAAU7sB,EAAU,UACxCmsB,EAAQ,IAAInsB,EAAW,CACrB,OAAQA,EAAU,OAClB,KAAMA,EAAU,KAChB,gBAAiBA,EAAU,YAC3B,QAASA,EAAU,OACrB,CAAC,EAEH,MACF,CACA,IAAMgG,EAAOmmB,EAAQ,IAAInsB,CAAS,EAClC,GAAIgG,IAAS,OACXmmB,EAAQ,IAAInsB,EAAWosB,EAAapsB,EAAWqsB,CAAU,CAAC,UACjDrmB,EAAK,QAAUhG,EAAU,QAAS,CAC3C,GAAIgG,EAAK,OAAShG,EAAU,MAAM,WAChC,MAAM,IAAI,MAAM,uJAAuJ,EAEzKusB,EAAavmB,EAAK,OAAQhG,EAAWqsB,CAAU,EAC/CrmB,EAAK,QAAUhG,EAAU,OAC3B,CACF,CACA,MAAO,CACL,IAAA2sB,EACA,OAAAC,EACA,OAAA5iB,CACF,CACF,CACA,IAAIzZ,GAAgB,MAAMu8B,WAAuBnqC,EAAe,CAC9D,YAAYylB,EAAQ,EAAGC,EAAS,EAAG2c,EAAgB,EAAGC,EAAiB,EAAG,CACxE,MAAM,EACN,KAAK,KAAO,gBACZ,KAAK,WAAa,CAChB,MAAA7c,EACA,OAAAC,EACA,cAAA2c,EACA,eAAAC,CACF,EACA,IAAM8H,EAAa3kB,EAAQ,EACrB4kB,EAAc3kB,EAAS,EACvByd,EAAQ,KAAK,MAAMd,CAAa,EAChCe,EAAQ,KAAK,MAAMd,CAAc,EACjCoB,EAASP,EAAQ,EACjBQ,EAASP,EAAQ,EACjBkH,EAAgB7kB,EAAQ0d,EACxBoH,EAAiB7kB,EAAS0d,EAC1BvD,EAAU,CAAC,EACX4C,EAAW,CAAC,EACZjD,EAAU,CAAC,EACXkD,EAAM,CAAC,EACb,QAASoB,EAAK,EAAGA,EAAKH,EAAQG,IAAM,CAClC,IAAMlqB,EAAIkqB,EAAKyG,EAAiBF,EAChC,QAAStG,EAAK,EAAGA,EAAKL,EAAQK,IAAM,CAClC,IAAMzqB,EAAIyqB,EAAKuG,EAAgBF,EAC/B3H,EAAS,KAAKnpB,EAAG,CAACM,EAAG,CAAC,EACtB4lB,EAAQ,KAAK,EAAG,EAAG,CAAC,EACpBkD,EAAI,KAAKqB,EAAKZ,CAAK,EACnBT,EAAI,KAAK,EAAIoB,EAAKV,CAAK,CACzB,CACF,CACA,QAASU,EAAK,EAAGA,EAAKV,EAAOU,IAC3B,QAASC,EAAK,EAAGA,EAAKZ,EAAOY,IAAM,CACjC,IAAMxoB,EAAIwoB,EAAKL,EAASI,EAClBtoB,EAAIuoB,EAAKL,GAAUI,EAAK,GACxBroB,EAAIsoB,EAAK,EAAIL,GAAUI,EAAK,GAC5BnkB,EAAIokB,EAAK,EAAIL,EAASI,EAC5BjE,EAAQ,KAAKtkB,EAAGC,EAAGmE,CAAC,EACpBkgB,EAAQ,KAAKrkB,EAAGC,EAAGkE,CAAC,CACtB,CAEF,KAAK,SAASkgB,CAAO,EACrB,KAAK,aAAa,WAAY,IAAI/6B,GAAuB29B,EAAU,CAAC,CAAC,EACrE,KAAK,aAAa,SAAU,IAAI39B,GAAuB06B,EAAS,CAAC,CAAC,EAClE,KAAK,aAAa,KAAM,IAAI16B,GAAuB49B,EAAK,CAAC,CAAC,CAC5D,CACA,KAAKre,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,WAAa,OAAO,OAAO,CAAC,EAAGA,EAAO,UAAU,EAC9C,IACT,CACA,OAAO,SAAShB,EAAM,CACpB,OAAO,IAAI8mB,GAAe9mB,EAAK,MAAOA,EAAK,OAAQA,EAAK,cAAeA,EAAK,cAAc,CAC5F,CACF,EACImnB,GAAqB;AAAA;AAAA,QACrBC,GAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAC1BC,GAAoB;AAAA;AAAA,QACpBC,GAAyB;AAAA;AAAA,QACzBC,GAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QACrBC,GAA0B;AAAA;AAAA,QAC1BC,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QACjBC,GAAsB;AAAA;AAAA;AAAA,QACtBC,GAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QACvBC,GAAkB;AAAA;AAAA,QAClBC,GAAe;AAAA;AAAA;AAAA,QACfC,GAAqB;AAAA;AAAA;AAAA,QACrBC,GAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBACRC,GAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QACvBC,GAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QACxBC,GAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAC3BC,GAAgC;AAAA;AAAA;AAAA,QAChCC,GAA8B;AAAA;AAAA,QAC9BC,GAAyB;AAAA;AAAA,QACzBC,GAAiB;AAAA;AAAA;AAAA;AAAA,QACjBC,GAAsB;AAAA;AAAA;AAAA;AAAA,QACtBC,GAAoB;AAAA;AAAA;AAAA;AAAA,QACpBC,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QACfC,GAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBACTC,GAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAC9BC,GAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QACvBC,GAA8B;AAAA;AAAA;AAAA;AAAA,QAC9BC,GAAyB;AAAA;AAAA,QACzBC,GAAuB;AAAA;AAAA;AAAA,QACvBC,GAA4B;AAAA;AAAA,QAC5BC,GAAsB,sDACtBC,GAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAC3BC,GAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAClBC,GAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAC9BC,GAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QACvBC,GAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QACrBC,GAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAChBC,GAAa;AAAA;AAAA,QACbC,GAAkB;AAAA;AAAA,QAClBC,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QACfC,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QACpBC,GAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAC5BC,GAAyB;AAAA;AAAA;AAAA,QACzBC,GAA0B;AAAA;AAAA,+CAC1BC,GAA+B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wDAC/BC,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QACpBC,GAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAChCC,GAAuB;AAAA,2CACvBC,GAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qDAC5BC,GAAwB;AAAA;AAAA;AAAA;AAAA,+CACxBC,GAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2DAC7BC,GAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAC3BC,GAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAChCC,GAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAC1BC,GAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QACxBC,GAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QACnBC,GAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAC3BC,GAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,QAClBC,GAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QACvBC,GAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAClBC,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QACpBC,GAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QACvBC,GAA4B;AAAA;AAAA,QAC5BC,GAAuB;AAAA;AAAA,QACvBC,GAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wDAC5BC,GAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QACxBC,GAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAC7BC,GAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QACnBC,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QACjBC,GAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QACZC,GAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAClBC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA,GACXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACb9gC,GAAc,CAChB,mBAAAk4B,GACA,wBAAAC,GACA,kBAAAC,GACA,uBAAAC,GACA,mBAAAC,GACA,wBAAAC,GACA,eAAAC,GACA,oBAAAC,GACA,qBAAAC,GACA,gBAAAC,GACA,aAAAC,GACA,mBAAAC,GACA,MAAAC,GACA,qBAAAC,GACA,sBAAAC,GACA,yBAAAC,GACA,8BAAAC,GACA,4BAAAC,GACA,uBAAAC,GACA,eAAAC,GACA,oBAAAC,GACA,kBAAAC,GACA,aAAAC,GACA,OAAAC,GACA,4BAAAC,GACA,qBAAAC,GACA,4BAAAC,GACA,uBAAAC,GACA,qBAAAC,GACA,0BAAAC,GACA,oBAAAC,GACA,yBAAAC,GACA,gBAAAC,GACA,4BAAAC,GACA,qBAAAC,GACA,mBAAAC,GACA,8BAAAW,GACA,cAAAV,GACA,WAAAC,GACA,gBAAAC,GACA,aAAAC,GACA,kBAAAC,GACA,0BAAAC,GACA,uBAAAC,GACA,wBAAAC,GACA,6BAAAC,GACA,kBAAAC,GACA,qBAAAE,GACA,0BAAAC,GACA,sBAAAC,GACA,2BAAAC,GACA,yBAAAC,GACA,8BAAAC,GACA,sBAAAC,GACA,qBAAAC,GACA,oBAAAC,GACA,qBAAAC,GACA,0BAAAC,GACA,wBAAAC,GACA,mBAAAC,GACA,aAAAC,GACA,kBAAAC,GACA,sBAAAC,GACA,2BAAAC,GACA,sBAAAC,GACA,2BAAAC,GACA,qBAAAC,GACA,kBAAAC,GACA,mBAAAC,GACA,wBAAAC,GACA,mBAAAC,GACA,sBAAAC,GACA,qBAAAC,GACA,qBAAAC,GACA,mBAAAC,GACA,cAAAC,GACA,wBAAAC,GACA,gCAAAC,GACA,+BAAAC,GACA,wBAAAC,GACA,0BAAAC,GACA,gBAAAC,GACA,QAAAC,GACA,6BAAAC,GACA,eAAAC,GACA,mBAAAC,GACA,wBAAAC,GACA,sBAAAC,GACA,2BAAAC,GACA,wBAAAC,GACA,sBAAAC,GACA,iBAAAC,GACA,yBAAAC,GACA,gBAAAC,GACA,qBAAAC,GACA,gBAAAC,GACA,kBAAAC,GACA,qBAAAC,GACA,0BAAAC,GACA,qBAAAC,GACA,0BAAAC,GACA,sBAAAC,GACA,2BAAAC,GACA,iBAAAC,GACA,eAAAC,GACA,UAAAC,GACA,gBAAAC,GACA,gBAAiBC,GACjB,gBAAiBC,GACjB,oBAAqBC,GACrB,oBAAqBC,GACrB,UAAWC,GACX,UAAWC,GACX,WAAYC,GACZ,WAAYC,GACZ,kBAAmBC,GACnB,kBAAmBC,GACnB,cAAeC,GACf,cAAeC,GACf,gBAAiBC,GACjB,gBAAiBC,GACjB,eAAgBC,GAChB,eAAgBC,GAChB,iBAAkBC,GAClB,iBAAkBC,GAClB,gBAAiBC,GACjB,gBAAiBC,GACjB,gBAAiBC,GACjB,gBAAiBC,GACjB,eAAgBC,GAChB,eAAgBC,GAChB,kBAAmBC,GACnB,kBAAmBC,GACnB,cAAeC,GACf,cAAeC,GACf,YAAaC,GACb,YAAaC,GACb,YAAaC,GACb,YAAaC,GACb,YAAaC,GACb,YAAaC,EACf,EACIv9B,GAAc,CAChB,OAAQ,CACN,QAAS,CAAE,MAAuB,IAAIhV,GAAM,QAAQ,CAAE,EACtD,QAAS,CAAE,MAAO,CAAE,EACpB,IAAK,CAAE,MAAO,IAAK,EACnB,aAAc,CAAE,MAAuB,IAAIuJ,EAAU,EACrD,SAAU,CAAE,MAAO,IAAK,EACxB,kBAAmB,CAAE,MAAuB,IAAIA,EAAU,EAC1D,UAAW,CAAE,MAAO,CAAE,CACxB,EACA,YAAa,CACX,YAAa,CAAE,MAAO,IAAK,EAC3B,qBAAsB,CAAE,MAAuB,IAAIA,EAAU,CAC/D,EACA,OAAQ,CACN,OAAQ,CAAE,MAAO,IAAK,EACtB,eAAgB,CAAE,MAAuB,IAAIA,EAAU,EACvD,WAAY,CAAE,MAAO,EAAG,EACxB,aAAc,CAAE,MAAO,CAAE,EAEzB,IAAK,CAAE,MAAO,GAAI,EAElB,gBAAiB,CAAE,MAAO,GAAK,CAEjC,EACA,MAAO,CACL,MAAO,CAAE,MAAO,IAAK,EACrB,eAAgB,CAAE,MAAO,CAAE,EAC3B,eAAgB,CAAE,MAAuB,IAAIA,EAAU,CACzD,EACA,SAAU,CACR,SAAU,CAAE,MAAO,IAAK,EACxB,kBAAmB,CAAE,MAAO,CAAE,EAC9B,kBAAmB,CAAE,MAAuB,IAAIA,EAAU,CAC5D,EACA,QAAS,CACP,QAAS,CAAE,MAAO,IAAK,EACvB,iBAAkB,CAAE,MAAuB,IAAIA,EAAU,EACzD,UAAW,CAAE,MAAO,CAAE,CACxB,EACA,UAAW,CACT,UAAW,CAAE,MAAO,IAAK,EACzB,mBAAoB,CAAE,MAAuB,IAAIA,EAAU,EAC3D,YAAa,CAAE,MAAuB,IAAImM,EAAQ,EAAG,CAAC,CAAE,CAC1D,EACA,gBAAiB,CACf,gBAAiB,CAAE,MAAO,IAAK,EAC/B,yBAA0B,CAAE,MAAuB,IAAInM,EAAU,EACjE,kBAAmB,CAAE,MAAO,CAAE,EAC9B,iBAAkB,CAAE,MAAO,CAAE,CAC/B,EACA,YAAa,CACX,YAAa,CAAE,MAAO,IAAK,EAC3B,qBAAsB,CAAE,MAAuB,IAAIA,EAAU,CAC/D,EACA,aAAc,CACZ,aAAc,CAAE,MAAO,IAAK,EAC5B,sBAAuB,CAAE,MAAuB,IAAIA,EAAU,CAChE,EACA,aAAc,CACZ,aAAc,CAAE,MAAO,IAAK,EAC5B,sBAAuB,CAAE,MAAuB,IAAIA,EAAU,CAChE,EACA,YAAa,CACX,YAAa,CAAE,MAAO,IAAK,CAC7B,EACA,IAAK,CACH,WAAY,CAAE,MAAO,KAAM,EAC3B,QAAS,CAAE,MAAO,CAAE,EACpB,OAAQ,CAAE,MAAO,GAAI,EACrB,SAAU,CAAE,MAAuB,IAAIvJ,GAAM,QAAQ,CAAE,CACzD,EACA,OAAQ,CACN,kBAAmB,CAAE,MAAO,CAAC,CAAE,EAC/B,WAAY,CAAE,MAAO,CAAC,CAAE,EACxB,kBAAmB,CAAE,MAAO,CAAC,EAAG,WAAY,CAC1C,UAAW,CAAC,EACZ,MAAO,CAAC,CACV,CAAE,EACF,wBAAyB,CAAE,MAAO,CAAC,EAAG,WAAY,CAChD,gBAAiB,EACjB,WAAY,CAAC,EACb,iBAAkB,CAAC,EACnB,aAAc,CAAC,EACf,cAAe,CAAC,CAClB,CAAE,EACF,qBAAsB,CAAE,MAAO,CAAC,CAAE,EAClC,wBAAyB,CAAE,MAAO,CAAC,CAAE,EACrC,WAAY,CAAE,MAAO,CAAC,EAAG,WAAY,CACnC,MAAO,CAAC,EACR,SAAU,CAAC,EACX,UAAW,CAAC,EACZ,SAAU,CAAC,EACX,QAAS,CAAC,EACV,YAAa,CAAC,EACd,MAAO,CAAC,CACV,CAAE,EACF,iBAAkB,CAAE,MAAO,CAAC,EAAG,WAAY,CACzC,gBAAiB,EACjB,WAAY,CAAC,EACb,iBAAkB,CAAC,EACnB,aAAc,CAAC,EACf,cAAe,CAAC,CAClB,CAAE,EACF,aAAc,CAAE,MAAO,CAAC,CAAE,EAC1B,cAAe,CAAE,MAAO,CAAC,CAAE,EAC3B,gBAAiB,CAAE,MAAO,CAAC,CAAE,EAC7B,YAAa,CAAE,MAAO,CAAC,EAAG,WAAY,CACpC,MAAO,CAAC,EACR,SAAU,CAAC,EACX,MAAO,CAAC,EACR,SAAU,CAAC,CACb,CAAE,EACF,kBAAmB,CAAE,MAAO,CAAC,EAAG,WAAY,CAC1C,gBAAiB,EACjB,WAAY,CAAC,EACb,iBAAkB,CAAC,EACnB,aAAc,CAAC,EACf,cAAe,CAAC,EAChB,iBAAkB,CAAC,EACnB,gBAAiB,CAAC,CACpB,CAAE,EACF,eAAgB,CAAE,MAAO,CAAC,CAAE,EAC5B,kBAAmB,CAAE,MAAO,CAAC,CAAE,EAC/B,iBAAkB,CAAE,MAAO,CAAC,EAAG,WAAY,CACzC,UAAW,CAAC,EACZ,SAAU,CAAC,EACX,YAAa,CAAC,CAChB,CAAE,EAEF,eAAgB,CAAE,MAAO,CAAC,EAAG,WAAY,CACvC,MAAO,CAAC,EACR,SAAU,CAAC,EACX,MAAO,CAAC,EACR,OAAQ,CAAC,CACX,CAAE,EACF,MAAO,CAAE,MAAO,IAAK,EACrB,MAAO,CAAE,MAAO,IAAK,CACvB,EACA,OAAQ,CACN,QAAS,CAAE,MAAuB,IAAIA,GAAM,QAAQ,CAAE,EACtD,QAAS,CAAE,MAAO,CAAE,EACpB,KAAM,CAAE,MAAO,CAAE,EACjB,MAAO,CAAE,MAAO,CAAE,EAClB,IAAK,CAAE,MAAO,IAAK,EACnB,SAAU,CAAE,MAAO,IAAK,EACxB,kBAAmB,CAAE,MAAuB,IAAIuJ,EAAU,EAC1D,UAAW,CAAE,MAAO,CAAE,EACtB,YAAa,CAAE,MAAuB,IAAIA,EAAU,CACtD,EACA,OAAQ,CACN,QAAS,CAAE,MAAuB,IAAIvJ,GAAM,QAAQ,CAAE,EACtD,QAAS,CAAE,MAAO,CAAE,EACpB,OAAQ,CAAE,MAAuB,IAAI0V,EAAQ,GAAK,EAAG,CAAE,EACvD,SAAU,CAAE,MAAO,CAAE,EACrB,IAAK,CAAE,MAAO,IAAK,EACnB,aAAc,CAAE,MAAuB,IAAInM,EAAU,EACrD,SAAU,CAAE,MAAO,IAAK,EACxB,kBAAmB,CAAE,MAAuB,IAAIA,EAAU,EAC1D,UAAW,CAAE,MAAO,CAAE,CACxB,CACF,EACImI,GAAY,CACd,MAAO,CACL,SAA0B4xB,GAAc,CACtCtuB,GAAY,OACZA,GAAY,YACZA,GAAY,OACZA,GAAY,MACZA,GAAY,SACZA,GAAY,GACd,CAAC,EACD,aAAcvD,GAAY,eAC1B,eAAgBA,GAAY,cAC9B,EACA,QAAS,CACP,SAA0B6xB,GAAc,CACtCtuB,GAAY,OACZA,GAAY,YACZA,GAAY,OACZA,GAAY,MACZA,GAAY,SACZA,GAAY,YACZA,GAAY,QACZA,GAAY,UACZA,GAAY,gBACZA,GAAY,IACZA,GAAY,OACZ,CACE,SAAU,CAAE,MAAuB,IAAIhV,GAAM,CAAC,CAAE,CAClD,CACF,CAAC,EACD,aAAcyR,GAAY,iBAC1B,eAAgBA,GAAY,gBAC9B,EACA,MAAO,CACL,SAA0B6xB,GAAc,CACtCtuB,GAAY,OACZA,GAAY,YACZA,GAAY,OACZA,GAAY,MACZA,GAAY,SACZA,GAAY,YACZA,GAAY,QACZA,GAAY,UACZA,GAAY,gBACZA,GAAY,IACZA,GAAY,OACZ,CACE,SAAU,CAAE,MAAuB,IAAIhV,GAAM,CAAC,CAAE,EAChD,SAAU,CAAE,MAAuB,IAAIA,GAAM,OAAO,CAAE,EACtD,UAAW,CAAE,MAAO,EAAG,CACzB,CACF,CAAC,EACD,aAAcyR,GAAY,eAC1B,eAAgBA,GAAY,cAC9B,EACA,SAAU,CACR,SAA0B6xB,GAAc,CACtCtuB,GAAY,OACZA,GAAY,OACZA,GAAY,MACZA,GAAY,SACZA,GAAY,YACZA,GAAY,QACZA,GAAY,UACZA,GAAY,gBACZA,GAAY,aACZA,GAAY,aACZA,GAAY,IACZA,GAAY,OACZ,CACE,SAAU,CAAE,MAAuB,IAAIhV,GAAM,CAAC,CAAE,EAChD,UAAW,CAAE,MAAO,CAAE,EACtB,UAAW,CAAE,MAAO,CAAE,EACtB,gBAAiB,CAAE,MAAO,CAAE,CAC9B,CACF,CAAC,EACD,aAAcyR,GAAY,kBAC1B,eAAgBA,GAAY,iBAC9B,EACA,KAAM,CACJ,SAA0B6xB,GAAc,CACtCtuB,GAAY,OACZA,GAAY,MACZA,GAAY,SACZA,GAAY,YACZA,GAAY,QACZA,GAAY,UACZA,GAAY,gBACZA,GAAY,YACZA,GAAY,IACZA,GAAY,OACZ,CACE,SAAU,CAAE,MAAuB,IAAIhV,GAAM,CAAC,CAAE,CAClD,CACF,CAAC,EACD,aAAcyR,GAAY,cAC1B,eAAgBA,GAAY,aAC9B,EACA,OAAQ,CACN,SAA0B6xB,GAAc,CACtCtuB,GAAY,OACZA,GAAY,QACZA,GAAY,UACZA,GAAY,gBACZA,GAAY,IACZ,CACE,OAAQ,CAAE,MAAO,IAAK,CACxB,CACF,CAAC,EACD,aAAcvD,GAAY,gBAC1B,eAAgBA,GAAY,eAC9B,EACA,OAAQ,CACN,SAA0B6xB,GAAc,CACtCtuB,GAAY,OACZA,GAAY,GACd,CAAC,EACD,aAAcvD,GAAY,YAC1B,eAAgBA,GAAY,WAC9B,EACA,OAAQ,CACN,SAA0B6xB,GAAc,CACtCtuB,GAAY,OACZA,GAAY,IACZ,CACE,MAAO,CAAE,MAAO,CAAE,EAClB,SAAU,CAAE,MAAO,CAAE,EACrB,UAAW,CAAE,MAAO,CAAE,CACxB,CACF,CAAC,EACD,aAAcvD,GAAY,gBAC1B,eAAgBA,GAAY,eAC9B,EACA,MAAO,CACL,SAA0B6xB,GAAc,CACtCtuB,GAAY,OACZA,GAAY,eACd,CAAC,EACD,aAAcvD,GAAY,WAC1B,eAAgBA,GAAY,UAC9B,EACA,OAAQ,CACN,SAA0B6xB,GAAc,CACtCtuB,GAAY,OACZA,GAAY,QACZA,GAAY,UACZA,GAAY,gBACZ,CACE,QAAS,CAAE,MAAO,CAAE,CACtB,CACF,CAAC,EACD,aAAcvD,GAAY,gBAC1B,eAAgBA,GAAY,eAC9B,EACA,OAAQ,CACN,SAA0B6xB,GAAc,CACtCtuB,GAAY,OACZA,GAAY,GACd,CAAC,EACD,aAAcvD,GAAY,YAC1B,eAAgBA,GAAY,WAC9B,EACA,WAAY,CACV,SAAU,CACR,YAAa,CAAE,MAAuB,IAAIlI,EAAU,EACpD,IAAK,CAAE,MAAO,IAAK,EACnB,oBAAqB,CAAE,MAAO,CAAE,CAClC,EACA,aAAckI,GAAY,gBAC1B,eAAgBA,GAAY,eAC9B,EACA,eAAgB,CACd,SAAU,CACR,OAAQ,CAAE,MAAO,IAAK,EACtB,WAAY,CAAE,MAAO,EAAG,EACxB,qBAAsB,CAAE,MAAO,CAAE,EACjC,oBAAqB,CAAE,MAAO,CAAE,EAChC,mBAAoB,CAAE,MAAuB,IAAIlI,EAAU,CAC7D,EACA,aAAckI,GAAY,oBAC1B,eAAgBA,GAAY,mBAC9B,EACA,KAAM,CACJ,SAAU,CACR,MAAO,CAAE,MAAO,IAAK,EACrB,MAAO,CAAE,MAAO,EAAG,EACnB,QAAS,CAAE,MAAO,CAAE,CACtB,EACA,aAAcA,GAAY,UAC1B,eAAgBA,GAAY,SAC9B,EACA,SAAU,CACR,SAAU,CACR,UAAW,CAAE,MAAO,IAAK,CAC3B,EACA,aAAcA,GAAY,cAC1B,eAAgBA,GAAY,aAC9B,EACA,aAAc,CACZ,SAA0B6xB,GAAc,CACtCtuB,GAAY,OACZA,GAAY,gBACZ,CACE,kBAAmB,CAAE,MAAuB,IAAIW,CAAU,EAC1D,aAAc,CAAE,MAAO,CAAE,EACzB,YAAa,CAAE,MAAO,GAAI,CAC5B,CACF,CAAC,EACD,aAAclE,GAAY,kBAC1B,eAAgBA,GAAY,iBAC9B,EACA,OAAQ,CACN,SAA0B6xB,GAAc,CACtCtuB,GAAY,OACZA,GAAY,IACZ,CACE,MAAO,CAAE,MAAuB,IAAIhV,GAAM,CAAC,CAAE,EAC7C,QAAS,CAAE,MAAO,CAAE,CACtB,CACF,CAAC,EACD,aAAcyR,GAAY,YAC1B,eAAgBA,GAAY,WAC9B,CACF,EACAC,GAAU,SAAW,CACnB,SAA0B4xB,GAAc,CACtC5xB,GAAU,SAAS,SACnB,CACE,UAAW,CAAE,MAAO,CAAE,EACtB,aAAc,CAAE,MAAO,IAAK,EAC5B,sBAAuB,CAAE,MAAuB,IAAInI,EAAU,EAC9D,mBAAoB,CAAE,MAAO,IAAK,EAClC,4BAA6B,CAAE,MAAuB,IAAIA,EAAU,EACpE,qBAAsB,CAAE,MAAuB,IAAImM,EAAQ,EAAG,CAAC,CAAE,EACjE,mBAAoB,CAAE,MAAO,CAAE,EAC/B,sBAAuB,CAAE,MAAO,IAAK,EACrC,+BAAgC,CAAE,MAAuB,IAAInM,EAAU,EACvE,WAAY,CAAE,MAAO,CAAE,EACvB,YAAa,CAAE,MAAO,CAAE,EACxB,eAAgB,CAAE,MAAO,IAAK,EAC9B,wBAAyB,CAAE,MAAuB,IAAIA,EAAU,EAChE,eAAgB,CAAE,MAAO,GAAI,EAC7B,4BAA6B,CAAE,MAAO,GAAI,EAC1C,4BAA6B,CAAE,MAAO,GAAI,EAC1C,wBAAyB,CAAE,MAAO,IAAK,EACvC,iCAAkC,CAAE,MAAuB,IAAIA,EAAU,EACzE,MAAO,CAAE,MAAO,CAAE,EAClB,WAAY,CAAE,MAAuB,IAAIvJ,GAAM,CAAC,CAAE,EAClD,cAAe,CAAE,MAAO,IAAK,EAC7B,uBAAwB,CAAE,MAAuB,IAAIuJ,EAAU,EAC/D,eAAgB,CAAE,MAAO,CAAE,EAC3B,kBAAmB,CAAE,MAAO,IAAK,EACjC,2BAA4B,CAAE,MAAuB,IAAIA,EAAU,EACnE,aAAc,CAAE,MAAO,CAAE,EACzB,gBAAiB,CAAE,MAAO,IAAK,EAC/B,yBAA0B,CAAE,MAAuB,IAAIA,EAAU,EACjE,wBAAyB,CAAE,MAAuB,IAAImM,CAAU,EAChE,uBAAwB,CAAE,MAAO,IAAK,EACtC,UAAW,CAAE,MAAO,CAAE,EACtB,aAAc,CAAE,MAAO,IAAK,EAC5B,sBAAuB,CAAE,MAAuB,IAAInM,EAAU,EAC9D,oBAAqB,CAAE,MAAO,CAAE,EAChC,iBAAkB,CAAE,MAAuB,IAAIvJ,GAAM,CAAC,CAAE,EACxD,cAAe,CAAE,MAAuB,IAAIA,GAAM,EAAG,EAAG,CAAC,CAAE,EAC3D,iBAAkB,CAAE,MAAO,IAAK,EAChC,0BAA2B,CAAE,MAAuB,IAAIuJ,EAAU,EAClE,kBAAmB,CAAE,MAAO,CAAE,EAC9B,qBAAsB,CAAE,MAAO,IAAK,EACpC,8BAA+B,CAAE,MAAuB,IAAIA,EAAU,EACtE,iBAAkB,CAAE,MAAuB,IAAImM,CAAU,EACzD,cAAe,CAAE,MAAO,IAAK,EAC7B,uBAAwB,CAAE,MAAuB,IAAInM,EAAU,CACjE,CACF,CAAC,EACD,aAAckI,GAAY,kBAC1B,eAAgBA,GAAY,iBAC9B,EACA,IAAI+gC,GAAO,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,EAC1BC,GAAwB,IAAI7uC,GAC5B8uC,GAAwB,IAAIlpC,GAChC,SAASmpC,GAAgBhP,EAAUiP,EAAUC,EAAYC,EAAOC,EAAS32B,EAAO42B,EAAoB,CAClG,IAAMC,EAAa,IAAIjzC,GAAM,CAAC,EAC1BkzC,EAAa92B,IAAU,GAAO,EAAI,EAClC+2B,EACAC,EACAC,EAAoB,KACpBC,EAA2B,EAC3BC,EAAqB,KACzB,SAASC,EAAcjO,EAAO,CAC5B,IAAIkO,EAAalO,EAAM,UAAY,GAAOA,EAAM,WAAa,KAC7D,OAAIkO,GAAcA,EAAW,YAE3BA,GADiBlO,EAAM,qBAAuB,EACrBsN,EAAaD,GAAU,IAAIa,CAAU,GAEzDA,CACT,CACA,SAASC,EAAOnO,EAAO,CACrB,IAAIoO,EAAa,GACXF,EAAaD,EAAcjO,CAAK,EAClCkO,IAAe,KACjBG,EAASX,EAAYC,CAAU,EACtBO,GAAcA,EAAW,UAClCG,EAASH,EAAY,CAAC,EACtBE,EAAa,IAEf,IAAME,EAAuBlQ,EAAS,GAAG,wBAAwB,EAC7DkQ,IAAyB,WAC3Bf,EAAM,QAAQ,MAAM,SAAS,EAAG,EAAG,EAAG,EAAGE,CAAkB,EAClDa,IAAyB,eAClCf,EAAM,QAAQ,MAAM,SAAS,EAAG,EAAG,EAAG,EAAGE,CAAkB,GAEzDrP,EAAS,WAAagQ,KACxBb,EAAM,QAAQ,MAAM,QAAQ,EAAI,EAChCA,EAAM,QAAQ,MAAM,QAAQ,EAAI,EAChCA,EAAM,QAAQ,MAAM,QAAQ,EAAI,EAChCnP,EAAS,MAAMA,EAAS,eAAgBA,EAAS,eAAgBA,EAAS,gBAAgB,EAE9F,CACA,SAASmQ,EAAgBC,EAAYxO,EAAO,CAC1C,IAAMkO,EAAaD,EAAcjO,CAAK,EAClCkO,IAAeA,EAAW,eAAiBA,EAAW,UAAYzyC,KAChEoyC,IAAY,SACdA,EAAU,IAAI1pC,GACZ,IAAI1K,GAAY,EAAG,EAAG,CAAC,EACvB,IAAI2S,GAAe,CACjB,KAAM,yBACN,SAAUwxB,GAAczxB,GAAU,eAAe,QAAQ,EACzD,aAAcA,GAAU,eAAe,aACvC,eAAgBA,GAAU,eAAe,eACzC,KAAMnT,GACN,UAAW,GACX,WAAY,GACZ,IAAK,EACP,CAAC,CACH,EACA60C,EAAQ,SAAS,gBAAgB,QAAQ,EACzCA,EAAQ,SAAS,gBAAgB,IAAI,EACrCA,EAAQ,eAAiB,SAASY,EAAWC,EAAQ/qB,EAAQ,CAC3D,KAAK,YAAY,aAAaA,EAAO,WAAW,CAClD,EACA,OAAO,eAAekqB,EAAQ,SAAU,SAAU,CAChD,IAAK,UAAW,CACd,OAAO,KAAK,SAAS,OAAO,KAC9B,CACF,CAAC,EACDL,EAAQ,OAAOK,CAAO,GAExBX,GAAM,KAAKlN,EAAM,kBAAkB,EACnCkN,GAAM,GAAK,GACXA,GAAM,GAAK,GACXA,GAAM,GAAK,GACPgB,EAAW,eAAiBA,EAAW,wBAA0B,KACnEhB,GAAM,GAAK,GACXA,GAAM,GAAK,IAEbW,EAAQ,SAAS,SAAS,OAAO,MAAQK,EACzCL,EAAQ,SAAS,SAAS,WAAW,MAAQK,EAAW,eAAiBA,EAAW,wBAA0B,GAAQ,GAAK,EAC3HL,EAAQ,SAAS,SAAS,qBAAqB,MAAQ7N,EAAM,qBAC7D6N,EAAQ,SAAS,SAAS,oBAAoB,MAAQ7N,EAAM,oBAC5D6N,EAAQ,SAAS,SAAS,mBAAmB,MAAM,eAAeV,GAAM,sBAAsBD,EAAK,CAAC,EACpGW,EAAQ,SAAS,WAAalzC,GAAgB,YAAYuzC,EAAW,UAAU,IAAMliC,IACjF8hC,IAAsBI,GAAcH,IAA6BG,EAAW,SAAWF,IAAuB5P,EAAS,eACzHyP,EAAQ,SAAS,YAAc,GAC/BC,EAAoBI,EACpBH,EAA2BG,EAAW,QACtCF,EAAqB5P,EAAS,aAEhCyP,EAAQ,OAAO,UAAU,EACzBW,EAAW,QAAQX,EAASA,EAAQ,SAAUA,EAAQ,SAAU,EAAG,EAAG,IAAI,GACjEK,GAAcA,EAAW,YAC9BN,IAAc,SAChBA,EAAY,IAAIzpC,GACd,IAAIqD,GAAc,EAAG,CAAC,EACtB,IAAI4E,GAAe,CACjB,KAAM,qBACN,SAAUwxB,GAAczxB,GAAU,WAAW,QAAQ,EACrD,aAAcA,GAAU,WAAW,aACnC,eAAgBA,GAAU,WAAW,eACrC,KAAMpN,GACN,UAAW,GACX,WAAY,GACZ,IAAK,EACP,CAAC,CACH,EACA6uC,EAAU,SAAS,gBAAgB,QAAQ,EAC3C,OAAO,eAAeA,EAAU,SAAU,MAAO,CAC/C,IAAK,UAAW,CACd,OAAO,KAAK,SAAS,IAAI,KAC3B,CACF,CAAC,EACDJ,EAAQ,OAAOI,CAAS,GAE1BA,EAAU,SAAS,SAAS,IAAI,MAAQM,EACxCN,EAAU,SAAS,SAAS,oBAAoB,MAAQ5N,EAAM,oBAC9D4N,EAAU,SAAS,WAAajzC,GAAgB,YAAYuzC,EAAW,UAAU,IAAMliC,GACnFkiC,EAAW,mBAAqB,IAClCA,EAAW,aAAa,EAE1BN,EAAU,SAAS,SAAS,YAAY,MAAM,KAAKM,EAAW,MAAM,GAChEJ,IAAsBI,GAAcH,IAA6BG,EAAW,SAAWF,IAAuB5P,EAAS,eACzHwP,EAAU,SAAS,YAAc,GACjCE,EAAoBI,EACpBH,EAA2BG,EAAW,QACtCF,EAAqB5P,EAAS,aAEhCwP,EAAU,OAAO,UAAU,EAC3BY,EAAW,QAAQZ,EAAWA,EAAU,SAAUA,EAAU,SAAU,EAAG,EAAG,IAAI,EAEpF,CACA,SAASS,EAASlyB,EAAOwyB,EAAQ,CAC/BxyB,EAAM,OAAO8wB,GAAM9O,GAA0BC,CAAQ,CAAC,EACtDmP,EAAM,QAAQ,MAAM,SAASN,GAAK,EAAGA,GAAK,EAAGA,GAAK,EAAG0B,EAAQlB,CAAkB,CACjF,CACA,MAAO,CACL,cAAe,UAAW,CACxB,OAAOC,CACT,EACA,cAAe,SAASvxB,EAAOwyB,EAAS,EAAG,CACzCjB,EAAW,IAAIvxB,CAAK,EACpBwxB,EAAagB,EACbN,EAASX,EAAYC,CAAU,CACjC,EACA,cAAe,UAAW,CACxB,OAAOA,CACT,EACA,cAAe,SAASgB,EAAQ,CAC9BhB,EAAagB,EACbN,EAASX,EAAYC,CAAU,CACjC,EACA,OAAAQ,EACA,gBAAAI,CACF,CACF,CACA,SAASK,GAAmBrzB,EAAIic,EAAY,CAC1C,IAAMqX,EAAsBtzB,EAAG,aAAaA,EAAG,kBAAkB,EAC3DuzB,EAAgB,CAAC,EACjBC,EAAeC,EAAmB,IAAI,EACxCC,EAAeF,EACfG,EAAc,GAClB,SAASC,EAAMpqB,EAAQ6V,EAAUwU,EAAShqB,EAAUxT,EAAO,CACzD,IAAIy9B,EAAgB,GACd9B,EAAQ+B,EAAgBlqB,EAAUgqB,EAASxU,CAAQ,EACrDqU,IAAiB1B,IACnB0B,EAAe1B,EACfgC,EAAsBN,EAAa,MAAM,GAE3CI,EAAgBG,EAAYzqB,EAAQK,EAAUgqB,EAASx9B,CAAK,EACxDy9B,GAAeI,EAAU1qB,EAAQK,EAAUgqB,EAASx9B,CAAK,EACzDA,IAAU,MACZ4lB,EAAW,OAAO5lB,EAAO2J,EAAG,oBAAoB,GAE9C8zB,GAAiBH,KACnBA,EAAc,GACdQ,EAAsB3qB,EAAQ6V,EAAUwU,EAAShqB,CAAQ,EACrDxT,IAAU,MACZ2J,EAAG,WAAWA,EAAG,qBAAsBic,EAAW,IAAI5lB,CAAK,EAAE,MAAM,EAGzE,CACA,SAAS+9B,GAA0B,CACjC,OAAOp0B,EAAG,kBAAkB,CAC9B,CACA,SAASg0B,EAAsBK,EAAK,CAClC,OAAOr0B,EAAG,gBAAgBq0B,CAAG,CAC/B,CACA,SAASC,EAAwBD,EAAK,CACpC,OAAOr0B,EAAG,kBAAkBq0B,CAAG,CACjC,CACA,SAASN,EAAgBlqB,EAAUgqB,EAASxU,EAAU,CACpD,IAAMkV,EAAYlV,EAAS,YAAc,GACrCmV,EAAajB,EAAc1pB,EAAS,EAAE,EACtC2qB,IAAe,SACjBA,EAAa,CAAC,EACdjB,EAAc1pB,EAAS,EAAE,EAAI2qB,GAE/B,IAAIC,EAAWD,EAAWX,EAAQ,EAAE,EAChCY,IAAa,SACfA,EAAW,CAAC,EACZD,EAAWX,EAAQ,EAAE,EAAIY,GAE3B,IAAIzC,EAAQyC,EAASF,CAAS,EAC9B,OAAIvC,IAAU,SACZA,EAAQyB,EAAmBW,EAAwB,CAAC,EACpDK,EAASF,CAAS,EAAIvC,GAEjBA,CACT,CACA,SAASyB,EAAmBY,EAAK,CAC/B,IAAMK,EAAgB,CAAC,EACjBC,EAAoB,CAAC,EACrBC,EAAoB,CAAC,EAC3B,QAASp+B,EAAI,EAAGA,EAAI88B,EAAqB98B,IACvCk+B,EAAcl+B,CAAC,EAAI,EACnBm+B,EAAkBn+B,CAAC,EAAI,EACvBo+B,EAAkBp+B,CAAC,EAAI,EAEzB,MAAO,CAEL,SAAU,KACV,QAAS,KACT,UAAW,GACX,cAAAk+B,EACA,kBAAAC,EACA,kBAAAC,EACA,OAAQP,EACR,WAAY,CAAC,EACb,MAAO,IACT,CACF,CACA,SAASJ,EAAYzqB,EAAQK,EAAUgqB,EAASx9B,EAAO,CACrD,IAAMw+B,EAAmBnB,EAAa,WAChCoB,EAAqBjrB,EAAS,WAChCkrB,EAAgB,EACdC,GAAoBnB,EAAQ,cAAc,EAChD,QAAWn0B,KAAQs1B,GAEjB,GADyBA,GAAkBt1B,CAAI,EAC1B,UAAY,EAAG,CAClC,IAAMu1B,GAAkBJ,EAAiBn1B,CAAI,EACzCw1B,GAAoBJ,EAAmBp1B,CAAI,EAO/C,GANIw1B,KAAsB,SACpBx1B,IAAS,kBAAoB8J,EAAO,iBAAgB0rB,GAAoB1rB,EAAO,gBAC/E9J,IAAS,iBAAmB8J,EAAO,gBAAe0rB,GAAoB1rB,EAAO,gBAE/EyrB,KAAoB,QACpBA,GAAgB,YAAcC,IAC9BA,IAAqBD,GAAgB,OAASC,GAAkB,KAAM,MAAO,GACjFH,GACF,CAGF,OADIrB,EAAa,gBAAkBqB,GAC/BrB,EAAa,QAAUr9B,CAE7B,CACA,SAAS69B,EAAU1qB,EAAQK,EAAUgqB,EAASx9B,EAAO,CACnD,IAAM2f,EAAQ,CAAC,EACTmf,EAActrB,EAAS,WACzBkrB,EAAgB,EACdC,GAAoBnB,EAAQ,cAAc,EAChD,QAAWn0B,KAAQs1B,GAEjB,GADyBA,GAAkBt1B,CAAI,EAC1B,UAAY,EAAG,CAClC,IAAIhE,GAAYy5B,EAAYz1B,CAAI,EAC5BhE,KAAc,SACZgE,IAAS,kBAAoB8J,EAAO,iBAAgB9N,GAAY8N,EAAO,gBACvE9J,IAAS,iBAAmB8J,EAAO,gBAAe9N,GAAY8N,EAAO,gBAE3E,IAAM9H,GAAO,CAAC,EACdA,GAAK,UAAYhG,GACbA,IAAaA,GAAU,OACzBgG,GAAK,KAAOhG,GAAU,MAExBsa,EAAMtW,CAAI,EAAIgC,GACdqzB,GACF,CAEFrB,EAAa,WAAa1d,EAC1B0d,EAAa,cAAgBqB,EAC7BrB,EAAa,MAAQr9B,CACvB,CACA,SAAS++B,GAAiB,CACxB,IAAMV,EAAgBhB,EAAa,cACnC,QAASl9B,EAAI,EAAG4N,EAAKswB,EAAc,OAAQl+B,EAAI4N,EAAI5N,IACjDk+B,EAAcl+B,CAAC,EAAI,CAEvB,CACA,SAAS6+B,EAAgB35B,EAAW,CAClC45B,EAA0B55B,EAAW,CAAC,CACxC,CACA,SAAS45B,EAA0B55B,EAAW65B,EAAkB,CAC9D,IAAMb,EAAgBhB,EAAa,cAC7BiB,EAAoBjB,EAAa,kBACjCkB,EAAoBlB,EAAa,kBACvCgB,EAAch5B,CAAS,EAAI,EACvBi5B,EAAkBj5B,CAAS,IAAM,IACnCsE,EAAG,wBAAwBtE,CAAS,EACpCi5B,EAAkBj5B,CAAS,EAAI,GAE7Bk5B,EAAkBl5B,CAAS,IAAM65B,IACnCv1B,EAAG,oBAAoBtE,EAAW65B,CAAgB,EAClDX,EAAkBl5B,CAAS,EAAI65B,EAEnC,CACA,SAASC,GAA0B,CACjC,IAAMd,EAAgBhB,EAAa,cAC7BiB,EAAoBjB,EAAa,kBACvC,QAASl9B,EAAI,EAAG4N,EAAKuwB,EAAkB,OAAQn+B,EAAI4N,EAAI5N,IACjDm+B,EAAkBn+B,CAAC,IAAMk+B,EAAcl+B,CAAC,IAC1CwJ,EAAG,yBAAyBxJ,CAAC,EAC7Bm+B,EAAkBn+B,CAAC,EAAI,EAG7B,CACA,SAASi/B,EAAoBp/B,EAAOiT,EAAMrT,EAAM4kB,EAAY6a,EAAQj6B,EAAQk6B,EAAS,CAC/EA,IAAY,GACd31B,EAAG,qBAAqB3J,EAAOiT,EAAMrT,EAAMy/B,EAAQj6B,CAAM,EAEzDuE,EAAG,oBAAoB3J,EAAOiT,EAAMrT,EAAM4kB,EAAY6a,EAAQj6B,CAAM,CAExE,CACA,SAAS04B,EAAsB3qB,EAAQ6V,EAAUwU,EAAShqB,EAAU,CAClEurB,EAAe,EACf,IAAMN,EAAqBjrB,EAAS,WAC9BmrB,EAAoBnB,EAAQ,cAAc,EAC1C+B,EAAiCvW,EAAS,uBAChD,QAAW3f,MAAQs1B,EAAmB,CACpC,IAAMa,EAAmBb,EAAkBt1B,EAAI,EAC/C,GAAIm2B,EAAiB,UAAY,EAAG,CAClC,IAAIX,GAAoBJ,EAAmBp1B,EAAI,EAK/C,GAJIw1B,KAAsB,SACpBx1B,KAAS,kBAAoB8J,EAAO,iBAAgB0rB,GAAoB1rB,EAAO,gBAC/E9J,KAAS,iBAAmB8J,EAAO,gBAAe0rB,GAAoB1rB,EAAO,gBAE/E0rB,KAAsB,OAAQ,CAChC,IAAMra,GAAaqa,GAAkB,WAC/B5rB,GAAO4rB,GAAkB,SACzBx5B,GAAYugB,EAAW,IAAIiZ,EAAiB,EAClD,GAAIx5B,KAAc,OAAQ,SAC1B,IAAM8D,EAAS9D,GAAU,OACnBzF,GAAOyF,GAAU,KACjBo6B,GAAkBp6B,GAAU,gBAC5Bi6B,GAAU1/B,KAAS+J,EAAG,KAAO/J,KAAS+J,EAAG,cAAgBk1B,GAAkB,UAAY7vC,GAC7F,GAAI6vC,GAAkB,6BAA8B,CAClD,IAAMxzB,GAAOwzB,GAAkB,KACzBQ,GAASh0B,GAAK,OACdjG,GAASy5B,GAAkB,OACjC,GAAIxzB,GAAK,6BAA8B,CACrC,QAASlL,GAAI,EAAGA,GAAIq/B,EAAiB,aAAcr/B,KACjD8+B,EAA0BO,EAAiB,SAAWr/B,GAAGkL,GAAK,gBAAgB,EAE5E8H,EAAO,kBAAoB,IAAQK,EAAS,oBAAsB,SACpEA,EAAS,kBAAoBnI,GAAK,iBAAmBA,GAAK,MAE9D,KACE,SAASlL,GAAI,EAAGA,GAAIq/B,EAAiB,aAAcr/B,KACjD6+B,EAAgBQ,EAAiB,SAAWr/B,EAAC,EAGjDwJ,EAAG,WAAWA,EAAG,aAAcR,CAAM,EACrC,QAAShJ,GAAI,EAAGA,GAAIq/B,EAAiB,aAAcr/B,KACjDi/B,EACEI,EAAiB,SAAWr/B,GAC5B8S,GAAOusB,EAAiB,aACxB5/B,GACA4kB,GACA6a,GAASI,IACRr6B,GAAS6N,GAAOusB,EAAiB,aAAer/B,IAAKs/B,GACtDH,EACF,CAEJ,KAAO,CACL,GAAIT,GAAkB,2BAA4B,CAChD,QAAS1+B,GAAI,EAAGA,GAAIq/B,EAAiB,aAAcr/B,KACjD8+B,EAA0BO,EAAiB,SAAWr/B,GAAG0+B,GAAkB,gBAAgB,EAEzF1rB,EAAO,kBAAoB,IAAQK,EAAS,oBAAsB,SACpEA,EAAS,kBAAoBqrB,GAAkB,iBAAmBA,GAAkB,MAExF,KACE,SAAS1+B,GAAI,EAAGA,GAAIq/B,EAAiB,aAAcr/B,KACjD6+B,EAAgBQ,EAAiB,SAAWr/B,EAAC,EAGjDwJ,EAAG,WAAWA,EAAG,aAAcR,CAAM,EACrC,QAAShJ,GAAI,EAAGA,GAAIq/B,EAAiB,aAAcr/B,KACjDi/B,EACEI,EAAiB,SAAWr/B,GAC5B8S,GAAOusB,EAAiB,aACxB5/B,GACA4kB,GACAvR,GAAOwsB,GACPxsB,GAAOusB,EAAiB,aAAer/B,GAAIs/B,GAC3CH,EACF,CAEJ,CACF,SAAWC,IAAmC,OAAQ,CACpD,IAAMx+B,GAAQw+B,EAA+Bl2B,EAAI,EACjD,GAAItI,KAAU,OACZ,OAAQA,GAAM,OAAQ,CACpB,IAAK,GACH4I,EAAG,gBAAgB61B,EAAiB,SAAUz+B,EAAK,EACnD,MACF,IAAK,GACH4I,EAAG,gBAAgB61B,EAAiB,SAAUz+B,EAAK,EACnD,MACF,IAAK,GACH4I,EAAG,gBAAgB61B,EAAiB,SAAUz+B,EAAK,EACnD,MACF,QACE4I,EAAG,gBAAgB61B,EAAiB,SAAUz+B,EAAK,CACvD,CAEJ,CACF,CACF,CACAo+B,EAAwB,CAC1B,CACA,SAASO,GAAU,CACjBC,EAAM,EACN,QAAWC,KAAc1C,EAAe,CACtC,IAAMiB,EAAajB,EAAc0C,CAAU,EAC3C,QAAWC,KAAa1B,EAAY,CAClC,IAAMC,EAAWD,EAAW0B,CAAS,EACrC,QAAW3B,KAAaE,EACtBH,EAAwBG,EAASF,CAAS,EAAE,MAAM,EAClD,OAAOE,EAASF,CAAS,EAE3B,OAAOC,EAAW0B,CAAS,CAC7B,CACA,OAAO3C,EAAc0C,CAAU,CACjC,CACF,CACA,SAASE,EAAwBtsB,EAAU,CACzC,GAAI0pB,EAAc1pB,EAAS,EAAE,IAAM,OAAQ,OAC3C,IAAM2qB,EAAajB,EAAc1pB,EAAS,EAAE,EAC5C,QAAWqsB,KAAa1B,EAAY,CAClC,IAAMC,EAAWD,EAAW0B,CAAS,EACrC,QAAW3B,KAAaE,EACtBH,EAAwBG,EAASF,CAAS,EAAE,MAAM,EAClD,OAAOE,EAASF,CAAS,EAE3B,OAAOC,EAAW0B,CAAS,CAC7B,CACA,OAAO3C,EAAc1pB,EAAS,EAAE,CAClC,CACA,SAASusB,EAAuBvC,EAAS,CACvC,QAAWoC,KAAc1C,EAAe,CACtC,IAAMiB,EAAajB,EAAc0C,CAAU,EAC3C,GAAIzB,EAAWX,EAAQ,EAAE,IAAM,OAAQ,SACvC,IAAMY,EAAWD,EAAWX,EAAQ,EAAE,EACtC,QAAWU,KAAaE,EACtBH,EAAwBG,EAASF,CAAS,EAAE,MAAM,EAClD,OAAOE,EAASF,CAAS,EAE3B,OAAOC,EAAWX,EAAQ,EAAE,CAC9B,CACF,CACA,SAASmC,GAAQ,CACfK,EAAkB,EAClB1C,EAAc,GACVD,IAAiBF,IACrBE,EAAeF,EACfQ,EAAsBN,EAAa,MAAM,EAC3C,CACA,SAAS2C,GAAoB,CAC3B7C,EAAa,SAAW,KACxBA,EAAa,QAAU,KACvBA,EAAa,UAAY,EAC3B,CACA,MAAO,CACL,MAAAI,EACA,MAAAoC,EACA,kBAAAK,EACA,QAAAN,EACA,wBAAAI,EACA,uBAAAC,EACA,eAAAhB,EACA,gBAAAC,EACA,wBAAAG,CACF,CACF,CACA,SAASc,GAAoBt2B,EAAIijB,EAAYsT,EAAM,CACjD,IAAIC,EACJ,SAASC,EAAQr/B,EAAO,CACtBo/B,EAAOp/B,CACT,CACA,SAASw7B,EAAO9X,EAAO5W,EAAO,CAC5BlE,EAAG,WAAWw2B,EAAM1b,EAAO5W,CAAK,EAChCqyB,EAAK,OAAOryB,EAAOsyB,EAAM,CAAC,CAC5B,CACA,SAASE,EAAgB5b,EAAO5W,EAAOyyB,EAAW,CAC5CA,IAAc,IAClB32B,EAAG,oBAAoBw2B,EAAM1b,EAAO5W,EAAOyyB,CAAS,EACpDJ,EAAK,OAAOryB,EAAOsyB,EAAMG,CAAS,EACpC,CACA,SAASC,EAAgBC,EAAQC,EAAQC,EAAW,CAClD,GAAIA,IAAc,EAAG,OACH9T,EAAW,IAAI,kBAAkB,EACzC,qBAAqBuT,EAAMK,EAAQ,EAAGC,EAAQ,EAAGC,CAAS,EACpE,IAAIC,EAAe,EACnB,QAASxgC,EAAI,EAAGA,EAAIugC,EAAWvgC,IAC7BwgC,GAAgBF,EAAOtgC,CAAC,EAE1B+/B,EAAK,OAAOS,EAAcR,EAAM,CAAC,CACnC,CACA,SAASS,EAAyBJ,EAAQC,EAAQC,EAAWJ,EAAW,CACtE,GAAII,IAAc,EAAG,OACrB,IAAMG,EAAYjU,EAAW,IAAI,kBAAkB,EACnD,GAAIiU,IAAc,KAChB,QAAS1gC,EAAI,EAAGA,EAAIqgC,EAAO,OAAQrgC,IACjCkgC,EAAgBG,EAAOrgC,CAAC,EAAGsgC,EAAOtgC,CAAC,EAAGmgC,EAAUngC,CAAC,CAAC,MAE/C,CACL0gC,EAAU,8BAA8BV,EAAMK,EAAQ,EAAGC,EAAQ,EAAGH,EAAW,EAAGI,CAAS,EAC3F,IAAIC,EAAe,EACnB,QAASxgC,EAAI,EAAGA,EAAIugC,EAAWvgC,IAC7BwgC,GAAgBF,EAAOtgC,CAAC,EAE1B,QAASA,EAAI,EAAGA,EAAImgC,EAAU,OAAQngC,IACpC+/B,EAAK,OAAOS,EAAcR,EAAMG,EAAUngC,CAAC,CAAC,CAEhD,CACF,CACA,KAAK,QAAUigC,EACf,KAAK,OAAS7D,EACd,KAAK,gBAAkB8D,EACvB,KAAK,gBAAkBE,EACvB,KAAK,yBAA2BK,CAClC,CACA,SAASE,GAAkBn3B,EAAIijB,EAAY9N,EAAYiiB,EAAO,CAC5D,IAAIC,EACJ,SAASC,GAAmB,CAC1B,GAAID,IAAkB,OAAQ,OAAOA,EACrC,GAAIpU,EAAW,IAAI,gCAAgC,IAAM,GAAM,CAC7D,IAAMiU,EAAYjU,EAAW,IAAI,gCAAgC,EACjEoU,EAAgBr3B,EAAG,aAAak3B,EAAU,8BAA8B,CAC1E,MACEG,EAAgB,EAElB,OAAOA,CACT,CACA,SAASE,EAAsBC,EAAe,CAC5C,MAAI,EAAAA,IAAkBnqC,IAAc+pC,EAAM,QAAQI,CAAa,IAAMx3B,EAAG,aAAaA,EAAG,gCAAgC,EAI1H,CACA,SAASy3B,EAAoBC,EAAa,CACxC,IAAMC,EAA0BD,IAAgBrzC,KAAkB4+B,EAAW,IAAI,6BAA6B,GAAKA,EAAW,IAAI,wBAAwB,GAC1J,MAAI,EAAAyU,IAAgBtjC,IAAoBgjC,EAAM,QAAQM,CAAW,IAAM13B,EAAG,aAAaA,EAAG,8BAA8B,GACxH03B,IAAgBt0C,IAAa,CAACu0C,EAIhC,CACA,SAASC,EAAgBC,EAAY,CACnC,GAAIA,IAAe,QAAS,CAC1B,GAAI73B,EAAG,yBAAyBA,EAAG,cAAeA,EAAG,UAAU,EAAE,UAAY,GAAKA,EAAG,yBAAyBA,EAAG,gBAAiBA,EAAG,UAAU,EAAE,UAAY,EAC3J,MAAO,QAET63B,EAAa,SACf,CACA,OAAIA,IAAe,WACb73B,EAAG,yBAAyBA,EAAG,cAAeA,EAAG,YAAY,EAAE,UAAY,GAAKA,EAAG,yBAAyBA,EAAG,gBAAiBA,EAAG,YAAY,EAAE,UAAY,EACxJ,UAGJ,MACT,CACA,IAAI83B,EAAY3iB,EAAW,YAAc,OAASA,EAAW,UAAY,QACnE4iB,EAAeH,EAAgBE,CAAS,EAC1CC,IAAiBD,IACnB,QAAQ,KAAK,uBAAwBA,EAAW,uBAAwBC,EAAc,UAAU,EAChGD,EAAYC,GAEd,IAAMC,EAAyB7iB,EAAW,yBAA2B,GAC/D8iB,EAAqB9iB,EAAW,qBAAuB,IAAQ8N,EAAW,IAAI,kBAAkB,EACtG,GAAIgV,IAAuB,GAAM,CAC/B,IAAMC,EAAMjV,EAAW,IAAI,kBAAkB,EAC7CiV,EAAI,eAAeA,EAAI,eAAgBA,EAAI,eAAe,CAC5D,CACA,IAAMC,EAAcn4B,EAAG,aAAaA,EAAG,uBAAuB,EACxDo4B,EAAoBp4B,EAAG,aAAaA,EAAG,8BAA8B,EACrEq4B,EAAiBr4B,EAAG,aAAaA,EAAG,gBAAgB,EACpDs4B,EAAiBt4B,EAAG,aAAaA,EAAG,yBAAyB,EAC7Du4B,EAAgBv4B,EAAG,aAAaA,EAAG,kBAAkB,EACrDw4B,EAAoBx4B,EAAG,aAAaA,EAAG,0BAA0B,EACjEy4B,EAAcz4B,EAAG,aAAaA,EAAG,mBAAmB,EACpD04B,EAAsB14B,EAAG,aAAaA,EAAG,4BAA4B,EACrE24B,EAAiBP,EAAoB,EACrCQ,EAAa54B,EAAG,aAAaA,EAAG,WAAW,EACjD,MAAO,CACL,SAAU,GAEV,iBAAAs3B,EACA,gBAAAM,EACA,sBAAAL,EACA,oBAAAE,EACA,UAAAK,EACA,uBAAAE,EACA,mBAAAC,EACA,YAAAE,EACA,kBAAAC,EACA,eAAAC,EACA,eAAAC,EACA,cAAAC,EACA,kBAAAC,EACA,YAAAC,EACA,oBAAAC,EACA,eAAAC,EACA,WAAAC,CACF,CACF,CACA,SAASC,GAAcC,EAAY,CACjC,IAAMjY,EAAQ,KACVkY,EAAc,KAAMC,EAAkB,EAAGC,EAAuB,GAAOC,EAAmB,GACxFhvB,EAAQ,IAAIle,GAASmtC,EAAmB,IAAI1wC,GAAW2wC,EAAU,CAAE,MAAO,KAAM,YAAa,EAAM,EACzG,KAAK,QAAUA,EACf,KAAK,UAAY,EACjB,KAAK,gBAAkB,EACvB,KAAK,KAAO,SAASnT,EAAQoT,EAAqB,CAChD,IAAMC,EAAUrT,EAAO,SAAW,GAAKoT,GAEvCL,IAAoB,GAAKC,EACzB,OAAAA,EAAuBI,EACvBL,EAAkB/S,EAAO,OAClBqT,CACT,EACA,KAAK,aAAe,UAAW,CAC7BJ,EAAmB,GACnBK,EAAc,IAAI,CACpB,EACA,KAAK,WAAa,UAAW,CAC3BL,EAAmB,EACrB,EACA,KAAK,eAAiB,SAASjT,EAAQ7d,EAAQ,CAC7C2wB,EAAcQ,EAActT,EAAQ7d,EAAQ,CAAC,CAC/C,EACA,KAAK,SAAW,SAASiX,EAAUjX,EAAQoxB,EAAU,CACnD,IAAMvT,EAAS5G,EAAS,eAAgBoa,EAAmBpa,EAAS,iBAAkBqa,EAAcra,EAAS,YACvGsa,EAAqBb,EAAW,IAAIzZ,CAAQ,EAClD,GAAI,CAAC4Z,GAAwBhT,IAAW,MAAQA,EAAO,SAAW,GAAKiT,GAAoB,CAACQ,EACtFR,EACFK,EAAc,IAAI,EAElBK,EAAiB,MAEd,CACL,IAAMC,EAAUX,EAAmB,EAAIF,EAAiBc,EAAUD,EAAU,EACxEE,EAAWJ,EAAmB,eAAiB,KACnDP,EAAQ,MAAQW,EAChBA,EAAWR,EAActT,EAAQ7d,EAAQ0xB,EAASN,CAAQ,EAC1D,QAAShjC,EAAI,EAAGA,IAAMsjC,EAAS,EAAEtjC,EAC/BujC,EAASvjC,CAAC,EAAIuiC,EAAYviC,CAAC,EAE7BmjC,EAAmB,cAAgBI,EACnC,KAAK,gBAAkBN,EAAmB,KAAK,UAAY,EAC3D,KAAK,WAAaI,CACpB,CACF,EACA,SAASD,GAAmB,CACtBR,EAAQ,QAAUL,IACpBK,EAAQ,MAAQL,EAChBK,EAAQ,YAAcJ,EAAkB,GAE1CnY,EAAM,UAAYmY,EAClBnY,EAAM,gBAAkB,CAC1B,CACA,SAAS0Y,EAActT,EAAQ7d,EAAQ7D,EAAWy1B,EAAe,CAC/D,IAAMC,EAAUhU,IAAW,KAAOA,EAAO,OAAS,EAC9C8T,EAAW,KACf,GAAIE,IAAY,EAAG,CAEjB,GADAF,EAAWX,EAAQ,MACfY,IAAkB,IAAQD,IAAa,KAAM,CAC/C,IAAMG,EAAW31B,EAAY01B,EAAU,EAAGE,EAAa/xB,EAAO,mBAC9D+wB,EAAiB,gBAAgBgB,CAAU,GACvCJ,IAAa,MAAQA,EAAS,OAASG,KACzCH,EAAW,IAAI,aAAaG,CAAQ,GAEtC,QAAS1jC,EAAI,EAAG4jC,EAAK71B,EAAW/N,IAAMyjC,EAAS,EAAEzjC,EAAG4jC,GAAM,EACxDlwB,EAAM,KAAK+b,EAAOzvB,CAAC,CAAC,EAAE,aAAa2jC,EAAYhB,CAAgB,EAC/DjvB,EAAM,OAAO,QAAQ6vB,EAAUK,CAAE,EACjCL,EAASK,EAAK,CAAC,EAAIlwB,EAAM,QAE7B,CACAkvB,EAAQ,MAAQW,EAChBX,EAAQ,YAAc,EACxB,CACA,OAAAvY,EAAM,UAAYoZ,EAClBpZ,EAAM,gBAAkB,EACjBkZ,CACT,CACF,CACA,SAASM,GAAcxX,EAAU,CAC/B,IAAIiP,EAA2B,IAAI,QACnC,SAASwI,EAAkBr2B,EAAS9B,EAAS,CAC3C,OAAIA,IAAYvf,GACdqhB,EAAQ,QAAUnkB,GACTqiB,IAAYtf,KACrBohB,EAAQ,QAAUlkB,IAEbkkB,CACT,CACA,SAASokB,EAAIpkB,EAAS,CACpB,GAAIA,GAAWA,EAAQ,UAAW,CAChC,IAAM9B,EAAU8B,EAAQ,QACxB,GAAI9B,IAAYvf,IAAoCuf,IAAYtf,GAC9D,GAAIivC,EAAS,IAAI7tB,CAAO,EAAG,CACzB,IAAMs2B,EAAUzI,EAAS,IAAI7tB,CAAO,EAAE,QACtC,OAAOq2B,EAAkBC,EAASt2B,EAAQ,OAAO,CACnD,KAAO,CACL,IAAM1C,EAAQ0C,EAAQ,MACtB,GAAI1C,GAASA,EAAM,OAAS,EAAG,CAC7B,IAAM0iB,EAAe,IAAI7uB,GAAsBmM,EAAM,MAAM,EAC3D,OAAA0iB,EAAa,2BAA2BpB,EAAU5e,CAAO,EACzD6tB,EAAS,IAAI7tB,EAASggB,CAAY,EAClChgB,EAAQ,iBAAiB,UAAWu2B,CAAgB,EAC7CF,EAAkBrW,EAAa,QAAShgB,EAAQ,OAAO,CAChE,KACE,QAAO,IAEX,CAEJ,CACA,OAAOA,CACT,CACA,SAASu2B,EAAiBlkC,EAAO,CAC/B,IAAM2N,EAAU3N,EAAM,OACtB2N,EAAQ,oBAAoB,UAAWu2B,CAAgB,EACvD,IAAMD,EAAUzI,EAAS,IAAI7tB,CAAO,EAChCs2B,IAAY,SACdzI,EAAS,OAAO7tB,CAAO,EACvBs2B,EAAQ,QAAQ,EAEpB,CACA,SAASxE,GAAU,CACjBjE,EAA2B,IAAI,OACjC,CACA,MAAO,CACL,IAAAzJ,EACA,QAAA0N,CACF,CACF,CACA,IAAItqC,GAAqB,cAAchN,EAAO,CAC5C,YAAY8zB,EAAO,GAAIC,EAAQ,EAAGC,EAAM,EAAGC,EAAS,GAAIC,EAAO,GAAKC,EAAM,IAAK,CAC7E,MAAM,EACN,KAAK,qBAAuB,GAC5B,KAAK,KAAO,qBACZ,KAAK,KAAO,EACZ,KAAK,KAAO,KACZ,KAAK,KAAOL,EACZ,KAAK,MAAQC,EACb,KAAK,IAAMC,EACX,KAAK,OAASC,EACd,KAAK,KAAOC,EACZ,KAAK,IAAMC,EACX,KAAK,uBAAuB,CAC9B,CACA,KAAKlQ,EAAQyT,EAAW,CACtB,aAAM,KAAKzT,EAAQyT,CAAS,EAC5B,KAAK,KAAOzT,EAAO,KACnB,KAAK,MAAQA,EAAO,MACpB,KAAK,IAAMA,EAAO,IAClB,KAAK,OAASA,EAAO,OACrB,KAAK,KAAOA,EAAO,KACnB,KAAK,IAAMA,EAAO,IAClB,KAAK,KAAOA,EAAO,KACnB,KAAK,KAAOA,EAAO,OAAS,KAAO,KAAO,OAAO,OAAO,CAAC,EAAGA,EAAO,IAAI,EAChE,IACT,CACA,cAAcihB,EAAWC,EAAYjsB,EAAGM,EAAG6L,EAAOC,EAAQ,CACpD,KAAK,OAAS,OAChB,KAAK,KAAO,CACV,QAAS,GACT,UAAW,EACX,WAAY,EACZ,QAAS,EACT,QAAS,EACT,MAAO,EACP,OAAQ,CACV,GAEF,KAAK,KAAK,QAAU,GACpB,KAAK,KAAK,UAAY4f,EACtB,KAAK,KAAK,WAAaC,EACvB,KAAK,KAAK,QAAUjsB,EACpB,KAAK,KAAK,QAAUM,EACpB,KAAK,KAAK,MAAQ6L,EAClB,KAAK,KAAK,OAASC,EACnB,KAAK,uBAAuB,CAC9B,CACA,iBAAkB,CACZ,KAAK,OAAS,OAChB,KAAK,KAAK,QAAU,IAEtB,KAAK,uBAAuB,CAC9B,CACA,wBAAyB,CACvB,IAAM3I,GAAM,KAAK,MAAQ,KAAK,OAAS,EAAI,KAAK,MAC1CC,GAAM,KAAK,IAAM,KAAK,SAAW,EAAI,KAAK,MAC1C4D,GAAM,KAAK,MAAQ,KAAK,MAAQ,EAChCC,GAAM,KAAK,IAAM,KAAK,QAAU,EAClCqT,EAAOtT,EAAK7D,EACZoX,EAAQvT,EAAK7D,EACbqX,EAAMvT,EAAK7D,EACXqX,EAASxT,EAAK7D,EAClB,GAAI,KAAK,OAAS,MAAQ,KAAK,KAAK,QAAS,CAC3C,IAAMo/B,GAAU,KAAK,MAAQ,KAAK,MAAQ,KAAK,KAAK,UAAY,KAAK,KAC/DC,GAAU,KAAK,IAAM,KAAK,QAAU,KAAK,KAAK,WAAa,KAAK,KACtEnoB,GAAQkoB,EAAS,KAAK,KAAK,QAC3BjoB,EAAQD,EAAOkoB,EAAS,KAAK,KAAK,MAClChoB,GAAOioB,EAAS,KAAK,KAAK,QAC1BhoB,EAASD,EAAMioB,EAAS,KAAK,KAAK,MACpC,CACA,KAAK,iBAAiB,iBAAiBnoB,EAAMC,EAAOC,EAAKC,EAAQ,KAAK,KAAM,KAAK,IAAK,KAAK,gBAAgB,EAC3G,KAAK,wBAAwB,KAAK,KAAK,gBAAgB,EAAE,OAAO,CAClE,CACA,OAAO9Q,EAAM,CACX,IAAMF,EAAO,MAAM,OAAOE,CAAI,EAC9B,OAAAF,EAAK,OAAO,KAAO,KAAK,KACxBA,EAAK,OAAO,KAAO,KAAK,KACxBA,EAAK,OAAO,MAAQ,KAAK,MACzBA,EAAK,OAAO,IAAM,KAAK,IACvBA,EAAK,OAAO,OAAS,KAAK,OAC1BA,EAAK,OAAO,KAAO,KAAK,KACxBA,EAAK,OAAO,IAAM,KAAK,IACnB,KAAK,OAAS,OAAMA,EAAK,OAAO,KAAO,OAAO,OAAO,CAAC,EAAG,KAAK,IAAI,GAC/DA,CACT,CACF,EACIi5B,GAAU,EACVC,GAAkB,CAAC,KAAO,KAAO,IAAM,KAAO,KAAO,IAAK,EAC1DC,GAAc,GACdC,GAA8B,IAAIrvC,GAClCsvC,GAA8B,IAAI77C,GAClC87C,GAAa,KACbC,GAAqB,EACrBC,GAAwB,EACxBC,GAAgB,GAChBC,IAAO,EAAI,KAAK,KAAK,CAAC,GAAK,EAC3BC,GAAU,EAAID,GACdE,GAAkB,CACJ,IAAIzmC,EAAQ,CAACumC,GAAKC,GAAS,CAAC,EAC5B,IAAIxmC,EAAQumC,GAAKC,GAAS,CAAC,EAC3B,IAAIxmC,EAAQ,CAACwmC,GAAS,EAAGD,EAAG,EAC5B,IAAIvmC,EAAQwmC,GAAS,EAAGD,EAAG,EAC3B,IAAIvmC,EAAQ,EAAGumC,GAAK,CAACC,EAAO,EAC5B,IAAIxmC,EAAQ,EAAGumC,GAAKC,EAAO,EAC3B,IAAIxmC,EAAQ,GAAI,EAAG,EAAE,EACrB,IAAIA,EAAQ,EAAG,EAAG,EAAE,EACpB,IAAIA,EAAQ,GAAI,EAAG,CAAC,EACpB,IAAIA,EAAQ,EAAG,EAAG,CAAC,CACrC,EACIhJ,GAAiB,KAAM,CACzB,YAAYg3B,EAAU,CACpB,KAAK,UAAYA,EACjB,KAAK,sBAAwB,KAC7B,KAAK,QAAU,EACf,KAAK,UAAY,EACjB,KAAK,WAAa,CAAC,EACnB,KAAK,UAAY,CAAC,EAClB,KAAK,QAAU,CAAC,EAChB,KAAK,cAAgB,KACrB,KAAK,iBAAmB,KACxB,KAAK,kBAAoB,KACzB,KAAK,iBAAiB,KAAK,aAAa,CAC1C,CAQA,UAAU4B,EAAO8W,EAAQ,EAAG5oB,EAAO,GAAKC,EAAM,IAAK,CACjDooB,GAAa,KAAK,UAAU,gBAAgB,EAC5CC,GAAqB,KAAK,UAAU,kBAAkB,EACtDC,GAAwB,KAAK,UAAU,qBAAqB,EAC5DC,GAAgB,KAAK,UAAU,GAAG,QAClC,KAAK,UAAU,GAAG,QAAU,GAC5B,KAAK,SAAS,GAAG,EACjB,IAAMK,EAAqB,KAAK,iBAAiB,EACjD,OAAAA,EAAmB,YAAc,GACjC,KAAK,eAAe/W,EAAO9R,EAAMC,EAAK4oB,CAAkB,EACpDD,EAAQ,GACV,KAAK,MAAMC,EAAoB,EAAG,EAAGD,CAAK,EAE5C,KAAK,YAAYC,CAAkB,EACnC,KAAK,SAASA,CAAkB,EACzBA,CACT,CAOA,oBAAoBC,EAAiBxX,EAAe,KAAM,CACxD,OAAO,KAAK,aAAawX,EAAiBxX,CAAY,CACxD,CAOA,YAAYsW,EAAStW,EAAe,KAAM,CACxC,OAAO,KAAK,aAAasW,EAAStW,CAAY,CAChD,CAKA,sBAAuB,CACjB,KAAK,mBAAqB,OAC5B,KAAK,iBAAmByX,GAAoB,EAC5C,KAAK,iBAAiB,KAAK,gBAAgB,EAE/C,CAKA,8BAA+B,CACzB,KAAK,oBAAsB,OAC7B,KAAK,kBAAoBC,GAAqB,EAC9C,KAAK,iBAAiB,KAAK,iBAAiB,EAEhD,CAMA,SAAU,CACR,KAAK,SAAS,EACV,KAAK,mBAAqB,MAAM,KAAK,iBAAiB,QAAQ,EAC9D,KAAK,oBAAsB,MAAM,KAAK,kBAAkB,QAAQ,CACtE,CAEA,SAASC,EAAU,CACjB,KAAK,QAAU,KAAK,MAAM,KAAK,KAAKA,CAAQ,CAAC,EAC7C,KAAK,UAAY,KAAK,IAAI,EAAG,KAAK,OAAO,CAC3C,CACA,UAAW,CACL,KAAK,gBAAkB,MAAM,KAAK,cAAc,QAAQ,EACxD,KAAK,wBAA0B,MAAM,KAAK,sBAAsB,QAAQ,EAC5E,QAASplC,EAAI,EAAGA,EAAI,KAAK,WAAW,OAAQA,IAC1C,KAAK,WAAWA,CAAC,EAAE,QAAQ,CAE/B,CACA,SAASqlC,EAAc,CACrB,KAAK,UAAU,gBAAgBb,GAAYC,GAAoBC,EAAqB,EACpF,KAAK,UAAU,GAAG,QAAUC,GAC5BU,EAAa,YAAc,GAC3BC,GAAaD,EAAc,EAAG,EAAGA,EAAa,MAAOA,EAAa,MAAM,CAC1E,CACA,aAAa53B,EAASggB,EAAc,CAC9BhgB,EAAQ,UAAYnkB,IAAyBmkB,EAAQ,UAAYlkB,GACnE,KAAK,SAASkkB,EAAQ,MAAM,SAAW,EAAI,GAAKA,EAAQ,MAAM,CAAC,EAAE,OAASA,EAAQ,MAAM,CAAC,EAAE,MAAM,KAAK,EAEtG,KAAK,SAASA,EAAQ,MAAM,MAAQ,CAAC,EAEvC+2B,GAAa,KAAK,UAAU,gBAAgB,EAC5CC,GAAqB,KAAK,UAAU,kBAAkB,EACtDC,GAAwB,KAAK,UAAU,qBAAqB,EAC5DC,GAAgB,KAAK,UAAU,GAAG,QAClC,KAAK,UAAU,GAAG,QAAU,GAC5B,IAAMK,EAAqBvX,GAAgB,KAAK,iBAAiB,EACjE,YAAK,iBAAiBhgB,EAASu3B,CAAkB,EACjD,KAAK,YAAYA,CAAkB,EACnC,KAAK,SAASA,CAAkB,EACzBA,CACT,CACA,kBAAmB,CACjB,IAAM13B,EAAQ,EAAI,KAAK,IAAI,KAAK,UAAW,GAAM,EAC3CC,EAAS,EAAI,KAAK,UAClBg4B,EAAS,CACb,UAAW50C,GACX,UAAWA,GACX,gBAAiB,GACjB,KAAM9C,GACN,OAAQgJ,GACR,WAAY5F,GACZ,YAAa,EACf,EACM+zC,EAAqBQ,GAAoBl4B,EAAOC,EAAQg4B,CAAM,EACpE,GAAI,KAAK,wBAA0B,MAAQ,KAAK,sBAAsB,QAAUj4B,GAAS,KAAK,sBAAsB,SAAWC,EAAQ,CACjI,KAAK,wBAA0B,MACjC,KAAK,SAAS,EAEhB,KAAK,sBAAwBi4B,GAAoBl4B,EAAOC,EAAQg4B,CAAM,EACtE,GAAM,CAAE,QAAAE,CAAQ,EAAI,MACnB,CAAE,SAAU,KAAK,UAAW,UAAW,KAAK,WAAY,OAAQ,KAAK,OAAQ,EAAIC,GAAcD,CAAO,GACvG,KAAK,cAAgBE,GAAeF,EAASn4B,EAAOC,CAAM,CAC5D,CACA,OAAOy3B,CACT,CACA,iBAAiBnc,EAAU,CACzB,IAAM+c,EAAU,IAAIxzC,GAAK,KAAK,WAAW,CAAC,EAAGy2B,CAAQ,EACrD,KAAK,UAAU,QAAQ+c,EAAStB,EAAW,CAC7C,CACA,eAAerW,EAAO9R,EAAMC,EAAK4oB,EAAoB,CAGnD,IAAMa,EAAa,IAAItwC,GAAkB,GAAM,EAAS4mB,EAAMC,CAAG,EAC3D0pB,EAAS,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,CAAC,EAC3BC,EAAc,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,EAAE,EAClC1Z,EAAW,KAAK,UAChB2Z,EAAoB3Z,EAAS,UAC7B4Z,EAAc5Z,EAAS,YAC7BA,EAAS,cAAckY,EAAW,EAClClY,EAAS,YAAct4B,GACvBs4B,EAAS,UAAY,GACrB,IAAM6Z,EAAqB,IAAI7zC,GAAkB,CAC/C,KAAM,mBACN,KAAMpL,GACN,WAAY,GACZ,UAAW,EACb,CAAC,EACKk/C,EAAgB,IAAI/zC,GAAK,IAAI1K,GAAew+C,CAAkB,EAChEE,EAAgB,GACdjK,EAAalO,EAAM,WACrBkO,EACEA,EAAW,UACb+J,EAAmB,MAAM,KAAK/J,CAAU,EACxClO,EAAM,WAAa,KACnBmY,EAAgB,KAGlBF,EAAmB,MAAM,KAAK3B,EAAW,EACzC6B,EAAgB,IAElB,QAASpmC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAMqmC,EAAMrmC,EAAI,EACZqmC,IAAQ,GACVR,EAAW,GAAG,IAAI,EAAGC,EAAO9lC,CAAC,EAAG,CAAC,EACjC6lC,EAAW,OAAOE,EAAY/lC,CAAC,EAAG,EAAG,CAAC,GAC7BqmC,IAAQ,GACjBR,EAAW,GAAG,IAAI,EAAG,EAAGC,EAAO9lC,CAAC,CAAC,EACjC6lC,EAAW,OAAO,EAAGE,EAAY/lC,CAAC,EAAG,CAAC,IAEtC6lC,EAAW,GAAG,IAAI,EAAGC,EAAO9lC,CAAC,EAAG,CAAC,EACjC6lC,EAAW,OAAO,EAAG,EAAGE,EAAY/lC,CAAC,CAAC,GAExC,IAAM8S,EAAO,KAAK,UAClBwyB,GAAaN,EAAoBqB,EAAMvzB,EAAM9S,EAAI,EAAI8S,EAAO,EAAGA,EAAMA,CAAI,EACzEuZ,EAAS,gBAAgB2Y,CAAkB,EACvCoB,GACF/Z,EAAS,OAAO8Z,EAAeN,CAAU,EAE3CxZ,EAAS,OAAO4B,EAAO4X,CAAU,CACnC,CACAM,EAAc,SAAS,QAAQ,EAC/BA,EAAc,SAAS,QAAQ,EAC/B9Z,EAAS,YAAc4Z,EACvB5Z,EAAS,UAAY2Z,EACrB/X,EAAM,WAAakO,CACrB,CACA,iBAAiB1uB,EAASu3B,EAAoB,CAC5C,IAAM3Y,EAAW,KAAK,UAChBia,EAAgB74B,EAAQ,UAAYnkB,IAAyBmkB,EAAQ,UAAYlkB,GACnF+8C,GACE,KAAK,mBAAqB,OAC5B,KAAK,iBAAmBpB,GAAoB,GAE9C,KAAK,iBAAiB,SAAS,WAAW,MAAQz3B,EAAQ,wBAA0B,GAAQ,GAAK,GAE7F,KAAK,oBAAsB,OAC7B,KAAK,kBAAoB03B,GAAqB,GAGlD,IAAMtc,EAAWyd,EAAgB,KAAK,iBAAmB,KAAK,kBACxD9X,EAAO,IAAIp8B,GAAK,KAAK,WAAW,CAAC,EAAGy2B,CAAQ,EAC5CoD,EAAWpD,EAAS,SAC1BoD,EAAS,OAAU,MAAQxe,EAC3B,IAAMqF,EAAO,KAAK,UAClBwyB,GAAaN,EAAoB,EAAG,EAAG,EAAIlyB,EAAM,EAAIA,CAAI,EACzDuZ,EAAS,gBAAgB2Y,CAAkB,EAC3C3Y,EAAS,OAAOmC,EAAM8V,EAAW,CACnC,CACA,YAAYU,EAAoB,CAC9B,IAAM3Y,EAAW,KAAK,UAChBka,EAAYla,EAAS,UAC3BA,EAAS,UAAY,GACrB,IAAMrrB,EAAI,KAAK,WAAW,OAC1B,QAAShB,EAAI,EAAGA,EAAIgB,EAAGhB,IAAK,CAC1B,IAAM+kC,EAAQ,KAAK,KAAK,KAAK,QAAQ/kC,CAAC,EAAI,KAAK,QAAQA,CAAC,EAAI,KAAK,QAAQA,EAAI,CAAC,EAAI,KAAK,QAAQA,EAAI,CAAC,CAAC,EAC/FwmC,EAAW1B,IAAiB9jC,EAAIhB,EAAI,GAAK8kC,GAAgB,MAAM,EACrE,KAAK,MAAME,EAAoBhlC,EAAI,EAAGA,EAAG+kC,EAAOyB,CAAQ,CAC1D,CACAna,EAAS,UAAYka,CACvB,CAQA,MAAMvB,EAAoByB,EAAOC,EAAQ3B,EAAOyB,EAAU,CACxD,IAAMG,EAAuB,KAAK,sBAClC,KAAK,UACH3B,EACA2B,EACAF,EACAC,EACA3B,EACA,cACAyB,CACF,EACA,KAAK,UACHG,EACA3B,EACA0B,EACAA,EACA3B,EACA,eACAyB,CACF,CACF,CACA,UAAUI,EAAUC,EAAWJ,EAAOC,EAAQI,EAAc9wB,EAAWwwB,EAAU,CAC/E,IAAMna,EAAW,KAAK,UAChB0a,EAAe,KAAK,cACtB/wB,IAAc,eAAiBA,IAAc,gBAC/C,QAAQ,MACN,4DACF,EAEF,IAAMgxB,EAAsB,EACtBC,EAAW,IAAI70C,GAAK,KAAK,WAAWs0C,CAAM,EAAGK,CAAY,EACzDG,EAAeH,EAAa,SAC5BI,EAAS,KAAK,UAAUV,CAAK,EAAI,EACjCW,EAAkB,SAASN,CAAY,EAAI,KAAK,IAAM,EAAIK,GAAU,EAAI,KAAK,IAAM,EAAI9C,GAAc,GACrGgD,EAAcP,EAAeM,EAC7BE,EAAU,SAASR,CAAY,EAAI,EAAI,KAAK,MAAME,EAAsBK,CAAW,EAAIhD,GACzFiD,EAAUjD,IACZ,QAAQ,KAAK,iBAAiByC,CAAY,iDAAiDQ,CAAO,uCAAuCjD,EAAW,EAAE,EAExJ,IAAMkD,EAAU,CAAC,EACbC,EAAM,EACV,QAASxnC,EAAI,EAAGA,EAAIqkC,GAAa,EAAErkC,EAAG,CACpC,IAAMqb,EAAKrb,EAAIqnC,EACTI,EAAS,KAAK,IAAI,CAACpsB,EAAKA,EAAK,CAAC,EACpCksB,EAAQ,KAAKE,CAAM,EACfznC,IAAM,EACRwnC,GAAOC,EACEznC,EAAIsnC,IACbE,GAAO,EAAIC,EAEf,CACA,QAASznC,EAAI,EAAGA,EAAIunC,EAAQ,OAAQvnC,IAClCunC,EAAQvnC,CAAC,EAAIunC,EAAQvnC,CAAC,EAAIwnC,EAE5BN,EAAa,OAAU,MAAQN,EAAS,QACxCM,EAAa,QAAW,MAAQI,EAChCJ,EAAa,QAAW,MAAQK,EAChCL,EAAa,YAAe,MAAQlxB,IAAc,cAC9CwwB,IACFU,EAAa,SAAY,MAAQV,GAEnC,GAAM,CAAE,QAAAf,CAAQ,EAAI,KACpByB,EAAa,OAAU,MAAQE,EAC/BF,EAAa,OAAU,MAAQzB,EAAUgB,EACzC,IAAMiB,EAAa,KAAK,UAAUhB,CAAM,EAClCvlC,EAAI,EAAIumC,GAAchB,EAASjB,EAAUtB,GAAUuC,EAASjB,EAAUtB,GAAU,GAChF1iC,EAAI,GAAK,KAAK,UAAYimC,GAChCpC,GAAauB,EAAW1lC,EAAGM,EAAG,EAAIimC,EAAY,EAAIA,CAAU,EAC5Drb,EAAS,gBAAgBwa,CAAS,EAClCxa,EAAS,OAAO4a,EAAU3C,EAAW,CACvC,CACF,EACA,SAASoB,GAAciC,EAAQ,CAC7B,IAAMC,EAAY,CAAC,EACbC,EAAW,CAAC,EACZC,EAAS,CAAC,EACZC,EAAMJ,EACJK,EAAYL,EAASxD,GAAU,EAAIC,GAAgB,OACzD,QAASpkC,EAAI,EAAGA,EAAIgoC,EAAWhoC,IAAK,CAClC,IAAMioC,EAAU,KAAK,IAAI,EAAGF,CAAG,EAC/BF,EAAS,KAAKI,CAAO,EACrB,IAAIlD,EAAQ,EAAIkD,EACZjoC,EAAI2nC,EAASxD,GACfY,EAAQX,GAAgBpkC,EAAI2nC,EAASxD,GAAU,CAAC,EACvCnkC,IAAM,IACf+kC,EAAQ,GAEV+C,EAAO,KAAK/C,CAAK,EACjB,IAAMmD,EAAY,GAAKD,EAAU,GAC3BpnC,EAAM,CAACqnC,EACPpnC,EAAM,EAAIonC,EACVze,EAAM,CAAC5oB,EAAKA,EAAKC,EAAKD,EAAKC,EAAKA,EAAKD,EAAKA,EAAKC,EAAKA,EAAKD,EAAKC,CAAG,EACjEqnC,EAAY,EACZ7d,EAAW,EACX8d,EAAe,EACfC,EAAS,EACTC,EAAgB,EAChBntB,EAAW,IAAI,aAAaitB,EAAe9d,EAAW6d,CAAS,EAC/Dh8B,EAAK,IAAI,aAAak8B,EAAS/d,EAAW6d,CAAS,EACnDI,EAAY,IAAI,aAAaD,EAAgBhe,EAAW6d,CAAS,EACvE,QAASne,EAAO,EAAGA,EAAOme,EAAWne,IAAQ,CAC3C,IAAM7oB,EAAI6oB,EAAO,EAAI,EAAI,EAAI,EACvBvoB,EAAIuoB,EAAO,EAAI,EAAI,GACnBwe,EAAc,CAClBrnC,EACAM,EACA,EACAN,EAAI,EAAI,EACRM,EACA,EACAN,EAAI,EAAI,EACRM,EAAI,EACJ,EACAN,EACAM,EACA,EACAN,EAAI,EAAI,EACRM,EAAI,EACJ,EACAN,EACAM,EAAI,EACJ,CACF,EACA0Z,EAAS,IAAIqtB,EAAaJ,EAAe9d,EAAWN,CAAI,EACxD7d,EAAG,IAAIsd,EAAK4e,EAAS/d,EAAWN,CAAI,EACpC,IAAMye,EAAQ,CAACze,EAAMA,EAAMA,EAAMA,EAAMA,EAAMA,CAAI,EACjDue,EAAU,IAAIE,EAAOH,EAAgBhe,EAAWN,CAAI,CACtD,CACA,IAAMyF,EAAS,IAAI5nC,GACnB4nC,EAAO,aAAa,WAAY,IAAI7nC,GAAgBuzB,EAAUitB,CAAY,CAAC,EAC3E3Y,EAAO,aAAa,KAAM,IAAI7nC,GAAgBukB,EAAIk8B,CAAM,CAAC,EACzD5Y,EAAO,aAAa,YAAa,IAAI7nC,GAAgB2gD,EAAWD,CAAa,CAAC,EAC9EV,EAAU,KAAKnY,CAAM,EACjBsY,EAAM5D,IACR4D,GAEJ,CACA,MAAO,CAAE,UAAAH,EAAW,SAAAC,EAAU,OAAAC,CAAO,CACvC,CACA,SAAStC,GAAoBl4B,EAAOC,EAAQg4B,EAAQ,CAClD,IAAMP,EAAqB,IAAIlmC,GAAkBwO,EAAOC,EAAQg4B,CAAM,EACtE,OAAAP,EAAmB,QAAQ,QAAUt7C,GACrCs7C,EAAmB,QAAQ,KAAO,eAClCA,EAAmB,YAAc,GAC1BA,CACT,CACA,SAASM,GAAa36B,EAAQxJ,EAAGM,EAAG6L,EAAOC,EAAQ,CACjD5C,EAAO,SAAS,IAAIxJ,EAAGM,EAAG6L,EAAOC,CAAM,EACvC5C,EAAO,QAAQ,IAAIxJ,EAAGM,EAAG6L,EAAOC,CAAM,CACxC,CACA,SAASo4B,GAAegC,EAAQr6B,EAAOC,EAAQ,CAC7C,IAAMg6B,EAAU,IAAI,aAAalD,EAAW,EACtCmC,EAAW,IAAInoC,EAAQ,EAAG,EAAG,CAAC,EAuFpC,OAtFuB,IAAIhE,GAAe,CACxC,KAAM,wBACN,QAAS,CACP,EAAKgqC,GACL,mBAAsB,EAAI/2B,EAC1B,oBAAuB,EAAIC,EAC3B,eAAkB,GAAGo6B,CAAM,IAC7B,EACA,SAAU,CACR,OAAU,CAAE,MAAO,IAAK,EACxB,QAAW,CAAE,MAAO,CAAE,EACtB,QAAW,CAAE,MAAOJ,CAAQ,EAC5B,YAAe,CAAE,MAAO,EAAM,EAC9B,OAAU,CAAE,MAAO,CAAE,EACrB,OAAU,CAAE,MAAO,CAAE,EACrB,SAAY,CAAE,MAAOf,CAAS,CAChC,EACA,aAAckC,GAAuB,EACrC,eAEE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA8DF,SAAU70C,GACV,UAAW,GACX,WAAY,EACd,CAAC,CAEH,CACA,SAASsxC,IAAuB,CAC9B,OAAO,IAAI9qC,GAAe,CACxB,KAAM,0BACN,SAAU,CACR,OAAU,CAAE,MAAO,IAAK,CAC1B,EACA,aAAcquC,GAAuB,EACrC,eAEE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAqBF,SAAU70C,GACV,UAAW,GACX,WAAY,EACd,CAAC,CACH,CACA,SAASqxC,IAAsB,CAC7B,OAAO,IAAI7qC,GAAe,CACxB,KAAM,kBACN,SAAU,CACR,OAAU,CAAE,MAAO,IAAK,EACxB,WAAc,CAAE,MAAO,EAAG,CAC5B,EACA,aAAcquC,GAAuB,EACrC,eAEE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAkBF,SAAU70C,GACV,UAAW,GACX,WAAY,EACd,CAAC,CACH,CACA,SAAS60C,IAAyB,CAChC,MAEE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAyDJ,CACA,SAASC,GAAgBtc,EAAU,CACjC,IAAIuc,EAA6B,IAAI,QACjCC,EAAiB,KACrB,SAAShX,EAAIpkB,EAAS,CACpB,GAAIA,GAAWA,EAAQ,UAAW,CAChC,IAAM9B,EAAU8B,EAAQ,QAClBq7B,EAAgBn9B,IAAYvf,IAAoCuf,IAAYtf,GAC5E08C,EAAYp9B,IAAYriB,IAAyBqiB,IAAYpiB,GACnE,GAAIu/C,GAAiBC,EAAW,CAC9B,IAAItb,EAAemb,EAAW,IAAIn7B,CAAO,EACnCu7B,EAAsBvb,IAAiB,OAASA,EAAa,QAAQ,aAAe,EAC1F,GAAIhgB,EAAQ,uBAAyBA,EAAQ,eAAiBu7B,EAC5D,OAAIH,IAAmB,OAAMA,EAAiB,IAAIxzC,GAAeg3B,CAAQ,GACzEoB,EAAeqb,EAAgBD,EAAe,oBAAoBp7B,EAASggB,CAAY,EAAIob,EAAe,YAAYp7B,EAASggB,CAAY,EAC3IA,EAAa,QAAQ,aAAehgB,EAAQ,aAC5Cm7B,EAAW,IAAIn7B,EAASggB,CAAY,EAC7BA,EAAa,QAEpB,GAAIA,IAAiB,OACnB,OAAOA,EAAa,QACf,CACL,IAAM1iB,EAAQ0C,EAAQ,MACtB,OAAIq7B,GAAiB/9B,GAASA,EAAM,OAAS,GAAKg+B,GAAah+B,GAASk+B,EAAsBl+B,CAAK,GAC7F89B,IAAmB,OAAMA,EAAiB,IAAIxzC,GAAeg3B,CAAQ,GACzEoB,EAAeqb,EAAgBD,EAAe,oBAAoBp7B,CAAO,EAAIo7B,EAAe,YAAYp7B,CAAO,EAC/GggB,EAAa,QAAQ,aAAehgB,EAAQ,aAC5Cm7B,EAAW,IAAIn7B,EAASggB,CAAY,EACpChgB,EAAQ,iBAAiB,UAAWu2B,CAAgB,EAC7CvW,EAAa,SAEb,IAEX,CAEJ,CACF,CACA,OAAOhgB,CACT,CACA,SAASw7B,EAAsBl+B,EAAO,CACpC,IAAI2C,EAAQ,EACN1L,EAAS,EACf,QAAShC,EAAI,EAAGA,EAAIgC,EAAQhC,IACtB+K,EAAM/K,CAAC,IAAM,QAAQ0N,IAE3B,OAAOA,IAAU1L,CACnB,CACA,SAASgiC,EAAiBlkC,EAAO,CAC/B,IAAM2N,EAAU3N,EAAM,OACtB2N,EAAQ,oBAAoB,UAAWu2B,CAAgB,EACvD,IAAMkF,EAAYN,EAAW,IAAIn7B,CAAO,EACpCy7B,IAAc,SAChBN,EAAW,OAAOn7B,CAAO,EACzBy7B,EAAU,QAAQ,EAEtB,CACA,SAAS3J,GAAU,CACjBqJ,EAA6B,IAAI,QAC7BC,IAAmB,OACrBA,EAAe,QAAQ,EACvBA,EAAiB,KAErB,CACA,MAAO,CACL,IAAAhX,EACA,QAAA0N,CACF,CACF,CACA,SAAS4J,GAAgB3/B,EAAI,CAC3B,IAAMijB,EAAa,CAAC,EACpB,SAAS2c,EAAalgC,EAAM,CAC1B,GAAIujB,EAAWvjB,CAAI,IAAM,OACvB,OAAOujB,EAAWvjB,CAAI,EAExB,IAAIw3B,EACJ,OAAQx3B,EAAM,CACZ,IAAK,sBACHw3B,EAAYl3B,EAAG,aAAa,qBAAqB,GAAKA,EAAG,aAAa,yBAAyB,GAAKA,EAAG,aAAa,4BAA4B,EAChJ,MACF,IAAK,iCACHk3B,EAAYl3B,EAAG,aAAa,gCAAgC,GAAKA,EAAG,aAAa,oCAAoC,GAAKA,EAAG,aAAa,uCAAuC,EACjL,MACF,IAAK,gCACHk3B,EAAYl3B,EAAG,aAAa,+BAA+B,GAAKA,EAAG,aAAa,mCAAmC,GAAKA,EAAG,aAAa,sCAAsC,EAC9K,MACF,IAAK,iCACHk3B,EAAYl3B,EAAG,aAAa,gCAAgC,GAAKA,EAAG,aAAa,uCAAuC,EACxH,MACF,QACEk3B,EAAYl3B,EAAG,aAAaN,CAAI,CACpC,CACA,OAAAujB,EAAWvjB,CAAI,EAAIw3B,EACZA,CACT,CACA,MAAO,CACL,IAAK,SAASx3B,EAAM,CAClB,OAAOkgC,EAAalgC,CAAI,IAAM,IAChC,EACA,KAAM,UAAW,CACfkgC,EAAa,wBAAwB,EACrCA,EAAa,0BAA0B,EACvCA,EAAa,0BAA0B,EACvCA,EAAa,6BAA6B,EAC1CA,EAAa,sCAAsC,EACnDA,EAAa,8BAA8B,CAC7C,EACA,IAAK,SAASlgC,EAAM,CAClB,IAAMw3B,EAAY0I,EAAalgC,CAAI,EACnC,OAAIw3B,IAAc,MAChBr3B,GAAS,wBAA0BH,EAAO,2BAA2B,EAEhEw3B,CACT,CACF,CACF,CACA,SAAS2I,GAAgB7/B,EAAIic,EAAYsa,EAAMhD,EAAe,CAC5D,IAAM/d,EAAa,CAAC,EACdsqB,EAAsC,IAAI,QAChD,SAASC,EAAkBzpC,EAAO,CAChC,IAAMuT,EAAWvT,EAAM,OACnBuT,EAAS,QAAU,MACrBoS,EAAW,OAAOpS,EAAS,KAAK,EAElC,QAAWnK,KAAQmK,EAAS,WAC1BoS,EAAW,OAAOpS,EAAS,WAAWnK,CAAI,CAAC,EAE7C,QAAWA,KAAQmK,EAAS,gBAAiB,CAC3C,IAAMtT,EAAQsT,EAAS,gBAAgBnK,CAAI,EAC3C,QAASlJ,EAAI,EAAGC,EAAIF,EAAM,OAAQC,EAAIC,EAAGD,IACvCylB,EAAW,OAAO1lB,EAAMC,CAAC,CAAC,CAE9B,CACAqT,EAAS,oBAAoB,UAAWk2B,CAAiB,EACzD,OAAOvqB,EAAW3L,EAAS,EAAE,EAC7B,IAAMnO,EAAYokC,EAAoB,IAAIj2B,CAAQ,EAC9CnO,IACFugB,EAAW,OAAOvgB,CAAS,EAC3BokC,EAAoB,OAAOj2B,CAAQ,GAErC0pB,EAAc,wBAAwB1pB,CAAQ,EAC1CA,EAAS,4BAA8B,IACzC,OAAOA,EAAS,kBAElB0sB,EAAK,OAAO,YACd,CACA,SAASlO,EAAI7e,EAAQK,EAAU,CAC7B,OAAI2L,EAAW3L,EAAS,EAAE,IAAM,KAChCA,EAAS,iBAAiB,UAAWk2B,CAAiB,EACtDvqB,EAAW3L,EAAS,EAAE,EAAI,GAC1B0sB,EAAK,OAAO,cACL1sB,CACT,CACA,SAASnE,EAAOmE,EAAU,CACxB,IAAMirB,EAAqBjrB,EAAS,WACpC,QAAWnK,KAAQo1B,EACjB7Y,EAAW,OAAO6Y,EAAmBp1B,CAAI,EAAGM,EAAG,YAAY,EAE7D,IAAMoe,EAAkBvU,EAAS,gBACjC,QAAWnK,KAAQ0e,EAAiB,CAClC,IAAM7nB,EAAQ6nB,EAAgB1e,CAAI,EAClC,QAASlJ,EAAI,EAAGC,EAAIF,EAAM,OAAQC,EAAIC,EAAGD,IACvCylB,EAAW,OAAO1lB,EAAMC,CAAC,EAAGwJ,EAAG,YAAY,CAE/C,CACF,CACA,SAASggC,EAAyBn2B,EAAU,CAC1C,IAAMqU,EAAU,CAAC,EACX+hB,EAAgBp2B,EAAS,MACzBq2B,EAAmBr2B,EAAS,WAAW,SACzCs2B,EAAU,EACd,GAAIF,IAAkB,KAAM,CAC1B,IAAM1pC,EAAQ0pC,EAAc,MAC5BE,EAAUF,EAAc,QACxB,QAASzpC,EAAI,EAAGC,EAAIF,EAAM,OAAQC,EAAIC,EAAGD,GAAK,EAAG,CAC/C,IAAMoD,EAAIrD,EAAMC,EAAI,CAAC,EACf,EAAID,EAAMC,EAAI,CAAC,EACfsD,EAAIvD,EAAMC,EAAI,CAAC,EACrB0nB,EAAQ,KAAKtkB,EAAG,EAAG,EAAGE,EAAGA,EAAGF,CAAC,CAC/B,CACF,SAAWsmC,IAAqB,OAAQ,CACtC,IAAM3pC,EAAQ2pC,EAAiB,MAC/BC,EAAUD,EAAiB,QAC3B,QAAS1pC,EAAI,EAAGC,EAAIF,EAAM,OAAS,EAAI,EAAGC,EAAIC,EAAGD,GAAK,EAAG,CACvD,IAAMoD,EAAIpD,EAAI,EACR,EAAIA,EAAI,EACRsD,EAAItD,EAAI,EACd0nB,EAAQ,KAAKtkB,EAAG,EAAG,EAAGE,EAAGA,EAAGF,CAAC,CAC/B,CACF,KACE,QAEF,IAAM8B,EAAY,IAAK2D,GAAiB6e,CAAO,EAAIrqB,GAAwBD,IAAuBsqB,EAAS,CAAC,EAC5GxiB,EAAU,QAAUykC,EACpB,IAAMC,EAAoBN,EAAoB,IAAIj2B,CAAQ,EACtDu2B,GAAmBnkB,EAAW,OAAOmkB,CAAiB,EAC1DN,EAAoB,IAAIj2B,EAAUnO,CAAS,CAC7C,CACA,SAAS2kC,EAAsBx2B,EAAU,CACvC,IAAMy2B,EAAmBR,EAAoB,IAAIj2B,CAAQ,EACzD,GAAIy2B,EAAkB,CACpB,IAAML,EAAgBp2B,EAAS,MAC3Bo2B,IAAkB,MAChBK,EAAiB,QAAUL,EAAc,SAC3CD,EAAyBn2B,CAAQ,CAGvC,MACEm2B,EAAyBn2B,CAAQ,EAEnC,OAAOi2B,EAAoB,IAAIj2B,CAAQ,CACzC,CACA,MAAO,CACL,IAAAwe,EACA,OAAA3iB,EACA,sBAAA26B,CACF,CACF,CACA,SAASE,GAA2BvgC,EAAIijB,EAAYsT,EAAM,CACxD,IAAIC,EACJ,SAASC,EAAQr/B,EAAO,CACtBo/B,EAAOp/B,CACT,CACA,IAAInB,EAAM6/B,EACV,SAAS0K,EAASppC,EAAO,CACvBnB,EAAOmB,EAAM,KACb0+B,EAAkB1+B,EAAM,eAC1B,CACA,SAASw7B,EAAO9X,EAAO5W,EAAO,CAC5BlE,EAAG,aAAaw2B,EAAMtyB,EAAOjO,EAAM6kB,EAAQgb,CAAe,EAC1DS,EAAK,OAAOryB,EAAOsyB,EAAM,CAAC,CAC5B,CACA,SAASE,EAAgB5b,EAAO5W,EAAOyyB,EAAW,CAC5CA,IAAc,IAClB32B,EAAG,sBAAsBw2B,EAAMtyB,EAAOjO,EAAM6kB,EAAQgb,EAAiBa,CAAS,EAC9EJ,EAAK,OAAOryB,EAAOsyB,EAAMG,CAAS,EACpC,CACA,SAASC,EAAgBC,EAAQC,EAAQC,EAAW,CAClD,GAAIA,IAAc,EAAG,OACH9T,EAAW,IAAI,kBAAkB,EACzC,uBAAuBuT,EAAMM,EAAQ,EAAG7gC,EAAM4gC,EAAQ,EAAGE,CAAS,EAC5E,IAAIC,EAAe,EACnB,QAASxgC,EAAI,EAAGA,EAAIugC,EAAWvgC,IAC7BwgC,GAAgBF,EAAOtgC,CAAC,EAE1B+/B,EAAK,OAAOS,EAAcR,EAAM,CAAC,CACnC,CACA,SAASS,EAAyBJ,EAAQC,EAAQC,EAAWJ,EAAW,CACtE,GAAII,IAAc,EAAG,OACrB,IAAMG,EAAYjU,EAAW,IAAI,kBAAkB,EACnD,GAAIiU,IAAc,KAChB,QAAS1gC,EAAI,EAAGA,EAAIqgC,EAAO,OAAQrgC,IACjCkgC,EAAgBG,EAAOrgC,CAAC,EAAIs/B,EAAiBgB,EAAOtgC,CAAC,EAAGmgC,EAAUngC,CAAC,CAAC,MAEjE,CACL0gC,EAAU,gCAAgCV,EAAMM,EAAQ,EAAG7gC,EAAM4gC,EAAQ,EAAGF,EAAW,EAAGI,CAAS,EACnG,IAAIC,EAAe,EACnB,QAASxgC,EAAI,EAAGA,EAAIugC,EAAWvgC,IAC7BwgC,GAAgBF,EAAOtgC,CAAC,EAE1B,QAASA,EAAI,EAAGA,EAAImgC,EAAU,OAAQngC,IACpC+/B,EAAK,OAAOS,EAAcR,EAAMG,EAAUngC,CAAC,CAAC,CAEhD,CACF,CACA,KAAK,QAAUigC,EACf,KAAK,SAAW+J,EAChB,KAAK,OAAS5N,EACd,KAAK,gBAAkB8D,EACvB,KAAK,gBAAkBE,EACvB,KAAK,yBAA2BK,CAClC,CACA,SAASwJ,GAAUzgC,EAAI,CACrB,IAAM0gC,EAAS,CACb,WAAY,EACZ,SAAU,CACZ,EACM9N,EAAS,CACb,MAAO,EACP,MAAO,EACP,UAAW,EACX,OAAQ,EACR,MAAO,CACT,EACA,SAASltB,EAAOxB,EAAOsyB,EAAMmK,EAAe,CAE1C,OADA/N,EAAO,QACC4D,EAAM,CACZ,KAAKx2B,EAAG,UACN4yB,EAAO,WAAa+N,GAAiBz8B,EAAQ,GAC7C,MACF,KAAKlE,EAAG,MACN4yB,EAAO,OAAS+N,GAAiBz8B,EAAQ,GACzC,MACF,KAAKlE,EAAG,WACN4yB,EAAO,OAAS+N,GAAiBz8B,EAAQ,GACzC,MACF,KAAKlE,EAAG,UACN4yB,EAAO,OAAS+N,EAAgBz8B,EAChC,MACF,KAAKlE,EAAG,OACN4yB,EAAO,QAAU+N,EAAgBz8B,EACjC,MACF,QACE,QAAQ,MAAM,sCAAuCsyB,CAAI,EACzD,KACJ,CACF,CACA,SAASR,GAAQ,CACfpD,EAAO,MAAQ,EACfA,EAAO,UAAY,EACnBA,EAAO,OAAS,EAChBA,EAAO,MAAQ,CACjB,CACA,MAAO,CACL,OAAA8N,EACA,OAAA9N,EACA,SAAU,KACV,UAAW,GACX,MAAAoD,EACA,OAAAtwB,CACF,CACF,CACA,SAASk7B,GAAkB5gC,EAAI6gC,EAAclrB,EAAU,CACrD,IAAMmrB,EAAgC,IAAI,QACpCC,EAAQ,IAAIjsC,GAClB,SAAS4Q,EAAO8D,EAAQK,EAAUgqB,EAAS,CACzC,IAAMmN,EAAmBx3B,EAAO,sBAC1BsS,EAAiBjS,EAAS,gBAAgB,UAAYA,EAAS,gBAAgB,QAAUA,EAAS,gBAAgB,MAClHo3B,EAAoBnlB,IAAmB,OAASA,EAAe,OAAS,EAC1EolB,EAAQJ,EAAc,IAAIj3B,CAAQ,EACtC,GAAIq3B,IAAU,QAAUA,EAAM,QAAUD,EAAmB,CACzD,IAAIE,EAAiB,UAAW,CAC9Bl9B,EAAQ,QAAQ,EAChB68B,EAAc,OAAOj3B,CAAQ,EAC7BA,EAAS,oBAAoB,UAAWs3B,CAAc,CACxD,EACID,IAAU,QAAQA,EAAM,QAAQ,QAAQ,EAC5C,IAAME,EAAmBv3B,EAAS,gBAAgB,WAAa,OACzDw3B,EAAkBx3B,EAAS,gBAAgB,SAAW,OACtDy3B,EAAiBz3B,EAAS,gBAAgB,QAAU,OACpD03B,EAAe13B,EAAS,gBAAgB,UAAY,CAAC,EACrD23B,EAAe33B,EAAS,gBAAgB,QAAU,CAAC,EACnD43B,EAAc53B,EAAS,gBAAgB,OAAS,CAAC,EACnD63B,EAAkB,EAClBN,IAAqB,KAAMM,EAAkB,GAC7CL,IAAoB,KAAMK,EAAkB,GAC5CJ,IAAmB,KAAMI,EAAkB,GAC/C,IAAI59B,EAAQ+F,EAAS,WAAW,SAAS,MAAQ63B,EAC7C39B,EAAS,EACTD,EAAQ+8B,EAAa,iBACvB98B,EAAS,KAAK,KAAKD,EAAQ+8B,EAAa,cAAc,EACtD/8B,EAAQ+8B,EAAa,gBAEvB,IAAMrhC,EAAS,IAAI,aAAasE,EAAQC,EAAS,EAAIk9B,CAAiB,EAChEh9B,EAAU,IAAIhjB,GAAiBue,EAAQsE,EAAOC,EAAQk9B,CAAiB,EAC7Eh9B,EAAQ,KAAO7gB,GACf6gB,EAAQ,YAAc,GACtB,IAAM09B,EAAmBD,EAAkB,EAC3C,QAASlrC,EAAI,EAAGA,EAAIyqC,EAAmBzqC,IAAK,CAC1C,IAAMorC,EAAcL,EAAa/qC,CAAC,EAC5BqrC,EAAcL,EAAahrC,CAAC,EAC5BsrC,EAAaL,EAAYjrC,CAAC,EAC1BiF,EAASqI,EAAQC,EAAS,EAAIvN,EACpC,QAAS2U,EAAI,EAAGA,EAAIy2B,EAAY,MAAOz2B,IAAK,CAC1C,IAAMuqB,EAASvqB,EAAIw2B,EACfP,IAAqB,KACvBL,EAAM,oBAAoBa,EAAaz2B,CAAC,EACxC3L,EAAO/D,EAASi6B,EAAS,CAAC,EAAIqL,EAAM,EACpCvhC,EAAO/D,EAASi6B,EAAS,CAAC,EAAIqL,EAAM,EACpCvhC,EAAO/D,EAASi6B,EAAS,CAAC,EAAIqL,EAAM,EACpCvhC,EAAO/D,EAASi6B,EAAS,CAAC,EAAI,GAE5B2L,IAAoB,KACtBN,EAAM,oBAAoBc,EAAa12B,CAAC,EACxC3L,EAAO/D,EAASi6B,EAAS,CAAC,EAAIqL,EAAM,EACpCvhC,EAAO/D,EAASi6B,EAAS,CAAC,EAAIqL,EAAM,EACpCvhC,EAAO/D,EAASi6B,EAAS,CAAC,EAAIqL,EAAM,EACpCvhC,EAAO/D,EAASi6B,EAAS,CAAC,EAAI,GAE5B4L,IAAmB,KACrBP,EAAM,oBAAoBe,EAAY32B,CAAC,EACvC3L,EAAO/D,EAASi6B,EAAS,CAAC,EAAIqL,EAAM,EACpCvhC,EAAO/D,EAASi6B,EAAS,CAAC,EAAIqL,EAAM,EACpCvhC,EAAO/D,EAASi6B,EAAS,EAAE,EAAIqL,EAAM,EACrCvhC,EAAO/D,EAASi6B,EAAS,EAAE,EAAIoM,EAAW,WAAa,EAAIf,EAAM,EAAI,EAEzE,CACF,CACAG,EAAQ,CACN,MAAOD,EACP,QAAAh9B,EACA,KAAM,IAAIrP,EAAQkP,EAAOC,CAAM,CACjC,EACA+8B,EAAc,IAAIj3B,EAAUq3B,CAAK,EACjCr3B,EAAS,iBAAiB,UAAWs3B,CAAc,CACrD,CACA,GAAI33B,EAAO,kBAAoB,IAAQA,EAAO,eAAiB,KAC7DqqB,EAAQ,YAAY,EAAE,SAAS7zB,EAAI,eAAgBwJ,EAAO,aAAcmM,CAAQ,MAC3E,CACL,IAAIosB,EAAqB,EACzB,QAASvrC,EAAI,EAAGA,EAAIwqC,EAAiB,OAAQxqC,IAC3CurC,GAAsBf,EAAiBxqC,CAAC,EAE1C,IAAMwrC,EAAqBn4B,EAAS,qBAAuB,EAAI,EAAIk4B,EACnElO,EAAQ,YAAY,EAAE,SAAS7zB,EAAI,2BAA4BgiC,CAAkB,EACjFnO,EAAQ,YAAY,EAAE,SAAS7zB,EAAI,wBAAyBghC,CAAgB,CAC9E,CACAnN,EAAQ,YAAY,EAAE,SAAS7zB,EAAI,sBAAuBkhC,EAAM,QAASvrB,CAAQ,EACjFke,EAAQ,YAAY,EAAE,SAAS7zB,EAAI,0BAA2BkhC,EAAM,IAAI,CAC1E,CACA,MAAO,CACL,OAAAx7B,CACF,CACF,CACA,SAASu8B,GAAajiC,EAAIwV,EAAYyG,EAAYsa,EAAM,CACtD,IAAI2L,EAA4B,IAAI,QACpC,SAASx8B,EAAO8D,EAAQ,CACtB,IAAMme,EAAQ4O,EAAK,OAAO,MACpB1sB,EAAWL,EAAO,SAClB24B,EAAiB3sB,EAAW,IAAIhM,EAAQK,CAAQ,EAiBtD,GAhBIq4B,EAAU,IAAIC,CAAc,IAAMxa,IACpCnS,EAAW,OAAO2sB,CAAc,EAChCD,EAAU,IAAIC,EAAgBxa,CAAK,GAEjCne,EAAO,kBACLA,EAAO,iBAAiB,UAAW44B,CAAsB,IAAM,IACjE54B,EAAO,iBAAiB,UAAW44B,CAAsB,EAEvDF,EAAU,IAAI14B,CAAM,IAAMme,IAC5B1L,EAAW,OAAOzS,EAAO,eAAgBxJ,EAAG,YAAY,EACpDwJ,EAAO,gBAAkB,MAC3ByS,EAAW,OAAOzS,EAAO,cAAexJ,EAAG,YAAY,EAEzDkiC,EAAU,IAAI14B,EAAQme,CAAK,IAG3Bne,EAAO,cAAe,CACxB,IAAM64B,EAAW74B,EAAO,SACpB04B,EAAU,IAAIG,CAAQ,IAAM1a,IAC9B0a,EAAS,OAAO,EAChBH,EAAU,IAAIG,EAAU1a,CAAK,EAEjC,CACA,OAAOwa,CACT,CACA,SAASpM,GAAU,CACjBmM,EAA4B,IAAI,OAClC,CACA,SAASE,EAAuB9rC,EAAO,CACrC,IAAMgsC,EAAgBhsC,EAAM,OAC5BgsC,EAAc,oBAAoB,UAAWF,CAAsB,EACnEnmB,EAAW,OAAOqmB,EAAc,cAAc,EAC1CA,EAAc,gBAAkB,MAAMrmB,EAAW,OAAOqmB,EAAc,aAAa,CACzF,CACA,MAAO,CACL,OAAA58B,EACA,QAAAqwB,CACF,CACF,CACA,IAAIr0C,GAAe,cAAcuR,EAAQ,CACvC,YAAY6Q,EAAOC,EAAQ9N,EAAMkM,EAASC,EAAOC,EAAOC,EAAWC,EAAWE,EAAYD,EAAShhB,GAAa,CAC9G,GAAIghB,IAAWhhB,IAAeghB,IAAW/gB,GACvC,MAAM,IAAI,MAAM,kFAAkF,EAEhGwU,IAAS,QAAUuM,IAAWhhB,KAAayU,EAAO1B,IAClD0B,IAAS,QAAUuM,IAAW/gB,KAAoBwU,EAAO5B,IAC7D,MAAM,KAAM8N,EAASC,EAAOC,EAAOC,EAAWC,EAAWC,EAAQvM,EAAMwM,CAAU,EACjF,KAAK,eAAiB,GACtB,KAAK,MAAQ,CAAE,MAAAqB,EAAO,OAAAC,CAAO,EAC7B,KAAK,UAAYzB,IAAc,OAASA,EAAY1Y,GACpD,KAAK,UAAY2Y,IAAc,OAASA,EAAY3Y,GACpD,KAAK,MAAQ,GACb,KAAK,gBAAkB,GACvB,KAAK,gBAAkB,IACzB,CACA,KAAK8Y,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,gBAAkBA,EAAO,gBACvB,IACT,CACA,OAAOd,EAAM,CACX,IAAMF,EAAO,MAAM,OAAOE,CAAI,EAC9B,OAAI,KAAK,kBAAoB,OAAMF,EAAK,gBAAkB,KAAK,iBACxDA,CACT,CACF,EACI6gC,GAA+B,IAAItvC,GACnCuvC,GAAqC,IAAI9gD,GAAa,EAAG,CAAC,EAC1D+gD,GAAoC,IAAIxhD,GACxCyhD,GAAiC,IAAI1hD,GACrC2hD,GAAmC,IAAI3iD,GACvC4iD,GAAgB,CAAC,EACjBC,GAAgB,CAAC,EACjBC,GAAY,IAAI,aAAa,EAAE,EAC/BC,GAAY,IAAI,aAAa,CAAC,EAC9BC,GAAY,IAAI,aAAa,CAAC,EAClC,SAASC,GAAQ1sC,EAAO2sC,EAASC,EAAW,CAC1C,IAAMC,EAAY7sC,EAAM,CAAC,EACzB,GAAI6sC,GAAa,GAAKA,EAAY,EAAG,OAAO7sC,EAC5C,IAAMiB,EAAI0rC,EAAUC,EAChBxkC,EAAIikC,GAAcprC,CAAC,EAKvB,GAJImH,IAAM,SACRA,EAAI,IAAI,aAAanH,CAAC,EACtBorC,GAAcprC,CAAC,EAAImH,GAEjBukC,IAAY,EAAG,CACjBE,EAAU,QAAQzkC,EAAG,CAAC,EACtB,QAASnI,EAAI,EAAGiF,EAAS,EAAGjF,IAAM0sC,EAAS,EAAE1sC,EAC3CiF,GAAU0nC,EACV5sC,EAAMC,CAAC,EAAE,QAAQmI,EAAGlD,CAAM,CAE9B,CACA,OAAOkD,CACT,CACA,SAAS0kC,GAAYzpC,EAAGC,EAAG,CACzB,GAAID,EAAE,SAAWC,EAAE,OAAQ,MAAO,GAClC,QAASrD,EAAI,EAAGC,EAAImD,EAAE,OAAQpD,EAAIC,EAAGD,IACnC,GAAIoD,EAAEpD,CAAC,IAAMqD,EAAErD,CAAC,EAAG,MAAO,GAE5B,MAAO,EACT,CACA,SAAS8sC,GAAU1pC,EAAGC,EAAG,CACvB,QAASrD,EAAI,EAAGC,EAAIoD,EAAE,OAAQrD,EAAIC,EAAGD,IACnCoD,EAAEpD,CAAC,EAAIqD,EAAErD,CAAC,CAEd,CACA,SAAS+sC,GAAc5tB,EAAUne,EAAG,CAClC,IAAImH,EAAIkkC,GAAcrrC,CAAC,EACnBmH,IAAM,SACRA,EAAI,IAAI,WAAWnH,CAAC,EACpBqrC,GAAcrrC,CAAC,EAAImH,GAErB,QAAS,EAAI,EAAG,IAAMnH,EAAG,EAAE,EACzBmH,EAAE,CAAC,EAAIgX,EAAS,oBAAoB,EAEtC,OAAOhX,CACT,CACA,SAAS6kC,GAAYxjC,EAAIlF,EAAG,CAC1B,IAAMkb,EAAQ,KAAK,MACfA,EAAM,CAAC,IAAMlb,IACjBkF,EAAG,UAAU,KAAK,KAAMlF,CAAC,EACzBkb,EAAM,CAAC,EAAIlb,EACb,CACA,SAAS2oC,GAAYzjC,EAAIlF,EAAG,CAC1B,IAAMkb,EAAQ,KAAK,MACnB,GAAIlb,EAAE,IAAM,QACNkb,EAAM,CAAC,IAAMlb,EAAE,GAAKkb,EAAM,CAAC,IAAMlb,EAAE,KACrCkF,EAAG,UAAU,KAAK,KAAMlF,EAAE,EAAGA,EAAE,CAAC,EAChCkb,EAAM,CAAC,EAAIlb,EAAE,EACbkb,EAAM,CAAC,EAAIlb,EAAE,OAEV,CACL,GAAIuoC,GAAYrtB,EAAOlb,CAAC,EAAG,OAC3BkF,EAAG,WAAW,KAAK,KAAMlF,CAAC,EAC1BwoC,GAAUttB,EAAOlb,CAAC,CACpB,CACF,CACA,SAAS4oC,GAAY1jC,EAAIlF,EAAG,CAC1B,IAAMkb,EAAQ,KAAK,MACnB,GAAIlb,EAAE,IAAM,QACNkb,EAAM,CAAC,IAAMlb,EAAE,GAAKkb,EAAM,CAAC,IAAMlb,EAAE,GAAKkb,EAAM,CAAC,IAAMlb,EAAE,KACzDkF,EAAG,UAAU,KAAK,KAAMlF,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,EACrCkb,EAAM,CAAC,EAAIlb,EAAE,EACbkb,EAAM,CAAC,EAAIlb,EAAE,EACbkb,EAAM,CAAC,EAAIlb,EAAE,WAENA,EAAE,IAAM,QACbkb,EAAM,CAAC,IAAMlb,EAAE,GAAKkb,EAAM,CAAC,IAAMlb,EAAE,GAAKkb,EAAM,CAAC,IAAMlb,EAAE,KACzDkF,EAAG,UAAU,KAAK,KAAMlF,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,EACrCkb,EAAM,CAAC,EAAIlb,EAAE,EACbkb,EAAM,CAAC,EAAIlb,EAAE,EACbkb,EAAM,CAAC,EAAIlb,EAAE,OAEV,CACL,GAAIuoC,GAAYrtB,EAAOlb,CAAC,EAAG,OAC3BkF,EAAG,WAAW,KAAK,KAAMlF,CAAC,EAC1BwoC,GAAUttB,EAAOlb,CAAC,CACpB,CACF,CACA,SAAS6oC,GAAY3jC,EAAIlF,EAAG,CAC1B,IAAMkb,EAAQ,KAAK,MACnB,GAAIlb,EAAE,IAAM,QACNkb,EAAM,CAAC,IAAMlb,EAAE,GAAKkb,EAAM,CAAC,IAAMlb,EAAE,GAAKkb,EAAM,CAAC,IAAMlb,EAAE,GAAKkb,EAAM,CAAC,IAAMlb,EAAE,KAC7EkF,EAAG,UAAU,KAAK,KAAMlF,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,EAC1Ckb,EAAM,CAAC,EAAIlb,EAAE,EACbkb,EAAM,CAAC,EAAIlb,EAAE,EACbkb,EAAM,CAAC,EAAIlb,EAAE,EACbkb,EAAM,CAAC,EAAIlb,EAAE,OAEV,CACL,GAAIuoC,GAAYrtB,EAAOlb,CAAC,EAAG,OAC3BkF,EAAG,WAAW,KAAK,KAAMlF,CAAC,EAC1BwoC,GAAUttB,EAAOlb,CAAC,CACpB,CACF,CACA,SAAS8oC,GAAW5jC,EAAIlF,EAAG,CACzB,IAAMkb,EAAQ,KAAK,MACb6tB,EAAW/oC,EAAE,SACnB,GAAI+oC,IAAa,OAAQ,CACvB,GAAIR,GAAYrtB,EAAOlb,CAAC,EAAG,OAC3BkF,EAAG,iBAAiB,KAAK,KAAM,GAAOlF,CAAC,EACvCwoC,GAAUttB,EAAOlb,CAAC,CACpB,KAAO,CACL,GAAIuoC,GAAYrtB,EAAO6tB,CAAQ,EAAG,OAClCb,GAAU,IAAIa,CAAQ,EACtB7jC,EAAG,iBAAiB,KAAK,KAAM,GAAOgjC,EAAS,EAC/CM,GAAUttB,EAAO6tB,CAAQ,CAC3B,CACF,CACA,SAASC,GAAW9jC,EAAIlF,EAAG,CACzB,IAAMkb,EAAQ,KAAK,MACb6tB,EAAW/oC,EAAE,SACnB,GAAI+oC,IAAa,OAAQ,CACvB,GAAIR,GAAYrtB,EAAOlb,CAAC,EAAG,OAC3BkF,EAAG,iBAAiB,KAAK,KAAM,GAAOlF,CAAC,EACvCwoC,GAAUttB,EAAOlb,CAAC,CACpB,KAAO,CACL,GAAIuoC,GAAYrtB,EAAO6tB,CAAQ,EAAG,OAClCd,GAAU,IAAIc,CAAQ,EACtB7jC,EAAG,iBAAiB,KAAK,KAAM,GAAO+iC,EAAS,EAC/CO,GAAUttB,EAAO6tB,CAAQ,CAC3B,CACF,CACA,SAASE,GAAW/jC,EAAIlF,EAAG,CACzB,IAAMkb,EAAQ,KAAK,MACb6tB,EAAW/oC,EAAE,SACnB,GAAI+oC,IAAa,OAAQ,CACvB,GAAIR,GAAYrtB,EAAOlb,CAAC,EAAG,OAC3BkF,EAAG,iBAAiB,KAAK,KAAM,GAAOlF,CAAC,EACvCwoC,GAAUttB,EAAOlb,CAAC,CACpB,KAAO,CACL,GAAIuoC,GAAYrtB,EAAO6tB,CAAQ,EAAG,OAClCf,GAAU,IAAIe,CAAQ,EACtB7jC,EAAG,iBAAiB,KAAK,KAAM,GAAO8iC,EAAS,EAC/CQ,GAAUttB,EAAO6tB,CAAQ,CAC3B,CACF,CACA,SAASG,GAAYhkC,EAAIlF,EAAG,CAC1B,IAAMkb,EAAQ,KAAK,MACfA,EAAM,CAAC,IAAMlb,IACjBkF,EAAG,UAAU,KAAK,KAAMlF,CAAC,EACzBkb,EAAM,CAAC,EAAIlb,EACb,CACA,SAASmpC,GAAYjkC,EAAIlF,EAAG,CAC1B,IAAMkb,EAAQ,KAAK,MACnB,GAAIlb,EAAE,IAAM,QACNkb,EAAM,CAAC,IAAMlb,EAAE,GAAKkb,EAAM,CAAC,IAAMlb,EAAE,KACrCkF,EAAG,UAAU,KAAK,KAAMlF,EAAE,EAAGA,EAAE,CAAC,EAChCkb,EAAM,CAAC,EAAIlb,EAAE,EACbkb,EAAM,CAAC,EAAIlb,EAAE,OAEV,CACL,GAAIuoC,GAAYrtB,EAAOlb,CAAC,EAAG,OAC3BkF,EAAG,WAAW,KAAK,KAAMlF,CAAC,EAC1BwoC,GAAUttB,EAAOlb,CAAC,CACpB,CACF,CACA,SAASopC,GAAYlkC,EAAIlF,EAAG,CAC1B,IAAMkb,EAAQ,KAAK,MACnB,GAAIlb,EAAE,IAAM,QACNkb,EAAM,CAAC,IAAMlb,EAAE,GAAKkb,EAAM,CAAC,IAAMlb,EAAE,GAAKkb,EAAM,CAAC,IAAMlb,EAAE,KACzDkF,EAAG,UAAU,KAAK,KAAMlF,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,EACrCkb,EAAM,CAAC,EAAIlb,EAAE,EACbkb,EAAM,CAAC,EAAIlb,EAAE,EACbkb,EAAM,CAAC,EAAIlb,EAAE,OAEV,CACL,GAAIuoC,GAAYrtB,EAAOlb,CAAC,EAAG,OAC3BkF,EAAG,WAAW,KAAK,KAAMlF,CAAC,EAC1BwoC,GAAUttB,EAAOlb,CAAC,CACpB,CACF,CACA,SAASqpC,GAAYnkC,EAAIlF,EAAG,CAC1B,IAAMkb,EAAQ,KAAK,MACnB,GAAIlb,EAAE,IAAM,QACNkb,EAAM,CAAC,IAAMlb,EAAE,GAAKkb,EAAM,CAAC,IAAMlb,EAAE,GAAKkb,EAAM,CAAC,IAAMlb,EAAE,GAAKkb,EAAM,CAAC,IAAMlb,EAAE,KAC7EkF,EAAG,UAAU,KAAK,KAAMlF,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,EAC1Ckb,EAAM,CAAC,EAAIlb,EAAE,EACbkb,EAAM,CAAC,EAAIlb,EAAE,EACbkb,EAAM,CAAC,EAAIlb,EAAE,EACbkb,EAAM,CAAC,EAAIlb,EAAE,OAEV,CACL,GAAIuoC,GAAYrtB,EAAOlb,CAAC,EAAG,OAC3BkF,EAAG,WAAW,KAAK,KAAMlF,CAAC,EAC1BwoC,GAAUttB,EAAOlb,CAAC,CACpB,CACF,CACA,SAASspC,GAAapkC,EAAIlF,EAAG,CAC3B,IAAMkb,EAAQ,KAAK,MACfA,EAAM,CAAC,IAAMlb,IACjBkF,EAAG,WAAW,KAAK,KAAMlF,CAAC,EAC1Bkb,EAAM,CAAC,EAAIlb,EACb,CACA,SAASupC,GAAarkC,EAAIlF,EAAG,CAC3B,IAAMkb,EAAQ,KAAK,MACnB,GAAIlb,EAAE,IAAM,QACNkb,EAAM,CAAC,IAAMlb,EAAE,GAAKkb,EAAM,CAAC,IAAMlb,EAAE,KACrCkF,EAAG,WAAW,KAAK,KAAMlF,EAAE,EAAGA,EAAE,CAAC,EACjCkb,EAAM,CAAC,EAAIlb,EAAE,EACbkb,EAAM,CAAC,EAAIlb,EAAE,OAEV,CACL,GAAIuoC,GAAYrtB,EAAOlb,CAAC,EAAG,OAC3BkF,EAAG,YAAY,KAAK,KAAMlF,CAAC,EAC3BwoC,GAAUttB,EAAOlb,CAAC,CACpB,CACF,CACA,SAASwpC,GAAatkC,EAAIlF,EAAG,CAC3B,IAAMkb,EAAQ,KAAK,MACnB,GAAIlb,EAAE,IAAM,QACNkb,EAAM,CAAC,IAAMlb,EAAE,GAAKkb,EAAM,CAAC,IAAMlb,EAAE,GAAKkb,EAAM,CAAC,IAAMlb,EAAE,KACzDkF,EAAG,WAAW,KAAK,KAAMlF,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,EACtCkb,EAAM,CAAC,EAAIlb,EAAE,EACbkb,EAAM,CAAC,EAAIlb,EAAE,EACbkb,EAAM,CAAC,EAAIlb,EAAE,OAEV,CACL,GAAIuoC,GAAYrtB,EAAOlb,CAAC,EAAG,OAC3BkF,EAAG,YAAY,KAAK,KAAMlF,CAAC,EAC3BwoC,GAAUttB,EAAOlb,CAAC,CACpB,CACF,CACA,SAASypC,GAAavkC,EAAIlF,EAAG,CAC3B,IAAMkb,EAAQ,KAAK,MACnB,GAAIlb,EAAE,IAAM,QACNkb,EAAM,CAAC,IAAMlb,EAAE,GAAKkb,EAAM,CAAC,IAAMlb,EAAE,GAAKkb,EAAM,CAAC,IAAMlb,EAAE,GAAKkb,EAAM,CAAC,IAAMlb,EAAE,KAC7EkF,EAAG,WAAW,KAAK,KAAMlF,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,EAC3Ckb,EAAM,CAAC,EAAIlb,EAAE,EACbkb,EAAM,CAAC,EAAIlb,EAAE,EACbkb,EAAM,CAAC,EAAIlb,EAAE,EACbkb,EAAM,CAAC,EAAIlb,EAAE,OAEV,CACL,GAAIuoC,GAAYrtB,EAAOlb,CAAC,EAAG,OAC3BkF,EAAG,YAAY,KAAK,KAAMlF,CAAC,EAC3BwoC,GAAUttB,EAAOlb,CAAC,CACpB,CACF,CACA,SAAS0pC,GAAWxkC,EAAIlF,EAAG6a,EAAU,CACnC,IAAMK,EAAQ,KAAK,MACbyuB,EAAO9uB,EAAS,oBAAoB,EACtCK,EAAM,CAAC,IAAMyuB,IACfzkC,EAAG,UAAU,KAAK,KAAMykC,CAAI,EAC5BzuB,EAAM,CAAC,EAAIyuB,GAEb,IAAIC,EACA,KAAK,OAAS1kC,EAAG,mBACnBwiC,GAAmB,gBAAkBp8C,GACrCs+C,EAAiBlC,IAEjBkC,EAAiBnC,GAEnB5sB,EAAS,aAAa7a,GAAK4pC,EAAgBD,CAAI,CACjD,CACA,SAASE,GAAa3kC,EAAIlF,EAAG6a,EAAU,CACrC,IAAMK,EAAQ,KAAK,MACbyuB,EAAO9uB,EAAS,oBAAoB,EACtCK,EAAM,CAAC,IAAMyuB,IACfzkC,EAAG,UAAU,KAAK,KAAMykC,CAAI,EAC5BzuB,EAAM,CAAC,EAAIyuB,GAEb9uB,EAAS,aAAa7a,GAAK4nC,GAAgB+B,CAAI,CACjD,CACA,SAASG,GAAW5kC,EAAIlF,EAAG6a,EAAU,CACnC,IAAMK,EAAQ,KAAK,MACbyuB,EAAO9uB,EAAS,oBAAoB,EACtCK,EAAM,CAAC,IAAMyuB,IACfzkC,EAAG,UAAU,KAAK,KAAMykC,CAAI,EAC5BzuB,EAAM,CAAC,EAAIyuB,GAEb9uB,EAAS,eAAe7a,GAAK6nC,GAAkB8B,CAAI,CACrD,CACA,SAASI,GAAkB7kC,EAAIlF,EAAG6a,EAAU,CAC1C,IAAMK,EAAQ,KAAK,MACbyuB,EAAO9uB,EAAS,oBAAoB,EACtCK,EAAM,CAAC,IAAMyuB,IACfzkC,EAAG,UAAU,KAAK,KAAMykC,CAAI,EAC5BzuB,EAAM,CAAC,EAAIyuB,GAEb9uB,EAAS,kBAAkB7a,GAAK2nC,GAAmBgC,CAAI,CACzD,CACA,SAASK,GAAkB7uC,EAAM,CAC/B,OAAQA,EAAM,CACZ,IAAK,MACH,OAAOutC,GAET,IAAK,OACH,OAAOC,GAET,IAAK,OACH,OAAOC,GAET,IAAK,OACH,OAAOC,GAET,IAAK,OACH,OAAOC,GAET,IAAK,OACH,OAAOE,GAET,IAAK,OACH,OAAOC,GAET,IAAK,MACL,IAAK,OACH,OAAOC,GAET,IAAK,OACL,IAAK,OACH,OAAOC,GAET,IAAK,OACL,IAAK,OACH,OAAOC,GAET,IAAK,OACL,IAAK,OACH,OAAOC,GAET,IAAK,MACH,OAAOC,GAET,IAAK,OACH,OAAOC,GAET,IAAK,OACH,OAAOC,GAET,IAAK,OACH,OAAOC,GAET,IAAK,OAEL,IAAK,OAEL,IAAK,OAEL,IAAK,OAEL,IAAK,OACH,OAAOC,GACT,IAAK,OAEL,IAAK,OAEL,IAAK,OACH,OAAOG,GACT,IAAK,OAEL,IAAK,OAEL,IAAK,OAEL,IAAK,OACH,OAAOC,GACT,IAAK,OAEL,IAAK,OAEL,IAAK,OAEL,IAAK,OACH,OAAOC,EACX,CACF,CACA,SAASE,GAAiB/kC,EAAIlF,EAAG,CAC/BkF,EAAG,WAAW,KAAK,KAAMlF,CAAC,CAC5B,CACA,SAASkqC,GAAiBhlC,EAAIlF,EAAG,CAC/B,IAAM4G,EAAOuhC,GAAQnoC,EAAG,KAAK,KAAM,CAAC,EACpCkF,EAAG,WAAW,KAAK,KAAM0B,CAAI,CAC/B,CACA,SAASujC,GAAiBjlC,EAAIlF,EAAG,CAC/B,IAAM4G,EAAOuhC,GAAQnoC,EAAG,KAAK,KAAM,CAAC,EACpCkF,EAAG,WAAW,KAAK,KAAM0B,CAAI,CAC/B,CACA,SAASwjC,GAAiBllC,EAAIlF,EAAG,CAC/B,IAAM4G,EAAOuhC,GAAQnoC,EAAG,KAAK,KAAM,CAAC,EACpCkF,EAAG,WAAW,KAAK,KAAM0B,CAAI,CAC/B,CACA,SAASyjC,GAAgBnlC,EAAIlF,EAAG,CAC9B,IAAM4G,EAAOuhC,GAAQnoC,EAAG,KAAK,KAAM,CAAC,EACpCkF,EAAG,iBAAiB,KAAK,KAAM,GAAO0B,CAAI,CAC5C,CACA,SAAS0jC,GAAgBplC,EAAIlF,EAAG,CAC9B,IAAM4G,EAAOuhC,GAAQnoC,EAAG,KAAK,KAAM,CAAC,EACpCkF,EAAG,iBAAiB,KAAK,KAAM,GAAO0B,CAAI,CAC5C,CACA,SAAS2jC,GAAgBrlC,EAAIlF,EAAG,CAC9B,IAAM4G,EAAOuhC,GAAQnoC,EAAG,KAAK,KAAM,EAAE,EACrCkF,EAAG,iBAAiB,KAAK,KAAM,GAAO0B,CAAI,CAC5C,CACA,SAAS4jC,GAAiBtlC,EAAIlF,EAAG,CAC/BkF,EAAG,WAAW,KAAK,KAAMlF,CAAC,CAC5B,CACA,SAASyqC,GAAiBvlC,EAAIlF,EAAG,CAC/BkF,EAAG,WAAW,KAAK,KAAMlF,CAAC,CAC5B,CACA,SAAS0qC,GAAiBxlC,EAAIlF,EAAG,CAC/BkF,EAAG,WAAW,KAAK,KAAMlF,CAAC,CAC5B,CACA,SAAS2qC,GAAiBzlC,EAAIlF,EAAG,CAC/BkF,EAAG,WAAW,KAAK,KAAMlF,CAAC,CAC5B,CACA,SAAS4qC,GAAkB1lC,EAAIlF,EAAG,CAChCkF,EAAG,YAAY,KAAK,KAAMlF,CAAC,CAC7B,CACA,SAAS6qC,GAAkB3lC,EAAIlF,EAAG,CAChCkF,EAAG,YAAY,KAAK,KAAMlF,CAAC,CAC7B,CACA,SAAS8qC,GAAkB5lC,EAAIlF,EAAG,CAChCkF,EAAG,YAAY,KAAK,KAAMlF,CAAC,CAC7B,CACA,SAAS+qC,GAAkB7lC,EAAIlF,EAAG,CAChCkF,EAAG,YAAY,KAAK,KAAMlF,CAAC,CAC7B,CACA,SAASgrC,GAAgB9lC,EAAIlF,EAAG6a,EAAU,CACxC,IAAMK,EAAQ,KAAK,MACbxe,EAAIsD,EAAE,OACNirC,EAAQxC,GAAc5tB,EAAUne,CAAC,EAClC6rC,GAAYrtB,EAAO+vB,CAAK,IAC3B/lC,EAAG,WAAW,KAAK,KAAM+lC,CAAK,EAC9BzC,GAAUttB,EAAO+vB,CAAK,GAExB,QAASvvC,EAAI,EAAGA,IAAMgB,EAAG,EAAEhB,EACzBmf,EAAS,aAAa7a,EAAEtE,CAAC,GAAK+rC,GAAcwD,EAAMvvC,CAAC,CAAC,CAExD,CACA,SAASwvC,GAAiBhmC,EAAIlF,EAAG6a,EAAU,CACzC,IAAMK,EAAQ,KAAK,MACbxe,EAAIsD,EAAE,OACNirC,EAAQxC,GAAc5tB,EAAUne,CAAC,EAClC6rC,GAAYrtB,EAAO+vB,CAAK,IAC3B/lC,EAAG,WAAW,KAAK,KAAM+lC,CAAK,EAC9BzC,GAAUttB,EAAO+vB,CAAK,GAExB,QAASvvC,EAAI,EAAGA,IAAMgB,EAAG,EAAEhB,EACzBmf,EAAS,aAAa7a,EAAEtE,CAAC,GAAKksC,GAAgBqD,EAAMvvC,CAAC,CAAC,CAE1D,CACA,SAASyvC,GAAgBjmC,EAAIlF,EAAG6a,EAAU,CACxC,IAAMK,EAAQ,KAAK,MACbxe,EAAIsD,EAAE,OACNirC,EAAQxC,GAAc5tB,EAAUne,CAAC,EAClC6rC,GAAYrtB,EAAO+vB,CAAK,IAC3B/lC,EAAG,WAAW,KAAK,KAAM+lC,CAAK,EAC9BzC,GAAUttB,EAAO+vB,CAAK,GAExB,QAASvvC,EAAI,EAAGA,IAAMgB,EAAG,EAAEhB,EACzBmf,EAAS,eAAe7a,EAAEtE,CAAC,GAAKmsC,GAAkBoD,EAAMvvC,CAAC,CAAC,CAE9D,CACA,SAAS0vC,GAAsBlmC,EAAIlF,EAAG6a,EAAU,CAC9C,IAAMK,EAAQ,KAAK,MACbxe,EAAIsD,EAAE,OACNirC,EAAQxC,GAAc5tB,EAAUne,CAAC,EAClC6rC,GAAYrtB,EAAO+vB,CAAK,IAC3B/lC,EAAG,WAAW,KAAK,KAAM+lC,CAAK,EAC9BzC,GAAUttB,EAAO+vB,CAAK,GAExB,QAASvvC,EAAI,EAAGA,IAAMgB,EAAG,EAAEhB,EACzBmf,EAAS,kBAAkB7a,EAAEtE,CAAC,GAAKisC,GAAmBsD,EAAMvvC,CAAC,CAAC,CAElE,CACA,SAAS2vC,GAAmBlwC,EAAM,CAChC,OAAQA,EAAM,CACZ,IAAK,MACH,OAAO8uC,GAET,IAAK,OACH,OAAOC,GAET,IAAK,OACH,OAAOC,GAET,IAAK,OACH,OAAOC,GAET,IAAK,OACH,OAAOC,GAET,IAAK,OACH,OAAOC,GAET,IAAK,OACH,OAAOC,GAET,IAAK,MACL,IAAK,OACH,OAAOC,GAET,IAAK,OACL,IAAK,OACH,OAAOC,GAET,IAAK,OACL,IAAK,OACH,OAAOC,GAET,IAAK,OACL,IAAK,OACH,OAAOC,GAET,IAAK,MACH,OAAOC,GAET,IAAK,OACH,OAAOC,GAET,IAAK,OACH,OAAOC,GAET,IAAK,OACH,OAAOC,GAET,IAAK,OAEL,IAAK,OAEL,IAAK,OAEL,IAAK,OAEL,IAAK,OACH,OAAOC,GACT,IAAK,OAEL,IAAK,OAEL,IAAK,OACH,OAAOE,GACT,IAAK,OAEL,IAAK,OAEL,IAAK,OAEL,IAAK,OACH,OAAOC,GACT,IAAK,OAEL,IAAK,OAEL,IAAK,OAEL,IAAK,OACH,OAAOC,EACX,CACF,CACA,IAAIE,GAAgB,KAAM,CACxB,YAAY1xB,EAAI2xB,EAAYC,EAAM,CAChC,KAAK,GAAK5xB,EACV,KAAK,KAAO4xB,EACZ,KAAK,MAAQ,CAAC,EACd,KAAK,KAAOD,EAAW,KACvB,KAAK,SAAWvB,GAAkBuB,EAAW,IAAI,CACnD,CACF,EACIE,GAAmB,KAAM,CAC3B,YAAY7xB,EAAI2xB,EAAYC,EAAM,CAChC,KAAK,GAAK5xB,EACV,KAAK,KAAO4xB,EACZ,KAAK,MAAQ,CAAC,EACd,KAAK,KAAOD,EAAW,KACvB,KAAK,KAAOA,EAAW,KACvB,KAAK,SAAWF,GAAmBE,EAAW,IAAI,CACpD,CACF,EACIG,GAAoB,KAAM,CAC5B,YAAY9xB,EAAI,CACd,KAAK,GAAKA,EACV,KAAK,IAAM,CAAC,EACZ,KAAK,IAAM,CAAC,CACd,CACA,SAAS1U,EAAI5I,EAAOue,EAAU,CAC5B,IAAM8wB,EAAM,KAAK,IACjB,QAASjwC,EAAI,EAAGgB,EAAIivC,EAAI,OAAQjwC,IAAMgB,EAAG,EAAEhB,EAAG,CAC5C,IAAM2S,EAAIs9B,EAAIjwC,CAAC,EACf2S,EAAE,SAASnJ,EAAI5I,EAAM+R,EAAE,EAAE,EAAGwM,CAAQ,CACtC,CACF,CACF,EACI+wB,GAAa,sBACjB,SAASC,GAAWC,EAAWC,EAAe,CAC5CD,EAAU,IAAI,KAAKC,CAAa,EAChCD,EAAU,IAAIC,EAAc,EAAE,EAAIA,CACpC,CACA,SAASC,GAAaT,EAAYC,EAAMM,EAAW,CACjD,IAAMG,EAAOV,EAAW,KAAMW,EAAaD,EAAK,OAEhD,IADAL,GAAW,UAAY,IACV,CACX,IAAMO,EAAQP,GAAW,KAAKK,CAAI,EAAGG,EAAWR,GAAW,UACvDhyB,EAAKuyB,EAAM,CAAC,EACVE,EAAYF,EAAM,CAAC,IAAM,IAAKG,EAAYH,EAAM,CAAC,EAEvD,GADIE,IAAWzyB,EAAKA,EAAK,GACrB0yB,IAAc,QAAUA,IAAc,KAAOF,EAAW,IAAMF,EAAY,CAC5EL,GAAWC,EAAWQ,IAAc,OAAS,IAAIhB,GAAc1xB,EAAI2xB,EAAYC,CAAI,EAAI,IAAIC,GAAiB7xB,EAAI2xB,EAAYC,CAAI,CAAC,EACjI,KACF,KAAO,CAEL,IAAIe,EADQT,EAAU,IACPlyB,CAAE,EACb2yB,IAAS,SACXA,EAAO,IAAIb,GAAkB9xB,CAAE,EAC/BiyB,GAAWC,EAAWS,CAAI,GAE5BT,EAAYS,CACd,CACF,CACF,CACA,IAAIC,GAAgB,KAAM,CACxB,YAAYtnC,EAAI6zB,EAAS,CACvB,KAAK,IAAM,CAAC,EACZ,KAAK,IAAM,CAAC,EACZ,IAAM,EAAI7zB,EAAG,oBAAoB6zB,EAAS7zB,EAAG,eAAe,EAC5D,QAAS,EAAI,EAAG,EAAI,EAAG,EAAE,EAAG,CAC1B,IAAMu2B,EAAOv2B,EAAG,iBAAiB6zB,EAAS,CAAC,EAAGyS,EAAOtmC,EAAG,mBAAmB6zB,EAAS0C,EAAK,IAAI,EAC7FuQ,GAAavQ,EAAM+P,EAAM,IAAI,CAC/B,CACF,CACA,SAAStmC,EAAIN,EAAMtI,EAAOue,EAAU,CAClC,IAAMxM,EAAI,KAAK,IAAIzJ,CAAI,EACnByJ,IAAM,QAAQA,EAAE,SAASnJ,EAAI5I,EAAOue,CAAQ,CAClD,CACA,YAAY3V,EAAIwJ,EAAQ9J,EAAM,CAC5B,IAAM5E,EAAI0O,EAAO9J,CAAI,EACjB5E,IAAM,QAAQ,KAAK,SAASkF,EAAIN,EAAM5E,CAAC,CAC7C,CACA,OAAO,OAAOkF,EAAIymC,EAAKxwB,EAAQN,EAAU,CACvC,QAASnf,EAAI,EAAGgB,EAAIivC,EAAI,OAAQjwC,IAAMgB,EAAG,EAAEhB,EAAG,CAC5C,IAAM2S,EAAIs9B,EAAIjwC,CAAC,EAAGsE,EAAImb,EAAO9M,EAAE,EAAE,EAC7BrO,EAAE,cAAgB,IACpBqO,EAAE,SAASnJ,EAAIlF,EAAE,MAAO6a,CAAQ,CAEpC,CACF,CACA,OAAO,aAAa8wB,EAAKxwB,EAAQ,CAC/B,IAAMtX,EAAI,CAAC,EACX,QAAS,EAAI,EAAGnH,EAAIivC,EAAI,OAAQ,IAAMjvC,EAAG,EAAE,EAAG,CAC5C,IAAM2R,EAAIs9B,EAAI,CAAC,EACXt9B,EAAE,MAAM8M,GAAQtX,EAAE,KAAKwK,CAAC,CAC9B,CACA,OAAOxK,CACT,CACF,EACA,SAAS4oC,GAAYvnC,EAAI/J,EAAM+iB,EAAQ,CACrC,IAAM+L,EAAS/kB,EAAG,aAAa/J,CAAI,EACnC,OAAA+J,EAAG,aAAa+kB,EAAQ/L,CAAM,EAC9BhZ,EAAG,cAAc+kB,CAAM,EAChBA,CACT,CACA,IAAIyiB,GAAwB,MACxBC,GAAiB,EACrB,SAASC,GAAa1uB,EAAQ2uB,EAAW,CACvC,IAAMC,EAAQ5uB,EAAO,MAAM;AAAA,CAAI,EACzB6uB,EAAS,CAAC,EACVC,EAAO,KAAK,IAAIH,EAAY,EAAG,CAAC,EAChCI,EAAK,KAAK,IAAIJ,EAAY,EAAGC,EAAM,MAAM,EAC/C,QAASpxC,EAAIsxC,EAAMtxC,EAAIuxC,EAAIvxC,IAAK,CAC9B,IAAMgvB,EAAOhvB,EAAI,EACjBqxC,EAAO,KAAK,GAAGriB,IAASmiB,EAAY,IAAM,GAAG,IAAIniB,CAAI,KAAKoiB,EAAMpxC,CAAC,CAAC,EAAE,CACtE,CACA,OAAOqxC,EAAO,KAAK;AAAA,CAAI,CACzB,CACA,SAASG,GAAsBlnC,EAAY,CACzC,IAAMmnC,EAAmB7oD,GAAgB,aAAaA,GAAgB,iBAAiB,EACjF8oD,EAAoB9oD,GAAgB,aAAa0hB,CAAU,EAC7DqnC,EAQJ,OAPIF,IAAqBC,EACvBC,EAAe,GACNF,IAAqBv8C,IAAew8C,IAAsBt4C,GACnEu4C,EAAe,8BACNF,IAAqBr4C,IAAmBs4C,IAAsBx8C,KACvEy8C,EAAe,+BAETrnC,EAAY,CAClB,KAAKrZ,GACL,KAAKP,GACH,MAAO,CAACihD,EAAc,oBAAoB,EAC5C,KAAK33C,GACL,KAAKzO,GACH,MAAO,CAAComD,EAAc,kBAAkB,EAC1C,QACE,eAAQ,KAAK,+CAAgDrnC,CAAU,EAChE,CAACqnC,EAAc,oBAAoB,CAC9C,CACF,CACA,SAASC,GAAgBpoC,EAAI+kB,EAAQ9uB,EAAM,CACzC,IAAMoyC,EAASroC,EAAG,mBAAmB+kB,EAAQ/kB,EAAG,cAAc,EACxDsoC,EAAStoC,EAAG,iBAAiB+kB,CAAM,EAAE,KAAK,EAChD,GAAIsjB,GAAUC,IAAW,GAAI,MAAO,GACpC,IAAMC,EAAe,iBAAiB,KAAKD,CAAM,EACjD,GAAIC,EAAc,CAChB,IAAMZ,EAAY,SAASY,EAAa,CAAC,CAAC,EAC1C,OAAOtyC,EAAK,YAAY,EAAI;AAAA;AAAA,EAASqyC,EAAS;AAAA;AAAA,EAASZ,GAAa1nC,EAAG,gBAAgB+kB,CAAM,EAAG4iB,CAAS,CAC3G,KACE,QAAOW,CAEX,CACA,SAASE,GAAyBC,EAAc3nC,EAAY,CAC1D,IAAMmY,EAAa+uB,GAAsBlnC,CAAU,EACnD,MAAO,QAAQ2nC,CAAY,2BAA2BxvB,EAAW,CAAC,CAAC,KAAKA,EAAW,CAAC,CAAC,gBACvF,CACA,SAASyvB,GAAuBD,EAAchM,EAAa,CACzD,IAAIkM,EACJ,OAAQlM,EAAa,CACnB,KAAK/0C,GACHihD,EAAkB,SAClB,MACF,KAAK34C,GACH24C,EAAkB,WAClB,MACF,KAAK7pD,GACH6pD,EAAkB,SAClB,MACF,KAAK7sD,GACH6sD,EAAkB,aAClB,MACF,KAAKxsD,GACHwsD,EAAkB,MAClB,MACF,KAAK1+C,GACH0+C,EAAkB,UAClB,MACF,KAAK9nD,GACH8nD,EAAkB,SAClB,MACF,QACE,QAAQ,KAAK,+CAAgDlM,CAAW,EACxEkM,EAAkB,QACtB,CACA,MAAO,QAAUF,EAAe,2BAA6BE,EAAkB,yBACjF,CACA,IAAIC,GAAwB,IAAI/zC,EAChC,SAASg0C,IAAuB,CAC9BzpD,GAAgB,yBAAyBwpD,EAAK,EAC9C,IAAMjqC,EAAIiqC,GAAM,EAAE,QAAQ,CAAC,EACrB1qC,EAAI0qC,GAAM,EAAE,QAAQ,CAAC,EACrB/uC,EAAI+uC,GAAM,EAAE,QAAQ,CAAC,EAC3B,MAAO,CACL,yCACA,+BAA+BjqC,CAAC,KAAKT,CAAC,KAAKrE,CAAC,MAC5C,+BACA,GACF,EAAE,KAAK;AAAA,CAAI,CACb,CACA,SAASivC,GAAyB3zB,EAAY,CAK5C,MAJe,CACbA,EAAW,0BAA4B,mDAAqD,GAC5FA,EAAW,mBAAqB,2CAA6C,EAC/E,EACc,OAAO4zB,EAAe,EAAE,KAAK;AAAA,CAAI,CACjD,CACA,SAASC,GAAgBC,EAAS,CAChC,IAAMC,EAAS,CAAC,EAChB,QAAWxpC,KAAQupC,EAAS,CAC1B,IAAM7xC,EAAQ6xC,EAAQvpC,CAAI,EACtBtI,IAAU,IACd8xC,EAAO,KAAK,WAAaxpC,EAAO,IAAMtI,CAAK,CAC7C,CACA,OAAO8xC,EAAO,KAAK;AAAA,CAAI,CACzB,CACA,SAASC,GAAwBnpC,EAAI6zB,EAAS,CAC5C,IAAM5X,EAAa,CAAC,EACdzkB,EAAIwI,EAAG,oBAAoB6zB,EAAS7zB,EAAG,iBAAiB,EAC9D,QAASxJ,EAAI,EAAGA,EAAIgB,EAAGhB,IAAK,CAC1B,IAAM+/B,EAAOv2B,EAAG,gBAAgB6zB,EAASr9B,CAAC,EACpCkJ,EAAO62B,EAAK,KACd6S,EAAe,EACf7S,EAAK,OAASv2B,EAAG,aAAYopC,EAAe,GAC5C7S,EAAK,OAASv2B,EAAG,aAAYopC,EAAe,GAC5C7S,EAAK,OAASv2B,EAAG,aAAYopC,EAAe,GAChDntB,EAAWvc,CAAI,EAAI,CACjB,KAAM62B,EAAK,KACX,SAAUv2B,EAAG,kBAAkB6zB,EAASn0B,CAAI,EAC5C,aAAA0pC,CACF,CACF,CACA,OAAOntB,CACT,CACA,SAAS8sB,GAAgB/vB,EAAQ,CAC/B,OAAOA,IAAW,EACpB,CACA,SAASqwB,GAAiBrwB,EAAQ7D,EAAY,CAC5C,IAAMm0B,EAAqBn0B,EAAW,oBAAsBA,EAAW,iBAAmBA,EAAW,4BACrG,OAAO6D,EAAO,QAAQ,kBAAmB7D,EAAW,YAAY,EAAE,QAAQ,mBAAoBA,EAAW,aAAa,EAAE,QAAQ,uBAAwBA,EAAW,gBAAgB,EAAE,QAAQ,yBAA0Bm0B,CAAkB,EAAE,QAAQ,wBAAyBn0B,EAAW,iBAAiB,EAAE,QAAQ,oBAAqBA,EAAW,cAAc,EAAE,QAAQ,mBAAoBA,EAAW,aAAa,EAAE,QAAQ,yBAA0BA,EAAW,kBAAkB,EAAE,QAAQ,oCAAqCA,EAAW,2BAA2B,EAAE,QAAQ,0BAA2BA,EAAW,mBAAmB,EAAE,QAAQ,2BAA4BA,EAAW,oBAAoB,CACtrB,CACA,SAASo0B,GAAyBvwB,EAAQ7D,EAAY,CACpD,OAAO6D,EAAO,QAAQ,uBAAwB7D,EAAW,iBAAiB,EAAE,QAAQ,yBAA0BA,EAAW,kBAAoBA,EAAW,mBAAmB,CAC7K,CACA,IAAIq0B,GAAiB,mCACrB,SAASC,GAAgBzwB,EAAQ,CAC/B,OAAOA,EAAO,QAAQwwB,GAAgBE,EAAe,CACvD,CACA,IAAIC,GAAiC,IAAI,IACzC,SAASD,GAAgBzC,EAAO2C,EAAS,CACvC,IAAI5wB,EAASroB,GAAYi5C,CAAO,EAChC,GAAI5wB,IAAW,OAAQ,CACrB,IAAM6wB,EAAaF,GAAe,IAAIC,CAAO,EAC7C,GAAIC,IAAe,OACjB7wB,EAASroB,GAAYk5C,CAAU,EAC/B,QAAQ,KAAK,gFAAiFD,EAASC,CAAU,MAEjH,OAAM,IAAI,MAAM,6BAA+BD,EAAU,GAAG,CAEhE,CACA,OAAOH,GAAgBzwB,CAAM,CAC/B,CACA,IAAI8wB,GAAoB,+IACxB,SAASC,GAAY/wB,EAAQ,CAC3B,OAAOA,EAAO,QAAQ8wB,GAAmBE,EAAY,CACvD,CACA,SAASA,GAAa/C,EAAOnsB,EAAOsF,EAAK6pB,EAAS,CAChD,IAAIjxB,EAAS,GACb,QAASxiB,EAAI,SAASskB,CAAK,EAAGtkB,EAAI,SAAS4pB,CAAG,EAAG5pB,IAC/CwiB,GAAUixB,EAAQ,QAAQ,eAAgB,KAAOzzC,EAAI,IAAI,EAAE,QAAQ,uBAAwBA,CAAC,EAE9F,OAAOwiB,CACT,CACA,SAASkxB,GAAkB/0B,EAAY,CACrC,IAAIg1B,EAAkB,aAAah1B,EAAW,SAAS;AAAA,aAC5CA,EAAW,SAAS;AAAA,aACpBA,EAAW,SAAS;AAAA,aACpBA,EAAW,SAAS;AAAA,aACpBA,EAAW,SAAS;AAAA,aACpBA,EAAW,SAAS;AAAA,aACpBA,EAAW,SAAS;AAAA,aACpBA,EAAW,SAAS;AAAA,aACpBA,EAAW,SAAS;AAAA,aACpBA,EAAW,SAAS;AAAA,aACpBA,EAAW,SAAS;AAAA,aACpBA,EAAW,SAAS;AAAA,aACpBA,EAAW,SAAS;AAAA,aACpBA,EAAW,SAAS;AAAA,aACpBA,EAAW,SAAS;AAAA,aACpBA,EAAW,SAAS;AAAA,aACpBA,EAAW,SAAS;AAAA,GAE/B,OAAIA,EAAW,YAAc,QAC3Bg1B,GAAmB;AAAA,wBACVh1B,EAAW,YAAc,UAClCg1B,GAAmB;AAAA,0BACVh1B,EAAW,YAAc,SAClCg1B,GAAmB;AAAA,wBAEdA,CACT,CACA,SAASC,GAA4Bj1B,EAAY,CAC/C,IAAIk1B,EAAsB,uBAC1B,OAAIl1B,EAAW,gBAAkBxpB,GAC/B0+C,EAAsB,qBACbl1B,EAAW,gBAAkBvpB,GACtCy+C,EAAsB,0BACbl1B,EAAW,gBAAkBxgB,KACtC01C,EAAsB,sBAEjBA,CACT,CACA,SAASC,GAAyBn1B,EAAY,CAC5C,IAAIo1B,EAAmB,mBACvB,GAAIp1B,EAAW,OACb,OAAQA,EAAW,WAAY,CAC7B,KAAKr1B,GACL,KAAKC,GACHwqD,EAAmB,mBACnB,MACF,KAAKrqD,GACHqqD,EAAmB,sBACnB,KACJ,CAEF,OAAOA,CACT,CACA,SAASC,GAAyBr1B,EAAY,CAC5C,IAAIs1B,EAAmB,yBACvB,GAAIt1B,EAAW,OACb,OAAQA,EAAW,WAAY,CAC7B,KAAKp1B,GACH0qD,EAAmB,yBACnB,KACJ,CAEF,OAAOA,CACT,CACA,SAASC,GAA6Bv1B,EAAY,CAChD,IAAIw1B,EAAuB,uBAC3B,GAAIx1B,EAAW,OACb,OAAQA,EAAW,QAAS,CAC1B,KAAKxrB,GACHghD,EAAuB,2BACvB,MACF,KAAKlhD,GACHkhD,EAAuB,sBACvB,MACF,KAAK3uD,GACH2uD,EAAuB,sBACvB,KACJ,CAEF,OAAOA,CACT,CACA,SAASC,GAAmBz1B,EAAY,CACtC,IAAM01B,EAAc11B,EAAW,mBAC/B,GAAI01B,IAAgB,KAAM,OAAO,KACjC,IAAMC,EAAS,KAAK,KAAKD,CAAW,EAAI,EAClCE,EAAc,EAAIF,EAExB,MAAO,CAAE,WADU,GAAK,EAAI,KAAK,IAAI,KAAK,IAAI,EAAGC,CAAM,EAAG,EAAI,EAAE,GAC3C,YAAAC,EAAa,OAAAD,CAAO,CAC3C,CACA,SAASE,GAAanoB,EAAUooB,EAAU91B,EAAYoe,EAAe,CACnE,IAAMvzB,EAAK6iB,EAAS,WAAW,EACzBomB,EAAU9zB,EAAW,QACvB+1B,EAAe/1B,EAAW,aAC1Bg2B,EAAiBh2B,EAAW,eAC1Bk1B,EAAsBD,GAA4Bj1B,CAAU,EAC5Do1B,EAAmBD,GAAyBn1B,CAAU,EACtDs1B,EAAmBD,GAAyBr1B,CAAU,EACtDw1B,EAAuBD,GAA6Bv1B,CAAU,EAC9Di2B,EAAmBR,GAAmBz1B,CAAU,EAChDk2B,EAAyBvC,GAAyB3zB,CAAU,EAC5Dm2B,EAAgBtC,GAAgBC,CAAO,EACvCpV,EAAU7zB,EAAG,cAAc,EAC7BurC,EAAcC,EACdC,EAAgBt2B,EAAW,YAAc,YAAcA,EAAW,YAAc;AAAA,EAAO,GACvFA,EAAW,qBACbo2B,EAAe,CACb,uBAAyBp2B,EAAW,WACpC,uBAAyBA,EAAW,WACpCm2B,CACF,EAAE,OAAOvC,EAAe,EAAE,KAAK;AAAA,CAAI,EAC/BwC,EAAa,OAAS,IACxBA,GAAgB;AAAA,GAElBC,EAAiB,CACf,uBAAyBr2B,EAAW,WACpC,uBAAyBA,EAAW,WACpCm2B,CACF,EAAE,OAAOvC,EAAe,EAAE,KAAK;AAAA,CAAI,EAC/ByC,EAAe,OAAS,IAC1BA,GAAkB;AAAA,KAGpBD,EAAe,CACbrB,GAAkB/0B,CAAU,EAC5B,uBAAyBA,EAAW,WACpC,uBAAyBA,EAAW,WACpCm2B,EACAn2B,EAAW,0BAA4B,4BAA8B,GACrEA,EAAW,SAAW,uBAAyB,GAC/CA,EAAW,cAAgB,6BAA+B,GAC1DA,EAAW,WAAa,yBAA2B,GACnDA,EAAW,gBAAkB,+BAAiC,GAC9DA,EAAW,gBAAkB,+BAAiC,GAC9DA,EAAW,QAAUA,EAAW,IAAM,kBAAoB,GAC1DA,EAAW,QAAUA,EAAW,QAAU,mBAAqB,GAC/DA,EAAW,IAAM,kBAAoB,GACrCA,EAAW,OAAS,qBAAuB,GAC3CA,EAAW,OAAS,WAAas1B,EAAmB,GACpDt1B,EAAW,SAAW,uBAAyB,GAC/CA,EAAW,MAAQ,oBAAsB,GACzCA,EAAW,QAAU,sBAAwB,GAC7CA,EAAW,UAAY,wBAA0B,GACjDA,EAAW,qBAAuB,oCAAsC,GACxEA,EAAW,sBAAwB,qCAAuC,GAC1EA,EAAW,gBAAkB,8BAAgC,GAC7DA,EAAW,YAAc,0BAA4B,GACrDA,EAAW,WAAa,yBAA2B,GACnDA,EAAW,cAAgB,4BAA8B,GACzDA,EAAW,aAAe,2BAA6B,GACvDA,EAAW,sBAAwB,qCAAuC,GAC1EA,EAAW,mBAAqB,kCAAoC,GACpEA,EAAW,eAAiB,6BAA+B,GAC3DA,EAAW,wBAA0B,uCAAyC,GAC9EA,EAAW,YAAc,0BAA4B,GACrDA,EAAW,iBAAmB,gCAAkC,GAChEA,EAAW,qBAAuB,oCAAsC,GACxEA,EAAW,aAAe,2BAA6B,GACvDA,EAAW,aAAe,2BAA6B,GACvDA,EAAW,SAAW,uBAAyB,GAC/CA,EAAW,UAAY,wBAA0B,GACjDA,EAAW,aAAe,2BAA6B,GACvDA,EAAW,gBAAkB,8BAAgC,GAC7DA,EAAW,aAAe,2BAA6B,GACvDA,EAAW,cAAgB,6BAA+B,GAC1DA,EAAW,kBAAoB,iCAAmC,GAElEA,EAAW,MAAQ,kBAAoBA,EAAW,MAAQ,GAC1DA,EAAW,WAAa,uBAAyBA,EAAW,WAAa,GACzEA,EAAW,WAAa,uBAAyBA,EAAW,WAAa,GACzEA,EAAW,QAAU,oBAAsBA,EAAW,QAAU,GAChEA,EAAW,cAAgB,0BAA4BA,EAAW,cAAgB,GAClFA,EAAW,UAAY,sBAAwBA,EAAW,UAAY,GACtEA,EAAW,YAAc,wBAA0BA,EAAW,YAAc,GAC5EA,EAAW,kBAAoB,8BAAgCA,EAAW,kBAAoB,GAC9FA,EAAW,eAAiB,2BAA6BA,EAAW,eAAiB,GACrFA,EAAW,eAAiB,2BAA6BA,EAAW,eAAiB,GACrFA,EAAW,gBAAkB,4BAA8BA,EAAW,gBAAkB,GACxFA,EAAW,eAAiB,2BAA6BA,EAAW,eAAiB,GACrFA,EAAW,qBAAuB,kCAAoCA,EAAW,qBAAuB,GACxGA,EAAW,wBAA0B,qCAAuCA,EAAW,wBAA0B,GACjHA,EAAW,iBAAmB,6BAA+BA,EAAW,iBAAmB,GAC3FA,EAAW,0BAA4B,uCAAyCA,EAAW,0BAA4B,GACvHA,EAAW,gBAAkB,6BAA+BA,EAAW,gBAAkB,GACzFA,EAAW,oBAAsB,iCAAmCA,EAAW,oBAAsB,GACrGA,EAAW,cAAgB,0BAA4BA,EAAW,cAAgB,GAClFA,EAAW,mBAAqB,gCAAkCA,EAAW,mBAAqB,GAClGA,EAAW,uBAAyB,oCAAsCA,EAAW,uBAAyB,GAC9GA,EAAW,kBAAoB,8BAAgCA,EAAW,kBAAoB,GAC9FA,EAAW,eAAiB,2BAA6BA,EAAW,eAAiB,GAErFA,EAAW,gBAAkBA,EAAW,cAAgB,GAAQ,sBAAwB,GACxFA,EAAW,aAAe,oBAAsB,GAChDA,EAAW,aAAe,0BAA4B,GACtDA,EAAW,WAAa,kBAAoB,GAC5CA,EAAW,WAAa,kBAAoB,GAC5CA,EAAW,WAAa,kBAAoB,GAC5CA,EAAW,UAAY,wBAA0B,GACjDA,EAAW,YAAc,sBAAwB,GACjDA,EAAW,SAAW,uBAAyB,GAC/CA,EAAW,aAAe,2BAA6B,GACvDA,EAAW,cAAgBA,EAAW,cAAgB,GAAQ,2BAA6B,GAC3FA,EAAW,YAAc,0BAA4B,GACrDA,EAAW,kBAAoB,EAAI,uCAAyCA,EAAW,mBAAqB,GAC5GA,EAAW,kBAAoB,EAAI,8BAAgCA,EAAW,kBAAoB,GAClGA,EAAW,YAAc,uBAAyB,GAClDA,EAAW,UAAY,qBAAuB,GAC9CA,EAAW,iBAAmB,wBAA0B,GACxDA,EAAW,iBAAmB,WAAak1B,EAAsB,GACjEl1B,EAAW,gBAAkB,8BAAgC,GAC7DA,EAAW,eAAiB,EAAI,2BAA6B,GAC7DA,EAAW,uBAAyB,0BAA4B,GAChEA,EAAW,mBAAqB,8BAAgC,GAChE,4BACA,gCACA,iCACA,2BACA,6BACA,+BACA,+BACA,wBACA,kCACA,SACA,8BACA,iCACA,SACA,8BACA,mCACA,SACA,2BACA,yBACA,qBACA,iBACA,uBACA,SACA,iBACA,uBACA,SACA,iBACA,uBACA,SACA,qBACA,2BACA,SACA,iCACA,yBACA,6BACA,yBACA,SACA,sBACA,6BACA,8BACA,SACA;AAAA,CACF,EAAE,OAAO4zB,EAAe,EAAE,KAAK;AAAA,CAAI,EACnCyC,EAAiB,CACftB,GAAkB/0B,CAAU,EAC5B,uBAAyBA,EAAW,WACpC,uBAAyBA,EAAW,WACpCm2B,EACAn2B,EAAW,QAAUA,EAAW,IAAM,kBAAoB,GAC1DA,EAAW,QAAUA,EAAW,QAAU,mBAAqB,GAC/DA,EAAW,gBAAkB,4BAA8B,GAC3DA,EAAW,IAAM,kBAAoB,GACrCA,EAAW,OAAS,qBAAuB,GAC3CA,EAAW,OAAS,qBAAuB,GAC3CA,EAAW,OAAS,WAAao1B,EAAmB,GACpDp1B,EAAW,OAAS,WAAas1B,EAAmB,GACpDt1B,EAAW,OAAS,WAAaw1B,EAAuB,GACxDS,EAAmB,8BAAgCA,EAAiB,WAAa,GACjFA,EAAmB,+BAAiCA,EAAiB,YAAc,GACnFA,EAAmB,0BAA4BA,EAAiB,OAAS,KAAO,GAChFj2B,EAAW,SAAW,uBAAyB,GAC/CA,EAAW,MAAQ,oBAAsB,GACzCA,EAAW,QAAU,sBAAwB,GAC7CA,EAAW,UAAY,wBAA0B,GACjDA,EAAW,qBAAuB,oCAAsC,GACxEA,EAAW,sBAAwB,qCAAuC,GAC1EA,EAAW,YAAc,0BAA4B,GACrDA,EAAW,WAAa,yBAA2B,GACnDA,EAAW,cAAgB,4BAA8B,GACzDA,EAAW,UAAY,wBAA0B,GACjDA,EAAW,aAAe,2BAA6B,GACvDA,EAAW,sBAAwB,qCAAuC,GAC1EA,EAAW,mBAAqB,kCAAoC,GACpEA,EAAW,WAAa,yBAA2B,GACnDA,EAAW,YAAc,0BAA4B,GACrDA,EAAW,eAAiB,6BAA+B,GAC3DA,EAAW,wBAA0B,uCAAyC,GAC9EA,EAAW,YAAc,0BAA4B,GACrDA,EAAW,iBAAmB,gCAAkC,GAChEA,EAAW,qBAAuB,oCAAsC,GACxEA,EAAW,aAAe,2BAA6B,GACvDA,EAAW,aAAe,2BAA6B,GACvDA,EAAW,SAAW,uBAAyB,GAC/CA,EAAW,UAAY,wBAA0B,GACjDA,EAAW,UAAY,wBAA0B,GACjDA,EAAW,MAAQ,oBAAsB,GACzCA,EAAW,cAAgB,6BAA+B,GAC1DA,EAAW,kBAAoB,iCAAmC,GAClEA,EAAW,aAAe,2BAA6B,GACvDA,EAAW,gBAAkB,8BAAgC,GAC7DA,EAAW,aAAe,2BAA6B,GACvDA,EAAW,gBAAkBA,EAAW,cAAgB,GAAQ,sBAAwB,GACxFA,EAAW,cAAgBA,EAAW,iBAAmBA,EAAW,cAAgB,oBAAsB,GAC1GA,EAAW,aAAe,0BAA4B,GACtDA,EAAW,WAAa,kBAAoB,GAC5CA,EAAW,WAAa,kBAAoB,GAC5CA,EAAW,WAAa,kBAAoB,GAC5CA,EAAW,UAAY,wBAA0B,GACjDA,EAAW,YAAc,0BAA4B,GACrDA,EAAW,YAAc,sBAAwB,GACjDA,EAAW,YAAc,uBAAyB,GAClDA,EAAW,UAAY,qBAAuB,GAC9CA,EAAW,iBAAmB,wBAA0B,GACxDA,EAAW,iBAAmB,WAAak1B,EAAsB,GACjEl1B,EAAW,mBAAqB,8BAAgC,GAChEA,EAAW,eAAiB,EAAI,2BAA6B,GAC7DA,EAAW,mBAAqB,+BAAiC,GACjEA,EAAW,uBAAyB,0BAA4B,GAChEA,EAAW,mBAAqB,8BAAgC,GAChE,2BACA,+BACA,+BACAA,EAAW,cAAgB5qB,GAAgB,uBAAyB,GACpE4qB,EAAW,cAAgB5qB,GAAgBoG,GAAY,0BAA+B,GAEtFwkB,EAAW,cAAgB5qB,GAAgBm+C,GAAuB,cAAevzB,EAAW,WAAW,EAAI,GAC3GA,EAAW,UAAY,oBAAsB,GAC7CA,EAAW,OAAS,iBAAmB,GACvCxkB,GAAY,yBAEZ63C,GAAyB,sBAAuBrzB,EAAW,gBAAgB,EAC3E0zB,GAAqB,EACrB1zB,EAAW,gBAAkB,yBAA2BA,EAAW,aAAe,GAClF;AAAA,CACF,EAAE,OAAO4zB,EAAe,EAAE,KAAK;AAAA,CAAI,GAErCmC,EAAezB,GAAgByB,CAAY,EAC3CA,EAAe7B,GAAiB6B,EAAc/1B,CAAU,EACxD+1B,EAAe3B,GAAyB2B,EAAc/1B,CAAU,EAChEg2B,EAAiB1B,GAAgB0B,CAAc,EAC/CA,EAAiB9B,GAAiB8B,EAAgBh2B,CAAU,EAC5Dg2B,EAAiB5B,GAAyB4B,EAAgBh2B,CAAU,EACpE+1B,EAAenB,GAAYmB,CAAY,EACvCC,EAAiBpB,GAAYoB,CAAc,EACvCh2B,EAAW,sBAAwB,KACrCs2B,EAAgB;AAAA,EAChBF,EAAe,CACbF,EACA,uBACA,sBACA,2BACF,EAAE,KAAK;AAAA,CAAI,EAAI;AAAA,EAAOE,EACtBC,EAAiB,CACf,qBACAr2B,EAAW,cAAgBvxB,GAAQ,GAAK,oDACxCuxB,EAAW,cAAgBvxB,GAAQ,GAAK,oCACxC,uCACA,4BACA,8BACA,oCACA,qCACA,6CACA,uCACA,uCACA,+CACA,wCACF,EAAE,KAAK;AAAA,CAAI,EAAI;AAAA,EAAO4nD,GAExB,IAAME,EAAaD,EAAgBF,EAAeL,EAC5CS,EAAeF,EAAgBD,EAAiBL,EAChDS,EAAiBrE,GAAYvnC,EAAIA,EAAG,cAAe0rC,CAAU,EAC7DG,EAAmBtE,GAAYvnC,EAAIA,EAAG,gBAAiB2rC,CAAY,EACzE3rC,EAAG,aAAa6zB,EAAS+X,CAAc,EACvC5rC,EAAG,aAAa6zB,EAASgY,CAAgB,EACrC12B,EAAW,sBAAwB,OACrCnV,EAAG,mBAAmB6zB,EAAS,EAAG1e,EAAW,mBAAmB,EACvDA,EAAW,eAAiB,IACrCnV,EAAG,mBAAmB6zB,EAAS,EAAG,UAAU,EAE9C7zB,EAAG,YAAY6zB,CAAO,EACtB,SAASiY,EAAWC,EAAO,CACzB,GAAIlpB,EAAS,MAAM,kBAAmB,CACpC,IAAMmpB,EAAahsC,EAAG,kBAAkB6zB,CAAO,EAAE,KAAK,EAChDoY,EAAYjsC,EAAG,iBAAiB4rC,CAAc,EAAE,KAAK,EACrDM,EAAclsC,EAAG,iBAAiB6rC,CAAgB,EAAE,KAAK,EAC3DM,EAAW,GACXC,EAAkB,GACtB,GAAIpsC,EAAG,oBAAoB6zB,EAAS7zB,EAAG,WAAW,IAAM,GAEtD,GADAmsC,EAAW,GACP,OAAOtpB,EAAS,MAAM,eAAkB,WAC1CA,EAAS,MAAM,cAAc7iB,EAAI6zB,EAAS+X,EAAgBC,CAAgB,MACrE,CACL,IAAMQ,GAAejE,GAAgBpoC,EAAI4rC,EAAgB,QAAQ,EAC3DU,EAAiBlE,GAAgBpoC,EAAI6rC,EAAkB,UAAU,EACvE,QAAQ,MACN,oCAAsC7rC,EAAG,SAAS,EAAI,sBAAwBA,EAAG,oBAAoB6zB,EAAS7zB,EAAG,eAAe,EAAI;AAAA;AAAA,iBAAwB+rC,EAAM,KAAO;AAAA,iBAAsBA,EAAM,KAAO;AAAA;AAAA,oBAA2BC,EAAa;AAAA,EAAOK,GAAe;AAAA,EAAOC,CACnR,CACF,MACSN,IAAe,GACxB,QAAQ,KAAK,wCAAyCA,CAAU,GACvDC,IAAc,IAAMC,IAAgB,MAC7CE,EAAkB,IAEhBA,IACFL,EAAM,YAAc,CAClB,SAAAI,EACA,WAAAH,EACA,aAAc,CACZ,IAAKC,EACL,OAAQV,CACV,EACA,eAAgB,CACd,IAAKW,EACL,OAAQV,CACV,CACF,EAEJ,CACAxrC,EAAG,aAAa4rC,CAAc,EAC9B5rC,EAAG,aAAa6rC,CAAgB,EAChCU,EAAiB,IAAIjF,GAActnC,EAAI6zB,CAAO,EAC9CgB,EAAmBsU,GAAwBnpC,EAAI6zB,CAAO,CACxD,CACA,IAAI0Y,EACJ,KAAK,YAAc,UAAW,CAC5B,OAAIA,IAAmB,QACrBT,EAAW,IAAI,EAEVS,CACT,EACA,IAAI1X,EACJ,KAAK,cAAgB,UAAW,CAC9B,OAAIA,IAAqB,QACvBiX,EAAW,IAAI,EAEVjX,CACT,EACA,IAAI2X,EAAer3B,EAAW,yCAA2C,GACzE,YAAK,QAAU,UAAW,CACxB,OAAIq3B,IAAiB,KACnBA,EAAexsC,EAAG,oBAAoB6zB,EAAS2T,EAAqB,GAE/DgF,CACT,EACA,KAAK,QAAU,UAAW,CACxBjZ,EAAc,uBAAuB,IAAI,EACzCvzB,EAAG,cAAc6zB,CAAO,EACxB,KAAK,QAAU,MACjB,EACA,KAAK,KAAO1e,EAAW,WACvB,KAAK,KAAOA,EAAW,WACvB,KAAK,GAAKsyB,KACV,KAAK,SAAWwD,EAChB,KAAK,UAAY,EACjB,KAAK,QAAUpX,EACf,KAAK,aAAe+X,EACpB,KAAK,eAAiBC,EACf,IACT,CACA,IAAIY,GAAQ,EACRC,GAAmB,KAAM,CAC3B,aAAc,CACZ,KAAK,YAA8B,IAAI,IACvC,KAAK,cAAgC,IAAI,GAC3C,CACA,OAAOrtB,EAAU,CACf,IAAM6rB,EAAe7rB,EAAS,aACxB8rB,EAAiB9rB,EAAS,eAC1BstB,EAAoB,KAAK,gBAAgBzB,CAAY,EACrD0B,EAAsB,KAAK,gBAAgBzB,CAAc,EACzD0B,EAAkB,KAAK,2BAA2BxtB,CAAQ,EAChE,OAAIwtB,EAAgB,IAAIF,CAAiB,IAAM,KAC7CE,EAAgB,IAAIF,CAAiB,EACrCA,EAAkB,aAEhBE,EAAgB,IAAID,CAAmB,IAAM,KAC/CC,EAAgB,IAAID,CAAmB,EACvCA,EAAoB,aAEf,IACT,CACA,OAAOvtB,EAAU,CACf,IAAMwtB,EAAkB,KAAK,cAAc,IAAIxtB,CAAQ,EACvD,QAAWytB,KAAeD,EACxBC,EAAY,YACRA,EAAY,YAAc,GAAG,KAAK,YAAY,OAAOA,EAAY,IAAI,EAE3E,YAAK,cAAc,OAAOztB,CAAQ,EAC3B,IACT,CACA,kBAAkBA,EAAU,CAC1B,OAAO,KAAK,gBAAgBA,EAAS,YAAY,EAAE,EACrD,CACA,oBAAoBA,EAAU,CAC5B,OAAO,KAAK,gBAAgBA,EAAS,cAAc,EAAE,EACvD,CACA,SAAU,CACR,KAAK,YAAY,MAAM,EACvB,KAAK,cAAc,MAAM,CAC3B,CACA,2BAA2BA,EAAU,CACnC,IAAMrJ,EAAQ,KAAK,cACf+2B,EAAM/2B,EAAM,IAAIqJ,CAAQ,EAC5B,OAAI0tB,IAAQ,SACVA,EAAsB,IAAI,IAC1B/2B,EAAM,IAAIqJ,EAAU0tB,CAAG,GAElBA,CACT,CACA,gBAAgBC,EAAM,CACpB,IAAMh3B,EAAQ,KAAK,YACfi3B,EAAQj3B,EAAM,IAAIg3B,CAAI,EAC1B,OAAIC,IAAU,SACZA,EAAQ,IAAIC,GAAiBF,CAAI,EACjCh3B,EAAM,IAAIg3B,EAAMC,CAAK,GAEhBA,CACT,CACF,EACIC,GAAmB,KAAM,CAC3B,YAAYF,EAAM,CAChB,KAAK,GAAKP,KACV,KAAK,KAAOO,EACZ,KAAK,UAAY,CACnB,CACF,EACA,SAASG,GAActqB,EAAUiP,EAAUC,EAAY9O,EAAY4d,EAActN,EAAe6Z,EAAU,CACxG,IAAMC,EAAiB,IAAIpnD,GACrBqnD,EAAiB,IAAIZ,GACrBa,EAAkC,IAAI,IACtCC,EAAW,CAAC,EACZxV,EAAyB6I,EAAa,uBACtC5I,EAAqB4I,EAAa,mBAClC4M,EAA2B5M,EAAa,eAC1C/I,EAAY+I,EAAa,UACvB6M,EAAY,CAChB,kBAAmB,QACnB,qBAAsB,eACtB,mBAAoB,SACpB,kBAAmB,QACnB,oBAAqB,UACrB,kBAAmB,QACnB,iBAAkB,OAClB,qBAAsB,WACtB,qBAAsB,WACtB,mBAAoB,SACpB,kBAAmB,QACnB,mBAAoB,SACpB,eAAgB,SAChB,eAAgB,SAChB,eAAgB,QAClB,EACA,SAASC,EAAWv2C,EAAO,CAEzB,OADAm2C,EAAgB,IAAIn2C,CAAK,EACrBA,IAAU,EAAU,KACjB,KAAKA,CAAK,EACnB,CACA,SAASw2C,EAAcvuB,EAAUwuB,EAAQC,EAASrpB,EAAOjb,EAAQ,CAC/D,IAAMukC,EAAMtpB,EAAM,IACZ5a,EAAWL,EAAO,SAClBwkC,GAAc3uB,EAAS,uBAAyBoF,EAAM,YAAc,KACpEwpB,GAAU5uB,EAAS,uBAAyB0S,EAAaD,GAAU,IAAIzS,EAAS,QAAU2uB,EAAW,EACrGE,GAAuBD,GAAUA,EAAO,UAAY/tD,GAA0B+tD,EAAO,MAAM,OAAS,KACpGE,GAAWT,EAAUruB,EAAS,IAAI,EACpCA,EAAS,YAAc,OACzByY,EAAY+I,EAAa,gBAAgBxhB,EAAS,SAAS,EACvDyY,IAAczY,EAAS,WACzB,QAAQ,KAAK,oCAAqCA,EAAS,UAAW,uBAAwByY,EAAW,UAAU,GAGvH,IAAMhc,GAAiBjS,EAAS,gBAAgB,UAAYA,EAAS,gBAAgB,QAAUA,EAAS,gBAAgB,MAClHo3B,GAAoBnlB,KAAmB,OAASA,GAAe,OAAS,EAC1EsyB,EAAqB,EACrBvkC,EAAS,gBAAgB,WAAa,SAAQukC,EAAqB,GACnEvkC,EAAS,gBAAgB,SAAW,SAAQukC,EAAqB,GACjEvkC,EAAS,gBAAgB,QAAU,SAAQukC,EAAqB,GACpE,IAAIlD,GAAcC,GACdkD,GAAsBC,GAC1B,GAAIH,GAAU,CACZ,IAAMppB,GAASn0B,GAAUu9C,EAAQ,EACjCjD,GAAenmB,GAAO,aACtBomB,GAAiBpmB,GAAO,cAC1B,MACEmmB,GAAe7rB,EAAS,aACxB8rB,GAAiB9rB,EAAS,eAC1BiuB,EAAe,OAAOjuB,CAAQ,EAC9BgvB,GAAuBf,EAAe,kBAAkBjuB,CAAQ,EAChEivB,GAAyBhB,EAAe,oBAAoBjuB,CAAQ,EAEtE,IAAMyD,GAAsBD,EAAS,gBAAgB,EAC/C0rB,GAAmB/kC,EAAO,kBAAoB,GAC9CglC,GAAiBhlC,EAAO,gBAAkB,GAC1CilC,GAAU,CAAC,CAACpvB,EAAS,IACrBqvB,EAAa,CAAC,CAACrvB,EAAS,OACxBsvB,GAAa,CAAC,CAACV,EACfW,GAAY,CAAC,CAACvvB,EAAS,MACvBwvB,GAAe,CAAC,CAACxvB,EAAS,SAC1ByvB,EAAc,CAAC,CAACzvB,EAAS,QACzB0vB,GAAgB,CAAC,CAAC1vB,EAAS,UAC3B2vB,GAAsB,CAAC,CAAC3vB,EAAS,gBACjC4vB,GAAkB,CAAC,CAAC5vB,EAAS,YAC7B6vB,EAAmB,CAAC,CAAC7vB,EAAS,aAC9B8vB,EAAmB,CAAC,CAAC9vB,EAAS,aAC9B+vB,EAAiB/vB,EAAS,WAAa,EACvCgwB,EAAgBhwB,EAAS,UAAY,EACrCiwB,EAAiBjwB,EAAS,WAAa,EACvCkwB,EAAkBlwB,EAAS,YAAc,EACzCmwB,GAAYnwB,EAAS,MAAQ,EAC7BowB,GAAmBpwB,EAAS,aAAe,EAC3CqwB,GAAoBN,GAAkB,CAAC,CAAC/vB,EAAS,cACjDswB,GAAmBN,GAAiB,CAAC,CAAChwB,EAAS,aAC/CuwB,GAA0BP,GAAiB,CAAC,CAAChwB,EAAS,mBACtDwwB,EAA6BR,GAAiB,CAAC,CAAChwB,EAAS,sBACzDywB,GAAqBP,GAAmB,CAAC,CAAClwB,EAAS,eACnD0wB,GAA+BR,GAAmB,CAAC,CAAClwB,EAAS,wBAC7D2wB,GAAqBR,IAAa,CAAC,CAACnwB,EAAS,cAC7C4wB,GAAyBT,IAAa,CAAC,CAACnwB,EAAS,kBACjD6wB,GAAkB,CAAC,CAAC7wB,EAAS,YAC7B8wB,GAAwB,CAAC,CAAC9wB,EAAS,iBACnC+wB,EAA4B,CAAC,CAAC/wB,EAAS,qBACvCgxB,GAAsBZ,IAAoB,CAAC,CAACpwB,EAAS,gBACrDixB,EAAmBb,IAAoB,CAAC,CAACpwB,EAAS,aAClDkxB,GAAkB,CAAC,CAAClxB,EAAS,YAC7BmxB,GAAe,CAAC,CAACnxB,EAAS,SAC1BoxB,GAAgBpxB,EAAS,UAAY,EACrCqxB,GAAgB,CAAC,CAACrxB,EAAS,UAC3BsxB,GAAiB,CAAC,CAACtxB,EAAS,WAC9Bod,GAAclyC,GACd80B,EAAS,aACPyD,KAAwB,MAAQA,GAAoB,mBAAqB,MAC3E2Z,GAAc5Z,EAAS,aAG3B,IAAM1N,GAAa,CACjB,SAAAg5B,GACA,WAAY9uB,EAAS,KACrB,WAAYA,EAAS,KACrB,aAAA6rB,GACA,eAAAC,GACA,QAAS9rB,EAAS,QAClB,qBAAAgvB,GACA,uBAAAC,GACA,oBAAqBjvB,EAAS,sBAAwB,GACtD,YAAaA,EAAS,YACtB,UAAAyY,EACA,SAAU0W,GACV,cAAeA,IAAkBhlC,EAAO,iBAAmB,KAC3D,WAAY+kC,GACZ,gBAAiBA,IAAoB/kC,EAAO,gBAAkB,KAC9D,gBAAiB+kC,IAAoB/kC,EAAO,eAAiB,KAC7D,uBAAwBikC,EACxB,iBAAkB3qB,KAAwB,KAAOD,EAAS,iBAAmBC,GAAoB,mBAAqB,GAAOA,GAAoB,QAAQ,WAAar7B,GACtK,gBAAiB,CAAC,CAAC43B,EAAS,gBAC5B,IAAKovB,GACL,OAAQC,EACR,OAAQC,GACR,WAAYA,IAAcV,EAAO,QACjC,mBAAAC,GACA,MAAOU,GACP,SAAUC,GACV,QAASC,EACT,UAAWC,GACX,gBAAiBtB,GAA4BuB,GAC7C,YAAaC,GACb,qBAAsBF,IAAiB1vB,EAAS,gBAAkBr0B,GAClE,sBAAuB+jD,IAAiB1vB,EAAS,gBAAkBtsB,GACnE,aAAcm8C,EACd,aAAcC,EACd,WAAYC,EACZ,cAAeM,GACf,UAAWL,EACX,aAAcM,GACd,mBAAoBC,GACpB,sBAAuBC,EACvB,WAAYP,EACZ,YAAaC,EACb,eAAgBO,GAChB,wBAAyBC,GACzB,MAAOP,GACP,cAAeQ,GACf,kBAAmBC,GACnB,YAAaC,GACb,iBAAkBC,GAClB,qBAAsBC,EACtB,aAAcX,GACd,gBAAiBY,GACjB,aAAcC,EACd,YAAaC,GACb,OAAQlxB,EAAS,cAAgB,IAASA,EAAS,WAAa50B,IAAkB40B,EAAS,kBAAoB,GAC/G,SAAUmxB,GACV,UAAWC,GACX,UAAWC,GACX,QAASrxB,EAAS,QAElB,MAAOovB,IAAWd,EAAWtuB,EAAS,IAAI,OAAO,EACjD,QAASuvB,IAAajB,EAAWtuB,EAAS,MAAM,OAAO,EACvD,WAAYwvB,IAAgBlB,EAAWtuB,EAAS,SAAS,OAAO,EAChE,UAAWyvB,GAAenB,EAAWtuB,EAAS,QAAQ,OAAO,EAC7D,YAAa0vB,IAAiBpB,EAAWtuB,EAAS,UAAU,OAAO,EACnE,kBAAmB2vB,IAAuBrB,EAAWtuB,EAAS,gBAAgB,OAAO,EACrF,cAAe4vB,IAAmBtB,EAAWtuB,EAAS,YAAY,OAAO,EACzE,eAAgB6vB,GAAoBvB,EAAWtuB,EAAS,aAAa,OAAO,EAC5E,eAAgB8vB,GAAoBxB,EAAWtuB,EAAS,aAAa,OAAO,EAC5E,gBAAiBqwB,IAAqB/B,EAAWtuB,EAAS,cAAc,OAAO,EAC/E,eAAgBswB,IAAoBhC,EAAWtuB,EAAS,aAAa,OAAO,EAC5E,qBAAsBuwB,IAA2BjC,EAAWtuB,EAAS,mBAAmB,OAAO,EAC/F,wBAAyBwwB,GAA8BlC,EAAWtuB,EAAS,sBAAsB,OAAO,EACxG,iBAAkBywB,IAAsBnC,EAAWtuB,EAAS,eAAe,OAAO,EAClF,0BAA2B0wB,IAAgCpC,EAAWtuB,EAAS,wBAAwB,OAAO,EAC9G,gBAAiB2wB,IAAsBrC,EAAWtuB,EAAS,cAAc,OAAO,EAChF,oBAAqB4wB,IAA0BtC,EAAWtuB,EAAS,kBAAkB,OAAO,EAC5F,cAAe6wB,IAAmBvC,EAAWtuB,EAAS,YAAY,OAAO,EACzE,mBAAoB8wB,IAAyBxC,EAAWtuB,EAAS,iBAAiB,OAAO,EACzF,uBAAwB+wB,GAA6BzC,EAAWtuB,EAAS,qBAAqB,OAAO,EACrG,kBAAmBgxB,IAAuB1C,EAAWtuB,EAAS,gBAAgB,OAAO,EACrF,eAAgBixB,GAAoB3C,EAAWtuB,EAAS,aAAa,OAAO,EAC5E,WAAYmxB,IAAgB7C,EAAWtuB,EAAS,SAAS,OAAO,EAEhE,eAAgB,CAAC,CAACxV,EAAS,WAAW,UAAYklC,IAAiBK,GACnE,aAAc/vB,EAAS,aACvB,aAAcA,EAAS,eAAiB,IAAQ,CAAC,CAACxV,EAAS,WAAW,OAASA,EAAS,WAAW,MAAM,WAAa,EACtH,UAAWL,EAAO,WAAa,IAAQ,CAAC,CAACK,EAAS,WAAW,KAAO4kC,IAAW+B,IAC/E,IAAK,CAAC,CAACzC,EACP,OAAQ1uB,EAAS,MAAQ,GACzB,QAAS,CAAC,CAAC0uB,GAAOA,EAAI,UACtB,YAAa1uB,EAAS,cAAgB,GACtC,gBAAiBA,EAAS,kBAAoB,GAC9C,uBAAA2Y,EACA,mBAAAC,EACA,SAAUzuB,EAAO,gBAAkB,GACnC,aAAcK,EAAS,gBAAgB,WAAa,OACpD,aAAcA,EAAS,gBAAgB,SAAW,OAClD,YAAaA,EAAS,gBAAgB,QAAU,OAChD,kBAAAo3B,GACA,mBAAAmN,EACA,aAAcP,EAAO,YAAY,OACjC,eAAgBA,EAAO,MAAM,OAC7B,cAAeA,EAAO,KAAK,OAC3B,iBAAkBA,EAAO,aAAa,OACtC,kBAAmBA,EAAO,SAAS,OACnC,cAAeA,EAAO,KAAK,OAC3B,mBAAoBA,EAAO,qBAAqB,OAChD,qBAAsBA,EAAO,eAAe,OAC5C,oBAAqBA,EAAO,cAAc,OAC1C,4BAA6BA,EAAO,4BACpC,eAAgBA,EAAO,eACvB,kBAAmBT,EAAS,UAC5B,oBAAqBA,EAAS,gBAC9B,UAAW/tB,EAAS,UACpB,iBAAkBwD,EAAS,UAAU,SAAWirB,EAAQ,OAAS,EACjE,cAAejrB,EAAS,UAAU,KAClC,YAAA4Z,GACA,mBAAoBgS,IAAWpvB,EAAS,IAAI,iBAAmB,IAAQjgC,GAAgB,YAAYigC,EAAS,IAAI,UAAU,IAAM5uB,GAChI,mBAAoB4uB,EAAS,mBAC7B,YAAaA,EAAS,OAASp9B,GAC/B,UAAWo9B,EAAS,OAAS5hC,GAC7B,gBAAiB4hC,EAAS,cAAgB,EAC1C,aAAcA,EAAS,cAAgB,EACvC,oBAAqBA,EAAS,oBAC9B,0BAA2BsxB,IAAkBtxB,EAAS,WAAW,mBAAqB,IAAQ4D,EAAW,IAAI,0BAA0B,EACvI,oBAAqB0tB,IAAkBtxB,EAAS,WAAW,YAAc,IAAQmvB,KAAmBvrB,EAAW,IAAI,kBAAkB,EACrI,uCAAwCA,EAAW,IAAI,6BAA6B,EACpF,sBAAuB5D,EAAS,sBAAsB,CACxD,EACA,OAAAlK,GAAW,WAAao4B,EAAgB,IAAI,CAAC,EAC7Cp4B,GAAW,WAAao4B,EAAgB,IAAI,CAAC,EAC7Cp4B,GAAW,WAAao4B,EAAgB,IAAI,CAAC,EAC7CA,EAAgB,MAAM,EACfp4B,EACT,CACA,SAASy7B,EAAmBz7B,EAAY,CACtC,IAAM5e,EAAQ,CAAC,EAOf,GANI4e,EAAW,SACb5e,EAAM,KAAK4e,EAAW,QAAQ,GAE9B5e,EAAM,KAAK4e,EAAW,oBAAoB,EAC1C5e,EAAM,KAAK4e,EAAW,sBAAsB,GAE1CA,EAAW,UAAY,OACzB,QAAWzV,KAAQyV,EAAW,QAC5B5e,EAAM,KAAKmJ,CAAI,EACfnJ,EAAM,KAAK4e,EAAW,QAAQzV,CAAI,CAAC,EAGvC,OAAIyV,EAAW,sBAAwB,KACrC07B,EAA6Bt6C,EAAO4e,CAAU,EAC9C27B,EAA2Bv6C,EAAO4e,CAAU,EAC5C5e,EAAM,KAAKssB,EAAS,gBAAgB,GAEtCtsB,EAAM,KAAK4e,EAAW,qBAAqB,EACpC5e,EAAM,KAAK,CACpB,CACA,SAASs6C,EAA6Bt6C,EAAO4e,EAAY,CACvD5e,EAAM,KAAK4e,EAAW,SAAS,EAC/B5e,EAAM,KAAK4e,EAAW,gBAAgB,EACtC5e,EAAM,KAAK4e,EAAW,UAAU,EAChC5e,EAAM,KAAK4e,EAAW,kBAAkB,EACxC5e,EAAM,KAAK4e,EAAW,KAAK,EAC3B5e,EAAM,KAAK4e,EAAW,UAAU,EAChC5e,EAAM,KAAK4e,EAAW,UAAU,EAChC5e,EAAM,KAAK4e,EAAW,OAAO,EAC7B5e,EAAM,KAAK4e,EAAW,SAAS,EAC/B5e,EAAM,KAAK4e,EAAW,WAAW,EACjC5e,EAAM,KAAK4e,EAAW,iBAAiB,EACvC5e,EAAM,KAAK4e,EAAW,aAAa,EACnC5e,EAAM,KAAK4e,EAAW,cAAc,EACpC5e,EAAM,KAAK4e,EAAW,cAAc,EACpC5e,EAAM,KAAK4e,EAAW,eAAe,EACrC5e,EAAM,KAAK4e,EAAW,cAAc,EACpC5e,EAAM,KAAK4e,EAAW,oBAAoB,EAC1C5e,EAAM,KAAK4e,EAAW,uBAAuB,EAC7C5e,EAAM,KAAK4e,EAAW,gBAAgB,EACtC5e,EAAM,KAAK4e,EAAW,yBAAyB,EAC/C5e,EAAM,KAAK4e,EAAW,eAAe,EACrC5e,EAAM,KAAK4e,EAAW,mBAAmB,EACzC5e,EAAM,KAAK4e,EAAW,aAAa,EACnC5e,EAAM,KAAK4e,EAAW,kBAAkB,EACxC5e,EAAM,KAAK4e,EAAW,sBAAsB,EAC5C5e,EAAM,KAAK4e,EAAW,iBAAiB,EACvC5e,EAAM,KAAK4e,EAAW,cAAc,EACpC5e,EAAM,KAAK4e,EAAW,OAAO,EAC7B5e,EAAM,KAAK4e,EAAW,OAAO,EAC7B5e,EAAM,KAAK4e,EAAW,eAAe,EACrC5e,EAAM,KAAK4e,EAAW,iBAAiB,EACvC5e,EAAM,KAAK4e,EAAW,mBAAmB,EACzC5e,EAAM,KAAK4e,EAAW,YAAY,EAClC5e,EAAM,KAAK4e,EAAW,cAAc,EACpC5e,EAAM,KAAK4e,EAAW,aAAa,EACnC5e,EAAM,KAAK4e,EAAW,gBAAgB,EACtC5e,EAAM,KAAK4e,EAAW,aAAa,EACnC5e,EAAM,KAAK4e,EAAW,iBAAiB,EACvC5e,EAAM,KAAK4e,EAAW,kBAAkB,EACxC5e,EAAM,KAAK4e,EAAW,oBAAoB,EAC1C5e,EAAM,KAAK4e,EAAW,mBAAmB,EACzC5e,EAAM,KAAK4e,EAAW,2BAA2B,EACjD5e,EAAM,KAAK4e,EAAW,cAAc,EACpC5e,EAAM,KAAK4e,EAAW,aAAa,EACnC5e,EAAM,KAAK4e,EAAW,WAAW,EACjC5e,EAAM,KAAK4e,EAAW,iBAAiB,EACvC5e,EAAM,KAAK4e,EAAW,mBAAmB,EACzC5e,EAAM,KAAK4e,EAAW,YAAY,CACpC,CACA,SAAS27B,EAA2Bv6C,EAAO4e,EAAY,CACrDk4B,EAAe,WAAW,EACtBl4B,EAAW,wBACbk4B,EAAe,OAAO,CAAC,EACrBl4B,EAAW,YACbk4B,EAAe,OAAO,CAAC,EACrBl4B,EAAW,iBACbk4B,EAAe,OAAO,CAAC,EACrBl4B,EAAW,iBACbk4B,EAAe,OAAO,CAAC,EACrBl4B,EAAW,QACbk4B,EAAe,OAAO,CAAC,EACrBl4B,EAAW,QACbk4B,EAAe,OAAO,CAAC,EACrBl4B,EAAW,sBACbk4B,EAAe,OAAO,CAAC,EACrBl4B,EAAW,uBACbk4B,EAAe,OAAO,CAAC,EACrBl4B,EAAW,WACbk4B,EAAe,OAAO,CAAC,EACrBl4B,EAAW,aACbk4B,EAAe,OAAO,CAAC,EACrBl4B,EAAW,WACbk4B,EAAe,OAAO,EAAE,EACtBl4B,EAAW,cACbk4B,EAAe,OAAO,EAAE,EACtBl4B,EAAW,cACbk4B,EAAe,OAAO,EAAE,EACtBl4B,EAAW,YACbk4B,EAAe,OAAO,EAAE,EACtBl4B,EAAW,YACbk4B,EAAe,OAAO,EAAE,EACtBl4B,EAAW,YACbk4B,EAAe,OAAO,EAAE,EACtBl4B,EAAW,gBACbk4B,EAAe,OAAO,EAAE,EACtBl4B,EAAW,YACbk4B,EAAe,OAAO,EAAE,EACtBl4B,EAAW,WACbk4B,EAAe,OAAO,EAAE,EACtBl4B,EAAW,UACbk4B,EAAe,OAAO,EAAE,EACtBl4B,EAAW,YACbk4B,EAAe,OAAO,EAAE,EACtBl4B,EAAW,eACbk4B,EAAe,OAAO,EAAE,EAC1B92C,EAAM,KAAK82C,EAAe,IAAI,EAC9BA,EAAe,WAAW,EACtBl4B,EAAW,KACbk4B,EAAe,OAAO,CAAC,EACrBl4B,EAAW,QACbk4B,EAAe,OAAO,CAAC,EACrBl4B,EAAW,aACbk4B,EAAe,OAAO,CAAC,EACrBl4B,EAAW,wBACbk4B,EAAe,OAAO,CAAC,EACrBl4B,EAAW,oBACbk4B,EAAe,OAAO,CAAC,EACrBl4B,EAAW,UACbk4B,EAAe,OAAO,CAAC,EACrBl4B,EAAW,cACbk4B,EAAe,OAAO,CAAC,EACrBl4B,EAAW,cACbk4B,EAAe,OAAO,CAAC,EACrBl4B,EAAW,aACbk4B,EAAe,OAAO,CAAC,EACrBl4B,EAAW,oBACbk4B,EAAe,OAAO,CAAC,EACrBl4B,EAAW,kBACbk4B,EAAe,OAAO,EAAE,EACtBl4B,EAAW,aACbk4B,EAAe,OAAO,EAAE,EACtBl4B,EAAW,WACbk4B,EAAe,OAAO,EAAE,EACtBl4B,EAAW,iBACbk4B,EAAe,OAAO,EAAE,EACtBl4B,EAAW,WACbk4B,EAAe,OAAO,EAAE,EACtBl4B,EAAW,cACbk4B,EAAe,OAAO,EAAE,EACtBl4B,EAAW,OACbk4B,EAAe,OAAO,EAAE,EACtBl4B,EAAW,QACbk4B,EAAe,OAAO,EAAE,EACtBl4B,EAAW,WACbk4B,EAAe,OAAO,EAAE,EACtBl4B,EAAW,oBACbk4B,EAAe,OAAO,EAAE,EACtBl4B,EAAW,iBACbk4B,EAAe,OAAO,EAAE,EAC1B92C,EAAM,KAAK82C,EAAe,IAAI,CAChC,CACA,SAAS0D,EAAY1xB,EAAU,CAC7B,IAAM8uB,EAAWT,EAAUruB,EAAS,IAAI,EACpCoD,EACJ,GAAI0rB,EAAU,CACZ,IAAMppB,EAASn0B,GAAUu9C,CAAQ,EACjC1rB,EAAWtuB,GAAc,MAAM4wB,EAAO,QAAQ,CAChD,MACEtC,EAAWpD,EAAS,SAEtB,OAAOoD,CACT,CACA,SAASuuB,EAAe77B,EAAY81B,EAAU,CAC5C,IAAIpX,EACJ,QAAS/gB,EAAI,EAAGm+B,EAAKzD,EAAS,OAAQ16B,EAAIm+B,EAAIn+B,IAAK,CACjD,IAAMo+B,EAAqB1D,EAAS16B,CAAC,EACrC,GAAIo+B,EAAmB,WAAajG,EAAU,CAC5CpX,EAAUqd,EACV,EAAErd,EAAQ,UACV,KACF,CACF,CACA,OAAIA,IAAY,SACdA,EAAU,IAAImX,GAAanoB,EAAUooB,EAAU91B,EAAYoe,CAAa,EACxEia,EAAS,KAAK3Z,CAAO,GAEhBA,CACT,CACA,SAASsd,EAAetd,EAAS,CAC/B,GAAI,EAAEA,EAAQ,YAAc,EAAG,CAC7B,IAAMr9B,EAAIg3C,EAAS,QAAQ3Z,CAAO,EAClC2Z,EAASh3C,CAAC,EAAIg3C,EAASA,EAAS,OAAS,CAAC,EAC1CA,EAAS,IAAI,EACb3Z,EAAQ,QAAQ,CAClB,CACF,CACA,SAASud,EAAmB/xB,EAAU,CACpCiuB,EAAe,OAAOjuB,CAAQ,CAChC,CACA,SAAS0W,GAAU,CACjBuX,EAAe,QAAQ,CACzB,CACA,MAAO,CACL,cAAAM,EACA,mBAAAgD,EACA,YAAAG,EACA,eAAAC,EACA,eAAAG,EACA,mBAAAC,EAEA,SAAA5D,EACA,QAAAzX,CACF,CACF,CACA,SAASsb,IAAkB,CACzB,IAAIvY,EAA6B,IAAI,QACrC,SAASwY,EAAI9nC,EAAQ,CACnB,OAAOsvB,EAAW,IAAItvB,CAAM,CAC9B,CACA,SAAS6e,EAAI7e,EAAQ,CACnB,IAAI+nC,EAAMzY,EAAW,IAAItvB,CAAM,EAC/B,OAAI+nC,IAAQ,SACVA,EAAM,CAAC,EACPzY,EAAW,IAAItvB,EAAQ+nC,CAAG,GAErBA,CACT,CACA,SAASjpB,EAAO9e,EAAQ,CACtBsvB,EAAW,OAAOtvB,CAAM,CAC1B,CACA,SAAS9D,EAAO8D,EAAQ0M,EAAK9e,EAAO,CAClC0hC,EAAW,IAAItvB,CAAM,EAAE0M,CAAG,EAAI9e,CAChC,CACA,SAAS2+B,GAAU,CACjB+C,EAA6B,IAAI,OACnC,CACA,MAAO,CACL,IAAAwY,EACA,IAAAjpB,EACA,OAAAC,EACA,OAAA5iB,EACA,QAAAqwB,CACF,CACF,CACA,SAASyb,GAAkB53C,EAAGC,EAAG,CAC/B,OAAID,EAAE,aAAeC,EAAE,WACdD,EAAE,WAAaC,EAAE,WACfD,EAAE,cAAgBC,EAAE,YACtBD,EAAE,YAAcC,EAAE,YAChBD,EAAE,SAAS,KAAOC,EAAE,SAAS,GAC/BD,EAAE,SAAS,GAAKC,EAAE,SAAS,GACzBD,EAAE,IAAMC,EAAE,EACZD,EAAE,EAAIC,EAAE,EAERD,EAAE,GAAKC,EAAE,EAEpB,CACA,SAAS43C,GAAyB73C,EAAGC,EAAG,CACtC,OAAID,EAAE,aAAeC,EAAE,WACdD,EAAE,WAAaC,EAAE,WACfD,EAAE,cAAgBC,EAAE,YACtBD,EAAE,YAAcC,EAAE,YAChBD,EAAE,IAAMC,EAAE,EACZA,EAAE,EAAID,EAAE,EAERA,EAAE,GAAKC,EAAE,EAEpB,CACA,SAAS63C,IAAkB,CACzB,IAAMC,EAAc,CAAC,EACjBC,EAAmB,EACjBC,EAAS,CAAC,EACVC,EAAe,CAAC,EAChBC,EAAc,CAAC,EACrB,SAASC,GAAO,CACdJ,EAAmB,EACnBC,EAAO,OAAS,EAChBC,EAAa,OAAS,EACtBC,EAAY,OAAS,CACvB,CACA,SAASE,EAAkBzoC,EAAQK,EAAUwV,EAAU6yB,EAAYrvC,EAAGoa,EAAO,CAC3E,IAAIk1B,EAAaR,EAAYC,CAAgB,EAC7C,OAAIO,IAAe,QACjBA,EAAa,CACX,GAAI3oC,EAAO,GACX,OAAAA,EACA,SAAAK,EACA,SAAAwV,EACA,WAAA6yB,EACA,YAAa1oC,EAAO,YACpB,EAAA3G,EACA,MAAAoa,CACF,EACA00B,EAAYC,CAAgB,EAAIO,IAEhCA,EAAW,GAAK3oC,EAAO,GACvB2oC,EAAW,OAAS3oC,EACpB2oC,EAAW,SAAWtoC,EACtBsoC,EAAW,SAAW9yB,EACtB8yB,EAAW,WAAaD,EACxBC,EAAW,YAAc3oC,EAAO,YAChC2oC,EAAW,EAAItvC,EACfsvC,EAAW,MAAQl1B,GAErB20B,IACOO,CACT,CACA,SAASC,EAAK5oC,EAAQK,EAAUwV,EAAU6yB,EAAYrvC,EAAGoa,EAAO,CAC9D,IAAMk1B,EAAaF,EAAkBzoC,EAAQK,EAAUwV,EAAU6yB,EAAYrvC,EAAGoa,CAAK,EACjFoC,EAAS,aAAe,EAC1ByyB,EAAa,KAAKK,CAAU,EACnB9yB,EAAS,cAAgB,GAClC0yB,EAAY,KAAKI,CAAU,EAE3BN,EAAO,KAAKM,CAAU,CAE1B,CACA,SAASE,EAAQ7oC,EAAQK,EAAUwV,EAAU6yB,EAAYrvC,EAAGoa,EAAO,CACjE,IAAMk1B,EAAaF,EAAkBzoC,EAAQK,EAAUwV,EAAU6yB,EAAYrvC,EAAGoa,CAAK,EACjFoC,EAAS,aAAe,EAC1ByyB,EAAa,QAAQK,CAAU,EACtB9yB,EAAS,cAAgB,GAClC0yB,EAAY,QAAQI,CAAU,EAE9BN,EAAO,QAAQM,CAAU,CAE7B,CACA,SAASG,EAAKC,EAAkBC,EAAuB,CACjDX,EAAO,OAAS,GAAGA,EAAO,KAAKU,GAAoBf,EAAiB,EACpEM,EAAa,OAAS,GAAGA,EAAa,KAAKU,GAAyBf,EAAwB,EAC5FM,EAAY,OAAS,GAAGA,EAAY,KAAKS,GAAyBf,EAAwB,CAChG,CACA,SAASgB,GAAS,CAChB,QAASj8C,EAAIo7C,EAAkBxtC,EAAKutC,EAAY,OAAQn7C,EAAI4N,EAAI5N,IAAK,CACnE,IAAM27C,EAAaR,EAAYn7C,CAAC,EAChC,GAAI27C,EAAW,KAAO,KAAM,MAC5BA,EAAW,GAAK,KAChBA,EAAW,OAAS,KACpBA,EAAW,SAAW,KACtBA,EAAW,SAAW,KACtBA,EAAW,MAAQ,IACrB,CACF,CACA,MAAO,CACL,OAAAN,EACA,aAAAC,EACA,YAAAC,EACA,KAAAC,EACA,KAAAI,EACA,QAAAC,EACA,OAAAI,EACA,KAAAH,CACF,CACF,CACA,SAASI,IAAmB,CAC1B,IAAIC,EAAwB,IAAI,QAChC,SAAStqB,EAAI5D,EAAOmuB,EAAiB,CACnC,IAAMC,EAAYF,EAAM,IAAIluB,CAAK,EAC7BquB,EACJ,OAAID,IAAc,QAChBC,EAAO,IAAIpB,GACXiB,EAAM,IAAIluB,EAAO,CAACquB,CAAI,CAAC,GAEnBF,GAAmBC,EAAU,QAC/BC,EAAO,IAAIpB,GACXmB,EAAU,KAAKC,CAAI,GAEnBA,EAAOD,EAAUD,CAAe,EAG7BE,CACT,CACA,SAAS/c,GAAU,CACjB4c,EAAwB,IAAI,OAC9B,CACA,MAAO,CACL,IAAAtqB,EACA,QAAA0N,CACF,CACF,CACA,SAASgd,IAAgB,CACvB,IAAMlF,EAAS,CAAC,EAChB,MAAO,CACL,IAAK,SAASmF,EAAO,CACnB,GAAInF,EAAOmF,EAAM,EAAE,IAAM,OACvB,OAAOnF,EAAOmF,EAAM,EAAE,EAExB,IAAIvwB,EACJ,OAAQuwB,EAAM,KAAM,CAClB,IAAK,mBACHvwB,EAAW,CACT,UAAW,IAAI5tB,EACf,MAAO,IAAI3V,EACb,EACA,MACF,IAAK,YACHujC,EAAW,CACT,SAAU,IAAI5tB,EACd,UAAW,IAAIA,EACf,MAAO,IAAI3V,GACX,SAAU,EACV,QAAS,EACT,YAAa,EACb,MAAO,CACT,EACA,MACF,IAAK,aACHujC,EAAW,CACT,SAAU,IAAI5tB,EACd,MAAO,IAAI3V,GACX,SAAU,EACV,MAAO,CACT,EACA,MACF,IAAK,kBACHujC,EAAW,CACT,UAAW,IAAI5tB,EACf,SAAU,IAAI3V,GACd,YAAa,IAAIA,EACnB,EACA,MACF,IAAK,gBACHujC,EAAW,CACT,MAAO,IAAIvjC,GACX,SAAU,IAAI2V,EACd,UAAW,IAAIA,EACf,WAAY,IAAIA,CAClB,EACA,KACJ,CACA,OAAAg5C,EAAOmF,EAAM,EAAE,EAAIvwB,EACZA,CACT,CACF,CACF,CACA,SAASwwB,IAAsB,CAC7B,IAAMpF,EAAS,CAAC,EAChB,MAAO,CACL,IAAK,SAASmF,EAAO,CACnB,GAAInF,EAAOmF,EAAM,EAAE,IAAM,OACvB,OAAOnF,EAAOmF,EAAM,EAAE,EAExB,IAAIvwB,EACJ,OAAQuwB,EAAM,KAAM,CAClB,IAAK,mBACHvwB,EAAW,CACT,gBAAiB,EACjB,WAAY,EACZ,iBAAkB,EAClB,aAAc,EACd,cAAe,IAAI7tB,CACrB,EACA,MACF,IAAK,YACH6tB,EAAW,CACT,gBAAiB,EACjB,WAAY,EACZ,iBAAkB,EAClB,aAAc,EACd,cAAe,IAAI7tB,CACrB,EACA,MACF,IAAK,aACH6tB,EAAW,CACT,gBAAiB,EACjB,WAAY,EACZ,iBAAkB,EAClB,aAAc,EACd,cAAe,IAAI7tB,EACnB,iBAAkB,EAClB,gBAAiB,GACnB,EACA,KACJ,CACA,OAAAi5C,EAAOmF,EAAM,EAAE,EAAIvwB,EACZA,CACT,CACF,CACF,CACA,IAAIywB,GAAc,EAClB,SAASC,GAAqCC,EAAQC,EAAQ,CAC5D,OAAQA,EAAO,WAAa,EAAI,IAAMD,EAAO,WAAa,EAAI,IAAMC,EAAO,IAAM,EAAI,IAAMD,EAAO,IAAM,EAAI,EAC9G,CACA,SAASE,GAAYrwB,EAAY,CAC/B,IAAMjN,EAAQ,IAAI+8B,GACZQ,EAAcN,GAAoB,EAClCjhB,EAAQ,CACZ,QAAS,EACT,KAAM,CACJ,kBAAmB,GACnB,YAAa,GACb,WAAY,GACZ,eAAgB,GAChB,WAAY,GACZ,sBAAuB,GACvB,gBAAiB,GACjB,eAAgB,GAChB,YAAa,GACb,eAAgB,EAClB,EACA,QAAS,CAAC,EAAG,EAAG,CAAC,EACjB,MAAO,CAAC,EACR,YAAa,CAAC,EACd,kBAAmB,CAAC,EACpB,qBAAsB,CAAC,EACvB,wBAAyB,CAAC,EAC1B,KAAM,CAAC,EACP,aAAc,CAAC,EACf,WAAY,CAAC,EACb,cAAe,CAAC,EAChB,gBAAiB,CAAC,EAClB,SAAU,CAAC,EACX,aAAc,KACd,aAAc,KACd,MAAO,CAAC,EACR,YAAa,CAAC,EACd,eAAgB,CAAC,EACjB,kBAAmB,CAAC,EACpB,KAAM,CAAC,EACP,4BAA6B,EAC7B,eAAgB,CAClB,EACA,QAASx7B,EAAI,EAAGA,EAAI,EAAGA,IAAKw7B,EAAM,MAAM,KAAK,IAAIn9B,CAAS,EAC1D,IAAM2+C,EAAU,IAAI3+C,EACd6J,EAAU,IAAIhW,GACd+qD,EAAW,IAAI/qD,GACrB,SAASkrC,EAAMia,EAAQ,CACrB,IAAIlvC,EAAI,EAAGT,EAAI,EAAGrE,EAAI,EACtB,QAASrD,EAAI,EAAGA,EAAI,EAAGA,IAAKw7B,EAAM,MAAMx7B,CAAC,EAAE,IAAI,EAAG,EAAG,CAAC,EACtD,IAAIk9C,EAAoB,EACpBC,EAAc,EACdC,EAAa,EACbC,EAAiB,EACjBC,EAAa,EACbC,EAAwB,EACxBC,EAAkB,EAClBC,EAAiB,EACjBC,EAAc,EACdC,EAAyB,EACzBC,EAAiB,EACrBvG,EAAO,KAAKsF,EAAoC,EAChD,QAAS38C,EAAI,EAAGC,EAAIo3C,EAAO,OAAQr3C,EAAIC,EAAGD,IAAK,CAC7C,IAAMw8C,EAAQnF,EAAOr3C,CAAC,EAChBoK,EAAQoyC,EAAM,MACdqB,EAAYrB,EAAM,UAClBx+B,EAAWw+B,EAAM,SACjBsB,EAAYtB,EAAM,QAAUA,EAAM,OAAO,IAAMA,EAAM,OAAO,IAAI,QAAU,KAChF,GAAIA,EAAM,eACRr0C,GAAKiC,EAAM,EAAIyzC,EACfn2C,GAAK0C,EAAM,EAAIyzC,EACfx6C,GAAK+G,EAAM,EAAIyzC,UACNrB,EAAM,aAAc,CAC7B,QAAS7nC,EAAI,EAAGA,EAAI,EAAGA,IACrB6mB,EAAM,MAAM7mB,CAAC,EAAE,gBAAgB6nC,EAAM,GAAG,aAAa7nC,CAAC,EAAGkpC,CAAS,EAEpED,GACF,SAAWpB,EAAM,mBAAoB,CACnC,IAAMvwB,EAAWzM,EAAM,IAAIg9B,CAAK,EAEhC,GADAvwB,EAAS,MAAM,KAAKuwB,EAAM,KAAK,EAAE,eAAeA,EAAM,SAAS,EAC3DA,EAAM,WAAY,CACpB,IAAMuB,GAASvB,EAAM,OACfwB,EAAiBjB,EAAY,IAAIP,CAAK,EAC5CwB,EAAe,gBAAkBD,GAAO,UACxCC,EAAe,WAAaD,GAAO,KACnCC,EAAe,iBAAmBD,GAAO,WACzCC,EAAe,aAAeD,GAAO,OACrCC,EAAe,cAAgBD,GAAO,QACtCviB,EAAM,kBAAkB0hB,CAAiB,EAAIc,EAC7CxiB,EAAM,qBAAqB0hB,CAAiB,EAAIY,EAChDtiB,EAAM,wBAAwB0hB,CAAiB,EAAIV,EAAM,OAAO,OAChEe,GACF,CACA/hB,EAAM,YAAY0hB,CAAiB,EAAIjxB,EACvCixB,GACF,SAAWV,EAAM,YAAa,CAC5B,IAAMvwB,EAAWzM,EAAM,IAAIg9B,CAAK,EAChCvwB,EAAS,SAAS,sBAAsBuwB,EAAM,WAAW,EACzDvwB,EAAS,MAAM,KAAK7hB,CAAK,EAAE,eAAeyzC,CAAS,EACnD5xB,EAAS,SAAWjO,EACpBiO,EAAS,QAAU,KAAK,IAAIuwB,EAAM,KAAK,EACvCvwB,EAAS,YAAc,KAAK,IAAIuwB,EAAM,OAAS,EAAIA,EAAM,SAAS,EAClEvwB,EAAS,MAAQuwB,EAAM,MACvBhhB,EAAM,KAAK4hB,CAAU,EAAInxB,EACzB,IAAM8xB,GAASvB,EAAM,OAQrB,GAPIA,EAAM,MACRhhB,EAAM,aAAakiB,CAAW,EAAIlB,EAAM,IACxCkB,IACAK,GAAO,eAAevB,CAAK,EACvBA,EAAM,YAAYmB,KAExBniB,EAAM,gBAAgB4hB,CAAU,EAAIW,GAAO,OACvCvB,EAAM,WAAY,CACpB,IAAMwB,EAAiBjB,EAAY,IAAIP,CAAK,EAC5CwB,EAAe,gBAAkBD,GAAO,UACxCC,EAAe,WAAaD,GAAO,KACnCC,EAAe,iBAAmBD,GAAO,WACzCC,EAAe,aAAeD,GAAO,OACrCC,EAAe,cAAgBD,GAAO,QACtCviB,EAAM,WAAW4hB,CAAU,EAAIY,EAC/BxiB,EAAM,cAAc4hB,CAAU,EAAIU,EAClCL,GACF,CACAL,GACF,SAAWZ,EAAM,gBAAiB,CAChC,IAAMvwB,EAAWzM,EAAM,IAAIg9B,CAAK,EAChCvwB,EAAS,MAAM,KAAK7hB,CAAK,EAAE,eAAeyzC,CAAS,EACnD5xB,EAAS,UAAU,IAAIuwB,EAAM,MAAQ,GAAK,EAAG,CAAC,EAC9CvwB,EAAS,WAAW,IAAI,EAAGuwB,EAAM,OAAS,GAAK,CAAC,EAChDhhB,EAAM,SAAS6hB,CAAc,EAAIpxB,EACjCoxB,GACF,SAAWb,EAAM,aAAc,CAC7B,IAAMvwB,EAAWzM,EAAM,IAAIg9B,CAAK,EAIhC,GAHAvwB,EAAS,MAAM,KAAKuwB,EAAM,KAAK,EAAE,eAAeA,EAAM,SAAS,EAC/DvwB,EAAS,SAAWuwB,EAAM,SAC1BvwB,EAAS,MAAQuwB,EAAM,MACnBA,EAAM,WAAY,CACpB,IAAMuB,GAASvB,EAAM,OACfwB,EAAiBjB,EAAY,IAAIP,CAAK,EAC5CwB,EAAe,gBAAkBD,GAAO,UACxCC,EAAe,WAAaD,GAAO,KACnCC,EAAe,iBAAmBD,GAAO,WACzCC,EAAe,aAAeD,GAAO,OACrCC,EAAe,cAAgBD,GAAO,QACtCC,EAAe,iBAAmBD,GAAO,OAAO,KAChDC,EAAe,gBAAkBD,GAAO,OAAO,IAC/CviB,EAAM,YAAY2hB,CAAW,EAAIa,EACjCxiB,EAAM,eAAe2hB,CAAW,EAAIW,EACpCtiB,EAAM,kBAAkB2hB,CAAW,EAAIX,EAAM,OAAO,OACpDgB,GACF,CACAhiB,EAAM,MAAM2hB,CAAW,EAAIlxB,EAC3BkxB,GACF,SAAWX,EAAM,kBAAmB,CAClC,IAAMvwB,EAAWzM,EAAM,IAAIg9B,CAAK,EAChCvwB,EAAS,SAAS,KAAKuwB,EAAM,KAAK,EAAE,eAAeqB,CAAS,EAC5D5xB,EAAS,YAAY,KAAKuwB,EAAM,WAAW,EAAE,eAAeqB,CAAS,EACrEriB,EAAM,KAAK8hB,CAAU,EAAIrxB,EACzBqxB,GACF,CACF,CACID,EAAiB,IACf5wB,EAAW,IAAI,0BAA0B,IAAM,IACjD+O,EAAM,aAAe99B,GAAY,YACjC89B,EAAM,aAAe99B,GAAY,cAEjC89B,EAAM,aAAe99B,GAAY,WACjC89B,EAAM,aAAe99B,GAAY,aAGrC89B,EAAM,QAAQ,CAAC,EAAIrzB,EACnBqzB,EAAM,QAAQ,CAAC,EAAI9zB,EACnB8zB,EAAM,QAAQ,CAAC,EAAIn4B,EACnB,IAAM46C,EAAOziB,EAAM,MACfyiB,EAAK,oBAAsBf,GAAqBe,EAAK,cAAgBd,GAAec,EAAK,aAAeb,GAAca,EAAK,iBAAmBZ,GAAkBY,EAAK,aAAeX,GAAcW,EAAK,wBAA0BV,GAAyBU,EAAK,kBAAoBT,GAAmBS,EAAK,iBAAmBR,GAAkBQ,EAAK,cAAgBP,GAAeO,EAAK,iBAAmBL,KAC9YpiB,EAAM,YAAY,OAAS0hB,EAC3B1hB,EAAM,KAAK,OAAS4hB,EACpB5hB,EAAM,SAAS,OAAS6hB,EACxB7hB,EAAM,MAAM,OAAS2hB,EACrB3hB,EAAM,KAAK,OAAS8hB,EACpB9hB,EAAM,kBAAkB,OAAS+hB,EACjC/hB,EAAM,qBAAqB,OAAS+hB,EACpC/hB,EAAM,YAAY,OAASgiB,EAC3BhiB,EAAM,eAAe,OAASgiB,EAC9BhiB,EAAM,WAAW,OAASiiB,EAC1BjiB,EAAM,cAAc,OAASiiB,EAC7BjiB,EAAM,wBAAwB,OAAS+hB,EACvC/hB,EAAM,kBAAkB,OAASgiB,EACjChiB,EAAM,gBAAgB,OAASiiB,EAAiBC,EAAcC,EAC9DniB,EAAM,aAAa,OAASkiB,EAC5BliB,EAAM,4BAA8BmiB,EACpCniB,EAAM,eAAiBoiB,EACvBK,EAAK,kBAAoBf,EACzBe,EAAK,YAAcd,EACnBc,EAAK,WAAab,EAClBa,EAAK,eAAiBZ,EACtBY,EAAK,WAAaX,EAClBW,EAAK,sBAAwBV,EAC7BU,EAAK,gBAAkBT,EACvBS,EAAK,eAAiBR,EACtBQ,EAAK,YAAcP,EACnBO,EAAK,eAAiBL,EACtBpiB,EAAM,QAAUkhB,KAEpB,CACA,SAASwB,EAAU7G,EAAQzlC,EAAQ,CACjC,IAAIsrC,EAAoB,EACpBC,EAAc,EACdC,EAAa,EACbC,EAAiB,EACjBC,EAAa,EACX3Z,EAAa/xB,EAAO,mBAC1B,QAAS5R,EAAI,EAAGC,EAAIo3C,EAAO,OAAQr3C,EAAIC,EAAGD,IAAK,CAC7C,IAAMw8C,EAAQnF,EAAOr3C,CAAC,EACtB,GAAIw8C,EAAM,mBAAoB,CAC5B,IAAMvwB,EAAWuP,EAAM,YAAY0hB,CAAiB,EACpDjxB,EAAS,UAAU,sBAAsBuwB,EAAM,WAAW,EAC1DQ,EAAQ,sBAAsBR,EAAM,OAAO,WAAW,EACtDvwB,EAAS,UAAU,IAAI+wB,CAAO,EAC9B/wB,EAAS,UAAU,mBAAmB0X,CAAU,EAChDuZ,GACF,SAAWV,EAAM,YAAa,CAC5B,IAAMvwB,EAAWuP,EAAM,KAAK4hB,CAAU,EACtCnxB,EAAS,SAAS,sBAAsBuwB,EAAM,WAAW,EACzDvwB,EAAS,SAAS,aAAa0X,CAAU,EACzC1X,EAAS,UAAU,sBAAsBuwB,EAAM,WAAW,EAC1DQ,EAAQ,sBAAsBR,EAAM,OAAO,WAAW,EACtDvwB,EAAS,UAAU,IAAI+wB,CAAO,EAC9B/wB,EAAS,UAAU,mBAAmB0X,CAAU,EAChDyZ,GACF,SAAWZ,EAAM,gBAAiB,CAChC,IAAMvwB,EAAWuP,EAAM,SAAS6hB,CAAc,EAC9CpxB,EAAS,SAAS,sBAAsBuwB,EAAM,WAAW,EACzDvwB,EAAS,SAAS,aAAa0X,CAAU,EACzCsZ,EAAS,SAAS,EAClB/0C,EAAQ,KAAKs0C,EAAM,WAAW,EAC9Bt0C,EAAQ,YAAYy7B,CAAU,EAC9BsZ,EAAS,gBAAgB/0C,CAAO,EAChC+jB,EAAS,UAAU,IAAIuwB,EAAM,MAAQ,GAAK,EAAG,CAAC,EAC9CvwB,EAAS,WAAW,IAAI,EAAGuwB,EAAM,OAAS,GAAK,CAAC,EAChDvwB,EAAS,UAAU,aAAagxB,CAAQ,EACxChxB,EAAS,WAAW,aAAagxB,CAAQ,EACzCI,GACF,SAAWb,EAAM,aAAc,CAC7B,IAAMvwB,EAAWuP,EAAM,MAAM2hB,CAAW,EACxClxB,EAAS,SAAS,sBAAsBuwB,EAAM,WAAW,EACzDvwB,EAAS,SAAS,aAAa0X,CAAU,EACzCwZ,GACF,SAAWX,EAAM,kBAAmB,CAClC,IAAMvwB,EAAWuP,EAAM,KAAK8hB,CAAU,EACtCrxB,EAAS,UAAU,sBAAsBuwB,EAAM,WAAW,EAC1DvwB,EAAS,UAAU,mBAAmB0X,CAAU,EAChD2Z,GACF,CACF,CACF,CACA,MAAO,CACL,MAAAlgB,EACA,UAAA8gB,EACA,MAAA1iB,CACF,CACF,CACA,SAAS2iB,GAAiB1xB,EAAY,CACpC,IAAM4qB,EAAS,IAAIyF,GAAYrwB,CAAU,EACnC2xB,EAAc,CAAC,EACfC,EAAe,CAAC,EACtB,SAAS7C,EAAK5pC,EAAQ,CACpB4pB,EAAM,OAAS5pB,EACfwsC,EAAY,OAAS,EACrBC,EAAa,OAAS,CACxB,CACA,SAASC,EAAU9B,EAAO,CACxB4B,EAAY,KAAK5B,CAAK,CACxB,CACA,SAAS+B,EAAWC,EAAa,CAC/BH,EAAa,KAAKG,CAAW,CAC/B,CACA,SAASC,GAAc,CACrBpH,EAAO,MAAM+G,CAAW,CAC1B,CACA,SAASM,EAAgB9sC,EAAQ,CAC/BylC,EAAO,UAAU+G,EAAaxsC,CAAM,CACtC,CACA,IAAM4pB,EAAQ,CACZ,YAAA4iB,EACA,aAAAC,EACA,OAAQ,KACR,OAAAhH,EACA,yBAA0B,CAAC,CAC7B,EACA,MAAO,CACL,KAAAmE,EACA,MAAAhgB,EACA,YAAAijB,EACA,gBAAAC,EACA,UAAAJ,EACA,WAAAC,CACF,CACF,CACA,SAASI,GAAkBlyB,EAAY,CACrC,IAAImyB,EAA+B,IAAI,QACvC,SAAS/sB,EAAI5D,EAAOmuB,EAAkB,EAAG,CACvC,IAAMyC,EAAmBD,EAAa,IAAI3wB,CAAK,EAC3C6wB,EACJ,OAAID,IAAqB,QACvBC,EAAc,IAAIX,GAAiB1xB,CAAU,EAC7CmyB,EAAa,IAAI3wB,EAAO,CAAC6wB,CAAW,CAAC,GAEjC1C,GAAmByC,EAAiB,QACtCC,EAAc,IAAIX,GAAiB1xB,CAAU,EAC7CoyB,EAAiB,KAAKC,CAAW,GAEjCA,EAAcD,EAAiBzC,CAAe,EAG3C0C,CACT,CACA,SAASvf,GAAU,CACjBqf,EAA+B,IAAI,OACrC,CACA,MAAO,CACL,IAAA/sB,EACA,QAAA0N,CACF,CACF,CACA,IAAIjtC,GAAoB,cAAcT,EAAS,CAC7C,YAAY8sB,EAAY,CACtB,MAAM,EACN,KAAK,oBAAsB,GAC3B,KAAK,KAAO,oBACZ,KAAK,aAAez3B,GACpB,KAAK,IAAM,KACX,KAAK,SAAW,KAChB,KAAK,gBAAkB,KACvB,KAAK,kBAAoB,EACzB,KAAK,iBAAmB,EACxB,KAAK,UAAY,GACjB,KAAK,mBAAqB,EAC1B,KAAK,UAAUy3B,CAAU,CAC3B,CACA,KAAKzS,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,aAAeA,EAAO,aAC3B,KAAK,IAAMA,EAAO,IAClB,KAAK,SAAWA,EAAO,SACvB,KAAK,gBAAkBA,EAAO,gBAC9B,KAAK,kBAAoBA,EAAO,kBAChC,KAAK,iBAAmBA,EAAO,iBAC/B,KAAK,UAAYA,EAAO,UACxB,KAAK,mBAAqBA,EAAO,mBAC1B,IACT,CACF,EACI3Z,GAAuB,cAAcV,EAAS,CAChD,YAAY8sB,EAAY,CACtB,MAAM,EACN,KAAK,uBAAyB,GAC9B,KAAK,KAAO,uBACZ,KAAK,IAAM,KACX,KAAK,SAAW,KAChB,KAAK,gBAAkB,KACvB,KAAK,kBAAoB,EACzB,KAAK,iBAAmB,EACxB,KAAK,UAAUA,CAAU,CAC3B,CACA,KAAKzS,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,IAAMA,EAAO,IAClB,KAAK,SAAWA,EAAO,SACvB,KAAK,gBAAkBA,EAAO,gBAC9B,KAAK,kBAAoBA,EAAO,kBAChC,KAAK,iBAAmBA,EAAO,iBACxB,IACT,CACF,EACI6yC,GAAS;AAAA;AAAA,GACTC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACf,SAASC,GAAe5yB,EAAUoP,EAAS4O,EAAc,CACvD,IAAI6U,EAAY,IAAIjyD,GACdkyD,EAAiB,IAAI/gD,EAAWghD,EAAgB,IAAIhhD,EAAWihD,EAAY,IAAI/gD,GAAWghD,EAAiB,IAAIhtD,GAAkB,CAAE,aAAcsE,EAAiB,CAAC,EAAG2oD,EAAoB,IAAIhtD,GAAwBitD,EAAiB,CAAC,EAAGC,EAAkBpV,EAAa,eAC1QqV,EAAa,CAAE,CAAC1yD,EAAS,EAAG/F,GAAU,CAACA,EAAQ,EAAG+F,GAAW,CAACvB,EAAU,EAAGA,EAAW,EACtFk0D,EAAyB,IAAItlD,GAAe,CAChD,QAAS,CACP,YAAa,CACf,EACA,SAAU,CACR,YAAa,CAAE,MAAO,IAAK,EAC3B,WAAY,CAAE,MAAO,IAAI+D,CAAU,EACnC,OAAQ,CAAE,MAAO,CAAE,CACrB,EACA,aAAc2gD,GACd,eAAgBC,EAClB,CAAC,EACKY,EAA2BD,EAAuB,MAAM,EAC9DC,EAAyB,QAAQ,gBAAkB,EACnD,IAAMC,EAAgB,IAAIh4D,GAC1Bg4D,EAAc,aACZ,WACA,IAAIj4D,GACF,IAAI,aAAa,CAAC,GAAI,GAAI,GAAK,EAAG,GAAI,GAAK,GAAI,EAAG,EAAG,CAAC,EACtD,CACF,CACF,EACA,IAAMk4D,EAAiB,IAAI1tD,GAAKytD,EAAeF,CAAsB,EAC/Dt1B,EAAQ,KACd,KAAK,QAAU,GACf,KAAK,WAAa,GAClB,KAAK,YAAc,GACnB,KAAK,KAAOl1B,GACZ,IAAI4qD,EAAgB,KAAK,KACzB,KAAK,OAAS,SAAS1I,EAAQppB,EAAOrc,EAAQ,CAG5C,GAFIyY,EAAM,UAAY,IAClBA,EAAM,aAAe,IAASA,EAAM,cAAgB,IACpDgtB,EAAO,SAAW,EAAG,OACzB,IAAM/qB,EAAsBD,EAAS,gBAAgB,EAC/C2zB,EAAiB3zB,EAAS,kBAAkB,EAC5C6B,EAAoB7B,EAAS,qBAAqB,EAClD4zB,EAAS5zB,EAAS,MACxB4zB,EAAO,YAAYpsD,EAAU,EAC7BosD,EAAO,QAAQ,MAAM,SAAS,EAAG,EAAG,EAAG,CAAC,EACxCA,EAAO,QAAQ,MAAM,QAAQ,EAAI,EACjCA,EAAO,eAAe,EAAK,EAC3B,IAAMC,EAAQH,IAAkB5hD,IAAgB,KAAK,OAASA,GACxDgiD,EAAUJ,IAAkB5hD,IAAgB,KAAK,OAASA,GAChE,QAAS6B,EAAI,EAAG4N,EAAKypC,EAAO,OAAQr3C,EAAI4N,EAAI5N,IAAK,CAC/C,IAAMw8C,GAAQnF,EAAOr3C,CAAC,EAChB+9C,EAASvB,GAAM,OACrB,GAAIuB,IAAW,OAAQ,CACrB,QAAQ,KAAK,wBAAyBvB,GAAO,gBAAgB,EAC7D,QACF,CACA,GAAIuB,EAAO,aAAe,IAASA,EAAO,cAAgB,GAAO,SACjEoB,EAAe,KAAKpB,EAAO,OAAO,EAClC,IAAMqC,GAAqBrC,EAAO,gBAAgB,EAelD,GAdAoB,EAAe,SAASiB,EAAkB,EAC1ChB,EAAc,KAAKrB,EAAO,OAAO,GAC7BoB,EAAe,EAAIM,GAAmBN,EAAe,EAAIM,KACvDN,EAAe,EAAIM,IACrBL,EAAc,EAAI,KAAK,MAAMK,EAAkBW,GAAmB,CAAC,EACnEjB,EAAe,EAAIC,EAAc,EAAIgB,GAAmB,EACxDrC,EAAO,QAAQ,EAAIqB,EAAc,GAE/BD,EAAe,EAAIM,IACrBL,EAAc,EAAI,KAAK,MAAMK,EAAkBW,GAAmB,CAAC,EACnEjB,EAAe,EAAIC,EAAc,EAAIgB,GAAmB,EACxDrC,EAAO,QAAQ,EAAIqB,EAAc,IAGjCrB,EAAO,MAAQ,MAAQmC,IAAU,IAAQC,IAAY,GAAM,CAC7D,IAAME,GAAO,KAAK,OAASliD,GAAe,CAAE,UAAW/K,GAAe,UAAWA,EAAc,EAAI,CAAC,EAChG2qD,EAAO,MAAQ,MACjBA,EAAO,IAAI,QAAQ,EAErBA,EAAO,IAAM,IAAIj/C,GAAkBqgD,EAAe,EAAGA,EAAe,EAAGkB,EAAI,EAC3EtC,EAAO,IAAI,QAAQ,KAAOvB,GAAM,KAAO,aACvCuB,EAAO,OAAO,uBAAuB,CACvC,CACA1xB,EAAS,gBAAgB0xB,EAAO,GAAG,EACnC1xB,EAAS,MAAM,EACf,IAAMi0B,GAAgBvC,EAAO,iBAAiB,EAC9C,QAASwC,GAAK,EAAGA,GAAKD,GAAeC,KAAM,CACzC,IAAMC,GAAWzC,EAAO,YAAYwC,EAAE,EACtClB,EAAU,IACRD,EAAc,EAAIoB,GAAS,EAC3BpB,EAAc,EAAIoB,GAAS,EAC3BpB,EAAc,EAAIoB,GAAS,EAC3BpB,EAAc,EAAIoB,GAAS,CAC7B,EACAP,EAAO,SAASZ,CAAS,EACzBtB,EAAO,eAAevB,GAAO+D,EAAE,EAC/BrB,EAAYnB,EAAO,WAAW,EAC9B0C,EAAaxyB,EAAOrc,EAAQmsC,EAAO,OAAQvB,GAAO,KAAK,IAAI,CAC7D,CACIuB,EAAO,qBAAuB,IAAQ,KAAK,OAAS5/C,IACtDuiD,EAAQ3C,EAAQnsC,CAAM,EAExBmsC,EAAO,YAAc,EACvB,CACAgC,EAAgB,KAAK,KACrB11B,EAAM,YAAc,GACpBgC,EAAS,gBAAgBC,EAAqB0zB,EAAgB9xB,CAAiB,CACjF,EACA,SAASwyB,EAAQ3C,EAAQnsC,EAAQ,CAC/B,IAAMyB,EAAWooB,EAAQ,OAAOqkB,CAAc,EAC1CH,EAAuB,QAAQ,cAAgB5B,EAAO,cACxD4B,EAAuB,QAAQ,YAAc5B,EAAO,YACpD6B,EAAyB,QAAQ,YAAc7B,EAAO,YACtD4B,EAAuB,YAAc,GACrCC,EAAyB,YAAc,IAErC7B,EAAO,UAAY,OACrBA,EAAO,QAAU,IAAIj/C,GAAkBqgD,EAAe,EAAGA,EAAe,CAAC,GAE3EQ,EAAuB,SAAS,YAAY,MAAQ5B,EAAO,IAAI,QAC/D4B,EAAuB,SAAS,WAAW,MAAQ5B,EAAO,QAC1D4B,EAAuB,SAAS,OAAO,MAAQ5B,EAAO,OACtD1xB,EAAS,gBAAgB0xB,EAAO,OAAO,EACvC1xB,EAAS,MAAM,EACfA,EAAS,mBAAmBza,EAAQ,KAAMyB,EAAUssC,EAAwBG,EAAgB,IAAI,EAChGF,EAAyB,SAAS,YAAY,MAAQ7B,EAAO,QAAQ,QACrE6B,EAAyB,SAAS,WAAW,MAAQ7B,EAAO,QAC5D6B,EAAyB,SAAS,OAAO,MAAQ7B,EAAO,OACxD1xB,EAAS,gBAAgB0xB,EAAO,GAAG,EACnC1xB,EAAS,MAAM,EACfA,EAAS,mBAAmBza,EAAQ,KAAMyB,EAAUusC,EAA0BE,EAAgB,IAAI,CACpG,CACA,SAASa,EAAiB3tC,EAAQ6V,EAAU2zB,EAAO/8C,EAAM,CACvD,IAAI0e,EAAS,KACPyiC,EAAiBpE,EAAM,eAAiB,GAAOxpC,EAAO,uBAAyBA,EAAO,oBAC5F,GAAI4tC,IAAmB,OACrBziC,EAASyiC,UAETziC,EAASq+B,EAAM,eAAiB,GAAO+C,EAAoBD,EACvDjzB,EAAS,sBAAwBxD,EAAS,cAAgB,IAAQ,MAAM,QAAQA,EAAS,cAAc,GAAKA,EAAS,eAAe,SAAW,GAAKA,EAAS,iBAAmBA,EAAS,oBAAsB,GAAKA,EAAS,UAAYA,EAAS,UAAY,GAAKA,EAAS,KAAOA,EAAS,UAAY,EAAG,CAC7S,IAAMg4B,EAAO1iC,EAAO,KAAM2iC,EAAOj4B,EAAS,KACtCk4B,EAAsBvB,EAAeqB,CAAI,EACzCE,IAAwB,SAC1BA,EAAsB,CAAC,EACvBvB,EAAeqB,CAAI,EAAIE,GAEzB,IAAIC,EAAiBD,EAAoBD,CAAI,EACzCE,IAAmB,SACrBA,EAAiB7iC,EAAO,MAAM,EAC9B4iC,EAAoBD,CAAI,EAAIE,EAC5Bn4B,EAAS,iBAAiB,UAAWo4B,CAAiB,GAExD9iC,EAAS6iC,CACX,CAoBF,GAlBA7iC,EAAO,QAAU0K,EAAS,QAC1B1K,EAAO,UAAY0K,EAAS,UACxBppB,IAAStB,GACXggB,EAAO,KAAO0K,EAAS,aAAe,KAAOA,EAAS,WAAaA,EAAS,KAE5E1K,EAAO,KAAO0K,EAAS,aAAe,KAAOA,EAAS,WAAa62B,EAAW72B,EAAS,IAAI,EAE7F1K,EAAO,SAAW0K,EAAS,SAC3B1K,EAAO,UAAY0K,EAAS,UAC5B1K,EAAO,IAAM0K,EAAS,IACtB1K,EAAO,YAAc0K,EAAS,YAC9B1K,EAAO,eAAiB0K,EAAS,eACjC1K,EAAO,iBAAmB0K,EAAS,iBACnC1K,EAAO,gBAAkB0K,EAAS,gBAClC1K,EAAO,kBAAoB0K,EAAS,kBACpC1K,EAAO,iBAAmB0K,EAAS,iBACnC1K,EAAO,mBAAqB0K,EAAS,mBACrC1K,EAAO,UAAY0K,EAAS,UACxB2zB,EAAM,eAAiB,IAAQr+B,EAAO,yBAA2B,GAAM,CACzE,IAAMglB,EAAqB9W,EAAS,WAAW,IAAIlO,CAAM,EACzDglB,EAAmB,MAAQqZ,CAC7B,CACA,OAAOr+B,CACT,CACA,SAASsiC,EAAaztC,EAAQpB,EAAQsvC,EAAc1E,EAAO/8C,EAAM,CAC/D,GAAIuT,EAAO,UAAY,GAAO,OAE9B,GADgBA,EAAO,OAAO,KAAKpB,EAAO,MAAM,IAChCoB,EAAO,QAAUA,EAAO,QAAUA,EAAO,YAClDA,EAAO,YAAcA,EAAO,eAAiBvT,IAAStB,MAAkB,CAAC6U,EAAO,eAAiBksC,EAAU,iBAAiBlsC,CAAM,GAAI,CACzIA,EAAO,gBAAgB,iBAAiBkuC,EAAa,mBAAoBluC,EAAO,WAAW,EAC3F,IAAMK,EAAWooB,EAAQ,OAAOzoB,CAAM,EAChC6V,EAAW7V,EAAO,SACxB,GAAI,MAAM,QAAQ6V,CAAQ,EAAG,CAC3B,IAAMrC,EAASnT,EAAS,OACxB,QAAS8tC,EAAI,EAAGC,GAAK56B,EAAO,OAAQ26B,EAAIC,GAAID,IAAK,CAC/C,IAAM16B,EAAQD,EAAO26B,CAAC,EAChBx3B,GAAgBd,EAASpC,EAAM,aAAa,EAClD,GAAIkD,IAAiBA,GAAc,QAAS,CAC1C,IAAM03B,GAAgBV,EAAiB3tC,EAAQ2W,GAAe6yB,EAAO/8C,CAAI,EACzEuT,EAAO,eAAeqZ,EAAUrZ,EAAQpB,EAAQsvC,EAAc7tC,EAAUguC,GAAe56B,CAAK,EAC5F4F,EAAS,mBAAmB60B,EAAc,KAAM7tC,EAAUguC,GAAeruC,EAAQyT,CAAK,EACtFzT,EAAO,cAAcqZ,EAAUrZ,EAAQpB,EAAQsvC,EAAc7tC,EAAUguC,GAAe56B,CAAK,CAC7F,CACF,CACF,SAAWoC,EAAS,QAAS,CAC3B,IAAMw4B,EAAgBV,EAAiB3tC,EAAQ6V,EAAU2zB,EAAO/8C,CAAI,EACpEuT,EAAO,eAAeqZ,EAAUrZ,EAAQpB,EAAQsvC,EAAc7tC,EAAUguC,EAAe,IAAI,EAC3Fh1B,EAAS,mBAAmB60B,EAAc,KAAM7tC,EAAUguC,EAAeruC,EAAQ,IAAI,EACrFA,EAAO,cAAcqZ,EAAUrZ,EAAQpB,EAAQsvC,EAAc7tC,EAAUguC,EAAe,IAAI,CAC5F,CACF,CAEF,IAAM7tC,EAAWR,EAAO,SACxB,QAAShT,EAAI,EAAGC,EAAIuT,EAAS,OAAQxT,EAAIC,EAAGD,IAC1CygD,EAAajtC,EAASxT,CAAC,EAAG4R,EAAQsvC,EAAc1E,EAAO/8C,CAAI,CAE/D,CACA,SAASwhD,EAAkBnhD,EAAO,CACfA,EAAM,OACd,oBAAoB,UAAWmhD,CAAiB,EACzD,QAAW/iC,KAAMshC,EAAgB,CAC/B,IAAMhgC,EAAQggC,EAAethC,CAAE,EACzBojC,EAAOxhD,EAAM,OAAO,KACtBwhD,KAAQ9hC,IACaA,EAAM8hC,CAAI,EAClB,QAAQ,EACvB,OAAO9hC,EAAM8hC,CAAI,EAErB,CACF,CACF,CACA,IAAIC,GAAgB,CAClB,CAAC5tD,EAAU,EAAG7N,GACd,CAAC6J,EAAS,EAAGrC,GACb,CAACpB,EAAU,EAAGiI,GACd,CAACtE,EAAc,EAAGrC,GAClB,CAAC1H,EAAW,EAAG6N,GACf,CAACrG,EAAY,EAAGqC,GAChB,CAACwE,EAAa,EAAGjI,GACjB,CAACsB,EAAiB,EAAGqC,EACvB,EACA,SAAS2xD,GAAWh4C,EAAI,CACtB,SAASi4C,GAAc,CACrB,IAAIC,EAAS,GACPt3C,GAAQ,IAAI9L,GACdqjD,EAAmB,KACjBC,GAAoB,IAAItjD,GAAQ,EAAG,EAAG,EAAG,CAAC,EAChD,MAAO,CACL,QAAS,SAASujD,GAAW,CACvBF,IAAqBE,IAAa,CAACH,IACrCl4C,EAAG,UAAUq4C,GAAWA,GAAWA,GAAWA,EAAS,EACvDF,EAAmBE,GAEvB,EACA,UAAW,SAASC,GAAM,CACxBJ,EAASI,EACX,EACA,SAAU,SAAS35C,GAAGT,GAAGrE,GAAGD,GAAGs4B,GAAoB,CAC7CA,KAAuB,KACzBvzB,IAAK/E,GACLsE,IAAKtE,GACLC,IAAKD,IAEPgH,GAAM,IAAIjC,GAAGT,GAAGrE,GAAGD,EAAC,EAChBw+C,GAAkB,OAAOx3C,EAAK,IAAM,KACtCZ,EAAG,WAAWrB,GAAGT,GAAGrE,GAAGD,EAAC,EACxBw+C,GAAkB,KAAKx3C,EAAK,EAEhC,EACA,MAAO,UAAW,CAChBs3C,EAAS,GACTC,EAAmB,KACnBC,GAAkB,IAAI,GAAI,EAAG,EAAG,CAAC,CACnC,CACF,CACF,CACA,SAASG,GAAc,CACrB,IAAIL,EAAS,GACTM,GAAW,GACXC,EAAmB,KACnBC,GAAmB,KACnBC,GAAoB,KACxB,MAAO,CACL,YAAa,SAASvhD,GAAO,CAC3BohD,GAAWphD,EACb,EACA,QAAS,SAASwhD,GAAW,CACvBA,GACFC,GAAO74C,EAAG,UAAU,EAEpB84C,GAAQ94C,EAAG,UAAU,CAEzB,EACA,QAAS,SAAS+4C,GAAW,CACvBN,IAAqBM,IAAa,CAACb,IACrCl4C,EAAG,UAAU+4C,EAAS,EACtBN,EAAmBM,GAEvB,EACA,QAAS,SAASC,GAAW,CAE3B,GADIR,KAAUQ,GAAYjB,GAAciB,EAAS,GAC7CN,KAAqBM,GAAW,CAClC,OAAQA,GAAW,CACjB,KAAK7uD,GACH6V,EAAG,UAAUA,EAAG,KAAK,EACrB,MACF,KAAK1jB,GACH0jB,EAAG,UAAUA,EAAG,MAAM,EACtB,MACF,KAAK7Z,GACH6Z,EAAG,UAAUA,EAAG,IAAI,EACpB,MACF,KAAK3Z,GACH2Z,EAAG,UAAUA,EAAG,MAAM,EACtB,MACF,KAAKtd,GACHsd,EAAG,UAAUA,EAAG,KAAK,EACrB,MACF,KAAKhc,GACHgc,EAAG,UAAUA,EAAG,MAAM,EACtB,MACF,KAAKlc,GACHkc,EAAG,UAAUA,EAAG,OAAO,EACvB,MACF,KAAKrV,GACHqV,EAAG,UAAUA,EAAG,QAAQ,EACxB,MACF,QACEA,EAAG,UAAUA,EAAG,MAAM,CAC1B,CACA04C,GAAmBM,EACrB,CACF,EACA,UAAW,SAASV,GAAM,CACxBJ,EAASI,EACX,EACA,SAAU,SAASn0C,GAAO,CACpBw0C,KAAsBx0C,KACxBnE,EAAG,WAAWmE,EAAK,EACnBw0C,GAAoBx0C,GAExB,EACA,MAAO,UAAW,CAChB+zC,EAAS,GACTO,EAAmB,KACnBC,GAAmB,KACnBC,GAAoB,IACtB,CACF,CACF,CACA,SAASM,GAAgB,CACvB,IAAIf,EAAS,GACTgB,GAAqB,KACrBC,EAAqB,KACrBC,GAAoB,KACpBC,GAAyB,KACzBC,GAAqB,KACrBC,GAAsB,KACtBC,GAAsB,KACtBC,GAAsB,KAC1B,MAAO,CACL,QAAS,SAASC,GAAa,CACxBxB,IACCwB,GACFb,GAAO74C,EAAG,YAAY,EAEtB84C,GAAQ94C,EAAG,YAAY,EAG7B,EACA,QAAS,SAAS25C,GAAa,CACzBT,KAAuBS,IAAe,CAACzB,IACzCl4C,EAAG,YAAY25C,EAAW,EAC1BT,GAAqBS,GAEzB,EACA,QAAS,SAASC,GAAaC,GAAYF,GAAa,EAClDR,IAAuBS,IAAeR,KAAsBS,IAAcR,KAA2BM,MACvG35C,EAAG,YAAY45C,GAAaC,GAAYF,EAAW,EACnDR,EAAqBS,GACrBR,GAAoBS,GACpBR,GAAyBM,GAE7B,EACA,MAAO,SAASG,GAAaC,GAAcC,GAAc,EACnDV,KAAuBQ,IAAeP,KAAwBQ,IAAgBP,KAAwBQ,MACxGh6C,EAAG,UAAU85C,GAAaC,GAAcC,EAAY,EACpDV,GAAqBQ,GACrBP,GAAsBQ,GACtBP,GAAsBQ,GAE1B,EACA,UAAW,SAAS1B,GAAM,CACxBJ,EAASI,EACX,EACA,SAAU,SAASpzB,GAAS,CACtBu0B,KAAwBv0B,KAC1BllB,EAAG,aAAaklB,EAAO,EACvBu0B,GAAsBv0B,GAE1B,EACA,MAAO,UAAW,CAChBgzB,EAAS,GACTgB,GAAqB,KACrBC,EAAqB,KACrBC,GAAoB,KACpBC,GAAyB,KACzBC,GAAqB,KACrBC,GAAsB,KACtBC,GAAsB,KACtBC,GAAsB,IACxB,CACF,CACF,CACA,IAAMQ,EAAc,IAAIhC,EAClBiC,EAAc,IAAI3B,EAClB4B,EAAgB,IAAIlB,EACpBmB,EAA8B,IAAI,QAClCC,EAAgC,IAAI,QACtCC,EAAsB,CAAC,EACvBC,EAA2B,CAAC,EAC5BC,EAAqC,IAAI,QACzCC,EAAqB,CAAC,EACtBC,EAAiB,KACjBC,EAAyB,GACzBC,EAAkB,KAClBC,EAAuB,KACvBC,EAAkB,KAClBC,EAAkB,KAClBC,EAA4B,KAC5BC,EAAuB,KACvBC,EAAuB,KACvBC,EAAoB,IAAIj8D,GAAM,EAAG,EAAG,CAAC,EACrCk8D,EAAoB,EACpBC,EAA2B,GAC3BC,EAAmB,KACnBC,EAAkB,KAClBC,EAAmB,KACnBC,EAA6B,KAC7BC,EAA4B,KAC1BvjB,EAAcn4B,EAAG,aAAaA,EAAG,gCAAgC,EACnE27C,EAAqB,GACrBxb,EAAU,EACRyb,GAAY57C,EAAG,aAAaA,EAAG,OAAO,EACxC47C,GAAU,QAAQ,OAAO,IAAM,IACjCzb,EAAU,WAAW,cAAc,KAAKyb,EAAS,EAAE,CAAC,CAAC,EACrDD,EAAqBxb,GAAW,GACvByb,GAAU,QAAQ,WAAW,IAAM,KAC5Czb,EAAU,WAAW,kBAAkB,KAAKyb,EAAS,EAAE,CAAC,CAAC,EACzDD,EAAqBxb,GAAW,GAElC,IAAI0b,EAAqB,KACrBC,GAAuB,CAAC,EACtBC,GAAe/7C,EAAG,aAAaA,EAAG,WAAW,EAC7Cg8C,GAAgBh8C,EAAG,aAAaA,EAAG,QAAQ,EAC3Ci8C,GAAiB,IAAInnD,GAAQ,EAAE,UAAUinD,EAAY,EACrDG,EAAkB,IAAIpnD,GAAQ,EAAE,UAAUknD,EAAa,EAC7D,SAASG,GAAclmD,EAAMkL,GAAQ+C,EAAOk4C,GAAY,CACtD,IAAM16C,GAAO,IAAI,WAAW,CAAC,EACvBuC,GAAUjE,EAAG,cAAc,EACjCA,EAAG,YAAY/J,EAAMgO,EAAO,EAC5BjE,EAAG,cAAc/J,EAAM+J,EAAG,mBAAoBA,EAAG,OAAO,EACxDA,EAAG,cAAc/J,EAAM+J,EAAG,mBAAoBA,EAAG,OAAO,EACxD,QAASxJ,GAAI,EAAGA,GAAI0N,EAAO1N,KACrBP,IAAS+J,EAAG,YAAc/J,IAAS+J,EAAG,iBACxCA,EAAG,WAAWmB,GAAQ,EAAGnB,EAAG,KAAM,EAAG,EAAGo8C,GAAY,EAAGp8C,EAAG,KAAMA,EAAG,cAAe0B,EAAI,EAEtF1B,EAAG,WAAWmB,GAAS3K,GAAG,EAAGwJ,EAAG,KAAM,EAAG,EAAG,EAAGA,EAAG,KAAMA,EAAG,cAAe0B,EAAI,EAGlF,OAAOuC,EACT,CACA,IAAMo4C,GAAgB,CAAC,EACvBA,GAAcr8C,EAAG,UAAU,EAAIm8C,GAAcn8C,EAAG,WAAYA,EAAG,WAAY,CAAC,EAC5Eq8C,GAAcr8C,EAAG,gBAAgB,EAAIm8C,GAAcn8C,EAAG,iBAAkBA,EAAG,4BAA6B,CAAC,EACzGq8C,GAAcr8C,EAAG,gBAAgB,EAAIm8C,GAAcn8C,EAAG,iBAAkBA,EAAG,iBAAkB,EAAG,CAAC,EACjGq8C,GAAcr8C,EAAG,UAAU,EAAIm8C,GAAcn8C,EAAG,WAAYA,EAAG,WAAY,EAAG,CAAC,EAC/Ei6C,EAAY,SAAS,EAAG,EAAG,EAAG,CAAC,EAC/BC,EAAY,SAAS,CAAC,EACtBC,EAAc,SAAS,CAAC,EACxBtB,GAAO74C,EAAG,UAAU,EACpBk6C,EAAY,QAAQ7zD,EAAc,EAClCi2D,GAAa,EAAK,EAClBC,EAAYj8D,EAAY,EACxBu4D,GAAO74C,EAAG,SAAS,EACnBw8C,GAAYnyD,EAAU,EACtB,SAASwuD,GAAOnkC,EAAI,CACd4lC,EAAoB5lC,CAAE,IAAM,KAC9B1U,EAAG,OAAO0U,CAAE,EACZ4lC,EAAoB5lC,CAAE,EAAI,GAE9B,CACA,SAASokC,GAAQpkC,EAAI,CACf4lC,EAAoB5lC,CAAE,IAAM,KAC9B1U,EAAG,QAAQ0U,CAAE,EACb4lC,EAAoB5lC,CAAE,EAAI,GAE9B,CACA,SAAS+nC,GAAgBt7C,EAAQu7C,GAAa,CAC5C,OAAInC,EAAyBp5C,CAAM,IAAMu7C,IACvC18C,EAAG,gBAAgBmB,EAAQu7C,EAAW,EACtCnC,EAAyBp5C,CAAM,EAAIu7C,GAC/Bv7C,IAAWnB,EAAG,mBAChBu6C,EAAyBv6C,EAAG,WAAW,EAAI08C,IAEzCv7C,IAAWnB,EAAG,cAChBu6C,EAAyBv6C,EAAG,gBAAgB,EAAI08C,IAE3C,IAEF,EACT,CACA,SAASC,GAAY14B,EAAcy4B,GAAa,CAC9C,IAAIE,EAAenC,EACfxmB,GAAc,GAClB,GAAIhQ,EAAc,CAChB24B,EAAepC,EAAmB,IAAIkC,EAAW,EAC7CE,IAAiB,SACnBA,EAAe,CAAC,EAChBpC,EAAmB,IAAIkC,GAAaE,CAAY,GAElD,IAAMjnC,GAAWsO,EAAa,SAC9B,GAAI24B,EAAa,SAAWjnC,GAAS,QAAUinC,EAAa,CAAC,IAAM58C,EAAG,kBAAmB,CACvF,QAASxJ,GAAI,EAAG4N,GAAKuR,GAAS,OAAQnf,GAAI4N,GAAI5N,KAC5ComD,EAAapmD,EAAC,EAAIwJ,EAAG,kBAAoBxJ,GAE3ComD,EAAa,OAASjnC,GAAS,OAC/Bse,GAAc,EAChB,CACF,MACM2oB,EAAa,CAAC,IAAM58C,EAAG,OACzB48C,EAAa,CAAC,EAAI58C,EAAG,KACrBi0B,GAAc,IAGdA,IACFj0B,EAAG,YAAY48C,CAAY,CAE/B,CACA,SAASC,GAAWhpB,EAAS,CAC3B,OAAI6mB,IAAmB7mB,GACrB7zB,EAAG,WAAW6zB,CAAO,EACrB6mB,EAAiB7mB,EACV,IAEF,EACT,CACA,IAAMipB,GAAe,CACnB,CAAC/gE,EAAW,EAAGikB,EAAG,SAClB,CAACpN,EAAgB,EAAGoN,EAAG,cACvB,CAAC5P,EAAuB,EAAG4P,EAAG,qBAChC,EACA88C,GAAavzD,EAAW,EAAIyW,EAAG,IAC/B88C,GAAan0D,EAAW,EAAIqX,EAAG,IAC/B,IAAM+8C,EAAa,CACjB,CAAClnD,EAAU,EAAGmK,EAAG,KACjB,CAAC9U,EAAS,EAAG8U,EAAG,IAChB,CAAC7N,EAAc,EAAG6N,EAAG,UACrB,CAAC/N,EAAc,EAAG+N,EAAG,UACrB,CAAC9N,EAAsB,EAAG8N,EAAG,mBAC7B,CAAC7d,EAAc,EAAG6d,EAAG,UACrB,CAAC9d,EAAc,EAAG8d,EAAG,UACrB,CAACxU,EAAsB,EAAGwU,EAAG,oBAC7B,CAACzU,EAAsB,EAAGyU,EAAG,oBAC7B,CAAC1U,EAAsB,EAAG0U,EAAG,oBAC7B,CAAC3U,EAAsB,EAAG2U,EAAG,oBAC7B,CAACrgB,EAAmB,EAAGqgB,EAAG,eAC1B,CAAC5U,EAA2B,EAAG4U,EAAG,yBAClC,CAACtgB,EAAmB,EAAGsgB,EAAG,eAC1B,CAAC7U,EAA2B,EAAG6U,EAAG,wBACpC,EACA,SAASw8C,GAAYQ,EAAUC,GAAeC,EAAUC,GAAUC,GAAoBC,GAAeC,GAAeC,GAAYC,GAAYtrB,GAAoB,CAC9J,GAAI8qB,IAAa3yD,GAAY,CACvBswD,IAA2B,KAC7B7B,GAAQ94C,EAAG,KAAK,EAChB26C,EAAyB,IAE3B,MACF,CAKA,GAJIA,IAA2B,KAC7B9B,GAAO74C,EAAG,KAAK,EACf26C,EAAyB,IAEvBqC,IAAap8D,GAAgB,CAC/B,GAAIo8D,IAAapC,GAAmB1oB,KAAuBmpB,EAA0B,CAMnF,IALIR,IAAyB9+D,IAAei/D,IAA8Bj/D,MACxEikB,EAAG,cAAcA,EAAG,QAAQ,EAC5B66C,EAAuB9+D,GACvBi/D,EAA4Bj/D,IAE1Bm2C,GACF,OAAQ8qB,EAAU,CAChB,KAAKvyD,GACHuV,EAAG,kBAAkBA,EAAG,IAAKA,EAAG,oBAAqBA,EAAG,IAAKA,EAAG,mBAAmB,EACnF,MACF,KAAK9jB,GACH8jB,EAAG,UAAUA,EAAG,IAAKA,EAAG,GAAG,EAC3B,MACF,KAAKnN,GACHmN,EAAG,kBAAkBA,EAAG,KAAMA,EAAG,oBAAqBA,EAAG,KAAMA,EAAG,GAAG,EACrE,MACF,KAAKtW,GACHsW,EAAG,kBAAkBA,EAAG,KAAMA,EAAG,UAAWA,EAAG,KAAMA,EAAG,SAAS,EACjE,MACF,QACE,QAAQ,MAAM,uCAAwCg9C,CAAQ,EAC9D,KACJ,KAEA,QAAQA,EAAU,CAChB,KAAKvyD,GACHuV,EAAG,kBAAkBA,EAAG,UAAWA,EAAG,oBAAqBA,EAAG,IAAKA,EAAG,mBAAmB,EACzF,MACF,KAAK9jB,GACH8jB,EAAG,UAAUA,EAAG,UAAWA,EAAG,GAAG,EACjC,MACF,KAAKnN,GACHmN,EAAG,kBAAkBA,EAAG,KAAMA,EAAG,oBAAqBA,EAAG,KAAMA,EAAG,GAAG,EACrE,MACF,KAAKtW,GACHsW,EAAG,UAAUA,EAAG,KAAMA,EAAG,SAAS,EAClC,MACF,QACE,QAAQ,MAAM,uCAAwCg9C,CAAQ,EAC9D,KACJ,CAEFlC,EAAkB,KAClBC,EAAkB,KAClBE,EAAuB,KACvBC,EAAuB,KACvBC,EAAkB,IAAI,EAAG,EAAG,CAAC,EAC7BC,EAAoB,EACpBR,EAAkBoC,EAClB3B,EAA2BnpB,EAC7B,CACA,MACF,CACAkrB,GAAqBA,IAAsBH,GAC3CI,GAAgBA,IAAiBH,EACjCI,GAAgBA,IAAiBH,IAC7BF,KAAkBpC,GAAwBuC,KAAuBpC,KACnEh7C,EAAG,sBAAsB88C,GAAaG,EAAa,EAAGH,GAAaM,EAAkB,CAAC,EACtFvC,EAAuBoC,GACvBjC,EAA4BoC,KAE1BF,IAAapC,GAAmBqC,KAAapC,GAAmBsC,KAAkBpC,GAAwBqC,KAAkBpC,KAC9Hl7C,EAAG,kBAAkB+8C,EAAWG,CAAQ,EAAGH,EAAWI,EAAQ,EAAGJ,EAAWM,EAAa,EAAGN,EAAWO,EAAa,CAAC,EACrHxC,EAAkBoC,EAClBnC,EAAkBoC,GAClBlC,EAAuBoC,GACvBnC,EAAuBoC,KAErBC,GAAW,OAAOpC,CAAiB,IAAM,IAASqC,KAAepC,KACnEp7C,EAAG,WAAWu9C,GAAW,EAAGA,GAAW,EAAGA,GAAW,EAAGC,EAAU,EAClErC,EAAkB,KAAKoC,EAAU,EACjCnC,EAAoBoC,IAEtB5C,EAAkBoC,EAClB3B,EAA2B,EAC7B,CACA,SAASoC,GAAYp+B,EAAUq+B,GAAa,CAC1Cr+B,EAAS,OAASp9B,GAAa62D,GAAQ94C,EAAG,SAAS,EAAI64C,GAAO74C,EAAG,SAAS,EAC1E,IAAI29C,EAAYt+B,EAAS,OAAS5hC,GAC9BigE,KAAaC,EAAY,CAACA,GAC9BrB,GAAaqB,CAAS,EACtBt+B,EAAS,WAAa50B,IAAkB40B,EAAS,cAAgB,GAAQm9B,GAAYnyD,EAAU,EAAImyD,GAAYn9B,EAAS,SAAUA,EAAS,cAAeA,EAAS,SAAUA,EAAS,SAAUA,EAAS,mBAAoBA,EAAS,cAAeA,EAAS,cAAeA,EAAS,WAAYA,EAAS,WAAYA,EAAS,kBAAkB,EAClV66B,EAAY,QAAQ76B,EAAS,SAAS,EACtC66B,EAAY,QAAQ76B,EAAS,SAAS,EACtC66B,EAAY,QAAQ76B,EAAS,UAAU,EACvC46B,EAAY,QAAQ56B,EAAS,UAAU,EACvC,IAAMu+B,GAAev+B,EAAS,aAC9B86B,EAAc,QAAQyD,EAAY,EAC9BA,KACFzD,EAAc,QAAQ96B,EAAS,gBAAgB,EAC/C86B,EAAc,QAAQ96B,EAAS,YAAaA,EAAS,WAAYA,EAAS,eAAe,EACzF86B,EAAc,MAAM96B,EAAS,YAAaA,EAAS,aAAcA,EAAS,YAAY,GAExFw+B,GAAiBx+B,EAAS,cAAeA,EAAS,oBAAqBA,EAAS,kBAAkB,EAClGA,EAAS,kBAAoB,GAAOw5B,GAAO74C,EAAG,wBAAwB,EAAI84C,GAAQ94C,EAAG,wBAAwB,CAC/G,CACA,SAASs8C,GAAaqB,EAAW,CAC3BrC,IAAqBqC,IACnBA,EACF39C,EAAG,UAAUA,EAAG,EAAE,EAElBA,EAAG,UAAUA,EAAG,GAAG,EAErBs7C,EAAmBqC,EAEvB,CACA,SAASpB,EAAYuB,EAAU,CACzBA,IAAar9D,IACfo4D,GAAO74C,EAAG,SAAS,EACf89C,IAAavC,IACXuC,IAAax9D,GACf0f,EAAG,SAASA,EAAG,IAAI,EACV89C,IAAav9D,GACtByf,EAAG,SAASA,EAAG,KAAK,EAEpBA,EAAG,SAASA,EAAG,cAAc,IAIjC84C,GAAQ94C,EAAG,SAAS,EAEtBu7C,EAAkBuC,CACpB,CACA,SAASC,GAAaj6C,EAAO,CACvBA,IAAU03C,IACRG,GAAoB37C,EAAG,UAAU8D,CAAK,EAC1C03C,EAAmB13C,EAEvB,CACA,SAAS+5C,GAAiBG,EAAeC,GAAQlY,EAAO,CAClDiY,GACFnF,GAAO74C,EAAG,mBAAmB,GACzBy7C,IAA+BwC,IAAUvC,IAA8B3V,KACzE/lC,EAAG,cAAci+C,GAAQlY,CAAK,EAC9B0V,EAA6BwC,GAC7BvC,EAA4B3V,IAG9B+S,GAAQ94C,EAAG,mBAAmB,CAElC,CACA,SAASk+C,GAAeC,EAAa,CAC/BA,EACFtF,GAAO74C,EAAG,YAAY,EAEtB84C,GAAQ94C,EAAG,YAAY,CAE3B,CACA,SAASo+C,EAAcC,EAAW,CAC5BA,IAAc,SAAQA,EAAYr+C,EAAG,SAAWm4B,EAAc,GAC9D0jB,IAAuBwC,IACzBr+C,EAAG,cAAcq+C,CAAS,EAC1BxC,EAAqBwC,EAEzB,CACA,SAASC,EAAYC,EAAWC,GAAcH,EAAW,CACnDA,IAAc,SACZxC,IAAuB,KACzBwC,EAAYr+C,EAAG,SAAWm4B,EAAc,EAExCkmB,EAAYxC,GAGhB,IAAI4C,GAAe3C,GAAqBuC,CAAS,EAC7CI,KAAiB,SACnBA,GAAe,CAAE,KAAM,OAAQ,QAAS,MAAO,EAC/C3C,GAAqBuC,CAAS,EAAII,KAEhCA,GAAa,OAASF,GAAaE,GAAa,UAAYD,MAC1D3C,IAAuBwC,IACzBr+C,EAAG,cAAcq+C,CAAS,EAC1BxC,EAAqBwC,GAEvBr+C,EAAG,YAAYu+C,EAAWC,IAAgBnC,GAAckC,CAAS,CAAC,EAClEE,GAAa,KAAOF,EACpBE,GAAa,QAAUD,GAE3B,CACA,SAASE,GAAgB,CACvB,IAAMD,EAAe3C,GAAqBD,CAAkB,EACxD4C,IAAiB,QAAUA,EAAa,OAAS,SACnDz+C,EAAG,YAAYy+C,EAAa,KAAM,IAAI,EACtCA,EAAa,KAAO,OACpBA,EAAa,QAAU,OAE3B,CACA,SAASE,GAAuB,CAC9B,GAAI,CACF3+C,EAAG,qBAAqB,MAAMA,EAAI,SAAS,CAC7C,OAAS4+C,EAAO,CACd,QAAQ,MAAM,oBAAqBA,CAAK,CAC1C,CACF,CACA,SAASC,GAAuB,CAC9B,GAAI,CACF7+C,EAAG,qBAAqB,MAAMA,EAAI,SAAS,CAC7C,OAAS4+C,EAAO,CACd,QAAQ,MAAM,oBAAqBA,CAAK,CAC1C,CACF,CACA,SAASE,GAAgB,CACvB,GAAI,CACF9+C,EAAG,cAAc,MAAMA,EAAI,SAAS,CACtC,OAAS4+C,EAAO,CACd,QAAQ,MAAM,oBAAqBA,CAAK,CAC1C,CACF,CACA,SAASG,IAAgB,CACvB,GAAI,CACF/+C,EAAG,cAAc,MAAMA,EAAI,SAAS,CACtC,OAAS4+C,EAAO,CACd,QAAQ,MAAM,oBAAqBA,CAAK,CAC1C,CACF,CACA,SAASI,IAA0B,CACjC,GAAI,CACFh/C,EAAG,wBAAwB,MAAMA,EAAI,SAAS,CAChD,OAAS4+C,EAAO,CACd,QAAQ,MAAM,oBAAqBA,CAAK,CAC1C,CACF,CACA,SAASK,IAA0B,CACjC,GAAI,CACFj/C,EAAG,wBAAwB,MAAMA,EAAI,SAAS,CAChD,OAAS4+C,EAAO,CACd,QAAQ,MAAM,oBAAqBA,CAAK,CAC1C,CACF,CACA,SAASM,IAAe,CACtB,GAAI,CACFl/C,EAAG,aAAa,MAAMA,EAAI,SAAS,CACrC,OAAS4+C,EAAO,CACd,QAAQ,MAAM,oBAAqBA,CAAK,CAC1C,CACF,CACA,SAASO,IAAe,CACtB,GAAI,CACFn/C,EAAG,aAAa,MAAMA,EAAI,SAAS,CACrC,OAAS4+C,EAAO,CACd,QAAQ,MAAM,oBAAqBA,CAAK,CAC1C,CACF,CACA,SAASQ,GAAa,CACpB,GAAI,CACFp/C,EAAG,WAAW,MAAMA,EAAI,SAAS,CACnC,OAAS4+C,EAAO,CACd,QAAQ,MAAM,oBAAqBA,CAAK,CAC1C,CACF,CACA,SAASS,IAAa,CACpB,GAAI,CACFr/C,EAAG,WAAW,MAAMA,EAAI,SAAS,CACnC,OAAS4+C,EAAO,CACd,QAAQ,MAAM,oBAAqBA,CAAK,CAC1C,CACF,CACA,SAASU,GAAQC,EAAU,CACrBtD,GAAe,OAAOsD,CAAQ,IAAM,KACtCv/C,EAAG,QAAQu/C,EAAS,EAAGA,EAAS,EAAGA,EAAS,EAAGA,EAAS,CAAC,EACzDtD,GAAe,KAAKsD,CAAQ,EAEhC,CACA,SAASvI,GAASwI,EAAW,CACvBtD,EAAgB,OAAOsD,CAAS,IAAM,KACxCx/C,EAAG,SAASw/C,EAAU,EAAGA,EAAU,EAAGA,EAAU,EAAGA,EAAU,CAAC,EAC9DtD,EAAgB,KAAKsD,CAAS,EAElC,CACA,SAASC,GAAiBC,EAAe7rB,GAAS,CAChD,IAAI1xB,EAAUk4C,EAAc,IAAIxmB,EAAO,EACnC1xB,IAAY,SACdA,EAA0B,IAAI,QAC9Bk4C,EAAc,IAAIxmB,GAAS1xB,CAAO,GAEpC,IAAIw9C,GAAax9C,EAAQ,IAAIu9C,CAAa,EACtCC,KAAe,SACjBA,GAAa3/C,EAAG,qBAAqB6zB,GAAS6rB,EAAc,IAAI,EAChEv9C,EAAQ,IAAIu9C,EAAeC,EAAU,EAEzC,CACA,SAASC,GAAoBF,EAAe7rB,GAAS,CAEnD,IAAM8rB,GADUtF,EAAc,IAAIxmB,EAAO,EACd,IAAI6rB,CAAa,EACxCtF,EAAY,IAAIvmB,EAAO,IAAM8rB,KAC/B3/C,EAAG,oBAAoB6zB,GAAS8rB,GAAYD,EAAc,mBAAmB,EAC7EtF,EAAY,IAAIvmB,GAAS8rB,EAAU,EAEvC,CACA,SAAS3pB,IAAQ,CACfh2B,EAAG,QAAQA,EAAG,KAAK,EACnBA,EAAG,QAAQA,EAAG,SAAS,EACvBA,EAAG,QAAQA,EAAG,UAAU,EACxBA,EAAG,QAAQA,EAAG,mBAAmB,EACjCA,EAAG,QAAQA,EAAG,YAAY,EAC1BA,EAAG,QAAQA,EAAG,YAAY,EAC1BA,EAAG,QAAQA,EAAG,wBAAwB,EACtCA,EAAG,cAAcA,EAAG,QAAQ,EAC5BA,EAAG,UAAUA,EAAG,IAAKA,EAAG,IAAI,EAC5BA,EAAG,kBAAkBA,EAAG,IAAKA,EAAG,KAAMA,EAAG,IAAKA,EAAG,IAAI,EACrDA,EAAG,WAAW,EAAG,EAAG,EAAG,CAAC,EACxBA,EAAG,UAAU,GAAM,GAAM,GAAM,EAAI,EACnCA,EAAG,WAAW,EAAG,EAAG,EAAG,CAAC,EACxBA,EAAG,UAAU,EAAI,EACjBA,EAAG,UAAUA,EAAG,IAAI,EACpBA,EAAG,WAAW,CAAC,EACfA,EAAG,YAAY,UAAU,EACzBA,EAAG,YAAYA,EAAG,OAAQ,EAAG,UAAU,EACvCA,EAAG,UAAUA,EAAG,KAAMA,EAAG,KAAMA,EAAG,IAAI,EACtCA,EAAG,aAAa,CAAC,EACjBA,EAAG,SAASA,EAAG,IAAI,EACnBA,EAAG,UAAUA,EAAG,GAAG,EACnBA,EAAG,cAAc,EAAG,CAAC,EACrBA,EAAG,cAAcA,EAAG,QAAQ,EAC5BA,EAAG,gBAAgBA,EAAG,YAAa,IAAI,EACvCA,EAAG,gBAAgBA,EAAG,iBAAkB,IAAI,EAC5CA,EAAG,gBAAgBA,EAAG,iBAAkB,IAAI,EAC5CA,EAAG,WAAW,IAAI,EAClBA,EAAG,UAAU,CAAC,EACdA,EAAG,QAAQ,EAAG,EAAGA,EAAG,OAAO,MAAOA,EAAG,OAAO,MAAM,EAClDA,EAAG,SAAS,EAAG,EAAGA,EAAG,OAAO,MAAOA,EAAG,OAAO,MAAM,EACnDs6C,EAAsB,CAAC,EACvBuB,EAAqB,KACrBC,GAAuB,CAAC,EACxBvB,EAA2B,CAAC,EAC5BC,EAAqC,IAAI,QACzCC,EAAqB,CAAC,EACtBC,EAAiB,KACjBC,EAAyB,GACzBC,EAAkB,KAClBC,EAAuB,KACvBC,EAAkB,KAClBC,EAAkB,KAClBC,EAA4B,KAC5BC,EAAuB,KACvBC,EAAuB,KACvBC,EAAoB,IAAIj8D,GAAM,EAAG,EAAG,CAAC,EACrCk8D,EAAoB,EACpBC,EAA2B,GAC3BC,EAAmB,KACnBC,EAAkB,KAClBC,EAAmB,KACnBC,EAA6B,KAC7BC,EAA4B,KAC5BO,GAAe,IAAI,EAAG,EAAGj8C,EAAG,OAAO,MAAOA,EAAG,OAAO,MAAM,EAC1Dk8C,EAAgB,IAAI,EAAG,EAAGl8C,EAAG,OAAO,MAAOA,EAAG,OAAO,MAAM,EAC3Di6C,EAAY,MAAM,EAClBC,EAAY,MAAM,EAClBC,EAAc,MAAM,CACtB,CACA,MAAO,CACL,QAAS,CACP,MAAOF,EACP,MAAOC,EACP,QAASC,CACX,EACA,OAAAtB,GACA,QAAAC,GACA,gBAAA2D,GACA,YAAAE,GACA,WAAAE,GACA,YAAAL,GACA,YAAAiB,GACA,aAAAnB,GACA,YAAAC,EACA,aAAAwB,GACA,iBAAAF,GACA,eAAAK,GACA,cAAAE,EACA,YAAAE,EACA,cAAAI,EACA,qBAAAC,EACA,qBAAAE,EACA,WAAAO,EACA,WAAAC,GACA,iBAAAI,GACA,oBAAAG,GACA,aAAAV,GACA,aAAAC,GACA,cAAAL,EACA,cAAAC,GACA,wBAAAC,GACA,wBAAAC,GACA,QAAAK,GACA,SAAAtI,GACA,MAAAhhB,EACF,CACF,CACA,SAAS6pB,GAAQ57C,EAASqf,EAAS,CACjC,IAAMw8B,EAAc77C,EAAQ,OAASA,EAAQ,MAAM,MAAQA,EAAQ,MAAM,MAAQA,EAAQ,MAAM,OAAS,EACxG,OAAI67C,EAAcx8B,GAChBrf,EAAQ,OAAO,EAAI,EACnBA,EAAQ,OAAO,EAAI67C,EAAcx8B,EACjCrf,EAAQ,OAAO,EAAI,EACnBA,EAAQ,OAAO,GAAK,EAAIA,EAAQ,OAAO,GAAK,IAE5CA,EAAQ,OAAO,EAAIqf,EAAUw8B,EAC7B77C,EAAQ,OAAO,EAAI,EACnBA,EAAQ,OAAO,GAAK,EAAIA,EAAQ,OAAO,GAAK,EAC5CA,EAAQ,OAAO,EAAI,GAEdA,CACT,CACA,SAAS87C,GAAM97C,EAASqf,EAAS,CAC/B,IAAMw8B,EAAc77C,EAAQ,OAASA,EAAQ,MAAM,MAAQA,EAAQ,MAAM,MAAQA,EAAQ,MAAM,OAAS,EACxG,OAAI67C,EAAcx8B,GAChBrf,EAAQ,OAAO,EAAIqf,EAAUw8B,EAC7B77C,EAAQ,OAAO,EAAI,EACnBA,EAAQ,OAAO,GAAK,EAAIA,EAAQ,OAAO,GAAK,EAC5CA,EAAQ,OAAO,EAAI,IAEnBA,EAAQ,OAAO,EAAI,EACnBA,EAAQ,OAAO,EAAI67C,EAAcx8B,EACjCrf,EAAQ,OAAO,EAAI,EACnBA,EAAQ,OAAO,GAAK,EAAIA,EAAQ,OAAO,GAAK,GAEvCA,CACT,CACA,SAAS+7C,GAAK/7C,EAAS,CACrB,OAAAA,EAAQ,OAAO,EAAI,EACnBA,EAAQ,OAAO,EAAI,EACnBA,EAAQ,OAAO,EAAI,EACnBA,EAAQ,OAAO,EAAI,EACZA,CACT,CACA,SAASg8C,GAAcn8C,EAAOC,EAAQvB,EAAQvM,EAAM,CAClD,IAAMiqD,EAAiBC,GAAyBlqD,CAAI,EACpD,OAAQuM,EAAQ,CAEd,KAAKpmB,GACH,OAAO0nB,EAAQC,EACjB,KAAK5b,GACH,OAAO2b,EAAQC,EACjB,KAAK7b,GACH,OAAO4b,EAAQC,EAAS,EAC1B,KAAKjU,GACH,OAAOgU,EAAQC,EAASm8C,EAAe,WAAaA,EAAe,WACrE,KAAKnwD,GACH,OAAO+T,EAAQC,EAASm8C,EAAe,WAAaA,EAAe,WACrE,KAAK3wD,GACH,OAAOuU,EAAQC,EAAS,EAAIm8C,EAAe,WAAaA,EAAe,WACzE,KAAK1wD,GACH,OAAOsU,EAAQC,EAAS,EAAIm8C,EAAe,WAAaA,EAAe,WACzE,KAAKrxD,GACH,OAAOiV,EAAQC,EAAS,EAAIm8C,EAAe,WAAaA,EAAe,WACzE,KAAK7yD,GACH,OAAOyW,EAAQC,EAAS,EAAIm8C,EAAe,WAAaA,EAAe,WACzE,KAAK5yD,GACH,OAAOwW,EAAQC,EAAS,EAAIm8C,EAAe,WAAaA,EAAe,WAEzE,KAAK7wD,GACL,KAAKZ,GACH,OAAO,KAAK,OAAOqV,EAAQ,GAAK,CAAC,EAAI,KAAK,OAAOC,EAAS,GAAK,CAAC,EAAI,EACtE,KAAKrV,GACL,KAAKC,GACH,OAAO,KAAK,OAAOmV,EAAQ,GAAK,CAAC,EAAI,KAAK,OAAOC,EAAS,GAAK,CAAC,EAAI,GAEtE,KAAK5U,GACL,KAAKZ,GACH,OAAO,KAAK,IAAIuV,EAAO,EAAE,EAAI,KAAK,IAAIC,EAAQ,CAAC,EAAI,EACrD,KAAK3U,GACL,KAAKZ,GACH,OAAO,KAAK,IAAIsV,EAAO,CAAC,EAAI,KAAK,IAAIC,EAAQ,CAAC,EAAI,EAEpD,KAAK9U,GACL,KAAKC,GACH,OAAO,KAAK,OAAO4U,EAAQ,GAAK,CAAC,EAAI,KAAK,OAAOC,EAAS,GAAK,CAAC,EAAI,EACtE,KAAKzV,GACH,OAAO,KAAK,OAAOwV,EAAQ,GAAK,CAAC,EAAI,KAAK,OAAOC,EAAS,GAAK,CAAC,EAAI,GAEtE,KAAKlW,GACH,OAAO,KAAK,OAAOiW,EAAQ,GAAK,CAAC,EAAI,KAAK,OAAOC,EAAS,GAAK,CAAC,EAAI,GACtE,KAAKjW,GACH,OAAO,KAAK,OAAOgW,EAAQ,GAAK,CAAC,EAAI,KAAK,OAAOC,EAAS,GAAK,CAAC,EAAI,GACtE,KAAKhW,GACH,OAAO,KAAK,OAAO+V,EAAQ,GAAK,CAAC,EAAI,KAAK,OAAOC,EAAS,GAAK,CAAC,EAAI,GACtE,KAAK/V,GACH,OAAO,KAAK,OAAO8V,EAAQ,GAAK,CAAC,EAAI,KAAK,OAAOC,EAAS,GAAK,CAAC,EAAI,GACtE,KAAK9V,GACH,OAAO,KAAK,OAAO6V,EAAQ,GAAK,CAAC,EAAI,KAAK,OAAOC,EAAS,GAAK,CAAC,EAAI,GACtE,KAAK7V,GACH,OAAO,KAAK,OAAO4V,EAAQ,GAAK,CAAC,EAAI,KAAK,OAAOC,EAAS,GAAK,CAAC,EAAI,GACtE,KAAK5V,GACH,OAAO,KAAK,OAAO2V,EAAQ,GAAK,CAAC,EAAI,KAAK,OAAOC,EAAS,GAAK,CAAC,EAAI,GACtE,KAAK3V,GACH,OAAO,KAAK,OAAO0V,EAAQ,GAAK,CAAC,EAAI,KAAK,OAAOC,EAAS,GAAK,CAAC,EAAI,GACtE,KAAKvW,GACH,OAAO,KAAK,OAAOsW,EAAQ,GAAK,EAAE,EAAI,KAAK,OAAOC,EAAS,GAAK,CAAC,EAAI,GACvE,KAAKtW,GACH,OAAO,KAAK,OAAOqW,EAAQ,GAAK,EAAE,EAAI,KAAK,OAAOC,EAAS,GAAK,CAAC,EAAI,GACvE,KAAKrW,GACH,OAAO,KAAK,OAAOoW,EAAQ,GAAK,EAAE,EAAI,KAAK,OAAOC,EAAS,GAAK,CAAC,EAAI,GACvE,KAAKxW,GACH,OAAO,KAAK,OAAOuW,EAAQ,GAAK,EAAE,EAAI,KAAK,OAAOC,EAAS,GAAK,EAAE,EAAI,GACxE,KAAKpW,GACH,OAAO,KAAK,OAAOmW,EAAQ,IAAM,EAAE,EAAI,KAAK,OAAOC,EAAS,GAAK,EAAE,EAAI,GACzE,KAAKnW,GACH,OAAO,KAAK,OAAOkW,EAAQ,IAAM,EAAE,EAAI,KAAK,OAAOC,EAAS,IAAM,EAAE,EAAI,GAE1E,KAAK1V,GACL,KAAKU,GACL,KAAKC,GACH,OAAO,KAAK,KAAK8U,EAAQ,CAAC,EAAI,KAAK,KAAKC,EAAS,CAAC,EAAI,GAExD,KAAK7W,GACL,KAAKqD,GACH,OAAO,KAAK,KAAKuT,EAAQ,CAAC,EAAI,KAAK,KAAKC,EAAS,CAAC,EAAI,EACxD,KAAK9W,GACL,KAAKqD,GACH,OAAO,KAAK,KAAKwT,EAAQ,CAAC,EAAI,KAAK,KAAKC,EAAS,CAAC,EAAI,EAC1D,CACA,MAAM,IAAI,MACR,+CAA+CvB,CAAM,UACvD,CACF,CACA,SAAS29C,GAAyBlqD,EAAM,CACtC,OAAQA,EAAM,CACZ,KAAK7B,GACL,KAAK7V,GACH,MAAO,CAAE,WAAY,EAAG,WAAY,CAAE,EACxC,KAAKmW,GACL,KAAKvD,GACL,KAAK9M,GACH,MAAO,CAAE,WAAY,EAAG,WAAY,CAAE,EACxC,KAAKmQ,GACL,KAAKC,GACH,MAAO,CAAE,WAAY,EAAG,WAAY,CAAE,EACxC,KAAKF,GACL,KAAKlP,GACL,KAAKjC,GACH,MAAO,CAAE,WAAY,EAAG,WAAY,CAAE,EACxC,KAAKkR,GACH,MAAO,CAAE,WAAY,EAAG,WAAY,CAAE,CAC1C,CACA,MAAM,IAAI,MAAM,wBAAwB2B,CAAI,GAAG,CACjD,CACA,IAAI9C,GAAe,CACjB,QAAA0sD,GACA,MAAAE,GACA,KAAAC,GACA,cAAAC,EACF,EACA,SAASG,GAAcC,EAAKp9B,EAAY+O,EAAO8G,EAAY+H,EAAczJ,EAAOb,EAAM,CACpF,IAAM+pB,EAAqBr9B,EAAW,IAAI,sCAAsC,EAAIA,EAAW,IAAI,sCAAsC,EAAI,KACvIs9B,EAAgC,OAAOC,GAAc,IAAc,GAAQ,iBAAiB,KAAKA,GAAU,SAAS,EACpHC,EAAmB,IAAI7rD,EACvB8rD,EAAiC,IAAI,QACvCC,EACEC,EAA2B,IAAI,QACjCC,EAAqB,GACzB,GAAI,CACFA,EAAqB,OAAO,gBAAoB,KAAe,IAAI,gBAAgB,EAAG,CAAC,EAAE,WAAW,IAAI,IAAM,IAChH,MAAc,CACd,CACA,SAASC,EAAah9C,EAAOC,EAAQ,CACnC,OAAO88C,EAEL,IAAI,gBAAgB/8C,EAAOC,CAAM,EAC/BtE,GAAgB,QAAQ,CAC9B,CACA,SAASshD,EAAYx/C,EAAOy/C,EAAgBC,EAAS,CACnD,IAAIrvC,EAAQ,EACNwqC,EAAa8E,GAAc3/C,CAAK,EAItC,IAHI66C,EAAW,MAAQ6E,GAAW7E,EAAW,OAAS6E,KACpDrvC,EAAQqvC,EAAU,KAAK,IAAI7E,EAAW,MAAOA,EAAW,MAAM,GAE5DxqC,EAAQ,EACV,GAAI,OAAO,iBAAqB,KAAerQ,aAAiB,kBAAoB,OAAO,kBAAsB,KAAeA,aAAiB,mBAAqB,OAAO,YAAgB,KAAeA,aAAiB,aAAe,OAAO,WAAe,KAAeA,aAAiB,WAAY,CAC5S,IAAMuC,EAAQ,KAAK,MAAM8N,EAAQwqC,EAAW,KAAK,EAC3Cr4C,GAAS,KAAK,MAAM6N,EAAQwqC,EAAW,MAAM,EAC/CuE,IAAa,SAAQA,EAAWG,EAAah9C,EAAOC,EAAM,GAC9D,IAAMpE,GAASqhD,EAAiBF,EAAah9C,EAAOC,EAAM,EAAI48C,EAC9D,OAAAhhD,GAAO,MAAQmE,EACfnE,GAAO,OAASoE,GACApE,GAAO,WAAW,IAAI,EAC9B,UAAU4B,EAAO,EAAG,EAAGuC,EAAOC,EAAM,EAC5C,QAAQ,KAAK,uDAAyDq4C,EAAW,MAAQ,IAAMA,EAAW,OAAS,SAAWt4C,EAAQ,IAAMC,GAAS,IAAI,EAClJpE,EACT,KACE,OAAI,SAAU4B,GACZ,QAAQ,KAAK,yDAA2D66C,EAAW,MAAQ,IAAMA,EAAW,OAAS,IAAI,EAEpH76C,EAGX,OAAOA,CACT,CACA,SAAS4/C,EAA4Bl9C,EAAS,CAC5C,OAAOA,EAAQ,iBAAmBA,EAAQ,YAAcra,IAAiBqa,EAAQ,YAAc9c,EACjG,CACA,SAASi6D,EAAejgD,EAAQ,CAC9Bk/C,EAAI,eAAel/C,CAAM,CAC3B,CACA,SAASkgD,EAAkBC,EAAoBC,EAAUC,EAAQ1gD,EAAY2gD,EAAsB,GAAO,CACxG,GAAIH,IAAuB,KAAM,CAC/B,GAAIjB,EAAIiB,CAAkB,IAAM,OAAQ,OAAOjB,EAAIiB,CAAkB,EACrE,QAAQ,KAAK,2EAA6EA,EAAqB,GAAG,CACpH,CACA,IAAII,EAAiBH,EA8CrB,GA7CIA,IAAalB,EAAI,MACfmB,IAAWnB,EAAI,QAAOqB,EAAiBrB,EAAI,MAC3CmB,IAAWnB,EAAI,aAAYqB,EAAiBrB,EAAI,MAChDmB,IAAWnB,EAAI,gBAAeqB,EAAiBrB,EAAI,KAErDkB,IAAalB,EAAI,cACfmB,IAAWnB,EAAI,gBAAeqB,EAAiBrB,EAAI,MACnDmB,IAAWnB,EAAI,iBAAgBqB,EAAiBrB,EAAI,OACpDmB,IAAWnB,EAAI,eAAcqB,EAAiBrB,EAAI,OAClDmB,IAAWnB,EAAI,OAAMqB,EAAiBrB,EAAI,KAC1CmB,IAAWnB,EAAI,QAAOqB,EAAiBrB,EAAI,MAC3CmB,IAAWnB,EAAI,MAAKqB,EAAiBrB,EAAI,OAE3CkB,IAAalB,EAAI,KACfmB,IAAWnB,EAAI,QAAOqB,EAAiBrB,EAAI,OAC3CmB,IAAWnB,EAAI,aAAYqB,EAAiBrB,EAAI,OAChDmB,IAAWnB,EAAI,gBAAeqB,EAAiBrB,EAAI,MAErDkB,IAAalB,EAAI,aACfmB,IAAWnB,EAAI,gBAAeqB,EAAiBrB,EAAI,OACnDmB,IAAWnB,EAAI,iBAAgBqB,EAAiBrB,EAAI,QACpDmB,IAAWnB,EAAI,eAAcqB,EAAiBrB,EAAI,QAClDmB,IAAWnB,EAAI,OAAMqB,EAAiBrB,EAAI,MAC1CmB,IAAWnB,EAAI,QAAOqB,EAAiBrB,EAAI,OAC3CmB,IAAWnB,EAAI,MAAKqB,EAAiBrB,EAAI,QAE3CkB,IAAalB,EAAI,cACfmB,IAAWnB,EAAI,gBAAeqB,EAAiBrB,EAAI,QACnDmB,IAAWnB,EAAI,iBAAgBqB,EAAiBrB,EAAI,SACpDmB,IAAWnB,EAAI,eAAcqB,EAAiBrB,EAAI,SAClDmB,IAAWnB,EAAI,OAAMqB,EAAiBrB,EAAI,OAC1CmB,IAAWnB,EAAI,QAAOqB,EAAiBrB,EAAI,QAC3CmB,IAAWnB,EAAI,MAAKqB,EAAiBrB,EAAI,SAE3CkB,IAAalB,EAAI,eACfmB,IAAWnB,EAAI,gBAAeqB,EAAiBrB,EAAI,SACnDmB,IAAWnB,EAAI,iBAAgBqB,EAAiBrB,EAAI,UACpDmB,IAAWnB,EAAI,eAAcqB,EAAiBrB,EAAI,UAClDmB,IAAWnB,EAAI,OAAMqB,EAAiBrB,EAAI,QAC1CmB,IAAWnB,EAAI,QAAOqB,EAAiBrB,EAAI,SAC3CmB,IAAWnB,EAAI,MAAKqB,EAAiBrB,EAAI,UAE3CkB,IAAalB,EAAI,KACfmB,IAAWnB,EAAI,2BAA0BqB,EAAiBrB,EAAI,SAEhEkB,IAAalB,EAAI,KAAM,CACzB,IAAMsB,GAAWF,EAAsB95D,GAAiBvI,GAAgB,YAAY0hB,CAAU,EAC1F0gD,IAAWnB,EAAI,QAAOqB,EAAiBrB,EAAI,SAC3CmB,IAAWnB,EAAI,aAAYqB,EAAiBrB,EAAI,SAChDmB,IAAWnB,EAAI,gBAAeqB,EAAiBC,KAAalxD,GAAe4vD,EAAI,aAAeA,EAAI,OAClGmB,IAAWnB,EAAI,yBAAwBqB,EAAiBrB,EAAI,OAC5DmB,IAAWnB,EAAI,yBAAwBqB,EAAiBrB,EAAI,QAClE,CACA,OAAIqB,IAAmBrB,EAAI,MAAQqB,IAAmBrB,EAAI,MAAQqB,IAAmBrB,EAAI,OAASqB,IAAmBrB,EAAI,OAASqB,IAAmBrB,EAAI,SAAWqB,IAAmBrB,EAAI,UACzLp9B,EAAW,IAAI,wBAAwB,EAElCy+B,CACT,CACA,SAASE,EAAuBC,EAAYC,EAAW,CACrD,IAAIC,EACJ,OAAIF,EACEC,IAAc,MAAQA,IAAcvtD,IAAmButD,IAAcztD,GACvE0tD,EAAmB1B,EAAI,iBACdyB,IAAc1+D,GACvB2+D,EAAmB1B,EAAI,kBACdyB,IAAcptD,KACvBqtD,EAAmB1B,EAAI,iBACvB,QAAQ,KAAK,+FAA+F,GAG1GyB,IAAc,MAAQA,IAAcvtD,IAAmButD,IAAcztD,GACvE0tD,EAAmB1B,EAAI,kBACdyB,IAAc1+D,GACvB2+D,EAAmB1B,EAAI,mBACdyB,IAAcptD,KACvBqtD,EAAmB1B,EAAI,mBAGpB0B,CACT,CACA,SAASC,EAAa/9C,EAAS1C,EAAO,CACpC,OAAI4/C,EAA4Bl9C,CAAO,IAAM,IAAQA,EAAQ,sBAAwBA,EAAQ,YAAcra,IAAiBqa,EAAQ,YAAc9c,GACzI,KAAK,KAAK,KAAK,IAAIoa,EAAM,MAAOA,EAAM,MAAM,CAAC,EAAI,EAC/C0C,EAAQ,UAAY,QAAUA,EAAQ,QAAQ,OAAS,EACzDA,EAAQ,QAAQ,OACdA,EAAQ,qBAAuB,MAAM,QAAQA,EAAQ,KAAK,EAC5D1C,EAAM,QAAQ,OAEd,CAEX,CACA,SAASi5B,EAAiBlkC,EAAO,CAC/B,IAAM2N,EAAU3N,EAAM,OACtB2N,EAAQ,oBAAoB,UAAWu2B,CAAgB,EACvDynB,EAAkBh+C,CAAO,EACrBA,EAAQ,gBACVy8C,EAAe,OAAOz8C,CAAO,CAEjC,CACA,SAASi+C,EAAsB5rD,EAAO,CACpC,IAAM2tB,EAAe3tB,EAAM,OAC3B2tB,EAAa,oBAAoB,UAAWi+B,CAAqB,EACjEC,EAAuBl+B,CAAY,CACrC,CACA,SAASg+B,EAAkBh+C,EAAS,CAClC,IAAMm+C,EAAoBtpB,EAAW,IAAI70B,CAAO,EAChD,GAAIm+C,EAAkB,cAAgB,OAAQ,OAC9C,IAAM1/C,EAASuB,EAAQ,OACjBo+C,EAAgBzB,EAAS,IAAIl+C,CAAM,EACzC,GAAI2/C,EAAe,CACjB,IAAM7D,EAAe6D,EAAcD,EAAkB,UAAU,EAC/D5D,EAAa,YACTA,EAAa,YAAc,GAC7B8D,EAAcr+C,CAAO,EAEnB,OAAO,KAAKo+C,CAAa,EAAE,SAAW,GACxCzB,EAAS,OAAOl+C,CAAM,CAE1B,CACAo2B,EAAW,OAAO70B,CAAO,CAC3B,CACA,SAASq+C,EAAcr+C,EAAS,CAC9B,IAAMm+C,EAAoBtpB,EAAW,IAAI70B,CAAO,EAChDo8C,EAAI,cAAc+B,EAAkB,cAAc,EAClD,IAAM1/C,EAASuB,EAAQ,OACjBo+C,EAAgBzB,EAAS,IAAIl+C,CAAM,EACzC,OAAO2/C,EAAcD,EAAkB,UAAU,EACjD7rB,EAAK,OAAO,UACd,CACA,SAAS4rB,EAAuBl+B,EAAc,CAC5C,IAAMs+B,EAAyBzpB,EAAW,IAAI7U,CAAY,EAI1D,GAHIA,EAAa,cACfA,EAAa,aAAa,QAAQ,EAEhCA,EAAa,wBACf,QAASztB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,GAAI,MAAM,QAAQ+rD,EAAuB,mBAAmB/rD,CAAC,CAAC,EAC5D,QAASgsD,EAAQ,EAAGA,EAAQD,EAAuB,mBAAmB/rD,CAAC,EAAE,OAAQgsD,IAASnC,EAAI,kBAAkBkC,EAAuB,mBAAmB/rD,CAAC,EAAEgsD,CAAK,CAAC,OAEnKnC,EAAI,kBAAkBkC,EAAuB,mBAAmB/rD,CAAC,CAAC,EAEhE+rD,EAAuB,oBAAoBlC,EAAI,mBAAmBkC,EAAuB,mBAAmB/rD,CAAC,CAAC,CACpH,KACK,CACL,GAAI,MAAM,QAAQ+rD,EAAuB,kBAAkB,EACzD,QAASC,EAAQ,EAAGA,EAAQD,EAAuB,mBAAmB,OAAQC,IAASnC,EAAI,kBAAkBkC,EAAuB,mBAAmBC,CAAK,CAAC,OAE7JnC,EAAI,kBAAkBkC,EAAuB,kBAAkB,EAIjE,GAFIA,EAAuB,oBAAoBlC,EAAI,mBAAmBkC,EAAuB,kBAAkB,EAC3GA,EAAuB,gCAAgClC,EAAI,kBAAkBkC,EAAuB,8BAA8B,EAClIA,EAAuB,yBACzB,QAAS/rD,EAAI,EAAGA,EAAI+rD,EAAuB,yBAAyB,OAAQ/rD,IACtE+rD,EAAuB,yBAAyB/rD,CAAC,GAAG6pD,EAAI,mBAAmBkC,EAAuB,yBAAyB/rD,CAAC,CAAC,EAGjI+rD,EAAuB,0BAA0BlC,EAAI,mBAAmBkC,EAAuB,wBAAwB,CAC7H,CACA,IAAM5sC,EAAWsO,EAAa,SAC9B,QAASztB,EAAI,EAAG4N,EAAKuR,EAAS,OAAQnf,EAAI4N,EAAI5N,IAAK,CACjD,IAAMisD,EAAuB3pB,EAAW,IAAInjB,EAASnf,CAAC,CAAC,EACnDisD,EAAqB,iBACvBpC,EAAI,cAAcoC,EAAqB,cAAc,EACrDlsB,EAAK,OAAO,YAEduC,EAAW,OAAOnjB,EAASnf,CAAC,CAAC,CAC/B,CACAsiC,EAAW,OAAO7U,CAAY,CAChC,CACA,IAAIy+B,EAAe,EACnB,SAASC,GAAoB,CAC3BD,EAAe,CACjB,CACA,SAASE,GAAsB,CAC7B,IAAMC,EAAcH,EACpB,OAAIG,GAAehiB,EAAa,aAC9B,QAAQ,KAAK,sCAAwCgiB,EAAc,+CAAiDhiB,EAAa,WAAW,EAE9I6hB,GAAgB,EACTG,CACT,CACA,SAASC,EAAmB7+C,EAAS,CACnC,IAAM1N,EAAQ,CAAC,EACf,OAAAA,EAAM,KAAK0N,EAAQ,KAAK,EACxB1N,EAAM,KAAK0N,EAAQ,KAAK,EACxB1N,EAAM,KAAK0N,EAAQ,OAAS,CAAC,EAC7B1N,EAAM,KAAK0N,EAAQ,SAAS,EAC5B1N,EAAM,KAAK0N,EAAQ,SAAS,EAC5B1N,EAAM,KAAK0N,EAAQ,UAAU,EAC7B1N,EAAM,KAAK0N,EAAQ,cAAc,EACjC1N,EAAM,KAAK0N,EAAQ,MAAM,EACzB1N,EAAM,KAAK0N,EAAQ,IAAI,EACvB1N,EAAM,KAAK0N,EAAQ,eAAe,EAClC1N,EAAM,KAAK0N,EAAQ,gBAAgB,EACnC1N,EAAM,KAAK0N,EAAQ,KAAK,EACxB1N,EAAM,KAAK0N,EAAQ,eAAe,EAClC1N,EAAM,KAAK0N,EAAQ,UAAU,EACtB1N,EAAM,KAAK,CACpB,CACA,SAASwsD,EAAa9+C,EAAS++C,EAAM,CACnC,IAAMZ,EAAoBtpB,EAAW,IAAI70B,CAAO,EAEhD,GADIA,EAAQ,gBAAgBg/C,GAAmBh/C,CAAO,EAClDA,EAAQ,wBAA0B,IAASA,EAAQ,QAAU,GAAKm+C,EAAkB,YAAcn+C,EAAQ,QAAS,CACrH,IAAM1C,EAAQ0C,EAAQ,MACtB,GAAI1C,IAAU,KACZ,QAAQ,KAAK,yEAAyE,UAC7EA,EAAM,WAAa,GAC5B,QAAQ,KAAK,wEAAwE,MAChF,CACL2hD,EAAcd,EAAmBn+C,EAAS++C,CAAI,EAC9C,MACF,CACF,CACAhxB,EAAM,YAAYquB,EAAI,WAAY+B,EAAkB,eAAgB/B,EAAI,SAAW2C,CAAI,CACzF,CACA,SAASG,EAAkBl/C,EAAS++C,EAAM,CACxC,IAAMZ,EAAoBtpB,EAAW,IAAI70B,CAAO,EAChD,GAAIA,EAAQ,QAAU,GAAKm+C,EAAkB,YAAcn+C,EAAQ,QAAS,CAC1Ei/C,EAAcd,EAAmBn+C,EAAS++C,CAAI,EAC9C,MACF,CACAhxB,EAAM,YAAYquB,EAAI,iBAAkB+B,EAAkB,eAAgB/B,EAAI,SAAW2C,CAAI,CAC/F,CACA,SAASI,EAAan/C,EAAS++C,EAAM,CACnC,IAAMZ,EAAoBtpB,EAAW,IAAI70B,CAAO,EAChD,GAAIA,EAAQ,QAAU,GAAKm+C,EAAkB,YAAcn+C,EAAQ,QAAS,CAC1Ei/C,EAAcd,EAAmBn+C,EAAS++C,CAAI,EAC9C,MACF,CACAhxB,EAAM,YAAYquB,EAAI,WAAY+B,EAAkB,eAAgB/B,EAAI,SAAW2C,CAAI,CACzF,CACA,SAASK,GAAep/C,EAAS++C,EAAM,CACrC,IAAMZ,EAAoBtpB,EAAW,IAAI70B,CAAO,EAChD,GAAIA,EAAQ,QAAU,GAAKm+C,EAAkB,YAAcn+C,EAAQ,QAAS,CAC1Eq/C,GAAkBlB,EAAmBn+C,EAAS++C,CAAI,EAClD,MACF,CACAhxB,EAAM,YAAYquB,EAAI,iBAAkB+B,EAAkB,eAAgB/B,EAAI,SAAW2C,CAAI,CAC/F,CACA,IAAMO,EAAe,CACnB,CAACrzD,EAAc,EAAGmwD,EAAI,OACtB,CAACrhE,EAAmB,EAAGqhE,EAAI,cAC3B,CAAC72D,EAAsB,EAAG62D,EAAI,eAChC,EACMmD,GAAa,CACjB,CAAC55D,EAAa,EAAGy2D,EAAI,QACrB,CAACr2D,EAA0B,EAAGq2D,EAAI,uBAClC,CAACt2D,EAAyB,EAAGs2D,EAAI,sBACjC,CAACl5D,EAAY,EAAGk5D,EAAI,OACpB,CAAC74D,EAAyB,EAAG64D,EAAI,sBACjC,CAAC94D,EAAwB,EAAG84D,EAAI,oBAClC,EACMoD,GAAc,CAClB,CAACv5D,EAAY,EAAGm2D,EAAI,MACpB,CAAChkE,EAAa,EAAGgkE,EAAI,OACrB,CAACn6D,EAAW,EAAGm6D,EAAI,KACnB,CAACj6D,EAAgB,EAAGi6D,EAAI,OACxB,CAAC59D,EAAY,EAAG49D,EAAI,MACpB,CAACt8D,EAAmB,EAAGs8D,EAAI,OAC3B,CAACx8D,EAAc,EAAGw8D,EAAI,QACtB,CAAC31D,EAAe,EAAG21D,EAAI,QACzB,EACA,SAASqD,GAAqBhsB,EAAazzB,EAAS,CAelD,GAdIA,EAAQ,OAAS7gB,IAAa6/B,EAAW,IAAI,0BAA0B,IAAM,KAAUhf,EAAQ,YAAc9c,IAAgB8c,EAAQ,YAAczc,IAA6Byc,EAAQ,YAAcla,IAA6Bka,EAAQ,YAAc1c,IAA4B0c,EAAQ,YAAc9c,IAAgB8c,EAAQ,YAAczc,IAA6Byc,EAAQ,YAAcla,IAA6Bka,EAAQ,YAAc1c,KACzb,QAAQ,KAAK,0IAA0I,EAEzJ84D,EAAI,cAAc3oB,EAAa2oB,EAAI,eAAgBkD,EAAat/C,EAAQ,KAAK,CAAC,EAC9Eo8C,EAAI,cAAc3oB,EAAa2oB,EAAI,eAAgBkD,EAAat/C,EAAQ,KAAK,CAAC,GAC1EyzB,IAAgB2oB,EAAI,YAAc3oB,IAAgB2oB,EAAI,mBACxDA,EAAI,cAAc3oB,EAAa2oB,EAAI,eAAgBkD,EAAat/C,EAAQ,KAAK,CAAC,EAEhFo8C,EAAI,cAAc3oB,EAAa2oB,EAAI,mBAAoBmD,GAAWv/C,EAAQ,SAAS,CAAC,EACpFo8C,EAAI,cAAc3oB,EAAa2oB,EAAI,mBAAoBmD,GAAWv/C,EAAQ,SAAS,CAAC,EAChFA,EAAQ,kBACVo8C,EAAI,cAAc3oB,EAAa2oB,EAAI,qBAAsBA,EAAI,sBAAsB,EACnFA,EAAI,cAAc3oB,EAAa2oB,EAAI,qBAAsBoD,GAAYx/C,EAAQ,eAAe,CAAC,GAE3Fgf,EAAW,IAAI,gCAAgC,IAAM,GAAM,CAG7D,GAFIhf,EAAQ,YAAcra,IACtBqa,EAAQ,YAAcla,IAA6Bka,EAAQ,YAAc1c,IACzE0c,EAAQ,OAAS7gB,IAAa6/B,EAAW,IAAI,0BAA0B,IAAM,GAAO,OACxF,GAAIhf,EAAQ,WAAa,GAAK60B,EAAW,IAAI70B,CAAO,EAAE,oBAAqB,CACzE,IAAMizB,EAAYjU,EAAW,IAAI,gCAAgC,EACjEo9B,EAAI,cAAc3oB,EAAaR,EAAU,2BAA4B,KAAK,IAAIjzB,EAAQ,WAAY48B,EAAa,iBAAiB,CAAC,CAAC,EAClI/H,EAAW,IAAI70B,CAAO,EAAE,oBAAsBA,EAAQ,UACxD,CACF,CACF,CACA,SAAS0/C,GAAYvB,EAAmBn+C,EAAS,CAC/C,IAAI2/C,EAAc,GACdxB,EAAkB,cAAgB,SACpCA,EAAkB,YAAc,GAChCn+C,EAAQ,iBAAiB,UAAWu2B,CAAgB,GAEtD,IAAM93B,EAASuB,EAAQ,OACnBo+C,EAAgBzB,EAAS,IAAIl+C,CAAM,EACnC2/C,IAAkB,SACpBA,EAAgB,CAAC,EACjBzB,EAAS,IAAIl+C,EAAQ2/C,CAAa,GAEpC,IAAMwB,EAAkBf,EAAmB7+C,CAAO,EAClD,GAAI4/C,IAAoBzB,EAAkB,WAAY,CAChDC,EAAcwB,CAAe,IAAM,SACrCxB,EAAcwB,CAAe,EAAI,CAC/B,QAASxD,EAAI,cAAc,EAC3B,UAAW,CACb,EACA9pB,EAAK,OAAO,WACZqtB,EAAc,IAEhBvB,EAAcwB,CAAe,EAAE,YAC/B,IAAMrF,GAAe6D,EAAcD,EAAkB,UAAU,EAC3D5D,KAAiB,SACnB6D,EAAcD,EAAkB,UAAU,EAAE,YACxC5D,GAAa,YAAc,GAC7B8D,EAAcr+C,CAAO,GAGzBm+C,EAAkB,WAAayB,EAC/BzB,EAAkB,eAAiBC,EAAcwB,CAAe,EAAE,OACpE,CACA,OAAOD,CACT,CACA,SAASV,EAAcd,EAAmBn+C,EAAS++C,EAAM,CACvD,IAAItrB,EAAc2oB,EAAI,YAClBp8C,EAAQ,oBAAsBA,EAAQ,4BAA0ByzB,EAAc2oB,EAAI,kBAClFp8C,EAAQ,kBAAiByzB,EAAc2oB,EAAI,YAC/C,IAAMuD,EAAcD,GAAYvB,EAAmBn+C,CAAO,EACpDvB,EAASuB,EAAQ,OACvB+tB,EAAM,YAAY0F,EAAa0qB,EAAkB,eAAgB/B,EAAI,SAAW2C,CAAI,EACpF,IAAMc,GAAmBhrB,EAAW,IAAIp2B,CAAM,EAC9C,GAAIA,EAAO,UAAYohD,GAAiB,WAAaF,IAAgB,GAAM,CACzE5xB,EAAM,cAAcquB,EAAI,SAAW2C,CAAI,EACvC,IAAM/a,GAAmB7oD,GAAgB,aAAaA,GAAgB,iBAAiB,EACjF2kE,GAAmB9/C,EAAQ,aAAe3Z,GAAe,KAAOlL,GAAgB,aAAa6kB,EAAQ,UAAU,EAC/G+/C,GAAmB//C,EAAQ,aAAe3Z,IAAgB29C,KAAqB8b,GAAmB1D,EAAI,KAAOA,EAAI,sBACvHA,EAAI,YAAYA,EAAI,oBAAqBp8C,EAAQ,KAAK,EACtDo8C,EAAI,YAAYA,EAAI,+BAAgCp8C,EAAQ,gBAAgB,EAC5Eo8C,EAAI,YAAYA,EAAI,iBAAkBp8C,EAAQ,eAAe,EAC7Do8C,EAAI,YAAYA,EAAI,mCAAoC2D,EAAgB,EACxE,IAAIziD,GAAQw/C,EAAY98C,EAAQ,MAAO,GAAO48B,EAAa,cAAc,EACzEt/B,GAAQ0iD,GAAiBhgD,EAAS1C,EAAK,EACvC,IAAMggD,EAAWnqB,EAAM,QAAQnzB,EAAQ,OAAQA,EAAQ,UAAU,EAC3Du9C,GAASpqB,EAAM,QAAQnzB,EAAQ,IAAI,EACrC89C,GAAmBV,EAAkBp9C,EAAQ,eAAgBs9C,EAAUC,GAAQv9C,EAAQ,WAAYA,EAAQ,cAAc,EAC7Hy/C,GAAqBhsB,EAAazzB,CAAO,EACzC,IAAIigD,GACEC,GAAUlgD,EAAQ,QAClBmgD,GAAgBngD,EAAQ,iBAAmB,GAC3CogD,GAAiBP,GAAiB,YAAc,QAAUF,IAAgB,GAC1EU,EAAY5hD,EAAO,UACnB6hD,GAASvC,EAAa/9C,EAAS1C,EAAK,EAC1C,GAAI0C,EAAQ,eACV89C,GAAmBH,EAAuB39C,EAAQ,SAAWxiB,GAAoBwiB,EAAQ,IAAI,EACzFogD,KACED,GACFpyB,EAAM,aAAaquB,EAAI,WAAY,EAAG0B,GAAkBxgD,GAAM,MAAOA,GAAM,MAAM,EAEjFywB,EAAM,WAAWquB,EAAI,WAAY,EAAG0B,GAAkBxgD,GAAM,MAAOA,GAAM,OAAQ,EAAGggD,EAAUC,GAAQ,IAAI,WAGrGv9C,EAAQ,cACjB,GAAIkgD,GAAQ,OAAS,EAAG,CAClBC,IAAiBC,IACnBryB,EAAM,aAAaquB,EAAI,WAAYkE,GAAQxC,GAAkBoC,GAAQ,CAAC,EAAE,MAAOA,GAAQ,CAAC,EAAE,MAAM,EAElG,QAAS3tD,EAAI,EAAG4N,GAAK+/C,GAAQ,OAAQ3tD,EAAI4N,GAAI5N,IAC3C0tD,GAASC,GAAQ3tD,CAAC,EACd4tD,GACEE,GACFtyB,EAAM,cAAcquB,EAAI,WAAY7pD,EAAG,EAAG,EAAG0tD,GAAO,MAAOA,GAAO,OAAQ3C,EAAUC,GAAQ0C,GAAO,IAAI,EAGzGlyB,EAAM,WAAWquB,EAAI,WAAY7pD,EAAGurD,GAAkBmC,GAAO,MAAOA,GAAO,OAAQ,EAAG3C,EAAUC,GAAQ0C,GAAO,IAAI,EAGvHjgD,EAAQ,gBAAkB,EAC5B,MACMmgD,IACEC,IACFryB,EAAM,aAAaquB,EAAI,WAAYkE,GAAQxC,GAAkBxgD,GAAM,MAAOA,GAAM,MAAM,EAEpF+iD,GACFtyB,EAAM,cAAcquB,EAAI,WAAY,EAAG,EAAG,EAAG9+C,GAAM,MAAOA,GAAM,OAAQggD,EAAUC,GAAQjgD,GAAM,IAAI,GAGtGywB,EAAM,WAAWquB,EAAI,WAAY,EAAG0B,GAAkBxgD,GAAM,MAAOA,GAAM,OAAQ,EAAGggD,EAAUC,GAAQjgD,GAAM,IAAI,UAG3G0C,EAAQ,oBACjB,GAAIA,EAAQ,yBAA0B,CAChCmgD,IAAiBC,IACnBryB,EAAM,aAAaquB,EAAI,iBAAkBkE,GAAQxC,GAAkBoC,GAAQ,CAAC,EAAE,MAAOA,GAAQ,CAAC,EAAE,OAAQ5iD,GAAM,KAAK,EAErH,QAAS/K,EAAI,EAAG4N,GAAK+/C,GAAQ,OAAQ3tD,EAAI4N,GAAI5N,IAE3C,GADA0tD,GAASC,GAAQ3tD,CAAC,EACdyN,EAAQ,SAAW5W,GACrB,GAAIk0D,IAAa,KACf,GAAI6C,IACF,GAAIE,EACF,GAAIrgD,EAAQ,aAAa,KAAO,EAAG,CACjC,IAAMugD,GAAkBvE,GAAciE,GAAO,MAAOA,GAAO,OAAQjgD,EAAQ,OAAQA,EAAQ,IAAI,EAC/F,QAAWI,MAAcJ,EAAQ,aAAc,CAC7C,IAAMwgD,GAAYP,GAAO,KAAK,SAC5B7/C,GAAamgD,GAAkBN,GAAO,KAAK,mBAC1C7/C,GAAa,GAAKmgD,GAAkBN,GAAO,KAAK,iBACnD,EACAlyB,EAAM,wBAAwBquB,EAAI,iBAAkB7pD,EAAG,EAAG,EAAG6N,GAAY6/C,GAAO,MAAOA,GAAO,OAAQ,EAAG3C,EAAUkD,GAAW,EAAG,CAAC,CACpI,CACAxgD,EAAQ,kBAAkB,CAC5B,MACE+tB,EAAM,wBAAwBquB,EAAI,iBAAkB7pD,EAAG,EAAG,EAAG,EAAG0tD,GAAO,MAAOA,GAAO,OAAQ3iD,GAAM,MAAOggD,EAAU2C,GAAO,KAAM,EAAG,CAAC,OAIzIlyB,EAAM,qBAAqBquB,EAAI,iBAAkB7pD,EAAGurD,GAAkBmC,GAAO,MAAOA,GAAO,OAAQ3iD,GAAM,MAAO,EAAG2iD,GAAO,KAAM,EAAG,CAAC,OAGtI,QAAQ,KAAK,gGAAgG,OAG3GE,GACEE,GACFtyB,EAAM,cAAcquB,EAAI,iBAAkB7pD,EAAG,EAAG,EAAG,EAAG0tD,GAAO,MAAOA,GAAO,OAAQ3iD,GAAM,MAAOggD,EAAUC,GAAQ0C,GAAO,IAAI,EAG/HlyB,EAAM,WAAWquB,EAAI,iBAAkB7pD,EAAGurD,GAAkBmC,GAAO,MAAOA,GAAO,OAAQ3iD,GAAM,MAAO,EAAGggD,EAAUC,GAAQ0C,GAAO,IAAI,CAI9I,KAAO,CACDE,IAAiBC,IACnBryB,EAAM,aAAaquB,EAAI,WAAYkE,GAAQxC,GAAkBoC,GAAQ,CAAC,EAAE,MAAOA,GAAQ,CAAC,EAAE,MAAM,EAElG,QAAS3tD,EAAI,EAAG4N,GAAK+/C,GAAQ,OAAQ3tD,EAAI4N,GAAI5N,IAC3C0tD,GAASC,GAAQ3tD,CAAC,EACdyN,EAAQ,SAAW5W,GACjBk0D,IAAa,KACX6C,GACEE,GACFtyB,EAAM,wBAAwBquB,EAAI,WAAY7pD,EAAG,EAAG,EAAG0tD,GAAO,MAAOA,GAAO,OAAQ3C,EAAU2C,GAAO,IAAI,EAG3GlyB,EAAM,qBAAqBquB,EAAI,WAAY7pD,EAAGurD,GAAkBmC,GAAO,MAAOA,GAAO,OAAQ,EAAGA,GAAO,IAAI,EAG7G,QAAQ,KAAK,gGAAgG,EAG3GE,GACEE,GACFtyB,EAAM,cAAcquB,EAAI,WAAY7pD,EAAG,EAAG,EAAG0tD,GAAO,MAAOA,GAAO,OAAQ3C,EAAUC,GAAQ0C,GAAO,IAAI,EAGzGlyB,EAAM,WAAWquB,EAAI,WAAY7pD,EAAGurD,GAAkBmC,GAAO,MAAOA,GAAO,OAAQ,EAAG3C,EAAUC,GAAQ0C,GAAO,IAAI,CAI3H,SACSjgD,EAAQ,mBACjB,GAAImgD,IAIF,GAHIC,IACFryB,EAAM,aAAaquB,EAAI,iBAAkBkE,GAAQxC,GAAkBxgD,GAAM,MAAOA,GAAM,OAAQA,GAAM,KAAK,EAEvG+iD,EACF,GAAIrgD,EAAQ,aAAa,KAAO,EAAG,CACjC,IAAMugD,EAAkBvE,GAAc1+C,GAAM,MAAOA,GAAM,OAAQ0C,EAAQ,OAAQA,EAAQ,IAAI,EAC7F,QAAWI,MAAcJ,EAAQ,aAAc,CAC7C,IAAMwgD,GAAYljD,GAAM,KAAK,SAC3B8C,GAAamgD,EAAkBjjD,GAAM,KAAK,mBACzC8C,GAAa,GAAKmgD,EAAkBjjD,GAAM,KAAK,iBAClD,EACAywB,EAAM,cAAcquB,EAAI,iBAAkB,EAAG,EAAG,EAAGh8C,GAAY9C,GAAM,MAAOA,GAAM,OAAQ,EAAGggD,EAAUC,GAAQiD,EAAS,CAC1H,CACAxgD,EAAQ,kBAAkB,CAC5B,MACE+tB,EAAM,cAAcquB,EAAI,iBAAkB,EAAG,EAAG,EAAG,EAAG9+C,GAAM,MAAOA,GAAM,OAAQA,GAAM,MAAOggD,EAAUC,GAAQjgD,GAAM,IAAI,OAI9HywB,EAAM,WAAWquB,EAAI,iBAAkB,EAAG0B,GAAkBxgD,GAAM,MAAOA,GAAM,OAAQA,GAAM,MAAO,EAAGggD,EAAUC,GAAQjgD,GAAM,IAAI,UAE5H0C,EAAQ,gBACbmgD,IACEC,IACFryB,EAAM,aAAaquB,EAAI,WAAYkE,GAAQxC,GAAkBxgD,GAAM,MAAOA,GAAM,OAAQA,GAAM,KAAK,EAEjG+iD,GACFtyB,EAAM,cAAcquB,EAAI,WAAY,EAAG,EAAG,EAAG,EAAG9+C,GAAM,MAAOA,GAAM,OAAQA,GAAM,MAAOggD,EAAUC,GAAQjgD,GAAM,IAAI,GAGtHywB,EAAM,WAAWquB,EAAI,WAAY,EAAG0B,GAAkBxgD,GAAM,MAAOA,GAAM,OAAQA,GAAM,MAAO,EAAGggD,EAAUC,GAAQjgD,GAAM,IAAI,UAEtH0C,EAAQ,sBACjB,GAAIogD,GACF,GAAID,GACFpyB,EAAM,aAAaquB,EAAI,WAAYkE,GAAQxC,GAAkBxgD,GAAM,MAAOA,GAAM,MAAM,MACjF,CACL,IAAIuC,EAAQvC,GAAM,MAAOwC,GAASxC,GAAM,OACxC,QAAS/K,GAAI,EAAGA,GAAI+tD,GAAQ/tD,KAC1Bw7B,EAAM,WAAWquB,EAAI,WAAY7pD,GAAGurD,GAAkBj+C,EAAOC,GAAQ,EAAGw9C,EAAUC,GAAQ,IAAI,EAC9F19C,IAAU,EACVC,KAAW,CAEf,UAGEogD,GAAQ,OAAS,EAAG,CACtB,GAAIC,IAAiBC,GAAgB,CACnC,IAAMjI,EAAa8E,GAAciD,GAAQ,CAAC,CAAC,EAC3CnyB,EAAM,aAAaquB,EAAI,WAAYkE,GAAQxC,GAAkB3F,EAAW,MAAOA,EAAW,MAAM,CAClG,CACA,QAAS5lD,EAAI,EAAG4N,GAAK+/C,GAAQ,OAAQ3tD,EAAI4N,GAAI5N,IAC3C0tD,GAASC,GAAQ3tD,CAAC,EACd4tD,GACEE,GACFtyB,EAAM,cAAcquB,EAAI,WAAY7pD,EAAG,EAAG,EAAG+qD,EAAUC,GAAQ0C,EAAM,EAGvElyB,EAAM,WAAWquB,EAAI,WAAY7pD,EAAGurD,GAAkBR,EAAUC,GAAQ0C,EAAM,EAGlFjgD,EAAQ,gBAAkB,EAC5B,SACMmgD,GAAe,CACjB,GAAIC,GAAgB,CAClB,IAAMjI,EAAa8E,GAAc3/C,EAAK,EACtCywB,EAAM,aAAaquB,EAAI,WAAYkE,GAAQxC,GAAkB3F,EAAW,MAAOA,EAAW,MAAM,CAClG,CACIkI,GACFtyB,EAAM,cAAcquB,EAAI,WAAY,EAAG,EAAG,EAAGkB,EAAUC,GAAQjgD,EAAK,CAExE,MACEywB,EAAM,WAAWquB,EAAI,WAAY,EAAG0B,GAAkBR,EAAUC,GAAQjgD,EAAK,EAI/E4/C,EAA4Bl9C,CAAO,GACrCm9C,EAAe1pB,CAAW,EAE5BosB,GAAiB,UAAYphD,EAAO,QAChCuB,EAAQ,UAAUA,EAAQ,SAASA,CAAO,CAChD,CACAm+C,EAAkB,UAAYn+C,EAAQ,OACxC,CACA,SAASq/C,GAAkBlB,EAAmBn+C,EAAS++C,EAAM,CAC3D,GAAI/+C,EAAQ,MAAM,SAAW,EAAG,OAChC,IAAM2/C,EAAcD,GAAYvB,EAAmBn+C,CAAO,EACpDvB,EAASuB,EAAQ,OACvB+tB,EAAM,YAAYquB,EAAI,iBAAkB+B,EAAkB,eAAgB/B,EAAI,SAAW2C,CAAI,EAC7F,IAAMc,EAAmBhrB,EAAW,IAAIp2B,CAAM,EAC9C,GAAIA,EAAO,UAAYohD,EAAiB,WAAaF,IAAgB,GAAM,CACzE5xB,EAAM,cAAcquB,EAAI,SAAW2C,CAAI,EACvC,IAAM/a,GAAmB7oD,GAAgB,aAAaA,GAAgB,iBAAiB,EACjF2kE,GAAmB9/C,EAAQ,aAAe3Z,GAAe,KAAOlL,GAAgB,aAAa6kB,EAAQ,UAAU,EAC/G+/C,GAAmB//C,EAAQ,aAAe3Z,IAAgB29C,KAAqB8b,GAAmB1D,EAAI,KAAOA,EAAI,sBACvHA,EAAI,YAAYA,EAAI,oBAAqBp8C,EAAQ,KAAK,EACtDo8C,EAAI,YAAYA,EAAI,+BAAgCp8C,EAAQ,gBAAgB,EAC5Eo8C,EAAI,YAAYA,EAAI,iBAAkBp8C,EAAQ,eAAe,EAC7Do8C,EAAI,YAAYA,EAAI,mCAAoC2D,EAAgB,EACxE,IAAMU,GAAezgD,EAAQ,qBAAuBA,EAAQ,MAAM,CAAC,EAAE,oBAC/D0gD,GAAgB1gD,EAAQ,MAAM,CAAC,GAAKA,EAAQ,MAAM,CAAC,EAAE,cACrD2gD,EAAY,CAAC,EACnB,QAASpuD,GAAI,EAAGA,GAAI,EAAGA,KACjB,CAACkuD,IAAgB,CAACC,GACpBC,EAAUpuD,EAAC,EAAIuqD,EAAY98C,EAAQ,MAAMzN,EAAC,EAAG,GAAMqqC,EAAa,cAAc,EAE9E+jB,EAAUpuD,EAAC,EAAImuD,GAAgB1gD,EAAQ,MAAMzN,EAAC,EAAE,MAAQyN,EAAQ,MAAMzN,EAAC,EAEzEouD,EAAUpuD,EAAC,EAAIytD,GAAiBhgD,EAAS2gD,EAAUpuD,EAAC,CAAC,EAEvD,IAAM+K,GAAQqjD,EAAU,CAAC,EAAGrD,GAAWnqB,EAAM,QAAQnzB,EAAQ,OAAQA,EAAQ,UAAU,EAAGu9C,GAASpqB,EAAM,QAAQnzB,EAAQ,IAAI,EAAG89C,GAAmBV,EAAkBp9C,EAAQ,eAAgBs9C,GAAUC,GAAQv9C,EAAQ,UAAU,EAC3NmgD,GAAgBngD,EAAQ,iBAAmB,GAC3CogD,GAAiBP,EAAiB,YAAc,QAAUF,IAAgB,GAC1EU,EAAY5hD,EAAO,UACrB6hD,GAASvC,EAAa/9C,EAAS1C,EAAK,EACxCmiD,GAAqBrD,EAAI,iBAAkBp8C,CAAO,EAClD,IAAIkgD,EACJ,GAAIO,GAAc,CACZN,IAAiBC,IACnBryB,EAAM,aAAaquB,EAAI,iBAAkBkE,GAAQxC,GAAkBxgD,GAAM,MAAOA,GAAM,MAAM,EAE9F,QAAS/K,GAAI,EAAGA,GAAI,EAAGA,KAAK,CAC1B2tD,EAAUS,EAAUpuD,EAAC,EAAE,QACvB,QAAS2U,GAAI,EAAGA,GAAIg5C,EAAQ,OAAQh5C,KAAK,CACvC,IAAM+4C,GAASC,EAAQh5C,EAAC,EACpBlH,EAAQ,SAAW5W,GACjBk0D,KAAa,KACX6C,GACEE,GACFtyB,EAAM,wBAAwBquB,EAAI,4BAA8B7pD,GAAG2U,GAAG,EAAG,EAAG+4C,GAAO,MAAOA,GAAO,OAAQ3C,GAAU2C,GAAO,IAAI,EAGhIlyB,EAAM,qBAAqBquB,EAAI,4BAA8B7pD,GAAG2U,GAAG42C,GAAkBmC,GAAO,MAAOA,GAAO,OAAQ,EAAGA,GAAO,IAAI,EAGlI,QAAQ,KAAK,iGAAiG,EAG5GE,GACEE,GACFtyB,EAAM,cAAcquB,EAAI,4BAA8B7pD,GAAG2U,GAAG,EAAG,EAAG+4C,GAAO,MAAOA,GAAO,OAAQ3C,GAAUC,GAAQ0C,GAAO,IAAI,EAG9HlyB,EAAM,WAAWquB,EAAI,4BAA8B7pD,GAAG2U,GAAG42C,GAAkBmC,GAAO,MAAOA,GAAO,OAAQ,EAAG3C,GAAUC,GAAQ0C,GAAO,IAAI,CAG9I,CACF,CACF,KAAO,CAEL,GADAC,EAAUlgD,EAAQ,QACdmgD,IAAiBC,GAAgB,CAC/BF,EAAQ,OAAS,GAAGI,KACxB,IAAMnI,GAAa8E,GAAc0D,EAAU,CAAC,CAAC,EAC7C5yB,EAAM,aAAaquB,EAAI,iBAAkBkE,GAAQxC,GAAkB3F,GAAW,MAAOA,GAAW,MAAM,CACxG,CACA,QAAS5lD,GAAI,EAAGA,GAAI,EAAGA,KACrB,GAAImuD,GAAe,CACbP,GACEE,GACFtyB,EAAM,cAAcquB,EAAI,4BAA8B7pD,GAAG,EAAG,EAAG,EAAGouD,EAAUpuD,EAAC,EAAE,MAAOouD,EAAUpuD,EAAC,EAAE,OAAQ+qD,GAAUC,GAAQoD,EAAUpuD,EAAC,EAAE,IAAI,EAGhJw7B,EAAM,WAAWquB,EAAI,4BAA8B7pD,GAAG,EAAGurD,GAAkB6C,EAAUpuD,EAAC,EAAE,MAAOouD,EAAUpuD,EAAC,EAAE,OAAQ,EAAG+qD,GAAUC,GAAQoD,EAAUpuD,EAAC,EAAE,IAAI,EAE5J,QAAS2U,GAAI,EAAGA,GAAIg5C,EAAQ,OAAQh5C,KAAK,CAEvC,IAAM05C,GADSV,EAAQh5C,EAAC,EACG,MAAM3U,EAAC,EAAE,MAChC4tD,GACEE,GACFtyB,EAAM,cAAcquB,EAAI,4BAA8B7pD,GAAG2U,GAAI,EAAG,EAAG,EAAG05C,GAAY,MAAOA,GAAY,OAAQtD,GAAUC,GAAQqD,GAAY,IAAI,EAGjJ7yB,EAAM,WAAWquB,EAAI,4BAA8B7pD,GAAG2U,GAAI,EAAG42C,GAAkB8C,GAAY,MAAOA,GAAY,OAAQ,EAAGtD,GAAUC,GAAQqD,GAAY,IAAI,CAE/J,CACF,KAAO,CACDT,GACEE,GACFtyB,EAAM,cAAcquB,EAAI,4BAA8B7pD,GAAG,EAAG,EAAG,EAAG+qD,GAAUC,GAAQoD,EAAUpuD,EAAC,CAAC,EAGlGw7B,EAAM,WAAWquB,EAAI,4BAA8B7pD,GAAG,EAAGurD,GAAkBR,GAAUC,GAAQoD,EAAUpuD,EAAC,CAAC,EAE3G,QAAS2U,GAAI,EAAGA,GAAIg5C,EAAQ,OAAQh5C,KAAK,CACvC,IAAM+4C,GAASC,EAAQh5C,EAAC,EACpBi5C,GACEE,GACFtyB,EAAM,cAAcquB,EAAI,4BAA8B7pD,GAAG2U,GAAI,EAAG,EAAG,EAAGo2C,GAAUC,GAAQ0C,GAAO,MAAM1tD,EAAC,CAAC,EAGzGw7B,EAAM,WAAWquB,EAAI,4BAA8B7pD,GAAG2U,GAAI,EAAG42C,GAAkBR,GAAUC,GAAQ0C,GAAO,MAAM1tD,EAAC,CAAC,CAEpH,CACF,CAEJ,CACI2qD,EAA4Bl9C,CAAO,GACrCm9C,EAAef,EAAI,gBAAgB,EAErCyD,EAAiB,UAAYphD,EAAO,QAChCuB,EAAQ,UAAUA,EAAQ,SAASA,CAAO,CAChD,CACAm+C,EAAkB,UAAYn+C,EAAQ,OACxC,CACA,SAAS6gD,GAAwBpI,EAAaz4B,EAAchgB,EAAS8gD,EAAYC,EAAexC,EAAO,CACrG,IAAMjB,GAAWnqB,EAAM,QAAQnzB,EAAQ,OAAQA,EAAQ,UAAU,EAC3Du9C,GAASpqB,EAAM,QAAQnzB,EAAQ,IAAI,EACnC89C,GAAmBV,EAAkBp9C,EAAQ,eAAgBs9C,GAAUC,GAAQv9C,EAAQ,UAAU,EAEvG,GAAI,CAD2B60B,EAAW,IAAI7U,CAAY,EAC9B,sBAAuB,CACjD,IAAMngB,GAAQ,KAAK,IAAI,EAAGmgB,EAAa,OAASu+B,CAAK,EAC/Cz+C,EAAS,KAAK,IAAI,EAAGkgB,EAAa,QAAUu+B,CAAK,EACnDwC,IAAkB3E,EAAI,YAAc2E,IAAkB3E,EAAI,iBAC5DruB,EAAM,WAAWgzB,EAAexC,EAAOT,GAAkBj+C,GAAOC,EAAQkgB,EAAa,MAAO,EAAGs9B,GAAUC,GAAQ,IAAI,EAErHxvB,EAAM,WAAWgzB,EAAexC,EAAOT,GAAkBj+C,GAAOC,EAAQ,EAAGw9C,GAAUC,GAAQ,IAAI,CAErG,CACAxvB,EAAM,gBAAgBquB,EAAI,YAAa3D,CAAW,EAC9CuI,EAAmBhhC,CAAY,EACjCq8B,EAAmB,mCAAmCD,EAAI,YAAa0E,EAAYC,EAAelsB,EAAW,IAAI70B,CAAO,EAAE,eAAgB,EAAGihD,GAAuBjhC,CAAY,CAAC,GACxK+gC,IAAkB3E,EAAI,YAAc2E,GAAiB3E,EAAI,6BAA+B2E,GAAiB3E,EAAI,8BACtHA,EAAI,qBAAqBA,EAAI,YAAa0E,EAAYC,EAAelsB,EAAW,IAAI70B,CAAO,EAAE,eAAgBu+C,CAAK,EAEpHxwB,EAAM,gBAAgBquB,EAAI,YAAa,IAAI,CAC7C,CACA,SAAS8E,GAAyBC,EAAcnhC,EAAcohC,EAAe,CAE3E,GADAhF,EAAI,iBAAiBA,EAAI,aAAc+E,CAAY,EAC/CnhC,EAAa,YAAa,CAC5B,IAAMqhC,EAAerhC,EAAa,aAC5B69B,EAAYwD,GAAgBA,EAAa,eAAiBA,EAAa,KAAO,KAC9EvD,EAAmBH,EAAuB39B,EAAa,cAAe69B,CAAS,EAC/EyD,GAAmBthC,EAAa,cAAgBo8B,EAAI,yBAA2BA,EAAI,iBACnFviB,GAAUonB,GAAuBjhC,CAAY,EACtBghC,EAAmBhhC,CAAY,EAE1Dq8B,EAAmB,kCAAkCD,EAAI,aAAcviB,GAASikB,EAAkB99B,EAAa,MAAOA,EAAa,MAAM,EAChIohC,EACThF,EAAI,+BAA+BA,EAAI,aAAcviB,GAASikB,EAAkB99B,EAAa,MAAOA,EAAa,MAAM,EAEvHo8B,EAAI,oBAAoBA,EAAI,aAAc0B,EAAkB99B,EAAa,MAAOA,EAAa,MAAM,EAErGo8B,EAAI,wBAAwBA,EAAI,YAAakF,GAAkBlF,EAAI,aAAc+E,CAAY,CAC/F,KAAO,CACL,IAAMzvC,EAAWsO,EAAa,SAC9B,QAASztB,EAAI,EAAGA,EAAImf,EAAS,OAAQnf,IAAK,CACxC,IAAMyN,EAAU0R,EAASnf,CAAC,EACpB+qD,GAAWnqB,EAAM,QAAQnzB,EAAQ,OAAQA,EAAQ,UAAU,EAC3Du9C,GAASpqB,EAAM,QAAQnzB,EAAQ,IAAI,EACnC89C,GAAmBV,EAAkBp9C,EAAQ,eAAgBs9C,GAAUC,GAAQv9C,EAAQ,UAAU,EACjG65B,GAAUonB,GAAuBjhC,CAAY,EAC/CohC,GAAiBJ,EAAmBhhC,CAAY,IAAM,GACxDo8B,EAAI,+BAA+BA,EAAI,aAAcviB,GAASikB,GAAkB99B,EAAa,MAAOA,EAAa,MAAM,EAC9GghC,EAAmBhhC,CAAY,EACxCq8B,EAAmB,kCAAkCD,EAAI,aAAcviB,GAASikB,GAAkB99B,EAAa,MAAOA,EAAa,MAAM,EAEzIo8B,EAAI,oBAAoBA,EAAI,aAAc0B,GAAkB99B,EAAa,MAAOA,EAAa,MAAM,CAEvG,CACF,CACAo8B,EAAI,iBAAiBA,EAAI,aAAc,IAAI,CAC7C,CACA,SAASmF,GAAkB9I,EAAaz4B,EAAc,CAEpD,GADeA,GAAgBA,EAAa,wBAChC,MAAM,IAAI,MAAM,yDAAyD,EAErF,GADA+N,EAAM,gBAAgBquB,EAAI,YAAa3D,CAAW,EAC9C,EAAEz4B,EAAa,cAAgBA,EAAa,aAAa,gBAC3D,MAAM,IAAI,MAAM,qEAAqE,GAEnF,CAAC6U,EAAW,IAAI7U,EAAa,YAAY,EAAE,gBAAkBA,EAAa,aAAa,MAAM,QAAUA,EAAa,OAASA,EAAa,aAAa,MAAM,SAAWA,EAAa,UACvLA,EAAa,aAAa,MAAM,MAAQA,EAAa,MACrDA,EAAa,aAAa,MAAM,OAASA,EAAa,OACtDA,EAAa,aAAa,YAAc,IAE1C8+B,EAAa9+B,EAAa,aAAc,CAAC,EACzC,IAAMwhC,EAAoB3sB,EAAW,IAAI7U,EAAa,YAAY,EAAE,eAC9D6Z,EAAUonB,GAAuBjhC,CAAY,EACnD,GAAIA,EAAa,aAAa,SAAWziC,GACnCyjE,EAAmBhhC,CAAY,EACjCq8B,EAAmB,mCAAmCD,EAAI,YAAaA,EAAI,iBAAkBA,EAAI,WAAYoF,EAAmB,EAAG3nB,CAAO,EAE1IuiB,EAAI,qBAAqBA,EAAI,YAAaA,EAAI,iBAAkBA,EAAI,WAAYoF,EAAmB,CAAC,UAE7FxhC,EAAa,aAAa,SAAWxiC,GAC1CwjE,EAAmBhhC,CAAY,EACjCq8B,EAAmB,mCAAmCD,EAAI,YAAaA,EAAI,yBAA0BA,EAAI,WAAYoF,EAAmB,EAAG3nB,CAAO,EAElJuiB,EAAI,qBAAqBA,EAAI,YAAaA,EAAI,yBAA0BA,EAAI,WAAYoF,EAAmB,CAAC,MAG9G,OAAM,IAAI,MAAM,6BAA6B,CAEjD,CACA,SAASC,GAAuBzhC,EAAc,CAC5C,IAAMs+B,EAAyBzpB,EAAW,IAAI7U,CAAY,EACpD0hC,EAAS1hC,EAAa,0BAA4B,GACxD,GAAIs+B,EAAuB,sBAAwBt+B,EAAa,aAAc,CAC5E,IAAMqhC,EAAerhC,EAAa,aAIlC,GAHIs+B,EAAuB,wBACzBA,EAAuB,uBAAuB,EAE5C+C,EAAc,CAChB,IAAMM,EAAe,IAAM,CACzB,OAAOrD,EAAuB,oBAC9B,OAAOA,EAAuB,uBAC9B+C,EAAa,oBAAoB,UAAWM,CAAY,CAC1D,EACAN,EAAa,iBAAiB,UAAWM,CAAY,EACrDrD,EAAuB,uBAAyBqD,CAClD,CACArD,EAAuB,oBAAsB+C,CAC/C,CACA,GAAIrhC,EAAa,cAAgB,CAACs+B,EAAuB,0BAA2B,CAClF,GAAIoD,EAAQ,MAAM,IAAI,MAAM,0DAA0D,EACtFH,GAAkBjD,EAAuB,mBAAoBt+B,CAAY,CAC3E,SACM0hC,EAAQ,CACVpD,EAAuB,mBAAqB,CAAC,EAC7C,QAAS/rD,EAAI,EAAGA,EAAI,EAAGA,IAErB,GADAw7B,EAAM,gBAAgBquB,EAAI,YAAakC,EAAuB,mBAAmB/rD,CAAC,CAAC,EAC/E+rD,EAAuB,mBAAmB/rD,CAAC,IAAM,OACnD+rD,EAAuB,mBAAmB/rD,CAAC,EAAI6pD,EAAI,mBAAmB,EACtE8E,GAAyB5C,EAAuB,mBAAmB/rD,CAAC,EAAGytB,EAAc,EAAK,MACrF,CACL,IAAMshC,EAAmBthC,EAAa,cAAgBo8B,EAAI,yBAA2BA,EAAI,iBACnF+E,EAAe7C,EAAuB,mBAAmB/rD,CAAC,EAChE6pD,EAAI,iBAAiBA,EAAI,aAAc+E,CAAY,EACnD/E,EAAI,wBAAwBA,EAAI,YAAakF,EAAkBlF,EAAI,aAAc+E,CAAY,CAC/F,CAEJ,SACEpzB,EAAM,gBAAgBquB,EAAI,YAAakC,EAAuB,kBAAkB,EAC5EA,EAAuB,qBAAuB,OAChDA,EAAuB,mBAAqBlC,EAAI,mBAAmB,EACnE8E,GAAyB5C,EAAuB,mBAAoBt+B,EAAc,EAAK,MAClF,CACL,IAAMshC,EAAmBthC,EAAa,cAAgBo8B,EAAI,yBAA2BA,EAAI,iBACnF+E,EAAe7C,EAAuB,mBAC5ClC,EAAI,iBAAiBA,EAAI,aAAc+E,CAAY,EACnD/E,EAAI,wBAAwBA,EAAI,YAAakF,EAAkBlF,EAAI,aAAc+E,CAAY,CAC/F,CAGJpzB,EAAM,gBAAgBquB,EAAI,YAAa,IAAI,CAC7C,CACA,SAASwF,GAAe5hC,EAAc6hC,EAAcR,EAAc,CAChE,IAAM/C,EAAyBzpB,EAAW,IAAI7U,CAAY,EACtD6hC,IAAiB,QACnBhB,GAAwBvC,EAAuB,mBAAoBt+B,EAAcA,EAAa,QAASo8B,EAAI,kBAAmBA,EAAI,WAAY,CAAC,EAE7IiF,IAAiB,QACnBI,GAAuBzhC,CAAY,CAEvC,CACA,SAAS8hC,GAAkB9hC,EAAc,CACvC,IAAMhgB,EAAUggB,EAAa,QACvBs+B,EAAyBzpB,EAAW,IAAI7U,CAAY,EACpDm+B,EAAoBtpB,EAAW,IAAI70B,CAAO,EAChDggB,EAAa,iBAAiB,UAAWi+B,CAAqB,EAC9D,IAAMvsC,EAAWsO,EAAa,SACxB0hC,EAAS1hC,EAAa,0BAA4B,GAClD+hC,GAA0BrwC,EAAS,OAAS,EAQlD,GAPKqwC,KACC5D,EAAkB,iBAAmB,SACvCA,EAAkB,eAAiB/B,EAAI,cAAc,GAEvD+B,EAAkB,UAAYn+C,EAAQ,QACtCsyB,EAAK,OAAO,YAEVovB,EAAQ,CACVpD,EAAuB,mBAAqB,CAAC,EAC7C,QAAS/rD,GAAI,EAAGA,GAAI,EAAGA,KACrB,GAAIyN,EAAQ,SAAWA,EAAQ,QAAQ,OAAS,EAAG,CACjDs+C,EAAuB,mBAAmB/rD,EAAC,EAAI,CAAC,EAChD,QAASgsD,GAAQ,EAAGA,GAAQv+C,EAAQ,QAAQ,OAAQu+C,KAClDD,EAAuB,mBAAmB/rD,EAAC,EAAEgsD,EAAK,EAAInC,EAAI,kBAAkB,CAEhF,MACEkC,EAAuB,mBAAmB/rD,EAAC,EAAI6pD,EAAI,kBAAkB,CAG3E,KAAO,CACL,GAAIp8C,EAAQ,SAAWA,EAAQ,QAAQ,OAAS,EAAG,CACjDs+C,EAAuB,mBAAqB,CAAC,EAC7C,QAASC,GAAQ,EAAGA,GAAQv+C,EAAQ,QAAQ,OAAQu+C,KAClDD,EAAuB,mBAAmBC,EAAK,EAAInC,EAAI,kBAAkB,CAE7E,MACEkC,EAAuB,mBAAqBlC,EAAI,kBAAkB,EAEpE,GAAI2F,GACF,QAASxvD,GAAI,EAAG4N,GAAKuR,EAAS,OAAQnf,GAAI4N,GAAI5N,KAAK,CACjD,IAAMisD,GAAuB3pB,EAAW,IAAInjB,EAASnf,EAAC,CAAC,EACnDisD,GAAqB,iBAAmB,SAC1CA,GAAqB,eAAiBpC,EAAI,cAAc,EACxD9pB,EAAK,OAAO,WAEhB,CAEF,GAAItS,EAAa,QAAU,GAAKghC,EAAmBhhC,CAAY,IAAM,GAAO,CAC1Es+B,EAAuB,+BAAiClC,EAAI,kBAAkB,EAC9EkC,EAAuB,yBAA2B,CAAC,EACnDvwB,EAAM,gBAAgBquB,EAAI,YAAakC,EAAuB,8BAA8B,EAC5F,QAAS/rD,GAAI,EAAGA,GAAImf,EAAS,OAAQnf,KAAK,CACxC,IAAMyvD,GAAWtwC,EAASnf,EAAC,EAC3B+rD,EAAuB,yBAAyB/rD,EAAC,EAAI6pD,EAAI,mBAAmB,EAC5EA,EAAI,iBAAiBA,EAAI,aAAckC,EAAuB,yBAAyB/rD,EAAC,CAAC,EACzF,IAAM+qD,GAAWnqB,EAAM,QAAQ6uB,GAAS,OAAQA,GAAS,UAAU,EAC7DzE,GAASpqB,EAAM,QAAQ6uB,GAAS,IAAI,EACpClE,EAAmBV,EAAkB4E,GAAS,eAAgB1E,GAAUC,GAAQyE,GAAS,WAAYhiC,EAAa,mBAAqB,EAAI,EAC3I6Z,GAAUonB,GAAuBjhC,CAAY,EACnDo8B,EAAI,+BAA+BA,EAAI,aAAcviB,GAASikB,EAAkB99B,EAAa,MAAOA,EAAa,MAAM,EACvHo8B,EAAI,wBAAwBA,EAAI,YAAaA,EAAI,kBAAoB7pD,GAAG6pD,EAAI,aAAckC,EAAuB,yBAAyB/rD,EAAC,CAAC,CAC9I,CACA6pD,EAAI,iBAAiBA,EAAI,aAAc,IAAI,EACvCp8B,EAAa,cACfs+B,EAAuB,yBAA2BlC,EAAI,mBAAmB,EACzE8E,GAAyB5C,EAAuB,yBAA0Bt+B,EAAc,EAAI,GAE9F+N,EAAM,gBAAgBquB,EAAI,YAAa,IAAI,CAC7C,CACF,CACA,GAAIsF,EAAQ,CACV3zB,EAAM,YAAYquB,EAAI,iBAAkB+B,EAAkB,cAAc,EACxEsB,GAAqBrD,EAAI,iBAAkBp8C,CAAO,EAClD,QAASzN,GAAI,EAAGA,GAAI,EAAGA,KACrB,GAAIyN,EAAQ,SAAWA,EAAQ,QAAQ,OAAS,EAC9C,QAASu+C,GAAQ,EAAGA,GAAQv+C,EAAQ,QAAQ,OAAQu+C,KAClDsC,GAAwBvC,EAAuB,mBAAmB/rD,EAAC,EAAEgsD,EAAK,EAAGv+B,EAAchgB,EAASo8C,EAAI,kBAAmBA,EAAI,4BAA8B7pD,GAAGgsD,EAAK,OAGvKsC,GAAwBvC,EAAuB,mBAAmB/rD,EAAC,EAAGytB,EAAchgB,EAASo8C,EAAI,kBAAmBA,EAAI,4BAA8B7pD,GAAG,CAAC,EAG1J2qD,EAA4Bl9C,CAAO,GACrCm9C,EAAef,EAAI,gBAAgB,EAErCruB,EAAM,cAAc,CACtB,SAAWg0B,GAAyB,CAClC,QAASxvD,GAAI,EAAG4N,GAAKuR,EAAS,OAAQnf,GAAI4N,GAAI5N,KAAK,CACjD,IAAMuuD,GAAapvC,EAASnf,EAAC,EACvBisD,GAAuB3pB,EAAW,IAAIisB,EAAU,EACtD/yB,EAAM,YAAYquB,EAAI,WAAYoC,GAAqB,cAAc,EACrEiB,GAAqBrD,EAAI,WAAY0E,EAAU,EAC/CD,GAAwBvC,EAAuB,mBAAoBt+B,EAAc8gC,GAAY1E,EAAI,kBAAoB7pD,GAAG6pD,EAAI,WAAY,CAAC,EACrIc,EAA4B4D,EAAU,GACxC3D,EAAef,EAAI,UAAU,CAEjC,CACAruB,EAAM,cAAc,CACtB,KAAO,CACL,IAAIk0B,GAAgB7F,EAAI,WAMxB,IALIp8B,EAAa,uBAAyBA,EAAa,4BACrDiiC,GAAgBjiC,EAAa,sBAAwBo8B,EAAI,WAAaA,EAAI,kBAE5EruB,EAAM,YAAYk0B,GAAe9D,EAAkB,cAAc,EACjEsB,GAAqBwC,GAAejiD,CAAO,EACvCA,EAAQ,SAAWA,EAAQ,QAAQ,OAAS,EAC9C,QAASu+C,GAAQ,EAAGA,GAAQv+C,EAAQ,QAAQ,OAAQu+C,KAClDsC,GAAwBvC,EAAuB,mBAAmBC,EAAK,EAAGv+B,EAAchgB,EAASo8C,EAAI,kBAAmB6F,GAAe1D,EAAK,OAG9IsC,GAAwBvC,EAAuB,mBAAoBt+B,EAAchgB,EAASo8C,EAAI,kBAAmB6F,GAAe,CAAC,EAE/H/E,EAA4Bl9C,CAAO,GACrCm9C,EAAe8E,EAAa,EAE9Bl0B,EAAM,cAAc,CACtB,CACI/N,EAAa,aACfyhC,GAAuBzhC,CAAY,CAEvC,CACA,SAASkiC,GAAyBliC,EAAc,CAC9C,IAAMtO,EAAWsO,EAAa,SAC9B,QAASztB,EAAI,EAAG4N,EAAKuR,EAAS,OAAQnf,EAAI4N,EAAI5N,IAAK,CACjD,IAAMyN,EAAU0R,EAASnf,CAAC,EAC1B,GAAI2qD,EAA4Bl9C,CAAO,EAAG,CACxC,IAAM9C,EAAS8iB,EAAa,wBAA0Bo8B,EAAI,iBAAmBA,EAAI,WAC3E7B,GAAe1lB,EAAW,IAAI70B,CAAO,EAAE,eAC7C+tB,EAAM,YAAY7wB,EAAQq9C,EAAY,EACtC4C,EAAejgD,CAAM,EACrB6wB,EAAM,cAAc,CACtB,CACF,CACF,CACA,IAAMo0B,EAAwB,CAAC,EACzBC,GAAwB,CAAC,EAC/B,SAASC,GAA8BriC,EAAc,CACnD,GAAIA,EAAa,QAAU,GACzB,GAAIghC,EAAmBhhC,CAAY,IAAM,GAAO,CAC9C,IAAMtO,EAAWsO,EAAa,SACxBngB,EAAQmgB,EAAa,MACrBlgB,EAASkgB,EAAa,OACxBsiC,EAAOlG,EAAI,iBACTmG,EAAaviC,EAAa,cAAgBo8B,EAAI,yBAA2BA,EAAI,iBAC7EkC,GAAyBzpB,EAAW,IAAI7U,CAAY,EACpD+hC,GAA0BrwC,EAAS,OAAS,EAClD,GAAIqwC,GACF,QAASxvD,GAAI,EAAGA,GAAImf,EAAS,OAAQnf,KACnCw7B,EAAM,gBAAgBquB,EAAI,YAAakC,GAAuB,8BAA8B,EAC5FlC,EAAI,wBAAwBA,EAAI,YAAaA,EAAI,kBAAoB7pD,GAAG6pD,EAAI,aAAc,IAAI,EAC9FruB,EAAM,gBAAgBquB,EAAI,YAAakC,GAAuB,kBAAkB,EAChFlC,EAAI,qBAAqBA,EAAI,iBAAkBA,EAAI,kBAAoB7pD,GAAG6pD,EAAI,WAAY,KAAM,CAAC,EAGrGruB,EAAM,gBAAgBquB,EAAI,iBAAkBkC,GAAuB,8BAA8B,EACjGvwB,EAAM,gBAAgBquB,EAAI,iBAAkBkC,GAAuB,kBAAkB,EACrF,QAAS/rD,GAAI,EAAGA,GAAImf,EAAS,OAAQnf,KAAK,CAKxC,GAJIytB,EAAa,qBACXA,EAAa,cAAasiC,GAAQlG,EAAI,kBACtCp8B,EAAa,eAAiBA,EAAa,uBAAsBsiC,GAAQlG,EAAI,qBAE/E2F,GAAyB,CAC3B3F,EAAI,wBAAwBA,EAAI,iBAAkBA,EAAI,kBAAmBA,EAAI,aAAckC,GAAuB,yBAAyB/rD,EAAC,CAAC,EAC7I,IAAMgoD,GAAe1lB,EAAW,IAAInjB,EAASnf,EAAC,CAAC,EAAE,eACjD6pD,EAAI,qBAAqBA,EAAI,iBAAkBA,EAAI,kBAAmBA,EAAI,WAAY7B,GAAc,CAAC,CACvG,CACA6B,EAAI,gBAAgB,EAAG,EAAGv8C,EAAOC,EAAQ,EAAG,EAAGD,EAAOC,EAAQwiD,EAAMlG,EAAI,OAAO,EAC3EE,IAAkC,KACpC6F,EAAsB,OAAS,EAC/BC,GAAsB,OAAS,EAC/BD,EAAsB,KAAK/F,EAAI,kBAAoB7pD,EAAC,EAChDytB,EAAa,aAAeA,EAAa,qBAAuB,KAClEmiC,EAAsB,KAAKI,CAAU,EACrCH,GAAsB,KAAKG,CAAU,EACrCnG,EAAI,sBAAsBA,EAAI,iBAAkBgG,EAAqB,GAEvEhG,EAAI,sBAAsBA,EAAI,iBAAkB+F,CAAqB,EAEzE,CAGA,GAFAp0B,EAAM,gBAAgBquB,EAAI,iBAAkB,IAAI,EAChDruB,EAAM,gBAAgBquB,EAAI,iBAAkB,IAAI,EAC5C2F,GACF,QAASxvD,GAAI,EAAGA,GAAImf,EAAS,OAAQnf,KAAK,CACxCw7B,EAAM,gBAAgBquB,EAAI,YAAakC,GAAuB,8BAA8B,EAC5FlC,EAAI,wBAAwBA,EAAI,YAAaA,EAAI,kBAAoB7pD,GAAG6pD,EAAI,aAAckC,GAAuB,yBAAyB/rD,EAAC,CAAC,EAC5I,IAAMgoD,GAAe1lB,EAAW,IAAInjB,EAASnf,EAAC,CAAC,EAAE,eACjDw7B,EAAM,gBAAgBquB,EAAI,YAAakC,GAAuB,kBAAkB,EAChFlC,EAAI,qBAAqBA,EAAI,iBAAkBA,EAAI,kBAAoB7pD,GAAG6pD,EAAI,WAAY7B,GAAc,CAAC,CAC3G,CAEFxsB,EAAM,gBAAgBquB,EAAI,iBAAkBkC,GAAuB,8BAA8B,CACnG,SACMt+B,EAAa,aAAeA,EAAa,qBAAuB,IAASs8B,EAA+B,CAC1G,IAAMiG,EAAaviC,EAAa,cAAgBo8B,EAAI,yBAA2BA,EAAI,iBACnFA,EAAI,sBAAsBA,EAAI,iBAAkB,CAACmG,CAAU,CAAC,CAC9D,EAGN,CACA,SAAStB,GAAuBjhC,EAAc,CAC5C,OAAO,KAAK,IAAI4c,EAAa,WAAY5c,EAAa,OAAO,CAC/D,CACA,SAASghC,EAAmBhhC,EAAc,CACxC,IAAMs+B,EAAyBzpB,EAAW,IAAI7U,CAAY,EAC1D,OAAOA,EAAa,QAAU,GAAKhB,EAAW,IAAI,sCAAsC,IAAM,IAAQs/B,EAAuB,uBAAyB,EACxJ,CACA,SAASU,GAAmBh/C,EAAS,CACnC,IAAM0jB,EAAQ4O,EAAK,OAAO,MACtBmqB,EAAe,IAAIz8C,CAAO,IAAM0jB,IAClC+4B,EAAe,IAAIz8C,EAAS0jB,CAAK,EACjC1jB,EAAQ,OAAO,EAEnB,CACA,SAASggD,GAAiBhgD,EAAS1C,EAAO,CACxC,IAAMT,EAAamD,EAAQ,WACrBzB,EAASyB,EAAQ,OACjBhO,EAAOgO,EAAQ,KACrB,OAAIA,EAAQ,sBAAwB,IAAQA,EAAQ,iBAAmB,IACnEnD,IAAerZ,IAAwBqZ,IAAexW,KACpDlL,GAAgB,YAAY0hB,CAAU,IAAMrQ,IAC1C+R,IAAWnV,IAAc4I,IAAS7B,KACpC,QAAQ,KAAK,yFAAyF,EAGxG,QAAQ,MAAM,wDAAyD0M,CAAU,GAG9ES,CACT,CACA,SAAS2/C,GAAc3/C,EAAO,CAC5B,OAAI,OAAO,iBAAqB,KAAeA,aAAiB,kBAC9Dk/C,EAAiB,MAAQl/C,EAAM,cAAgBA,EAAM,MACrDk/C,EAAiB,OAASl/C,EAAM,eAAiBA,EAAM,QAC9C,OAAO,WAAe,KAAeA,aAAiB,YAC/Dk/C,EAAiB,MAAQl/C,EAAM,aAC/Bk/C,EAAiB,OAASl/C,EAAM,gBAEhCk/C,EAAiB,MAAQl/C,EAAM,MAC/Bk/C,EAAiB,OAASl/C,EAAM,QAE3Bk/C,CACT,CACA,KAAK,oBAAsBmC,EAC3B,KAAK,kBAAoBD,EACzB,KAAK,aAAeI,EACpB,KAAK,kBAAoBI,EACzB,KAAK,aAAeC,EACpB,KAAK,eAAiBC,GACtB,KAAK,eAAiBwC,GACtB,KAAK,kBAAoBE,GACzB,KAAK,yBAA2BI,GAChC,KAAK,8BAAgCG,GACrC,KAAK,uBAAyBZ,GAC9B,KAAK,wBAA0BZ,GAC/B,KAAK,mBAAqBG,CAC5B,CACA,SAASzvD,GAAWwK,EAAIijB,EAAY,CAClC,SAASwjC,EAAQ3zC,EAAGhS,EAAaxW,GAAc,CAC7C,IAAI4sC,EACEyqB,EAAWviE,GAAgB,YAAY0hB,CAAU,EACvD,GAAIgS,IAAM1e,GAAkB,OAAO4L,EAAG,cACtC,GAAI8S,IAAMte,GAAuB,OAAOwL,EAAG,uBAC3C,GAAI8S,IAAMre,GAAuB,OAAOuL,EAAG,uBAC3C,GAAI8S,IAAMxe,GAAqB,OAAO0L,EAAG,yBACzC,GAAI8S,IAAMv0B,GAAU,OAAOyhB,EAAG,KAC9B,GAAI8S,IAAM3hB,GAAW,OAAO6O,EAAG,MAC/B,GAAI8S,IAAMpe,GAAmB,OAAOsL,EAAG,eACvC,GAAI8S,IAAMztB,GAAS,OAAO2a,EAAG,IAC7B,GAAI8S,IAAMve,GAAiB,OAAOyL,EAAG,aACrC,GAAI8S,IAAM1vB,GAAW,OAAO4c,EAAG,MAC/B,GAAI8S,IAAMzuB,GAAe,OAAO2b,EAAG,WACnC,GAAI8S,IAAM12B,GAAa,OAAO4jB,EAAG,MACjC,GAAI8S,IAAMjkB,GAAW,OAAOmR,EAAG,IAC/B,GAAI8S,IAAMzlB,GAAY,OAAO2S,EAAG,KAChC,GAAI8S,IAAM3qB,GAAiB,OAAO6X,EAAG,UACrC,GAAI8S,IAAM5qB,GAAsB,OAAO8X,EAAG,gBAC1C,GAAI8S,IAAMtxB,GAAa,OAAOwe,EAAG,gBACjC,GAAI8S,IAAMrxB,GAAoB,OAAOue,EAAG,cACxC,GAAI8S,IAAMhjB,GAAW,OAAOkQ,EAAG,IAC/B,GAAI8S,IAAM/iB,GAAkB,OAAOiQ,EAAG,YACtC,GAAI8S,IAAMvjB,GAAU,OAAOyQ,EAAG,GAC9B,GAAI8S,IAAMtjB,GAAiB,OAAOwQ,EAAG,WACrC,GAAI8S,IAAMxlB,GAAmB,OAAO0S,EAAG,aACvC,GAAI8S,IAAMzjB,IAAwByjB,IAAMrkB,IAAyBqkB,IAAMpkB,IAAyBokB,IAAMnkB,GACpG,GAAIgzD,IAAalxD,GAEf,GADAymC,EAAYjU,EAAW,IAAI,oCAAoC,EAC3DiU,IAAc,KAAM,CACtB,GAAIpkB,IAAMzjB,GAAsB,OAAO6nC,EAAU,8BACjD,GAAIpkB,IAAMrkB,GAAuB,OAAOyoC,EAAU,oCAClD,GAAIpkB,IAAMpkB,GAAuB,OAAOwoC,EAAU,oCAClD,GAAIpkB,IAAMnkB,GAAuB,OAAOuoC,EAAU,mCACpD,KACE,QAAO,aAGTA,EAAYjU,EAAW,IAAI,+BAA+B,EACtDiU,IAAc,KAAM,CACtB,GAAIpkB,IAAMzjB,GAAsB,OAAO6nC,EAAU,6BACjD,GAAIpkB,IAAMrkB,GAAuB,OAAOyoC,EAAU,8BAClD,GAAIpkB,IAAMpkB,GAAuB,OAAOwoC,EAAU,8BAClD,GAAIpkB,IAAMnkB,GAAuB,OAAOuoC,EAAU,6BACpD,KACE,QAAO,KAIb,GAAIpkB,IAAM1jB,IAA2B0jB,IAAM3jB,IAA2B2jB,IAAMtkB,IAA4BskB,IAAMvkB,GAE5G,GADA2oC,EAAYjU,EAAW,IAAI,gCAAgC,EACvDiU,IAAc,KAAM,CACtB,GAAIpkB,IAAM1jB,GAAyB,OAAO8nC,EAAU,gCACpD,GAAIpkB,IAAM3jB,GAAyB,OAAO+nC,EAAU,gCACpD,GAAIpkB,IAAMtkB,GAA0B,OAAO0oC,EAAU,iCACrD,GAAIpkB,IAAMvkB,GAA0B,OAAO2oC,EAAU,gCACvD,KACE,QAAO,KAGX,GAAIpkB,IAAM7jB,IAAmB6jB,IAAM5jB,IAAmB4jB,IAAMxkB,GAE1D,GADA4oC,EAAYjU,EAAW,IAAI,8BAA8B,EACrDiU,IAAc,KAAM,CACtB,GAAIpkB,IAAM7jB,IAAmB6jB,IAAM5jB,GAAiB,OAAOyyD,IAAalxD,GAAeymC,EAAU,sBAAwBA,EAAU,qBACnI,GAAIpkB,IAAMxkB,GAAsB,OAAOqzD,IAAalxD,GAAeymC,EAAU,iCAAmCA,EAAU,yBAC5H,KACE,QAAO,KAGX,GAAIpkB,IAAMjlB,IAAwBilB,IAAMhlB,IAAwBglB,IAAM/kB,IAAwB+kB,IAAM9kB,IAAwB8kB,IAAM7kB,IAAwB6kB,IAAM5kB,IAAwB4kB,IAAM3kB,IAAwB2kB,IAAM1kB,IAAwB0kB,IAAMtlB,IAAyBslB,IAAMrlB,IAAyBqlB,IAAMplB,IAAyBolB,IAAMvlB,IAA0BulB,IAAMnlB,IAA0BmlB,IAAMllB,GAErZ,GADAspC,EAAYjU,EAAW,IAAI,+BAA+B,EACtDiU,IAAc,KAAM,CACtB,GAAIpkB,IAAMjlB,GAAsB,OAAO8zD,IAAalxD,GAAeymC,EAAU,qCAAuCA,EAAU,6BAC9H,GAAIpkB,IAAMhlB,GAAsB,OAAO6zD,IAAalxD,GAAeymC,EAAU,qCAAuCA,EAAU,6BAC9H,GAAIpkB,IAAM/kB,GAAsB,OAAO4zD,IAAalxD,GAAeymC,EAAU,qCAAuCA,EAAU,6BAC9H,GAAIpkB,IAAM9kB,GAAsB,OAAO2zD,IAAalxD,GAAeymC,EAAU,qCAAuCA,EAAU,6BAC9H,GAAIpkB,IAAM7kB,GAAsB,OAAO0zD,IAAalxD,GAAeymC,EAAU,qCAAuCA,EAAU,6BAC9H,GAAIpkB,IAAM5kB,GAAsB,OAAOyzD,IAAalxD,GAAeymC,EAAU,qCAAuCA,EAAU,6BAC9H,GAAIpkB,IAAM3kB,GAAsB,OAAOwzD,IAAalxD,GAAeymC,EAAU,qCAAuCA,EAAU,6BAC9H,GAAIpkB,IAAM1kB,GAAsB,OAAOuzD,IAAalxD,GAAeymC,EAAU,qCAAuCA,EAAU,6BAC9H,GAAIpkB,IAAMtlB,GAAuB,OAAOm0D,IAAalxD,GAAeymC,EAAU,sCAAwCA,EAAU,8BAChI,GAAIpkB,IAAMrlB,GAAuB,OAAOk0D,IAAalxD,GAAeymC,EAAU,sCAAwCA,EAAU,8BAChI,GAAIpkB,IAAMplB,GAAuB,OAAOi0D,IAAalxD,GAAeymC,EAAU,sCAAwCA,EAAU,8BAChI,GAAIpkB,IAAMvlB,GAAwB,OAAOo0D,IAAalxD,GAAeymC,EAAU,uCAAyCA,EAAU,+BAClI,GAAIpkB,IAAMnlB,GAAwB,OAAOg0D,IAAalxD,GAAeymC,EAAU,uCAAyCA,EAAU,+BAClI,GAAIpkB,IAAMllB,GAAwB,OAAO+zD,IAAalxD,GAAeymC,EAAU,uCAAyCA,EAAU,8BACpI,KACE,QAAO,KAGX,GAAIpkB,IAAMzkB,IAAoBykB,IAAM/jB,IAA0B+jB,IAAM9jB,GAElE,GADAkoC,EAAYjU,EAAW,IAAI,8BAA8B,EACrDiU,IAAc,KAAM,CACtB,GAAIpkB,IAAMzkB,GAAkB,OAAOszD,IAAalxD,GAAeymC,EAAU,qCAAuCA,EAAU,+BAC1H,GAAIpkB,IAAM/jB,GAAwB,OAAOmoC,EAAU,qCACnD,GAAIpkB,IAAM9jB,GAA0B,OAAOkoC,EAAU,sCACvD,KACE,QAAO,KAGX,GAAIpkB,IAAM5lB,IAAoB4lB,IAAMviB,IAA2BuiB,IAAM7lB,IAA0B6lB,IAAMxiB,GAEnG,GADA4mC,EAAYjU,EAAW,IAAI,8BAA8B,EACrDiU,IAAc,KAAM,CACtB,GAAIpkB,IAAMzkB,GAAkB,OAAO6oC,EAAU,yBAC7C,GAAIpkB,IAAMviB,GAAyB,OAAO2mC,EAAU,gCACpD,GAAIpkB,IAAM7lB,GAAwB,OAAOiqC,EAAU,+BACnD,GAAIpkB,IAAMxiB,GAA+B,OAAO4mC,EAAU,qCAC5D,KACE,QAAO,KAGX,OAAIpkB,IAAMze,GAA2B2L,EAAG,kBACjCA,EAAG8S,CAAC,IAAM,OAAS9S,EAAG8S,CAAC,EAAI,IACpC,CACA,MAAO,CAAE,QAAA2zC,CAAQ,CACnB,CACA,IAAIzpE,GAAc,cAAc+O,EAAkB,CAChD,YAAYwK,EAAQ,CAAC,EAAG,CACtB,MAAM,EACN,KAAK,cAAgB,GACrB,KAAK,QAAUA,CACjB,CACF,EACInS,GAAQ,cAAc0G,EAAS,CACjC,aAAc,CACZ,MAAM,EACN,KAAK,QAAU,GACf,KAAK,KAAO,OACd,CACF,EACI47D,GAAa,CAAE,KAAM,MAAO,EAC5BC,GAAkB,KAAM,CAC1B,aAAc,CACZ,KAAK,WAAa,KAClB,KAAK,MAAQ,KACb,KAAK,MAAQ,IACf,CACA,cAAe,CACb,OAAI,KAAK,QAAU,OACjB,KAAK,MAAQ,IAAIviE,GACjB,KAAK,MAAM,iBAAmB,GAC9B,KAAK,MAAM,QAAU,GACrB,KAAK,MAAM,OAAS,CAAC,EACrB,KAAK,MAAM,WAAa,CAAE,SAAU,EAAM,GAErC,KAAK,KACd,CACA,mBAAoB,CAClB,OAAI,KAAK,aAAe,OACtB,KAAK,WAAa,IAAIA,GACtB,KAAK,WAAW,iBAAmB,GACnC,KAAK,WAAW,QAAU,GAC1B,KAAK,WAAW,kBAAoB,GACpC,KAAK,WAAW,eAAiB,IAAIyQ,EACrC,KAAK,WAAW,mBAAqB,GACrC,KAAK,WAAW,gBAAkB,IAAIA,GAEjC,KAAK,UACd,CACA,cAAe,CACb,OAAI,KAAK,QAAU,OACjB,KAAK,MAAQ,IAAIzQ,GACjB,KAAK,MAAM,iBAAmB,GAC9B,KAAK,MAAM,QAAU,GACrB,KAAK,MAAM,kBAAoB,GAC/B,KAAK,MAAM,eAAiB,IAAIyQ,EAChC,KAAK,MAAM,mBAAqB,GAChC,KAAK,MAAM,gBAAkB,IAAIA,GAE5B,KAAK,KACd,CACA,cAAcyB,EAAO,CACnB,OAAI,KAAK,aAAe,MACtB,KAAK,WAAW,cAAcA,CAAK,EAEjC,KAAK,QAAU,MACjB,KAAK,MAAM,cAAcA,CAAK,EAE5B,KAAK,QAAU,MACjB,KAAK,MAAM,cAAcA,CAAK,EAEzB,IACT,CACA,QAAQswD,EAAa,CACnB,GAAIA,GAAeA,EAAY,KAAM,CACnC,IAAMC,EAAO,KAAK,MAClB,GAAIA,EACF,QAAWC,KAAcF,EAAY,KAAK,OAAO,EAC/C,KAAK,cAAcC,EAAMC,CAAU,CAGzC,CACA,YAAK,cAAc,CAAE,KAAM,YAAa,KAAMF,CAAY,CAAC,EACpD,IACT,CACA,WAAWA,EAAa,CACtB,YAAK,cAAc,CAAE,KAAM,eAAgB,KAAMA,CAAY,CAAC,EAC1D,KAAK,aAAe,OACtB,KAAK,WAAW,QAAU,IAExB,KAAK,QAAU,OACjB,KAAK,MAAM,QAAU,IAEnB,KAAK,QAAU,OACjB,KAAK,MAAM,QAAU,IAEhB,IACT,CACA,OAAOA,EAAaj/B,EAAOo/B,EAAgB,CACzC,IAAIC,EAAY,KACZC,EAAW,KACXC,EAAW,KACTC,EAAY,KAAK,WACjBC,EAAO,KAAK,MACZP,EAAO,KAAK,MAClB,GAAID,GAAej/B,EAAM,QAAQ,kBAAoB,kBAAmB,CACtE,GAAIk/B,GAAQD,EAAY,KAAM,CAC5BM,EAAW,GACX,QAAWJ,KAAcF,EAAY,KAAK,OAAO,EAAG,CAClD,IAAMS,EAAY1/B,EAAM,aAAam/B,EAAYC,CAAc,EACzDO,EAAQ,KAAK,cAAcT,EAAMC,CAAU,EAC7CO,IAAc,OAChBC,EAAM,OAAO,UAAUD,EAAU,UAAU,MAAM,EACjDC,EAAM,OAAO,UAAUA,EAAM,SAAUA,EAAM,SAAUA,EAAM,KAAK,EAClEA,EAAM,uBAAyB,GAC/BA,EAAM,YAAcD,EAAU,QAEhCC,EAAM,QAAUD,IAAc,IAChC,CACA,IAAME,EAAWV,EAAK,OAAO,kBAAkB,EACzCW,EAAWX,EAAK,OAAO,WAAW,EAClCryC,EAAW+yC,EAAS,SAAS,WAAWC,EAAS,QAAQ,EACzDC,EAAkB,IAClBC,EAAY,KACdb,EAAK,WAAW,UAAYryC,EAAWizC,EAAkBC,GAC3Db,EAAK,WAAW,SAAW,GAC3B,KAAK,cAAc,CACjB,KAAM,WACN,WAAYD,EAAY,WACxB,OAAQ,IACV,CAAC,GACQ,CAACC,EAAK,WAAW,UAAYryC,GAAYizC,EAAkBC,IACpEb,EAAK,WAAW,SAAW,GAC3B,KAAK,cAAc,CACjB,KAAM,aACN,WAAYD,EAAY,WACxB,OAAQ,IACV,CAAC,EAEL,MACMQ,IAAS,MAAQR,EAAY,YAC/BK,EAAWt/B,EAAM,QAAQi/B,EAAY,UAAWG,CAAc,EAC1DE,IAAa,OACfG,EAAK,OAAO,UAAUH,EAAS,UAAU,MAAM,EAC/CG,EAAK,OAAO,UAAUA,EAAK,SAAUA,EAAK,SAAUA,EAAK,KAAK,EAC9DA,EAAK,uBAAyB,GAC1BH,EAAS,gBACXG,EAAK,kBAAoB,GACzBA,EAAK,eAAe,KAAKH,EAAS,cAAc,GAEhDG,EAAK,kBAAoB,GAEvBH,EAAS,iBACXG,EAAK,mBAAqB,GAC1BA,EAAK,gBAAgB,KAAKH,EAAS,eAAe,GAElDG,EAAK,mBAAqB,KAK9BD,IAAc,OAChBH,EAAYr/B,EAAM,QAAQi/B,EAAY,eAAgBG,CAAc,EAChEC,IAAc,MAAQC,IAAa,OACrCD,EAAYC,GAEVD,IAAc,OAChBG,EAAU,OAAO,UAAUH,EAAU,UAAU,MAAM,EACrDG,EAAU,OAAO,UAAUA,EAAU,SAAUA,EAAU,SAAUA,EAAU,KAAK,EAClFA,EAAU,uBAAyB,GAC/BH,EAAU,gBACZG,EAAU,kBAAoB,GAC9BA,EAAU,eAAe,KAAKH,EAAU,cAAc,GAEtDG,EAAU,kBAAoB,GAE5BH,EAAU,iBACZG,EAAU,mBAAqB,GAC/BA,EAAU,gBAAgB,KAAKH,EAAU,eAAe,GAExDG,EAAU,mBAAqB,GAEjC,KAAK,cAAcT,EAAU,GAGnC,CACA,OAAIS,IAAc,OAChBA,EAAU,QAAUH,IAAc,MAEhCI,IAAS,OACXA,EAAK,QAAUH,IAAa,MAE1BJ,IAAS,OACXA,EAAK,QAAUK,IAAa,MAEvB,IACT,CAEA,cAAcL,EAAMC,EAAY,CAC9B,GAAID,EAAK,OAAOC,EAAW,SAAS,IAAM,OAAQ,CAChD,IAAMQ,EAAQ,IAAIljE,GAClBkjE,EAAM,iBAAmB,GACzBA,EAAM,QAAU,GAChBT,EAAK,OAAOC,EAAW,SAAS,EAAIQ,EACpCT,EAAK,IAAIS,CAAK,CAChB,CACA,OAAOT,EAAK,OAAOC,EAAW,SAAS,CACzC,CACF,EACIa,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA,GAMpBC,GAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAoBtBC,GAAoB,KAAM,CAC5B,aAAc,CACZ,KAAK,QAAU,KACf,KAAK,KAAO,KACZ,KAAK,UAAY,EACjB,KAAK,SAAW,CAClB,CACA,KAAKhlC,EAAUilC,EAAWxS,EAAa,CACrC,GAAI,KAAK,UAAY,KAAM,CACzB,IAAMrxC,EAAU,IAAIhR,GACd80D,EAAWllC,EAAS,WAAW,IAAI5e,CAAO,EAChD8jD,EAAS,eAAiBD,EAAU,SAChCA,EAAU,WAAaxS,EAAY,WAAawS,EAAU,UAAYxS,EAAY,YACpF,KAAK,UAAYwS,EAAU,UAC3B,KAAK,SAAWA,EAAU,UAE5B,KAAK,QAAU7jD,CACjB,CACF,CACA,QAAQ+jD,EAAU,CAChB,GAAI,KAAK,UAAY,MACf,KAAK,OAAS,KAAM,CACtB,IAAMhR,EAAWgR,EAAS,QAAQ,CAAC,EAAE,SAC/B3oC,EAAW,IAAIxuB,GAAe,CAClC,aAAc82D,GACd,eAAgBC,GAChB,SAAU,CACR,WAAY,CAAE,MAAO,KAAK,OAAQ,EAClC,WAAY,CAAE,MAAO5Q,EAAS,CAAE,EAChC,YAAa,CAAE,MAAOA,EAAS,CAAE,CACnC,CACF,CAAC,EACD,KAAK,KAAO,IAAIpuD,GAAK,IAAIqD,GAAc,GAAI,EAAE,EAAGozB,CAAQ,CAC1D,CAEF,OAAO,KAAK,IACd,CACA,OAAQ,CACN,KAAK,QAAU,KACf,KAAK,KAAO,IACd,CACA,iBAAkB,CAChB,OAAO,KAAK,OACd,CACF,EACI4oC,GAAe,cAAcllE,EAAgB,CAC/C,YAAY8/B,EAAU7iB,EAAI,CACxB,MAAM,EACN,IAAM6gB,EAAQ,KACVqnC,EAAU,KACVC,EAAyB,EACzBpB,EAAiB,KACjBqB,EAAqB,cACrBC,EAAY,EACZC,EAAuB,KACvBC,EAAO,KACPC,EAAY,KACZC,EAAc,KACdC,EAAc,KACdC,EAAU,KACRC,EAAe,IAAIf,GACnB5rC,EAAajc,EAAG,qBAAqB,EACvC6oD,EAAsB,KACtBC,EAAkB,KAChBC,EAAc,CAAC,EACfC,EAAyB,CAAC,EAC1BC,EAAc,IAAIr0D,EACpBs0D,EAAoB,KAClBC,EAAU,IAAIp9D,GACpBo9D,EAAQ,OAAO,OAAO,CAAC,EACvBA,EAAQ,SAAW,IAAIr0D,GACvB,IAAMs0D,EAAU,IAAIr9D,GACpBq9D,EAAQ,OAAO,OAAO,CAAC,EACvBA,EAAQ,SAAW,IAAIt0D,GACvB,IAAM0vB,EAAU,CAAC2kC,EAASC,CAAO,EAC3BpB,EAAW,IAAIhrE,GACrBgrE,EAAS,OAAO,OAAO,CAAC,EACxBA,EAAS,OAAO,OAAO,CAAC,EACxB,IAAIqB,EAAoB,KACpBC,EAAmB,KACvB,KAAK,iBAAmB,GACxB,KAAK,QAAU,GACf,KAAK,aAAe,GACpB,KAAK,cAAgB,SAASjzD,EAAO,CACnC,IAAIkzD,GAAaR,EAAY1yD,CAAK,EAClC,OAAIkzD,KAAe,SACjBA,GAAa,IAAI5C,GACjBoC,EAAY1yD,CAAK,EAAIkzD,IAEhBA,GAAW,kBAAkB,CACtC,EACA,KAAK,kBAAoB,SAASlzD,EAAO,CACvC,IAAIkzD,GAAaR,EAAY1yD,CAAK,EAClC,OAAIkzD,KAAe,SACjBA,GAAa,IAAI5C,GACjBoC,EAAY1yD,CAAK,EAAIkzD,IAEhBA,GAAW,aAAa,CACjC,EACA,KAAK,QAAU,SAASlzD,EAAO,CAC7B,IAAIkzD,GAAaR,EAAY1yD,CAAK,EAClC,OAAIkzD,KAAe,SACjBA,GAAa,IAAI5C,GACjBoC,EAAY1yD,CAAK,EAAIkzD,IAEhBA,GAAW,aAAa,CACjC,EACA,SAASC,EAAelzD,EAAO,CAC7B,IAAMmzD,GAAkBT,EAAuB,QAAQ1yD,EAAM,WAAW,EACxE,GAAImzD,KAAoB,GACtB,OAEF,IAAMF,GAAaR,EAAYU,EAAe,EAC1CF,KAAe,SACjBA,GAAW,OAAOjzD,EAAM,YAAaA,EAAM,MAAOgyD,GAAwBvB,CAAc,EACxFwC,GAAW,cAAc,CAAE,KAAMjzD,EAAM,KAAM,KAAMA,EAAM,WAAY,CAAC,EAE1E,CACA,SAASozD,GAAe,CACtBxB,EAAQ,oBAAoB,SAAUsB,CAAc,EACpDtB,EAAQ,oBAAoB,cAAesB,CAAc,EACzDtB,EAAQ,oBAAoB,YAAasB,CAAc,EACvDtB,EAAQ,oBAAoB,UAAWsB,CAAc,EACrDtB,EAAQ,oBAAoB,eAAgBsB,CAAc,EAC1DtB,EAAQ,oBAAoB,aAAcsB,CAAc,EACxDtB,EAAQ,oBAAoB,MAAOwB,CAAY,EAC/CxB,EAAQ,oBAAoB,qBAAsByB,CAAoB,EACtE,QAASnzD,EAAI,EAAGA,EAAIuyD,EAAY,OAAQvyD,IAAK,CAC3C,IAAMowD,GAAcoC,EAAuBxyD,CAAC,EACxCowD,KAAgB,OACpBoC,EAAuBxyD,CAAC,EAAI,KAC5BuyD,EAAYvyD,CAAC,EAAE,WAAWowD,EAAW,EACvC,CACAyC,EAAoB,KACpBC,EAAmB,KACnBV,EAAa,MAAM,EACnB/lC,EAAS,gBAAgBgmC,CAAmB,EAC5CH,EAAc,KACdD,EAAc,KACdD,EAAY,KACZN,EAAU,KACVY,EAAkB,KAClBvzC,GAAU,KAAK,EACfsL,EAAM,aAAe,GACrBgC,EAAS,cAAcqmC,CAAiB,EACxCrmC,EAAS,QAAQomC,EAAY,MAAOA,EAAY,OAAQ,EAAK,EAC7DpoC,EAAM,cAAc,CAAE,KAAM,YAAa,CAAC,CAC5C,CACA,KAAK,0BAA4B,SAASzpB,EAAO,CAC/C+wD,EAAyB/wD,EACrBypB,EAAM,eAAiB,IACzB,QAAQ,KAAK,uEAAuE,CAExF,EACA,KAAK,sBAAwB,SAASzpB,EAAO,CAC3CgxD,EAAqBhxD,EACjBypB,EAAM,eAAiB,IACzB,QAAQ,KAAK,0EAA0E,CAE3F,EACA,KAAK,kBAAoB,UAAW,CAClC,OAAOynC,GAAwBvB,CACjC,EACA,KAAK,kBAAoB,SAAS6C,EAAO,CACvCtB,EAAuBsB,CACzB,EACA,KAAK,aAAe,UAAW,CAC7B,OAAOnB,IAAgB,KAAOA,EAAcC,CAC9C,EACA,KAAK,WAAa,UAAW,CAC3B,OAAOF,CACT,EACA,KAAK,SAAW,UAAW,CACzB,OAAOG,CACT,EACA,KAAK,WAAa,UAAW,CAC3B,OAAOT,CACT,EACA,KAAK,WAAa,SAAS9wD,EAAO,CAChC,OAAOyyD,GAAQ,KAAM,KAAM,WAAa,CAEtC,GADA3B,EAAU9wD,EACN8wD,IAAY,KAAM,CAepB,GAdAW,EAAsBhmC,EAAS,gBAAgB,EAC/CqlC,EAAQ,iBAAiB,SAAUsB,CAAc,EACjDtB,EAAQ,iBAAiB,cAAesB,CAAc,EACtDtB,EAAQ,iBAAiB,YAAasB,CAAc,EACpDtB,EAAQ,iBAAiB,UAAWsB,CAAc,EAClDtB,EAAQ,iBAAiB,eAAgBsB,CAAc,EACvDtB,EAAQ,iBAAiB,aAAcsB,CAAc,EACrDtB,EAAQ,iBAAiB,MAAOwB,CAAY,EAC5CxB,EAAQ,iBAAiB,qBAAsByB,CAAoB,EAC/D1tC,EAAW,eAAiB,KAC9B,MAAMjc,EAAG,iBAAiB,GAE5BkpD,EAAoBrmC,EAAS,cAAc,EAC3CA,EAAS,QAAQomC,CAAW,EACxBf,EAAQ,YAAY,SAAW,OAAQ,CACzC,IAAM4B,GAAY,CAChB,UAAW7tC,EAAW,UACtB,MAAO,GACP,MAAOA,EAAW,MAClB,QAASA,EAAW,QACpB,uBAAAksC,CACF,EACAO,EAAc,IAAI,aAAaR,EAASloD,EAAI8pD,EAAS,EACrD5B,EAAQ,kBAAkB,CAAE,UAAWQ,CAAY,CAAC,EACpD7lC,EAAS,cAAc,CAAC,EACxBA,EAAS,QAAQ6lC,EAAY,iBAAkBA,EAAY,kBAAmB,EAAK,EACnFI,EAAkB,IAAIxzD,GACpBozD,EAAY,iBACZA,EAAY,kBACZ,CACE,OAAQr7D,GACR,KAAM+G,GACN,WAAYyuB,EAAS,iBACrB,cAAe5G,EAAW,OAC5B,CACF,CACF,KAAO,CACL,IAAI8tC,GAAc,KACdjI,GAAY,KACZkI,GAAgB,KAChB/tC,EAAW,QACb+tC,GAAgB/tC,EAAW,QAAUjc,EAAG,iBAAmBA,EAAG,kBAC9D+pD,GAAc9tC,EAAW,QAAUx6B,GAAqBD,GACxDsgE,GAAY7lC,EAAW,QAAU5nB,GAAqBE,IAExD,IAAM01D,GAAsB,CAC1B,YAAajqD,EAAG,MAChB,YAAagqD,GACb,YAAa7B,CACf,EACAK,EAAY,IAAI,eAAeN,EAASloD,CAAE,EAC1CyoD,EAAcD,EAAU,sBAAsByB,EAAmB,EACjE/B,EAAQ,kBAAkB,CAAE,OAAQ,CAACO,CAAW,CAAE,CAAC,EACnD5lC,EAAS,cAAc,CAAC,EACxBA,EAAS,QAAQ4lC,EAAY,aAAcA,EAAY,cAAe,EAAK,EAC3EK,EAAkB,IAAIxzD,GACpBmzD,EAAY,aACZA,EAAY,cACZ,CACE,OAAQp7D,GACR,KAAM+G,GACN,aAAc,IAAI1S,GAAa+mE,EAAY,aAAcA,EAAY,cAAe3G,GAAW,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQiI,EAAW,EAC1J,cAAe9tC,EAAW,QAC1B,WAAY4G,EAAS,iBACrB,QAAS5G,EAAW,UAAY,EAAI,EACpC,mBAAoBwsC,EAAY,oBAAsB,EACxD,CACF,CACF,CACAK,EAAgB,iBAAmB,GACnC,KAAK,aAAaT,CAAS,EAC3BC,EAAuB,KACvBvB,EAAiB,MAAMmB,EAAQ,sBAAsBE,CAAkB,EACvE7yC,GAAU,WAAW2yC,CAAO,EAC5B3yC,GAAU,MAAM,EAChBsL,EAAM,aAAe,GACrBA,EAAM,cAAc,CAAE,KAAM,cAAe,CAAC,CAC9C,CACF,CAAC,CACH,EACA,KAAK,wBAA0B,UAAW,CACxC,GAAIqnC,IAAY,KACd,OAAOA,EAAQ,oBAEnB,EACA,KAAK,gBAAkB,UAAW,CAChC,OAAOU,EAAa,gBAAgB,CACtC,EACA,SAASe,EAAqBrzD,EAAO,CACnC,QAASE,GAAI,EAAGA,GAAIF,EAAM,QAAQ,OAAQE,KAAK,CAC7C,IAAMowD,GAActwD,EAAM,QAAQE,EAAC,EAC7BH,GAAQ2yD,EAAuB,QAAQpC,EAAW,EACpDvwD,IAAS,IACX2yD,EAAuB3yD,EAAK,EAAI,KAChC0yD,EAAY1yD,EAAK,EAAE,WAAWuwD,EAAW,EAE7C,CACA,QAASpwD,GAAI,EAAGA,GAAIF,EAAM,MAAM,OAAQE,KAAK,CAC3C,IAAMowD,GAActwD,EAAM,MAAME,EAAC,EAC7BizD,GAAkBT,EAAuB,QAAQpC,EAAW,EAChE,GAAI6C,KAAoB,GAAI,CAC1B,QAAS1xC,GAAK,EAAGA,GAAKgxC,EAAY,OAAQhxC,KACxC,GAAIA,IAAMixC,EAAuB,OAAQ,CACvCA,EAAuB,KAAKpC,EAAW,EACvC6C,GAAkB1xC,GAClB,KACF,SAAWixC,EAAuBjxC,EAAE,IAAM,KAAM,CAC9CixC,EAAuBjxC,EAAE,EAAI6uC,GAC7B6C,GAAkB1xC,GAClB,KACF,CAEF,GAAI0xC,KAAoB,GAAI,KAC9B,CACA,IAAMF,GAAaR,EAAYU,EAAe,EAC1CF,IACFA,GAAW,QAAQ3C,EAAW,CAElC,CACF,CACA,IAAMsD,EAAa,IAAIr1D,EACjBs1D,EAAa,IAAIt1D,EACvB,SAASu1D,GAAuBhiD,EAAQiiD,GAAUC,GAAU,CAC1DJ,EAAW,sBAAsBG,GAAS,WAAW,EACrDF,EAAW,sBAAsBG,GAAS,WAAW,EACrD,IAAMC,GAAML,EAAW,WAAWC,CAAU,EACtCK,GAAQH,GAAS,iBAAiB,SAClCI,GAAQH,GAAS,iBAAiB,SAClC33C,GAAO63C,GAAM,EAAE,GAAKA,GAAM,EAAE,EAAI,GAChC53C,GAAM43C,GAAM,EAAE,GAAKA,GAAM,EAAE,EAAI,GAC/BE,IAAUF,GAAM,CAAC,EAAI,GAAKA,GAAM,CAAC,EACjCG,GAAaH,GAAM,CAAC,EAAI,GAAKA,GAAM,CAAC,EACpCI,IAAWJ,GAAM,CAAC,EAAI,GAAKA,GAAM,CAAC,EAClCK,IAAYJ,GAAM,CAAC,EAAI,GAAKA,GAAM,CAAC,EACnCl4C,GAAOI,GAAOi4C,GACdp4C,EAAQG,GAAOk4C,GACfC,GAAUP,IAAO,CAACK,GAAUC,IAC5BE,GAAUD,GAAU,CAACF,GAM3B,GALAP,GAAS,YAAY,UAAUjiD,EAAO,SAAUA,EAAO,WAAYA,EAAO,KAAK,EAC/EA,EAAO,WAAW2iD,EAAO,EACzB3iD,EAAO,WAAW0iD,EAAO,EACzB1iD,EAAO,YAAY,QAAQA,EAAO,SAAUA,EAAO,WAAYA,EAAO,KAAK,EAC3EA,EAAO,mBAAmB,KAAKA,EAAO,WAAW,EAAE,OAAO,EACtDoiD,GAAM,EAAE,IAAM,GAChBpiD,EAAO,iBAAiB,KAAKiiD,GAAS,gBAAgB,EACtDjiD,EAAO,wBAAwB,KAAKiiD,GAAS,uBAAuB,MAC/D,CACL,IAAMW,GAAQr4C,GAAOm4C,GACfG,EAAOr4C,GAAMk4C,GACbI,EAAQ34C,GAAOw4C,GACfI,EAAS34C,GAAS+3C,GAAMQ,IACxBK,EAAOV,GAAS93C,GAAMq4C,EAAOD,GAC7BK,EAAUV,EAAY/3C,GAAMq4C,EAAOD,GACzC5iD,EAAO,iBAAiB,gBAAgB8iD,EAAOC,EAAQC,EAAMC,EAASL,GAAOC,CAAI,EACjF7iD,EAAO,wBAAwB,KAAKA,EAAO,gBAAgB,EAAE,OAAO,CACtE,CACF,CACA,SAASkjD,EAAaljD,EAAQqM,GAAQ,CAChCA,KAAW,KACbrM,EAAO,YAAY,KAAKA,EAAO,MAAM,EAErCA,EAAO,YAAY,iBAAiBqM,GAAO,YAAarM,EAAO,MAAM,EAEvEA,EAAO,mBAAmB,KAAKA,EAAO,WAAW,EAAE,OAAO,CAC5D,CACA,KAAK,aAAe,SAASA,EAAQ,CACnC,GAAI8/C,IAAY,KAAM,OACtB,IAAIqD,GAAYnjD,EAAO,KACnBojD,GAAWpjD,EAAO,IAClBwgD,EAAa,UAAY,OACvBA,EAAa,UAAY,IAAG2C,GAAY3C,EAAa,WACrDA,EAAa,SAAW,IAAG4C,GAAW5C,EAAa,WAEzDZ,EAAS,KAAOoB,EAAQ,KAAOD,EAAQ,KAAOoC,GAC9CvD,EAAS,IAAMoB,EAAQ,IAAMD,EAAQ,IAAMqC,IACvCnC,IAAsBrB,EAAS,MAAQsB,IAAqBtB,EAAS,OACvEE,EAAQ,kBAAkB,CACxB,UAAWF,EAAS,KACpB,SAAUA,EAAS,GACrB,CAAC,EACDqB,EAAoBrB,EAAS,KAC7BsB,EAAmBtB,EAAS,KAE9B,IAAMvzC,GAASrM,EAAO,OAChBqjD,GAAWzD,EAAS,QAC1BsD,EAAatD,EAAUvzC,EAAM,EAC7B,QAASje,GAAI,EAAGA,GAAIi1D,GAAS,OAAQj1D,KACnC80D,EAAaG,GAASj1D,EAAC,EAAGie,EAAM,EAE9Bg3C,GAAS,SAAW,EACtBrB,GAAuBpC,EAAUmB,EAASC,CAAO,EAEjDpB,EAAS,iBAAiB,KAAKmB,EAAQ,gBAAgB,EAEzDuC,GAAiBtjD,EAAQ4/C,EAAUvzC,EAAM,CAC3C,EACA,SAASi3C,GAAiBtjD,EAAQujD,GAAWl3C,GAAQ,CAC/CA,KAAW,KACbrM,EAAO,OAAO,KAAKujD,GAAU,WAAW,GAExCvjD,EAAO,OAAO,KAAKqM,GAAO,WAAW,EACrCrM,EAAO,OAAO,OAAO,EACrBA,EAAO,OAAO,SAASujD,GAAU,WAAW,GAE9CvjD,EAAO,OAAO,UAAUA,EAAO,SAAUA,EAAO,WAAYA,EAAO,KAAK,EACxEA,EAAO,kBAAkB,EAAI,EAC7BA,EAAO,iBAAiB,KAAKujD,GAAU,gBAAgB,EACvDvjD,EAAO,wBAAwB,KAAKujD,GAAU,uBAAuB,EACjEvjD,EAAO,sBACTA,EAAO,IAAMvR,GAAU,EAAI,KAAK,KAAK,EAAIuR,EAAO,iBAAiB,SAAS,CAAC,CAAC,EAC5EA,EAAO,KAAO,EAElB,CACA,KAAK,UAAY,UAAW,CAC1B,OAAO4/C,CACT,EACA,KAAK,aAAe,UAAW,CAC7B,GAAI,EAAAS,IAAgB,MAAQC,IAAgB,MAG5C,OAAOL,CACT,EACA,KAAK,aAAe,SAASjxD,EAAO,CAClCixD,EAAYjxD,EACRqxD,IAAgB,OAClBA,EAAY,eAAiBrxD,GAE3BsxD,IAAgB,MAAQA,EAAY,iBAAmB,SACzDA,EAAY,eAAiBtxD,EAEjC,EACA,KAAK,gBAAkB,UAAW,CAChC,OAAOwxD,EAAa,UAAY,IAClC,EACA,KAAK,oBAAsB,UAAW,CACpC,OAAOA,EAAa,QAAQZ,CAAQ,CACtC,EACA,IAAI4D,GAA2B,KAC/B,SAASnkC,GAAiBC,EAAMC,GAAO,CAGrC,GAFA4gC,EAAO5gC,GAAM,cAAc2gC,GAAwBvB,CAAc,EACjE4B,EAAUhhC,GACN4gC,IAAS,KAAM,CACjB,IAAMsD,GAAQtD,EAAK,MACfG,IAAgB,OAClB7lC,EAAS,2BAA2BimC,EAAiBJ,EAAY,WAAW,EAC5E7lC,EAAS,gBAAgBimC,CAAe,GAE1C,IAAIgD,GAAsB,GACtBD,GAAM,SAAW7D,EAAS,QAAQ,SACpCA,EAAS,QAAQ,OAAS,EAC1B8D,GAAsB,IAExB,QAASt1D,GAAI,EAAGA,GAAIq1D,GAAM,OAAQr1D,KAAK,CACrC,IAAMqtB,GAAOgoC,GAAMr1D,EAAC,EAChBwgD,GAAW,KACf,GAAI0R,IAAgB,KAClB1R,GAAW0R,EAAY,YAAY7kC,EAAI,MAClC,CACL,IAAMkoC,EAAavD,EAAU,gBAAgBC,EAAa5kC,EAAI,EAC9DmzB,GAAW+U,EAAW,SAClBv1D,KAAM,IACRqsB,EAAS,wBACPimC,EACAiD,EAAW,aACXtD,EAAY,kBAAoB,OAASsD,EAAW,mBACtD,EACAlpC,EAAS,gBAAgBimC,CAAe,EAE5C,CACA,IAAI1gD,GAASoc,EAAQhuB,EAAC,EAClB4R,KAAW,SACbA,GAAS,IAAIrc,GACbqc,GAAO,OAAO,OAAO5R,EAAC,EACtB4R,GAAO,SAAW,IAAItT,GACtB0vB,EAAQhuB,EAAC,EAAI4R,IAEfA,GAAO,OAAO,UAAUyb,GAAK,UAAU,MAAM,EAC7Czb,GAAO,OAAO,UAAUA,GAAO,SAAUA,GAAO,WAAYA,GAAO,KAAK,EACxEA,GAAO,iBAAiB,UAAUyb,GAAK,gBAAgB,EACvDzb,GAAO,wBAAwB,KAAKA,GAAO,gBAAgB,EAAE,OAAO,EACpEA,GAAO,SAAS,IAAI4uC,GAAS,EAAGA,GAAS,EAAGA,GAAS,MAAOA,GAAS,MAAM,EACvExgD,KAAM,IACRwxD,EAAS,OAAO,KAAK5/C,GAAO,MAAM,EAClC4/C,EAAS,OAAO,UAAUA,EAAS,SAAUA,EAAS,WAAYA,EAAS,KAAK,GAE9E8D,KAAwB,IAC1B9D,EAAS,QAAQ,KAAK5/C,EAAM,CAEhC,CACA,IAAM4jD,GAAkB9D,EAAQ,gBAChC,GAAI8D,IAAmBA,GAAgB,SAAS,eAAe,EAAG,CAChE,IAAMlE,GAAYU,EAAU,oBAAoBqD,GAAM,CAAC,CAAC,EACpD/D,IAAaA,GAAU,SAAWA,GAAU,SAC9Cc,EAAa,KAAK/lC,EAAUilC,GAAWI,EAAQ,WAAW,CAE9D,CACF,CACA,QAAS1xD,GAAI,EAAGA,GAAIuyD,EAAY,OAAQvyD,KAAK,CAC3C,IAAMowD,GAAcoC,EAAuBxyD,EAAC,EACtC+yD,GAAaR,EAAYvyD,EAAC,EAC5BowD,KAAgB,MAAQ2C,KAAe,QACzCA,GAAW,OAAO3C,GAAaj/B,GAAO2gC,GAAwBvB,CAAc,CAEhF,CACI6E,IAA0BA,GAAyBlkC,EAAMC,EAAK,EAC9DA,GAAM,gBACR9G,EAAM,cAAc,CAAE,KAAM,iBAAkB,KAAM8G,EAAM,CAAC,EAE7DghC,EAAU,IACZ,CACA,IAAMpzC,GAAY,IAAI8R,GACtB9R,GAAU,iBAAiBkS,EAAgB,EAC3C,KAAK,iBAAmB,SAAShgB,EAAU,CACzCmkD,GAA2BnkD,CAC7B,EACA,KAAK,QAAU,UAAW,CAC1B,CACF,CACF,EACIwkD,GAAsB,IAAInpE,GAC1BopE,GAAsB,IAAIxjE,GAC9B,SAASyjE,GAAetpC,EAAUiW,EAAY,CAC5C,SAASszB,EAAwB7a,EAAKnY,EAAS,CACzCmY,EAAI,mBAAqB,IAC3BA,EAAI,aAAa,EAEnBnY,EAAQ,MAAM,KAAKmY,EAAI,MAAM,CAC/B,CACA,SAAS8a,EAAmB5pC,EAAUsrB,EAAK,CACzCA,EAAI,MAAM,OAAOtrB,EAAS,SAAS,MAAOG,GAA0BC,CAAQ,CAAC,EACzEkrB,EAAI,OACNtrB,EAAS,QAAQ,MAAQsrB,EAAI,KAC7BtrB,EAAS,OAAO,MAAQsrB,EAAI,KACnBA,EAAI,YACbtrB,EAAS,WAAW,MAAQsrB,EAAI,QAEpC,CACA,SAASue,EAAwB7pC,EAAUpD,EAAUktC,EAAYxoD,EAAQyoD,EAA0B,CAC7FntC,EAAS,qBAEFA,EAAS,sBADlBotC,EAAsBhqC,EAAUpD,CAAQ,EAG/BA,EAAS,oBAClBotC,EAAsBhqC,EAAUpD,CAAQ,EACxCqtC,EAAoBjqC,EAAUpD,CAAQ,GAC7BA,EAAS,qBAClBotC,EAAsBhqC,EAAUpD,CAAQ,EACxCstC,EAAqBlqC,EAAUpD,CAAQ,GAC9BA,EAAS,wBAClBotC,EAAsBhqC,EAAUpD,CAAQ,EACxCutC,EAAwBnqC,EAAUpD,CAAQ,EACtCA,EAAS,wBACXwtC,EAAwBpqC,EAAUpD,EAAUmtC,CAAwB,GAE7DntC,EAAS,sBAClBotC,EAAsBhqC,EAAUpD,CAAQ,EACxCytC,EAAsBrqC,EAAUpD,CAAQ,GAC/BA,EAAS,oBAClBotC,EAAsBhqC,EAAUpD,CAAQ,EAC/BA,EAAS,wBAClBotC,EAAsBhqC,EAAUpD,CAAQ,EACxC0tC,EAAwBtqC,EAAUpD,CAAQ,GACjCA,EAAS,qBAClBotC,EAAsBhqC,EAAUpD,CAAQ,EAC/BA,EAAS,qBAClB2tC,EAAoBvqC,EAAUpD,CAAQ,EAClCA,EAAS,sBACX4tC,EAAoBxqC,EAAUpD,CAAQ,GAE/BA,EAAS,iBAClB6tC,EAAsBzqC,EAAUpD,EAAUktC,EAAYxoD,CAAM,EACnDsb,EAAS,iBAClB8tC,EAAuB1qC,EAAUpD,CAAQ,EAChCA,EAAS,kBAClBoD,EAAS,MAAM,MAAM,KAAKpD,EAAS,KAAK,EACxCoD,EAAS,QAAQ,MAAQpD,EAAS,SACzBA,EAAS,mBAClBA,EAAS,mBAAqB,GAElC,CACA,SAASotC,EAAsBhqC,EAAUpD,EAAU,CACjDoD,EAAS,QAAQ,MAAQpD,EAAS,QAC9BA,EAAS,OACXoD,EAAS,QAAQ,MAAM,KAAKpD,EAAS,KAAK,EAExCA,EAAS,UACXoD,EAAS,SAAS,MAAM,KAAKpD,EAAS,QAAQ,EAAE,eAAeA,EAAS,iBAAiB,EAEvFA,EAAS,MACXoD,EAAS,IAAI,MAAQpD,EAAS,IAC9B+sC,EAAwB/sC,EAAS,IAAKoD,EAAS,YAAY,GAEzDpD,EAAS,WACXoD,EAAS,SAAS,MAAQpD,EAAS,SACnC+sC,EAAwB/sC,EAAS,SAAUoD,EAAS,iBAAiB,GAEnEpD,EAAS,UACXoD,EAAS,QAAQ,MAAQpD,EAAS,QAClC+sC,EAAwB/sC,EAAS,QAASoD,EAAS,gBAAgB,EACnEA,EAAS,UAAU,MAAQpD,EAAS,UAChCA,EAAS,OAAS5hC,KACpBglC,EAAS,UAAU,OAAS,KAG5BpD,EAAS,YACXoD,EAAS,UAAU,MAAQpD,EAAS,UACpC+sC,EAAwB/sC,EAAS,UAAWoD,EAAS,kBAAkB,EACvEA,EAAS,YAAY,MAAM,KAAKpD,EAAS,WAAW,EAChDA,EAAS,OAAS5hC,IACpBglC,EAAS,YAAY,MAAM,OAAO,GAGlCpD,EAAS,kBACXoD,EAAS,gBAAgB,MAAQpD,EAAS,gBAC1C+sC,EAAwB/sC,EAAS,gBAAiBoD,EAAS,wBAAwB,EACnFA,EAAS,kBAAkB,MAAQpD,EAAS,kBAC5CoD,EAAS,iBAAiB,MAAQpD,EAAS,kBAEzCA,EAAS,cACXoD,EAAS,YAAY,MAAQpD,EAAS,YACtC+sC,EAAwB/sC,EAAS,YAAaoD,EAAS,oBAAoB,GAEzEpD,EAAS,cACXoD,EAAS,YAAY,MAAQpD,EAAS,YACtC+sC,EAAwB/sC,EAAS,YAAaoD,EAAS,oBAAoB,GAEzEpD,EAAS,UAAY,IACvBoD,EAAS,UAAU,MAAQpD,EAAS,WAEtC,IAAMsa,EAAqBb,EAAW,IAAIzZ,CAAQ,EAC5C4uB,EAAStU,EAAmB,OAC5ByzB,EAAiBzzB,EAAmB,eACtCsU,IACFxrB,EAAS,OAAO,MAAQwrB,EACxBge,GAAI,KAAKmB,CAAc,EACvBnB,GAAI,GAAK,GACTA,GAAI,GAAK,GACTA,GAAI,GAAK,GACLhe,EAAO,eAAiBA,EAAO,wBAA0B,KAC3Dge,GAAI,GAAK,GACTA,GAAI,GAAK,IAEXxpC,EAAS,eAAe,MAAM,eAAeypC,GAAI,sBAAsBD,EAAG,CAAC,EAC3ExpC,EAAS,WAAW,MAAQwrB,EAAO,eAAiBA,EAAO,wBAA0B,GAAQ,GAAK,EAClGxrB,EAAS,aAAa,MAAQpD,EAAS,aACvCoD,EAAS,IAAI,MAAQpD,EAAS,IAC9BoD,EAAS,gBAAgB,MAAQpD,EAAS,iBAExCA,EAAS,WACXoD,EAAS,SAAS,MAAQpD,EAAS,SACnCoD,EAAS,kBAAkB,MAAQpD,EAAS,kBAC5C+sC,EAAwB/sC,EAAS,SAAUoD,EAAS,iBAAiB,GAEnEpD,EAAS,QACXoD,EAAS,MAAM,MAAQpD,EAAS,MAChCoD,EAAS,eAAe,MAAQpD,EAAS,eACzC+sC,EAAwB/sC,EAAS,MAAOoD,EAAS,cAAc,EAEnE,CACA,SAASuqC,EAAoBvqC,EAAUpD,EAAU,CAC/CoD,EAAS,QAAQ,MAAM,KAAKpD,EAAS,KAAK,EAC1CoD,EAAS,QAAQ,MAAQpD,EAAS,QAC9BA,EAAS,MACXoD,EAAS,IAAI,MAAQpD,EAAS,IAC9B+sC,EAAwB/sC,EAAS,IAAKoD,EAAS,YAAY,EAE/D,CACA,SAASwqC,EAAoBxqC,EAAUpD,EAAU,CAC/CoD,EAAS,SAAS,MAAQpD,EAAS,SACnCoD,EAAS,UAAU,MAAQpD,EAAS,SAAWA,EAAS,QACxDoD,EAAS,MAAM,MAAQpD,EAAS,KAClC,CACA,SAAS6tC,EAAsBzqC,EAAUpD,EAAUktC,EAAYxoD,EAAQ,CACrE0e,EAAS,QAAQ,MAAM,KAAKpD,EAAS,KAAK,EAC1CoD,EAAS,QAAQ,MAAQpD,EAAS,QAClCoD,EAAS,KAAK,MAAQpD,EAAS,KAAOktC,EACtC9pC,EAAS,MAAM,MAAQ1e,EAAS,GAC5Bsb,EAAS,MACXoD,EAAS,IAAI,MAAQpD,EAAS,IAC9B+sC,EAAwB/sC,EAAS,IAAKoD,EAAS,WAAW,GAExDpD,EAAS,WACXoD,EAAS,SAAS,MAAQpD,EAAS,SACnC+sC,EAAwB/sC,EAAS,SAAUoD,EAAS,iBAAiB,GAEnEpD,EAAS,UAAY,IACvBoD,EAAS,UAAU,MAAQpD,EAAS,UAExC,CACA,SAAS8tC,EAAuB1qC,EAAUpD,EAAU,CAClDoD,EAAS,QAAQ,MAAM,KAAKpD,EAAS,KAAK,EAC1CoD,EAAS,QAAQ,MAAQpD,EAAS,QAClCoD,EAAS,SAAS,MAAQpD,EAAS,SAC/BA,EAAS,MACXoD,EAAS,IAAI,MAAQpD,EAAS,IAC9B+sC,EAAwB/sC,EAAS,IAAKoD,EAAS,YAAY,GAEzDpD,EAAS,WACXoD,EAAS,SAAS,MAAQpD,EAAS,SACnC+sC,EAAwB/sC,EAAS,SAAUoD,EAAS,iBAAiB,GAEnEpD,EAAS,UAAY,IACvBoD,EAAS,UAAU,MAAQpD,EAAS,UAExC,CACA,SAASstC,EAAqBlqC,EAAUpD,EAAU,CAChDoD,EAAS,SAAS,MAAM,KAAKpD,EAAS,QAAQ,EAC9CoD,EAAS,UAAU,MAAQ,KAAK,IAAIpD,EAAS,UAAW,IAAI,CAC9D,CACA,SAASqtC,EAAoBjqC,EAAUpD,EAAU,CAC3CA,EAAS,cACXoD,EAAS,YAAY,MAAQpD,EAAS,YAE1C,CACA,SAASutC,EAAwBnqC,EAAUpD,EAAU,CACnDoD,EAAS,UAAU,MAAQpD,EAAS,UAChCA,EAAS,eACXoD,EAAS,aAAa,MAAQpD,EAAS,aACvC+sC,EAAwB/sC,EAAS,aAAcoD,EAAS,qBAAqB,GAE/EA,EAAS,UAAU,MAAQpD,EAAS,UAChCA,EAAS,eACXoD,EAAS,aAAa,MAAQpD,EAAS,aACvC+sC,EAAwB/sC,EAAS,aAAcoD,EAAS,qBAAqB,GAE3EpD,EAAS,SACXoD,EAAS,gBAAgB,MAAQpD,EAAS,gBAE9C,CACA,SAASwtC,EAAwBpqC,EAAUpD,EAAUmtC,EAA0B,CAC7E/pC,EAAS,IAAI,MAAQpD,EAAS,IAC1BA,EAAS,MAAQ,IACnBoD,EAAS,WAAW,MAAM,KAAKpD,EAAS,UAAU,EAAE,eAAeA,EAAS,KAAK,EACjFoD,EAAS,eAAe,MAAQpD,EAAS,eACrCA,EAAS,gBACXoD,EAAS,cAAc,MAAQpD,EAAS,cACxC+sC,EAAwB/sC,EAAS,cAAeoD,EAAS,sBAAsB,GAE7EpD,EAAS,oBACXoD,EAAS,kBAAkB,MAAQpD,EAAS,kBAC5C+sC,EAAwB/sC,EAAS,kBAAmBoD,EAAS,0BAA0B,IAGvFpD,EAAS,UAAY,IACvBoD,EAAS,UAAU,MAAQpD,EAAS,UACpCoD,EAAS,mBAAmB,MAAQpD,EAAS,mBACzCA,EAAS,eACXoD,EAAS,aAAa,MAAQpD,EAAS,aACvC+sC,EAAwB/sC,EAAS,aAAcoD,EAAS,qBAAqB,GAE3EpD,EAAS,wBACXoD,EAAS,sBAAsB,MAAQpD,EAAS,sBAChD+sC,EAAwB/sC,EAAS,sBAAuBoD,EAAS,8BAA8B,GAE7FpD,EAAS,qBACXoD,EAAS,mBAAmB,MAAQpD,EAAS,mBAC7C+sC,EAAwB/sC,EAAS,mBAAoBoD,EAAS,2BAA2B,EACzFA,EAAS,qBAAqB,MAAM,KAAKpD,EAAS,oBAAoB,EAClEA,EAAS,OAAS5hC,IACpBglC,EAAS,qBAAqB,MAAM,OAAO,IAI7CpD,EAAS,WAAa,IACxBoD,EAAS,WAAW,MAAQpD,EAAS,YAEnCA,EAAS,YAAc,IACzBoD,EAAS,YAAY,MAAQpD,EAAS,YACtCoD,EAAS,eAAe,MAAQpD,EAAS,eACzCoD,EAAS,4BAA4B,MAAQpD,EAAS,0BAA0B,CAAC,EACjFoD,EAAS,4BAA4B,MAAQpD,EAAS,0BAA0B,CAAC,EAC7EA,EAAS,iBACXoD,EAAS,eAAe,MAAQpD,EAAS,eACzC+sC,EAAwB/sC,EAAS,eAAgBoD,EAAS,uBAAuB,GAE/EpD,EAAS,0BACXoD,EAAS,wBAAwB,MAAQpD,EAAS,wBAClD+sC,EAAwB/sC,EAAS,wBAAyBoD,EAAS,gCAAgC,IAGnGpD,EAAS,aAAe,IAC1BoD,EAAS,aAAa,MAAQpD,EAAS,aACvCoD,EAAS,uBAAuB,MAAQ+pC,EAAyB,QACjE/pC,EAAS,wBAAwB,MAAM,IAAI+pC,EAAyB,MAAOA,EAAyB,MAAM,EACtGntC,EAAS,kBACXoD,EAAS,gBAAgB,MAAQpD,EAAS,gBAC1C+sC,EAAwB/sC,EAAS,gBAAiBoD,EAAS,wBAAwB,GAErFA,EAAS,UAAU,MAAQpD,EAAS,UAChCA,EAAS,eACXoD,EAAS,aAAa,MAAQpD,EAAS,aACvC+sC,EAAwB/sC,EAAS,aAAcoD,EAAS,qBAAqB,GAE/EA,EAAS,oBAAoB,MAAQpD,EAAS,oBAC9CoD,EAAS,iBAAiB,MAAM,KAAKpD,EAAS,gBAAgB,GAE5DA,EAAS,WAAa,IACxBoD,EAAS,iBAAiB,MAAM,IAAIpD,EAAS,WAAa,KAAK,IAAIA,EAAS,kBAAkB,EAAGA,EAAS,WAAa,KAAK,IAAIA,EAAS,kBAAkB,CAAC,EACxJA,EAAS,gBACXoD,EAAS,cAAc,MAAQpD,EAAS,cACxC+sC,EAAwB/sC,EAAS,cAAeoD,EAAS,sBAAsB,IAGnFA,EAAS,kBAAkB,MAAQpD,EAAS,kBAC5CoD,EAAS,cAAc,MAAM,KAAKpD,EAAS,aAAa,EACpDA,EAAS,mBACXoD,EAAS,iBAAiB,MAAQpD,EAAS,iBAC3C+sC,EAAwB/sC,EAAS,iBAAkBoD,EAAS,yBAAyB,GAEnFpD,EAAS,uBACXoD,EAAS,qBAAqB,MAAQpD,EAAS,qBAC/C+sC,EAAwB/sC,EAAS,qBAAsBoD,EAAS,6BAA6B,EAEjG,CACA,SAASqqC,EAAsBrqC,EAAUpD,EAAU,CAC7CA,EAAS,SACXoD,EAAS,OAAO,MAAQpD,EAAS,OAErC,CACA,SAAS0tC,EAAwBtqC,EAAUpD,EAAU,CACnD,IAAM2zB,EAAQla,EAAW,IAAIzZ,CAAQ,EAAE,MACvCoD,EAAS,kBAAkB,MAAM,sBAAsBuwB,EAAM,WAAW,EACxEvwB,EAAS,aAAa,MAAQuwB,EAAM,OAAO,OAAO,KAClDvwB,EAAS,YAAY,MAAQuwB,EAAM,OAAO,OAAO,GACnD,CACA,MAAO,CACL,mBAAAqZ,EACA,wBAAAC,CACF,CACF,CACA,SAASe,GAAoBrtD,EAAIu2B,EAAMsK,EAAc7O,EAAO,CAC1D,IAAInK,EAAU,CAAC,EACXylC,EAAa,CAAC,EACdC,EAAyB,CAAC,EACxBC,EAAmBxtD,EAAG,aAAaA,EAAG,2BAA2B,EACvE,SAASytD,EAAK/N,EAAe7rB,EAAS,CACpC,IAAM65B,EAAe75B,EAAQ,QAC7B7B,EAAM,oBAAoB0tB,EAAegO,CAAY,CACvD,CACA,SAAShoD,EAAOg6C,EAAe7rB,EAAS,CACtC,IAAIr0B,EAASqoB,EAAQ63B,EAAc,EAAE,EACjClgD,IAAW,SACbmuD,EAAqBjO,CAAa,EAClClgD,EAASsoB,EAAa43B,CAAa,EACnC73B,EAAQ63B,EAAc,EAAE,EAAIlgD,EAC5BkgD,EAAc,iBAAiB,UAAWkO,CAAuB,GAEnE,IAAMF,EAAe75B,EAAQ,QAC7B7B,EAAM,iBAAiB0tB,EAAegO,CAAY,EAClD,IAAM/lC,EAAQ4O,EAAK,OAAO,MACtB+2B,EAAW5N,EAAc,EAAE,IAAM/3B,IACnCkmC,EAAiBnO,CAAa,EAC9B4N,EAAW5N,EAAc,EAAE,EAAI/3B,EAEnC,CACA,SAASG,EAAa43B,EAAe,CACnC,IAAMoO,EAAoBC,EAA0B,EACpDrO,EAAc,oBAAsBoO,EACpC,IAAMtuD,EAASQ,EAAG,aAAa,EACzBsJ,EAAOo2C,EAAc,OACrB13B,EAAQ03B,EAAc,MAC5B,OAAA1/C,EAAG,WAAWA,EAAG,eAAgBR,CAAM,EACvCQ,EAAG,WAAWA,EAAG,eAAgBsJ,EAAM0e,CAAK,EAC5ChoB,EAAG,WAAWA,EAAG,eAAgB,IAAI,EACrCA,EAAG,eAAeA,EAAG,eAAgB8tD,EAAmBtuD,CAAM,EACvDA,CACT,CACA,SAASuuD,GAA4B,CACnC,QAASv3D,EAAI,EAAGA,EAAIg3D,EAAkBh3D,IACpC,GAAI+2D,EAAuB,QAAQ/2D,CAAC,IAAM,GACxC,OAAA+2D,EAAuB,KAAK/2D,CAAC,EACtBA,EAGX,eAAQ,MAAM,uFAAuF,EAC9F,CACT,CACA,SAASq3D,EAAiBnO,EAAe,CACvC,IAAMlgD,EAASqoB,EAAQ63B,EAAc,EAAE,EACjCj9B,EAAWi9B,EAAc,SACzB1pC,EAAQ0pC,EAAc,QAC5B1/C,EAAG,WAAWA,EAAG,eAAgBR,CAAM,EACvC,QAAShJ,EAAI,EAAG4N,EAAKqe,EAAS,OAAQjsB,EAAI4N,EAAI5N,IAAK,CACjD,IAAMw3D,EAAe,MAAM,QAAQvrC,EAASjsB,CAAC,CAAC,EAAIisB,EAASjsB,CAAC,EAAI,CAACisB,EAASjsB,CAAC,CAAC,EAC5E,QAAS2U,EAAI,EAAG6Q,EAAKgyC,EAAa,OAAQ7iD,EAAI6Q,EAAI7Q,IAAK,CACrD,IAAMiuB,EAAU40B,EAAa7iD,CAAC,EAC9B,GAAI8iD,EAAkB70B,EAAS5iC,EAAG2U,EAAG6K,CAAK,IAAM,GAAM,CACpD,IAAMva,EAAS29B,EAAQ,SACjBnjB,EAAS,MAAM,QAAQmjB,EAAQ,KAAK,EAAIA,EAAQ,MAAQ,CAACA,EAAQ,KAAK,EACxE80B,EAAc,EAClB,QAASvW,EAAI,EAAGA,EAAI1hC,EAAO,OAAQ0hC,IAAK,CACtC,IAAMvgD,EAAQ6e,EAAO0hC,CAAC,EAChBwW,GAAQC,EAAeh3D,CAAK,EAC9B,OAAOA,GAAU,UAAY,OAAOA,GAAU,WAChDgiC,EAAQ,OAAO,CAAC,EAAIhiC,EACpB4I,EAAG,cAAcA,EAAG,eAAgBvE,EAASyyD,EAAa90B,EAAQ,MAAM,GAC/DhiC,EAAM,WACfgiC,EAAQ,OAAO,CAAC,EAAIhiC,EAAM,SAAS,CAAC,EACpCgiC,EAAQ,OAAO,CAAC,EAAIhiC,EAAM,SAAS,CAAC,EACpCgiC,EAAQ,OAAO,CAAC,EAAIhiC,EAAM,SAAS,CAAC,EACpCgiC,EAAQ,OAAO,CAAC,EAAI,EACpBA,EAAQ,OAAO,CAAC,EAAIhiC,EAAM,SAAS,CAAC,EACpCgiC,EAAQ,OAAO,CAAC,EAAIhiC,EAAM,SAAS,CAAC,EACpCgiC,EAAQ,OAAO,CAAC,EAAIhiC,EAAM,SAAS,CAAC,EACpCgiC,EAAQ,OAAO,CAAC,EAAI,EACpBA,EAAQ,OAAO,CAAC,EAAIhiC,EAAM,SAAS,CAAC,EACpCgiC,EAAQ,OAAO,CAAC,EAAIhiC,EAAM,SAAS,CAAC,EACpCgiC,EAAQ,OAAO,EAAE,EAAIhiC,EAAM,SAAS,CAAC,EACrCgiC,EAAQ,OAAO,EAAE,EAAI,IAErBhiC,EAAM,QAAQgiC,EAAQ,OAAQ80B,CAAW,EACzCA,GAAeC,GAAM,QAAU,aAAa,kBAEhD,CACAnuD,EAAG,cAAcA,EAAG,eAAgBvE,EAAQ29B,EAAQ,MAAM,CAC5D,CACF,CACF,CACAp5B,EAAG,WAAWA,EAAG,eAAgB,IAAI,CACvC,CACA,SAASiuD,EAAkB70B,EAAS/iC,EAAOg4D,EAAYr4C,EAAO,CAC5D,IAAM5e,EAAQgiC,EAAQ,MAChBk1B,EAAcj4D,EAAQ,IAAMg4D,EAClC,GAAIr4C,EAAMs4C,CAAW,IAAM,OACzB,OAAI,OAAOl3D,GAAU,UAAY,OAAOA,GAAU,UAChD4e,EAAMs4C,CAAW,EAAIl3D,EAErB4e,EAAMs4C,CAAW,EAAIl3D,EAAM,MAAM,EAE5B,GACF,CACL,IAAMm3D,EAAev4C,EAAMs4C,CAAW,EACtC,GAAI,OAAOl3D,GAAU,UAAY,OAAOA,GAAU,WAChD,GAAIm3D,IAAiBn3D,EACnB,OAAA4e,EAAMs4C,CAAW,EAAIl3D,EACd,WAGLm3D,EAAa,OAAOn3D,CAAK,IAAM,GACjC,OAAAm3D,EAAa,KAAKn3D,CAAK,EAChB,EAGb,CACA,MAAO,EACT,CACA,SAASu2D,EAAqBjO,EAAe,CAC3C,IAAMj9B,EAAWi9B,EAAc,SAC3BjkD,EAAS,EACP+yD,EAAY,GAClB,QAASh4D,EAAI,EAAGC,EAAIgsB,EAAS,OAAQjsB,EAAIC,EAAGD,IAAK,CAC/C,IAAMw3D,EAAe,MAAM,QAAQvrC,EAASjsB,CAAC,CAAC,EAAIisB,EAASjsB,CAAC,EAAI,CAACisB,EAASjsB,CAAC,CAAC,EAC5E,QAAS2U,EAAI,EAAG6Q,EAAKgyC,EAAa,OAAQ7iD,EAAI6Q,EAAI7Q,IAAK,CACrD,IAAMiuB,EAAU40B,EAAa7iD,CAAC,EACxB8K,EAAS,MAAM,QAAQmjB,EAAQ,KAAK,EAAIA,EAAQ,MAAQ,CAACA,EAAQ,KAAK,EAC5E,QAASue,EAAI,EAAGC,EAAK3hC,EAAO,OAAQ0hC,EAAIC,EAAID,IAAK,CAC/C,IAAMvgD,EAAQ6e,EAAO0hC,CAAC,EAChBwW,GAAQC,EAAeh3D,CAAK,EAC5Bq3D,EAAehzD,EAAS+yD,EACxBE,GAAeD,EAAeN,GAAM,SACpCQ,GAAaF,EAAeC,GAClCjzD,GAAUizD,GACNC,KAAe,GAAKH,EAAYG,GAAaR,GAAM,UACrD1yD,GAAU+yD,EAAYG,IAExBv1B,EAAQ,OAAS,IAAI,aAAa+0B,GAAM,QAAU,aAAa,iBAAiB,EAChF/0B,EAAQ,SAAW39B,EACnBA,GAAU0yD,GAAM,OAClB,CACF,CACF,CACA,IAAMS,EAAcnzD,EAAS+yD,EAC7B,OAAII,EAAc,IAAGnzD,GAAU+yD,EAAYI,GAC3ClP,EAAc,OAASjkD,EACvBikD,EAAc,QAAU,CAAC,EAClB,IACT,CACA,SAAS0O,EAAeh3D,EAAO,CAC7B,IAAM+2D,EAAQ,CACZ,SAAU,EAEV,QAAS,CAEX,EACA,OAAI,OAAO/2D,GAAU,UAAY,OAAOA,GAAU,WAChD+2D,EAAM,SAAW,EACjBA,EAAM,QAAU,GACP/2D,EAAM,WACf+2D,EAAM,SAAW,EACjBA,EAAM,QAAU,GACP/2D,EAAM,WAAaA,EAAM,SAClC+2D,EAAM,SAAW,GACjBA,EAAM,QAAU,IACP/2D,EAAM,WACf+2D,EAAM,SAAW,GACjBA,EAAM,QAAU,IACP/2D,EAAM,WACf+2D,EAAM,SAAW,GACjBA,EAAM,QAAU,IACP/2D,EAAM,WACf+2D,EAAM,SAAW,GACjBA,EAAM,QAAU,IACP/2D,EAAM,UACf,QAAQ,KAAK,6EAA6E,EAE1F,QAAQ,KAAK,uDAAwDA,CAAK,EAErE+2D,CACT,CACA,SAASP,EAAwBt3D,EAAO,CACtC,IAAMopD,EAAgBppD,EAAM,OAC5BopD,EAAc,oBAAoB,UAAWkO,CAAuB,EACpE,IAAMv3D,EAAQk3D,EAAuB,QAAQ7N,EAAc,mBAAmB,EAC9E6N,EAAuB,OAAOl3D,EAAO,CAAC,EACtC2J,EAAG,aAAa6nB,EAAQ63B,EAAc,EAAE,CAAC,EACzC,OAAO73B,EAAQ63B,EAAc,EAAE,EAC/B,OAAO4N,EAAW5N,EAAc,EAAE,CACpC,CACA,SAAS3pB,GAAU,CACjB,QAAWrhB,KAAMmT,EACf7nB,EAAG,aAAa6nB,EAAQnT,CAAE,CAAC,EAE7B64C,EAAyB,CAAC,EAC1B1lC,EAAU,CAAC,EACXylC,EAAa,CAAC,CAChB,CACA,MAAO,CACL,KAAAG,EACA,OAAA/nD,EACA,QAAAqwB,CACF,CACF,CACA,IAAIxgC,GAAgB,KAAM,CACxB,YAAY4f,EAAa,CAAC,EAAG,CAC3B,GAAM,CACJ,OAAAxV,EAAS3J,GAAoB,EAC7B,QAAAwL,EAAU,KACV,MAAA2C,EAAQ,GACR,QAAA+gB,EAAU,GACV,MAAA5pB,EAAQ,GACR,UAAAuzD,EAAY,GACZ,mBAAA38B,EAAqB,GACrB,sBAAA48B,EAAwB,GACxB,gBAAAC,EAAkB,UAClB,6BAAAC,EAA+B,EACjC,EAAI75C,EACJ,KAAK,gBAAkB,GACvB,IAAI85C,EACJ,GAAIztD,IAAY,KAAM,CACpB,GAAI,OAAO,sBAA0B,KAAeA,aAAmB,sBACrE,MAAM,IAAI,MAAM,2DAA2D,EAE7EytD,EAASztD,EAAQ,qBAAqB,EAAE,KAC1C,MACEytD,EAAS3zD,EAEX,IAAM4zD,EAAiB,IAAI,YAAY,CAAC,EAClCC,EAAgB,IAAI,WAAW,CAAC,EAClCC,EAAoB,KACpBC,EAAqB,KACnBC,EAAkB,CAAC,EACnBC,EAAmB,CAAC,EAC1B,KAAK,WAAa5vD,EAClB,KAAK,MAAQ,CAKX,kBAAmB,GAKnB,cAAe,IACjB,EACA,KAAK,UAAY,GACjB,KAAK,eAAiB,GACtB,KAAK,eAAiB,GACtB,KAAK,iBAAmB,GACxB,KAAK,YAAc,GACnB,KAAK,eAAiB,CAAC,EACvB,KAAK,qBAAuB,GAC5B,KAAK,kBAAoBnP,GACzB,KAAK,YAAcjG,GACnB,KAAK,oBAAsB,EAC3B,IAAMilE,EAAQ,KACVC,EAAiB,GACjBC,EAAyB,EACzBC,EAA4B,EAC5BC,EAAuB,KACvBC,EAAqB,GACrBC,EAAiB,KACfC,EAAmB,IAAIj7D,GACvBk7D,EAAkB,IAAIl7D,GACxBm7D,EAAsB,KACpBC,EAAqB,IAAIhxE,GAAM,CAAC,EAClCixE,EAAqB,EACrBC,EAASzwD,EAAO,MAChB0wD,EAAU1wD,EAAO,OACjB2wD,EAAc,EACdC,GAAc,KACdC,EAAmB,KACjB3a,GAAY,IAAI/gD,GAAQ,EAAG,EAAGs7D,EAAQC,CAAO,EAC7CI,GAAW,IAAI37D,GAAQ,EAAG,EAAGs7D,EAAQC,CAAO,EAC9CK,GAAe,GACbhb,GAAY,IAAIjyD,GAClBktE,EAAmB,GACnBC,GAAwB,GACtBC,GAA2B,IAAInoE,GAC/BooE,GAAqB,IAAIpoE,GACzBqoE,GAAY,IAAIl8D,EAChBm8D,GAAW,IAAIl8D,GACfm8D,GAAc,CAAE,WAAY,KAAM,IAAK,KAAM,YAAa,KAAM,iBAAkB,KAAM,QAAS,EAAK,EACxGC,GAAoB,GACxB,SAASC,IAAsB,CAC7B,OAAOvB,IAAyB,KAAOU,EAAc,CACvD,CACA,IAAIjQ,EAAM7+C,EACV,SAAS4vD,GAAWC,EAAaC,EAAmB,CAClD,OAAO3xD,EAAO,WAAW0xD,EAAaC,CAAiB,CACzD,CACA,GAAI,CACF,IAAMA,EAAoB,CACxB,MAAO,GACP,MAAAntD,EACA,QAAA+gB,EACA,UAAA2pC,EACA,mBAAA38B,EACA,sBAAA48B,EACA,gBAAAC,EACA,6BAAAC,CACF,EAKA,GAJI,iBAAkBrvD,GAAQA,EAAO,aAAa,cAAe,aAAaxS,EAAQ,EAAE,EACxFwS,EAAO,iBAAiB,mBAAoB4xD,EAAe,EAAK,EAChE5xD,EAAO,iBAAiB,uBAAwB6xD,GAAkB,EAAK,EACvE7xD,EAAO,iBAAiB,4BAA6B8xD,GAAwB,EAAK,EAC9EpR,IAAQ,KAAM,CAChB,IAAMgR,EAAc,SAEpB,GADAhR,EAAM+Q,GAAWC,EAAaC,CAAiB,EAC3CjR,IAAQ,KACV,MAAI+Q,GAAWC,CAAW,EAClB,IAAI,MAAM,6DAA6D,EAEvE,IAAI,MAAM,+BAA+B,CAGrD,CACF,OAASzS,EAAO,CACd,cAAQ,MAAM,wBAA0BA,EAAM,OAAO,EAC/CA,CACR,CACA,IAAI37B,GAAY4d,GAAc7O,EAAOuE,GACjCuC,GAAYnjB,GAAUmc,EAAUC,EAAY9V,EAAYzG,EAAYyc,EACpEy/B,EAAch8C,GAAWi8C,GAAavc,GAAchI,GAAUkH,GAC9D3hB,EAAYi/B,GAAcC,GAAgBC,GAC1C16B,GAAO7D,GAAew+B,GAC1B,SAASC,GAAgB,CACvB/uC,GAAa,IAAI0c,GAAgB0gB,CAAG,EACpCp9B,GAAW,KAAK,EAChBmU,GAAQ,IAAI5hC,GAAW6qD,EAAKp9B,EAAU,EACtC4d,GAAe,IAAI1J,GAAkBkpB,EAAKp9B,GAAY9N,EAAYiiB,EAAK,EACvEpF,EAAQ,IAAIgmB,GAAWqI,CAAG,EACtBxf,GAAa,oBAAoB7O,EAAM,QAAQ,MAAM,YAAY,EAAI,EACzEuE,GAAO,IAAIkK,GAAU4f,CAAG,EACxBvnB,GAAa,IAAIuY,GACjB17B,GAAW,IAAIyqC,GAAcC,EAAKp9B,GAAY+O,EAAO8G,GAAY+H,GAAczJ,GAAOb,EAAI,EAC1FzE,EAAW,IAAIuI,GAAcm1B,CAAK,EAClCz9B,EAAa,IAAIoN,GAAgBqwB,CAAK,EACtCvzC,EAAa,IAAI2L,GAAgBy4B,CAAG,EACpC9sB,GAAgB,IAAIF,GAAmBgtB,EAAKpkC,CAAU,EACtDzG,EAAa,IAAIqqB,GAAgBwgB,EAAKpkC,EAAYsa,GAAMhD,EAAa,EACrEtB,EAAU,IAAIgQ,GAAaoe,EAAK7qC,EAAYyG,EAAYsa,EAAI,EAC5Dq7B,GAAe,IAAIhxB,GAAkByf,EAAKxf,GAAclrB,EAAQ,EAChEy3B,GAAW,IAAIvU,GAAcC,EAAU,EACvC44B,EAAe,IAAIvkB,GAAcqiB,EAAO19B,EAAUC,EAAY9O,GAAY4d,GAActN,GAAe6Z,EAAQ,EAC/G13B,GAAY,IAAIy2C,GAAeqD,EAAO12B,EAAU,EAChD64B,GAAc,IAAIjf,GAClB0C,GAAe,IAAID,GAAkBlyB,EAAU,EAC/C0P,EAAa,IAAId,GAAgB29B,EAAO19B,EAAUC,EAAYC,EAAOC,EAASg9B,EAAQ/8B,CAAkB,EACxGoiB,GAAY,IAAImB,GAAe+Z,EAAOv9B,EAAS4O,EAAY,EAC3DkxB,GAAiB,IAAI1E,GAAoBhN,EAAK9pB,GAAMsK,GAAc7O,CAAK,EACvE6/B,GAAiB,IAAIv7B,GAAoB+pB,EAAKp9B,GAAYsT,EAAI,EAC9Du7B,GAAwB,IAAIvxB,GAA2B8f,EAAKp9B,GAAYsT,EAAI,EAC5EA,GAAK,SAAWm7B,EAAa,SAC7BlC,EAAM,aAAe3uB,GACrB2uB,EAAM,WAAavsC,GACnBusC,EAAM,WAAa12B,GACnB02B,EAAM,YAAcmC,GACpBnC,EAAM,UAAYlb,GAClBkb,EAAM,MAAQx9B,EACdw9B,EAAM,KAAOj5B,EACf,CACAy7B,EAAc,EACd,IAAMC,GAAK,IAAIhK,GAAauH,EAAOnP,CAAG,EACtC,KAAK,GAAK4R,GACV,KAAK,WAAa,UAAW,CAC3B,OAAO5R,CACT,EACA,KAAK,qBAAuB,UAAW,CACrC,OAAOA,EAAI,qBAAqB,CAClC,EACA,KAAK,iBAAmB,UAAW,CACjC,IAAMnpB,EAAYjU,GAAW,IAAI,oBAAoB,EACjDiU,GAAWA,EAAU,YAAY,CACvC,EACA,KAAK,oBAAsB,UAAW,CACpC,IAAMA,EAAYjU,GAAW,IAAI,oBAAoB,EACjDiU,GAAWA,EAAU,eAAe,CAC1C,EACA,KAAK,cAAgB,UAAW,CAC9B,OAAOo5B,CACT,EACA,KAAK,cAAgB,SAASl5D,EAAO,CAC/BA,IAAU,SACdk5D,EAAcl5D,EACd,KAAK,QAAQg5D,EAAQC,EAAS,EAAK,EACrC,EACA,KAAK,QAAU,SAASlvD,EAAQ,CAC9B,OAAOA,EAAO,IAAIivD,EAAQC,CAAO,CACnC,EACA,KAAK,QAAU,SAASvsD,EAAOC,EAAQmuD,EAAc,GAAM,CACzD,GAAID,GAAG,aAAc,CACnB,QAAQ,KAAK,uEAAuE,EACpF,MACF,CACA7B,EAAStsD,EACTusD,EAAUtsD,EACVpE,EAAO,MAAQ,KAAK,MAAMmE,EAAQwsD,CAAW,EAC7C3wD,EAAO,OAAS,KAAK,MAAMoE,EAASusD,CAAW,EAC3C4B,IAAgB,KAClBvyD,EAAO,MAAM,MAAQmE,EAAQ,KAC7BnE,EAAO,MAAM,OAASoE,EAAS,MAEjC,KAAK,YAAY,EAAG,EAAGD,EAAOC,CAAM,CACtC,EACA,KAAK,qBAAuB,SAAS5C,EAAQ,CAC3C,OAAOA,EAAO,IAAIivD,EAASE,EAAaD,EAAUC,CAAW,EAAE,MAAM,CACvE,EACA,KAAK,qBAAuB,SAASxsD,EAAOC,EAAQwoD,EAAY,CAC9D6D,EAAStsD,EACTusD,EAAUtsD,EACVusD,EAAc/D,EACd5sD,EAAO,MAAQ,KAAK,MAAMmE,EAAQyoD,CAAU,EAC5C5sD,EAAO,OAAS,KAAK,MAAMoE,EAASwoD,CAAU,EAC9C,KAAK,YAAY,EAAG,EAAGzoD,EAAOC,CAAM,CACtC,EACA,KAAK,mBAAqB,SAAS5C,EAAQ,CACzC,OAAOA,EAAO,KAAK4uD,CAAgB,CACrC,EACA,KAAK,YAAc,SAAS5uD,EAAQ,CAClC,OAAOA,EAAO,KAAK00C,EAAS,CAC9B,EACA,KAAK,YAAc,SAASl+C,EAAGM,EAAG6L,EAAOC,EAAQ,CAC3CpM,EAAE,UACJk+C,GAAU,IAAIl+C,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,EAEhCk+C,GAAU,IAAIl+C,EAAGM,EAAG6L,EAAOC,CAAM,EAEnCiuB,EAAM,SAAS+9B,EAAiB,KAAKla,EAAS,EAAE,eAAeya,CAAW,EAAE,MAAM,CAAC,CACrF,EACA,KAAK,WAAa,SAASnvD,EAAQ,CACjC,OAAOA,EAAO,KAAKsvD,EAAQ,CAC7B,EACA,KAAK,WAAa,SAAS94D,EAAGM,EAAG6L,EAAOC,EAAQ,CAC1CpM,EAAE,UACJ84D,GAAS,IAAI94D,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAGA,EAAE,CAAC,EAE/B84D,GAAS,IAAI94D,EAAGM,EAAG6L,EAAOC,CAAM,EAElCiuB,EAAM,QAAQg+B,EAAgB,KAAKS,EAAQ,EAAE,eAAeH,CAAW,EAAE,MAAM,CAAC,CAClF,EACA,KAAK,eAAiB,UAAW,CAC/B,OAAOI,EACT,EACA,KAAK,eAAiB,SAASyB,EAAS,CACtCngC,EAAM,eAAe0+B,GAAeyB,CAAO,CAC7C,EACA,KAAK,cAAgB,SAASC,EAAQ,CACpC7B,GAAc6B,CAChB,EACA,KAAK,mBAAqB,SAASA,EAAQ,CACzC5B,EAAmB4B,CACrB,EACA,KAAK,cAAgB,SAASjxD,EAAQ,CACpC,OAAOA,EAAO,KAAKwxB,EAAW,cAAc,CAAC,CAC/C,EACA,KAAK,cAAgB,UAAW,CAC9BA,EAAW,cAAc,MAAMA,EAAY,SAAS,CACtD,EACA,KAAK,cAAgB,UAAW,CAC9B,OAAOA,EAAW,cAAc,CAClC,EACA,KAAK,cAAgB,UAAW,CAC9BA,EAAW,cAAc,MAAMA,EAAY,SAAS,CACtD,EACA,KAAK,MAAQ,SAAS/xB,EAAQ,GAAM2gB,EAAS,GAAM8wC,EAAW,GAAM,CAClE,IAAIC,EAAO,EACX,GAAI1xD,EAAO,CACT,IAAI2xD,EAAkB,GACtB,GAAI3C,IAAyB,KAAM,CACjC,IAAM4C,GAAe5C,EAAqB,QAAQ,OAClD2C,EAAkBC,KAAiBllE,IAAqBklE,KAAiBhjE,IAAmBgjE,KAAiBziE,EAC/G,CACA,GAAIwiE,EAAiB,CACnB,IAAME,GAAa7C,EAAqB,QAAQ,KAC1C8C,GAAiBD,KAAer+D,IAAoBq+D,KAAel+D,IAAmBk+D,KAAe/9D,IAAqB+9D,KAAep+D,IAAsBo+D,KAAej+D,IAAyBi+D,KAAeh+D,GACtN09B,GAAaQ,EAAW,cAAc,EACtC/4B,GAAI+4B,EAAW,cAAc,EAC7Bh0B,GAAIwzB,GAAW,EACfj0B,GAAIi0B,GAAW,EACft4B,GAAIs4B,GAAW,EACjBugC,IACFxD,EAAe,CAAC,EAAIvwD,GACpBuwD,EAAe,CAAC,EAAIhxD,GACpBgxD,EAAe,CAAC,EAAIr1D,GACpBq1D,EAAe,CAAC,EAAIt1D,GACpBymD,EAAI,eAAeA,EAAI,MAAO,EAAG6O,CAAc,IAE/CC,EAAc,CAAC,EAAIxwD,GACnBwwD,EAAc,CAAC,EAAIjxD,GACnBixD,EAAc,CAAC,EAAIt1D,GACnBs1D,EAAc,CAAC,EAAIv1D,GACnBymD,EAAI,cAAcA,EAAI,MAAO,EAAG8O,CAAa,EAEjD,MACEmD,GAAQjS,EAAI,gBAEhB,CACI9+B,IACF+wC,GAAQjS,EAAI,iBACZA,EAAI,WAAW,KAAK,aAAa,mBAAqB,EAAI,CAAC,GAEzDgS,IACFC,GAAQjS,EAAI,mBACZ,KAAK,MAAM,QAAQ,QAAQ,QAAQ,UAAU,GAE/CA,EAAI,MAAMiS,CAAI,CAChB,EACA,KAAK,WAAa,UAAW,CAC3B,KAAK,MAAM,GAAM,GAAO,EAAK,CAC/B,EACA,KAAK,WAAa,UAAW,CAC3B,KAAK,MAAM,GAAO,GAAM,EAAK,CAC/B,EACA,KAAK,aAAe,UAAW,CAC7B,KAAK,MAAM,GAAO,GAAO,EAAI,CAC/B,EACA,KAAK,QAAU,UAAW,CACxB3yD,EAAO,oBAAoB,mBAAoB4xD,EAAe,EAAK,EACnE5xD,EAAO,oBAAoB,uBAAwB6xD,GAAkB,EAAK,EAC1E7xD,EAAO,oBAAoB,4BAA6B8xD,GAAwB,EAAK,EACrFE,GAAY,QAAQ,EACpBvc,GAAa,QAAQ,EACrBtc,GAAW,QAAQ,EACnBhH,EAAS,QAAQ,EACjBC,EAAW,QAAQ,EACnBE,EAAQ,QAAQ,EAChBsB,GAAc,QAAQ,EACtBw+B,GAAe,QAAQ,EACvBL,EAAa,QAAQ,EACrBO,GAAG,QAAQ,EACXA,GAAG,oBAAoB,eAAgBU,EAAgB,EACvDV,GAAG,oBAAoB,aAAcW,EAAc,EACnDr9C,GAAU,KAAK,CACjB,EACA,SAASg8C,EAAcj7D,EAAO,CAC5BA,EAAM,eAAe,EACrB,QAAQ,IAAI,oCAAoC,EAChDm5D,EAAiB,EACnB,CACA,SAAS+B,IAAmB,CAC1B,QAAQ,IAAI,wCAAwC,EACpD/B,EAAiB,GACjB,IAAMoD,EAAgBt8B,GAAK,UACrBu8B,EAAmBxe,GAAU,QAC7Bye,EAAsBze,GAAU,WAChC0e,EAAuB1e,GAAU,YACjC2e,EAAgB3e,GAAU,KAChC0d,EAAc,EACdz7B,GAAK,UAAYs8B,EACjBve,GAAU,QAAUwe,EACpBxe,GAAU,WAAaye,EACvBze,GAAU,YAAc0e,EACxB1e,GAAU,KAAO2e,CACnB,CACA,SAASxB,GAAuBn7D,EAAO,CACrC,QAAQ,MAAM,sEAAuEA,EAAM,aAAa,CAC1G,CACA,SAASmhD,GAAkBnhD,EAAO,CAChC,IAAM+oB,EAAW/oB,EAAM,OACvB+oB,EAAS,oBAAoB,UAAWo4B,EAAiB,EACzDyb,GAAmB7zC,CAAQ,CAC7B,CACA,SAAS6zC,GAAmB7zC,EAAU,CACpC8zC,GAAiC9zC,CAAQ,EACzCyZ,GAAW,OAAOzZ,CAAQ,CAC5B,CACA,SAAS8zC,GAAiC9zC,EAAU,CAClD,IAAMmuB,EAAW1U,GAAW,IAAIzZ,CAAQ,EAAE,SACtCmuB,IAAa,SACfA,EAAS,QAAQ,SAAS3Z,EAAS,CACjC69B,EAAa,eAAe79B,CAAO,CACrC,CAAC,EACGxU,EAAS,kBACXqyC,EAAa,mBAAmBryC,CAAQ,EAG9C,CACA,KAAK,mBAAqB,SAASjX,EAAQqc,EAAO5a,EAAUwV,EAAU7V,EAAQyT,GAAO,CAC/EwH,IAAU,OAAMA,EAAQwsC,IAC5B,IAAMvT,GAAcl0C,EAAO,QAAUA,EAAO,YAAY,YAAY,EAAI,EAClEqqB,GAAUu/B,GAAWhrD,EAAQqc,EAAO5a,EAAUwV,EAAU7V,CAAM,EACpEwoB,EAAM,YAAY3S,EAAUq+B,EAAW,EACvC,IAAIrnD,GAAQwT,EAAS,MACjBwpD,GAAc,EAClB,GAAIh0C,EAAS,YAAc,GAAM,CAE/B,GADAhpB,GAAQmf,EAAW,sBAAsB3L,CAAQ,EAC7CxT,KAAU,OAAQ,OACtBg9D,GAAc,CAChB,CACA,IAAMnzC,GAAYrW,EAAS,UACrB8H,GAAW9H,EAAS,WAAW,SACjCypD,GAAYpzC,GAAU,MAAQmzC,GAC9BE,IAAWrzC,GAAU,MAAQA,GAAU,OAASmzC,GAChDp2C,KAAU,OACZq2C,GAAY,KAAK,IAAIA,GAAWr2C,GAAM,MAAQo2C,EAAW,EACzDE,GAAU,KAAK,IAAIA,IAAUt2C,GAAM,MAAQA,GAAM,OAASo2C,EAAW,GAEnEh9D,KAAU,MACZi9D,GAAY,KAAK,IAAIA,GAAW,CAAC,EACjCC,GAAU,KAAK,IAAIA,GAASl9D,GAAM,KAAK,GACPsb,IAAa,OAC7C2hD,GAAY,KAAK,IAAIA,GAAW,CAAC,EACjCC,GAAU,KAAK,IAAIA,GAAS5hD,GAAS,KAAK,GAE5C,IAAMolB,GAAYw8B,GAAUD,GAC5B,GAAIv8B,GAAY,GAAKA,KAAc,IAAU,OAC7CxD,GAAc,MAAM/pB,EAAQ6V,EAAUwU,GAAShqB,EAAUxT,EAAK,EAC9D,IAAIqF,GACAmnB,GAAWgvC,GAMf,GALIx7D,KAAU,OACZqF,GAAYugB,EAAW,IAAI5lB,EAAK,EAChCwsB,GAAWivC,GACXjvC,GAAS,SAASnnB,EAAS,GAEzB8N,EAAO,OACL6V,EAAS,YAAc,IACzB2S,EAAM,aAAa3S,EAAS,mBAAqB8xC,GAAoB,CAAC,EACtEtuC,GAAS,QAAQw9B,EAAI,KAAK,GAE1Bx9B,GAAS,QAAQw9B,EAAI,SAAS,UAEvB72C,EAAO,OAAQ,CACxB,IAAIgqD,GAAYn0C,EAAS,UACrBm0C,KAAc,SAAQA,GAAY,GACtCxhC,EAAM,aAAawhC,GAAYrC,GAAoB,CAAC,EAChD3nD,EAAO,eACTqZ,GAAS,QAAQw9B,EAAI,KAAK,EACjB72C,EAAO,WAChBqZ,GAAS,QAAQw9B,EAAI,SAAS,EAE9Bx9B,GAAS,QAAQw9B,EAAI,UAAU,CAEnC,MAAW72C,EAAO,SAChBqZ,GAAS,QAAQw9B,EAAI,MAAM,EAClB72C,EAAO,UAChBqZ,GAAS,QAAQw9B,EAAI,SAAS,EAEhC,GAAI72C,EAAO,cACT,GAAIA,EAAO,sBAAwB,KACjCqZ,GAAS,yBAAyBrZ,EAAO,iBAAkBA,EAAO,iBAAkBA,EAAO,gBAAiBA,EAAO,mBAAmB,UAEjIyZ,GAAW,IAAI,kBAAkB,EAWpCJ,GAAS,gBAAgBrZ,EAAO,iBAAkBA,EAAO,iBAAkBA,EAAO,eAAe,MAX1D,CACvC,IAAMqtB,GAASrtB,EAAO,iBAChBstB,GAASttB,EAAO,iBAChBiqD,GAAajqD,EAAO,gBACpBssB,GAAkBz/B,GAAQ4lB,EAAW,IAAI5lB,EAAK,EAAE,gBAAkB,EAClEosB,GAAWqW,GAAW,IAAIzZ,CAAQ,EAAE,eAAe,YAAY,EACrE,QAAS7oB,GAAI,EAAGA,GAAIi9D,GAAYj9D,KAC9BisB,GAAS,SAAS49B,EAAK,aAAc7pD,EAAC,EACtCqsB,GAAS,OAAOgU,GAAOrgC,EAAC,EAAIs/B,GAAiBgB,GAAOtgC,EAAC,CAAC,CAE1D,SAIOgT,EAAO,gBAChBqZ,GAAS,gBAAgBywC,GAAWv8B,GAAWvtB,EAAO,KAAK,UAClDK,EAAS,0BAA2B,CAC7C,IAAM6pD,GAAmB7pD,EAAS,oBAAsB,OAASA,EAAS,kBAAoB,IACxF82B,GAAgB,KAAK,IAAI92B,EAAS,cAAe6pD,EAAgB,EACvE7wC,GAAS,gBAAgBywC,GAAWv8B,GAAW4J,EAAa,CAC9D,MACE9d,GAAS,OAAOywC,GAAWv8B,EAAS,CAExC,EACA,SAAS48B,GAAgBt0C,EAAUoF,EAAOjb,EAAQ,CAC5C6V,EAAS,cAAgB,IAAQA,EAAS,OAASp9B,IAAco9B,EAAS,kBAAoB,IAChGA,EAAS,KAAO5hC,GAChB4hC,EAAS,YAAc,GACvBu0C,GAAWv0C,EAAUoF,EAAOjb,CAAM,EAClC6V,EAAS,KAAO77B,GAChB67B,EAAS,YAAc,GACvBu0C,GAAWv0C,EAAUoF,EAAOjb,CAAM,EAClC6V,EAAS,KAAOp9B,IAEhB2xE,GAAWv0C,EAAUoF,EAAOjb,CAAM,CAEtC,CACA,KAAK,QAAU,SAASib,EAAOrc,EAAQyrD,EAAc,KAAM,CACrDA,IAAgB,OAAMA,EAAcpvC,GACxC4qC,EAAqBja,GAAa,IAAIye,CAAW,EACjDxE,EAAmB,KAAKjnD,CAAM,EAC9BmnD,EAAiB,KAAKF,CAAkB,EACxCwE,EAAY,gBAAgB,SAASrqD,EAAQ,CACvCA,EAAO,SAAWA,EAAO,OAAO,KAAKpB,EAAO,MAAM,IACpDinD,EAAmB,UAAU7lD,CAAM,EAC/BA,EAAO,YACT6lD,EAAmB,WAAW7lD,CAAM,EAG1C,CAAC,EACGib,IAAUovC,GACZpvC,EAAM,gBAAgB,SAASjb,EAAQ,CACjCA,EAAO,SAAWA,EAAO,OAAO,KAAKpB,EAAO,MAAM,IACpDinD,EAAmB,UAAU7lD,CAAM,EAC/BA,EAAO,YACT6lD,EAAmB,WAAW7lD,CAAM,EAG1C,CAAC,EAEH6lD,EAAmB,YAAY,EAC/B,IAAMyE,EAA6B,IAAI,IACvC,OAAArvC,EAAM,SAAS,SAASjb,EAAQ,CAC9B,GAAI,EAAEA,EAAO,QAAUA,EAAO,UAAYA,EAAO,QAAUA,EAAO,UAChE,OAEF,IAAM6V,GAAW7V,EAAO,SACxB,GAAI6V,GACF,GAAI,MAAM,QAAQA,EAAQ,EACxB,QAAS7oB,GAAI,EAAGA,GAAI6oB,GAAS,OAAQ7oB,KAAK,CACxC,IAAMu9D,GAAY10C,GAAS7oB,EAAC,EAC5Bm9D,GAAgBI,GAAWF,EAAarqD,CAAM,EAC9CsqD,EAAW,IAAIC,EAAS,CAC1B,MAEAJ,GAAgBt0C,GAAUw0C,EAAarqD,CAAM,EAC7CsqD,EAAW,IAAIz0C,EAAQ,CAG7B,CAAC,EACDkwC,EAAiB,IAAI,EACrBF,EAAqB,KACdyE,CACT,EACA,KAAK,aAAe,SAASrvC,EAAOrc,EAAQyrD,EAAc,KAAM,CAC9D,IAAMC,EAAa,KAAK,QAAQrvC,EAAOrc,EAAQyrD,CAAW,EAC1D,OAAO,IAAI,QAAS1zD,GAAY,CAC9B,SAAS6zD,IAAsB,CAQ7B,GAPAF,EAAW,QAAQ,SAASz0C,GAAU,CACTyZ,GAAW,IAAIzZ,EAAQ,EACf,eACvB,QAAQ,GAClBy0C,EAAW,OAAOz0C,EAAQ,CAE9B,CAAC,EACGy0C,EAAW,OAAS,EAAG,CACzB3zD,EAAQskB,CAAK,EACb,MACF,CACA,WAAWuvC,GAAqB,EAAE,CACpC,CACI/wC,GAAW,IAAI,6BAA6B,IAAM,KACpD+wC,GAAoB,EAEpB,WAAWA,GAAqB,EAAE,CAEtC,CAAC,CACH,EACA,IAAIpI,GAA2B,KAC/B,SAASnkC,GAAiBC,EAAM,CAC1BkkC,IAA0BA,GAAyBlkC,CAAI,CAC7D,CACA,SAASirC,IAAmB,CAC1Bp9C,GAAU,KAAK,CACjB,CACA,SAASq9C,IAAiB,CACxBr9C,GAAU,MAAM,CAClB,CACA,IAAMA,GAAY,IAAI8R,GACtB9R,GAAU,iBAAiBkS,EAAgB,EACvC,OAAO,KAAS,KAAalS,GAAU,WAAW,IAAI,EAC1D,KAAK,iBAAmB,SAAS9N,EAAU,CACzCmkD,GAA2BnkD,EAC3BwqD,GAAG,iBAAiBxqD,CAAQ,EAC5BA,IAAa,KAAO8N,GAAU,KAAK,EAAIA,GAAU,MAAM,CACzD,EACA08C,GAAG,iBAAiB,eAAgBU,EAAgB,EACpDV,GAAG,iBAAiB,aAAcW,EAAc,EAChD,KAAK,OAAS,SAASnuC,EAAOrc,EAAQ,CACpC,GAAIA,IAAW,QAAUA,EAAO,WAAa,GAAM,CACjD,QAAQ,MAAM,wEAAwE,EACtF,MACF,CACA,GAAIqnD,IAAmB,GAAM,OAkB7B,GAjBIhrC,EAAM,wBAA0B,IAAMA,EAAM,kBAAkB,EAC9Drc,EAAO,SAAW,MAAQA,EAAO,wBAA0B,IAAMA,EAAO,kBAAkB,EAC1F6pD,GAAG,UAAY,IAAQA,GAAG,eAAiB,KACzCA,GAAG,mBAAqB,IAAMA,GAAG,aAAa7pD,CAAM,EACxDA,EAAS6pD,GAAG,UAAU,GAEpBxtC,EAAM,UAAY,IAAMA,EAAM,eAAe+qC,EAAO/qC,EAAOrc,EAAQwnD,CAAoB,EAC3FP,EAAqBja,GAAa,IAAI3wB,EAAO8qC,EAAiB,MAAM,EACpEF,EAAmB,KAAKjnD,CAAM,EAC9BmnD,EAAiB,KAAKF,CAAkB,EACxCyB,GAAmB,iBAAiB1oD,EAAO,iBAAkBA,EAAO,kBAAkB,EACtFstC,GAAU,wBAAwBob,EAAkB,EACpDF,GAAwB,KAAK,qBAC7BD,EAAmBvjB,GAAS,KAAK,KAAK,eAAgBwjB,EAAqB,EAC3ExB,EAAoBuC,GAAY,IAAIltC,EAAO6qC,EAAgB,MAAM,EACjEF,EAAkB,KAAK,EACvBE,EAAgB,KAAKF,CAAiB,EAClC6C,GAAG,UAAY,IAAQA,GAAG,eAAiB,GAAM,CACnD,IAAMgC,GAAmBzE,EAAM,GAAG,oBAAoB,EAClDyE,KAAqB,MACvBC,GAAcD,GAAkB7rD,EAAQ,KAAWonD,EAAM,WAAW,CAExE,CACA0E,GAAczvC,EAAOrc,EAAQ,EAAGonD,EAAM,WAAW,EACjDJ,EAAkB,OAAO,EACrBI,EAAM,cAAgB,IACxBJ,EAAkB,KAAKmB,GAAaC,CAAgB,EAEtDU,GAAoBe,GAAG,UAAY,IAASA,GAAG,eAAiB,IAASA,GAAG,gBAAgB,IAAM,GAC9Ff,IACFv+B,EAAW,gBAAgBy8B,EAAmB3qC,CAAK,EAErD,KAAK,KAAK,OAAO,QACbksC,IAAqB,IAAMvjB,GAAS,aAAa,EACrD,IAAMyH,EAAewa,EAAmB,MAAM,aAC9C/a,GAAU,OAAOO,EAAcpwB,EAAOrc,CAAM,EACxCuoD,IAAqB,IAAMvjB,GAAS,WAAW,EAC/C,KAAK,KAAK,YAAc,IAAM,KAAK,KAAK,MAAM,EAClD,IAAM+mB,EAAgB/E,EAAkB,OAClCgF,EAAsBhF,EAAkB,aAE9C,GADAC,EAAmB,YAAY,EAC3BjnD,EAAO,cAAe,CACxB,IAAMoc,GAAUpc,EAAO,QACvB,GAAIgsD,EAAoB,OAAS,EAC/B,QAAS59D,GAAI,EAAGC,GAAI+tB,GAAQ,OAAQhuB,GAAIC,GAAGD,KAAK,CAC9C,IAAM69D,GAAU7vC,GAAQhuB,EAAC,EACzB89D,GAAuBH,EAAeC,EAAqB3vC,EAAO4vC,EAAO,CAC3E,CAEEnD,IAAmBv+B,EAAW,OAAOlO,CAAK,EAC9C,QAASjuB,GAAI,EAAGC,GAAI+tB,GAAQ,OAAQhuB,GAAIC,GAAGD,KAAK,CAC9C,IAAM69D,GAAU7vC,GAAQhuB,EAAC,EACzB+9D,GAAYnF,EAAmB3qC,EAAO4vC,GAASA,GAAQ,QAAQ,CACjE,CACF,MACMD,EAAoB,OAAS,GAAGE,GAAuBH,EAAeC,EAAqB3vC,EAAOrc,CAAM,EACxG8oD,IAAmBv+B,EAAW,OAAOlO,CAAK,EAC9C8vC,GAAYnF,EAAmB3qC,EAAOrc,CAAM,EAE1CwnD,IAAyB,OAC3Bj6C,GAAS,8BAA8Bi6C,CAAoB,EAC3Dj6C,GAAS,yBAAyBi6C,CAAoB,GAEpDnrC,EAAM,UAAY,IAAMA,EAAM,cAAc+qC,EAAO/qC,EAAOrc,CAAM,EACpEmrB,GAAc,kBAAkB,EAChCs8B,EAAqB,GACrBC,EAAiB,KACjBP,EAAiB,IAAI,EACjBA,EAAiB,OAAS,GAC5BF,EAAqBE,EAAiBA,EAAiB,OAAS,CAAC,EAC7DoB,IAAqB,IAAMvjB,GAAS,eAAeoiB,EAAM,eAAgBH,EAAmB,MAAM,MAAM,GAE5GA,EAAqB,KAEvBC,EAAgB,IAAI,EAChBA,EAAgB,OAAS,EAC3BF,EAAoBE,EAAgBA,EAAgB,OAAS,CAAC,EAE9DF,EAAoB,IAExB,EACA,SAAS8E,GAAc1qD,EAAQpB,EAAQ8pC,EAAYsiB,EAAa,CAC9D,GAAIhrD,EAAO,UAAY,GAAO,OAE9B,GADgBA,EAAO,OAAO,KAAKpB,EAAO,MAAM,GAE9C,GAAIoB,EAAO,QACT0oC,EAAa1oC,EAAO,oBACXA,EAAO,MACZA,EAAO,aAAe,IAAMA,EAAO,OAAOpB,CAAM,UAC3CoB,EAAO,QAChB6lD,EAAmB,UAAU7lD,CAAM,EAC/BA,EAAO,YACT6lD,EAAmB,WAAW7lD,CAAM,UAE7BA,EAAO,UAChB,GAAI,CAACA,EAAO,eAAiBksC,GAAU,iBAAiBlsC,CAAM,EAAG,CAC3DgrD,GACFxD,GAAS,sBAAsBxnD,EAAO,WAAW,EAAE,aAAasnD,EAAkB,EAEpF,IAAMjnD,GAAWooB,EAAQ,OAAOzoB,CAAM,EAChC6V,GAAW7V,EAAO,SACpB6V,GAAS,SACX+vC,EAAkB,KAAK5lD,EAAQK,GAAUwV,GAAU6yB,EAAY8e,GAAS,EAAG,IAAI,CAEnF,WACSxnD,EAAO,QAAUA,EAAO,QAAUA,EAAO,YAC9C,CAACA,EAAO,eAAiBksC,GAAU,iBAAiBlsC,CAAM,GAAG,CAC/D,IAAMK,GAAWooB,EAAQ,OAAOzoB,CAAM,EAChC6V,GAAW7V,EAAO,SAWxB,GAVIgrD,IACEhrD,EAAO,iBAAmB,QACxBA,EAAO,iBAAmB,MAAMA,EAAO,sBAAsB,EACjEwnD,GAAS,KAAKxnD,EAAO,eAAe,MAAM,IAEtCK,GAAS,iBAAmB,MAAMA,GAAS,sBAAsB,EACrEmnD,GAAS,KAAKnnD,GAAS,eAAe,MAAM,GAE9CmnD,GAAS,aAAaxnD,EAAO,WAAW,EAAE,aAAasnD,EAAkB,GAEvE,MAAM,QAAQzxC,EAAQ,EAAG,CAC3B,IAAMrC,GAASnT,GAAS,OACxB,QAASrT,GAAI,EAAGC,GAAIumB,GAAO,OAAQxmB,GAAIC,GAAGD,KAAK,CAC7C,IAAMymB,GAAQD,GAAOxmB,EAAC,EAChB2pB,GAAgBd,GAASpC,GAAM,aAAa,EAC9CkD,IAAiBA,GAAc,SACjCivC,EAAkB,KAAK5lD,EAAQK,GAAUsW,GAAe+xB,EAAY8e,GAAS,EAAG/zC,EAAK,CAEzF,CACF,MAAWoC,GAAS,SAClB+vC,EAAkB,KAAK5lD,EAAQK,GAAUwV,GAAU6yB,EAAY8e,GAAS,EAAG,IAAI,CAEnF,EAGJ,IAAMhnD,GAAWR,EAAO,SACxB,QAAShT,GAAI,EAAGC,GAAIuT,GAAS,OAAQxT,GAAIC,GAAGD,KAC1C09D,GAAclqD,GAASxT,EAAC,EAAG4R,EAAQ8pC,EAAYsiB,CAAW,CAE9D,CACA,SAASD,GAAYE,EAAoBhwC,EAAOrc,EAAQ4uC,EAAU,CAChE,IAAMmd,EAAgBM,EAAmB,OACnCL,GAAsBK,EAAmB,aACzCC,GAAqBD,EAAmB,YAC9CpF,EAAmB,gBAAgBjnD,CAAM,EACrCuoD,IAAqB,IAAMvjB,GAAS,eAAeoiB,EAAM,eAAgBpnD,CAAM,EAC/E4uC,GAAUhlB,EAAM,SAAS+9B,EAAiB,KAAK/Y,CAAQ,CAAC,EACxDmd,EAAc,OAAS,GAAGQ,GAAcR,EAAe1vC,EAAOrc,CAAM,EACpEgsD,GAAoB,OAAS,GAAGO,GAAcP,GAAqB3vC,EAAOrc,CAAM,EAChFssD,GAAmB,OAAS,GAAGC,GAAcD,GAAoBjwC,EAAOrc,CAAM,EAClF4pB,EAAM,QAAQ,MAAM,QAAQ,EAAI,EAChCA,EAAM,QAAQ,MAAM,QAAQ,EAAI,EAChCA,EAAM,QAAQ,MAAM,QAAQ,EAAI,EAChCA,EAAM,iBAAiB,EAAK,CAC9B,CACA,SAASsiC,GAAuBH,EAAeC,EAAqB3vC,EAAOrc,EAAQ,CAEjF,IADyBqc,EAAM,UAAY,GAAOA,EAAM,iBAAmB,QAClD,KACvB,OAEE4qC,EAAmB,MAAM,yBAAyBjnD,EAAO,EAAE,IAAM,SACnEinD,EAAmB,MAAM,yBAAyBjnD,EAAO,EAAE,EAAI,IAAI9S,GAAkB,EAAG,EAAG,CACzF,gBAAiB,GACjB,KAAM2tB,GAAW,IAAI,6BAA6B,GAAKA,GAAW,IAAI,wBAAwB,EAAI5+B,GAAgB+P,GAClH,UAAW7M,GACX,QAAS,EACT,cAAe29B,EACf,mBAAoB,GACpB,qBAAsB,GACtB,WAAY9lC,GAAgB,iBAC9B,CAAC,GAEH,IAAMotE,GAA2B6C,EAAmB,MAAM,yBAAyBjnD,EAAO,EAAE,EACtFwsD,GAAiBxsD,EAAO,UAAY2nD,EAC1CvD,GAAyB,QAAQoI,GAAe,EAAGA,GAAe,CAAC,EACnE,IAAM9xC,GAAsB0sC,EAAM,gBAAgB,EAClDA,EAAM,gBAAgBhD,EAAwB,EAC9CgD,EAAM,cAAcU,CAAkB,EACtCC,EAAqBX,EAAM,cAAc,EACrCW,EAAqB,GAAGX,EAAM,cAAc,SAAU,EAAG,EAC7DA,EAAM,MAAM,EACR0B,IAAmBv+B,EAAW,OAAOlO,CAAK,EAC9C,IAAMowC,GAAqBrF,EAAM,YACjCA,EAAM,YAAcjlE,GACpB,IAAMuqE,GAAwB1sD,EAAO,SAOrC,GANIA,EAAO,WAAa,SAAQA,EAAO,SAAW,QAClDinD,EAAmB,gBAAgBjnD,CAAM,EACrCuoD,IAAqB,IAAMvjB,GAAS,eAAeoiB,EAAM,eAAgBpnD,CAAM,EACnFusD,GAAcR,EAAe1vC,EAAOrc,CAAM,EAC1CuN,GAAS,8BAA8B62C,EAAwB,EAC/D72C,GAAS,yBAAyB62C,EAAwB,EACtDvpC,GAAW,IAAI,sCAAsC,IAAM,GAAO,CACpE,IAAI8xC,GAA0B,GAC9B,QAASv+D,GAAI,EAAGC,GAAI29D,EAAoB,OAAQ59D,GAAIC,GAAGD,KAAK,CAC1D,IAAM27C,GAAaiiB,EAAoB59D,EAAC,EAClCgT,GAAS2oC,GAAW,OACpBtoC,GAAWsoC,GAAW,SACtB9yB,GAAW8yB,GAAW,SACtBl1B,GAAQk1B,GAAW,MACzB,GAAI9yB,GAAS,OAASp9B,IAAcunB,GAAO,OAAO,KAAKpB,EAAO,MAAM,EAAG,CACrE,IAAM4sD,GAAc31C,GAAS,KAC7BA,GAAS,KAAO5hC,GAChB4hC,GAAS,YAAc,GACvB43B,GAAaztC,GAAQib,EAAOrc,EAAQyB,GAAUwV,GAAUpC,EAAK,EAC7DoC,GAAS,KAAO21C,GAChB31C,GAAS,YAAc,GACvB01C,GAA0B,EAC5B,CACF,CACIA,KAA4B,KAC9Bp/C,GAAS,8BAA8B62C,EAAwB,EAC/D72C,GAAS,yBAAyB62C,EAAwB,EAE9D,CACAgD,EAAM,gBAAgB1sC,EAAmB,EACzC0sC,EAAM,cAAcU,EAAoBC,CAAkB,EACtD2E,KAA0B,SAAQ1sD,EAAO,SAAW0sD,IACxDtF,EAAM,YAAcqF,EACtB,CACA,SAASF,GAAc1hC,EAAYxO,EAAOrc,EAAQ,CAChD,IAAM6sD,EAAmBxwC,EAAM,UAAY,GAAOA,EAAM,iBAAmB,KAC3E,QAASjuB,EAAI,EAAGC,GAAIw8B,EAAW,OAAQz8B,EAAIC,GAAGD,IAAK,CACjD,IAAM27C,GAAalf,EAAWz8B,CAAC,EACzBgT,GAAS2oC,GAAW,OACpBtoC,GAAWsoC,GAAW,SACtB9yB,GAAW41C,IAAqB,KAAO9iB,GAAW,SAAW8iB,EAC7Dh4C,GAAQk1B,GAAW,MACrB3oC,GAAO,OAAO,KAAKpB,EAAO,MAAM,GAClC6uC,GAAaztC,GAAQib,EAAOrc,EAAQyB,GAAUwV,GAAUpC,EAAK,CAEjE,CACF,CACA,SAASg6B,GAAaztC,EAAQib,EAAOrc,EAAQyB,EAAUwV,EAAUpC,GAAO,CACtEzT,EAAO,eAAegmD,EAAO/qC,EAAOrc,EAAQyB,EAAUwV,EAAUpC,EAAK,EACrEzT,EAAO,gBAAgB,iBAAiBpB,EAAO,mBAAoBoB,EAAO,WAAW,EACrFA,EAAO,aAAa,gBAAgBA,EAAO,eAAe,EAC1D6V,EAAS,eAAemwC,EAAO/qC,EAAOrc,EAAQyB,EAAUL,EAAQyT,EAAK,EACjEoC,EAAS,cAAgB,IAAQA,EAAS,OAASp9B,IAAco9B,EAAS,kBAAoB,IAChGA,EAAS,KAAO5hC,GAChB4hC,EAAS,YAAc,GACvBmwC,EAAM,mBAAmBpnD,EAAQqc,EAAO5a,EAAUwV,EAAU7V,EAAQyT,EAAK,EACzEoC,EAAS,KAAO77B,GAChB67B,EAAS,YAAc,GACvBmwC,EAAM,mBAAmBpnD,EAAQqc,EAAO5a,EAAUwV,EAAU7V,EAAQyT,EAAK,EACzEoC,EAAS,KAAOp9B,IAEhButE,EAAM,mBAAmBpnD,EAAQqc,EAAO5a,EAAUwV,EAAU7V,EAAQyT,EAAK,EAE3EzT,EAAO,cAAcgmD,EAAO/qC,EAAOrc,EAAQyB,EAAUwV,EAAUpC,EAAK,CACtE,CACA,SAAS22C,GAAWv0C,EAAUoF,EAAOjb,EAAQ,CACvCib,EAAM,UAAY,KAAMA,EAAQwsC,IACpC,IAAMt3B,EAAqBb,GAAW,IAAIzZ,CAAQ,EAC5CwuB,EAASwhB,EAAmB,MAAM,OAClCxa,GAAewa,EAAmB,MAAM,aACxC6F,GAAqBrnB,EAAO,MAAM,QAClCsnB,GAAczD,EAAa,cAAcryC,EAAUwuB,EAAO,MAAOgH,GAAcpwB,EAAOjb,CAAM,EAC5F4rD,GAAkB1D,EAAa,mBAAmByD,EAAW,EAC/D3nB,GAAW7T,EAAmB,SAClCA,EAAmB,YAActa,EAAS,uBAAyBoF,EAAM,YAAc,KACvFkV,EAAmB,IAAMlV,EAAM,IAC/BkV,EAAmB,QAAUta,EAAS,uBAAyB0S,EAAaD,GAAU,IAAIzS,EAAS,QAAUsa,EAAmB,WAAW,EAC3IA,EAAmB,eAAiBA,EAAmB,cAAgB,MAAQta,EAAS,SAAW,KAAOoF,EAAM,oBAAsBpF,EAAS,eAC3ImuB,KAAa,SACfnuB,EAAS,iBAAiB,UAAWo4B,EAAiB,EACtDjK,GAA2B,IAAI,IAC/B7T,EAAmB,SAAW6T,IAEhC,IAAI3Z,GAAU2Z,GAAS,IAAI4nB,EAAe,EAC1C,GAAIvhC,KAAY,QACd,GAAI8F,EAAmB,iBAAmB9F,IAAW8F,EAAmB,qBAAuBu7B,GAC7F,OAAAG,GAA+Bh2C,EAAU81C,EAAW,EAC7CthC,QAGTshC,GAAY,SAAWzD,EAAa,YAAYryC,CAAQ,EACxDA,EAAS,gBAAgB81C,GAAa3F,CAAK,EAC3C37B,GAAU69B,EAAa,eAAeyD,GAAaC,EAAe,EAClE5nB,GAAS,IAAI4nB,GAAiBvhC,EAAO,EACrC8F,EAAmB,SAAWw7B,GAAY,SAE5C,IAAM1yC,GAAWkX,EAAmB,SACpC,OAAI,CAACta,EAAS,kBAAoB,CAACA,EAAS,qBAAuBA,EAAS,WAAa,MACvFoD,GAAS,eAAiB2qB,GAAS,SAErCioB,GAA+Bh2C,EAAU81C,EAAW,EACpDx7B,EAAmB,YAAc27B,GAAoBj2C,CAAQ,EAC7Dsa,EAAmB,mBAAqBu7B,GACpCv7B,EAAmB,cACrBlX,GAAS,kBAAkB,MAAQorB,EAAO,MAAM,QAChDprB,GAAS,WAAW,MAAQorB,EAAO,MAAM,MACzCprB,GAAS,kBAAkB,MAAQorB,EAAO,MAAM,YAChDprB,GAAS,wBAAwB,MAAQorB,EAAO,MAAM,kBACtDprB,GAAS,WAAW,MAAQorB,EAAO,MAAM,KACzCprB,GAAS,iBAAiB,MAAQorB,EAAO,MAAM,WAC/CprB,GAAS,eAAe,MAAQorB,EAAO,MAAM,SAC7CprB,GAAS,MAAM,MAAQorB,EAAO,MAAM,aACpCprB,GAAS,MAAM,MAAQorB,EAAO,MAAM,aACpCprB,GAAS,YAAY,MAAQorB,EAAO,MAAM,MAC1CprB,GAAS,kBAAkB,MAAQorB,EAAO,MAAM,YAChDprB,GAAS,iBAAiB,MAAQorB,EAAO,MAAM,KAC/CprB,GAAS,qBAAqB,MAAQorB,EAAO,MAAM,qBACnDprB,GAAS,wBAAwB,MAAQorB,EAAO,MAAM,wBACtDprB,GAAS,cAAc,MAAQorB,EAAO,MAAM,cAC5CprB,GAAS,gBAAgB,MAAQorB,EAAO,MAAM,gBAC9CprB,GAAS,aAAa,MAAQorB,EAAO,MAAM,aAC3CprB,GAAS,eAAe,MAAQorB,EAAO,MAAM,eAC7CprB,GAAS,kBAAkB,MAAQorB,EAAO,MAAM,mBAElDlU,EAAmB,eAAiB9F,GACpC8F,EAAmB,aAAe,KAC3B9F,EACT,CACA,SAAS0hC,GAAe57B,EAAoB,CAC1C,GAAIA,EAAmB,eAAiB,KAAM,CAC5C,IAAM67B,EAAe77B,EAAmB,eAAe,YAAY,EACnEA,EAAmB,aAAe2N,GAAc,aAAakuB,EAAa,IAAK77B,EAAmB,QAAQ,CAC5G,CACA,OAAOA,EAAmB,YAC5B,CACA,SAAS07B,GAA+Bh2C,EAAU81C,EAAa,CAC7D,IAAMx7B,EAAqBb,GAAW,IAAIzZ,CAAQ,EAClDsa,EAAmB,iBAAmBw7B,EAAY,iBAClDx7B,EAAmB,SAAWw7B,EAAY,SAC1Cx7B,EAAmB,cAAgBw7B,EAAY,cAC/Cx7B,EAAmB,WAAaw7B,EAAY,WAC5Cx7B,EAAmB,gBAAkBw7B,EAAY,gBACjDx7B,EAAmB,gBAAkBw7B,EAAY,gBACjDx7B,EAAmB,SAAWw7B,EAAY,SAC1Cx7B,EAAmB,aAAew7B,EAAY,aAC9Cx7B,EAAmB,aAAew7B,EAAY,aAC9Cx7B,EAAmB,YAAcw7B,EAAY,YAC7Cx7B,EAAmB,kBAAoBw7B,EAAY,kBACnDx7B,EAAmB,kBAAoBw7B,EAAY,kBACnDx7B,EAAmB,gBAAkBw7B,EAAY,oBACjDx7B,EAAmB,aAAew7B,EAAY,aAC9Cx7B,EAAmB,eAAiBw7B,EAAY,eAChDx7B,EAAmB,YAAcw7B,EAAY,WAC/C,CACA,SAAS/B,GAAWhrD,EAAQqc,EAAO5a,EAAUwV,EAAU7V,EAAQ,CACzDib,EAAM,UAAY,KAAMA,EAAQwsC,IACpCt7C,GAAS,kBAAkB,EAC3B,IAAMo4B,GAAMtpB,EAAM,IACZupB,GAAc3uB,EAAS,uBAAyBoF,EAAM,YAAc,KACpE3jB,GAAa8uD,IAAyB,KAAOJ,EAAM,iBAAmBI,EAAqB,mBAAqB,GAAOA,EAAqB,QAAQ,WAAanoE,GACjKwmD,IAAU5uB,EAAS,uBAAyB0S,EAAaD,GAAU,IAAIzS,EAAS,QAAU2uB,EAAW,EACrGynB,GAAep2C,EAAS,eAAiB,IAAQ,CAAC,CAACxV,EAAS,WAAW,OAASA,EAAS,WAAW,MAAM,WAAa,EACvH6rD,GAAiB,CAAC,CAAC7rD,EAAS,WAAW,UAAY,CAAC,CAACwV,EAAS,WAAaA,EAAS,WAAa,GACjGkiB,GAAe,CAAC,CAAC13B,EAAS,gBAAgB,SAC1C23B,GAAe,CAAC,CAAC33B,EAAS,gBAAgB,OAC1C43B,GAAc,CAAC,CAAC53B,EAAS,gBAAgB,MAC3C4yB,GAAclyC,GACd80B,EAAS,aACPuwC,IAAyB,MAAQA,EAAqB,mBAAqB,MAC7EnzB,GAAc+yB,EAAM,aAGxB,IAAM1zC,GAAiBjS,EAAS,gBAAgB,UAAYA,EAAS,gBAAgB,QAAUA,EAAS,gBAAgB,MAClHo3B,GAAoBnlB,KAAmB,OAASA,GAAe,OAAS,EACxE6d,GAAqBb,GAAW,IAAIzZ,CAAQ,EAC5CwuB,GAASwhB,EAAmB,MAAM,OACxC,GAAIsB,IAAqB,KACnBC,KAA0B,IAAQxoD,IAAW0nD,GAAgB,CAC/D,IAAMt2B,GAAWpxB,IAAW0nD,GAAkBzwC,EAAS,KAAOwwC,EAC9DziB,GAAS,SAAS/tB,EAAUjX,EAAQoxB,EAAQ,CAC9C,CAEF,IAAIm8B,GAAqB,GACrBt2C,EAAS,UAAYsa,GAAmB,WACtCA,GAAmB,aAAeA,GAAmB,qBAAuBkU,GAAO,MAAM,SAElFlU,GAAmB,mBAAqB74B,IAExC0I,EAAO,eAAiBmwB,GAAmB,WAAa,IAExD,CAACnwB,EAAO,eAAiBmwB,GAAmB,WAAa,IAEzDnwB,EAAO,eAAiBmwB,GAAmB,gBAAkB,IAAQnwB,EAAO,eAAiB,MAE7FA,EAAO,eAAiBmwB,GAAmB,gBAAkB,IAASnwB,EAAO,eAAiB,MAE9FA,EAAO,iBAAmBmwB,GAAmB,aAAe,IAE5D,CAACnwB,EAAO,iBAAmBmwB,GAAmB,aAAe,IAE7DnwB,EAAO,eAAiBmwB,GAAmB,WAAa,IAExD,CAACnwB,EAAO,eAAiBmwB,GAAmB,WAAa,IAEzDnwB,EAAO,iBAAmBmwB,GAAmB,kBAAoB,IAAQnwB,EAAO,gBAAkB,MAElGA,EAAO,iBAAmBmwB,GAAmB,kBAAoB,IAASnwB,EAAO,gBAAkB,MAEnGA,EAAO,iBAAmBmwB,GAAmB,kBAAoB,IAAQnwB,EAAO,eAAiB,MAEjGA,EAAO,iBAAmBmwB,GAAmB,kBAAoB,IAASnwB,EAAO,eAAiB,MAElGmwB,GAAmB,SAAWsU,IAE9B5uB,EAAS,MAAQ,IAAQsa,GAAmB,MAAQoU,IAEpDpU,GAAmB,oBAAsB,SAAWA,GAAmB,oBAAsByT,GAAS,WAAazT,GAAmB,kBAAoByT,GAAS,kBAEnKzT,GAAmB,eAAiB87B,IAEpC97B,GAAmB,iBAAmB+7B,IAEtC/7B,GAAmB,eAAiB4H,IAEpC5H,GAAmB,eAAiB6H,IAEpC7H,GAAmB,cAAgB8H,IAEnC9H,GAAmB,cAAgB8C,IAEnC9C,GAAmB,oBAAsBsH,MAClD00B,GAAqB,KAGvBA,GAAqB,GACrBh8B,GAAmB,UAAYta,EAAS,SAE1C,IAAIwU,GAAU8F,GAAmB,eAC7Bg8B,KAAuB,KACzB9hC,GAAU+/B,GAAWv0C,EAAUoF,EAAOjb,CAAM,GAE9C,IAAIosD,GAAiB,GACjBC,GAAkB,GAClBC,GAAgB,GACdC,GAAaliC,GAAQ,YAAY,EAAGmiC,GAAar8B,GAAmB,SAU1E,GATI3H,EAAM,WAAW6B,GAAQ,OAAO,IAClC+hC,GAAiB,GACjBC,GAAkB,GAClBC,GAAgB,IAEdz2C,EAAS,KAAOwwC,IAClBA,EAAqBxwC,EAAS,GAC9Bw2C,GAAkB,IAEhBD,IAAkB9F,IAAmB1nD,EAAQ,CAC3Cy4B,GAAa,oBACfgwB,GAAyB,KAAKzoD,EAAO,gBAAgB,EACrD9H,GAA6BuwD,EAAwB,EACrDrwD,GAA2BqwD,EAAwB,EACnDkF,GAAW,SAAS1V,EAAK,mBAAoBwQ,EAAwB,GAErEkF,GAAW,SAAS1V,EAAK,mBAAoBj4C,EAAO,gBAAgB,EAEtE2tD,GAAW,SAAS1V,EAAK,aAAcj4C,EAAO,kBAAkB,EAChE,IAAM6tD,GAAUF,GAAW,IAAI,eAC3BE,KAAY,QACdA,GAAQ,SAAS5V,EAAK0Q,GAAU,sBAAsB3oD,EAAO,WAAW,CAAC,EAEvEy4B,GAAa,wBACfk1B,GAAW,SACT1V,EACA,gBACA,GAAK,KAAK,IAAIj4C,EAAO,IAAM,CAAC,EAAI,KAAK,IACvC,GAEEiX,EAAS,qBAAuBA,EAAS,oBAAsBA,EAAS,uBAAyBA,EAAS,qBAAuBA,EAAS,wBAA0BA,EAAS,mBAC/K02C,GAAW,SAAS1V,EAAK,iBAAkBj4C,EAAO,uBAAyB,EAAI,EAE7E0nD,IAAmB1nD,IACrB0nD,EAAiB1nD,EACjBytD,GAAkB,GAClBC,GAAgB,GAEpB,CACA,GAAItsD,EAAO,cAAe,CACxBusD,GAAW,YAAY1V,EAAK72C,EAAQ,YAAY,EAChDusD,GAAW,YAAY1V,EAAK72C,EAAQ,mBAAmB,EACvD,IAAM64B,GAAW74B,EAAO,SACpB64B,KACEA,GAAS,cAAgB,MAAMA,GAAS,mBAAmB,EAC/D0zB,GAAW,SAAS1V,EAAK,cAAehe,GAAS,YAAa1sB,EAAQ,EAE1E,CACInM,EAAO,gBACTusD,GAAW,YAAY1V,EAAK72C,EAAQ,iBAAiB,EACrDusD,GAAW,SAAS1V,EAAK,kBAAmB72C,EAAO,iBAAkBmM,EAAQ,EAC7EogD,GAAW,YAAY1V,EAAK72C,EAAQ,mBAAmB,EACvDusD,GAAW,SAAS1V,EAAK,oBAAqB72C,EAAO,iBAAkBmM,EAAQ,EAC/EogD,GAAW,YAAY1V,EAAK72C,EAAQ,sBAAsB,EACtDA,EAAO,iBAAmB,MAC5BusD,GAAW,SAAS1V,EAAK,uBAAwB72C,EAAO,eAAgBmM,EAAQ,GAGpF,IAAMyI,GAAkBvU,EAAS,gBAoCjC,IAnCIuU,GAAgB,WAAa,QAAUA,GAAgB,SAAW,QAAUA,GAAgB,QAAU,SACxGwzC,GAAa,OAAOpoD,EAAQK,EAAUgqB,EAAO,GAE3CgiC,IAAmBl8B,GAAmB,gBAAkBnwB,EAAO,iBACjEmwB,GAAmB,cAAgBnwB,EAAO,cAC1CusD,GAAW,SAAS1V,EAAK,gBAAiB72C,EAAO,aAAa,GAE5D6V,EAAS,uBAAyBA,EAAS,SAAW,OACxD22C,GAAW,OAAO,MAAQ/nB,GAC1B+nB,GAAW,WAAW,MAAQ/nB,GAAO,eAAiBA,GAAO,wBAA0B,GAAQ,GAAK,GAElG5uB,EAAS,wBAA0BA,EAAS,SAAW,MAAQoF,EAAM,cAAgB,OACvFuxC,GAAW,gBAAgB,MAAQvxC,EAAM,sBAEvCoxC,KACFE,GAAW,SAAS1V,EAAK,sBAAuBmP,EAAM,mBAAmB,EACrE71B,GAAmB,aACrBu8B,GAA8BF,GAAYF,EAAa,EAErD/nB,IAAO1uB,EAAS,MAAQ,IAC1B3J,GAAU,mBAAmBsgD,GAAYjoB,EAAG,EAE9Cr4B,GAAU,wBAAwBsgD,GAAY32C,EAAUixC,EAAaD,EAAShB,EAAmB,MAAM,yBAAyBjnD,EAAO,EAAE,CAAC,EAC1Ik/B,GAAc,OAAO+Y,EAAKkV,GAAe57B,EAAkB,EAAGq8B,GAAYrgD,EAAQ,GAEhF0J,EAAS,kBAAoBA,EAAS,qBAAuB,KAC/DioB,GAAc,OAAO+Y,EAAKkV,GAAe57B,EAAkB,EAAGq8B,GAAYrgD,EAAQ,EAClF0J,EAAS,mBAAqB,IAE5BA,EAAS,kBACX02C,GAAW,SAAS1V,EAAK,SAAU72C,EAAO,MAAM,EAElDusD,GAAW,SAAS1V,EAAK,kBAAmB72C,EAAO,eAAe,EAClEusD,GAAW,SAAS1V,EAAK,eAAgB72C,EAAO,YAAY,EAC5DusD,GAAW,SAAS1V,EAAK,cAAe72C,EAAO,WAAW,EACtD6V,EAAS,kBAAoBA,EAAS,oBAAqB,CAC7D,IAAMrC,GAASqC,EAAS,eACxB,QAAS7oB,GAAI,EAAGC,GAAIumB,GAAO,OAAQxmB,GAAIC,GAAGD,KAAK,CAC7C,IAAMymB,GAAQD,GAAOxmB,EAAC,EACtBu7D,GAAe,OAAO90C,GAAO4W,EAAO,EACpCk+B,GAAe,KAAK90C,GAAO4W,EAAO,CACpC,CACF,CACA,OAAOA,EACT,CACA,SAASqiC,GAA8BzzC,EAAUrrB,EAAO,CACtDqrB,EAAS,kBAAkB,YAAcrrB,EACzCqrB,EAAS,WAAW,YAAcrrB,EAClCqrB,EAAS,kBAAkB,YAAcrrB,EACzCqrB,EAAS,wBAAwB,YAAcrrB,EAC/CqrB,EAAS,YAAY,YAAcrrB,EACnCqrB,EAAS,kBAAkB,YAAcrrB,EACzCqrB,EAAS,WAAW,YAAcrrB,EAClCqrB,EAAS,iBAAiB,YAAcrrB,EACxCqrB,EAAS,eAAe,YAAcrrB,EACtCqrB,EAAS,iBAAiB,YAAcrrB,CAC1C,CACA,SAASk+D,GAAoBj2C,EAAU,CACrC,OAAOA,EAAS,uBAAyBA,EAAS,oBAAsBA,EAAS,qBAAuBA,EAAS,wBAA0BA,EAAS,kBAAoBA,EAAS,kBAAoBA,EAAS,SAAW,EAC3N,CACA,KAAK,kBAAoB,UAAW,CAClC,OAAOqwC,CACT,EACA,KAAK,qBAAuB,UAAW,CACrC,OAAOC,CACT,EACA,KAAK,gBAAkB,UAAW,CAChC,OAAOC,CACT,EACA,KAAK,wBAA0B,SAAS3rC,EAAc6hC,EAAcR,EAAc,CAChFxsB,GAAW,IAAI7U,EAAa,OAAO,EAAE,eAAiB6hC,EACtDhtB,GAAW,IAAI7U,EAAa,YAAY,EAAE,eAAiBqhC,EAC3D,IAAM/C,EAAyBzpB,GAAW,IAAI7U,CAAY,EAC1Ds+B,EAAuB,sBAAwB,GAC/CA,EAAuB,0BAA4B+C,IAAiB,OAC/D/C,EAAuB,2BACtBt/B,GAAW,IAAI,sCAAsC,IAAM,KAC7D,QAAQ,KAAK,wGAAwG,EACrHs/B,EAAuB,qBAAuB,GAGpD,EACA,KAAK,2BAA6B,SAASt+B,EAAckyC,EAAoB,CAC3E,IAAM5T,EAAyBzpB,GAAW,IAAI7U,CAAY,EAC1Ds+B,EAAuB,mBAAqB4T,EAC5C5T,EAAuB,wBAA0B4T,IAAuB,MAC1E,EACA,KAAK,gBAAkB,SAASlyC,EAAcuyB,EAAiB,EAAG9xB,EAAoB,EAAG,CACvFkrC,EAAuB3rC,EACvByrC,EAAyBlZ,EACzBmZ,EAA4BjrC,EAC5B,IAAI0xC,EAAwB,GACxB1Z,EAAc,KACdiJ,GAAS,GACT0Q,GAAmB,GACvB,GAAIpyC,EAAc,CAChB,IAAMs+B,GAAyBzpB,GAAW,IAAI7U,CAAY,EAC1D,GAAIs+B,GAAuB,0BAA4B,OACrDvwB,EAAM,gBAAgBquB,EAAI,YAAa,IAAI,EAC3C+V,EAAwB,WACf7T,GAAuB,qBAAuB,OACvD5sC,GAAS,kBAAkBsO,CAAY,UAC9Bs+B,GAAuB,sBAChC5sC,GAAS,eAAesO,EAAc6U,GAAW,IAAI7U,EAAa,OAAO,EAAE,eAAgB6U,GAAW,IAAI7U,EAAa,YAAY,EAAE,cAAc,UAC1IA,EAAa,YAAa,CACnC,IAAMqhC,GAAerhC,EAAa,aAClC,GAAIs+B,GAAuB,sBAAwB+C,GAAc,CAC/D,GAAIA,KAAiB,MAAQxsB,GAAW,IAAIwsB,EAAY,IAAMrhC,EAAa,QAAUqhC,GAAa,MAAM,OAASrhC,EAAa,SAAWqhC,GAAa,MAAM,QAC1J,MAAM,IAAI,MAAM,gFAAgF,EAElG3vC,GAAS,uBAAuBsO,CAAY,CAC9C,CACF,CACA,IAAMhgB,GAAUggB,EAAa,SACzBhgB,GAAQ,iBAAmBA,GAAQ,oBAAsBA,GAAQ,4BACnEoyD,GAAmB,IAErB,IAAMC,GAAqBx9B,GAAW,IAAI7U,CAAY,EAAE,mBACpDA,EAAa,yBACX,MAAM,QAAQqyC,GAAmB9f,CAAc,CAAC,EAClDkG,EAAc4Z,GAAmB9f,CAAc,EAAE9xB,CAAiB,EAElEg4B,EAAc4Z,GAAmB9f,CAAc,EAEjDmP,GAAS,IACA1hC,EAAa,QAAU,GAAKtO,GAAS,mBAAmBsO,CAAY,IAAM,GACnFy4B,EAAc5jB,GAAW,IAAI7U,CAAY,EAAE,+BAEvC,MAAM,QAAQqyC,EAAkB,EAClC5Z,EAAc4Z,GAAmB5xC,CAAiB,EAElDg4B,EAAc4Z,GAGlBvG,EAAiB,KAAK9rC,EAAa,QAAQ,EAC3C+rC,EAAgB,KAAK/rC,EAAa,OAAO,EACzCgsC,EAAsBhsC,EAAa,WACrC,MACE8rC,EAAiB,KAAKla,EAAS,EAAE,eAAeya,CAAW,EAAE,MAAM,EACnEN,EAAgB,KAAKS,EAAQ,EAAE,eAAeH,CAAW,EAAE,MAAM,EACjEL,EAAsBS,GASxB,GAPyB1+B,EAAM,gBAAgBquB,EAAI,YAAa3D,CAAW,GACnD0Z,GACtBpkC,EAAM,YAAY/N,EAAcy4B,CAAW,EAE7C1qB,EAAM,SAAS+9B,CAAgB,EAC/B/9B,EAAM,QAAQg+B,CAAe,EAC7Bh+B,EAAM,eAAei+B,CAAmB,EACpCtK,GAAQ,CACV,IAAMvD,GAAoBtpB,GAAW,IAAI7U,EAAa,OAAO,EAC7Do8B,EAAI,qBAAqBA,EAAI,YAAaA,EAAI,kBAAmBA,EAAI,4BAA8B7J,EAAgB4L,GAAkB,eAAgB19B,CAAiB,CACxK,SAAW2xC,GAAkB,CAC3B,IAAMjU,GAAoBtpB,GAAW,IAAI7U,EAAa,OAAO,EACvDsyC,GAAQ/f,GAAkB,EAChC6J,EAAI,wBAAwBA,EAAI,YAAaA,EAAI,kBAAmB+B,GAAkB,eAAgB19B,GAAqB,EAAG6xC,EAAK,CACrI,CACA1G,EAAqB,EACvB,EACA,KAAK,uBAAyB,SAAS5rC,EAActsB,EAAGM,EAAG6L,EAAOC,EAAQvE,GAAQg3D,GAAqB,CACrG,GAAI,EAAEvyC,GAAgBA,EAAa,qBAAsB,CACvD,QAAQ,MAAM,0FAA0F,EACxG,MACF,CACA,IAAIy4B,GAAc5jB,GAAW,IAAI7U,CAAY,EAAE,mBAI/C,GAHIA,EAAa,yBAA2BuyC,KAAwB,SAClE9Z,GAAcA,GAAY8Z,EAAmB,GAE3C9Z,GAAa,CACf1qB,EAAM,gBAAgBquB,EAAI,YAAa3D,EAAW,EAClD,GAAI,CACF,IAAMz4C,GAAUggB,EAAa,QACvBuT,GAAgBvzB,GAAQ,OACxByzB,GAAczzB,GAAQ,KAC5B,GAAI,CAAC48B,GAAa,sBAAsBrJ,EAAa,EAAG,CACtD,QAAQ,MAAM,2GAA2G,EACzH,MACF,CACA,GAAI,CAACqJ,GAAa,oBAAoBnJ,EAAW,EAAG,CAClD,QAAQ,MAAM,qHAAqH,EACnI,MACF,CACI//B,GAAK,GAAKA,GAAKssB,EAAa,MAAQngB,GAAU7L,GAAK,GAAKA,GAAKgsB,EAAa,OAASlgB,GACrFs8C,EAAI,WAAW1oD,EAAGM,EAAG6L,EAAOC,EAAQqzB,GAAM,QAAQI,EAAa,EAAGJ,GAAM,QAAQM,EAAW,EAAGl4B,EAAM,CAExG,QAAE,CACA,IAAMi3D,GAAe7G,IAAyB,KAAO92B,GAAW,IAAI82B,CAAoB,EAAE,mBAAqB,KAC/G59B,EAAM,gBAAgBquB,EAAI,YAAaoW,EAAY,CACrD,CACF,CACF,EACA,KAAK,4BAA8B,SAASxyC,EAActsB,EAAGM,EAAG6L,EAAOC,EAAQvE,GAAQg3D,GAAqB,CAC1G,OAAO3M,GAAQ,KAAM,KAAM,WAAa,CACtC,GAAI,EAAE5lC,GAAgBA,EAAa,qBACjC,MAAM,IAAI,MAAM,0FAA0F,EAE5G,IAAIy4B,GAAc5jB,GAAW,IAAI7U,CAAY,EAAE,mBAI/C,GAHIA,EAAa,yBAA2BuyC,KAAwB,SAClE9Z,GAAcA,GAAY8Z,EAAmB,GAE3C9Z,GAAa,CACf,IAAMz4C,GAAUggB,EAAa,QACvBuT,GAAgBvzB,GAAQ,OACxByzB,GAAczzB,GAAQ,KAC5B,GAAI,CAAC48B,GAAa,sBAAsBrJ,EAAa,EACnD,MAAM,IAAI,MAAM,gHAAgH,EAElI,GAAI,CAACqJ,GAAa,oBAAoBnJ,EAAW,EAC/C,MAAM,IAAI,MAAM,0HAA0H,EAE5I,GAAI//B,GAAK,GAAKA,GAAKssB,EAAa,MAAQngB,GAAU7L,GAAK,GAAKA,GAAKgsB,EAAa,OAASlgB,EAAS,CAC9FiuB,EAAM,gBAAgBquB,EAAI,YAAa3D,EAAW,EAClD,IAAMga,GAAWrW,EAAI,aAAa,EAClCA,EAAI,WAAWA,EAAI,kBAAmBqW,EAAQ,EAC9CrW,EAAI,WAAWA,EAAI,kBAAmB7gD,GAAO,WAAY6gD,EAAI,WAAW,EACxEA,EAAI,WAAW1oD,EAAGM,EAAG6L,EAAOC,EAAQqzB,GAAM,QAAQI,EAAa,EAAGJ,GAAM,QAAQM,EAAW,EAAG,CAAC,EAC/F,IAAMi/B,GAAkB/G,IAAyB,KAAO92B,GAAW,IAAI82B,CAAoB,EAAE,mBAAqB,KAClH59B,EAAM,gBAAgBquB,EAAI,YAAasW,EAAe,EACtD,IAAM12D,GAAOogD,EAAI,UAAUA,EAAI,2BAA4B,CAAC,EAC5D,OAAAA,EAAI,MAAM,EACV,MAAMtgD,GAAWsgD,EAAKpgD,GAAM,CAAC,EAC7BogD,EAAI,WAAWA,EAAI,kBAAmBqW,EAAQ,EAC9CrW,EAAI,iBAAiBA,EAAI,kBAAmB,EAAG7gD,EAAM,EACrD6gD,EAAI,aAAaqW,EAAQ,EACzBrW,EAAI,WAAWpgD,EAAI,EACZT,EACT,KACE,OAAM,IAAI,MAAM,0FAA0F,CAE9G,CACF,CAAC,CACH,EACA,KAAK,yBAA2B,SAASyE,EAAS0N,EAAW,KAAM6wC,EAAQ,EAAG,CACxEv+C,EAAQ,YAAc,KACxBpE,GAAS,yEAAyE,EAClF8R,EAAW,UAAU,CAAC,GAAK,KAC3B1N,EAAU,UAAU,CAAC,GAEvB,IAAM2yD,EAAa,KAAK,IAAI,EAAG,CAACpU,CAAK,EAC/B1+C,EAAQ,KAAK,MAAMG,EAAQ,MAAM,MAAQ2yD,CAAU,EACnD7yD,GAAS,KAAK,MAAME,EAAQ,MAAM,OAAS2yD,CAAU,EACrDj/D,GAAIga,IAAa,KAAOA,EAAS,EAAI,EACrC1Z,GAAI0Z,IAAa,KAAOA,EAAS,EAAI,EAC3CgE,GAAS,aAAa1R,EAAS,CAAC,EAChCo8C,EAAI,kBAAkBA,EAAI,WAAYmC,EAAO,EAAG,EAAG7qD,GAAGM,GAAG6L,EAAOC,EAAM,EACtEiuB,EAAM,cAAc,CACtB,EACA,KAAK,qBAAuB,SAAS6kC,EAAYC,EAAYC,EAAY,KAAMC,EAAc,KAAMxU,EAAQ,EAAG,CACxGqU,EAAW,YAAc,KAC3Bh3D,GAAS,qEAAqE,EAC9Em3D,EAAc,UAAU,CAAC,GAAK,KAC9BH,EAAa,UAAU,CAAC,EACxBC,EAAa,UAAU,CAAC,EACxBtU,EAAQ,UAAU,CAAC,GAAK,EACxBuU,EAAY,MAEd,IAAIjzD,GAAOC,GAAQkzD,GAAMC,GACrBC,GAAMC,GACNL,IAAc,MAChBjzD,GAAQizD,EAAU,IAAI,EAAIA,EAAU,IAAI,EACxChzD,GAASgzD,EAAU,IAAI,EAAIA,EAAU,IAAI,EACzCE,GAAOF,EAAU,IAAI,EACrBG,GAAOH,EAAU,IAAI,IAErBjzD,GAAQ+yD,EAAW,MAAM,MACzB9yD,GAAS8yD,EAAW,MAAM,OAC1BI,GAAO,EACPC,GAAO,GAELF,IAAgB,MAClBG,GAAOH,EAAY,EACnBI,GAAOJ,EAAY,IAEnBG,GAAO,EACPC,GAAO,GAET,IAAM7V,GAAWnqB,GAAM,QAAQ0/B,EAAW,MAAM,EAC1CtV,GAASpqB,GAAM,QAAQ0/B,EAAW,IAAI,EAC5CnhD,GAAS,aAAamhD,EAAY,CAAC,EACnCzW,EAAI,YAAYA,EAAI,oBAAqByW,EAAW,KAAK,EACzDzW,EAAI,YAAYA,EAAI,+BAAgCyW,EAAW,gBAAgB,EAC/EzW,EAAI,YAAYA,EAAI,iBAAkByW,EAAW,eAAe,EAChE,IAAMO,GAAsBhX,EAAI,aAAaA,EAAI,iBAAiB,EAC5DiX,GAA2BjX,EAAI,aAAaA,EAAI,mBAAmB,EACnEkX,GAA0BlX,EAAI,aAAaA,EAAI,kBAAkB,EACjEmX,GAAwBnX,EAAI,aAAaA,EAAI,gBAAgB,EAC7DoX,GAA0BpX,EAAI,aAAaA,EAAI,kBAAkB,EACjE9+C,GAAQs1D,EAAW,oBAAsBA,EAAW,QAAQrU,CAAK,EAAIqU,EAAW,MACtFxW,EAAI,YAAYA,EAAI,kBAAmB9+C,GAAM,KAAK,EAClD8+C,EAAI,YAAYA,EAAI,oBAAqB9+C,GAAM,MAAM,EACrD8+C,EAAI,YAAYA,EAAI,mBAAoB4W,EAAI,EAC5C5W,EAAI,YAAYA,EAAI,iBAAkB6W,EAAI,EACtCL,EAAW,cACbxW,EAAI,cAAcA,EAAI,WAAYmC,EAAO2U,GAAMC,GAAMtzD,GAAOC,GAAQw9C,GAAUC,GAAQjgD,GAAM,IAAI,EAE5Fs1D,EAAW,oBACbxW,EAAI,wBAAwBA,EAAI,WAAYmC,EAAO2U,GAAMC,GAAM71D,GAAM,MAAOA,GAAM,OAAQggD,GAAUhgD,GAAM,IAAI,EAE9G8+C,EAAI,cAAcA,EAAI,WAAYmC,EAAO2U,GAAMC,GAAMtzD,GAAOC,GAAQw9C,GAAUC,GAAQjgD,EAAK,EAG/F8+C,EAAI,YAAYA,EAAI,kBAAmBgX,EAAmB,EAC1DhX,EAAI,YAAYA,EAAI,oBAAqBiX,EAAwB,EACjEjX,EAAI,YAAYA,EAAI,mBAAoBkX,EAAuB,EAC/DlX,EAAI,YAAYA,EAAI,iBAAkBmX,EAAqB,EAC3DnX,EAAI,YAAYA,EAAI,mBAAoBoX,EAAuB,EAC3DjV,IAAU,GAAKsU,EAAW,iBAAiBzW,EAAI,eAAeA,EAAI,UAAU,EAChFruB,EAAM,cAAc,CACtB,EACA,KAAK,uBAAyB,SAAS6kC,EAAYC,EAAYC,EAAY,KAAMC,EAAc,KAAMxU,EAAQ,EAAG,CAC1GqU,EAAW,YAAc,KAC3Bh3D,GAAS,uEAAuE,EAChFk3D,EAAY,UAAU,CAAC,GAAK,KAC5BC,EAAc,UAAU,CAAC,GAAK,KAC9BH,EAAa,UAAU,CAAC,EACxBC,EAAa,UAAU,CAAC,EACxBtU,EAAQ,UAAU,CAAC,GAAK,GAE1B,IAAI1+C,GAAOC,GAAQwd,GAAQ01C,GAAMC,GAAMQ,GACnCP,GAAMC,GAAMO,GACVp2D,GAAQs1D,EAAW,oBAAsBA,EAAW,QAAQrU,CAAK,EAAIqU,EAAW,MAClFE,IAAc,MAChBjzD,GAAQizD,EAAU,IAAI,EAAIA,EAAU,IAAI,EACxChzD,GAASgzD,EAAU,IAAI,EAAIA,EAAU,IAAI,EACzCx1C,GAASw1C,EAAU,IAAI,EAAIA,EAAU,IAAI,EACzCE,GAAOF,EAAU,IAAI,EACrBG,GAAOH,EAAU,IAAI,EACrBW,GAAOX,EAAU,IAAI,IAErBjzD,GAAQvC,GAAM,MACdwC,GAASxC,GAAM,OACfggB,GAAShgB,GAAM,MACf01D,GAAO,EACPC,GAAO,EACPQ,GAAO,GAELV,IAAgB,MAClBG,GAAOH,EAAY,EACnBI,GAAOJ,EAAY,EACnBW,GAAOX,EAAY,IAEnBG,GAAO,EACPC,GAAO,EACPO,GAAO,GAET,IAAMpW,GAAWnqB,GAAM,QAAQ0/B,EAAW,MAAM,EAC1CtV,GAASpqB,GAAM,QAAQ0/B,EAAW,IAAI,EACxCc,GACJ,GAAId,EAAW,gBACbnhD,GAAS,aAAamhD,EAAY,CAAC,EACnCc,GAAWvX,EAAI,mBACNyW,EAAW,oBAAsBA,EAAW,yBACrDnhD,GAAS,kBAAkBmhD,EAAY,CAAC,EACxCc,GAAWvX,EAAI,qBACV,CACL,QAAQ,KAAK,6GAA6G,EAC1H,MACF,CACAA,EAAI,YAAYA,EAAI,oBAAqByW,EAAW,KAAK,EACzDzW,EAAI,YAAYA,EAAI,+BAAgCyW,EAAW,gBAAgB,EAC/EzW,EAAI,YAAYA,EAAI,iBAAkByW,EAAW,eAAe,EAChE,IAAMO,GAAsBhX,EAAI,aAAaA,EAAI,iBAAiB,EAC5DiX,GAA2BjX,EAAI,aAAaA,EAAI,mBAAmB,EACnEkX,GAA0BlX,EAAI,aAAaA,EAAI,kBAAkB,EACjEmX,GAAwBnX,EAAI,aAAaA,EAAI,gBAAgB,EAC7DoX,GAA0BpX,EAAI,aAAaA,EAAI,kBAAkB,EACvEA,EAAI,YAAYA,EAAI,kBAAmB9+C,GAAM,KAAK,EAClD8+C,EAAI,YAAYA,EAAI,oBAAqB9+C,GAAM,MAAM,EACrD8+C,EAAI,YAAYA,EAAI,mBAAoB4W,EAAI,EAC5C5W,EAAI,YAAYA,EAAI,iBAAkB6W,EAAI,EAC1C7W,EAAI,YAAYA,EAAI,mBAAoBqX,EAAI,EACxCb,EAAW,eAAiBA,EAAW,gBACzCxW,EAAI,cAAcuX,GAAUpV,EAAO2U,GAAMC,GAAMO,GAAM7zD,GAAOC,GAAQwd,GAAQggC,GAAUC,GAAQjgD,GAAM,IAAI,EAEpGu1D,EAAW,yBACbzW,EAAI,wBAAwBuX,GAAUpV,EAAO2U,GAAMC,GAAMO,GAAM7zD,GAAOC,GAAQwd,GAAQggC,GAAUhgD,GAAM,IAAI,EAE1G8+C,EAAI,cAAcuX,GAAUpV,EAAO2U,GAAMC,GAAMO,GAAM7zD,GAAOC,GAAQwd,GAAQggC,GAAUC,GAAQjgD,EAAK,EAGvG8+C,EAAI,YAAYA,EAAI,kBAAmBgX,EAAmB,EAC1DhX,EAAI,YAAYA,EAAI,oBAAqBiX,EAAwB,EACjEjX,EAAI,YAAYA,EAAI,mBAAoBkX,EAAuB,EAC/DlX,EAAI,YAAYA,EAAI,iBAAkBmX,EAAqB,EAC3DnX,EAAI,YAAYA,EAAI,mBAAoBoX,EAAuB,EAC3DjV,IAAU,GAAKsU,EAAW,iBAAiBzW,EAAI,eAAeuX,EAAQ,EAC1E5lC,EAAM,cAAc,CACtB,EACA,KAAK,iBAAmB,SAAS7wB,EAAQ,CACnC23B,GAAW,IAAI33B,CAAM,EAAE,qBAAuB,QAChDwU,GAAS,kBAAkBxU,CAAM,CAErC,EACA,KAAK,YAAc,SAAS8C,EAAS,CAC/BA,EAAQ,cACV0R,GAAS,eAAe1R,EAAS,CAAC,EACzBA,EAAQ,gBACjB0R,GAAS,aAAa1R,EAAS,CAAC,EACvBA,EAAQ,oBAAsBA,EAAQ,yBAC/C0R,GAAS,kBAAkB1R,EAAS,CAAC,EAErC0R,GAAS,aAAa1R,EAAS,CAAC,EAElC+tB,EAAM,cAAc,CACtB,EACA,KAAK,WAAa,UAAW,CAC3B09B,EAAyB,EACzBC,EAA4B,EAC5BC,EAAuB,KACvB59B,EAAM,MAAM,EACZuB,GAAc,MAAM,CACtB,EACI,OAAO,mBAAuB,KAChC,mBAAmB,cAAc,IAAI,YAAY,UAAW,CAAE,OAAQ,IAAK,CAAC,CAAC,CAEjF,CACA,IAAI,kBAAmB,CACrB,OAAOp+B,EACT,CACA,IAAI,kBAAmB,CACrB,OAAO,KAAK,iBACd,CACA,IAAI,iBAAiB2L,EAAY,CAC/B,KAAK,kBAAoBA,EACzB,IAAMd,EAAK,KAAK,WAAW,EAC3BA,EAAG,wBAA0Bc,IAAe/e,GAAsB,aAAe,OACjFie,EAAG,iBAAmB5gB,GAAgB,oBAAsB8H,GAA4B,aAAe,MACzG,CACF,EACI5D,GAAU,MAAMu0E,EAAS,CAC3B,YAAYj3D,EAAOk3D,EAAU,MAAO,CAClC,KAAK,UAAY,GACjB,KAAK,KAAO,GACZ,KAAK,MAAQ,IAAI54E,GAAM0hB,CAAK,EAC5B,KAAK,QAAUk3D,CACjB,CACA,OAAQ,CACN,OAAO,IAAID,GAAS,KAAK,MAAO,KAAK,OAAO,CAC9C,CACA,QAAS,CACP,MAAO,CACL,KAAM,UACN,KAAM,KAAK,KACX,MAAO,KAAK,MAAM,OAAO,EACzB,QAAS,KAAK,OAChB,CACF,CACF,EACIx0E,GAAM,MAAM00E,EAAK,CACnB,YAAYn3D,EAAO+R,EAAO,EAAGC,EAAM,IAAK,CACtC,KAAK,MAAQ,GACb,KAAK,KAAO,GACZ,KAAK,MAAQ,IAAI1zB,GAAM0hB,CAAK,EAC5B,KAAK,KAAO+R,EACZ,KAAK,IAAMC,CACb,CACA,OAAQ,CACN,OAAO,IAAImlD,GAAK,KAAK,MAAO,KAAK,KAAM,KAAK,GAAG,CACjD,CACA,QAAS,CACP,MAAO,CACL,KAAM,MACN,KAAM,KAAK,KACX,MAAO,KAAK,MAAM,OAAO,EACzB,KAAM,KAAK,KACX,IAAK,KAAK,GACZ,CACF,CACF,EACIrnE,GAAQ,cAAc5F,EAAS,CACjC,aAAc,CACZ,MAAM,EACN,KAAK,QAAU,GACf,KAAK,KAAO,QACZ,KAAK,WAAa,KAClB,KAAK,YAAc,KACnB,KAAK,IAAM,KACX,KAAK,qBAAuB,EAC5B,KAAK,oBAAsB,EAC3B,KAAK,mBAAqB,IAAIhI,GAC9B,KAAK,qBAAuB,EAC5B,KAAK,oBAAsB,IAAIA,GAC/B,KAAK,iBAAmB,KACpB,OAAO,mBAAuB,KAChC,mBAAmB,cAAc,IAAI,YAAY,UAAW,CAAE,OAAQ,IAAK,CAAC,CAAC,CAEjF,CACA,KAAK4f,EAAQyT,EAAW,CACtB,aAAM,KAAKzT,EAAQyT,CAAS,EACxBzT,EAAO,aAAe,OAAM,KAAK,WAAaA,EAAO,WAAW,MAAM,GACtEA,EAAO,cAAgB,OAAM,KAAK,YAAcA,EAAO,YAAY,MAAM,GACzEA,EAAO,MAAQ,OAAM,KAAK,IAAMA,EAAO,IAAI,MAAM,GACrD,KAAK,qBAAuBA,EAAO,qBACnC,KAAK,oBAAsBA,EAAO,oBAClC,KAAK,mBAAmB,KAAKA,EAAO,kBAAkB,EACtD,KAAK,qBAAuBA,EAAO,qBACnC,KAAK,oBAAoB,KAAKA,EAAO,mBAAmB,EACpDA,EAAO,mBAAqB,OAAM,KAAK,iBAAmBA,EAAO,iBAAiB,MAAM,GAC5F,KAAK,iBAAmBA,EAAO,iBACxB,IACT,CACA,OAAOd,EAAM,CACX,IAAMF,EAAO,MAAM,OAAOE,CAAI,EAC9B,OAAI,KAAK,MAAQ,OAAMF,EAAK,OAAO,IAAM,KAAK,IAAI,OAAO,GACrD,KAAK,qBAAuB,IAAGA,EAAK,OAAO,qBAAuB,KAAK,sBACvE,KAAK,sBAAwB,IAAGA,EAAK,OAAO,oBAAsB,KAAK,qBAC3EA,EAAK,OAAO,mBAAqB,KAAK,mBAAmB,QAAQ,EAC7D,KAAK,uBAAyB,IAAGA,EAAK,OAAO,qBAAuB,KAAK,sBAC7EA,EAAK,OAAO,oBAAsB,KAAK,oBAAoB,QAAQ,EAC5DA,CACT,CACF,EACIpc,GAAoB,KAAM,CAC5B,YAAYiR,EAAOm/B,EAAQ,CACzB,KAAK,oBAAsB,GAC3B,KAAK,MAAQn/B,EACb,KAAK,OAASm/B,EACd,KAAK,MAAQn/B,IAAU,OAASA,EAAM,OAASm/B,EAAS,EACxD,KAAK,MAAQrjC,GACb,KAAK,aAAe,CAAC,EACrB,KAAK,QAAU,EACf,KAAK,KAAOyE,GAAa,CAC3B,CACA,kBAAmB,CACnB,CACA,IAAI,YAAYM,EAAO,CACjBA,IAAU,IAAM,KAAK,SAC3B,CACA,SAASA,EAAO,CACd,YAAK,MAAQA,EACN,IACT,CACA,eAAe0jB,EAAO5W,EAAO,CAC3B,KAAK,aAAa,KAAK,CAAE,MAAA4W,EAAO,MAAA5W,CAAM,CAAC,CACzC,CACA,mBAAoB,CAClB,KAAK,aAAa,OAAS,CAC7B,CACA,KAAKxB,EAAQ,CACX,YAAK,MAAQ,IAAIA,EAAO,MAAM,YAAYA,EAAO,KAAK,EACtD,KAAK,MAAQA,EAAO,MACpB,KAAK,OAASA,EAAO,OACrB,KAAK,MAAQA,EAAO,MACb,IACT,CACA,OAAOqY,EAAQrf,EAAWsf,EAAQ,CAChCD,GAAU,KAAK,OACfC,GAAUtf,EAAU,OACpB,QAAS,EAAI,EAAGjF,EAAI,KAAK,OAAQ,EAAIA,EAAG,IACtC,KAAK,MAAMskB,EAAS,CAAC,EAAIrf,EAAU,MAAMsf,EAAS,CAAC,EAErD,OAAO,IACT,CACA,IAAI5jB,EAAOqE,EAAS,EAAG,CACrB,YAAK,MAAM,IAAIrE,EAAOqE,CAAM,EACrB,IACT,CACA,MAAMiG,EAAM,CACNA,EAAK,eAAiB,SACxBA,EAAK,aAAe,CAAC,GAEnB,KAAK,MAAM,OAAO,QAAU,SAC9B,KAAK,MAAM,OAAO,MAAQ5K,GAAa,GAErC4K,EAAK,aAAa,KAAK,MAAM,OAAO,KAAK,IAAM,SACjDA,EAAK,aAAa,KAAK,MAAM,OAAO,KAAK,EAAI,KAAK,MAAM,MAAM,CAAC,EAAE,QAEnE,IAAMnL,EAAQ,IAAI,KAAK,MAAM,YAAYmL,EAAK,aAAa,KAAK,MAAM,OAAO,KAAK,CAAC,EAC7Es2D,EAAK,IAAI,KAAK,YAAYzhE,EAAO,KAAK,MAAM,EAClD,OAAAyhE,EAAG,SAAS,KAAK,KAAK,EACfA,CACT,CACA,SAASvwD,EAAU,CACjB,YAAK,iBAAmBA,EACjB,IACT,CACA,OAAO/F,EAAM,CACX,OAAIA,EAAK,eAAiB,SACxBA,EAAK,aAAe,CAAC,GAEnB,KAAK,MAAM,OAAO,QAAU,SAC9B,KAAK,MAAM,OAAO,MAAQ5K,GAAa,GAErC4K,EAAK,aAAa,KAAK,MAAM,OAAO,KAAK,IAAM,SACjDA,EAAK,aAAa,KAAK,MAAM,OAAO,KAAK,EAAI,MAAM,KAAK,IAAI,YAAY,KAAK,MAAM,MAAM,CAAC,GAErF,CACL,KAAM,KAAK,KACX,OAAQ,KAAK,MAAM,OAAO,MAC1B,KAAM,KAAK,MAAM,YAAY,KAC7B,OAAQ,KAAK,MACf,CACF,CACF,EACIu2D,GAA4B,IAAIpjE,EAChCtP,GAA6B,MAAM2yE,EAA4B,CACjE,YAAYC,EAAmBv9C,EAAUnf,EAAQof,EAAa,GAAO,CACnE,KAAK,6BAA+B,GACpC,KAAK,KAAO,GACZ,KAAK,KAAOs9C,EACZ,KAAK,SAAWv9C,EAChB,KAAK,OAASnf,EACd,KAAK,WAAaof,CACpB,CACA,IAAI,OAAQ,CACV,OAAO,KAAK,KAAK,KACnB,CACA,IAAI,OAAQ,CACV,OAAO,KAAK,KAAK,KACnB,CACA,IAAI,YAAYzjB,EAAO,CACrB,KAAK,KAAK,YAAcA,CAC1B,CACA,aAAaK,EAAG,CACd,QAASjB,EAAI,EAAGC,EAAI,KAAK,KAAK,MAAOD,EAAIC,EAAGD,IAC1CyhE,GAAU,oBAAoB,KAAMzhE,CAAC,EACrCyhE,GAAU,aAAaxgE,CAAC,EACxB,KAAK,OAAOjB,EAAGyhE,GAAU,EAAGA,GAAU,EAAGA,GAAU,CAAC,EAEtD,OAAO,IACT,CACA,kBAAkBxgE,EAAG,CACnB,QAASjB,EAAI,EAAGC,EAAI,KAAK,MAAOD,EAAIC,EAAGD,IACrCyhE,GAAU,oBAAoB,KAAMzhE,CAAC,EACrCyhE,GAAU,kBAAkBxgE,CAAC,EAC7B,KAAK,OAAOjB,EAAGyhE,GAAU,EAAGA,GAAU,EAAGA,GAAU,CAAC,EAEtD,OAAO,IACT,CACA,mBAAmBxgE,EAAG,CACpB,QAASjB,EAAI,EAAGC,EAAI,KAAK,MAAOD,EAAIC,EAAGD,IACrCyhE,GAAU,oBAAoB,KAAMzhE,CAAC,EACrCyhE,GAAU,mBAAmBxgE,CAAC,EAC9B,KAAK,OAAOjB,EAAGyhE,GAAU,EAAGA,GAAU,EAAGA,GAAU,CAAC,EAEtD,OAAO,IACT,CACA,aAAa5hE,EAAO4kB,EAAW,CAC7B,IAAI7jB,EAAQ,KAAK,MAAMf,EAAQ,KAAK,KAAK,OAAS,KAAK,OAAS4kB,CAAS,EACzE,OAAI,KAAK,aAAY7jB,EAAQsD,GAAYtD,EAAO,KAAK,KAAK,GACnDA,CACT,CACA,aAAaf,EAAO4kB,EAAW7jB,EAAO,CACpC,OAAI,KAAK,aAAYA,EAAQuD,GAAUvD,EAAO,KAAK,KAAK,GACxD,KAAK,KAAK,MAAMf,EAAQ,KAAK,KAAK,OAAS,KAAK,OAAS4kB,CAAS,EAAI7jB,EAC/D,IACT,CACA,KAAKf,EAAOsB,EAAG,CACb,OAAI,KAAK,aAAYA,EAAIgD,GAAUhD,EAAG,KAAK,KAAK,GAChD,KAAK,KAAK,MAAMtB,EAAQ,KAAK,KAAK,OAAS,KAAK,MAAM,EAAIsB,EACnD,IACT,CACA,KAAKtB,EAAO4B,EAAG,CACb,OAAI,KAAK,aAAYA,EAAI0C,GAAU1C,EAAG,KAAK,KAAK,GAChD,KAAK,KAAK,MAAM5B,EAAQ,KAAK,KAAK,OAAS,KAAK,OAAS,CAAC,EAAI4B,EACvD,IACT,CACA,KAAK5B,EAAOwM,EAAG,CACb,OAAI,KAAK,aAAYA,EAAIlI,GAAUkI,EAAG,KAAK,KAAK,GAChD,KAAK,KAAK,MAAMxM,EAAQ,KAAK,KAAK,OAAS,KAAK,OAAS,CAAC,EAAIwM,EACvD,IACT,CACA,KAAKxM,EAAOyM,EAAG,CACb,OAAI,KAAK,aAAYA,EAAInI,GAAUmI,EAAG,KAAK,KAAK,GAChD,KAAK,KAAK,MAAMzM,EAAQ,KAAK,KAAK,OAAS,KAAK,OAAS,CAAC,EAAIyM,EACvD,IACT,CACA,KAAKzM,EAAO,CACV,IAAIsB,EAAI,KAAK,KAAK,MAAMtB,EAAQ,KAAK,KAAK,OAAS,KAAK,MAAM,EAC9D,OAAI,KAAK,aAAYsB,EAAI+C,GAAY/C,EAAG,KAAK,KAAK,GAC3CA,CACT,CACA,KAAKtB,EAAO,CACV,IAAI4B,EAAI,KAAK,KAAK,MAAM5B,EAAQ,KAAK,KAAK,OAAS,KAAK,OAAS,CAAC,EAClE,OAAI,KAAK,aAAY4B,EAAIyC,GAAYzC,EAAG,KAAK,KAAK,GAC3CA,CACT,CACA,KAAK5B,EAAO,CACV,IAAIwM,EAAI,KAAK,KAAK,MAAMxM,EAAQ,KAAK,KAAK,OAAS,KAAK,OAAS,CAAC,EAClE,OAAI,KAAK,aAAYwM,EAAInI,GAAYmI,EAAG,KAAK,KAAK,GAC3CA,CACT,CACA,KAAKxM,EAAO,CACV,IAAIyM,EAAI,KAAK,KAAK,MAAMzM,EAAQ,KAAK,KAAK,OAAS,KAAK,OAAS,CAAC,EAClE,OAAI,KAAK,aAAYyM,EAAIpI,GAAYoI,EAAG,KAAK,KAAK,GAC3CA,CACT,CACA,MAAMzM,EAAOsB,EAAGM,EAAG,CACjB,OAAA5B,EAAQA,EAAQ,KAAK,KAAK,OAAS,KAAK,OACpC,KAAK,aACPsB,EAAIgD,GAAUhD,EAAG,KAAK,KAAK,EAC3BM,EAAI0C,GAAU1C,EAAG,KAAK,KAAK,GAE7B,KAAK,KAAK,MAAM5B,EAAQ,CAAC,EAAIsB,EAC7B,KAAK,KAAK,MAAMtB,EAAQ,CAAC,EAAI4B,EACtB,IACT,CACA,OAAO5B,EAAOsB,EAAGM,EAAG4K,EAAG,CACrB,OAAAxM,EAAQA,EAAQ,KAAK,KAAK,OAAS,KAAK,OACpC,KAAK,aACPsB,EAAIgD,GAAUhD,EAAG,KAAK,KAAK,EAC3BM,EAAI0C,GAAU1C,EAAG,KAAK,KAAK,EAC3B4K,EAAIlI,GAAUkI,EAAG,KAAK,KAAK,GAE7B,KAAK,KAAK,MAAMxM,EAAQ,CAAC,EAAIsB,EAC7B,KAAK,KAAK,MAAMtB,EAAQ,CAAC,EAAI4B,EAC7B,KAAK,KAAK,MAAM5B,EAAQ,CAAC,EAAIwM,EACtB,IACT,CACA,QAAQxM,EAAOsB,EAAGM,EAAG4K,EAAGC,EAAG,CACzB,OAAAzM,EAAQA,EAAQ,KAAK,KAAK,OAAS,KAAK,OACpC,KAAK,aACPsB,EAAIgD,GAAUhD,EAAG,KAAK,KAAK,EAC3BM,EAAI0C,GAAU1C,EAAG,KAAK,KAAK,EAC3B4K,EAAIlI,GAAUkI,EAAG,KAAK,KAAK,EAC3BC,EAAInI,GAAUmI,EAAG,KAAK,KAAK,GAE7B,KAAK,KAAK,MAAMzM,EAAQ,CAAC,EAAIsB,EAC7B,KAAK,KAAK,MAAMtB,EAAQ,CAAC,EAAI4B,EAC7B,KAAK,KAAK,MAAM5B,EAAQ,CAAC,EAAIwM,EAC7B,KAAK,KAAK,MAAMxM,EAAQ,CAAC,EAAIyM,EACtB,IACT,CACA,MAAMpB,EAAM,CACV,GAAIA,IAAS,OAAQ,CACnB,QAAQ,IAAI,mHAAmH,EAC/H,IAAMnL,EAAQ,CAAC,EACf,QAAS,EAAI,EAAG,EAAI,KAAK,MAAO,IAAK,CACnC,IAAMF,EAAQ,EAAI,KAAK,KAAK,OAAS,KAAK,OAC1C,QAAS8U,EAAI,EAAGA,EAAI,KAAK,SAAUA,IACjC5U,EAAM,KAAK,KAAK,KAAK,MAAMF,EAAQ8U,CAAC,CAAC,CAEzC,CACA,OAAO,IAAI/sB,GAAgB,IAAI,KAAK,MAAM,YAAYmY,CAAK,EAAG,KAAK,SAAU,KAAK,UAAU,CAC9F,KACE,QAAImL,EAAK,qBAAuB,SAC9BA,EAAK,mBAAqB,CAAC,GAEzBA,EAAK,mBAAmB,KAAK,KAAK,IAAI,IAAM,SAC9CA,EAAK,mBAAmB,KAAK,KAAK,IAAI,EAAI,KAAK,KAAK,MAAMA,CAAI,GAEzD,IAAIw2D,GAA4Bx2D,EAAK,mBAAmB,KAAK,KAAK,IAAI,EAAG,KAAK,SAAU,KAAK,OAAQ,KAAK,UAAU,CAE/H,CACA,OAAOA,EAAM,CACX,GAAIA,IAAS,OAAQ,CACnB,QAAQ,IAAI,wHAAwH,EACpI,IAAMnL,EAAQ,CAAC,EACf,QAAS,EAAI,EAAG,EAAI,KAAK,MAAO,IAAK,CACnC,IAAMF,EAAQ,EAAI,KAAK,KAAK,OAAS,KAAK,OAC1C,QAAS8U,EAAI,EAAGA,EAAI,KAAK,SAAUA,IACjC5U,EAAM,KAAK,KAAK,KAAK,MAAMF,EAAQ8U,CAAC,CAAC,CAEzC,CACA,MAAO,CACL,SAAU,KAAK,SACf,KAAM,KAAK,MAAM,YAAY,KAC7B,MAAA5U,EACA,WAAY,KAAK,UACnB,CACF,KACE,QAAImL,EAAK,qBAAuB,SAC9BA,EAAK,mBAAqB,CAAC,GAEzBA,EAAK,mBAAmB,KAAK,KAAK,IAAI,IAAM,SAC9CA,EAAK,mBAAmB,KAAK,KAAK,IAAI,EAAI,KAAK,KAAK,OAAOA,CAAI,GAE1D,CACL,6BAA8B,GAC9B,SAAU,KAAK,SACf,KAAM,KAAK,KAAK,KAChB,OAAQ,KAAK,OACb,WAAY,KAAK,UACnB,CAEJ,CACF,EACI1P,GAAiB,cAAc3J,EAAS,CAC1C,YAAY8sB,EAAY,CACtB,MAAM,EACN,KAAK,iBAAmB,GACxB,KAAK,KAAO,iBACZ,KAAK,MAAQ,IAAIj2B,GAAM,QAAQ,EAC/B,KAAK,IAAM,KACX,KAAK,SAAW,KAChB,KAAK,SAAW,EAChB,KAAK,gBAAkB,GACvB,KAAK,YAAc,GACnB,KAAK,IAAM,GACX,KAAK,UAAUi2B,CAAU,CAC3B,CACA,KAAKzS,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,MAAM,KAAKA,EAAO,KAAK,EAC5B,KAAK,IAAMA,EAAO,IAClB,KAAK,SAAWA,EAAO,SACvB,KAAK,SAAWA,EAAO,SACvB,KAAK,gBAAkBA,EAAO,gBAC9B,KAAK,IAAMA,EAAO,IACX,IACT,CACF,EACI01D,GACAC,GAAkC,IAAIxjE,EACtCyjE,GAA8B,IAAIzjE,EAClC0jE,GAA8B,IAAI1jE,EAClC2jE,GAAmC,IAAI5jE,EACvC6jE,GAAmC,IAAI7jE,EACvC8jE,GAAmC,IAAIhwE,GACvCiwE,GAAsB,IAAI9jE,EAC1B+jE,GAAsB,IAAI/jE,EAC1BgkE,GAAsB,IAAIhkE,EAC1BikE,GAAuB,IAAIlkE,EAC3BmkE,GAAuB,IAAInkE,EAC3BokE,GAAuB,IAAIpkE,EAC3B7C,GAAS,cAAcjH,EAAS,CAClC,YAAYu0B,EAAW,IAAIrtB,GAAkB,CAI3C,GAHA,MAAM,EACN,KAAK,SAAW,GAChB,KAAK,KAAO,SACRomE,KAAc,OAAQ,CACxBA,GAAY,IAAI/5E,GAChB,IAAM46E,EAAe,IAAI,aAAa,CACpC,IACA,IACA,EACA,EACA,EACA,GACA,IACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,EACA,IACA,GACA,EACA,EACA,CACF,CAAC,EACKd,EAAoB,IAAI7yE,GAAkB2zE,EAAc,CAAC,EAC/Db,GAAU,SAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EACrCA,GAAU,aAAa,WAAY,IAAI7yE,GAA2B4yE,EAAmB,EAAG,EAAG,EAAK,CAAC,EACjGC,GAAU,aAAa,KAAM,IAAI7yE,GAA2B4yE,EAAmB,EAAG,EAAG,EAAK,CAAC,CAC7F,CACA,KAAK,SAAWC,GAChB,KAAK,SAAW/4C,EAChB,KAAK,OAAS,IAAIzqB,EAAQ,GAAK,EAAG,CACpC,CACA,QAAQ+qB,EAAWC,EAAa,CAC1BD,EAAU,SAAW,MACvB,QAAQ,MAAM,uFAAuF,EAEvG24C,GAAY,mBAAmB,KAAK,WAAW,EAC/CI,GAAiB,KAAK/4C,EAAU,OAAO,WAAW,EAClD,KAAK,gBAAgB,iBAAiBA,EAAU,OAAO,mBAAoB,KAAK,WAAW,EAC3F44C,GAAY,sBAAsB,KAAK,eAAe,EAClD54C,EAAU,OAAO,qBAAuB,KAAK,SAAS,kBAAoB,IAC5E24C,GAAY,eAAe,CAACC,GAAY,CAAC,EAE3C,IAAMv5D,EAAW,KAAK,SAAS,SAC3B/E,EAAKD,EACLgF,IAAa,IACfhF,EAAM,KAAK,IAAIgF,CAAQ,EACvB/E,EAAM,KAAK,IAAI+E,CAAQ,GAEzB,IAAMrD,EAAS,KAAK,OACpBu9D,GAAgBP,GAAI,IAAI,IAAM,IAAM,CAAC,EAAGJ,GAAa58D,EAAQ28D,GAAar+D,EAAKD,CAAG,EAClFk/D,GAAgBN,GAAI,IAAI,GAAK,IAAM,CAAC,EAAGL,GAAa58D,EAAQ28D,GAAar+D,EAAKD,CAAG,EACjFk/D,GAAgBL,GAAI,IAAI,GAAK,GAAK,CAAC,EAAGN,GAAa58D,EAAQ28D,GAAar+D,EAAKD,CAAG,EAChF8+D,GAAK,IAAI,EAAG,CAAC,EACbC,GAAK,IAAI,EAAG,CAAC,EACbC,GAAK,IAAI,EAAG,CAAC,EACb,IAAIz4C,EAAaZ,EAAU,IAAI,kBAAkBg5C,GAAKC,GAAKC,GAAK,GAAOR,EAAe,EACtF,GAAI93C,IAAe,OACjB24C,GAAgBN,GAAI,IAAI,IAAM,GAAK,CAAC,EAAGL,GAAa58D,EAAQ28D,GAAar+D,EAAKD,CAAG,EACjF++D,GAAK,IAAI,EAAG,CAAC,EACbx4C,EAAaZ,EAAU,IAAI,kBAAkBg5C,GAAKE,GAAKD,GAAK,GAAOP,EAAe,EAC9E93C,IAAe,MACjB,OAGJ,IAAM/L,EAAWmL,EAAU,IAAI,OAAO,WAAW04C,EAAe,EAC5D7jD,EAAWmL,EAAU,MAAQnL,EAAWmL,EAAU,KACtDC,EAAY,KAAK,CACf,SAAApL,EACA,MAAO6jD,GAAgB,MAAM,EAC7B,GAAI/kE,GAAS,iBAAiB+kE,GAAiBM,GAAKC,GAAKC,GAAKC,GAAMC,GAAMC,GAAM,IAAIpkE,CAAS,EAC7F,KAAM,KACN,OAAQ,IACV,CAAC,CACH,CACA,KAAK8N,EAAQyT,EAAW,CACtB,aAAM,KAAKzT,EAAQyT,CAAS,EACxBzT,EAAO,SAAW,QAAQ,KAAK,OAAO,KAAKA,EAAO,MAAM,EAC5D,KAAK,SAAWA,EAAO,SAChB,IACT,CACF,EACA,SAASw2D,GAAgBC,EAAgBC,EAAYz9D,EAAQiW,EAAO3X,EAAKD,EAAK,CAC5Ew+D,GAAiB,WAAWW,EAAgBx9D,CAAM,EAAE,UAAU,EAAG,EAAE,SAASiW,CAAK,EAC7E3X,IAAQ,QACVw+D,GAAiB,EAAIz+D,EAAMw+D,GAAiB,EAAIv+D,EAAMu+D,GAAiB,EACvEC,GAAiB,EAAIx+D,EAAMu+D,GAAiB,EAAIx+D,EAAMw+D,GAAiB,GAEvEC,GAAiB,KAAKD,EAAgB,EAExCW,EAAe,KAAKC,CAAU,EAC9BD,EAAe,GAAKV,GAAiB,EACrCU,EAAe,GAAKV,GAAiB,EACrCU,EAAe,aAAaT,EAAgB,CAC9C,CACA,IAAIW,GAAwB,IAAIxkE,EAC5BykE,GAAwB,IAAIzkE,EAC5B9O,GAAM,cAAc+E,EAAS,CAC/B,aAAc,CACZ,MAAM,EACN,KAAK,cAAgB,EACrB,KAAK,KAAO,MACZ,OAAO,iBAAiB,KAAM,CAC5B,OAAQ,CACN,WAAY,GACZ,MAAO,CAAC,CACV,EACA,MAAO,CACL,MAAO,EACT,CACF,CAAC,EACD,KAAK,WAAa,EACpB,CACA,KAAK4X,EAAQ,CACX,MAAM,KAAKA,EAAQ,EAAK,EACxB,IAAM6hD,EAAS7hD,EAAO,OACtB,QAASlM,EAAI,EAAGC,EAAI8tD,EAAO,OAAQ/tD,EAAIC,EAAGD,IAAK,CAC7C,IAAMgsD,EAAQ+B,EAAO/tD,CAAC,EACtB,KAAK,SAASgsD,EAAM,OAAO,MAAM,EAAGA,EAAM,SAAUA,EAAM,UAAU,CACtE,CACA,YAAK,WAAa9/C,EAAO,WAClB,IACT,CACA,SAAS8G,EAAQgL,EAAW,EAAG+kD,EAAa,EAAG,CAC7C/kD,EAAW,KAAK,IAAIA,CAAQ,EAC5B,IAAM+vC,EAAS,KAAK,OAChB9tD,EACJ,IAAKA,EAAI,EAAGA,EAAI8tD,EAAO,QACjB,EAAA/vC,EAAW+vC,EAAO9tD,CAAC,EAAE,UADIA,IAC7B,CAIF,OAAA8tD,EAAO,OAAO9tD,EAAG,EAAG,CAAE,SAAA+d,EAAU,WAAA+kD,EAAY,OAAA/vD,CAAO,CAAC,EACpD,KAAK,IAAIA,CAAM,EACR,IACT,CACA,YAAYgL,EAAU,CACpB,IAAM+vC,EAAS,KAAK,OACpB,QAAS/tD,EAAI,EAAGA,EAAI+tD,EAAO,OAAQ/tD,IACjC,GAAI+tD,EAAO/tD,CAAC,EAAE,WAAage,EAAU,CACnC,IAAMglD,EAAkBjV,EAAO,OAAO/tD,EAAG,CAAC,EAC1C,YAAK,OAAOgjE,EAAgB,CAAC,EAAE,MAAM,EAC9B,EACT,CAEF,MAAO,EACT,CACA,iBAAkB,CAChB,OAAO,KAAK,aACd,CACA,qBAAqBhlD,EAAU,CAC7B,IAAM+vC,EAAS,KAAK,OACpB,GAAIA,EAAO,OAAS,EAAG,CACrB,IAAI/tD,EAAGC,EACP,IAAKD,EAAI,EAAGC,EAAI8tD,EAAO,OAAQ/tD,EAAIC,EAAGD,IAAK,CACzC,IAAIijE,EAAgBlV,EAAO/tD,CAAC,EAAE,SAI9B,GAHI+tD,EAAO/tD,CAAC,EAAE,OAAO,UACnBijE,GAAiBA,EAAgBlV,EAAO/tD,CAAC,EAAE,YAEzCge,EAAWilD,EACb,KAEJ,CACA,OAAOlV,EAAO/tD,EAAI,CAAC,EAAE,MACvB,CACA,OAAO,IACT,CACA,QAAQmpB,EAAWC,EAAa,CAE9B,GADe,KAAK,OACT,OAAS,EAAG,CACrBy5C,GAAM,sBAAsB,KAAK,WAAW,EAC5C,IAAM7kD,EAAWmL,EAAU,IAAI,OAAO,WAAW05C,EAAK,EACtD,KAAK,qBAAqB7kD,CAAQ,EAAE,QAAQmL,EAAWC,CAAW,CACpE,CACF,CACA,OAAOxX,EAAQ,CACb,IAAMm8C,EAAS,KAAK,OACpB,GAAIA,EAAO,OAAS,EAAG,CACrB8U,GAAM,sBAAsBjxD,EAAO,WAAW,EAC9CkxD,GAAM,sBAAsB,KAAK,WAAW,EAC5C,IAAM9kD,EAAW6kD,GAAM,WAAWC,EAAK,EAAIlxD,EAAO,KAClDm8C,EAAO,CAAC,EAAE,OAAO,QAAU,GAC3B,IAAI,EAAG9tD,EACP,IAAK,EAAI,EAAGA,EAAI8tD,EAAO,OAAQ,EAAI9tD,EAAG,IAAK,CACzC,IAAIgjE,EAAgBlV,EAAO,CAAC,EAAE,SAI9B,GAHIA,EAAO,CAAC,EAAE,OAAO,UACnBkV,GAAiBA,EAAgBlV,EAAO,CAAC,EAAE,YAEzC/vC,GAAYilD,EACdlV,EAAO,EAAI,CAAC,EAAE,OAAO,QAAU,GAC/BA,EAAO,CAAC,EAAE,OAAO,QAAU,OAE3B,MAEJ,CAEA,IADA,KAAK,cAAgB,EAAI,EAClB,EAAI9tD,EAAG,IACZ8tD,EAAO,CAAC,EAAE,OAAO,QAAU,EAE/B,CACF,CACA,OAAO3iD,EAAM,CACX,IAAMF,EAAO,MAAM,OAAOE,CAAI,EAC1B,KAAK,aAAe,KAAOF,EAAK,OAAO,WAAa,IACxDA,EAAK,OAAO,OAAS,CAAC,EACtB,IAAM6iD,EAAS,KAAK,OACpB,QAAS,EAAI,EAAG9tD,EAAI8tD,EAAO,OAAQ,EAAI9tD,EAAG,IAAK,CAC7C,IAAM+rD,EAAQ+B,EAAO,CAAC,EACtB7iD,EAAK,OAAO,OAAO,KAAK,CACtB,OAAQ8gD,EAAM,OAAO,KACrB,SAAUA,EAAM,SAChB,WAAYA,EAAM,UACpB,CAAC,CACH,CACA,OAAO9gD,CACT,CACF,EACIg4D,GAAgC,IAAI7kE,EACpC8kE,GAA6B,IAAI7kE,GACjC8kE,GAA8B,IAAI9kE,GAClC+kE,GAA2B,IAAIhlE,EAC/BilE,GAA2B,IAAIpxE,GAC/BqxE,GAA0B,IAAIllE,EAC9BmlE,GAA4B,IAAIxoE,GAChCyoE,GAAmC,IAAIvxE,GACvCwxE,GAAyB,IAAIxqE,GAC7B4B,GAAc,cAAc1I,EAAK,CACnC,YAAYihB,EAAUwV,EAAU,CAC9B,MAAMxV,EAAUwV,CAAQ,EACxB,KAAK,cAAgB,GACrB,KAAK,KAAO,cACZ,KAAK,SAAWniC,GAChB,KAAK,WAAa,IAAIwL,GACtB,KAAK,kBAAoB,IAAIA,GAC7B,KAAK,YAAc,KACnB,KAAK,eAAiB,IACxB,CACA,oBAAqB,CACnB,IAAMmhB,EAAW,KAAK,SAClB,KAAK,cAAgB,OACvB,KAAK,YAAc,IAAI7rB,IAEzB,KAAK,YAAY,UAAU,EAC3B,IAAM8rB,EAAoBD,EAAS,aAAa,UAAU,EAC1D,QAASrT,EAAI,EAAGA,EAAIsT,EAAkB,MAAOtT,IAC3C,KAAK,kBAAkBA,EAAGujE,EAAO,EACjC,KAAK,YAAY,cAAcA,EAAO,CAE1C,CACA,uBAAwB,CACtB,IAAMlwD,EAAW,KAAK,SAClB,KAAK,iBAAmB,OAC1B,KAAK,eAAiB,IAAIrY,IAE5B,KAAK,eAAe,UAAU,EAC9B,IAAMsY,EAAoBD,EAAS,aAAa,UAAU,EAC1D,QAASrT,EAAI,EAAGA,EAAIsT,EAAkB,MAAOtT,IAC3C,KAAK,kBAAkBA,EAAGujE,EAAO,EACjC,KAAK,eAAe,cAAcA,EAAO,CAE7C,CACA,KAAKr3D,EAAQyT,EAAW,CACtB,aAAM,KAAKzT,EAAQyT,CAAS,EAC5B,KAAK,SAAWzT,EAAO,SACvB,KAAK,WAAW,KAAKA,EAAO,UAAU,EACtC,KAAK,kBAAkB,KAAKA,EAAO,iBAAiB,EACpD,KAAK,SAAWA,EAAO,SACnBA,EAAO,cAAgB,OAAM,KAAK,YAAcA,EAAO,YAAY,MAAM,GACzEA,EAAO,iBAAmB,OAAM,KAAK,eAAiBA,EAAO,eAAe,MAAM,GAC/E,IACT,CACA,QAAQid,EAAWC,EAAa,CAC9B,IAAMP,EAAW,KAAK,SAChBQ,EAAc,KAAK,YACrBR,IAAa,SACb,KAAK,iBAAmB,MAAM,KAAK,sBAAsB,EAC7D26C,GAAU,KAAK,KAAK,cAAc,EAClCA,GAAU,aAAan6C,CAAW,EAC9BF,EAAU,IAAI,iBAAiBq6C,EAAS,IAAM,KAClDC,GAAiB,KAAKp6C,CAAW,EAAE,OAAO,EAC1Cq6C,GAAO,KAAKv6C,EAAU,GAAG,EAAE,aAAas6C,EAAgB,EACpD,OAAK,cAAgB,MACnBC,GAAO,cAAc,KAAK,WAAW,IAAM,KAEjD,KAAK,sBAAsBv6C,EAAWC,EAAas6C,EAAM,GAC3D,CACA,kBAAkB7jE,EAAO8K,EAAQ,CAC/B,aAAM,kBAAkB9K,EAAO8K,CAAM,EACrC,KAAK,mBAAmB9K,EAAO8K,CAAM,EAC9BA,CACT,CACA,KAAKkhC,EAAU83B,EAAY,CACzB,KAAK,SAAW93B,EACZ83B,IAAe,SACjB,KAAK,kBAAkB,EAAI,EAC3B,KAAK,SAAS,kBAAkB,EAChCA,EAAa,KAAK,aAEpB,KAAK,WAAW,KAAKA,CAAU,EAC/B,KAAK,kBAAkB,KAAKA,CAAU,EAAE,OAAO,CACjD,CACA,MAAO,CACL,KAAK,SAAS,KAAK,CACrB,CACA,sBAAuB,CACrB,IAAMvwD,EAAS,IAAI9U,GACbslE,EAAa,KAAK,SAAS,WAAW,WAC5C,QAAS5jE,EAAI,EAAGC,EAAI2jE,EAAW,MAAO5jE,EAAIC,EAAGD,IAAK,CAChDoT,EAAO,oBAAoBwwD,EAAY5jE,CAAC,EACxC,IAAMob,EAAQ,EAAIhI,EAAO,gBAAgB,EACrCgI,IAAU,IACZhI,EAAO,eAAegI,CAAK,EAE3BhI,EAAO,IAAI,EAAG,EAAG,EAAG,CAAC,EAEvBwwD,EAAW,QAAQ5jE,EAAGoT,EAAO,EAAGA,EAAO,EAAGA,EAAO,EAAGA,EAAO,CAAC,CAC9D,CACF,CACA,kBAAkBgL,EAAO,CACvB,MAAM,kBAAkBA,CAAK,EACzB,KAAK,WAAa13B,GACpB,KAAK,kBAAkB,KAAK,KAAK,WAAW,EAAE,OAAO,EAC5C,KAAK,WAAayE,GAC3B,KAAK,kBAAkB,KAAK,KAAK,UAAU,EAAE,OAAO,EAEpD,QAAQ,KAAK,6CAA+C,KAAK,QAAQ,CAE7E,CACA,mBAAmB0U,EAAOuT,EAAQ,CAChC,IAAMy4B,EAAW,KAAK,SAChBx4B,EAAW,KAAK,SACtB8vD,GAAW,oBAAoB9vD,EAAS,WAAW,UAAWxT,CAAK,EACnEujE,GAAY,oBAAoB/vD,EAAS,WAAW,WAAYxT,CAAK,EACrEqjE,GAAc,KAAK9vD,CAAM,EAAE,aAAa,KAAK,UAAU,EACvDA,EAAO,IAAI,EAAG,EAAG,CAAC,EAClB,QAASpT,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAMynC,EAAS27B,GAAY,aAAapjE,CAAC,EACzC,GAAIynC,IAAW,EAAG,CAChB,IAAMo8B,EAAYV,GAAW,aAAanjE,CAAC,EAC3CsjE,GAAS,iBAAiBz3B,EAAS,MAAMg4B,CAAS,EAAE,YAAah4B,EAAS,aAAag4B,CAAS,CAAC,EACjGzwD,EAAO,gBAAgBiwD,GAAS,KAAKH,EAAa,EAAE,aAAaI,EAAQ,EAAG77B,CAAM,CACpF,CACF,CACA,OAAOr0B,EAAO,aAAa,KAAK,iBAAiB,CACnD,CACF,EACI/rB,GAAO,cAAciN,EAAS,CAChC,aAAc,CACZ,MAAM,EACN,KAAK,OAAS,GACd,KAAK,KAAO,MACd,CACF,EACI5J,GAAc,cAAc+R,EAAQ,CACtC,YAAYyO,EAAO,KAAMoC,EAAQ,EAAGC,EAAS,EAAGvB,EAAQvM,EAAMkM,EAASC,EAAOC,EAAOC,EAAY1Y,GAAe2Y,EAAY3Y,GAAe6Y,EAAY3B,EAAY,CACjK,MAAM,KAAMqB,EAASC,EAAOC,EAAOC,EAAWC,EAAWC,EAAQvM,EAAMwM,EAAY3B,CAAU,EAC7F,KAAK,cAAgB,GACrB,KAAK,MAAQ,CAAE,KAAAY,EAAM,MAAAoC,EAAO,OAAAC,CAAO,EACnC,KAAK,gBAAkB,GACvB,KAAK,MAAQ,GACb,KAAK,gBAAkB,CACzB,CACF,EACIu2D,GAAgC,IAAI5xE,GACpC6xE,GAAoC,IAAI7xE,GACxC0I,GAAW,MAAMopE,EAAU,CAC7B,YAAYC,EAAQ,CAAC,EAAGC,EAAe,CAAC,EAAG,CACzC,KAAK,KAAO5jE,GAAa,EACzB,KAAK,MAAQ2jE,EAAM,MAAM,CAAC,EAC1B,KAAK,aAAeC,EACpB,KAAK,aAAe,KACpB,KAAK,YAAc,KACnB,KAAK,KAAK,CACZ,CACA,MAAO,CACL,IAAMD,EAAQ,KAAK,MACbC,EAAe,KAAK,aAE1B,GADA,KAAK,aAAe,IAAI,aAAaD,EAAM,OAAS,EAAE,EAClDC,EAAa,SAAW,EAC1B,KAAK,kBAAkB,UAEnBD,EAAM,SAAWC,EAAa,OAAQ,CACxC,QAAQ,KAAK,iFAAiF,EAC9F,KAAK,aAAe,CAAC,EACrB,QAAS,EAAI,EAAGt2D,EAAK,KAAK,MAAM,OAAQ,EAAIA,EAAI,IAC9C,KAAK,aAAa,KAAK,IAAI1b,EAAS,CAExC,CAEJ,CACA,mBAAoB,CAClB,KAAK,aAAa,OAAS,EAC3B,QAAS8N,EAAI,EAAG4N,EAAK,KAAK,MAAM,OAAQ5N,EAAI4N,EAAI5N,IAAK,CACnD,IAAMmkE,EAAU,IAAIjyE,GAChB,KAAK,MAAM8N,CAAC,GACdmkE,EAAQ,KAAK,KAAK,MAAMnkE,CAAC,EAAE,WAAW,EAAE,OAAO,EAEjD,KAAK,aAAa,KAAKmkE,CAAO,CAChC,CACF,CACA,MAAO,CACL,QAASnkE,EAAI,EAAG4N,EAAK,KAAK,MAAM,OAAQ5N,EAAI4N,EAAI5N,IAAK,CACnD,IAAMokE,EAAO,KAAK,MAAMpkE,CAAC,EACrBokE,GACFA,EAAK,YAAY,KAAK,KAAK,aAAapkE,CAAC,CAAC,EAAE,OAAO,CAEvD,CACA,QAASA,EAAI,EAAG4N,EAAK,KAAK,MAAM,OAAQ5N,EAAI4N,EAAI5N,IAAK,CACnD,IAAMokE,EAAO,KAAK,MAAMpkE,CAAC,EACrBokE,IACEA,EAAK,QAAUA,EAAK,OAAO,QAC7BA,EAAK,OAAO,KAAKA,EAAK,OAAO,WAAW,EAAE,OAAO,EACjDA,EAAK,OAAO,SAASA,EAAK,WAAW,GAErCA,EAAK,OAAO,KAAKA,EAAK,WAAW,EAEnCA,EAAK,OAAO,UAAUA,EAAK,SAAUA,EAAK,WAAYA,EAAK,KAAK,EAEpE,CACF,CACA,QAAS,CACP,IAAMH,EAAQ,KAAK,MACbC,EAAe,KAAK,aACpBG,EAAe,KAAK,aACpBC,EAAc,KAAK,YACzB,QAAStkE,EAAI,EAAG4N,EAAKq2D,EAAM,OAAQjkE,EAAI4N,EAAI5N,IAAK,CAC9C,IAAM4I,EAASq7D,EAAMjkE,CAAC,EAAIikE,EAAMjkE,CAAC,EAAE,YAAc+jE,GACjDD,GAAc,iBAAiBl7D,EAAQs7D,EAAalkE,CAAC,CAAC,EACtD8jE,GAAc,QAAQO,EAAcrkE,EAAI,EAAE,CAC5C,CACIskE,IAAgB,OAClBA,EAAY,YAAc,GAE9B,CACA,OAAQ,CACN,OAAO,IAAIN,GAAU,KAAK,MAAO,KAAK,YAAY,CACpD,CACA,oBAAqB,CACnB,IAAIlxD,EAAO,KAAK,KAAK,KAAK,MAAM,OAAS,CAAC,EAC1CA,EAAO,KAAK,KAAKA,EAAO,CAAC,EAAI,EAC7BA,EAAO,KAAK,IAAIA,EAAM,CAAC,EACvB,IAAMuxD,EAAe,IAAI,aAAavxD,EAAOA,EAAO,CAAC,EACrDuxD,EAAa,IAAI,KAAK,YAAY,EAClC,IAAMC,EAAc,IAAI55E,GAAY25E,EAAcvxD,EAAMA,EAAMjc,GAAYjK,EAAS,EACnF,OAAA03E,EAAY,YAAc,GAC1B,KAAK,aAAeD,EACpB,KAAK,YAAcC,EACZ,IACT,CACA,cAAcp7D,EAAM,CAClB,QAASlJ,EAAI,EAAG4N,EAAK,KAAK,MAAM,OAAQ5N,EAAI4N,EAAI5N,IAAK,CACnD,IAAMokE,EAAO,KAAK,MAAMpkE,CAAC,EACzB,GAAIokE,EAAK,OAASl7D,EAChB,OAAOk7D,CAEX,CAEF,CACA,SAAU,CACJ,KAAK,cAAgB,OACvB,KAAK,YAAY,QAAQ,EACzB,KAAK,YAAc,KAEvB,CACA,SAASG,EAAMN,EAAO,CACpB,KAAK,KAAOM,EAAK,KACjB,QAAS,EAAI,EAAGtkE,EAAIskE,EAAK,MAAM,OAAQ,EAAItkE,EAAG,IAAK,CACjD,IAAMqhD,EAAOijB,EAAK,MAAM,CAAC,EACrBH,EAAOH,EAAM3iB,CAAI,EACjB8iB,IAAS,SACX,QAAQ,KAAK,2CAA4C9iB,CAAI,EAC7D8iB,EAAO,IAAI/8E,IAEb,KAAK,MAAM,KAAK+8E,CAAI,EACpB,KAAK,aAAa,KAAK,IAAIlyE,GAAQ,EAAE,UAAUqyE,EAAK,aAAa,CAAC,CAAC,CAAC,CACtE,CACA,YAAK,KAAK,EACH,IACT,CACA,QAAS,CACP,IAAMr5D,EAAO,CACX,SAAU,CACR,QAAS,IACT,KAAM,WACN,UAAW,iBACb,EACA,MAAO,CAAC,EACR,aAAc,CAAC,CACjB,EACAA,EAAK,KAAO,KAAK,KACjB,IAAM+4D,EAAQ,KAAK,MACbC,EAAe,KAAK,aAC1B,QAASlkE,EAAI,EAAGC,EAAIgkE,EAAM,OAAQjkE,EAAIC,EAAGD,IAAK,CAC5C,IAAMokE,EAAOH,EAAMjkE,CAAC,EACpBkL,EAAK,MAAM,KAAKk5D,EAAK,IAAI,EACzB,IAAMI,EAAcN,EAAalkE,CAAC,EAClCkL,EAAK,aAAa,KAAKs5D,EAAY,QAAQ,CAAC,CAC9C,CACA,OAAOt5D,CACT,CACF,EACI5c,GAA2B,cAAc1G,EAAgB,CAC3D,YAAYmY,EAAOqkB,EAAUC,EAAY0a,EAAmB,EAAG,CAC7D,MAAMh/B,EAAOqkB,EAAUC,CAAU,EACjC,KAAK,2BAA6B,GAClC,KAAK,iBAAmB0a,CAC1B,CACA,KAAK7yB,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,iBAAmBA,EAAO,iBACxB,IACT,CACA,QAAS,CACP,IAAMhB,EAAO,MAAM,OAAO,EAC1B,OAAAA,EAAK,iBAAmB,KAAK,iBAC7BA,EAAK,2BAA6B,GAC3BA,CACT,CACF,EACIu5D,GAAuC,IAAIvyE,GAC3CwyE,GAAuC,IAAIxyE,GAC3CyyE,GAAsB,CAAC,EACvBC,GAAwB,IAAIp9E,GAC5Bq9E,GAA4B,IAAI3yE,GAChC4yE,GAA0B,IAAI1yE,GAC9B2yE,GAA4B,IAAI/pE,GAChCvM,GAAgB,cAAc2D,EAAK,CACrC,YAAYihB,EAAUwV,EAAUnb,EAAO,CACrC,MAAM2F,EAAUwV,CAAQ,EACxB,KAAK,gBAAkB,GACvB,KAAK,eAAiB,IAAIv6B,GAAyB,IAAI,aAAaof,EAAQ,EAAE,EAAG,EAAE,EACnF,KAAK,cAAgB,KACrB,KAAK,aAAe,KACpB,KAAK,MAAQA,EACb,KAAK,YAAc,KACnB,KAAK,eAAiB,KACtB,QAAS,EAAI,EAAG,EAAIA,EAAO,IACzB,KAAK,YAAY,EAAGm3D,EAAS,CAEjC,CACA,oBAAqB,CACnB,IAAMxxD,EAAW,KAAK,SAChB3F,EAAQ,KAAK,MACf,KAAK,cAAgB,OACvB,KAAK,YAAc,IAAIlmB,IAErB6rB,EAAS,cAAgB,MAC3BA,EAAS,mBAAmB,EAE9B,KAAK,YAAY,UAAU,EAC3B,QAASrT,EAAI,EAAGA,EAAI0N,EAAO1N,IACzB,KAAK,YAAYA,EAAGykE,EAAoB,EACxCG,GAAM,KAAKvxD,EAAS,WAAW,EAAE,aAAaoxD,EAAoB,EAClE,KAAK,YAAY,MAAMG,EAAK,CAEhC,CACA,uBAAwB,CACtB,IAAMvxD,EAAW,KAAK,SAChB3F,EAAQ,KAAK,MACf,KAAK,iBAAmB,OAC1B,KAAK,eAAiB,IAAI1S,IAExBqY,EAAS,iBAAmB,MAC9BA,EAAS,sBAAsB,EAEjC,KAAK,eAAe,UAAU,EAC9B,QAASrT,EAAI,EAAGA,EAAI0N,EAAO1N,IACzB,KAAK,YAAYA,EAAGykE,EAAoB,EACxCM,GAAU,KAAK1xD,EAAS,cAAc,EAAE,aAAaoxD,EAAoB,EACzE,KAAK,eAAe,MAAMM,EAAS,CAEvC,CACA,KAAK74D,EAAQyT,EAAW,CACtB,aAAM,KAAKzT,EAAQyT,CAAS,EAC5B,KAAK,eAAe,KAAKzT,EAAO,cAAc,EAC1CA,EAAO,eAAiB,OAAM,KAAK,aAAeA,EAAO,aAAa,MAAM,GAC5EA,EAAO,gBAAkB,OAAM,KAAK,cAAgBA,EAAO,cAAc,MAAM,GACnF,KAAK,MAAQA,EAAO,MAChBA,EAAO,cAAgB,OAAM,KAAK,YAAcA,EAAO,YAAY,MAAM,GACzEA,EAAO,iBAAmB,OAAM,KAAK,eAAiBA,EAAO,eAAe,MAAM,GAC/E,IACT,CACA,WAAWrM,EAAOuK,EAAO,CACvBA,EAAM,UAAU,KAAK,cAAc,MAAOvK,EAAQ,CAAC,CACrD,CACA,YAAYA,EAAO+I,EAAQ,CACzBA,EAAO,UAAU,KAAK,eAAe,MAAO/I,EAAQ,EAAE,CACxD,CACA,WAAWA,EAAOmT,EAAQ,CACxB,IAAMw3B,EAAmBx3B,EAAO,sBAC1BjT,EAAQ,KAAK,aAAa,OAAO,KAAK,KACtC+O,EAAM07B,EAAiB,OAAS,EAChCw6B,EAAYnlE,EAAQiP,EAAM,EAChC,QAAS9O,EAAI,EAAGA,EAAIwqC,EAAiB,OAAQxqC,IAC3CwqC,EAAiBxqC,CAAC,EAAID,EAAMilE,EAAYhlE,CAAC,CAE7C,CACA,QAAQmpB,EAAWC,EAAa,CAC9B,IAAMC,EAAc,KAAK,YACnB47C,EAAe,KAAK,MAG1B,GAFAH,GAAQ,SAAW,KAAK,SACxBA,GAAQ,SAAW,KAAK,SACpBA,GAAQ,WAAa,SACrB,KAAK,iBAAmB,MAAM,KAAK,sBAAsB,EAC7DC,GAAU,KAAK,KAAK,cAAc,EAClCA,GAAU,aAAa17C,CAAW,EAC9BF,EAAU,IAAI,iBAAiB47C,EAAS,IAAM,IAClD,QAASG,EAAa,EAAGA,EAAaD,EAAcC,IAAc,CAChE,KAAK,YAAYA,EAAYT,EAAoB,EACjDC,GAAqB,iBAAiBr7C,EAAao7C,EAAoB,EACvEK,GAAQ,YAAcJ,GACtBI,GAAQ,QAAQ37C,EAAWw7C,EAAmB,EAC9C,QAAS3kE,EAAI,EAAGC,EAAI0kE,GAAoB,OAAQ3kE,EAAIC,EAAGD,IAAK,CAC1D,IAAM+pB,EAAa46C,GAAoB3kE,CAAC,EACxC+pB,EAAW,WAAam7C,EACxBn7C,EAAW,OAAS,KACpBX,EAAY,KAAKW,CAAU,CAC7B,CACA46C,GAAoB,OAAS,CAC/B,CACF,CACA,WAAW9kE,EAAOuK,EAAO,CACnB,KAAK,gBAAkB,OACzB,KAAK,cAAgB,IAAI9b,GAAyB,IAAI,aAAa,KAAK,eAAe,MAAQ,CAAC,EAAE,KAAK,CAAC,EAAG,CAAC,GAE9G8b,EAAM,QAAQ,KAAK,cAAc,MAAOvK,EAAQ,CAAC,CACnD,CACA,YAAYA,EAAO+I,EAAQ,CACzBA,EAAO,QAAQ,KAAK,eAAe,MAAO/I,EAAQ,EAAE,CACtD,CACA,WAAWA,EAAOmT,EAAQ,CACxB,IAAMw3B,EAAmBx3B,EAAO,sBAC1BlE,EAAM07B,EAAiB,OAAS,EAClC,KAAK,eAAiB,OACxB,KAAK,aAAe,IAAI9/C,GAAY,IAAI,aAAaokB,EAAM,KAAK,KAAK,EAAGA,EAAK,KAAK,MAAOxV,GAAW1M,EAAS,GAE/G,IAAMmT,EAAQ,KAAK,aAAa,OAAO,KAAK,KACxCwrC,EAAqB,EACzB,QAASvrC,EAAI,EAAGA,EAAIwqC,EAAiB,OAAQxqC,IAC3CurC,GAAsBf,EAAiBxqC,CAAC,EAE1C,IAAMwrC,EAAqB,KAAK,SAAS,qBAAuB,EAAI,EAAID,EAClEy5B,EAAYl2D,EAAMjP,EACxBE,EAAMilE,CAAS,EAAIx5B,EACnBzrC,EAAM,IAAIyqC,EAAkBw6B,EAAY,CAAC,CAC3C,CACA,oBAAqB,CACrB,CACA,SAAU,CACR,YAAK,cAAc,CAAE,KAAM,SAAU,CAAC,EAClC,KAAK,eAAiB,OACxB,KAAK,aAAa,QAAQ,EAC1B,KAAK,aAAe,MAEf,IACT,CACF,EACA,SAASG,GAAW/hE,EAAGC,EAAG,CACxB,OAAOD,EAAE,EAAIC,EAAE,CACjB,CACA,SAAS+hE,GAAgBhiE,EAAGC,EAAG,CAC7B,OAAOA,EAAE,EAAID,EAAE,CACjB,CACA,IAAIiiE,GAAsB,KAAM,CAC9B,aAAc,CACZ,KAAK,MAAQ,EACb,KAAK,KAAO,CAAC,EACb,KAAK,KAAO,CAAC,CACf,CACA,KAAK37C,EAAWrd,EAAGxM,EAAO,CACxB,IAAMylE,EAAO,KAAK,KACZhpB,EAAO,KAAK,KACd,KAAK,OAASgpB,EAAK,QACrBA,EAAK,KAAK,CACR,MAAO,GACP,MAAO,GACP,EAAG,GACH,MAAO,EACT,CAAC,EAEH,IAAMC,EAAOD,EAAK,KAAK,KAAK,EAC5BhpB,EAAK,KAAKipB,CAAI,EACd,KAAK,QACLA,EAAK,MAAQ77C,EAAU,MACvB67C,EAAK,MAAQ77C,EAAU,MACvB67C,EAAK,EAAIl5D,EACTk5D,EAAK,MAAQ1lE,CACf,CACA,OAAQ,CACN,KAAK,KAAK,OAAS,EACnB,KAAK,MAAQ,CACf,CACF,EACI2lE,GAA4B,IAAItzE,GAChCuzE,GAAkC,IAAIvzE,GACtCwzE,GAAkC,IAAIxzE,GACtCyzE,GAA8B,IAAIj9E,GAAM,EAAG,EAAG,CAAC,EAC/Ck9E,GAAsC,IAAI1zE,GAC1C2zE,GAA2B,IAAI54E,GAC/B64E,GAAyB,IAAIt+E,GAC7Bu+E,GAA4B,IAAI/qE,GAChCgrE,GAA4B,IAAI3nE,EAChC4nE,GAA2B,IAAI5nE,EAC/B6nE,GAAwB,IAAI7nE,EAC5B8nE,GAA8B,IAAId,GAClCe,GAAwB,IAAIh0E,GAC5Bi0E,GAAmB,CAAC,EACxB,SAASC,GAAkBx6C,EAAKnhB,EAAQ47D,EAAe,EAAG,CACxD,IAAMniD,EAAWzZ,EAAO,SACxB,GAAImhB,EAAI,8BAAgCA,EAAI,MAAM,cAAgBnhB,EAAO,MAAM,YAAa,CAC1F,IAAM67D,EAAc16C,EAAI,MACxB,QAAS9rB,EAAI,EAAGA,EAAIwmE,EAAaxmE,IAC/B,QAASsD,EAAI,EAAGA,EAAI8gB,EAAU9gB,IAC5BqH,EAAO,aAAa3K,EAAIumE,EAAcjjE,EAAGwoB,EAAI,aAAa9rB,EAAGsD,CAAC,CAAC,CAGrE,MACEqH,EAAO,MAAM,IAAImhB,EAAI,MAAOy6C,EAAeniD,CAAQ,EAErDzZ,EAAO,YAAc,EACvB,CACA,IAAIvjB,GAAc,cAAcgL,EAAK,CACnC,IAAI,kBAAmB,CACrB,OAAO,KAAK,iBACd,CACA,YAAY8qE,EAAkBuJ,EAAgBC,EAAgBD,EAAiB,EAAG59C,EAAU,CAC1F,MAAM,IAAIhhC,GAAkBghC,CAAQ,EACpC,KAAK,cAAgB,GACrB,KAAK,uBAAyB,GAC9B,KAAK,YAAc,GACnB,KAAK,YAAc,KACnB,KAAK,eAAiB,KACtB,KAAK,WAAa,KAClB,KAAK,UAAY,CAAC,EAClB,KAAK,sBAAwB,CAAC,EAC9B,KAAK,YAAc,CAAC,EACpB,KAAK,gBAAkB,CAAC,EACxB,KAAK,QAAU,CAAC,EAChB,KAAK,kBAAoBq0C,EACzB,KAAK,gBAAkBuJ,EACvB,KAAK,eAAiBC,EACtB,KAAK,qBAAuB,GAC5B,KAAK,eAAiB,EACtB,KAAK,iBAAmB,IAAI,WAAWxJ,CAAgB,EACvD,KAAK,iBAAmB,IAAI,WAAWA,CAAgB,EACvD,KAAK,gBAAkB,EACvB,KAAK,oBAAsB,KAC3B,KAAK,mBAAqB,GAC1B,KAAK,iBAAmB,KACxB,KAAK,iBAAmB,KACxB,KAAK,eAAiB,KACtB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,CAC5B,CACA,sBAAuB,CACrB,IAAIpqD,EAAO,KAAK,KAAK,KAAK,kBAAoB,CAAC,EAC/CA,EAAO,KAAK,KAAKA,EAAO,CAAC,EAAI,EAC7BA,EAAO,KAAK,IAAIA,EAAM,CAAC,EACvB,IAAM6zD,EAAgB,IAAI,aAAa7zD,EAAOA,EAAO,CAAC,EAChD8zD,EAAkB,IAAIl8E,GAAYi8E,EAAe7zD,EAAMA,EAAMjc,GAAYjK,EAAS,EACxF,KAAK,iBAAmBg6E,CAC1B,CACA,sBAAuB,CACrB,IAAI9zD,EAAO,KAAK,KAAK,KAAK,iBAAiB,EAC3CA,EAAO,KAAK,KAAKA,CAAI,EACrB,IAAM+zD,EAAgB,IAAI,YAAY/zD,EAAOA,CAAI,EAC3Cg0D,EAAkB,IAAIp8E,GAAYm8E,EAAe/zD,EAAMA,EAAMvZ,GAAkBwE,EAAe,EACpG,KAAK,iBAAmB+oE,CAC1B,CACA,oBAAqB,CACnB,IAAIh0D,EAAO,KAAK,KAAK,KAAK,iBAAiB,EAC3CA,EAAO,KAAK,KAAKA,CAAI,EACrB,IAAMi0D,EAAc,IAAI,aAAaj0D,EAAOA,EAAO,CAAC,EAAE,KAAK,CAAC,EACtDk0D,EAAgB,IAAIt8E,GAAYq8E,EAAaj0D,EAAMA,EAAMjc,GAAYjK,EAAS,EACpFo6E,EAAc,WAAap+E,GAAgB,kBAC3C,KAAK,eAAiBo+E,CACxB,CACA,oBAAoBC,EAAW,CAC7B,IAAM5zD,EAAW,KAAK,SAChBozD,EAAiB,KAAK,gBACtBC,EAAgB,KAAK,eAC3B,GAAI,KAAK,uBAAyB,GAAO,CACvC,QAAWQ,KAAiBD,EAAU,WAAY,CAChD,IAAME,EAAeF,EAAU,aAAaC,CAAa,EACnD,CAAE,MAAAnnE,EAAO,SAAAqkB,EAAU,WAAAC,CAAW,EAAI8iD,EAClC5jC,EAAW,IAAIxjC,EAAM,YAAY0mE,EAAiBriD,CAAQ,EAC1DgjD,EAAe,IAAIx/E,GAAgB27C,EAAUnf,EAAUC,CAAU,EACvEhR,EAAS,aAAa6zD,EAAeE,CAAY,CACnD,CACA,GAAIH,EAAU,SAAS,IAAM,KAAM,CACjC,IAAMpP,EAAa4O,EAAiB,MAAQ,IAAI,YAAYC,CAAa,EAAI,IAAI,YAAYA,CAAa,EAC1GrzD,EAAS,SAAS,IAAIzrB,GAAgBiwE,EAAY,CAAC,CAAC,CACtD,CACA,KAAK,qBAAuB,EAC9B,CACF,CAEA,kBAAkBxkD,EAAU,CAC1B,IAAMg0D,EAAgB,KAAK,SAC3B,GAAI,EAAQh0D,EAAS,SAAS,GAAO,EAAQg0D,EAAc,SAAS,EAClE,MAAM,IAAI,MAAM,6DAA6D,EAE/E,QAAWH,KAAiBG,EAAc,WAAY,CACpD,GAAI,CAACh0D,EAAS,aAAa6zD,CAAa,EACtC,MAAM,IAAI,MAAM,wCAAwCA,CAAa,oDAAoD,EAE3H,IAAMC,EAAe9zD,EAAS,aAAa6zD,CAAa,EAClDE,EAAeC,EAAc,aAAaH,CAAa,EAC7D,GAAIC,EAAa,WAAaC,EAAa,UAAYD,EAAa,aAAeC,EAAa,WAC9F,MAAM,IAAI,MAAM,mFAAmF,CAEvG,CACF,CACA,cAAcE,EAAM,CAClB,YAAK,WAAaA,EACX,IACT,CACA,oBAAqB,CACf,KAAK,cAAgB,OACvB,KAAK,YAAc,IAAI9/E,IAEzB,IAAMygC,EAAc,KAAK,YACnBs/C,EAAW,KAAK,UACtBt/C,EAAY,UAAU,EACtB,QAASjoB,EAAI,EAAGC,EAAIsnE,EAAS,OAAQvnE,EAAIC,EAAGD,IAAK,CAC/C,GAAIunE,EAASvnE,CAAC,EAAE,SAAW,GAAO,SAClC,IAAMy/B,EAAa8nC,EAASvnE,CAAC,EAAE,cAC/B,KAAK,YAAYA,EAAGwlE,EAAS,EAC7B,KAAK,iBAAiB/lC,EAAYqmC,EAAM,EAAE,aAAaN,EAAS,EAChEv9C,EAAY,MAAM69C,EAAM,CAC1B,CACF,CACA,uBAAwB,CAClB,KAAK,iBAAmB,OAC1B,KAAK,eAAiB,IAAI9qE,IAE5B,IAAMgtB,EAAiB,KAAK,eACtBu/C,EAAW,KAAK,UACtBv/C,EAAe,UAAU,EACzB,QAAShoB,EAAI,EAAGC,EAAIsnE,EAAS,OAAQvnE,EAAIC,EAAGD,IAAK,CAC/C,GAAIunE,EAASvnE,CAAC,EAAE,SAAW,GAAO,SAClC,IAAMy/B,EAAa8nC,EAASvnE,CAAC,EAAE,cAC/B,KAAK,YAAYA,EAAGwlE,EAAS,EAC7B,KAAK,oBAAoB/lC,EAAYsmC,EAAS,EAAE,aAAaP,EAAS,EACtEx9C,EAAe,MAAM+9C,EAAS,CAChC,CACF,CACA,YAAYtmC,EAAY,CAEtB,GADmB,KAAK,UAAU,QAAU,KAAK,kBAC/B,KAAK,sBAAsB,SAAW,EACtD,MAAM,IAAI,MAAM,0CAA0C,EAE5D,IAAM+nC,EAAmB,CACvB,QAAS,GACT,OAAQ,GACR,cAAe/nC,CACjB,EACIgoC,EAAS,KACT,KAAK,sBAAsB,OAAS,GACtCA,EAAS,KAAK,sBAAsB,IAAI,EACxC,KAAK,UAAUA,CAAM,EAAID,IAEzBC,EAAS,KAAK,UAAU,OACxB,KAAK,UAAU,KAAKD,CAAgB,GAEtC,IAAMZ,EAAkB,KAAK,iBACvBD,EAAgBC,EAAgB,MAAM,KAC5ClB,GAAgB,QAAQiB,EAAec,EAAS,EAAE,EAClDb,EAAgB,YAAc,GAC9B,IAAMI,EAAgB,KAAK,eAC3B,OAAIA,IACFrB,GAAY,QAAQqB,EAAc,MAAM,KAAMS,EAAS,CAAC,EACxDT,EAAc,YAAc,IAEvBS,CACT,CACA,YAAYp0D,EAAUmzD,EAAc,GAAIkB,EAAa,GAAI,CAGvD,GAFA,KAAK,oBAAoBr0D,CAAQ,EACjC,KAAK,kBAAkBA,CAAQ,EAC3B,KAAK,UAAU,QAAU,KAAK,kBAChC,MAAM,IAAI,MAAM,0CAA0C,EAE5D,IAAMs0D,EAAgB,CACpB,YAAa,GACb,YAAa,GACb,WAAY,GACZ,WAAY,EACd,EACIC,EAAY,KACVC,EAAiB,KAAK,gBACtBC,EAAa,KAAK,YAClBC,EAAS,KAAK,QAChB,KAAK,iBAAmB,IAC1BH,EAAYC,EAAeA,EAAe,OAAS,CAAC,GAElDrB,IAAgB,GAClBmB,EAAc,YAAct0D,EAAS,aAAa,UAAU,EAAE,MAE9Ds0D,EAAc,YAAcnB,EAE1BoB,IAAc,KAChBD,EAAc,YAAc,EAE5BA,EAAc,YAAcC,EAAU,YAAcA,EAAU,YAEhE,IAAM/nE,EAAQwT,EAAS,SAAS,EAC1B20D,EAAWnoE,IAAU,KAa3B,GAZImoE,IACEN,IAAe,GACjBC,EAAc,WAAa9nE,EAAM,MAEjC8nE,EAAc,WAAaD,EAEzBE,IAAc,KAChBD,EAAc,WAAa,EAE3BA,EAAc,WAAaC,EAAU,WAAaA,EAAU,YAG5DD,EAAc,aAAe,IAAMA,EAAc,WAAaA,EAAc,WAAa,KAAK,gBAAkBA,EAAc,YAAcA,EAAc,YAAc,KAAK,gBAC/K,MAAM,IAAI,MAAM,sEAAsE,EAExF,IAAMloC,EAAa,KAAK,eACxB,YAAK,iBACLooC,EAAe,KAAKF,CAAa,EACjCG,EAAW,KAAK,CACd,MAAOE,EAAWL,EAAc,WAAaA,EAAc,YAC3D,MAAO,EACT,CAAC,EACDI,EAAO,KAAK,CACV,eAAgB,GAChB,IAAK,IAAIvgF,GACT,kBAAmB,GACnB,OAAQ,IAAIwT,EACd,CAAC,EACD,KAAK,cAAcykC,EAAYpsB,CAAQ,EAChCosB,CACT,CACA,cAAcA,EAAYpsB,EAAU,CAClC,GAAIosB,GAAc,KAAK,eACrB,MAAM,IAAI,MAAM,8CAA8C,EAEhE,KAAK,kBAAkBpsB,CAAQ,EAC/B,IAAMg0D,EAAgB,KAAK,SACrBW,EAAWX,EAAc,SAAS,IAAM,KACxCY,EAAWZ,EAAc,SAAS,EAClCa,EAAW70D,EAAS,SAAS,EAC7Bs0D,EAAgB,KAAK,gBAAgBloC,CAAU,EACrD,GAAIuoC,GAAYE,EAAS,MAAQP,EAAc,YAAct0D,EAAS,WAAW,SAAS,MAAQs0D,EAAc,YAC9G,MAAM,IAAI,MAAM,qEAAqE,EAEvF,IAAMQ,EAAcR,EAAc,YAC5BnB,EAAcmB,EAAc,YAClC,QAAWT,KAAiBG,EAAc,WAAY,CACpD,IAAMF,EAAe9zD,EAAS,aAAa6zD,CAAa,EAClDE,EAAeC,EAAc,aAAaH,CAAa,EAC7DZ,GAAkBa,EAAcC,EAAce,CAAW,EACzD,IAAM/jD,EAAW+iD,EAAa,SAC9B,QAASnnE,EAAImnE,EAAa,MAAOlnE,EAAIumE,EAAaxmE,EAAIC,EAAGD,IAAK,CAC5D,IAAMH,EAAQsoE,EAAcnoE,EAC5B,QAASsD,EAAI,EAAGA,EAAI8gB,EAAU9gB,IAC5B8jE,EAAa,aAAavnE,EAAOyD,EAAG,CAAC,CAEzC,CACA8jE,EAAa,YAAc,GAC3BA,EAAa,eAAee,EAAc/jD,EAAUoiD,EAAcpiD,CAAQ,CAC5E,CACA,GAAI4jD,EAAU,CACZ,IAAMI,EAAaT,EAAc,WACjC,QAAS3nE,EAAI,EAAGA,EAAIkoE,EAAS,MAAOloE,IAClCioE,EAAS,KAAKG,EAAapoE,EAAGmoE,EAAcD,EAAS,KAAKloE,CAAC,CAAC,EAE9D,QAASA,EAAIkoE,EAAS,MAAOjoE,EAAI0nE,EAAc,WAAY3nE,EAAIC,EAAGD,IAChEioE,EAAS,KAAKG,EAAapoE,EAAGmoE,CAAW,EAE3CF,EAAS,YAAc,GACvBA,EAAS,eAAeG,EAAYT,EAAc,UAAU,CAC9D,CACA,IAAMppD,EAAQ,KAAK,QAAQkhB,CAAU,EACjCpsB,EAAS,cAAgB,MAC3BkL,EAAM,IAAI,KAAKlL,EAAS,WAAW,EACnCkL,EAAM,eAAiB,IAEvBA,EAAM,eAAiB,GAErBlL,EAAS,iBAAmB,MAC9BkL,EAAM,OAAO,KAAKlL,EAAS,cAAc,EACzCkL,EAAM,kBAAoB,IAE1BA,EAAM,kBAAoB,GAE5B,IAAMmL,EAAY,KAAK,YAAY+V,CAAU,EACvC4oC,EAAUh1D,EAAS,aAAa,UAAU,EAChD,OAAAqW,EAAU,MAAQs+C,EAAWE,EAAS,MAAQG,EAAQ,MACtD,KAAK,mBAAqB,GACnB5oC,CACT,CAQA,eAAeylC,EAAY,CACzB,IAAMqC,EAAW,KAAK,UACtB,OAAIrC,GAAcqC,EAAS,QAAUA,EAASrC,CAAU,EAAE,SAAW,GAC5D,MAETqC,EAASrC,CAAU,EAAE,OAAS,GAC9B,KAAK,sBAAsB,KAAKA,CAAU,EAC1C,KAAK,mBAAqB,GACnB,KACT,CAEA,iBAAiBzlC,EAAY90B,EAAQ,CACnC,GAAI80B,GAAc,KAAK,eACrB,OAAO,KAET,IAAMlhB,EAAQ,KAAK,QAAQkhB,CAAU,EAC/BvsB,EAAMqL,EAAM,IACZlL,EAAW,KAAK,SACtB,GAAIkL,EAAM,iBAAmB,GAAO,CAClCrL,EAAI,UAAU,EACd,IAAMrT,EAAQwT,EAAS,MACjB8H,EAAW9H,EAAS,WAAW,SAC/BqW,EAAY,KAAK,YAAY+V,CAAU,EAC7C,QAASz/B,EAAI0pB,EAAU,MAAOzpB,EAAIypB,EAAU,MAAQA,EAAU,MAAO1pB,EAAIC,EAAGD,IAAK,CAC/E,IAAIsoE,EAAKtoE,EACLH,IACFyoE,EAAKzoE,EAAM,KAAKyoE,CAAE,GAEpBp1D,EAAI,cAAc8yD,GAAU,oBAAoB7qD,EAAUmtD,CAAE,CAAC,CAC/D,CACA/pD,EAAM,eAAiB,EACzB,CACA,OAAA5T,EAAO,KAAKuI,CAAG,EACRvI,CACT,CAEA,oBAAoB80B,EAAY90B,EAAQ,CACtC,GAAI80B,GAAc,KAAK,eACrB,OAAO,KAET,IAAMlhB,EAAQ,KAAK,QAAQkhB,CAAU,EAC/BhsB,EAAS8K,EAAM,OACflL,EAAW,KAAK,SACtB,GAAIkL,EAAM,oBAAsB,GAAO,CACrC9K,EAAO,UAAU,EACjB,KAAK,iBAAiBgsB,EAAYqmC,EAAM,EACxCA,GAAO,UAAUryD,EAAO,MAAM,EAC9B,IAAM5T,EAAQwT,EAAS,MACjB8H,EAAW9H,EAAS,WAAW,SAC/BqW,EAAY,KAAK,YAAY+V,CAAU,EACzCtqB,EAAc,EAClB,QAASnV,EAAI0pB,EAAU,MAAOzpB,EAAIypB,EAAU,MAAQA,EAAU,MAAO1pB,EAAIC,EAAGD,IAAK,CAC/E,IAAIsoE,EAAKtoE,EACLH,IACFyoE,EAAKzoE,EAAM,KAAKyoE,CAAE,GAEpBtC,GAAU,oBAAoB7qD,EAAUmtD,CAAE,EAC1CnzD,EAAc,KAAK,IAAIA,EAAa1B,EAAO,OAAO,kBAAkBuyD,EAAS,CAAC,CAChF,CACAvyD,EAAO,OAAS,KAAK,KAAK0B,CAAW,EACrCoJ,EAAM,kBAAoB,EAC5B,CACA,OAAA5T,EAAO,KAAK8I,CAAM,EACX9I,CACT,CACA,YAAYu6D,EAAYt8D,EAAQ,CAC9B,IAAM2+D,EAAW,KAAK,UAChBX,EAAkB,KAAK,iBACvBD,EAAgB,KAAK,iBAAiB,MAAM,KAClD,OAAIzB,GAAcqC,EAAS,QAAUA,EAASrC,CAAU,EAAE,SAAW,GAC5D,MAETt8D,EAAO,QAAQ+9D,EAAezB,EAAa,EAAE,EAC7C0B,EAAgB,YAAc,GACvB,KACT,CACA,YAAY1B,EAAYt8D,EAAQ,CAC9B,IAAM2+D,EAAW,KAAK,UAChBZ,EAAgB,KAAK,iBAAiB,MAAM,KAClD,OAAIzB,GAAcqC,EAAS,QAAUA,EAASrC,CAAU,EAAE,SAAW,GAC5D,KAEFt8D,EAAO,UAAU+9D,EAAezB,EAAa,EAAE,CACxD,CACA,WAAWA,EAAY96D,EAAO,CACxB,KAAK,iBAAmB,MAC1B,KAAK,mBAAmB,EAE1B,IAAM48D,EAAgB,KAAK,eACrBD,EAAc,KAAK,eAAe,MAAM,KACxCQ,EAAW,KAAK,UACtB,OAAIrC,GAAcqC,EAAS,QAAUA,EAASrC,CAAU,EAAE,SAAW,GAC5D,MAET96D,EAAM,QAAQ28D,EAAa7B,EAAa,CAAC,EACzC8B,EAAc,YAAc,GACrB,KACT,CACA,WAAW9B,EAAY96D,EAAO,CAC5B,IAAM28D,EAAc,KAAK,eAAe,MAAM,KACxCQ,EAAW,KAAK,UACtB,OAAIrC,GAAcqC,EAAS,QAAUA,EAASrC,CAAU,EAAE,SAAW,GAC5D,KAEF96D,EAAM,UAAU28D,EAAa7B,EAAa,CAAC,CACpD,CACA,aAAaA,EAAYtkE,EAAO,CAC9B,IAAM2mE,EAAW,KAAK,UACtB,OAAIrC,GAAcqC,EAAS,QAAUA,EAASrC,CAAU,EAAE,SAAW,IAASqC,EAASrC,CAAU,EAAE,UAAYtkE,EACtG,MAET2mE,EAASrC,CAAU,EAAE,QAAUtkE,EAC/B,KAAK,mBAAqB,GACnB,KACT,CACA,aAAaskE,EAAY,CACvB,IAAMqC,EAAW,KAAK,UACtB,OAAIrC,GAAcqC,EAAS,QAAUA,EAASrC,CAAU,EAAE,SAAW,GAC5D,GAEFqC,EAASrC,CAAU,EAAE,OAC9B,CACA,gBAAgBA,EAAYzlC,EAAY,CACtC,IAAM8nC,EAAW,KAAK,UAItB,OAHIrC,GAAcqC,EAAS,QAAUA,EAASrC,CAAU,EAAE,SAAW,IAGjEzlC,EAAa,GAAKA,GAAc,KAAK,eAChC,MAET8nC,EAASrC,CAAU,EAAE,cAAgBzlC,EAC9B,KACT,CACA,gBAAgBylC,EAAY,CAC1B,IAAMqC,EAAW,KAAK,UACtB,OAAIrC,GAAcqC,EAAS,QAAUA,EAASrC,CAAU,EAAE,SAAW,GAC5D,GAEFqC,EAASrC,CAAU,EAAE,aAC9B,CACA,mBAAmBzlC,EAAY90B,EAAS,CAAC,EAAG,CAC1C,GAAI80B,EAAa,GAAKA,GAAc,KAAK,eACvC,OAAO,KAET,IAAM/V,EAAY,KAAK,YAAY+V,CAAU,EAC7C,OAAA90B,EAAO,MAAQ+e,EAAU,MACzB/e,EAAO,MAAQ+e,EAAU,MAClB/e,CACT,CACA,QAAQwe,EAAWC,EAAa,CAC9B,IAAMm+C,EAAW,KAAK,UAChBO,EAAa,KAAK,YAClBz+C,EAAc,KAAK,YACnBg+C,EAAgB,KAAK,SAC3BjB,GAAM,SAAW,KAAK,SACtBA,GAAM,SAAS,MAAQiB,EAAc,MACrCjB,GAAM,SAAS,WAAaiB,EAAc,WACtCjB,GAAM,SAAS,cAAgB,OACjCA,GAAM,SAAS,YAAc,IAAI5+E,IAE/B4+E,GAAM,SAAS,iBAAmB,OACpCA,GAAM,SAAS,eAAiB,IAAIprE,IAEtC,QAASgF,EAAI,EAAGC,EAAIsnE,EAAS,OAAQvnE,EAAIC,EAAGD,IAAK,CAC/C,GAAI,CAACunE,EAASvnE,CAAC,EAAE,SAAW,CAACunE,EAASvnE,CAAC,EAAE,OACvC,SAEF,IAAMy/B,EAAa8nC,EAASvnE,CAAC,EAAE,cACzB0pB,EAAYo+C,EAAWroC,CAAU,EACvC2mC,GAAM,SAAS,aAAa18C,EAAU,MAAOA,EAAU,KAAK,EAC5D,KAAK,YAAY1pB,EAAGomE,GAAM,WAAW,EAAE,YAAY/8C,CAAW,EAC9D,KAAK,iBAAiBoW,EAAY2mC,GAAM,SAAS,WAAW,EAC5D,KAAK,oBAAoB3mC,EAAY2mC,GAAM,SAAS,cAAc,EAClEA,GAAM,QAAQj9C,EAAWk9C,EAAgB,EACzC,QAAS1xD,EAAI,EAAG4zD,EAAKlC,GAAiB,OAAQ1xD,EAAI4zD,EAAI5zD,IAAK,CACzD,IAAMoV,EAAas8C,GAAiB1xD,CAAC,EACrCoV,EAAW,OAAS,KACpBA,EAAW,QAAU/pB,EACrBopB,EAAY,KAAKW,CAAU,CAC7B,CACAs8C,GAAiB,OAAS,CAC5B,CACAD,GAAM,SAAW,KACjBA,GAAM,SAAS,MAAQ,KACvBA,GAAM,SAAS,WAAa,CAAC,EAC7BA,GAAM,SAAS,aAAa,EAAG,GAAQ,CACzC,CACA,KAAKl6D,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,SAAWA,EAAO,SAAS,MAAM,EACtC,KAAK,uBAAyBA,EAAO,uBACrC,KAAK,YAAcA,EAAO,YAC1B,KAAK,YAAcA,EAAO,cAAgB,KAAOA,EAAO,YAAY,MAAM,EAAI,KAC9E,KAAK,eAAiBA,EAAO,iBAAmB,KAAOA,EAAO,eAAe,MAAM,EAAI,KACvF,KAAK,YAAcA,EAAO,YAAY,IAAK1J,GAAUgmE,GAAe,CAAC,EAAGhmE,CAAK,CAAC,EAC9E,KAAK,gBAAkB0J,EAAO,gBAAgB,IAAK1J,GAAUgmE,GAAe,CAAC,EAAGhmE,CAAK,CAAC,EACtF,KAAK,UAAY0J,EAAO,UAAU,IAAKu8D,GAAQD,GAAe,CAAC,EAAGC,CAAG,CAAC,EACtE,KAAK,QAAUv8D,EAAO,QAAQ,IAAKqS,IAAW,CAC5C,eAAgBA,EAAM,eACtB,IAAKA,EAAM,IAAI,MAAM,EACrB,kBAAmBA,EAAM,kBACzB,OAAQA,EAAM,OAAO,MAAM,CAC7B,EAAE,EACF,KAAK,kBAAoBrS,EAAO,kBAChC,KAAK,gBAAkBA,EAAO,gBAC9B,KAAK,eAAiBA,EAAO,eAC7B,KAAK,qBAAuBA,EAAO,qBACnC,KAAK,eAAiBA,EAAO,eAC7B,KAAK,iBAAmBA,EAAO,iBAAiB,MAAM,EACtD,KAAK,iBAAmBA,EAAO,iBAAiB,MAAM,EACtD,KAAK,iBAAmBA,EAAO,iBAAiB,MAAM,EACtD,KAAK,iBAAiB,MAAM,KAAO,KAAK,iBAAiB,MAAM,KAAK,MAAM,EACtE,KAAK,iBAAmB,OAC1B,KAAK,eAAiBA,EAAO,eAAe,MAAM,EAClD,KAAK,eAAe,MAAM,KAAO,KAAK,eAAe,MAAM,KAAK,MAAM,GAEjE,IACT,CACA,SAAU,CACR,YAAK,SAAS,QAAQ,EACtB,KAAK,iBAAiB,QAAQ,EAC9B,KAAK,iBAAmB,KACxB,KAAK,iBAAiB,QAAQ,EAC9B,KAAK,iBAAmB,KACpB,KAAK,iBAAmB,OAC1B,KAAK,eAAe,QAAQ,EAC5B,KAAK,eAAiB,MAEjB,IACT,CACA,eAAemgB,EAAU4B,EAAOrc,EAAQyB,EAAUwV,EAAU,CAC1D,GAAI,CAAC,KAAK,oBAAsB,CAAC,KAAK,wBAA0B,CAAC,KAAK,YACpE,OAEF,IAAMhpB,EAAQwT,EAAS,SAAS,EAC1BisB,EAAkBz/B,IAAU,KAAO,EAAIA,EAAM,MAAM,kBACnD0nE,EAAW,KAAK,UAChBmB,EAAkB,KAAK,iBACvBC,EAAkB,KAAK,iBACvBb,EAAa,KAAK,YAClBc,EAAyB,KAAK,uBAC9B9B,EAAkB,KAAK,iBACvBD,EAAgBC,EAAgB,MAAM,KACxC8B,IACFhD,GAAoB,iBAAiBh0D,EAAO,iBAAkBA,EAAO,kBAAkB,EAAE,SAAS,KAAK,WAAW,EAClHi0D,GAAS,wBACPD,GACAv5C,EAAS,gBACX,GAEF,IAAI3e,EAAQ,EACZ,GAAI,KAAK,YAAa,CACpB+3D,GAAgB,KAAK,KAAK,WAAW,EAAE,OAAO,EAC9CO,GAAU,sBAAsBp0D,EAAO,WAAW,EAAE,aAAa6zD,EAAe,EAChFQ,GAAS,IAAI,EAAG,EAAG,EAAE,EAAE,mBAAmBr0D,EAAO,WAAW,EAAE,mBAAmB6zD,EAAe,EAChG,QAASzlE,EAAI,EAAGC,EAAIsnE,EAAS,OAAQvnE,EAAIC,EAAGD,IAC1C,GAAIunE,EAASvnE,CAAC,EAAE,SAAWunE,EAASvnE,CAAC,EAAE,OAAQ,CAC7C,IAAMy/B,EAAa8nC,EAASvnE,CAAC,EAAE,cAC/B,KAAK,YAAYA,EAAGwlE,EAAS,EAC7B,KAAK,oBAAoB/lC,EAAYsmC,EAAS,EAAE,aAAaP,EAAS,EACtE,IAAIqD,EAAS,GAIb,GAHID,IACFC,EAAS,CAAChD,GAAS,iBAAiBE,EAAS,GAE3C,CAAC8C,EAAQ,CACX,IAAMx8D,EAAI65D,GAAM,WAAWH,GAAU,OAAQC,EAAS,EAAE,IAAIC,EAAQ,EACpEE,GAAY,KAAK2B,EAAWroC,CAAU,EAAGpzB,EAAGrM,CAAC,CAC/C,CACF,CAEF,IAAMs8C,EAAO6pB,GAAY,KACnB2C,EAAa,KAAK,WACpBA,IAAe,KACjBxsB,EAAK,KAAKzzB,EAAS,YAAcu8C,GAAkBD,EAAU,EAE7D2D,EAAW,KAAK,KAAMxsB,EAAM1qC,CAAM,EAEpC,QAAS5R,EAAI,EAAGC,EAAIq8C,EAAK,OAAQt8C,EAAIC,EAAGD,IAAK,CAC3C,IAAMulE,EAAOjpB,EAAKt8C,CAAC,EACnB0oE,EAAgBh7D,CAAK,EAAI63D,EAAK,MAAQjmC,EACtCqpC,EAAgBj7D,CAAK,EAAI63D,EAAK,MAC9BsB,EAAcn5D,CAAK,EAAI63D,EAAK,MAC5B73D,GACF,CACAy4D,GAAY,MAAM,CACpB,KACE,SAASnmE,EAAI,EAAGC,EAAIsnE,EAAS,OAAQvnE,EAAIC,EAAGD,IAC1C,GAAIunE,EAASvnE,CAAC,EAAE,SAAWunE,EAASvnE,CAAC,EAAE,OAAQ,CAC7C,IAAMy/B,EAAa8nC,EAASvnE,CAAC,EAAE,cAC3B6oE,EAAS,GAMb,GALID,IACF,KAAK,YAAY5oE,EAAGwlE,EAAS,EAC7B,KAAK,oBAAoB/lC,EAAYsmC,EAAS,EAAE,aAAaP,EAAS,EACtEqD,EAAS,CAAChD,GAAS,iBAAiBE,EAAS,GAE3C,CAAC8C,EAAQ,CACX,IAAMrmE,EAAQslE,EAAWroC,CAAU,EACnCipC,EAAgBh7D,CAAK,EAAIlL,EAAM,MAAQ88B,EACvCqpC,EAAgBj7D,CAAK,EAAIlL,EAAM,MAC/BqkE,EAAcn5D,CAAK,EAAI1N,EACvB0N,GACF,CACF,CAGJo5D,EAAgB,YAAc,GAC9B,KAAK,gBAAkBp5D,EACvB,KAAK,mBAAqB,EAC5B,CACA,eAAe2e,EAAUrZ,EAAQpB,EAAQsvC,EAAc7tC,EAAUguC,EAAe,CAC9E,KAAK,eAAeh1B,EAAU,KAAM60B,EAAc7tC,EAAUguC,CAAa,CAC3E,CACF,EACIjxD,GAAoB,cAAcyB,EAAS,CAC7C,YAAY8sB,EAAY,CACtB,MAAM,EACN,KAAK,oBAAsB,GAC3B,KAAK,KAAO,oBACZ,KAAK,MAAQ,IAAIj2B,GAAM,QAAQ,EAC/B,KAAK,IAAM,KACX,KAAK,UAAY,EACjB,KAAK,QAAU,QACf,KAAK,SAAW,QAChB,KAAK,IAAM,GACX,KAAK,UAAUi2B,CAAU,CAC3B,CACA,KAAKzS,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,MAAM,KAAKA,EAAO,KAAK,EAC5B,KAAK,IAAMA,EAAO,IAClB,KAAK,UAAYA,EAAO,UACxB,KAAK,QAAUA,EAAO,QACtB,KAAK,SAAWA,EAAO,SACvB,KAAK,IAAMA,EAAO,IACX,IACT,CACF,EACI68D,GAA0B,IAAI1qE,EAC9B2qE,GAAwB,IAAI3qE,EAC5B4qE,GAAmC,IAAI/2E,GACvCg3E,GAAyB,IAAIhwE,GAC7BiwE,GAA4B,IAAInuE,GAChCouE,GAAuC,IAAI/qE,EAC3CgrE,GAA2C,IAAIhrE,EAC/CnO,GAAO,cAAcoE,EAAS,CAChC,YAAY+e,EAAW,IAAIxrB,GAAkBghC,EAAW,IAAIz4B,GAAqB,CAC/E,MAAM,EACN,KAAK,OAAS,GACd,KAAK,KAAO,OACZ,KAAK,SAAWijB,EAChB,KAAK,SAAWwV,EAChB,KAAK,mBAAmB,CAC1B,CACA,KAAK3c,EAAQyT,EAAW,CACtB,aAAM,KAAKzT,EAAQyT,CAAS,EAC5B,KAAK,SAAW,MAAM,QAAQzT,EAAO,QAAQ,EAAIA,EAAO,SAAS,MAAM,EAAIA,EAAO,SAClF,KAAK,SAAWA,EAAO,SAChB,IACT,CACA,sBAAuB,CACrB,IAAMmH,EAAW,KAAK,SACtB,GAAIA,EAAS,QAAU,KAAM,CAC3B,IAAMC,EAAoBD,EAAS,WAAW,SACxCi2D,EAAgB,CAAC,CAAC,EACxB,QAAS,EAAI,EAAGrpE,EAAIqT,EAAkB,MAAO,EAAIrT,EAAG,IAClD8oE,GAAQ,oBAAoBz1D,EAAmB,EAAI,CAAC,EACpD01D,GAAM,oBAAoB11D,EAAmB,CAAC,EAC9Cg2D,EAAc,CAAC,EAAIA,EAAc,EAAI,CAAC,EACtCA,EAAc,CAAC,GAAKP,GAAQ,WAAWC,EAAK,EAE9C31D,EAAS,aAAa,eAAgB,IAAI1mB,GAAuB28E,EAAe,CAAC,CAAC,CACpF,MACE,QAAQ,KAAK,+FAA+F,EAE9G,OAAO,IACT,CACA,QAAQngD,EAAWC,EAAa,CAC9B,IAAM/V,EAAW,KAAK,SAChBgW,EAAc,KAAK,YACnB6nC,EAAY/nC,EAAU,OAAO,KAAK,UAClCO,EAAYrW,EAAS,UAK3B,GAJIA,EAAS,iBAAmB,MAAMA,EAAS,sBAAsB,EACrE81D,GAAU,KAAK91D,EAAS,cAAc,EACtC81D,GAAU,aAAa9/C,CAAW,EAClC8/C,GAAU,QAAUjY,EAChB/nC,EAAU,IAAI,iBAAiBggD,EAAS,IAAM,GAAO,OACzDF,GAAiB,KAAK5/C,CAAW,EAAE,OAAO,EAC1C6/C,GAAO,KAAK//C,EAAU,GAAG,EAAE,aAAa8/C,EAAgB,EACxD,IAAMM,EAAiBrY,IAAc,KAAK,MAAM,EAAI,KAAK,MAAM,EAAI,KAAK,MAAM,GAAK,GAC7EsY,EAAmBD,EAAiBA,EACpC35D,EAAO,KAAK,eAAiB,EAAI,EACjC/P,EAAQwT,EAAS,MAEjBC,EADaD,EAAS,WACS,SACrC,GAAIxT,IAAU,KAAM,CAClB,IAAMykB,EAAQ,KAAK,IAAI,EAAGoF,EAAU,KAAK,EACnCE,EAAM,KAAK,IAAI/pB,EAAM,MAAO6pB,EAAU,MAAQA,EAAU,KAAK,EACnE,QAAS1pB,EAAIskB,EAAOrkB,EAAI2pB,EAAM,EAAG5pB,EAAIC,EAAGD,GAAK4P,EAAM,CACjD,IAAMxM,EAAIvD,EAAM,KAAKG,CAAC,EAChBqD,EAAIxD,EAAM,KAAKG,EAAI,CAAC,EACpB+pB,EAAa0/C,GAAkB,KAAMtgD,EAAW+/C,GAAQM,EAAkBpmE,EAAGC,CAAC,EAChF0mB,GACFX,EAAY,KAAKW,CAAU,CAE/B,CACA,GAAI,KAAK,WAAY,CACnB,IAAM3mB,EAAIvD,EAAM,KAAK+pB,EAAM,CAAC,EACtBvmB,EAAIxD,EAAM,KAAKykB,CAAK,EACpByF,EAAa0/C,GAAkB,KAAMtgD,EAAW+/C,GAAQM,EAAkBpmE,EAAGC,CAAC,EAChF0mB,GACFX,EAAY,KAAKW,CAAU,CAE/B,CACF,KAAO,CACL,IAAMzF,EAAQ,KAAK,IAAI,EAAGoF,EAAU,KAAK,EACnCE,EAAM,KAAK,IAAItW,EAAkB,MAAOoW,EAAU,MAAQA,EAAU,KAAK,EAC/E,QAAS1pB,EAAIskB,EAAOrkB,EAAI2pB,EAAM,EAAG5pB,EAAIC,EAAGD,GAAK4P,EAAM,CACjD,IAAMma,EAAa0/C,GAAkB,KAAMtgD,EAAW+/C,GAAQM,EAAkBxpE,EAAGA,EAAI,CAAC,EACpF+pB,GACFX,EAAY,KAAKW,CAAU,CAE/B,CACA,GAAI,KAAK,WAAY,CACnB,IAAMA,EAAa0/C,GAAkB,KAAMtgD,EAAW+/C,GAAQM,EAAkB5/C,EAAM,EAAGtF,CAAK,EAC1FyF,GACFX,EAAY,KAAKW,CAAU,CAE/B,CACF,CACF,CACA,oBAAqB,CAEnB,IAAMnC,EADW,KAAK,SACW,gBAC3BkB,EAAO,OAAO,KAAKlB,CAAe,EACxC,GAAIkB,EAAK,OAAS,EAAG,CACnB,IAAMxD,EAAiBsC,EAAgBkB,EAAK,CAAC,CAAC,EAC9C,GAAIxD,IAAmB,OAAQ,CAC7B,KAAK,sBAAwB,CAAC,EAC9B,KAAK,sBAAwB,CAAC,EAC9B,QAASrkB,EAAI,EAAG8nB,EAAKzD,EAAe,OAAQrkB,EAAI8nB,EAAI9nB,IAAK,CACvD,IAAMiI,EAAOoc,EAAerkB,CAAC,EAAE,MAAQ,OAAOA,CAAC,EAC/C,KAAK,sBAAsB,KAAK,CAAC,EACjC,KAAK,sBAAsBiI,CAAI,EAAIjI,CACrC,CACF,CACF,CACF,CACF,EACA,SAASwoE,GAAkBz2D,EAAQmW,EAAWlT,EAAKyzD,EAAatmE,EAAGC,EAAG,CACpE,IAAMiQ,EAAoBN,EAAO,SAAS,WAAW,SAIrD,GAHA+1D,GAAQ,oBAAoBz1D,EAAmBlQ,CAAC,EAChD4lE,GAAM,oBAAoB11D,EAAmBjQ,CAAC,EAC/B4S,EAAI,oBAAoB8yD,GAASC,GAAOI,GAAsBC,EAAwB,EACxFK,EAAa,OAC1BN,GAAqB,aAAap2D,EAAO,WAAW,EACpD,IAAMgL,EAAWmL,EAAU,IAAI,OAAO,WAAWigD,EAAoB,EACrE,GAAI,EAAAprD,EAAWmL,EAAU,MAAQnL,EAAWmL,EAAU,KACtD,MAAO,CACL,SAAAnL,EAGA,MAAOqrD,GAAyB,MAAM,EAAE,aAAar2D,EAAO,WAAW,EACvE,MAAO5P,EACP,KAAM,KACN,UAAW,KACX,UAAW,KACX,OAAA4P,CACF,CACF,CACA,IAAI22D,GAAyB,IAAItrE,EAC7BurE,GAAuB,IAAIvrE,EAC3B5N,GAAe,cAAcP,EAAK,CACpC,YAAYmjB,EAAUwV,EAAU,CAC9B,MAAMxV,EAAUwV,CAAQ,EACxB,KAAK,eAAiB,GACtB,KAAK,KAAO,cACd,CACA,sBAAuB,CACrB,IAAMxV,EAAW,KAAK,SACtB,GAAIA,EAAS,QAAU,KAAM,CAC3B,IAAMC,EAAoBD,EAAS,WAAW,SACxCi2D,EAAgB,CAAC,EACvB,QAAS,EAAI,EAAGrpE,EAAIqT,EAAkB,MAAO,EAAIrT,EAAG,GAAK,EACvD0pE,GAAO,oBAAoBr2D,EAAmB,CAAC,EAC/Cs2D,GAAK,oBAAoBt2D,EAAmB,EAAI,CAAC,EACjDg2D,EAAc,CAAC,EAAI,IAAM,EAAI,EAAIA,EAAc,EAAI,CAAC,EACpDA,EAAc,EAAI,CAAC,EAAIA,EAAc,CAAC,EAAIK,GAAO,WAAWC,EAAI,EAElEv2D,EAAS,aAAa,eAAgB,IAAI1mB,GAAuB28E,EAAe,CAAC,CAAC,CACpF,MACE,QAAQ,KAAK,uGAAuG,EAEtH,OAAO,IACT,CACF,EACI94E,GAAW,cAAcN,EAAK,CAChC,YAAYmjB,EAAUwV,EAAU,CAC9B,MAAMxV,EAAUwV,CAAQ,EACxB,KAAK,WAAa,GAClB,KAAK,KAAO,UACd,CACF,EACI/yB,GAAiB,cAAcjE,EAAS,CAC1C,YAAY8sB,EAAY,CACtB,MAAM,EACN,KAAK,iBAAmB,GACxB,KAAK,KAAO,iBACZ,KAAK,MAAQ,IAAIj2B,GAAM,QAAQ,EAC/B,KAAK,IAAM,KACX,KAAK,SAAW,KAChB,KAAK,KAAO,EACZ,KAAK,gBAAkB,GACvB,KAAK,IAAM,GACX,KAAK,UAAUi2B,CAAU,CAC3B,CACA,KAAKzS,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,MAAM,KAAKA,EAAO,KAAK,EAC5B,KAAK,IAAMA,EAAO,IAClB,KAAK,SAAWA,EAAO,SACvB,KAAK,KAAOA,EAAO,KACnB,KAAK,gBAAkBA,EAAO,gBAC9B,KAAK,IAAMA,EAAO,IACX,IACT,CACF,EACI29D,GAAiC,IAAI33E,GACrC43E,GAAuB,IAAI5wE,GAC3B6wE,GAA0B,IAAI/uE,GAC9BgvE,GAA8B,IAAI3rE,EAClCxI,GAAS,cAAcvB,EAAS,CAClC,YAAY+e,EAAW,IAAIxrB,GAAkBghC,EAAW,IAAI/yB,GAAkB,CAC5E,MAAM,EACN,KAAK,SAAW,GAChB,KAAK,KAAO,SACZ,KAAK,SAAWud,EAChB,KAAK,SAAWwV,EAChB,KAAK,mBAAmB,CAC1B,CACA,KAAK3c,EAAQyT,EAAW,CACtB,aAAM,KAAKzT,EAAQyT,CAAS,EAC5B,KAAK,SAAW,MAAM,QAAQzT,EAAO,QAAQ,EAAIA,EAAO,SAAS,MAAM,EAAIA,EAAO,SAClF,KAAK,SAAWA,EAAO,SAChB,IACT,CACA,QAAQid,EAAWC,EAAa,CAC9B,IAAM/V,EAAW,KAAK,SAChBgW,EAAc,KAAK,YACnB6nC,EAAY/nC,EAAU,OAAO,OAAO,UACpCO,EAAYrW,EAAS,UAK3B,GAJIA,EAAS,iBAAmB,MAAMA,EAAS,sBAAsB,EACrE02D,GAAQ,KAAK12D,EAAS,cAAc,EACpC02D,GAAQ,aAAa1gD,CAAW,EAChC0gD,GAAQ,QAAU7Y,EACd/nC,EAAU,IAAI,iBAAiB4gD,EAAO,IAAM,GAAO,OACvDF,GAAe,KAAKxgD,CAAW,EAAE,OAAO,EACxCygD,GAAK,KAAK3gD,EAAU,GAAG,EAAE,aAAa0gD,EAAc,EACpD,IAAMN,EAAiBrY,IAAc,KAAK,MAAM,EAAI,KAAK,MAAM,EAAI,KAAK,MAAM,GAAK,GAC7EsY,EAAmBD,EAAiBA,EACpC1pE,EAAQwT,EAAS,MAEjBC,EADaD,EAAS,WACS,SACrC,GAAIxT,IAAU,KAAM,CAClB,IAAMykB,EAAQ,KAAK,IAAI,EAAGoF,EAAU,KAAK,EACnCE,EAAM,KAAK,IAAI/pB,EAAM,MAAO6pB,EAAU,MAAQA,EAAU,KAAK,EACnE,QAAS1pB,EAAIskB,EAAO1W,EAAKgc,EAAK5pB,EAAI4N,EAAI5N,IAAK,CACzC,IAAMoD,EAAIvD,EAAM,KAAKG,CAAC,EACtBgqE,GAAY,oBAAoB12D,EAAmBlQ,CAAC,EACpD6mE,GAAUD,GAAa5mE,EAAGomE,EAAkBngD,EAAaF,EAAWC,EAAa,IAAI,CACvF,CACF,KAAO,CACL,IAAM9E,EAAQ,KAAK,IAAI,EAAGoF,EAAU,KAAK,EACnCE,EAAM,KAAK,IAAItW,EAAkB,MAAOoW,EAAU,MAAQA,EAAU,KAAK,EAC/E,QAAS1pB,EAAIskB,EAAOrkB,EAAI2pB,EAAK5pB,EAAIC,EAAGD,IAClCgqE,GAAY,oBAAoB12D,EAAmBtT,CAAC,EACpDiqE,GAAUD,GAAahqE,EAAGwpE,EAAkBngD,EAAaF,EAAWC,EAAa,IAAI,CAEzF,CACF,CACA,oBAAqB,CAEnB,IAAMxB,EADW,KAAK,SACW,gBAC3BkB,EAAO,OAAO,KAAKlB,CAAe,EACxC,GAAIkB,EAAK,OAAS,EAAG,CACnB,IAAMxD,EAAiBsC,EAAgBkB,EAAK,CAAC,CAAC,EAC9C,GAAIxD,IAAmB,OAAQ,CAC7B,KAAK,sBAAwB,CAAC,EAC9B,KAAK,sBAAwB,CAAC,EAC9B,QAASrkB,EAAI,EAAG8nB,EAAKzD,EAAe,OAAQrkB,EAAI8nB,EAAI9nB,IAAK,CACvD,IAAMiI,EAAOoc,EAAerkB,CAAC,EAAE,MAAQ,OAAOA,CAAC,EAC/C,KAAK,sBAAsB,KAAK,CAAC,EACjC,KAAK,sBAAsBiI,CAAI,EAAIjI,CACrC,CACF,CACF,CACF,CACF,EACA,SAASgpE,GAAU92D,EAAOtT,EAAO2pE,EAAkBngD,EAAaF,EAAWC,EAAapW,EAAQ,CAC9F,IAAMk3D,EAAqBJ,GAAK,kBAAkB32D,CAAK,EACvD,GAAI+2D,EAAqBV,EAAkB,CACzC,IAAMW,EAAiB,IAAI9rE,EAC3ByrE,GAAK,oBAAoB32D,EAAOg3D,CAAc,EAC9CA,EAAe,aAAa9gD,CAAW,EACvC,IAAMrL,EAAWmL,EAAU,IAAI,OAAO,WAAWghD,CAAc,EAC/D,GAAInsD,EAAWmL,EAAU,MAAQnL,EAAWmL,EAAU,IAAK,OAC3DC,EAAY,KAAK,CACf,SAAApL,EACA,cAAe,KAAK,KAAKksD,CAAkB,EAC3C,MAAOC,EACP,MAAAtqE,EACA,KAAM,KACN,UAAW,KACX,UAAW,KACX,OAAAmT,CACF,CAAC,CACH,CACF,CACA,IAAIxU,GAAe,cAAc/B,EAAQ,CACvC,YAAY2tE,EAAOz+D,EAASC,EAAOC,EAAOC,EAAWC,EAAWC,EAAQvM,EAAMwM,EAAY,CACxF,MAAMm+D,EAAOz+D,EAASC,EAAOC,EAAOC,EAAWC,EAAWC,EAAQvM,EAAMwM,CAAU,EAClF,KAAK,eAAiB,GACtB,KAAK,UAAYF,IAAc,OAASA,EAAYpb,GACpD,KAAK,UAAYmb,IAAc,OAASA,EAAYnb,GACpD,KAAK,gBAAkB,GACvB,IAAM05B,EAAQ,KACd,SAASggD,GAAc,CACrBhgD,EAAM,YAAc,GACpB+/C,EAAM,0BAA0BC,CAAW,CAC7C,CACI,8BAA+BD,GACjCA,EAAM,0BAA0BC,CAAW,CAE/C,CACA,OAAQ,CACN,OAAO,IAAI,KAAK,YAAY,KAAK,KAAK,EAAE,KAAK,IAAI,CACnD,CACA,QAAS,CACP,IAAMD,EAAQ,KAAK,MACW,8BAA+BA,IAC/B,IAASA,EAAM,YAAcA,EAAM,oBAC/D,KAAK,YAAc,GAEvB,CACF,EACIr9E,GAAqB,cAAc0P,EAAQ,CAC7C,YAAY6Q,EAAOC,EAAQ,CACzB,MAAM,CAAE,MAAAD,EAAO,OAAAC,CAAO,CAAC,EACvB,KAAK,qBAAuB,GAC5B,KAAK,UAAYna,GACjB,KAAK,UAAYA,GACjB,KAAK,gBAAkB,GACvB,KAAK,YAAc,EACrB,CACF,EACIrK,GAAoB,cAAc0T,EAAQ,CAC5C,YAAYkxD,EAASrgD,EAAOC,EAAQvB,EAAQvM,EAAMkM,EAASC,EAAOC,EAAOC,EAAWC,EAAWE,EAAY3B,EAAY,CACrH,MAAM,KAAMqB,EAASC,EAAOC,EAAOC,EAAWC,EAAWC,EAAQvM,EAAMwM,EAAY3B,CAAU,EAC7F,KAAK,oBAAsB,GAC3B,KAAK,MAAQ,CAAE,MAAAgD,EAAO,OAAAC,CAAO,EAC7B,KAAK,QAAUogD,EACf,KAAK,MAAQ,GACb,KAAK,gBAAkB,EACzB,CACF,EACI9kE,GAAyB,cAAcE,EAAkB,CAC3D,YAAY4kE,EAASrgD,EAAOC,EAAQI,EAAO3B,EAAQvM,EAAM,CACvD,MAAMkuD,EAASrgD,EAAOC,EAAQvB,EAAQvM,CAAI,EAC1C,KAAK,yBAA2B,GAChC,KAAK,MAAM,MAAQkO,EACnB,KAAK,MAAQnlB,GACb,KAAK,aAA+B,IAAI,GAC1C,CACA,eAAeqlB,EAAY,CACzB,KAAK,aAAa,IAAIA,CAAU,CAClC,CACA,mBAAoB,CAClB,KAAK,aAAa,MAAM,CAC1B,CACF,EACI/kB,GAAwB,cAAcC,EAAkB,CAC1D,YAAYq2B,EAAQpT,EAAQvM,EAAM,CAChC,MAAM,OAAQ2f,EAAO,CAAC,EAAE,MAAOA,EAAO,CAAC,EAAE,OAAQpT,EAAQvM,EAAMnW,EAAqB,EACpF,KAAK,wBAA0B,GAC/B,KAAK,cAAgB,GACrB,KAAK,MAAQ81B,CACf,CACF,EACIj3B,GAAgB,cAAcsU,EAAQ,CACxC,YAAY0M,EAAQwC,EAASC,EAAOC,EAAOC,EAAWC,EAAWC,EAAQvM,EAAMwM,EAAY,CACzF,MAAM9C,EAAQwC,EAASC,EAAOC,EAAOC,EAAWC,EAAWC,EAAQvM,EAAMwM,CAAU,EACnF,KAAK,gBAAkB,GACvB,KAAK,YAAc,EACrB,CACF,EACI/hB,GAAQ,KAAM,CAChB,aAAc,CACZ,KAAK,KAAO,QACZ,KAAK,mBAAqB,GAC5B,CAGA,UAAW,CACT,eAAQ,KAAK,2CAA2C,EACjD,IACT,CAGA,WAAWyoB,EAAG23D,EAAgB,CAC5B,IAAM3oE,EAAI,KAAK,eAAegR,CAAC,EAC/B,OAAO,KAAK,SAAShR,EAAG2oE,CAAc,CACxC,CAEA,UAAUC,EAAY,EAAG,CACvB,IAAM13D,EAAS,CAAC,EAChB,QAASrL,EAAI,EAAGA,GAAK+iE,EAAW/iE,IAC9BqL,EAAO,KAAK,KAAK,SAASrL,EAAI+iE,CAAS,CAAC,EAE1C,OAAO13D,CACT,CAEA,gBAAgB03D,EAAY,EAAG,CAC7B,IAAM13D,EAAS,CAAC,EAChB,QAASrL,EAAI,EAAGA,GAAK+iE,EAAW/iE,IAC9BqL,EAAO,KAAK,KAAK,WAAWrL,EAAI+iE,CAAS,CAAC,EAE5C,OAAO13D,CACT,CAEA,WAAY,CACV,IAAM23D,EAAU,KAAK,WAAW,EAChC,OAAOA,EAAQA,EAAQ,OAAS,CAAC,CACnC,CAEA,WAAWD,EAAY,KAAK,mBAAoB,CAC9C,GAAI,KAAK,iBAAmB,KAAK,gBAAgB,SAAWA,EAAY,GAAK,CAAC,KAAK,YACjF,OAAO,KAAK,gBAEd,KAAK,YAAc,GACnB,IAAM/qD,EAAQ,CAAC,EACXirD,EAASC,EAAO,KAAK,SAAS,CAAC,EAC/BljC,EAAM,EACVhoB,EAAM,KAAK,CAAC,EACZ,QAASlD,EAAI,EAAGA,GAAKiuD,EAAWjuD,IAC9BmuD,EAAU,KAAK,SAASnuD,EAAIiuD,CAAS,EACrC/iC,GAAOijC,EAAQ,WAAWC,CAAI,EAC9BlrD,EAAM,KAAKgoB,CAAG,EACdkjC,EAAOD,EAET,YAAK,gBAAkBjrD,EAChBA,CACT,CACA,kBAAmB,CACjB,KAAK,YAAc,GACnB,KAAK,WAAW,CAClB,CAEA,eAAe7M,EAAGqL,EAAU,CAC1B,IAAM2sD,EAAa,KAAK,WAAW,EAC/B,EAAI,EACF/8D,EAAK+8D,EAAW,OAClBC,EACA5sD,EACF4sD,EAAkB5sD,EAElB4sD,EAAkBj4D,EAAIg4D,EAAW/8D,EAAK,CAAC,EAEzC,IAAIxL,EAAM,EAAGC,EAAOuL,EAAK,EAAGi9D,EAC5B,KAAOzoE,GAAOC,GAGZ,GAFA,EAAI,KAAK,MAAMD,GAAOC,EAAOD,GAAO,CAAC,EACrCyoE,EAAaF,EAAW,CAAC,EAAIC,EACzBC,EAAa,EACfzoE,EAAM,EAAI,UACDyoE,EAAa,EACtBxoE,EAAO,EAAI,MACN,CACLA,EAAO,EACP,KACF,CAGF,GADA,EAAIA,EACAsoE,EAAW,CAAC,IAAMC,EACpB,OAAO,GAAKh9D,EAAK,GAEnB,IAAMk9D,EAAeH,EAAW,CAAC,EAE3BI,EADcJ,EAAW,EAAI,CAAC,EACAG,EAC9BE,GAAmBJ,EAAkBE,GAAgBC,EAE3D,OADW,EAAIC,IAAoBp9D,EAAK,EAE1C,CAKA,WAAWjM,EAAG2oE,EAAgB,CAE5B,IAAItzD,EAAKrV,EAAI,KACTspE,EAAKtpE,EAAI,KACTqV,EAAK,IAAGA,EAAK,GACbi0D,EAAK,IAAGA,EAAK,GACjB,IAAMC,EAAM,KAAK,SAASl0D,CAAE,EACtBm0D,EAAM,KAAK,SAASF,CAAE,EACtB7lD,EAAUklD,IAAmBY,EAAI,UAAY,IAAI9sE,EAAY,IAAIC,GACvE,OAAA+mB,EAAQ,KAAK+lD,CAAG,EAAE,IAAID,CAAG,EAAE,UAAU,EAC9B9lD,CACT,CACA,aAAazS,EAAG23D,EAAgB,CAC9B,IAAM3oE,EAAI,KAAK,eAAegR,CAAC,EAC/B,OAAO,KAAK,WAAWhR,EAAG2oE,CAAc,CAC1C,CACA,oBAAoBc,EAAUC,EAAQ,CACpC,IAAMh5D,EAAS,IAAIhU,EACbitE,EAAW,CAAC,EACZjkD,EAAU,CAAC,EACXkkD,EAAY,CAAC,EACbC,EAAM,IAAIntE,EACVotE,EAAM,IAAIv5E,GAChB,QAAS8N,EAAI,EAAGA,GAAKorE,EAAUprE,IAAK,CAClC,IAAM2S,EAAI3S,EAAIorE,EACdE,EAAStrE,CAAC,EAAI,KAAK,aAAa2S,EAAG,IAAItU,CAAS,CAClD,CACAgpB,EAAQ,CAAC,EAAI,IAAIhpB,EACjBktE,EAAU,CAAC,EAAI,IAAIltE,EACnB,IAAIwC,EAAM,OAAO,UACXuH,EAAK,KAAK,IAAIkjE,EAAS,CAAC,EAAE,CAAC,EAC3BjjE,EAAK,KAAK,IAAIijE,EAAS,CAAC,EAAE,CAAC,EAC3B35D,EAAK,KAAK,IAAI25D,EAAS,CAAC,EAAE,CAAC,EAC7BljE,GAAMvH,IACRA,EAAMuH,EACNiK,EAAO,IAAI,EAAG,EAAG,CAAC,GAEhBhK,GAAMxH,IACRA,EAAMwH,EACNgK,EAAO,IAAI,EAAG,EAAG,CAAC,GAEhBV,GAAM9Q,GACRwR,EAAO,IAAI,EAAG,EAAG,CAAC,EAEpBm5D,EAAI,aAAaF,EAAS,CAAC,EAAGj5D,CAAM,EAAE,UAAU,EAChDgV,EAAQ,CAAC,EAAE,aAAaikD,EAAS,CAAC,EAAGE,CAAG,EACxCD,EAAU,CAAC,EAAE,aAAaD,EAAS,CAAC,EAAGjkD,EAAQ,CAAC,CAAC,EACjD,QAASrnB,EAAI,EAAGA,GAAKorE,EAAUprE,IAAK,CAIlC,GAHAqnB,EAAQrnB,CAAC,EAAIqnB,EAAQrnB,EAAI,CAAC,EAAE,MAAM,EAClCurE,EAAUvrE,CAAC,EAAIurE,EAAUvrE,EAAI,CAAC,EAAE,MAAM,EACtCwrE,EAAI,aAAaF,EAAStrE,EAAI,CAAC,EAAGsrE,EAAStrE,CAAC,CAAC,EACzCwrE,EAAI,OAAO,EAAI,OAAO,QAAS,CACjCA,EAAI,UAAU,EACd,IAAM7mE,EAAQ,KAAK,KAAKhE,GAAM2qE,EAAStrE,EAAI,CAAC,EAAE,IAAIsrE,EAAStrE,CAAC,CAAC,EAAG,GAAI,CAAC,CAAC,EACtEqnB,EAAQrnB,CAAC,EAAE,aAAayrE,EAAI,iBAAiBD,EAAK7mE,CAAK,CAAC,CAC1D,CACA4mE,EAAUvrE,CAAC,EAAE,aAAasrE,EAAStrE,CAAC,EAAGqnB,EAAQrnB,CAAC,CAAC,CACnD,CACA,GAAIqrE,IAAW,GAAM,CACnB,IAAI1mE,EAAQ,KAAK,KAAKhE,GAAM0mB,EAAQ,CAAC,EAAE,IAAIA,EAAQ+jD,CAAQ,CAAC,EAAG,GAAI,CAAC,CAAC,EACrEzmE,GAASymE,EACLE,EAAS,CAAC,EAAE,IAAIE,EAAI,aAAankD,EAAQ,CAAC,EAAGA,EAAQ+jD,CAAQ,CAAC,CAAC,EAAI,IACrEzmE,EAAQ,CAACA,GAEX,QAAS3E,EAAI,EAAGA,GAAKorE,EAAUprE,IAC7BqnB,EAAQrnB,CAAC,EAAE,aAAayrE,EAAI,iBAAiBH,EAAStrE,CAAC,EAAG2E,EAAQ3E,CAAC,CAAC,EACpEurE,EAAUvrE,CAAC,EAAE,aAAasrE,EAAStrE,CAAC,EAAGqnB,EAAQrnB,CAAC,CAAC,CAErD,CACA,MAAO,CACL,SAAAsrE,EACA,QAAAjkD,EACA,UAAAkkD,CACF,CACF,CACA,OAAQ,CACN,OAAO,IAAI,KAAK,YAAY,EAAE,KAAK,IAAI,CACzC,CACA,KAAKr/D,EAAQ,CACX,YAAK,mBAAqBA,EAAO,mBAC1B,IACT,CACA,QAAS,CACP,IAAMhB,EAAO,CACX,SAAU,CACR,QAAS,IACT,KAAM,QACN,UAAW,cACb,CACF,EACA,OAAAA,EAAK,mBAAqB,KAAK,mBAC/BA,EAAK,KAAO,KAAK,KACVA,CACT,CACA,SAASq5D,EAAM,CACb,YAAK,mBAAqBA,EAAK,mBACxB,IACT,CACF,EACIv4E,GAAe,cAAc9B,EAAM,CACrC,YAAYwhF,EAAK,EAAGC,EAAK,EAAGC,EAAU,EAAGC,EAAU,EAAGC,EAAc,EAAGC,EAAY,KAAK,GAAK,EAAGC,EAAa,GAAOC,EAAY,EAAG,CACjI,MAAM,EACN,KAAK,eAAiB,GACtB,KAAK,KAAO,eACZ,KAAK,GAAKP,EACV,KAAK,GAAKC,EACV,KAAK,QAAUC,EACf,KAAK,QAAUC,EACf,KAAK,YAAcC,EACnB,KAAK,UAAYC,EACjB,KAAK,WAAaC,EAClB,KAAK,UAAYC,CACnB,CACA,SAAStqE,EAAG2oE,EAAiB,IAAIlsE,EAAW,CAC1C,IAAM+U,EAAQm3D,EACR4B,EAAQ,KAAK,GAAK,EACpBC,EAAa,KAAK,UAAY,KAAK,YACjCC,EAAa,KAAK,IAAID,CAAU,EAAI,OAAO,QACjD,KAAOA,EAAa,GAAGA,GAAcD,EACrC,KAAOC,EAAaD,GAAOC,GAAcD,EACrCC,EAAa,OAAO,UAClBC,EACFD,EAAa,EAEbA,EAAaD,GAGb,KAAK,aAAe,IAAQ,CAACE,IAC3BD,IAAeD,EACjBC,EAAa,CAACD,EAEdC,EAAaA,EAAaD,GAG9B,IAAM9mE,EAAQ,KAAK,YAAczD,EAAIwqE,EACjChrE,EAAI,KAAK,GAAK,KAAK,QAAU,KAAK,IAAIiE,CAAK,EAC3C3D,EAAI,KAAK,GAAK,KAAK,QAAU,KAAK,IAAI2D,CAAK,EAC/C,GAAI,KAAK,YAAc,EAAG,CACxB,IAAM5B,EAAM,KAAK,IAAI,KAAK,SAAS,EAC7BC,EAAM,KAAK,IAAI,KAAK,SAAS,EAC7B2E,EAAKjH,EAAI,KAAK,GACdkH,EAAK5G,EAAI,KAAK,GACpBN,EAAIiH,EAAK5E,EAAM6E,EAAK5E,EAAM,KAAK,GAC/BhC,EAAI2G,EAAK3E,EAAM4E,EAAK7E,EAAM,KAAK,EACjC,CACA,OAAO2P,EAAM,IAAIhS,EAAGM,CAAC,CACvB,CACA,KAAKyK,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,GAAKA,EAAO,GACjB,KAAK,GAAKA,EAAO,GACjB,KAAK,QAAUA,EAAO,QACtB,KAAK,QAAUA,EAAO,QACtB,KAAK,YAAcA,EAAO,YAC1B,KAAK,UAAYA,EAAO,UACxB,KAAK,WAAaA,EAAO,WACzB,KAAK,UAAYA,EAAO,UACjB,IACT,CACA,QAAS,CACP,IAAMhB,EAAO,MAAM,OAAO,EAC1B,OAAAA,EAAK,GAAK,KAAK,GACfA,EAAK,GAAK,KAAK,GACfA,EAAK,QAAU,KAAK,QACpBA,EAAK,QAAU,KAAK,QACpBA,EAAK,YAAc,KAAK,YACxBA,EAAK,UAAY,KAAK,UACtBA,EAAK,WAAa,KAAK,WACvBA,EAAK,UAAY,KAAK,UACfA,CACT,CACA,SAASq5D,EAAM,CACb,aAAM,SAASA,CAAI,EACnB,KAAK,GAAKA,EAAK,GACf,KAAK,GAAKA,EAAK,GACf,KAAK,QAAUA,EAAK,QACpB,KAAK,QAAUA,EAAK,QACpB,KAAK,YAAcA,EAAK,YACxB,KAAK,UAAYA,EAAK,UACtB,KAAK,WAAaA,EAAK,WACvB,KAAK,UAAYA,EAAK,UACf,IACT,CACF,EACIh+E,GAAW,cAAcyF,EAAa,CACxC,YAAY0/E,EAAIC,EAAIU,EAASP,EAAaC,EAAWC,EAAY,CAC/D,MAAMN,EAAIC,EAAIU,EAASA,EAASP,EAAaC,EAAWC,CAAU,EAClE,KAAK,WAAa,GAClB,KAAK,KAAO,UACd,CACF,EACA,SAASM,IAAY,CACnB,IAAIC,EAAK,EAAGp9D,EAAK,EAAGzL,EAAK,EAAG0L,EAAK,EACjC,SAASosC,EAAKptC,EAAII,EAAIuI,EAAIC,EAAI,CAC5Bu1D,EAAKn+D,EACLe,EAAK4H,EACLrT,EAAK,GAAK0K,EAAK,EAAII,EAAK,EAAIuI,EAAKC,EACjC5H,EAAK,EAAIhB,EAAK,EAAII,EAAKuI,EAAKC,CAC9B,CACA,MAAO,CACL,eAAgB,SAAS5I,EAAII,EAAI6M,EAAImxD,EAAIC,EAAS,CAChDjxB,EAAKhtC,EAAI6M,EAAIoxD,GAAWpxD,EAAKjN,GAAKq+D,GAAWD,EAAKh+D,EAAG,CACvD,EACA,yBAA0B,SAASJ,EAAII,EAAI6M,EAAImxD,EAAIE,EAAKC,EAAKC,EAAK,CAChE,IAAI51D,GAAMxI,EAAKJ,GAAMs+D,GAAOrxD,EAAKjN,IAAOs+D,EAAMC,IAAQtxD,EAAK7M,GAAMm+D,EAC7D1B,GAAM5vD,EAAK7M,GAAMm+D,GAAOH,EAAKh+D,IAAOm+D,EAAMC,IAAQJ,EAAKnxD,GAAMuxD,EACjE51D,GAAM21D,EACN1B,GAAM0B,EACNnxB,EAAKhtC,EAAI6M,EAAIrE,EAAIi0D,CAAE,CACrB,EACA,KAAM,SAAStpE,EAAG,CAChB,IAAMspE,EAAKtpE,EAAIA,EACTkrE,EAAK5B,EAAKtpE,EAChB,OAAO4qE,EAAKp9D,EAAKxN,EAAI+B,EAAKunE,EAAK77D,EAAKy9D,CACtC,CACF,CACF,CACA,IAAIC,GAAsB,IAAIzuE,EAC1B0uE,GAAqB,IAAIT,GACzBU,GAAqB,IAAIV,GACzBW,GAAqB,IAAIX,GACzBjkF,GAAmB,cAAc6B,EAAM,CACzC,YAAY2oB,EAAS,CAAC,EAAGw4D,EAAS,GAAO6B,EAAY,cAAeT,EAAU,GAAK,CACjF,MAAM,EACN,KAAK,mBAAqB,GAC1B,KAAK,KAAO,mBACZ,KAAK,OAAS55D,EACd,KAAK,OAASw4D,EACd,KAAK,UAAY6B,EACjB,KAAK,QAAUT,CACjB,CACA,SAAS9qE,EAAG2oE,EAAiB,IAAIjsE,EAAW,CAC1C,IAAM8U,EAAQm3D,EACRz3D,EAAS,KAAK,OACd5S,EAAI4S,EAAO,OACXyJ,GAAKrc,GAAK,KAAK,OAAS,EAAI,IAAM0B,EACpCwrE,EAAW,KAAK,MAAM7wD,CAAC,EACvBmrB,EAASnrB,EAAI6wD,EACb,KAAK,OACPA,GAAYA,EAAW,EAAI,GAAK,KAAK,MAAM,KAAK,IAAIA,CAAQ,EAAIltE,CAAC,EAAI,GAAKA,EACjEwnC,IAAW,GAAK0lC,IAAaltE,EAAI,IAC1CktE,EAAWltE,EAAI,EACfwnC,EAAS,GAEX,IAAI7yB,EAAIuM,EACJ,KAAK,QAAUgsD,EAAW,EAC5Bv4D,EAAK/B,GAAQs6D,EAAW,GAAKltE,CAAC,GAE9B6sE,GAAI,WAAWj6D,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,EAAE,IAAIA,EAAO,CAAC,CAAC,EAClD+B,EAAKk4D,IAEP,IAAMj4D,EAAKhC,EAAOs6D,EAAWltE,CAAC,EACxB6U,EAAKjC,GAAQs6D,EAAW,GAAKltE,CAAC,EAOpC,GANI,KAAK,QAAUktE,EAAW,EAAIltE,EAChCkhB,EAAKtO,GAAQs6D,EAAW,GAAKltE,CAAC,GAE9B6sE,GAAI,WAAWj6D,EAAO5S,EAAI,CAAC,EAAG4S,EAAO5S,EAAI,CAAC,CAAC,EAAE,IAAI4S,EAAO5S,EAAI,CAAC,CAAC,EAC9DkhB,EAAK2rD,IAEH,KAAK,YAAc,eAAiB,KAAK,YAAc,UAAW,CACpE,IAAMM,EAAM,KAAK,YAAc,UAAY,GAAM,IAC7CV,EAAM,KAAK,IAAI93D,EAAG,kBAAkBC,CAAE,EAAGu4D,CAAG,EAC5CT,EAAM,KAAK,IAAI93D,EAAG,kBAAkBC,CAAE,EAAGs4D,CAAG,EAC5CR,EAAM,KAAK,IAAI93D,EAAG,kBAAkBqM,CAAE,EAAGisD,CAAG,EAC5CT,EAAM,OAAMA,EAAM,GAClBD,EAAM,OAAMA,EAAMC,GAClBC,EAAM,OAAMA,EAAMD,GACtBI,GAAG,yBAAyBn4D,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGqM,EAAG,EAAGurD,EAAKC,EAAKC,CAAG,EACjEI,GAAG,yBAAyBp4D,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGqM,EAAG,EAAGurD,EAAKC,EAAKC,CAAG,EACjEK,GAAG,yBAAyBr4D,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGqM,EAAG,EAAGurD,EAAKC,EAAKC,CAAG,CACnE,MAAW,KAAK,YAAc,eAC5BG,GAAG,eAAen4D,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGqM,EAAG,EAAG,KAAK,OAAO,EACtD6rD,GAAG,eAAep4D,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGqM,EAAG,EAAG,KAAK,OAAO,EACtD8rD,GAAG,eAAer4D,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGqM,EAAG,EAAG,KAAK,OAAO,GAExD,OAAAhO,EAAM,IACJ45D,GAAG,KAAKtlC,CAAM,EACdulC,GAAG,KAAKvlC,CAAM,EACdwlC,GAAG,KAAKxlC,CAAM,CAChB,EACOt0B,CACT,CACA,KAAKjH,EAAQ,CACX,MAAM,KAAKA,CAAM,EACjB,KAAK,OAAS,CAAC,EACf,QAASlM,EAAI,EAAGC,EAAIiM,EAAO,OAAO,OAAQlM,EAAIC,EAAGD,IAAK,CACpD,IAAMmT,EAAQjH,EAAO,OAAOlM,CAAC,EAC7B,KAAK,OAAO,KAAKmT,EAAM,MAAM,CAAC,CAChC,CACA,YAAK,OAASjH,EAAO,OACrB,KAAK,UAAYA,EAAO,UACxB,KAAK,QAAUA,EAAO,QACf,IACT,CACA,QAAS,CACP,IAAMhB,EAAO,MAAM,OAAO,EAC1BA,EAAK,OAAS,CAAC,EACf,QAASlL,EAAI,EAAGC,EAAI,KAAK,OAAO,OAAQD,EAAIC,EAAGD,IAAK,CAClD,IAAMmT,EAAQ,KAAK,OAAOnT,CAAC,EAC3BkL,EAAK,OAAO,KAAKiI,EAAM,QAAQ,CAAC,CAClC,CACA,OAAAjI,EAAK,OAAS,KAAK,OACnBA,EAAK,UAAY,KAAK,UACtBA,EAAK,QAAU,KAAK,QACbA,CACT,CACA,SAASq5D,EAAM,CACb,MAAM,SAASA,CAAI,EACnB,KAAK,OAAS,CAAC,EACf,QAASvkE,EAAI,EAAGC,EAAIskE,EAAK,OAAO,OAAQvkE,EAAIC,EAAGD,IAAK,CAClD,IAAMmT,EAAQoxD,EAAK,OAAOvkE,CAAC,EAC3B,KAAK,OAAO,KAAK,IAAI3B,EAAQ,EAAE,UAAU8U,CAAK,CAAC,CACjD,CACA,YAAK,OAASoxD,EAAK,OACnB,KAAK,UAAYA,EAAK,UACtB,KAAK,QAAUA,EAAK,QACb,IACT,CACF,EACA,SAAS8I,GAAW1rE,EAAGiT,EAAIC,EAAIC,EAAIqM,EAAI,CACrC,IAAM1M,GAAMK,EAAKF,GAAM,GACjB7P,GAAMoc,EAAKtM,GAAM,GACjBo2D,EAAKtpE,EAAIA,EACTkrE,EAAKlrE,EAAIspE,EACf,OAAQ,EAAIp2D,EAAK,EAAIC,EAAKL,EAAK1P,GAAM8nE,GAAM,GAAKh4D,EAAK,EAAIC,EAAK,EAAIL,EAAK1P,GAAMkmE,EAAKx2D,EAAK9S,EAAIkT,CAC7F,CACA,SAASy4D,GAAkB3rE,EAAG2a,EAAG,CAC/B,IAAM6kC,EAAI,EAAIx/C,EACd,OAAOw/C,EAAIA,EAAI7kC,CACjB,CACA,SAASixD,GAAkB5rE,EAAG2a,EAAG,CAC/B,MAAO,IAAK,EAAI3a,GAAKA,EAAI2a,CAC3B,CACA,SAASkxD,GAAkB7rE,EAAG2a,EAAG,CAC/B,OAAO3a,EAAIA,EAAI2a,CACjB,CACA,SAASmxD,GAAgB9rE,EAAGiT,EAAIC,EAAIC,EAAI,CACtC,OAAOw4D,GAAkB3rE,EAAGiT,CAAE,EAAI24D,GAAkB5rE,EAAGkT,CAAE,EAAI24D,GAAkB7rE,EAAGmT,CAAE,CACtF,CACA,SAAS44D,GAAc/rE,EAAG2a,EAAG,CAC3B,IAAM6kC,EAAI,EAAIx/C,EACd,OAAOw/C,EAAIA,EAAIA,EAAI7kC,CACrB,CACA,SAASqxD,GAAchsE,EAAG2a,EAAG,CAC3B,IAAM6kC,EAAI,EAAIx/C,EACd,MAAO,GAAIw/C,EAAIA,EAAIx/C,EAAI2a,CACzB,CACA,SAASsxD,GAAcjsE,EAAG2a,EAAG,CAC3B,MAAO,IAAK,EAAI3a,GAAKA,EAAIA,EAAI2a,CAC/B,CACA,SAASuxD,GAAclsE,EAAG2a,EAAG,CAC3B,OAAO3a,EAAIA,EAAIA,EAAI2a,CACrB,CACA,SAASwxD,GAAYnsE,EAAGiT,EAAIC,EAAIC,EAAIqM,EAAI,CACtC,OAAOusD,GAAc/rE,EAAGiT,CAAE,EAAI+4D,GAAchsE,EAAGkT,CAAE,EAAI+4D,GAAcjsE,EAAGmT,CAAE,EAAI+4D,GAAclsE,EAAGwf,CAAE,CACjG,CACA,IAAIx3B,GAAmB,cAAcO,EAAM,CACzC,YAAYuqB,EAAK,IAAIrW,EAAW2G,EAAK,IAAI3G,EAAW4G,EAAK,IAAI5G,EAAWgjB,EAAK,IAAIhjB,EAAW,CAC1F,MAAM,EACN,KAAK,mBAAqB,GAC1B,KAAK,KAAO,mBACZ,KAAK,GAAKqW,EACV,KAAK,GAAK1P,EACV,KAAK,GAAKC,EACV,KAAK,GAAKoc,CACZ,CACA,SAASzf,EAAG2oE,EAAiB,IAAIlsE,EAAW,CAC1C,IAAM+U,EAAQm3D,EACR71D,EAAK,KAAK,GAAI1P,EAAK,KAAK,GAAIC,EAAK,KAAK,GAAIoc,EAAK,KAAK,GAC1D,OAAAjO,EAAM,IACJ26D,GAAYnsE,EAAG8S,EAAG,EAAG1P,EAAG,EAAGC,EAAG,EAAGoc,EAAG,CAAC,EACrC0sD,GAAYnsE,EAAG8S,EAAG,EAAG1P,EAAG,EAAGC,EAAG,EAAGoc,EAAG,CAAC,CACvC,EACOjO,CACT,CACA,KAAKjH,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,GAAG,KAAKA,EAAO,EAAE,EACtB,KAAK,GAAG,KAAKA,EAAO,EAAE,EACtB,KAAK,GAAG,KAAKA,EAAO,EAAE,EACtB,KAAK,GAAG,KAAKA,EAAO,EAAE,EACf,IACT,CACA,QAAS,CACP,IAAMhB,EAAO,MAAM,OAAO,EAC1B,OAAAA,EAAK,GAAK,KAAK,GAAG,QAAQ,EAC1BA,EAAK,GAAK,KAAK,GAAG,QAAQ,EAC1BA,EAAK,GAAK,KAAK,GAAG,QAAQ,EAC1BA,EAAK,GAAK,KAAK,GAAG,QAAQ,EACnBA,CACT,CACA,SAASq5D,EAAM,CACb,aAAM,SAASA,CAAI,EACnB,KAAK,GAAG,UAAUA,EAAK,EAAE,EACzB,KAAK,GAAG,UAAUA,EAAK,EAAE,EACzB,KAAK,GAAG,UAAUA,EAAK,EAAE,EACzB,KAAK,GAAG,UAAUA,EAAK,EAAE,EAClB,IACT,CACF,EACI36E,GAAoB,cAAcM,EAAM,CAC1C,YAAYuqB,EAAK,IAAIpW,EAAW0G,EAAK,IAAI1G,EAAW2G,EAAK,IAAI3G,EAAW+iB,EAAK,IAAI/iB,EAAW,CAC1F,MAAM,EACN,KAAK,oBAAsB,GAC3B,KAAK,KAAO,oBACZ,KAAK,GAAKoW,EACV,KAAK,GAAK1P,EACV,KAAK,GAAKC,EACV,KAAK,GAAKoc,CACZ,CACA,SAASzf,EAAG2oE,EAAiB,IAAIjsE,EAAW,CAC1C,IAAM8U,EAAQm3D,EACR71D,EAAK,KAAK,GAAI1P,EAAK,KAAK,GAAIC,EAAK,KAAK,GAAIoc,EAAK,KAAK,GAC1D,OAAAjO,EAAM,IACJ26D,GAAYnsE,EAAG8S,EAAG,EAAG1P,EAAG,EAAGC,EAAG,EAAGoc,EAAG,CAAC,EACrC0sD,GAAYnsE,EAAG8S,EAAG,EAAG1P,EAAG,EAAGC,EAAG,EAAGoc,EAAG,CAAC,EACrC0sD,GAAYnsE,EAAG8S,EAAG,EAAG1P,EAAG,EAAGC,EAAG,EAAGoc,EAAG,CAAC,CACvC,EACOjO,CACT,CACA,KAAKjH,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,GAAG,KAAKA,EAAO,EAAE,EACtB,KAAK,GAAG,KAAKA,EAAO,EAAE,EACtB,KAAK,GAAG,KAAKA,EAAO,EAAE,EACtB,KAAK,GAAG,KAAKA,EAAO,EAAE,EACf,IACT,CACA,QAAS,CACP,IAAMhB,EAAO,MAAM,OAAO,EAC1B,OAAAA,EAAK,GAAK,KAAK,GAAG,QAAQ,EAC1BA,EAAK,GAAK,KAAK,GAAG,QAAQ,EAC1BA,EAAK,GAAK,KAAK,GAAG,QAAQ,EAC1BA,EAAK,GAAK,KAAK,GAAG,QAAQ,EACnBA,CACT,CACA,SAASq5D,EAAM,CACb,aAAM,SAASA,CAAI,EACnB,KAAK,GAAG,UAAUA,EAAK,EAAE,EACzB,KAAK,GAAG,UAAUA,EAAK,EAAE,EACzB,KAAK,GAAG,UAAUA,EAAK,EAAE,EACzB,KAAK,GAAG,UAAUA,EAAK,EAAE,EAClB,IACT,CACF,EACIl0E,GAAY,cAAcnG,EAAM,CAClC,YAAY6a,EAAK,IAAI3G,EAAW4G,EAAK,IAAI5G,EAAW,CAClD,MAAM,EACN,KAAK,YAAc,GACnB,KAAK,KAAO,YACZ,KAAK,GAAK2G,EACV,KAAK,GAAKC,CACZ,CACA,SAASrD,EAAG2oE,EAAiB,IAAIlsE,EAAW,CAC1C,IAAM+U,EAAQm3D,EACd,OAAI3oE,IAAM,EACRwR,EAAM,KAAK,KAAK,EAAE,GAElBA,EAAM,KAAK,KAAK,EAAE,EAAE,IAAI,KAAK,EAAE,EAC/BA,EAAM,eAAexR,CAAC,EAAE,IAAI,KAAK,EAAE,GAE9BwR,CACT,CAEA,WAAWR,EAAG23D,EAAgB,CAC5B,OAAO,KAAK,SAAS33D,EAAG23D,CAAc,CACxC,CACA,WAAW3oE,EAAG2oE,EAAiB,IAAIlsE,EAAW,CAC5C,OAAOksE,EAAe,WAAW,KAAK,GAAI,KAAK,EAAE,EAAE,UAAU,CAC/D,CACA,aAAa33D,EAAG23D,EAAgB,CAC9B,OAAO,KAAK,WAAW33D,EAAG23D,CAAc,CAC1C,CACA,KAAKp+D,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,GAAG,KAAKA,EAAO,EAAE,EACtB,KAAK,GAAG,KAAKA,EAAO,EAAE,EACf,IACT,CACA,QAAS,CACP,IAAMhB,EAAO,MAAM,OAAO,EAC1B,OAAAA,EAAK,GAAK,KAAK,GAAG,QAAQ,EAC1BA,EAAK,GAAK,KAAK,GAAG,QAAQ,EACnBA,CACT,CACA,SAASq5D,EAAM,CACb,aAAM,SAASA,CAAI,EACnB,KAAK,GAAG,UAAUA,EAAK,EAAE,EACzB,KAAK,GAAG,UAAUA,EAAK,EAAE,EAClB,IACT,CACF,EACIj0E,GAAa,cAAcpG,EAAM,CACnC,YAAY6a,EAAK,IAAI1G,EAAW2G,EAAK,IAAI3G,EAAW,CAClD,MAAM,EACN,KAAK,aAAe,GACpB,KAAK,KAAO,aACZ,KAAK,GAAK0G,EACV,KAAK,GAAKC,CACZ,CACA,SAASrD,EAAG2oE,EAAiB,IAAIjsE,EAAW,CAC1C,IAAM8U,EAAQm3D,EACd,OAAI3oE,IAAM,EACRwR,EAAM,KAAK,KAAK,EAAE,GAElBA,EAAM,KAAK,KAAK,EAAE,EAAE,IAAI,KAAK,EAAE,EAC/BA,EAAM,eAAexR,CAAC,EAAE,IAAI,KAAK,EAAE,GAE9BwR,CACT,CAEA,WAAWR,EAAG23D,EAAgB,CAC5B,OAAO,KAAK,SAAS33D,EAAG23D,CAAc,CACxC,CACA,WAAW3oE,EAAG2oE,EAAiB,IAAIjsE,EAAW,CAC5C,OAAOisE,EAAe,WAAW,KAAK,GAAI,KAAK,EAAE,EAAE,UAAU,CAC/D,CACA,aAAa33D,EAAG23D,EAAgB,CAC9B,OAAO,KAAK,WAAW33D,EAAG23D,CAAc,CAC1C,CACA,KAAKp+D,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,GAAG,KAAKA,EAAO,EAAE,EACtB,KAAK,GAAG,KAAKA,EAAO,EAAE,EACf,IACT,CACA,QAAS,CACP,IAAMhB,EAAO,MAAM,OAAO,EAC1B,OAAAA,EAAK,GAAK,KAAK,GAAG,QAAQ,EAC1BA,EAAK,GAAK,KAAK,GAAG,QAAQ,EACnBA,CACT,CACA,SAASq5D,EAAM,CACb,aAAM,SAASA,CAAI,EACnB,KAAK,GAAG,UAAUA,EAAK,EAAE,EACzB,KAAK,GAAG,UAAUA,EAAK,EAAE,EAClB,IACT,CACF,EACInuE,GAAuB,cAAclM,EAAM,CAC7C,YAAYuqB,EAAK,IAAIrW,EAAW2G,EAAK,IAAI3G,EAAW4G,EAAK,IAAI5G,EAAW,CACtE,MAAM,EACN,KAAK,uBAAyB,GAC9B,KAAK,KAAO,uBACZ,KAAK,GAAKqW,EACV,KAAK,GAAK1P,EACV,KAAK,GAAKC,CACZ,CACA,SAASrD,EAAG2oE,EAAiB,IAAIlsE,EAAW,CAC1C,IAAM+U,EAAQm3D,EACR71D,EAAK,KAAK,GAAI1P,EAAK,KAAK,GAAIC,EAAK,KAAK,GAC5C,OAAAmO,EAAM,IACJs6D,GAAgB9rE,EAAG8S,EAAG,EAAG1P,EAAG,EAAGC,EAAG,CAAC,EACnCyoE,GAAgB9rE,EAAG8S,EAAG,EAAG1P,EAAG,EAAGC,EAAG,CAAC,CACrC,EACOmO,CACT,CACA,KAAKjH,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,GAAG,KAAKA,EAAO,EAAE,EACtB,KAAK,GAAG,KAAKA,EAAO,EAAE,EACtB,KAAK,GAAG,KAAKA,EAAO,EAAE,EACf,IACT,CACA,QAAS,CACP,IAAMhB,EAAO,MAAM,OAAO,EAC1B,OAAAA,EAAK,GAAK,KAAK,GAAG,QAAQ,EAC1BA,EAAK,GAAK,KAAK,GAAG,QAAQ,EAC1BA,EAAK,GAAK,KAAK,GAAG,QAAQ,EACnBA,CACT,CACA,SAASq5D,EAAM,CACb,aAAM,SAASA,CAAI,EACnB,KAAK,GAAG,UAAUA,EAAK,EAAE,EACzB,KAAK,GAAG,UAAUA,EAAK,EAAE,EACzB,KAAK,GAAG,UAAUA,EAAK,EAAE,EAClB,IACT,CACF,EACIluE,GAAwB,cAAcnM,EAAM,CAC9C,YAAYuqB,EAAK,IAAIpW,EAAW0G,EAAK,IAAI1G,EAAW2G,EAAK,IAAI3G,EAAW,CACtE,MAAM,EACN,KAAK,wBAA0B,GAC/B,KAAK,KAAO,wBACZ,KAAK,GAAKoW,EACV,KAAK,GAAK1P,EACV,KAAK,GAAKC,CACZ,CACA,SAASrD,EAAG2oE,EAAiB,IAAIjsE,EAAW,CAC1C,IAAM8U,EAAQm3D,EACR71D,EAAK,KAAK,GAAI1P,EAAK,KAAK,GAAIC,EAAK,KAAK,GAC5C,OAAAmO,EAAM,IACJs6D,GAAgB9rE,EAAG8S,EAAG,EAAG1P,EAAG,EAAGC,EAAG,CAAC,EACnCyoE,GAAgB9rE,EAAG8S,EAAG,EAAG1P,EAAG,EAAGC,EAAG,CAAC,EACnCyoE,GAAgB9rE,EAAG8S,EAAG,EAAG1P,EAAG,EAAGC,EAAG,CAAC,CACrC,EACOmO,CACT,CACA,KAAKjH,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,GAAG,KAAKA,EAAO,EAAE,EACtB,KAAK,GAAG,KAAKA,EAAO,EAAE,EACtB,KAAK,GAAG,KAAKA,EAAO,EAAE,EACf,IACT,CACA,QAAS,CACP,IAAMhB,EAAO,MAAM,OAAO,EAC1B,OAAAA,EAAK,GAAK,KAAK,GAAG,QAAQ,EAC1BA,EAAK,GAAK,KAAK,GAAG,QAAQ,EAC1BA,EAAK,GAAK,KAAK,GAAG,QAAQ,EACnBA,CACT,CACA,SAASq5D,EAAM,CACb,aAAM,SAASA,CAAI,EACnB,KAAK,GAAG,UAAUA,EAAK,EAAE,EACzB,KAAK,GAAG,UAAUA,EAAK,EAAE,EACzB,KAAK,GAAG,UAAUA,EAAK,EAAE,EAClB,IACT,CACF,EACInpE,GAAc,cAAclR,EAAM,CACpC,YAAY2oB,EAAS,CAAC,EAAG,CACvB,MAAM,EACN,KAAK,cAAgB,GACrB,KAAK,KAAO,cACZ,KAAK,OAASA,CAChB,CACA,SAASlR,EAAG2oE,EAAiB,IAAIlsE,EAAW,CAC1C,IAAM+U,EAAQm3D,EACRz3D,EAAS,KAAK,OACdyJ,GAAKzJ,EAAO,OAAS,GAAKlR,EAC1BwrE,EAAW,KAAK,MAAM7wD,CAAC,EACvBmrB,EAASnrB,EAAI6wD,EACbv4D,EAAK/B,EAAOs6D,IAAa,EAAIA,EAAWA,EAAW,CAAC,EACpDt4D,EAAKhC,EAAOs6D,CAAQ,EACpBr4D,EAAKjC,EAAOs6D,EAAWt6D,EAAO,OAAS,EAAIA,EAAO,OAAS,EAAIs6D,EAAW,CAAC,EAC3EhsD,EAAKtO,EAAOs6D,EAAWt6D,EAAO,OAAS,EAAIA,EAAO,OAAS,EAAIs6D,EAAW,CAAC,EACjF,OAAAh6D,EAAM,IACJk6D,GAAW5lC,EAAQ7yB,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGqM,EAAG,CAAC,EACzCksD,GAAW5lC,EAAQ7yB,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGqM,EAAG,CAAC,CAC3C,EACOhO,CACT,CACA,KAAKjH,EAAQ,CACX,MAAM,KAAKA,CAAM,EACjB,KAAK,OAAS,CAAC,EACf,QAASlM,EAAI,EAAGC,EAAIiM,EAAO,OAAO,OAAQlM,EAAIC,EAAGD,IAAK,CACpD,IAAMmT,EAAQjH,EAAO,OAAOlM,CAAC,EAC7B,KAAK,OAAO,KAAKmT,EAAM,MAAM,CAAC,CAChC,CACA,OAAO,IACT,CACA,QAAS,CACP,IAAMjI,EAAO,MAAM,OAAO,EAC1BA,EAAK,OAAS,CAAC,EACf,QAASlL,EAAI,EAAGC,EAAI,KAAK,OAAO,OAAQD,EAAIC,EAAGD,IAAK,CAClD,IAAMmT,EAAQ,KAAK,OAAOnT,CAAC,EAC3BkL,EAAK,OAAO,KAAKiI,EAAM,QAAQ,CAAC,CAClC,CACA,OAAOjI,CACT,CACA,SAASq5D,EAAM,CACb,MAAM,SAASA,CAAI,EACnB,KAAK,OAAS,CAAC,EACf,QAASvkE,EAAI,EAAGC,EAAIskE,EAAK,OAAO,OAAQvkE,EAAIC,EAAGD,IAAK,CAClD,IAAMmT,EAAQoxD,EAAK,OAAOvkE,CAAC,EAC3B,KAAK,OAAO,KAAK,IAAI5B,EAAQ,EAAE,UAAU+U,CAAK,CAAC,CACjD,CACA,OAAO,IACT,CACF,EACI46D,GAAyB,OAAO,OAAO,CACzC,UAAW,KACX,SAAAxnF,GACA,iBAAA8B,GACA,iBAAAsB,GACA,kBAAAC,GACA,aAAAoC,GACA,UAAAqE,GACA,WAAAC,GACA,qBAAA8F,GACA,sBAAAC,GACA,YAAA+E,EACF,CAAC,EACGjR,GAAY,cAAcD,EAAM,CAClC,aAAc,CACZ,MAAM,EACN,KAAK,KAAO,YACZ,KAAK,OAAS,CAAC,EACf,KAAK,UAAY,EACnB,CACA,IAAI8jF,EAAO,CACT,KAAK,OAAO,KAAKA,CAAK,CACxB,CACA,WAAY,CACV,IAAMC,EAAa,KAAK,OAAO,CAAC,EAAE,SAAS,CAAC,EACtCC,EAAW,KAAK,OAAO,KAAK,OAAO,OAAS,CAAC,EAAE,SAAS,CAAC,EAC/D,GAAI,CAACD,EAAW,OAAOC,CAAQ,EAAG,CAChC,IAAMC,EAAWF,EAAW,YAAc,GAAO,YAAc,aAC/D,KAAK,OAAO,KAAK,IAAIF,GAAOI,CAAQ,EAAED,EAAUD,CAAU,CAAC,CAC7D,CACA,OAAO,IACT,CAQA,SAAStsE,EAAG2oE,EAAgB,CAC1B,IAAM9iE,EAAI7F,EAAI,KAAK,UAAU,EACvBysE,EAAe,KAAK,gBAAgB,EACtCpuE,EAAI,EACR,KAAOA,EAAIouE,EAAa,QAAQ,CAC9B,GAAIA,EAAapuE,CAAC,GAAKwH,EAAG,CACxB,IAAM6mE,EAAOD,EAAapuE,CAAC,EAAIwH,EACzBwmE,EAAQ,KAAK,OAAOhuE,CAAC,EACrB+qE,EAAgBiD,EAAM,UAAU,EAChCr7D,EAAIo4D,IAAkB,EAAI,EAAI,EAAIsD,EAAOtD,EAC/C,OAAOiD,EAAM,WAAWr7D,EAAG23D,CAAc,CAC3C,CACAtqE,GACF,CACA,OAAO,IACT,CAIA,WAAY,CACV,IAAMsuE,EAAO,KAAK,gBAAgB,EAClC,OAAOA,EAAKA,EAAK,OAAS,CAAC,CAC7B,CAEA,kBAAmB,CACjB,KAAK,YAAc,GACnB,KAAK,aAAe,KACpB,KAAK,gBAAgB,CACvB,CAGA,iBAAkB,CAChB,GAAI,KAAK,cAAgB,KAAK,aAAa,SAAW,KAAK,OAAO,OAChE,OAAO,KAAK,aAEd,IAAM9D,EAAU,CAAC,EACb+D,EAAO,EACX,QAASvuE,EAAI,EAAGC,EAAI,KAAK,OAAO,OAAQD,EAAIC,EAAGD,IAC7CuuE,GAAQ,KAAK,OAAOvuE,CAAC,EAAE,UAAU,EACjCwqE,EAAQ,KAAK+D,CAAI,EAEnB,YAAK,aAAe/D,EACbA,CACT,CACA,gBAAgBD,EAAY,GAAI,CAC9B,IAAM13D,EAAS,CAAC,EAChB,QAAS7S,EAAI,EAAGA,GAAKuqE,EAAWvqE,IAC9B6S,EAAO,KAAK,KAAK,SAAS7S,EAAIuqE,CAAS,CAAC,EAE1C,OAAI,KAAK,WACP13D,EAAO,KAAKA,EAAO,CAAC,CAAC,EAEhBA,CACT,CACA,UAAU03D,EAAY,GAAI,CACxB,IAAM13D,EAAS,CAAC,EACZ63D,EACJ,QAAS,EAAI,EAAG8D,EAAS,KAAK,OAAQ,EAAIA,EAAO,OAAQ,IAAK,CAC5D,IAAMR,EAAQQ,EAAO,CAAC,EAChBC,EAAaT,EAAM,eAAiBzD,EAAY,EAAIyD,EAAM,aAAeA,EAAM,aAAe,EAAIA,EAAM,cAAgBzD,EAAYyD,EAAM,OAAO,OAASzD,EAC1JmE,EAAMV,EAAM,UAAUS,CAAU,EACtC,QAAS95D,EAAI,EAAGA,EAAI+5D,EAAI,OAAQ/5D,IAAK,CACnC,IAAMxB,EAAQu7D,EAAI/5D,CAAC,EACf+1D,GAAQA,EAAK,OAAOv3D,CAAK,IAC7BN,EAAO,KAAKM,CAAK,EACjBu3D,EAAOv3D,EACT,CACF,CACA,OAAI,KAAK,WAAaN,EAAO,OAAS,GAAK,CAACA,EAAOA,EAAO,OAAS,CAAC,EAAE,OAAOA,EAAO,CAAC,CAAC,GACpFA,EAAO,KAAKA,EAAO,CAAC,CAAC,EAEhBA,CACT,CACA,KAAK3G,EAAQ,CACX,MAAM,KAAKA,CAAM,EACjB,KAAK,OAAS,CAAC,EACf,QAASlM,EAAI,EAAGC,EAAIiM,EAAO,OAAO,OAAQlM,EAAIC,EAAGD,IAAK,CACpD,IAAMguE,EAAQ9hE,EAAO,OAAOlM,CAAC,EAC7B,KAAK,OAAO,KAAKguE,EAAM,MAAM,CAAC,CAChC,CACA,YAAK,UAAY9hE,EAAO,UACjB,IACT,CACA,QAAS,CACP,IAAMhB,EAAO,MAAM,OAAO,EAC1BA,EAAK,UAAY,KAAK,UACtBA,EAAK,OAAS,CAAC,EACf,QAASlL,EAAI,EAAGC,EAAI,KAAK,OAAO,OAAQD,EAAIC,EAAGD,IAAK,CAClD,IAAMguE,EAAQ,KAAK,OAAOhuE,CAAC,EAC3BkL,EAAK,OAAO,KAAK8iE,EAAM,OAAO,CAAC,CACjC,CACA,OAAO9iE,CACT,CACA,SAASq5D,EAAM,CACb,MAAM,SAASA,CAAI,EACnB,KAAK,UAAYA,EAAK,UACtB,KAAK,OAAS,CAAC,EACf,QAASvkE,EAAI,EAAGC,EAAIskE,EAAK,OAAO,OAAQvkE,EAAIC,EAAGD,IAAK,CAClD,IAAMguE,EAAQzJ,EAAK,OAAOvkE,CAAC,EAC3B,KAAK,OAAO,KAAK,IAAI+tE,GAAOC,EAAM,IAAI,EAAE,EAAE,SAASA,CAAK,CAAC,CAC3D,CACA,OAAO,IACT,CACF,EACI14E,GAAO,cAAcnL,EAAU,CACjC,YAAY0oB,EAAQ,CAClB,MAAM,EACN,KAAK,KAAO,OACZ,KAAK,aAAe,IAAIzU,EACpByU,GACF,KAAK,cAAcA,CAAM,CAE7B,CACA,cAAcA,EAAQ,CACpB,KAAK,OAAOA,EAAO,CAAC,EAAE,EAAGA,EAAO,CAAC,EAAE,CAAC,EACpC,QAAS7S,EAAI,EAAGC,EAAI4S,EAAO,OAAQ7S,EAAIC,EAAGD,IACxC,KAAK,OAAO6S,EAAO7S,CAAC,EAAE,EAAG6S,EAAO7S,CAAC,EAAE,CAAC,EAEtC,OAAO,IACT,CACA,OAAOmB,EAAGM,EAAG,CACX,YAAK,aAAa,IAAIN,EAAGM,CAAC,EACnB,IACT,CACA,OAAON,EAAGM,EAAG,CACX,IAAMusE,EAAQ,IAAI39E,GAAU,KAAK,aAAa,MAAM,EAAG,IAAI+N,EAAQ+C,EAAGM,CAAC,CAAC,EACxE,YAAK,OAAO,KAAKusE,CAAK,EACtB,KAAK,aAAa,IAAI7sE,EAAGM,CAAC,EACnB,IACT,CACA,iBAAiBktE,EAAMC,EAAMlD,EAAIC,EAAI,CACnC,IAAMqC,EAAQ,IAAI53E,GAChB,KAAK,aAAa,MAAM,EACxB,IAAIgI,EAAQuwE,EAAMC,CAAI,EACtB,IAAIxwE,EAAQstE,EAAIC,CAAE,CACpB,EACA,YAAK,OAAO,KAAKqC,CAAK,EACtB,KAAK,aAAa,IAAItC,EAAIC,CAAE,EACrB,IACT,CACA,cAAckD,EAAOC,EAAOC,EAAOC,EAAOtD,EAAIC,EAAI,CAChD,IAAMqC,EAAQ,IAAIrkF,GAChB,KAAK,aAAa,MAAM,EACxB,IAAIyU,EAAQywE,EAAOC,CAAK,EACxB,IAAI1wE,EAAQ2wE,EAAOC,CAAK,EACxB,IAAI5wE,EAAQstE,EAAIC,CAAE,CACpB,EACA,YAAK,OAAO,KAAKqC,CAAK,EACtB,KAAK,aAAa,IAAItC,EAAIC,CAAE,EACrB,IACT,CACA,WAAW+C,EAAK,CACd,IAAMO,EAAO,CAAC,KAAK,aAAa,MAAM,CAAC,EAAE,OAAOP,CAAG,EAC7CV,EAAQ,IAAI5yE,GAAY6zE,CAAI,EAClC,YAAK,OAAO,KAAKjB,CAAK,EACtB,KAAK,aAAa,KAAKU,EAAIA,EAAI,OAAS,CAAC,CAAC,EACnC,IACT,CACA,IAAIhD,EAAIC,EAAIU,EAASP,EAAaC,EAAWC,EAAY,CACvD,IAAM59D,EAAK,KAAK,aAAa,EACvBC,EAAK,KAAK,aAAa,EAC7B,YAAK,OACHq9D,EAAKt9D,EACLu9D,EAAKt9D,EACLg+D,EACAP,EACAC,EACAC,CACF,EACO,IACT,CACA,OAAON,EAAIC,EAAIU,EAASP,EAAaC,EAAWC,EAAY,CAC1D,YAAK,WAAWN,EAAIC,EAAIU,EAASA,EAASP,EAAaC,EAAWC,CAAU,EACrE,IACT,CACA,QAAQN,EAAIC,EAAIC,EAASC,EAASC,EAAaC,EAAWC,EAAYC,EAAW,CAC/E,IAAM79D,EAAK,KAAK,aAAa,EACvBC,EAAK,KAAK,aAAa,EAC7B,YAAK,WAAWq9D,EAAKt9D,EAAIu9D,EAAKt9D,EAAIu9D,EAASC,EAASC,EAAaC,EAAWC,EAAYC,CAAS,EAC1F,IACT,CACA,WAAWP,EAAIC,EAAIC,EAASC,EAASC,EAAaC,EAAWC,EAAYC,EAAW,CAClF,IAAM+B,EAAQ,IAAIhiF,GAAa0/E,EAAIC,EAAIC,EAASC,EAASC,EAAaC,EAAWC,EAAYC,CAAS,EACtG,GAAI,KAAK,OAAO,OAAS,EAAG,CAC1B,IAAMiD,EAAalB,EAAM,SAAS,CAAC,EAC9BkB,EAAW,OAAO,KAAK,YAAY,GACtC,KAAK,OAAOA,EAAW,EAAGA,EAAW,CAAC,CAE1C,CACA,KAAK,OAAO,KAAKlB,CAAK,EACtB,IAAMmB,EAAYnB,EAAM,SAAS,CAAC,EAClC,YAAK,aAAa,KAAKmB,CAAS,EACzB,IACT,CACA,KAAKjjE,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,aAAa,KAAKA,EAAO,YAAY,EACnC,IACT,CACA,QAAS,CACP,IAAMhB,EAAO,MAAM,OAAO,EAC1B,OAAAA,EAAK,aAAe,KAAK,aAAa,QAAQ,EACvCA,CACT,CACA,SAASq5D,EAAM,CACb,aAAM,SAASA,CAAI,EACnB,KAAK,aAAa,UAAUA,EAAK,YAAY,EACtC,IACT,CACF,EACI/0E,GAAgB,MAAM4/E,WAAuBvnF,EAAe,CAC9D,YAAYgrB,EAAS,CAAC,IAAIzU,EAAQ,EAAG,GAAI,EAAG,IAAIA,EAAQ,GAAK,CAAC,EAAG,IAAIA,EAAQ,EAAG,EAAG,CAAC,EAAGgtE,EAAW,GAAIiE,EAAW,EAAGC,EAAY,KAAK,GAAK,EAAG,CAC3I,MAAM,EACN,KAAK,KAAO,gBACZ,KAAK,WAAa,CAChB,OAAAz8D,EACA,SAAAu4D,EACA,SAAAiE,EACA,UAAAC,CACF,EACAlE,EAAW,KAAK,MAAMA,CAAQ,EAC9BkE,EAAY3uE,GAAM2uE,EAAW,EAAG,KAAK,GAAK,CAAC,EAC3C,IAAM5nD,EAAU,CAAC,EACX4C,EAAW,CAAC,EACZC,EAAM,CAAC,EACPglD,EAAc,CAAC,EACfloD,EAAU,CAAC,EACXmoD,EAAkB,EAAIpE,EACtBqE,EAAU,IAAIpxE,EACd8N,EAAK,IAAI/N,EACTiU,EAAS,IAAIhU,EACbqxE,EAAY,IAAIrxE,EAChBsxE,EAAa,IAAItxE,EACnBuG,EAAK,EACLC,EAAK,EACT,QAAS8P,EAAI,EAAGA,GAAK9B,EAAO,OAAS,EAAG8B,IACtC,OAAQA,EAAG,CACT,IAAK,GACH/P,EAAKiO,EAAO8B,EAAI,CAAC,EAAE,EAAI9B,EAAO8B,CAAC,EAAE,EACjC9P,EAAKgO,EAAO8B,EAAI,CAAC,EAAE,EAAI9B,EAAO8B,CAAC,EAAE,EACjCtC,EAAO,EAAIxN,EAAK,EAChBwN,EAAO,EAAI,CAACzN,EACZyN,EAAO,EAAIxN,EAAK,EAChB8qE,EAAW,KAAKt9D,CAAM,EACtBA,EAAO,UAAU,EACjBk9D,EAAY,KAAKl9D,EAAO,EAAGA,EAAO,EAAGA,EAAO,CAAC,EAC7C,MACF,KAAKQ,EAAO,OAAS,EACnB08D,EAAY,KAAKI,EAAW,EAAGA,EAAW,EAAGA,EAAW,CAAC,EACzD,MACF,QACE/qE,EAAKiO,EAAO8B,EAAI,CAAC,EAAE,EAAI9B,EAAO8B,CAAC,EAAE,EACjC9P,EAAKgO,EAAO8B,EAAI,CAAC,EAAE,EAAI9B,EAAO8B,CAAC,EAAE,EACjCtC,EAAO,EAAIxN,EAAK,EAChBwN,EAAO,EAAI,CAACzN,EACZyN,EAAO,EAAIxN,EAAK,EAChB6qE,EAAU,KAAKr9D,CAAM,EACrBA,EAAO,GAAKs9D,EAAW,EACvBt9D,EAAO,GAAKs9D,EAAW,EACvBt9D,EAAO,GAAKs9D,EAAW,EACvBt9D,EAAO,UAAU,EACjBk9D,EAAY,KAAKl9D,EAAO,EAAGA,EAAO,EAAGA,EAAO,CAAC,EAC7Cs9D,EAAW,KAAKD,CAAS,CAC7B,CAEF,QAAS1vE,EAAI,EAAGA,GAAKorE,EAAUprE,IAAK,CAClC,IAAMwS,EAAM68D,EAAWrvE,EAAIwvE,EAAkBF,EACvC7rE,EAAM,KAAK,IAAI+O,CAAG,EAClBhP,EAAM,KAAK,IAAIgP,CAAG,EACxB,QAASmC,EAAI,EAAGA,GAAK9B,EAAO,OAAS,EAAG8B,IAAK,CAC3C86D,EAAQ,EAAI58D,EAAO8B,CAAC,EAAE,EAAIlR,EAC1BgsE,EAAQ,EAAI58D,EAAO8B,CAAC,EAAE,EACtB86D,EAAQ,EAAI58D,EAAO8B,CAAC,EAAE,EAAInR,EAC1B8mB,EAAS,KAAKmlD,EAAQ,EAAGA,EAAQ,EAAGA,EAAQ,CAAC,EAC7CtjE,EAAG,EAAInM,EAAIorE,EACXj/D,EAAG,EAAIwI,GAAK9B,EAAO,OAAS,GAC5B0X,EAAI,KAAKpe,EAAG,EAAGA,EAAG,CAAC,EACnB,IAAMhL,EAAIouE,EAAY,EAAI56D,EAAI,CAAC,EAAIlR,EAC7BhC,EAAI8tE,EAAY,EAAI56D,EAAI,CAAC,EACzBtI,EAAIkjE,EAAY,EAAI56D,EAAI,CAAC,EAAInR,EACnC6jB,EAAQ,KAAKlmB,EAAGM,EAAG4K,CAAC,CACtB,CACF,CACA,QAASrM,EAAI,EAAGA,EAAIorE,EAAUprE,IAC5B,QAAS2U,EAAI,EAAGA,EAAI9B,EAAO,OAAS,EAAG8B,IAAK,CAC1C,IAAMi7D,EAAOj7D,EAAI3U,EAAI6S,EAAO,OACtBzP,EAAIwsE,EACJ,EAAIA,EAAO/8D,EAAO,OAClBvP,EAAIssE,EAAO/8D,EAAO,OAAS,EAC3BrL,EAAIooE,EAAO,EACjBloD,EAAQ,KAAKtkB,EAAG,EAAGoE,CAAC,EACpBkgB,EAAQ,KAAKpkB,EAAGkE,EAAG,CAAC,CACtB,CAEF,KAAK,SAASkgB,CAAO,EACrB,KAAK,aAAa,WAAY,IAAI/6B,GAAuB29B,EAAU,CAAC,CAAC,EACrE,KAAK,aAAa,KAAM,IAAI39B,GAAuB49B,EAAK,CAAC,CAAC,EAC1D,KAAK,aAAa,SAAU,IAAI59B,GAAuB06B,EAAS,CAAC,CAAC,CACpE,CACA,KAAKnb,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,WAAa,OAAO,OAAO,CAAC,EAAGA,EAAO,UAAU,EAC9C,IACT,CACA,OAAO,SAAShB,EAAM,CACpB,OAAO,IAAIkkE,GAAelkE,EAAK,OAAQA,EAAK,SAAUA,EAAK,SAAUA,EAAK,SAAS,CACrF,CACF,EACI9iB,GAAkB,MAAMynF,WAAyBrgF,EAAc,CACjE,YAAY+iB,EAAS,EAAGvQ,EAAS,EAAG8tE,EAAc,EAAGC,EAAiB,EAAG,CACvE,IAAMx/B,EAAO,IAAIj7C,GACjBi7C,EAAK,OAAO,EAAG,CAACvuC,EAAS,EAAGuQ,EAAQ,KAAK,GAAK,IAAK,CAAC,EACpDg+B,EAAK,OAAO,EAAGvuC,EAAS,EAAGuQ,EAAQ,EAAG,KAAK,GAAK,EAAG,EACnD,MAAMg+B,EAAK,UAAUu/B,CAAW,EAAGC,CAAc,EACjD,KAAK,KAAO,kBACZ,KAAK,WAAa,CAChB,OAAAx9D,EACA,OAAAvQ,EACA,YAAA8tE,EACA,eAAAC,CACF,CACF,CACA,OAAO,SAAS7kE,EAAM,CACpB,OAAO,IAAI2kE,GAAiB3kE,EAAK,OAAQA,EAAK,OAAQA,EAAK,YAAaA,EAAK,cAAc,CAC7F,CACF,EACI3iB,GAAiB,MAAMynF,WAAwBnoF,EAAe,CAChE,YAAY0qB,EAAS,EAAG64D,EAAW,GAAI6E,EAAa,EAAGC,EAAc,KAAK,GAAK,EAAG,CAChF,MAAM,EACN,KAAK,KAAO,iBACZ,KAAK,WAAa,CAChB,OAAA39D,EACA,SAAA64D,EACA,WAAA6E,EACA,YAAAC,CACF,EACA9E,EAAW,KAAK,IAAI,EAAGA,CAAQ,EAC/B,IAAM1jD,EAAU,CAAC,EACX4C,EAAW,CAAC,EACZjD,EAAU,CAAC,EACXkD,EAAM,CAAC,EACPklD,EAAU,IAAIpxE,EACd8N,EAAK,IAAI/N,EACfksB,EAAS,KAAK,EAAG,EAAG,CAAC,EACrBjD,EAAQ,KAAK,EAAG,EAAG,CAAC,EACpBkD,EAAI,KAAK,GAAK,EAAG,EACjB,QAAS7nB,EAAI,EAAG1C,EAAI,EAAG0C,GAAK0oE,EAAU1oE,IAAK1C,GAAK,EAAG,CACjD,IAAMmwE,EAAUF,EAAavtE,EAAI0oE,EAAW8E,EAC5CT,EAAQ,EAAIl9D,EAAS,KAAK,IAAI49D,CAAO,EACrCV,EAAQ,EAAIl9D,EAAS,KAAK,IAAI49D,CAAO,EACrC7lD,EAAS,KAAKmlD,EAAQ,EAAGA,EAAQ,EAAGA,EAAQ,CAAC,EAC7CpoD,EAAQ,KAAK,EAAG,EAAG,CAAC,EACpBlb,EAAG,GAAKme,EAAStqB,CAAC,EAAIuS,EAAS,GAAK,EACpCpG,EAAG,GAAKme,EAAStqB,EAAI,CAAC,EAAIuS,EAAS,GAAK,EACxCgY,EAAI,KAAKpe,EAAG,EAAGA,EAAG,CAAC,CACrB,CACA,QAASnM,EAAI,EAAGA,GAAKorE,EAAUprE,IAC7B0nB,EAAQ,KAAK1nB,EAAGA,EAAI,EAAG,CAAC,EAE1B,KAAK,SAAS0nB,CAAO,EACrB,KAAK,aAAa,WAAY,IAAI/6B,GAAuB29B,EAAU,CAAC,CAAC,EACrE,KAAK,aAAa,SAAU,IAAI39B,GAAuB06B,EAAS,CAAC,CAAC,EAClE,KAAK,aAAa,KAAM,IAAI16B,GAAuB49B,EAAK,CAAC,CAAC,CAC5D,CACA,KAAKre,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,WAAa,OAAO,OAAO,CAAC,EAAGA,EAAO,UAAU,EAC9C,IACT,CACA,OAAO,SAAShB,EAAM,CACpB,OAAO,IAAI8kE,GAAgB9kE,EAAK,OAAQA,EAAK,SAAUA,EAAK,WAAYA,EAAK,WAAW,CAC1F,CACF,EACI5gB,GAAmB,MAAM8lF,WAA0BvoF,EAAe,CACpE,YAAYwoF,EAAY,EAAGC,EAAe,EAAG/iE,EAAS,EAAGwiE,EAAiB,GAAI5lD,EAAiB,EAAGomD,EAAY,GAAON,EAAa,EAAGC,EAAc,KAAK,GAAK,EAAG,CAC9J,MAAM,EACN,KAAK,KAAO,mBACZ,KAAK,WAAa,CAChB,UAAAG,EACA,aAAAC,EACA,OAAA/iE,EACA,eAAAwiE,EACA,eAAA5lD,EACA,UAAAomD,EACA,WAAAN,EACA,YAAAC,CACF,EACA,IAAM7lD,EAAQ,KACd0lD,EAAiB,KAAK,MAAMA,CAAc,EAC1C5lD,EAAiB,KAAK,MAAMA,CAAc,EAC1C,IAAMzC,EAAU,CAAC,EACX4C,EAAW,CAAC,EACZjD,EAAU,CAAC,EACXkD,EAAM,CAAC,EACT1qB,EAAQ,EACNg4D,EAAa,CAAC,EACd2Y,EAAajjE,EAAS,EACxBkd,EAAa,EACjBgmD,EAAc,EACVF,IAAc,KACZF,EAAY,GAAGK,EAAY,EAAI,EAC/BJ,EAAe,GAAGI,EAAY,EAAK,GAEzC,KAAK,SAAShpD,CAAO,EACrB,KAAK,aAAa,WAAY,IAAI/6B,GAAuB29B,EAAU,CAAC,CAAC,EACrE,KAAK,aAAa,SAAU,IAAI39B,GAAuB06B,EAAS,CAAC,CAAC,EAClE,KAAK,aAAa,KAAM,IAAI16B,GAAuB49B,EAAK,CAAC,CAAC,EAC1D,SAASkmD,GAAgB,CACvB,IAAMp+D,EAAS,IAAIhU,EACboxE,EAAU,IAAIpxE,EAChBqtB,EAAa,EACXilD,GAASL,EAAeD,GAAa9iE,EAC3C,QAAS9L,EAAI,EAAGA,GAAK0oB,EAAgB1oB,IAAK,CACxC,IAAMmvE,EAAW,CAAC,EACZtsE,EAAI7C,EAAI0oB,EACR5X,EAASjO,GAAKgsE,EAAeD,GAAaA,EAChD,QAASlvE,EAAI,EAAGA,GAAK4uE,EAAgB5uE,IAAK,CACxC,IAAMwR,EAAIxR,EAAI4uE,EACRprE,EAAQgO,EAAIu9D,EAAcD,EAC1BY,EAAW,KAAK,IAAIlsE,CAAK,EACzBmsE,EAAW,KAAK,IAAInsE,CAAK,EAC/B8qE,EAAQ,EAAIl9D,EAASs+D,EACrBpB,EAAQ,EAAI,CAACnrE,EAAIiJ,EAASijE,EAC1Bf,EAAQ,EAAIl9D,EAASu+D,EACrBxmD,EAAS,KAAKmlD,EAAQ,EAAGA,EAAQ,EAAGA,EAAQ,CAAC,EAC7Cp9D,EAAO,IAAIw+D,EAAUF,EAAOG,CAAQ,EAAE,UAAU,EAChDzpD,EAAQ,KAAKhV,EAAO,EAAGA,EAAO,EAAGA,EAAO,CAAC,EACzCkY,EAAI,KAAK5X,EAAG,EAAIrO,CAAC,EACjBssE,EAAS,KAAK/wE,GAAO,CACvB,CACAg4D,EAAW,KAAK+Y,CAAQ,CAC1B,CACA,QAASzvE,EAAI,EAAGA,EAAI4uE,EAAgB5uE,IAClC,QAASM,EAAI,EAAGA,EAAI0oB,EAAgB1oB,IAAK,CACvC,IAAM2B,EAAIy0D,EAAWp2D,CAAC,EAAEN,CAAC,EACnBkC,EAAIw0D,EAAWp2D,EAAI,CAAC,EAAEN,CAAC,EACvBmC,EAAIu0D,EAAWp2D,EAAI,CAAC,EAAEN,EAAI,CAAC,EAC3BqG,EAAIqwD,EAAWp2D,CAAC,EAAEN,EAAI,CAAC,EACzBkvE,EAAY,IACd3oD,EAAQ,KAAKtkB,EAAGC,EAAGmE,CAAC,EACpBkkB,GAAc,GAEZ4kD,EAAe,IACjB5oD,EAAQ,KAAKrkB,EAAGC,EAAGkE,CAAC,EACpBkkB,GAAc,EAElB,CAEFrB,EAAM,SAASI,EAAYiB,EAAY,CAAC,EACxCjB,GAAciB,CAChB,CACA,SAASglD,EAAYz0D,EAAK,CACxB,IAAM80D,EAAmBlxE,EACnBsM,EAAK,IAAI/N,EACTqxE,EAAU,IAAIpxE,EAChBqtB,EAAa,EACXnZ,EAAS0J,IAAQ,GAAOo0D,EAAYC,EACpCz4D,EAAQoE,IAAQ,GAAO,EAAI,GACjC,QAAS9a,EAAI,EAAGA,GAAK4uE,EAAgB5uE,IACnCmpB,EAAS,KAAK,EAAGkmD,EAAa34D,EAAO,CAAC,EACtCwP,EAAQ,KAAK,EAAGxP,EAAO,CAAC,EACxB0S,EAAI,KAAK,GAAK,EAAG,EACjB1qB,IAEF,IAAMmxE,EAAiBnxE,EACvB,QAASsB,EAAI,EAAGA,GAAK4uE,EAAgB5uE,IAAK,CAExC,IAAMwD,EADIxD,EAAI4uE,EACIG,EAAcD,EAC1Ba,EAAW,KAAK,IAAInsE,CAAK,EACzBksE,EAAW,KAAK,IAAIlsE,CAAK,EAC/B8qE,EAAQ,EAAIl9D,EAASs+D,EACrBpB,EAAQ,EAAIe,EAAa34D,EACzB43D,EAAQ,EAAIl9D,EAASu+D,EACrBxmD,EAAS,KAAKmlD,EAAQ,EAAGA,EAAQ,EAAGA,EAAQ,CAAC,EAC7CpoD,EAAQ,KAAK,EAAGxP,EAAO,CAAC,EACxB1L,EAAG,EAAI2kE,EAAW,GAAM,GACxB3kE,EAAG,EAAI0kE,EAAW,GAAMh5D,EAAQ,GAChC0S,EAAI,KAAKpe,EAAG,EAAGA,EAAG,CAAC,EACnBtM,GACF,CACA,QAASsB,EAAI,EAAGA,EAAI4uE,EAAgB5uE,IAAK,CACvC,IAAMmC,EAAIytE,EAAmB5vE,EACvBnB,EAAIgxE,EAAiB7vE,EACvB8a,IAAQ,GACVyL,EAAQ,KAAK1nB,EAAGA,EAAI,EAAGsD,CAAC,EAExBokB,EAAQ,KAAK1nB,EAAI,EAAGA,EAAGsD,CAAC,EAE1BooB,GAAc,CAChB,CACArB,EAAM,SAASI,EAAYiB,EAAYzP,IAAQ,GAAO,EAAI,CAAC,EAC3DwO,GAAciB,CAChB,CACF,CACA,KAAKxf,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,WAAa,OAAO,OAAO,CAAC,EAAGA,EAAO,UAAU,EAC9C,IACT,CACA,OAAO,SAAShB,EAAM,CACpB,OAAO,IAAIklE,GAAkBllE,EAAK,UAAWA,EAAK,aAAcA,EAAK,OAAQA,EAAK,eAAgBA,EAAK,eAAgBA,EAAK,UAAWA,EAAK,WAAYA,EAAK,WAAW,CAC1K,CACF,EACIjiB,GAAe,MAAMgoF,WAAsB3mF,EAAiB,CAC9D,YAAYioB,EAAS,EAAGhF,EAAS,EAAGwiE,EAAiB,GAAI5lD,EAAiB,EAAGomD,EAAY,GAAON,EAAa,EAAGC,EAAc,KAAK,GAAK,EAAG,CACzI,MAAM,EAAG39D,EAAQhF,EAAQwiE,EAAgB5lD,EAAgBomD,EAAWN,EAAYC,CAAW,EAC3F,KAAK,KAAO,eACZ,KAAK,WAAa,CAChB,OAAA39D,EACA,OAAAhF,EACA,eAAAwiE,EACA,eAAA5lD,EACA,UAAAomD,EACA,WAAAN,EACA,YAAAC,CACF,CACF,CACA,OAAO,SAAShlE,EAAM,CACpB,OAAO,IAAI+lE,GAAc/lE,EAAK,OAAQA,EAAK,OAAQA,EAAK,eAAgBA,EAAK,eAAgBA,EAAK,UAAWA,EAAK,WAAYA,EAAK,WAAW,CAChJ,CACF,EACIlV,GAAqB,MAAMk7E,WAA4BrpF,EAAe,CACxE,YAAYyiC,EAAW,CAAC,EAAG5C,EAAU,CAAC,EAAGnV,EAAS,EAAG4+D,EAAS,EAAG,CAC/D,MAAM,EACN,KAAK,KAAO,qBACZ,KAAK,WAAa,CAChB,SAAA7mD,EACA,QAAA5C,EACA,OAAAnV,EACA,OAAA4+D,CACF,EACA,IAAMC,EAAe,CAAC,EAChBC,EAAW,CAAC,EAClBC,EAAUH,CAAM,EAChBI,EAAYh/D,CAAM,EAClBi/D,EAAY,EACZ,KAAK,aAAa,WAAY,IAAI7kF,GAAuBykF,EAAc,CAAC,CAAC,EACzE,KAAK,aAAa,SAAU,IAAIzkF,GAAuBykF,EAAa,MAAM,EAAG,CAAC,CAAC,EAC/E,KAAK,aAAa,KAAM,IAAIzkF,GAAuB0kF,EAAU,CAAC,CAAC,EAC3DF,IAAW,EACb,KAAK,qBAAqB,EAE1B,KAAK,iBAAiB,EAExB,SAASG,EAAUG,EAAS,CAC1B,IAAMruE,EAAI,IAAI/E,EACRgF,EAAI,IAAIhF,EACRiF,EAAI,IAAIjF,EACd,QAAS2B,EAAI,EAAGA,EAAI0nB,EAAQ,OAAQ1nB,GAAK,EACvC0xE,EAAiBhqD,EAAQ1nB,EAAI,CAAC,EAAGoD,CAAC,EAClCsuE,EAAiBhqD,EAAQ1nB,EAAI,CAAC,EAAGqD,CAAC,EAClCquE,EAAiBhqD,EAAQ1nB,EAAI,CAAC,EAAGsD,CAAC,EAClCquE,EAAcvuE,EAAGC,EAAGC,EAAGmuE,CAAO,CAElC,CACA,SAASE,EAAcvuE,EAAGC,EAAGC,EAAGmuE,EAAS,CACvC,IAAMG,EAAOH,EAAU,EACjBntE,EAAI,CAAC,EACX,QAAStE,EAAI,EAAGA,GAAK4xE,EAAM5xE,IAAK,CAC9BsE,EAAEtE,CAAC,EAAI,CAAC,EACR,IAAM6xE,EAAKzuE,EAAE,MAAM,EAAE,KAAKE,EAAGtD,EAAI4xE,CAAI,EAC/BE,EAAKzuE,EAAE,MAAM,EAAE,KAAKC,EAAGtD,EAAI4xE,CAAI,EAC/BG,EAAOH,EAAO5xE,EACpB,QAAS2U,EAAI,EAAGA,GAAKo9D,EAAMp9D,IACrBA,IAAM,GAAK3U,IAAM4xE,EACnBttE,EAAEtE,CAAC,EAAE2U,CAAC,EAAIk9D,EAEVvtE,EAAEtE,CAAC,EAAE2U,CAAC,EAAIk9D,EAAG,MAAM,EAAE,KAAKC,EAAIn9D,EAAIo9D,CAAI,CAG5C,CACA,QAAS/xE,EAAI,EAAGA,EAAI4xE,EAAM5xE,IACxB,QAAS2U,EAAI,EAAGA,EAAI,GAAKi9D,EAAO5xE,GAAK,EAAG2U,IAAK,CAC3C,IAAMwsC,EAAI,KAAK,MAAMxsC,EAAI,CAAC,EACtBA,EAAI,IAAM,GACZq9D,EAAW1tE,EAAEtE,CAAC,EAAEmhD,EAAI,CAAC,CAAC,EACtB6wB,EAAW1tE,EAAEtE,EAAI,CAAC,EAAEmhD,CAAC,CAAC,EACtB6wB,EAAW1tE,EAAEtE,CAAC,EAAEmhD,CAAC,CAAC,IAElB6wB,EAAW1tE,EAAEtE,CAAC,EAAEmhD,EAAI,CAAC,CAAC,EACtB6wB,EAAW1tE,EAAEtE,EAAI,CAAC,EAAEmhD,EAAI,CAAC,CAAC,EAC1B6wB,EAAW1tE,EAAEtE,EAAI,CAAC,EAAEmhD,CAAC,CAAC,EAE1B,CAEJ,CACA,SAASowB,EAAY16D,EAAS,CAC5B,IAAM44D,EAAU,IAAIpxE,EACpB,QAAS2B,EAAI,EAAGA,EAAIoxE,EAAa,OAAQpxE,GAAK,EAC5CyvE,EAAQ,EAAI2B,EAAapxE,EAAI,CAAC,EAC9ByvE,EAAQ,EAAI2B,EAAapxE,EAAI,CAAC,EAC9ByvE,EAAQ,EAAI2B,EAAapxE,EAAI,CAAC,EAC9ByvE,EAAQ,UAAU,EAAE,eAAe54D,CAAO,EAC1Cu6D,EAAapxE,EAAI,CAAC,EAAIyvE,EAAQ,EAC9B2B,EAAapxE,EAAI,CAAC,EAAIyvE,EAAQ,EAC9B2B,EAAapxE,EAAI,CAAC,EAAIyvE,EAAQ,CAElC,CACA,SAAS+B,GAAc,CACrB,IAAM/B,EAAU,IAAIpxE,EACpB,QAAS2B,EAAI,EAAGA,EAAIoxE,EAAa,OAAQpxE,GAAK,EAAG,CAC/CyvE,EAAQ,EAAI2B,EAAapxE,EAAI,CAAC,EAC9ByvE,EAAQ,EAAI2B,EAAapxE,EAAI,CAAC,EAC9ByvE,EAAQ,EAAI2B,EAAapxE,EAAI,CAAC,EAC9B,IAAM2S,EAAIs/D,EAAQxC,CAAO,EAAI,EAAI,KAAK,GAAK,GACrCnrE,EAAI4tE,EAAYzC,CAAO,EAAI,KAAK,GAAK,GAC3C4B,EAAS,KAAK1+D,EAAG,EAAIrO,CAAC,CACxB,CACA6tE,EAAW,EACXC,EAAY,CACd,CACA,SAASA,GAAc,CACrB,QAASpyE,EAAI,EAAGA,EAAIqxE,EAAS,OAAQrxE,GAAK,EAAG,CAC3C,IAAMoO,EAAKijE,EAASrxE,EAAI,CAAC,EACnBwO,EAAK6iE,EAASrxE,EAAI,CAAC,EACnBqb,EAAKg2D,EAASrxE,EAAI,CAAC,EACnBc,EAAM,KAAK,IAAIsN,EAAII,EAAI6M,CAAE,EACzBxa,EAAM,KAAK,IAAIuN,EAAII,EAAI6M,CAAE,EAC3Bva,EAAM,IAAOD,EAAM,KACjBuN,EAAK,KAAKijE,EAASrxE,EAAI,CAAC,GAAK,GAC7BwO,EAAK,KAAK6iE,EAASrxE,EAAI,CAAC,GAAK,GAC7Bqb,EAAK,KAAKg2D,EAASrxE,EAAI,CAAC,GAAK,GAErC,CACF,CACA,SAASgyE,EAAWvC,EAAS,CAC3B2B,EAAa,KAAK3B,EAAQ,EAAGA,EAAQ,EAAGA,EAAQ,CAAC,CACnD,CACA,SAASiC,EAAiB7xE,EAAO4vE,EAAS,CACxC,IAAMvwC,EAASr/B,EAAQ,EACvB4vE,EAAQ,EAAInlD,EAAS4U,EAAS,CAAC,EAC/BuwC,EAAQ,EAAInlD,EAAS4U,EAAS,CAAC,EAC/BuwC,EAAQ,EAAInlD,EAAS4U,EAAS,CAAC,CACjC,CACA,SAASizC,GAAa,CACpB,IAAM/uE,EAAI,IAAI/E,EACRgF,EAAI,IAAIhF,EACRiF,EAAI,IAAIjF,EACRg0E,EAAW,IAAIh0E,EACf6nB,EAAM,IAAI9nB,EACV+nB,EAAM,IAAI/nB,EACVgoB,EAAM,IAAIhoB,EAChB,QAAS4B,EAAI,EAAG2U,EAAI,EAAG3U,EAAIoxE,EAAa,OAAQpxE,GAAK,EAAG2U,GAAK,EAAG,CAC9DvR,EAAE,IAAIguE,EAAapxE,EAAI,CAAC,EAAGoxE,EAAapxE,EAAI,CAAC,EAAGoxE,EAAapxE,EAAI,CAAC,CAAC,EACnEqD,EAAE,IAAI+tE,EAAapxE,EAAI,CAAC,EAAGoxE,EAAapxE,EAAI,CAAC,EAAGoxE,EAAapxE,EAAI,CAAC,CAAC,EACnEsD,EAAE,IAAI8tE,EAAapxE,EAAI,CAAC,EAAGoxE,EAAapxE,EAAI,CAAC,EAAGoxE,EAAapxE,EAAI,CAAC,CAAC,EACnEkmB,EAAI,IAAImrD,EAAS18D,EAAI,CAAC,EAAG08D,EAAS18D,EAAI,CAAC,CAAC,EACxCwR,EAAI,IAAIkrD,EAAS18D,EAAI,CAAC,EAAG08D,EAAS18D,EAAI,CAAC,CAAC,EACxCyR,EAAI,IAAIirD,EAAS18D,EAAI,CAAC,EAAG08D,EAAS18D,EAAI,CAAC,CAAC,EACxC09D,EAAS,KAAKjvE,CAAC,EAAE,IAAIC,CAAC,EAAE,IAAIC,CAAC,EAAE,aAAa,CAAC,EAC7C,IAAMgvE,EAAML,EAAQI,CAAQ,EAC5BE,EAAUrsD,EAAKvR,EAAI,EAAGvR,EAAGkvE,CAAG,EAC5BC,EAAUpsD,EAAKxR,EAAI,EAAGtR,EAAGivE,CAAG,EAC5BC,EAAUnsD,EAAKzR,EAAI,EAAGrR,EAAGgvE,CAAG,CAC9B,CACF,CACA,SAASC,EAAUpmE,EAAI+yB,EAAQ9rB,EAAQo/D,EAAU,CAC3CA,EAAW,GAAKrmE,EAAG,IAAM,IAC3BklE,EAASnyC,CAAM,EAAI/yB,EAAG,EAAI,GAExBiH,EAAO,IAAM,GAAKA,EAAO,IAAM,IACjCi+D,EAASnyC,CAAM,EAAIszC,EAAW,EAAI,KAAK,GAAK,GAEhD,CACA,SAASP,EAAQ7+D,EAAQ,CACvB,OAAO,KAAK,MAAMA,EAAO,EAAG,CAACA,EAAO,CAAC,CACvC,CACA,SAAS8+D,EAAY9+D,EAAQ,CAC3B,OAAO,KAAK,MAAM,CAACA,EAAO,EAAG,KAAK,KAAKA,EAAO,EAAIA,EAAO,EAAIA,EAAO,EAAIA,EAAO,CAAC,CAAC,CACnF,CACF,CACA,KAAKlH,EAAQ,CACX,aAAM,KAAKA,CAAM,EACjB,KAAK,WAAa,OAAO,OAAO,CAAC,EAAGA,EAAO,UAAU,EAC9C,IACT,CACA,OAAO,SAAShB,EAAM,CACpB,OAAO,IAAIgmE,GAAoBhmE,EAAK,SAAUA,EAAK,QAASA,EAAK,OAAQA,EAAK,OAAO,CACvF,CACF,EACI1f,GAAuB,MAAMinF,WAA8Bz8E,EAAmB,CAChF,YAAYuc,EAAS,EAAG4+D,EAAS,EAAG,CAClC,IAAMxvE,GAAK,EAAI,KAAK,KAAK,CAAC,GAAK,EACzB,EAAI,EAAIA,EACR2oB,EAAW,CAEf,GACA,GACA,GACA,GACA,GACA,EACA,GACA,EACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,EACA,EAEA,EACA,CAAC,EACD,CAAC3oB,EACD,EACA,CAAC,EACDA,EACA,EACA,EACA,CAACA,EACD,EACA,EACAA,EAEA,CAAC,EACD,CAACA,EACD,EACA,CAAC,EACDA,EACA,EACA,EACA,CAACA,EACD,EACA,EACAA,EACA,EAEA,CAACA,EACD,EACA,CAAC,EACDA,EACA,EACA,CAAC,EACD,CAACA,EACD,EACA,EACAA,EACA,EACA,CACF,EACM+lB,EAAU,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,CACF,EACA,MAAM4C,EAAU5C,EAASnV,EAAQ4+D,CAAM,EACvC,KAAK,KAAO,uBACZ,KAAK,WAAa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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,CACF,EACA,MAAM4C,EAAU5C,EAASnV,EAAQ4+D,CAAM,EACvC,KAAK,KAAO,sBACZ,KAAK,WAAa,CAChB,OAAA5+D,EACA,OAAA4+D,CACF,CACF,CACA,OAAO,SAASjmE,EAAM,CACpB,OAAO,IAAIqzE,GAAqBrzE,EAAK,OAAQA,EAAK,MAAM,CAC1D,CACF,EACIzW,GAAqB,MAAM+pF,WAA4BxoF,EAAmB,CAC5E,YAAYuc,EAAS,EAAG4+D,EAAS,EAAG,CAClC,IAAM7mD,EAAW,CACf,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACF,EACM5C,EAAU,CACd,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACF,EACA,MAAM4C,EAAU5C,EAASnV,EAAQ4+D,CAAM,EACvC,KAAK,KAAO,qBACZ,KAAK,WAAa,CAChB,OAAA5+D,EACA,OAAA4+D,CACF,CACF,CACA,OAAO,SAASjmE,EAAM,CACpB,OAAO,IAAIszE,GAAoBtzE,EAAK,OAAQA,EAAK,MAAM,CACzD,CACF,EACIrR,GAAe,MAAM4kF,WAAsB52F,EAAe,CAC5D,YAAY62F,EAAc,GAAKC,EAAc,EAAGC,EAAgB,GAAIC,EAAc,EAAG5O,EAAa,EAAGC,EAAc,KAAK,GAAK,EAAG,CAC9H,MAAM,EACN,KAAK,KAAO,eACZ,KAAK,WAAa,CAChB,YAAAwO,EACA,YAAAC,EACA,cAAAC,EACA,YAAAC,EACA,WAAA5O,EACA,YAAAC,CACF,EACA0O,EAAgB,KAAK,IAAI,EAAGA,CAAa,EACzCC,EAAc,KAAK,IAAI,EAAGA,CAAW,EAC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I,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAGjBC,GAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAGnBC,GAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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",
  "names": ["cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "id", "text", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "fallbackRef", "pe", "refBinding", "defaultLayoutId", "ae", "activeLocale", "setLocale", "useLocaleInfo", "componentViewport", "useComponentViewport", "style", "className", "layoutId", "j_JwbaEJE", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onAppeark6ukmk", "args", "onAppear1l3fiww", "useOnVariantChange", "scopingClassNames", "cx", "isDisplayed", "LayoutGroup", "u", "SVG", "RichText2", "css", "FramerktlAS7qXE", "withCSS", "ktlAS7qXE_default", "addPropertyControls", "ControlType", "addFonts", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "id", "text", "width", "props", "_ref", "_humanReadableVariantMap_props_variant", "_ref1", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "foEpwXq65", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onAppear1jms5e8", "args", "onAppear9lcie0", "useOnVariantChange", "ref1", "pe", "isDisplayed", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "u", "cx", "SVG", "RichText2", "css", "FramersR8uv1Vw7", "withCSS", "sR8uv1Vw7_default", "addPropertyControls", "ControlType", "addFonts", "__defProp", "__defProps", "__getOwnPropDescs", "__getOwnPropSymbols", "__hasOwnProp", "__propIsEnum", "__pow", "__defNormalProp", "obj", "key", "value", "__spreadValues", "a", "b", "prop", "__spreadProps", "__objRest", "source", "exclude", "target", "__export", "all", "name", "__async", "__this", "__arguments", "generator", "resolve", "reject", "fulfilled", "step", "e", "rejected", "x", "three_module_exports", "__export", "ACESFilmicToneMapping", "AddEquation", "AddOperation", "AdditiveAnimationBlendMode", "AdditiveBlending", "AgXToneMapping", "AlphaFormat", "AlwaysCompare", "AlwaysDepth", "AlwaysStencilFunc", "AmbientLight", "AnimationAction", "AnimationClip", "AnimationLoader", "AnimationMixer", "AnimationObjectGroup", "AnimationUtils", "ArcCurve", "ArrayCamera", "ArrowHelper", "AttachedBindMode", "Audio", "AudioAnalyser", "AudioContext", "AudioListener", "AudioLoader", "AxesHelper", "BackSide", "BasicDepthPacking", "BasicShadowMap", "BatchedMesh", "Bone", "BooleanKeyframeTrack", "Box2", "Box3", "Box3Helper", "BoxGeometry", "BoxHelper", "BufferAttribute", "BufferGeometry", "BufferGeometryLoader", "ByteType", "Cache", "Camera", "CameraHelper", "CanvasTexture", "CapsuleGeometry", "CatmullRomCurve3", "CineonToneMapping", "CircleGeometry", "ClampToEdgeWrapping", "Clock", "Color", "ColorKeyframeTrack", "ColorManagement", "CompressedArrayTexture", "CompressedCubeTexture", "CompressedTexture", "CompressedTextureLoader", "ConeGeometry", "ConstantAlphaFactor", "ConstantColorFactor", "Controls", "CubeCamera", "CubeReflectionMapping", "CubeRefractionMapping", "CubeTexture", "CubeTextureLoader", "CubeUVReflectionMapping", "CubicBezierCurve", "CubicBezierCurve3", "CubicInterpolant", "CullFaceBack", "CullFaceFront", "CullFaceFrontBack", "CullFaceNone", "Curve", "CurvePath", "CustomBlending", "CustomToneMapping", "CylinderGeometry", "Cylindrical", "Data3DTexture", "DataArrayTexture", "DataTexture", "DataTextureLoader", "DataUtils", "DecrementStencilOp", "DecrementWrapStencilOp", "DefaultLoadingManager", "DepthFormat", "DepthStencilFormat", "DepthTexture", "DetachedBindMode", "DirectionalLight", "DirectionalLightHelper", "DiscreteInterpolant", "DisplayP3ColorSpace", "DodecahedronGeometry", "DoubleSide", "DstAlphaFactor", "DstColorFactor", "DynamicCopyUsage", "DynamicDrawUsage", "DynamicReadUsage", "EdgesGeometry", "EllipseCurve", "EqualCompare", "EqualDepth", "EqualStencilFunc", "EquirectangularReflectionMapping", "EquirectangularRefractionMapping", "Euler", "EventDispatcher", "ExtrudeGeometry", "FileLoader", "Float16BufferAttribute", "Float32BufferAttribute", "FloatType", "Fog", "FogExp2", "FramebufferTexture", "FrontSide", "Frustum", "GLBufferAttribute", "GLSL1", "GLSL3", "GreaterCompare", "GreaterDepth", "GreaterEqualCompare", "GreaterEqualDepth", "GreaterEqualStencilFunc", "GreaterStencilFunc", "GridHelper", "Group", "HalfFloatType", "HemisphereLight", "HemisphereLightHelper", "IcosahedronGeometry", "ImageBitmapLoader", "ImageLoader", "ImageUtils", "IncrementStencilOp", "IncrementWrapStencilOp", "InstancedBufferAttribute", "InstancedBufferGeometry", "InstancedInterleavedBuffer", "InstancedMesh", "Int16BufferAttribute", "Int32BufferAttribute", "Int8BufferAttribute", "IntType", "InterleavedBuffer", "InterleavedBufferAttribute", "Interpolant", "InterpolateDiscrete", "InterpolateLinear", "InterpolateSmooth", "InvertStencilOp", "KeepStencilOp", "KeyframeTrack", "LOD", "LatheGeometry", "Layers", "LessCompare", "LessDepth", "LessEqualCompare", "LessEqualDepth", "LessEqualStencilFunc", "LessStencilFunc", "Light", "LightProbe", "Line", "Line3", "LineBasicMaterial", "LineCurve", "LineCurve3", "LineDashedMaterial", "LineLoop", "LineSegments", "LinearDisplayP3ColorSpace", "LinearFilter", "LinearInterpolant", "LinearMipMapLinearFilter", "LinearMipMapNearestFilter", "LinearMipmapLinearFilter", "LinearMipmapNearestFilter", "LinearSRGBColorSpace", "LinearToneMapping", "LinearTransfer", "Loader", "LoaderUtils", "LoadingManager", "LoopOnce", "LoopPingPong", "LoopRepeat", "LuminanceAlphaFormat", "LuminanceFormat", "MOUSE", "Material", "MaterialLoader", "MathUtils", "Matrix2", "Matrix3", "Matrix4", "MaxEquation", "Mesh", "MeshBasicMaterial", "MeshDepthMaterial", "MeshDistanceMaterial", "MeshLambertMaterial", "MeshMatcapMaterial", "MeshNormalMaterial", "MeshPhongMaterial", "MeshPhysicalMaterial", "MeshStandardMaterial", "MeshToonMaterial", "MinEquation", "MirroredRepeatWrapping", "MixOperation", "MultiplyBlending", "MultiplyOperation", "NearestFilter", "NearestMipMapLinearFilter", "NearestMipMapNearestFilter", "NearestMipmapLinearFilter", "NearestMipmapNearestFilter", "NeutralToneMapping", "NeverCompare", "NeverDepth", "NeverStencilFunc", "NoBlending", "NoColorSpace", "NoToneMapping", "NormalAnimationBlendMode", "NormalBlending", "NotEqualCompare", "NotEqualDepth", "NotEqualStencilFunc", "NumberKeyframeTrack", "Object3D", "ObjectLoader", "ObjectSpaceNormalMap", "OctahedronGeometry", "OneFactor", "OneMinusConstantAlphaFactor", "OneMinusConstantColorFactor", "OneMinusDstAlphaFactor", "OneMinusDstColorFactor", "OneMinusSrcAlphaFactor", "OneMinusSrcColorFactor", "OrthographicCamera", "P3Primaries", "PCFShadowMap", "PCFSoftShadowMap", "PMREMGenerator", "Path", "PerspectiveCamera", "Plane", "PlaneGeometry", "PlaneHelper", "PointLight", "PointLightHelper", "Points", "PointsMaterial", "PolarGridHelper", "PolyhedronGeometry", "PositionalAudio", "PropertyBinding", "PropertyMixer", "QuadraticBezierCurve", "QuadraticBezierCurve3", "Quaternion", "QuaternionKeyframeTrack", "QuaternionLinearInterpolant", "RED_GREEN_RGTC2_Format", "RED_RGTC1_Format", "REVISION", "RGBADepthPacking", "RGBAFormat", "RGBAIntegerFormat", "RGBA_ASTC_10x10_Format", "RGBA_ASTC_10x5_Format", "RGBA_ASTC_10x6_Format", "RGBA_ASTC_10x8_Format", "RGBA_ASTC_12x10_Format", "RGBA_ASTC_12x12_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_BPTC_Format", "RGBA_ETC2_EAC_Format", "RGBA_PVRTC_2BPPV1_Format", "RGBA_PVRTC_4BPPV1_Format", "RGBA_S3TC_DXT1_Format", "RGBA_S3TC_DXT3_Format", "RGBA_S3TC_DXT5_Format", "RGBDepthPacking", "RGBFormat", "RGBIntegerFormat", "RGB_BPTC_SIGNED_Format", "RGB_BPTC_UNSIGNED_Format", "RGB_ETC1_Format", "RGB_ETC2_Format", "RGB_PVRTC_2BPPV1_Format", "RGB_PVRTC_4BPPV1_Format", "RGB_S3TC_DXT1_Format", "RGDepthPacking", "RGFormat", "RGIntegerFormat", "RawShaderMaterial", "Ray", "Raycaster", "Rec709Primaries", "RectAreaLight", "RedFormat", "RedIntegerFormat", "ReinhardToneMapping", "RenderTarget", "RepeatWrapping", "ReplaceStencilOp", "ReverseSubtractEquation", "RingGeometry", "SIGNED_RED_GREEN_RGTC2_Format", "SIGNED_RED_RGTC1_Format", "SRGBColorSpace", "SRGBTransfer", "Scene", "ShaderChunk", "ShaderLib", "ShaderMaterial", "ShadowMaterial", "Shape", "ShapeGeometry", "ShapePath", "ShapeUtils", "ShortType", "Skeleton", "SkeletonHelper", "SkinnedMesh", "Source", "Sphere", "SphereGeometry", "Spherical", "SphericalHarmonics3", "SplineCurve", "SpotLight", "SpotLightHelper", "Sprite", "SpriteMaterial", "SrcAlphaFactor", "SrcAlphaSaturateFactor", "SrcColorFactor", "StaticCopyUsage", "StaticDrawUsage", "StaticReadUsage", "StereoCamera", "StreamCopyUsage", "StreamDrawUsage", "StreamReadUsage", "StringKeyframeTrack", "SubtractEquation", "SubtractiveBlending", "TOUCH", "TangentSpaceNormalMap", "TetrahedronGeometry", "Texture", "TextureLoader", "TextureUtils", "TorusGeometry", "TorusKnotGeometry", "Triangle", "TriangleFanDrawMode", "TriangleStripDrawMode", "TrianglesDrawMode", "TubeGeometry", "UVMapping", "Uint16BufferAttribute", "Uint32BufferAttribute", "Uint8BufferAttribute", "Uint8ClampedBufferAttribute", "Uniform", "UniformsGroup", "UniformsLib", "UniformsUtils", "UnsignedByteType", "UnsignedInt248Type", "UnsignedInt5999Type", "UnsignedIntType", "UnsignedShort4444Type", "UnsignedShort5551Type", "UnsignedShortType", "VSMShadowMap", "Vector2", "Vector3", "Vector4", "VectorKeyframeTrack", "VideoTexture", "WebGL3DRenderTarget", "WebGLArrayRenderTarget", "WebGLCoordinateSystem", "WebGLCubeRenderTarget", "WebGLMultipleRenderTargets", "WebGLRenderTarget", "WebGLRenderer", "WebGLUtils", "WebGPUCoordinateSystem", "WireframeGeometry", "WrapAroundEnding", "ZeroCurvatureEnding", "ZeroFactor", "ZeroSlopeEnding", "ZeroStencilOp", "createCanvasElement", "type", "listener", "listeners", "listenerArray", "index", "event", "array", "i", "l", "_lut", "_seed", "DEG2RAD", "RAD2DEG", "generateUUID", "d0", "d1", "d2", "d3", "clamp", "value", "min", "max", "euclideanModulo", "n", "m", "mapLinear", "x", "a1", "a2", "b1", "b2", "inverseLerp", "y", "lerp", "t", "damp", "lambda", "dt", "pingpong", "length", "smoothstep", "smootherstep", "randInt", "low", "high", "randFloat", "randFloatSpread", "range", "seededRandom", "s", "degToRad", "degrees", "radToDeg", "radians", "isPowerOfTwo", "ceilPowerOfTwo", "floorPowerOfTwo", "setQuaternionFromProperEuler", "q", "a", "b", "c", "order", "cos", "sin", "c2", "s2", "c13", "s13", "c1_3", "s1_3", "c3_1", "s3_1", "denormalize", "normalize", "_Vector2", "scalar", "v", "e", "minVal", "maxVal", "denominator", "theta", "dx", "dy", "alpha", "v1", "v2", "offset", "attribute", "center", "angle", "_Matrix3", "n11", "n12", "n13", "n21", "n22", "n23", "n31", "n32", "n33", "te", "me", "xAxis", "yAxis", "zAxis", "ae", "be", "a11", "a12", "a13", "a21", "a22", "a23", "a31", "a32", "a33", "b11", "b12", "b13", "b21", "b22", "b23", "b31", "b32", "b33", "d", "f", "g", "h", "t11", "t12", "t13", "det", "detInv", "tmp2", "matrix4", "r", "tx", "ty", "sx", "sy", "rotation", "cx", "cy", "_m3", "matrix", "arrayNeedsUint32", "TYPED_ARRAYS", "getTypedArray", "buffer", "createElementNS", "name", "canvas", "_cache", "warnOnce", "message", "probeAsync", "gl", "sync", "interval", "resolve", "reject", "probe", "toNormalizedProjectionMatrix", "projectionMatrix", "toReversedProjectionMatrix", "LINEAR_SRGB_TO_LINEAR_DISPLAY_P3", "LINEAR_DISPLAY_P3_TO_LINEAR_SRGB", "COLOR_SPACES", "color", "SUPPORTED_WORKING_COLOR_SPACES", "colorSpace", "sourceColorSpace", "targetColorSpace", "sourceToReference", "targetFromReference", "target", "SRGBToLinear", "LinearToSRGB", "_canvas", "image", "context", "imageData", "data", "_sourceId", "meta", "isRootObject", "output", "url", "serializeImage", "_textureId", "_Texture", "mapping", "wrapS", "wrapT", "magFilter", "minFilter", "format", "anisotropy", "source", "uv", "_Vector4", "z", "w", "m11", "m12", "m13", "m21", "m22", "m23", "m31", "m32", "m33", "xx", "yy", "zz", "xy", "xz", "yz", "width", "height", "options", "texture", "count", "depth", "il", "layerIndex", "dst", "dstOffset", "src0", "srcOffset0", "src1", "srcOffset1", "x0", "y0", "z0", "w0", "x1", "y1", "z1", "w1", "dir", "sqrSin", "len", "tDir", "quaternion", "euler", "update", "c1", "c3", "s1", "s3", "axis", "halfAngle", "trace", "vFrom", "vTo", "step", "qax", "qay", "qaz", "qaw", "qbx", "qby", "qbz", "qbw", "qb", "cosHalfTheta", "sqrSinHalfTheta", "sinHalfTheta", "halfTheta", "ratioA", "ratioB", "qa", "theta1", "theta2", "r1", "r2", "callback", "_Vector3", "_quaternion$4", "vx", "vy", "vz", "qx", "qy", "qz", "qw", "tz", "camera", "ax", "ay", "az", "bx", "by", "bz", "planeNormal", "_vector$c", "normal", "dz", "radius", "phi", "sinPhiRadius", "sz", "u", "_vector$b", "points", "size", "halfSize", "object", "precise", "box", "point", "vector", "geometry", "positionAttribute", "_box$4", "children", "sphere", "plane", "triangle", "_center", "_extents", "_v0$3", "_v1$7", "_v2$4", "_f0", "_f1", "_f2", "axes", "satForAxes", "_triangleNormal", "_points", "_testAxis", "v0", "extents", "j", "p0", "p1", "p2", "_box$3", "_v1$6", "_v2$3", "optionalCenter", "maxRadiusSq", "radiusSum", "deltaLengthSq", "lengthSq", "delta", "_vector$a", "_segCenter", "_segDir", "_diff", "_edge1", "_edge2", "_normal$1", "origin", "direction", "ray", "directionDistance", "optionalPointOnRay", "optionalPointOnSegment", "segExtent", "a01", "b0", "s0", "sqrDist", "extDet", "invDet", "tca", "radius2", "thc", "t0", "t1", "distToPoint", "tmin", "tmax", "tymin", "tymax", "tzmin", "tzmax", "invdirx", "invdiry", "invdirz", "backfaceCulling", "DdN", "sign2", "DdQxE2", "DdE1xQ", "QdN", "_Matrix4", "n14", "n24", "n34", "n41", "n42", "n43", "n44", "scaleX", "_v1$5", "scaleY", "scaleZ", "af", "bf", "ce", "cf", "de", "df", "ac", "ad", "bc", "bd", "_zero", "_one", "eye", "up", "_z", "_x", "_y", "a14", "a24", "a34", "a41", "a42", "a43", "a44", "b14", "b24", "b34", "b41", "b42", "b43", "b44", "t14", "scaleXSq", "scaleYSq", "scaleZSq", "yx", "zx", "zy", "position", "scale", "x2", "y2", "z2", "wx", "wy", "wz", "_m1$4", "invSX", "invSY", "invSZ", "left", "right", "top", "bottom", "near", "far", "coordinateSystem", "p", "zInv", "_matrix$2", "_quaternion$3", "_Euler", "newOrder", "channel", "layers", "_object3DId", "_v1$4", "_q1", "_m1$3", "_target", "_position$3", "_scale$2", "_quaternion$2", "_xAxis", "_yAxis", "_zAxis", "_addedEvent", "_removedEvent", "_childaddedEvent", "_childremovedEvent", "_Object3D", "onRotationChange", "onQuaternionChange", "distance", "parent", "id", "result", "force", "updateParents", "updateChildren", "bound", "serialize", "library", "element", "parameters", "shapes", "shape", "uuids", "animation", "geometries", "extractFromCache", "materials", "textures", "images", "skeletons", "animations", "nodes", "cache", "values", "key", "recursive", "child", "_v0$2", "_v1$3", "_v2$2", "_v3$2", "_vab", "_vac", "_vbc", "_vap", "_vbp", "_vcp", "_v40", "_v41", "_v42", "_Triangle", "targetLengthSq", "dot00", "dot01", "dot02", "dot11", "dot12", "denom", "invDenom", "p3", "v3", "attr", "i1", "i2", "i3", "barycoord", "i0", "d4", "vc", "d5", "d6", "vb", "va", "_colorKeywords", "_hslA", "_hslB", "hue2rgb", "hex", "style", "handleAlpha", "string", "components", "_color", "hue", "saturation", "lightness", "color1", "color2", "_materialId", "newValue", "currentValue", "data2", "srcPlanes", "dstPlanes", "_tables", "_generateTables", "floatView", "uint32View", "baseTable", "shiftTable", "mantissaTable", "exponentTable", "offsetTable", "toHalfFloat", "val", "fromHalfFloat", "_vector$9", "_vector2$1", "itemSize", "normalized", "start", "index1", "index2", "component", "_id$2", "_m1$2", "_obj", "_offset", "_box$2", "_boxMorphTargets", "_vector$8", "_BufferGeometry", "materialIndex", "normalMatrix", "tangent", "morphAttributesPosition", "morphAttribute", "morphTargetsRelative", "jl", "attributes", "normalAttribute", "uvAttribute", "tangentAttribute", "tan1", "tan2", "vA", "vB", "vC", "uvA", "uvB", "uvC", "sdir", "tdir", "handleTriangle", "groups", "group", "tmp22", "n2", "handleVertex", "pA", "pB", "pC", "nA", "nB", "nC", "cb", "ab", "normals", "convertBufferAttribute", "indices2", "array2", "geometry2", "indices", "newAttribute", "morphAttributes", "morphArray", "hasMorphAttributes", "attributeArray", "boundingSphere", "boundingBox", "_inverseMatrix$3", "_ray$3", "_sphere$6", "_sphereHitAt", "_vA$1", "_vB$1", "_vC$1", "_tempA", "_morphA", "_intersectionPoint", "_intersectionPointWorld", "material", "keys", "ml", "morphPosition", "morphInfluences", "influence", "raycaster", "intersects2", "matrixWorld", "__pow", "rayLocalSpace", "intersection", "uv1", "drawRange", "groupMaterial", "end", "checkGeometryIntersection", "checkIntersection$1", "intersect2", "face", "_BoxGeometry", "widthSegments", "heightSegments", "depthSegments", "scope", "vertices", "uvs", "numberOfVertices", "groupStart", "buildPlane", "udir", "vdir", "width2", "height2", "depth2", "gridX", "gridY", "segmentWidth", "segmentHeight", "widthHalf", "heightHalf", "depthHalf", "gridX1", "gridY1", "vertexCounter", "groupCount", "iy", "ix", "cloneUniforms", "src", "property", "mergeUniforms", "uniforms", "merged", "cloneUniformsGroups", "getUnlitUniformColorSpace", "renderer", "currentRenderTarget", "default_vertex", "default_fragment", "extensions", "_v3$1", "_minTarget", "_maxTarget", "fov2", "aspect2", "focalLength", "vExtentSlope", "minTarget", "maxTarget", "fullWidth", "fullHeight", "view", "skew", "fov", "aspect", "renderTarget", "cameraPX", "cameraNX", "cameraPY", "cameraNY", "cameraPZ", "cameraNZ", "cameras", "scene", "activeMipmapLevel", "currentActiveCubeFace", "currentActiveMipmapLevel", "currentXrEnabled", "generateMipmaps", "shader", "mesh", "currentMinFilter", "stencil", "_vector1", "_vector2", "_normalMatrix", "constant", "inverseNormalLength", "line", "startSign", "endSign", "optionalNormalMatrix", "referencePoint", "_sphere$5", "_vector$7", "p4", "p5", "planes", "frustum", "me0", "me1", "me2", "me3", "me4", "me5", "me6", "me7", "me8", "me9", "me10", "me11", "me12", "me13", "me14", "me15", "sprite", "negRadius", "WebGLAnimation", "isAnimating", "animationLoop", "requestId", "onAnimationFrame", "time", "frame", "WebGLAttributes", "buffers", "createBuffer", "bufferType", "usage", "updateBuffer", "updateRanges", "mergeIndex", "previousRange", "get", "remove", "cached", "_PlaneGeometry", "width_half", "height_half", "segment_width", "segment_height", "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", "_rgb", "_e1$1", "_m1$1", "WebGLBackground", "cubemaps", "cubeuvmaps", "state", "objects", "premultipliedAlpha", "clearColor", "clearAlpha", "planeMesh", "boxMesh", "currentBackground", "currentBackgroundVersion", "currentTonemapping", "getBackground", "background", "render", "forceClear", "setClear", "environmentBlendMode", "addToRenderList", "renderList", "renderer2", "scene2", "alpha2", "WebGLBindingStates", "maxVertexAttributes", "bindingStates", "defaultState", "createBindingState", "currentState", "forceUpdate", "setup", "program", "updateBuffers", "getBindingState", "bindVertexArrayObject", "needsUpdate", "saveCache", "setupVertexAttributes", "createVertexArrayObject", "vao", "deleteVertexArrayObject", "wireframe", "programMap", "stateMap", "newAttributes", "enabledAttributes", "attributeDivisors", "cachedAttributes", "geometryAttributes", "attributesNum", "programAttributes", "cachedAttribute", "geometryAttribute", "attributes2", "initAttributes", "enableAttribute", "enableAttributeAndDivisor", "meshPerAttribute", "disableUnusedAttributes", "vertexAttribPointer", "stride", "integer", "materialDefaultAttributeValues", "programAttribute", "bytesPerElement", "dispose", "reset", "geometryId", "programId", "releaseStatesOfGeometry", "releaseStatesOfProgram", "resetDefaultState", "WebGLBufferRenderer", "info", "mode", "setMode", "renderInstances", "primcount", "renderMultiDraw", "starts", "counts", "drawCount", "elementCount", "renderMultiDrawInstances", "extension", "WebGLCapabilities", "utils", "maxAnisotropy", "getMaxAnisotropy", "textureFormatReadable", "textureFormat", "textureTypeReadable", "textureType", "halfFloatSupportedByExt", "getMaxPrecision", "precision2", "precision", "maxPrecision", "logarithmicDepthBuffer", "reverseDepthBuffer", "ext", "maxTextures", "maxVertexTextures", "maxTextureSize", "maxCubemapSize", "maxAttributes", "maxVertexUniforms", "maxVaryings", "maxFragmentUniforms", "vertexTextures", "maxSamples", "WebGLClipping", "properties", "globalState", "numGlobalPlanes", "localClippingEnabled", "renderingShadows", "viewNormalMatrix", "uniform", "enableLocalClipping", "enabled", "projectPlanes", "useCache", "clipIntersection", "clipShadows", "materialProperties", "resetGlobalState", "nGlobal", "lGlobal", "dstArray", "skipTransform", "nPlanes", "flatSize", "viewMatrix", "i4", "WebGLCubeMaps", "mapTextureMapping", "cubemap", "onTextureDispose", "scaleW", "scaleH", "LOD_MIN", "EXTRA_LOD_SIGMA", "MAX_SAMPLES", "_flatCamera", "_clearColor", "_oldTarget", "_oldActiveCubeFace", "_oldActiveMipmapLevel", "_oldXrEnabled", "PHI", "INV_PHI", "_axisDirections", "sigma", "cubeUVRenderTarget", "equirectangular", "_getCubemapMaterial", "_getEquirectMaterial", "cubeSize", "outputTarget", "_setViewport", "params", "_createRenderTarget", "_lodMax", "_createPlanes", "_getBlurShader", "tmpMesh", "cubeCamera", "upSign", "forwardSign", "originalAutoClear", "toneMapping", "backgroundMaterial", "backgroundBox", "useSolidColor", "col", "isCubeTexture", "autoClear", "poleAxis", "lodIn", "lodOut", "pingPongRenderTarget", "targetIn", "targetOut", "sigmaRadians", "blurMaterial", "STANDARD_DEVIATIONS", "blurMesh", "blurUniforms", "pixels", "radiansPerPixel", "sigmaPixels", "samples", "weights", "sum", "weight", "outputSize", "lodMax", "lodPlanes", "sizeLods", "sigmas", "lod", "totalLods", "sizeLod", "texelSize", "cubeFaces", "positionSize", "uvSize", "faceIndexSize", "faceIndex", "coordinates", "fill2", "_getCommonVertexShader", "WebGLCubeUVMaps", "cubeUVmaps", "pmremGenerator", "isEquirectMap", "isCubeMap", "currentPMREMVersion", "isCubeTextureComplete", "cubemapUV", "WebGLExtensions", "getExtension", "WebGLGeometries", "wireframeAttributes", "onGeometryDispose", "updateWireframeAttribute", "geometryIndex", "geometryPosition", "version", "previousAttribute", "getWireframeAttribute", "currentAttribute", "WebGLIndexedBufferRenderer", "setIndex", "WebGLInfo", "memory", "instanceCount", "WebGLMorphtargets", "capabilities", "morphTextures", "morph", "objectInfluences", "morphTargetsCount", "entry", "disposeTexture", "hasMorphPosition", "hasMorphNormals", "hasMorphColors", "morphTargets", "morphNormals", "morphColors", "vertexDataCount", "vertexDataStride", "morphTarget", "morphNormal", "morphColor", "morphInfluencesSum", "morphBaseInfluence", "WebGLObjects", "updateMap", "buffergeometry", "onInstancedMeshDispose", "skeleton", "instancedMesh", "emptyTexture", "emptyShadowTexture", "emptyArrayTexture", "empty3dTexture", "emptyCubeTexture", "arrayCacheF32", "arrayCacheI32", "mat4array", "mat3array", "mat2array", "flatten", "nBlocks", "blockSize", "firstElem", "arraysEqual", "copyArray", "allocTexUnits", "setValueV1f", "setValueV2f", "setValueV3f", "setValueV4f", "setValueM2", "elements", "setValueM3", "setValueM4", "setValueV1i", "setValueV2i", "setValueV3i", "setValueV4i", "setValueV1ui", "setValueV2ui", "setValueV3ui", "setValueV4ui", "setValueT1", "unit", "emptyTexture2D", "setValueT3D1", "setValueT6", "setValueT2DArray1", "getSingularSetter", "setValueV1fArray", "setValueV2fArray", "setValueV3fArray", "setValueV4fArray", "setValueM2Array", "setValueM3Array", "setValueM4Array", "setValueV1iArray", "setValueV2iArray", "setValueV3iArray", "setValueV4iArray", "setValueV1uiArray", "setValueV2uiArray", "setValueV3uiArray", "setValueV4uiArray", "setValueT1Array", "units", "setValueT3DArray", "setValueT6Array", "setValueT2DArrayArray", "getPureArraySetter", "SingleUniform", "activeInfo", "addr", "PureArrayUniform", "StructuredUniform", "seq", "RePathPart", "addUniform", "container", "uniformObject", "parseUniform", "path", "pathLength", "match", "matchEnd", "idIsIndex", "subscript", "next", "WebGLUniforms", "WebGLShader", "COMPLETION_STATUS_KHR", "programIdCount", "handleSource", "errorLine", "lines", "lines2", "from", "to", "getEncodingComponents", "workingPrimaries", "encodingPrimaries", "gamutMapping", "getShaderErrors", "status", "errors", "errorMatches", "getTexelEncodingFunction", "functionName", "getToneMappingFunction", "toneMappingName", "_v0$1", "getLuminanceFunction", "generateVertexExtensions", "filterEmptyLine", "generateDefines", "defines", "chunks", "fetchAttributeLocations", "locationSize", "replaceLightNums", "numSpotLightCoords", "replaceClippingPlaneNums", "includePattern", "resolveIncludes", "includeReplacer", "shaderChunkMap", "include", "newInclude", "unrollLoopPattern", "unrollLoops", "loopReplacer", "snippet", "generatePrecision", "precisionstring", "generateShadowMapTypeDefine", "shadowMapTypeDefine", "generateEnvMapTypeDefine", "envMapTypeDefine", "generateEnvMapModeDefine", "envMapModeDefine", "generateEnvMapBlendingDefine", "envMapBlendingDefine", "generateCubeUVSize", "imageHeight", "maxMip", "texelHeight", "WebGLProgram", "cacheKey", "vertexShader", "fragmentShader", "envMapCubeUVSize", "customVertexExtensions", "customDefines", "prefixVertex", "prefixFragment", "versionString", "vertexGlsl", "fragmentGlsl", "glVertexShader", "glFragmentShader", "onFirstUse", "self2", "programLog", "vertexLog", "fragmentLog", "runnable", "haveDiagnostics", "vertexErrors", "fragmentErrors", "cachedUniforms", "programReady", "_id$1", "WebGLShaderCache", "vertexShaderStage", "fragmentShaderStage", "materialShaders", "shaderStage", "set", "code", "stage", "WebGLShaderStage", "WebGLPrograms", "clipping", "_programLayers", "_customShaders", "_activeChannels", "programs", "SUPPORTS_VERTEX_TEXTURES", "shaderIDs", "getChannel", "getParameters", "lights", "shadows", "fog", "environment", "envMap", "envMapCubeUVHeight", "shaderID", "morphTextureStride", "customVertexShaderID", "customFragmentShaderID", "IS_INSTANCEDMESH", "IS_BATCHEDMESH", "HAS_MAP", "HAS_MATCAP", "HAS_ENVMAP", "HAS_AOMAP", "HAS_LIGHTMAP", "HAS_BUMPMAP", "HAS_NORMALMAP", "HAS_DISPLACEMENTMAP", "HAS_EMISSIVEMAP", "HAS_METALNESSMAP", "HAS_ROUGHNESSMAP", "HAS_ANISOTROPY", "HAS_CLEARCOAT", "HAS_DISPERSION", "HAS_IRIDESCENCE", "HAS_SHEEN", "HAS_TRANSMISSION", "HAS_ANISOTROPYMAP", "HAS_CLEARCOATMAP", "HAS_CLEARCOAT_NORMALMAP", "HAS_CLEARCOAT_ROUGHNESSMAP", "HAS_IRIDESCENCEMAP", "HAS_IRIDESCENCE_THICKNESSMAP", "HAS_SHEEN_COLORMAP", "HAS_SHEEN_ROUGHNESSMAP", "HAS_SPECULARMAP", "HAS_SPECULAR_COLORMAP", "HAS_SPECULAR_INTENSITYMAP", "HAS_TRANSMISSIONMAP", "HAS_THICKNESSMAP", "HAS_GRADIENTMAP", "HAS_ALPHAMAP", "HAS_ALPHATEST", "HAS_ALPHAHASH", "HAS_EXTENSIONS", "getProgramCacheKey", "getProgramCacheKeyParameters", "getProgramCacheKeyBooleans", "getUniforms", "acquireProgram", "pl", "preexistingProgram", "releaseProgram", "releaseShaderCache", "WebGLProperties", "has", "map", "painterSortStable", "reversePainterSortStable", "WebGLRenderList", "renderItems", "renderItemsIndex", "opaque", "transmissive", "transparent", "init", "getNextRenderItem", "groupOrder", "renderItem", "push", "unshift", "sort", "customOpaqueSort", "customTransparentSort", "finish", "WebGLRenderLists", "lists", "renderCallDepth", "listArray", "list", "UniformsCache", "light", "ShadowUniformsCache", "nextVersion", "shadowCastingAndTexturingLightsFirst", "lightA", "lightB", "WebGLLights", "shadowCache", "vector3", "matrix42", "directionalLength", "pointLength", "spotLength", "rectAreaLength", "hemiLength", "numDirectionalShadows", "numPointShadows", "numSpotShadows", "numSpotMaps", "numSpotShadowsWithMaps", "numLightProbes", "intensity", "shadowMap", "shadow", "shadowUniforms", "hash", "setupView", "WebGLRenderState", "lightsArray", "shadowsArray", "pushLight", "pushShadow", "shadowLight", "setupLights", "setupLightsView", "WebGLRenderStates", "renderStates", "renderStateArray", "renderState", "vertex", "fragment", "WebGLShadowMap", "_frustum2", "_shadowMapSize", "_viewportSize", "_viewport", "_depthMaterial", "_distanceMaterial", "_materialCache", "_maxTextureSize", "shadowSide", "shadowMaterialVertical", "shadowMaterialHorizontal", "fullScreenTri", "fullScreenMesh", "_previousType", "activeCubeFace", "_state", "toVSM", "fromVSM", "shadowFrameExtents", "pars", "viewportCount", "vp", "viewport", "renderObject", "VSMPass", "getDepthMaterial", "customMaterial", "keyA", "keyB", "materialsForVariant", "cachedMaterial", "onMaterialDispose", "shadowCamera", "k", "kl", "depthMaterial", "uuid", "reversedFuncs", "WebGLState", "ColorBuffer", "locked", "currentColorMask", "currentColorClear", "colorMask", "lock", "DepthBuffer", "reversed", "currentDepthMask", "currentDepthFunc", "currentDepthClear", "depthTest", "enable", "disable", "depthMask", "depthFunc", "StencilBuffer", "currentStencilMask", "currentStencilFunc", "currentStencilRef", "currentStencilFuncMask", "currentStencilFail", "currentStencilZFail", "currentStencilZPass", "currentStencilClear", "stencilTest", "stencilMask", "stencilFunc", "stencilRef", "stencilFail", "stencilZFail", "stencilZPass", "colorBuffer", "depthBuffer", "stencilBuffer", "uboBindings", "uboProgramMap", "enabledCapabilities", "currentBoundFramebuffers", "currentDrawbuffers", "defaultDrawbuffers", "currentProgram", "currentBlendingEnabled", "currentBlending", "currentBlendEquation", "currentBlendSrc", "currentBlendDst", "currentBlendEquationAlpha", "currentBlendSrcAlpha", "currentBlendDstAlpha", "currentBlendColor", "currentBlendAlpha", "currentPremultipledAlpha", "currentFlipSided", "currentCullFace", "currentLineWidth", "currentPolygonOffsetFactor", "currentPolygonOffsetUnits", "lineWidthAvailable", "glVersion", "currentTextureSlot", "currentBoundTextures", "scissorParam", "viewportParam", "currentScissor", "currentViewport", "createTexture", "dimensions", "emptyTextures", "setFlipSided", "setCullFace", "setBlending", "bindFramebuffer", "framebuffer", "drawBuffers", "drawBuffers2", "useProgram", "equationToGL", "factorToGL", "blending", "blendEquation", "blendSrc", "blendDst", "blendEquationAlpha", "blendSrcAlpha", "blendDstAlpha", "blendColor", "blendAlpha", "setMaterial", "frontFaceCW", "flipSided", "stencilWrite", "setPolygonOffset", "cullFace", "setLineWidth", "polygonOffset", "factor", "setScissorTest", "scissorTest", "activeTexture", "webglSlot", "bindTexture", "webglType", "webglTexture", "boundTexture", "unbindTexture", "compressedTexImage2D", "error", "compressedTexImage3D", "texSubImage2D", "texSubImage3D", "compressedTexSubImage2D", "compressedTexSubImage3D", "texStorage2D", "texStorage3D", "texImage2D", "texImage3D", "scissor", "scissor2", "viewport2", "updateUBOMapping", "uniformsGroup", "blockIndex", "uniformBlockBinding", "contain", "imageAspect", "cover", "fill", "getByteLength", "typeByteLength", "getTextureTypeByteLength", "WebGLTextures", "_gl", "multisampledRTTExt", "supportsInvalidateFramebuffer", "navigator", "_imageDimensions", "_videoTextures", "_canvas2", "_sources", "useOffscreenCanvas", "createCanvas", "resizeImage", "needsNewCanvas", "maxSize", "getDimensions", "textureNeedsGenerateMipmaps", "generateMipmap", "getInternalFormat", "internalFormatName", "glFormat", "glType", "forceLinearTransfer", "internalFormat", "transfer", "getInternalDepthFormat", "useStencil", "depthType", "glInternalFormat", "getMipLevels", "deallocateTexture", "onRenderTargetDispose", "deallocateRenderTarget", "textureProperties", "webglTextures", "deleteTexture", "renderTargetProperties", "level", "attachmentProperties", "textureUnits", "resetTextureUnits", "allocateTextureUnit", "textureUnit", "getTextureCacheKey", "setTexture2D", "slot", "updateVideoTexture", "uploadTexture", "setTexture2DArray", "setTexture3D", "setTextureCube", "uploadCubeTexture", "wrappingToGL", "filterToGL", "compareToGL", "setTextureParameters", "initTexture", "forceUpload", "textureCacheKey", "sourceProperties", "texturePrimaries", "unpackConversion", "verifyColorSpace", "mipmap", "mipmaps", "useTexStorage", "allocateMemory", "dataReady", "levels", "layerByteLength", "layerData", "isCompressed", "isDataTexture", "cubeImage", "mipmapImage", "setupFrameBufferTexture", "attachment", "textureTarget", "useMultisampledRTT", "getRenderTargetSamples", "setupRenderBufferStorage", "renderbuffer", "isMultisample", "depthTexture", "glAttachmentType", "setupDepthTexture", "webglDepthTexture", "setupDepthRenderbuffer", "isCube", "disposeEvent", "rebindTextures", "colorTexture", "setupRenderTarget", "isMultipleRenderTargets", "texture2", "glTextureType", "updateRenderTargetMipmap", "invalidationArrayRead", "invalidationArrayDraw", "updateMultisampleRenderTarget", "mask", "depthStyle", "convert", "_moveEvent", "WebXRController", "inputSource", "hand", "inputjoint", "referenceSpace", "inputPose", "gripPose", "handPose", "targetRay", "grip", "jointPose", "joint", "indexTip", "thumbTip", "distanceToPinch", "threshold", "_occlusion_vertex", "_occlusion_fragment", "WebXRDepthSensing", "depthData", "texProps", "cameraXR", "WebXRManager", "session", "framebufferScaleFactor", "referenceSpaceType", "foveation", "customReferenceSpace", "pose", "glBinding", "glProjLayer", "glBaseLayer", "xrFrame", "depthSensing", "initialRenderTarget", "newRenderTarget", "controllers", "controllerInputSources", "currentSize", "currentPixelRatio", "cameraL", "cameraR", "_currentDepthNear", "_currentDepthFar", "controller", "onSessionEvent", "controllerIndex", "onSessionEnd", "onInputSourcesChange", "space", "__async", "layerInit", "depthFormat", "glDepthFormat", "projectionlayerInit", "cameraLPos", "cameraRPos", "setProjectionFromUnion", "cameraL2", "cameraR2", "ipd", "projL", "projR", "topFov", "bottomFov", "leftFov", "rightFov", "zOffset", "xOffset", "near2", "far2", "left2", "right2", "top2", "bottom2", "updateCamera", "depthNear", "depthFar", "cameras2", "updateUserCamera", "cameraXR2", "onAnimationFrameCallback", "views", "cameraXRNeedsUpdate", "glSubImage", "enabledFeatures", "_e1", "_m1", "WebGLMaterials", "refreshTransformUniform", "refreshFogUniforms", "refreshMaterialUniforms", "pixelRatio", "transmissionRenderTarget", "refreshUniformsCommon", "refreshUniformsToon", "refreshUniformsPhong", "refreshUniformsStandard", "refreshUniformsPhysical", "refreshUniformsMatcap", "refreshUniformsDistance", "refreshUniformsLine", "refreshUniformsDash", "refreshUniformsPoints", "refreshUniformsSprites", "envMapRotation", "WebGLUniformsGroups", "updateList", "allocatedBindingPoints", "maxBindingPoints", "bind", "webglProgram", "prepareUniformsGroup", "onUniformsGroupsDispose", "updateBufferData", "bindingPointIndex", "allocateBindingPointIndex", "uniformArray", "hasUniformChanged", "arrayOffset", "info2", "getUniformSize", "indexArray", "indexString", "cachedObject", "chunkSize", "chunkOffset2", "chunkPadding", "chunkStart", "chunkOffset", "antialias", "preserveDrawingBuffer", "powerPreference", "failIfMajorPerformanceCaveat", "_alpha", "uintClearColor", "intClearColor", "currentRenderList", "currentRenderState", "renderListStack", "renderStateStack", "_this", "_isContextLost", "_currentActiveCubeFace", "_currentActiveMipmapLevel", "_currentRenderTarget", "_currentMaterialId", "_currentCamera", "_currentViewport", "_currentScissor", "_currentScissorTest", "_currentClearColor", "_currentClearAlpha", "_width", "_height", "_pixelRatio", "_opaqueSort", "_transparentSort", "_scissor", "_scissorTest", "_clippingEnabled", "_localClippingEnabled", "_currentProjectionMatrix", "_projScreenMatrix2", "_vector32", "_vector4", "_emptyScene", "_renderBackground", "getTargetPixelRatio", "getContext", "contextName", "contextAttributes", "onContextLost", "onContextRestore", "onContextCreationError", "programCache", "renderLists", "morphtargets", "bufferRenderer", "indexedBufferRenderer", "uniformsGroups", "initGLContext", "xr", "updateStyle", "boolean", "method", "stencil2", "bits", "isIntegerFormat", "targetFormat", "targetType", "isUnsignedType", "onXRSessionStart", "onXRSessionEnd", "infoAutoReset", "shadowMapEnabled", "shadowMapAutoUpdate", "shadowMapNeedsUpdate", "shadowMapType", "deallocateMaterial", "releaseMaterialProgramReferences", "setProgram", "rangeFactor", "drawStart", "drawEnd", "lineWidth", "drawCount2", "maxInstanceCount", "prepareMaterial", "getProgram", "targetScene", "materials2", "material2", "checkMaterialsReady", "depthSensingMesh", "projectObject", "opaqueObjects", "transmissiveObjects", "camera2", "renderTransmissionPass", "renderScene", "sortObjects", "currentRenderList2", "transparentObjects", "renderObjects", "activeViewport", "currentToneMapping", "currentCameraViewport", "renderTargetNeedsUpdate", "currentSide", "overrideMaterial", "lightsStateVersion", "parameters2", "programCacheKey", "updateCommonMaterialProperties", "materialNeedsLights", "getUniformList", "progUniforms", "vertexAlphas", "vertexTangents", "needsProgramChange", "refreshProgram", "refreshMaterial", "refreshLights", "p_uniforms", "m_uniforms", "uCamPos", "markUniformsLightsNeedsUpdate", "defaultFramebuffer", "useDefaultFramebuffer", "isRenderTarget3D", "__webglFramebuffer", "layer", "activeCubeFaceIndex", "framebuffer2", "glBuffer", "currFramebuffer", "levelScale", "srcTexture", "dstTexture", "srcRegion", "dstPosition", "minX", "minY", "dstX", "dstY", "currentUnpackRowLen", "currentUnpackImageHeight", "currentUnpackSkipPixels", "currentUnpackSkipRows", "currentUnpackSkipImages", "minZ", "dstZ", "glTarget", "_FogExp2", "density", "_Fog", "ib", "_vector$6", "_InterleavedBufferAttribute", "interleavedBuffer", "_geometry", "_intersectPoint", "_worldScale", "_mvPosition", "_alignedPosition", "_rotatedPosition", "_viewWorldMatrix", "_vA", "_vB", "_vC", "_uvA", "_uvB", "_uvC", "float32Array", "transformVertex", "vertexPosition", "mvPosition", "_v1$2", "_v2$1", "hysteresis", "removedElements", "levelDistance", "_basePosition", "_skinIndex", "_skinWeight", "_vector3", "_matrix4", "_vertex", "_sphere$4", "_inverseMatrix$2", "_ray$2", "bindMatrix", "skinWeight", "boneIndex", "_offsetMatrix", "_identityMatrix$1", "_Skeleton", "bones", "boneInverses", "inverse", "bone", "boneMatrices", "boneTexture", "json", "boneInverse", "_instanceLocalMatrix", "_instanceWorldMatrix", "_instanceIntersects", "_box3", "_identity", "_mesh$1", "_sphere$3", "dataIndex", "raycastTimes", "instanceId", "sortOpaque", "sortTransparent", "MultiDrawRenderList", "pool", "item", "_matrix$1", "_invMatrixWorld", "_identityMatrix", "_whiteColor", "_projScreenMatrix$2", "_frustum", "_box$1", "_sphere$2", "_vector$5", "_forward", "_temp", "_renderList", "_mesh", "_batchIntersects", "copyAttributeData", "targetOffset", "vertexCount", "maxVertexCount", "maxIndexCount", "matricesArray", "matricesTexture", "indirectArray", "indirectTexture", "colorsArray", "colorsTexture", "reference", "attributeName", "srcAttribute", "dstAttribute", "batchGeometry", "func", "drawInfo", "instanceDrawInfo", "drawId", "indexCount", "reservedRange", "lastRange", "reservedRanges", "drawRanges", "bounds", "hasIndex", "dstIndex", "srcIndex", "vertexStart", "indexStart", "posAttr", "iv", "l2", "__spreadValues", "inf", "multiDrawStarts", "multiDrawCounts", "perObjectFrustumCulled", "culled", "customSort", "_vStart", "_vEnd", "_inverseMatrix$1", "_ray$1", "_sphere$1", "_intersectPointOnRay", "_intersectPointOnSegment", "lineDistances", "localThreshold", "localThresholdSq", "checkIntersection", "thresholdSq", "_start", "_end", "_inverseMatrix", "_ray", "_sphere", "_position$2", "testPoint", "rayPointDistanceSq", "intersectPoint", "video", "updateVideo", "optionalTarget", "divisions", "lengths", "current", "last", "arcLengths", "targetArcLength", "comparison", "lengthBefore", "segmentLength", "segmentFraction", "t2", "pt1", "pt2", "segments", "closed", "tangents", "binormals", "vec", "mat", "aX", "aY", "xRadius", "yRadius", "aStartAngle", "aEndAngle", "aClockwise", "aRotation", "twoPi", "deltaAngle", "samePoints", "aRadius", "CubicPoly", "c0", "x3", "tension", "dt0", "dt1", "dt2", "t3", "tmp", "px", "py", "pz", "curveType", "intPoint", "pow", "CatmullRom", "QuadraticBezierP0", "QuadraticBezierP1", "QuadraticBezierP2", "QuadraticBezier", "CubicBezierP0", "CubicBezierP1", "CubicBezierP2", "CubicBezierP3", "CubicBezier", "Curves", "curve", "startPoint", "endPoint", "lineType", "curveLengths", "diff", "lens", "sums", "curves", "resolution", "pts", "aCPx", "aCPy", "aCP1x", "aCP1y", "aCP2x", "aCP2y", "npts", "firstPoint", "lastPoint", "_LatheGeometry", "phiStart", "phiLength", "initNormals", "inverseSegments", "vertex2", "curNormal", "prevNormal", "base", "_CapsuleGeometry", "capSegments", "radialSegments", "_CircleGeometry", "thetaStart", "thetaLength", "segment", "_CylinderGeometry", "radiusTop", "radiusBottom", "openEnded", "halfHeight", "generateTorso", "generateCap", "slope", "indexRow", "sinTheta", "cosTheta", "centerIndexStart", "centerIndexEnd", "_ConeGeometry", "_PolyhedronGeometry", "detail", "vertexBuffer", "uvBuffer", "subdivide", "applyRadius", "generateUVs", "detail2", "getVertexByIndex", "subdivideFace", "cols", "aj", "bj", "rows", "pushVertex", "azimuth", "inclination", "correctUVs", "correctSeam", "centroid", "azi", "correctUV", "azimuth2", "_DodecahedronGeometry", "_v0", "_v1$1", "_normal", "_triangle", "thresholdAngle", "thresholdDot", "indexAttr", "positionAttr", "indexArr", "vertKeys", "hashes", "edgeData", "jNext", "vecHash0", "vecHash1", "reverseHash", "index0", "holesPts", "hole", "Earcut", "holeIndices", "dim", "hasHoles", "outerLen", "outerNode", "linkedList", "triangles", "maxX", "maxY", "invSize", "eliminateHoles", "earcutLinked", "clockwise", "signedArea", "insertNode", "equals", "removeNode", "filterPoints", "again", "area", "ear", "pass", "indexCurve", "stop", "prev", "isEarHashed", "isEar", "cureLocalIntersections", "splitEarcut", "pointInTriangle", "zOrder", "maxZ", "intersects", "locallyInside", "isValidDiagonal", "splitPolygon", "queue", "getLeftmost", "compareX", "eliminateHole", "bridge", "findHoleBridge", "bridgeReverse", "hx", "hy", "mx", "my", "tanMin", "tan", "sectorContainsSector", "sortLinked", "tail", "numMerges", "pSize", "qSize", "inSize", "leftmost", "px2", "py2", "intersectsPolygon", "middleInside", "q1", "q2", "o1", "sign", "o2", "o3", "o4", "onSegment", "num", "inside", "Node", "an", "bp", "_ShapeUtils", "contour", "holes", "faces", "removeDupEndPts", "addContour", "holeIndex", "_ExtrudeGeometry", "verticesArray", "uvArray", "addShape", "placeholder", "curveSegments", "steps", "bevelEnabled", "bevelThickness", "bevelSize", "bevelOffset", "bevelSegments", "extrudePath", "uvgen", "WorldUVGenerator", "extrudePts", "extrudeByPath", "splineTube", "binormal", "position2", "shapePoints", "hl", "ahole", "scalePt2", "pt", "vlen", "flen", "getBevelVec", "inPt", "inPrev", "inNext", "v_trans_x", "v_trans_y", "shrink_by", "v_prev_x", "v_prev_y", "v_next_x", "v_next_y", "v_prev_lensq", "collinear0", "v_prev_len", "v_next_len", "ptPrevShift_x", "ptPrevShift_y", "ptNextShift_x", "ptNextShift_y", "sf", "v_trans_lensq", "direction_eq", "contourMovements", "holesMovements", "oneHoleMovements", "verticesMovements", "bs2", "vert", "bs", "buildLidFaces", "buildSideFaces", "f3", "layeroffset", "sidewalls", "contour2", "sl", "slen1", "slen2", "f4", "addVertex", "nextIndex", "addUV", "vector2", "toJSON$1", "geometryShapes", "indexA", "indexB", "indexC", "a_x", "a_y", "b_x", "b_y", "c_x", "c_y", "indexD", "a_z", "b_z", "c_z", "d_x", "d_y", "d_z", "_IcosahedronGeometry", "_OctahedronGeometry", "_RingGeometry", "innerRadius", "outerRadius", "thetaSegments", "phiSegments", "radiusStep", "thetaSegmentLevel", "_ShapeGeometry", "indexOffset", "shapeVertices", "shapeHoles", "shapeHole", "toJSON", "_SphereGeometry", "thetaEnd", "grid", "verticesRow", "uOffset", "_TetrahedronGeometry", "_TorusGeometry", "tube", "tubularSegments", "arc", "_TorusKnotGeometry", "P1", "P2", "B", "T", "N", "calculatePositionOnCurve", "cu", "su", "quOverP", "cs", "_TubeGeometry", "frames", "P", "generateBufferData", "generateSegment", "generateIndices", "edges", "o", "ol", "isUniqueEdge", "hash1", "hash2", "Geometries", "reflectivity", "convertArray", "forceClone", "isTypedArray", "getKeyframeOrder", "times", "compareTime", "sortedArray", "nValues", "srcOffset", "flattenJSON", "jsonKeys", "valuePropertyName", "subclip", "sourceClip", "startFrame", "endFrame", "fps", "clip", "tracks", "track", "valueSize", "minStartTime", "makeClipAdditive", "targetClip", "referenceFrame", "referenceClip", "numTracks", "referenceTime", "referenceTrack", "referenceTrackType", "targetTrack", "referenceOffset", "referenceValueSize", "targetValueSize", "lastIndex", "referenceValue", "startIndex", "endIndex", "interpolant", "numTimes", "valueStart", "valueEnd", "parameterPositions", "sampleValues", "sampleSize", "resultBuffer", "pp", "validate_interval", "seek", "linear_scan", "forward_scan", "giveUpAt", "t1global", "mid", "iPrev", "iNext", "tPrev", "tNext", "halfDt", "o0", "oP", "oN", "wP", "wN", "ppp", "sP", "sN", "offset1", "offset0", "weight1", "weight0", "interpolation", "trackType", "factoryMethod", "timeOffset", "timeScale", "startTime", "endTime", "nKeys", "valid", "prevTime", "currTime", "smoothInterpolation", "writeIndex", "keep", "timeNext", "offsetP", "offsetN", "readOffset", "writeOffset", "TypedKeyframeTrack", "duration", "blendMode", "jsonTracks", "frameTime", "parseKeyframeTrack", "clipTracks", "morphTargetSequence", "noLoop", "numMorphTargets", "objectOrClipArray", "clipArray", "animationToMorphTargets", "pattern", "parts", "animationMorphTargets", "clips", "addNonemptyTrack", "trackName", "animationKeys", "propertyName", "destTracks", "clipName", "hierarchyTracks", "morphTargetNames", "morphTargetName", "animationKey", "boneName", "getTrackTypeForValueTypeName", "typeName", "file", "onLoad", "onProgress", "onError", "isLoading", "itemsLoaded", "itemsTotal", "urlModifier", "handlers", "transform", "regex", "loader", "manager", "crossOrigin", "resourcePath", "requestHeader", "loading", "HttpError", "response", "req", "mimeType", "responseType", "callbacks", "reader", "contentLength", "total", "lengthComputable", "loaded", "stream", "readData", "done", "text", "exec", "label", "decoder", "err", "loadTexture", "texDatas", "onImageLoad", "removeEventListeners", "onImageError", "urls", "texData", "skyColor", "groundColor", "_projScreenMatrix$1", "_lightPositionWorld$1", "_lookTarget$1", "LightShadow", "shadowMatrix", "viewportIndex", "SpotLightShadow", "penumbra", "decay", "power", "_projScreenMatrix", "_lightPositionWorld", "_lookTarget", "PointLightShadow", "DirectionalLightShadow", "coefficients", "coeff", "sh", "shBasis", "_MaterialLoader", "getTexture", "normalScale", "materialLib", "interleavedBufferMap", "arrayBufferMap", "getInterleavedBuffer", "json2", "getArrayBuffer", "arrayBuffer", "typedArray", "bufferAttribute", "bufferAttributeConstr", "metadata", "hasImages", "bufferGeometryLoader", "loadImage", "deserializeImage", "imageArray", "currentUrl", "deserializedImage", "parseConstant", "TEXTURE_MAPPING", "TEXTURE_WRAPPING", "TEXTURE_FILTER", "getGeometry", "getMaterial", "instanceMatrix", "instanceColor", "objectAnimations", "imageBitmap", "fetchOptions", "promise", "res", "blob", "_context", "window", "bufferCopy", "audioBuffer", "handleError", "_eyeRight", "_eyeLeft", "_projectionMatrix", "eyeSepHalf", "eyeSepOnProjection", "ymax", "xmin", "xmax", "autoStart", "now", "newTime", "_position$1", "_quaternion$1", "_scale$1", "_orientation$1", "audioNode", "mediaElement", "mediaStream", "delay", "filter", "_position", "_quaternion", "_scale", "_orientation", "coneInnerAngle", "coneOuterAngle", "coneOuterGain", "panner", "audio", "fftSize", "binding", "mixFunction", "mixFunctionAdditive", "setIdentity", "accuIndex", "currentWeight", "mix", "weightAdditive", "originalValueOffset", "targetIndex", "workOffset", "_RESERVED_CHARS_RE", "_reservedRe", "_wordChar", "_wordCharOrDot", "_directoryRe", "_nodeRe", "_objectRe", "_propertyRe", "_trackRe", "_supportedObjectNames", "Composite", "targetGroup", "optionalParsedPath", "parsedPath", "firstValidIndex", "bindings", "_PropertyBinding", "rootNode", "root", "matches", "results", "lastDot", "objectName", "nodeName", "searchNodeSubtree", "childNode", "subTreeNode", "dest", "targetArray", "sourceArray", "targetObject", "propertyIndex", "objectIndex", "nodeProperty", "versioning", "bindingType", "indicesByUUID", "paths", "parsedPaths", "nBindings", "knownObject", "nObjects", "nCachedObjects", "firstActiveIndex", "lastCachedObject", "bindingsForPath", "lastCached", "lastCachedIndex", "firstActiveObject", "firstActive", "lastObject", "indicesByPath", "lastBindingsIndex", "lastBindings", "lastBindingsPath", "mixer", "localRoot", "nTracks", "interpolants", "interpolantSettings", "repetitions", "fadeOutAction", "warp", "fadeInDuration", "fadeOutDuration", "startEndRatio", "endStartRatio", "fadeInAction", "weightInterpolant", "action", "startTimeScale", "endTimeScale", "now2", "timeScaleInterpolant", "deltaTime", "timeDirection", "timeRunning", "clipTime", "propertyMixers", "interpolantValue", "loop", "loopCount", "pingPong", "handle_stop", "loopDelta", "pending", "atStart", "atEnd", "settings", "weightNow", "weightThen", "_controlInterpolantsResultBuffer", "prototypeAction", "rootUuid", "bindingsByRoot", "bindingsByName", "clipUuid", "actionsForClip", "actions", "actionsByClip", "knownActions", "lastInactiveAction", "cacheIndex", "knownActionsForClip", "lastKnownAction", "byClipCacheIndex", "actionByRoot", "prevIndex", "lastActiveIndex", "firstInactiveAction", "firstInactiveIndex", "lastActiveAction", "bindingByName", "propBinding", "lastInactiveBinding", "firstInactiveBinding", "lastActiveBinding", "lastActiveInterpolant", "optionalRoot", "clipObject", "existingAction", "newAction", "nActions", "timeInSeconds", "actionsToRemove", "_Uniform", "_id", "uniformsSource", "elementSize", "_matrix", "coords", "intersect", "ascSort", "propagate", "other", "_Matrix2", "_vector$4", "_startP", "_startEnd", "clampToLine", "startEnd2", "_vector$3", "positions", "coneLength", "coneWidth", "_vector$2", "_boneMatrix", "_matrixWorldInv", "getBoneList", "colors", "boneList", "sphereSize", "_vector$1", "_color1", "_color2", "sectors", "rings", "_v1", "_v2", "_v3", "_vector", "_camera", "pointMap", "addLine", "addPoint", "colorFrustum", "colorCone", "colorUp", "colorTarget", "colorCross", "cone", "cross", "colorAttribute", "setPoint", "_box", "positions2", "_axis", "_lineGeometry", "_coneGeometry", "headLength", "headWidth", "xAxisColor", "yAxisColor", "zAxisColor", "isCCW", "toShapesNoHoles", "inSubpaths", "shapes2", "tmpPath2", "tmpShape2", "isPointInsidePolygon", "inPolygon", "polyLen", "edgeLowPt", "edgeHighPt", "edgeDx", "edgeDy", "perpEdge", "isClockWise", "subPaths", "solid", "tmpPath", "tmpShape", "holesFirst", "betterShapeHoles", "newShapes", "newShapeHoles", "mainIdx", "tmpPoints", "ambiguous", "toChange", "sIdx", "sLen", "sho", "hIdx", "ho", "hole_unassigned", "s2Idx", "tmpHoles", "domElement", "__spreadProps", "createStore", "createState", "state", "listeners", "setState", "partial", "replace", "nextState", "previousState", "listener", "getState", "subscribeWithSelector", "selector", "equalityFn", "currentSlice", "listenerToAdd", "nextSlice", "previousSlice", "api", "isSSR", "window", "useIsomorphicLayoutEffect", "ue", "fe", "create", "useStore2", "forceUpdate", "le", "c", "stateRef", "pe", "selectorRef", "equalityFnRef", "erroredRef", "currentSliceRef", "newStateSlice", "hasNewStateSlice", "stateBeforeSubscriptionRef", "nextStateSlice", "unsubscribe", "sliceToReturn", "ne", "items", "done", "isPromise", "promise", "globalCache", "shallowEqualArrays", "arrA", "arrB", "equal", "a", "b", "len", "i2", "query", "fn", "keys2", "preload2", "config", "entry2", "entry", "index", "response", "error", "suspend", "preload", "clear", "scheduler_development_exports", "__export", "scheduler_development_default", "__export1", "__export2", "__export3", "__export4", "__export5", "__export6", "__export7", "__export8", "__export9", "__export10", "__export11", "__export12", "__export0", "__export13", "__export14", "__export15", "__export16", "__export17", "__export18", "exports", "module", "value", "enableSchedulerDebugging", "enableProfiling", "frameYieldMs", "push", "heap", "node", "siftUp", "peek", "pop", "first", "last", "siftDown", "parentIndex", "parent", "compare", "length", "halfLength", "leftIndex", "left", "rightIndex", "right", "diff", "ImmediatePriority", "UserBlockingPriority", "NormalPriority", "LowPriority", "IdlePriority", "markTaskErrored", "task", "ms", "hasPerformanceNow", "localPerformance", "localDate", "initialTime", "maxSigned31BitInt", "IMMEDIATE_PRIORITY_TIMEOUT", "USER_BLOCKING_PRIORITY_TIMEOUT", "NORMAL_PRIORITY_TIMEOUT", "LOW_PRIORITY_TIMEOUT", "IDLE_PRIORITY_TIMEOUT", "taskQueue", "timerQueue", "taskIdCounter", "currentTask", "currentPriorityLevel", "isPerformingWork", "isHostCallbackScheduled", "isHostTimeoutScheduled", "localSetTimeout", "localClearTimeout", "localSetImmediate", "isInputPending", "navigator", "advanceTimers", "currentTime", "timer", "handleTimeout", "requestHostCallback", "flushWork", "firstTimer", "requestHostTimeout", "hasTimeRemaining", "initialTime2", "cancelHostTimeout", "previousPriorityLevel", "workLoop", "shouldYieldToHost", "callback", "didUserCallbackTimeout", "continuationCallback", "unstable_runWithPriority", "priorityLevel", "eventHandler", "unstable_next", "unstable_wrapCallback", "parentPriorityLevel", "unstable_scheduleCallback", "options", "startTime2", "delay", "timeout", "expirationTime", "newTask", "unstable_pauseExecution", "unstable_continueExecution", "unstable_getFirstCallbackNode", "unstable_cancelCallback", "unstable_getCurrentPriorityLevel", "isMessageLoopRunning", "scheduledHostCallback", "taskTimeoutID", "frameInterval", "startTime", "timeElapsed", "requestPaint", "forceFrameRate", "fps", "performWorkUntilDeadline", "hasMoreWork", "schedulePerformWorkUntilDeadline", "channel", "port", "unstable_requestPaint", "unstable_Profiling", "exports2", "module2", "f", "d", "e", "g", "h", "k", "w", "m", "C", "n", "x", "l", "p", "q", "r", "t", "u", "v", "y", "z", "A", "B", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "__export02", "__export19", "__export22", "__export32", "__export42", "__export52", "__export62", "__export72", "__export82", "__export92", "__export102", "__export112", "__export122", "__export132", "__export142", "__export152", "__export162", "__export172", "__export182", "scheduler_production_min_default", "__cjs_default__", "requiredModule", "Object2", "global", "isEsModule", "specifiers", "hasNamedExports", "hasDefaultExport", "names", "k2", "symbols", "exports3", "module3", "scheduler_default", "catalogue", "extend", "objects", "createRenderer", "_roots", "_getEventPriority", "createInstance", "type", "_a", "root", "_b", "args", "attach2", "props", "__objRest", "name", "instance", "object", "prepare", "target", "BufferGeometry", "Material", "applyProps$1", "appendChild", "parentInstance", "child", "added", "_child$__r3f", "_parentInstance$__r3f", "attach", "updateInstance", "invalidateInstance", "insertBefore", "beforeChild", "_child$__r3f2", "_parentInstance$__r3f2", "restSiblings", "sibling", "removeRecursive", "array", "dispose2", "removeChild", "_parentInstance$__r3f3", "_child$__r3f3", "_child$__r3f5", "detach", "_child$__r3f4", "removeInteractivity", "findInitialRoot", "isPrimitive", "shouldDispose", "_child$__r3f6", "switchInstance", "newProps", "fiber", "_instance$__r3f", "newInstance", "fiber2", "handleTextInstance", "container", "scene", "parentHostContext", "_instance$__r3f2", "_type", "oldProps", "_instance$__r3f3", "argsNew", "cN", "restNew", "argsOld", "cO", "restOld", "diffProps", "reconstruct", "_oldProps", "_props", "_int", "_instance$__r3f4", "localState", "_instance$__r3f5", "_instance$__r3f6", "is", "_window$document", "_window$navigator", "hasColorSpace", "getColorManagement", "_ColorManagement", "isOrthographicCamera", "def", "isRef", "obj", "useIsomorphicLayoutEffect2", "useMutableCallback", "ref", "Block", "set", "ErrorBoundary", "err", "DEFAULT", "DEFAULTS", "isDiffSet", "calculateDpr", "dpr", "_window$devicePixelRa", "getRootState", "_r3f", "arrays", "strict", "isObj", "isArr", "buildGraph", "data", "dispose", "__spreadValues", "resolve", "key", "entries", "acc", "key2", "INDEX_REGEX", "target2", "previous", "_c", "remove", "kN", "rN", "_d", "cP", "kP", "rP", "changes", "previousKeys", "entries2", "prop", "value2", "memoized", "__DEV__", "rootState", "prevHandlers", "isEvent", "SRGBColorSpace", "LinearSRGBColorSpace", "currentInstance", "targetProp", "reverseEntries", "ctor", "Layers", "isColor", "Color", "Texture", "RGBAFormat", "UnsignedByteType", "texture", "internal", "_instance$__r3f3$root", "updateCamera", "camera", "size", "makeId", "event", "getEventPriority", "_globalScope$event", "globalScope", "i", "releaseInternalPointerCapture", "capturedMap", "captures", "pointerId", "captureData", "store", "o", "createEvents", "calculateDistance", "dx", "dy", "filterPointerEvents", "intersect", "filter", "duplicates", "intersections", "eventsObjects", "state2", "handleRaycast", "_state$previousRoot", "hits", "aState", "bState", "item", "id", "hit", "eventObject", "_r3f2", "__spreadProps", "handleIntersects", "delta", "raycaster", "pointer", "unprojectedPoint", "Vector3", "hasPointerCapture", "_internal$capturedMap", "_internal$capturedMap2", "setPointerCapture", "releasePointerCapture", "extractEventProps", "property", "raycastEvent", "capturesForPointer", "higher", "cancelPointer", "hoveredObj", "handlers", "pointerMissed", "handlePointer", "onPointerMissed", "isPointerMove", "isClickEvent", "onIntersect", "hoveredItem", "handler", "isRenderer", "context", "createStore2", "invalidate2", "advance2", "get", "position", "defaultTarget", "tempTarget", "getCurrentViewport", "width", "height", "top", "aspect", "distance", "fov", "h2", "performanceTimeout", "setPerformanceCurrent", "current", "Vector2", "frames", "timestamp", "runGlobalEffects", "Clock", "events", "updateStyle", "resolved", "frameloop", "clock", "W", "priority", "internal2", "s", "oldSize", "oldDpr", "oldCamera", "viewport", "gl", "_size$updateStyle", "globalEffects", "globalAfterEffects", "globalTailEffects", "run", "effects", "flushGlobalEffects", "subscribers", "subscription", "render$1", "frame", "createLoop", "roots2", "running", "useFrameInProgress", "repeat", "loop", "_state$gl$xr", "_state$gl$xr2", "frame2", "useStore", "re", "useThree", "useFrame", "renderPriority", "subscribe", "memoizedLoaders", "loadingFn", "extensions", "onProgress", "Proto", "input", "loader", "input2", "res", "reject", "useLoader", "results", "roots", "invalidate", "advance", "reconciler", "applyProps", "shallowLoose", "createRendererInstance", "canvas", "customRenderer", "WebGLRenderer", "computeInitialSize", "defaultSize", "defaultStyle", "createRoot", "prevRoot", "prevFiber", "prevStore", "logRecoverableError", "onCreated", "configured", "lastCamera", "glConfig", "propsSize", "sceneOptions", "onCreatedCallback", "shadows", "linear", "flat", "legacy", "orthographic", "performance2", "raycastOptions", "cameraOptions", "Raycaster", "params", "isCamera", "Camera", "OrthographicCamera", "PerspectiveCamera", "Scene", "_gl$xr", "handleXRFrame", "handleSessionChange", "xr", "gl2", "oldEnabled", "oldType", "PCFSoftShadowMap", "_types$shadows", "types", "BasicShadowMap", "PCFShadowMap", "VSMShadowMap", "ColorManagement", "NoToneMapping", "ACESFilmicToneMapping", "children", "Provider", "unmountComponentAtNode", "rootElement", "_state$gl", "_state$gl$renderLists", "_state$gl2", "_state$gl3", "me", "DOM_EVENTS", "createPointerEvents", "_internal$lastEvent", "_events$handlers", "eventName", "passive", "_events$handlers2", "exports4", "module4", "debounce", "func", "wait", "immediate", "context2", "result", "later", "debounced", "callNow", "debounce_default", "__defProp", "__defProps", "__getOwnPropDescs", "__getOwnPropSymbols", "__hasOwnProp", "__propIsEnum", "__defNormalProp", "__spreadValues2", "__spreadProps2", "traverseFiber", "ascending", "match", "wrapContext", "FiberContext", "FiberProvider", "ReactCurrentOwner", "ReactCurrentDispatcher", "useFiber", "ae", "se", "useContextBridge", "contexts", "ye", "Prev", "useMeasure", "debounce2", "scroll", "polyfill", "offsetSize", "ResizeObserver", "bounds", "scrollDebounce", "resizeDebounce", "mounted", "forceRefresh", "resizeChange", "scrollChange", "bottom", "y2", "areBoundsEqual", "removeListeners", "element", "addListeners", "_state$current$resize", "scrollContainer", "findScrollContainers", "useOnWindowScroll", "useOnWindowResize", "onWindowResize", "cb", "onScroll", "enabled", "overflow", "overflowX", "overflowY", "keys", "CanvasImpl", "Y", "forwardedRef", "fallback", "resize", "style", "eventSource", "eventPrefix", "three_module_exports", "Bridge", "containerRef", "containerRect", "canvasRef", "divRef", "ce", "handlePointerMissed", "block", "setBlock", "setError", "Canvas2", "canvasProps", "pixelDensity", "fov", "defaultPlanesZoom", "defaultSphereDistance", "zoomOutPlanes", "zoomOutSphere", "envBasePath", "ShaderGradientCanvas", "children", "style", "pixelDensity", "fov", "pointerEvents", "className", "useShaderChunkFix", "p", "Canvas2", "__spreadProps", "__spreadValues", "canvasProps", "ue", "ShaderChunk", "Pass", "_camera", "OrthographicCamera", "_geometry", "BufferGeometry", "Float32BufferAttribute", "FullScreenQuad", "material", "Mesh", "renderer", "value", "MaskPass", "Pass", "scene", "camera", "renderer", "writeBuffer", "readBuffer", "context", "state", "writeValue", "clearValue", "ClearMaskPass", "ShaderPass", "Pass", "shader", "textureID", "ShaderMaterial", "UniformsUtils", "FullScreenQuad", "renderer", "writeBuffer", "readBuffer", "CopyShader", "EffectComposer", "renderer", "renderTarget", "parameters", "LinearFilter", "RGBAFormat", "size", "Vector2", "WebGLRenderTarget", "CopyShader", "ShaderPass", "Clock", "tmp", "pass", "index", "passIndex", "i", "deltaTime", "currentRenderTarget", "maskActive", "il", "context", "stencil", "MaskPass", "ClearMaskPass", "width", "height", "effectiveWidth", "effectiveHeight", "pixelRatio", "_camera", "OrthographicCamera", "_geometry", "BufferGeometry", "Float32BufferAttribute", "RenderPass", "Pass", "scene", "camera", "overrideMaterial", "clearColor", "clearAlpha", "Color", "renderer", "writeBuffer", "readBuffer", "oldAutoClear", "oldClearAlpha", "oldOverrideMaterial", "HalftoneShader", "Pass", "_camera", "OrthographicCamera", "_geometry", "BufferGeometry", "Float32BufferAttribute", "FullScreenQuad", "material", "Mesh", "renderer", "value", "BlendFunction", "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", "BlendFunction", "BlendMode", "EventDispatcher", "blendFunction", "opacity", "Uniform", "usePassedMeshSize", "HalftonePass", "Pass", "width", "height", "params", "HalftoneShader", "UniformsUtils", "ShaderMaterial", "FullScreenQuad", "BlendMode", "BlendFunction", "renderer", "writeBuffer", "readBuffer", "alpha", "frameBufferType", "inputBuffer", "deltaTime", "PostProcessing", "disable", "gl", "scene", "camera", "size", "useThree", "composer", "se", "effectComposer", "EffectComposer", "RenderPass", "halftoneParams", "halftonePass", "HalftonePass", "ue", "useFrame", "_", "delta", "p", "l", "dToR", "d", "dToRArr", "degrees", "formatUrlString", "urlString", "useCameraAnimation", "type", "cAzimuthAngle", "cPolarAngle", "cDistance", "cameraZoom", "zoomOut", "enableTransition", "ref", "pe", "useFrame", "state", "delta", "ue", "control", "dToR", "zoomOutSphere", "zoomOutPlanes", "defaultSphereDistance", "defaultPlanesZoom", "MOUSE_BUTTON", "ACTION", "DOLLY_DIRECTION", "isPerspectiveCamera", "camera", "isOrthographicCamera", "PI_2", "PI_HALF", "EPSILON", "DEG2RAD", "clamp", "value", "min", "max", "approxZero", "number", "error", "approxEquals", "a", "b", "roundToStep", "step", "infinityToMaxNumber", "maxNumberToInfinity", "smoothDamp", "current", "target", "currentVelocityRef", "smoothTime", "maxSpeed", "deltaTime", "omega", "x", "exp", "change", "originalTo", "maxChange", "temp", "output", "smoothDampVec3", "out", "targetX", "targetY", "targetZ", "changeX", "changeY", "changeZ", "originalToX", "originalToY", "originalToZ", "maxChangeSq", "magnitudeSq", "magnitude", "tempX", "tempY", "tempZ", "origMinusCurrentX", "origMinusCurrentY", "origMinusCurrentZ", "outMinusOrigX", "outMinusOrigY", "outMinusOrigZ", "extractClientCoordFromEvent", "pointers", "pointer", "notSupportedInOrthographicCamera", "message", "EventDispatcher", "type", "listener", "listeners", "listenerArray", "index", "event", "array", "i", "l", "_a", "VERSION", "TOUCH_DOLLY_FACTOR", "isMac", "THREE", "_ORIGIN", "_AXIS_Y", "_AXIS_Z", "_v2", "_v3A", "_v3B", "_v3C", "_cameraDirection", "_xColumn", "_yColumn", "_zColumn", "_deltaTarget", "_deltaOffset", "_sphericalA", "_sphericalB", "_box3A", "_box3B", "_sphere", "_quaternionA", "_quaternionB", "_rotationMatrix", "_raycaster", "CameraControls", "_CameraControls", "libs", "domElement", "deltaX", "deltaY", "dragToOffset", "truckX", "pedestalY", "offset", "fov", "targetDistance", "camera2", "theta", "phi", "delta", "dollyScale", "lastDistance", "distance", "clampedDistance", "overflowedDistance", "zoomScale", "lastZoom", "zoom", "dragStartPosition", "lastDragPosition", "dollyStart", "onPointerDown", "elRect", "left", "top", "mouseButton", "zombiePointer", "onPointerMove", "onPointerUp", "startDragging", "pointerId", "dragging", "endDragging", "lastScrollTimeStamp", "onMouseWheel", "now", "deltaYFactor", "y", "onContextMenu", "dx", "dy", "lockedPointer", "dollyX", "dollyY", "dollyDirection", "dollyDelta", "onPointerLockChange", "onPointerLockError", "_a2", "_b", "_c", "domElement2", "enabled", "azimuthAngle", "polarAngle", "boundaryEnclosesCamera", "interactiveArea", "enableTransition", "resolveImmediately", "lastRadius", "maxDistanceByCollisionTest", "isCollided", "zoomStep", "to", "height", "z", "position", "box3OrObject", "cover", "paddingLeft", "paddingRight", "paddingBottom", "paddingTop", "promises", "aabb", "normal", "rotation", "viewFromPolar", "bb", "bbSize", "center", "width", "sphereOrMesh", "boundingSphere", "distanceToFit", "diameter", "positionX", "positionY", "positionZ", "positionAX", "positionAY", "positionAZ", "targetAX", "targetAY", "targetAZ", "positionBX", "positionBY", "positionBZ", "targetBX", "targetBY", "targetBZ", "t", "targetA", "positionA", "targetB", "positionB", "deltaTheta", "deltaPhi", "deltaRadius", "pos", "promise", "cameraToPoint", "box3", "viewportOrX", "depth", "boundingRectAspect", "aspect", "radius", "vFOV", "hFOV", "receiveEndValue", "cameraDirection", "side", "deltaTarget", "deltaOffset", "deltaZoom", "dollyControlAmount", "planeX", "planeY", "worldToScreen", "lerpRatio", "cursor", "newTargetEnd", "isMin", "isMax", "dollyAmount", "targetEndDiff", "worldCursorPosition", "quaternion", "prevPlaneConstant", "newPlaneConstant", "pullBack", "maxDistance", "updated", "json", "obj", "activePointer", "friction", "offsetLength2", "newTarget", "deltaClampedTarget", "deltaClampedTargetLength2", "offsetFactor", "near", "heightHalf", "widthHalf", "zoomInv", "right", "bottom", "rayDirection", "nearPlaneCorner", "origin", "intersects", "rect", "resolve", "onResolve", "_domElement", "_", "object3d", "object", "maxRadiusSq", "mesh", "geometry", "CameraControl", "props", "__objRest", "three_module_exports", "extend", "useThree", "state", "gl", "ref", "useCameraAnimation", "p", "Controls", "props", "p", "l", "CameraControl", "__spreadValues", "RGBELoader", "DataTextureLoader", "manager", "HalfFloatType", "buffer", "rgbe_error", "rgbe_error_code", "msg", "NEWLINE", "fgets", "buffer2", "lineLimit", "consume", "p", "i", "len", "s", "chunk", "RGBE_ReadHeader", "magic_token_re", "gamma_re", "exposure_re", "format_re", "dimensions_re", "header", "line", "match", "RGBE_ReadPixels_RLE", "w2", "h2", "scanline_width", "data_rgba", "offset", "pos", "ptr_end", "rgbeStart", "scanline_buffer", "num_scanlines", "ptr", "count", "isEncodedRun", "byteValue", "l", "off", "RGBEByteToRGBFloat", "sourceArray", "sourceOffset", "destArray", "destOffset", "e", "scale", "RGBEByteToRGBHalf", "DataUtils", "byteArray", "rgbe_header_info", "w", "h", "image_rgba_data", "data", "type", "numElements", "FloatType", "floatArray", "j", "halfArray", "value", "url", "onLoad", "onProgress", "onError", "onLoadCallback", "texture", "texData", "LinearFilter", "useRGBELoader", "file", "path", "useLoader", "loader", "isRef", "obj", "resolveScene", "scene", "EnvironmentMap", "background", "envPreset", "city", "useRGBELoader", "envBasePath", "dawn", "lobby", "map", "defaultScene", "useThree", "state", "e", "target", "oldbg", "oldenv", "texture", "EquirectangularReflectionMapping", "Lights", "lightType", "brightness", "envPreset", "u", "l", "p", "L", "Loader", "EnvironmentMap", "vertex_default", "fragment_default", "vertexSphere_default", "fragmentSphere_default", "meshCount", "Geometry", "type", "u", "l", "p", "hexToRgb", "hex", "result", "rgbStringToRgb", "rgbString", "colorToRgb", "color", "formatColor", "Materials", "animate", "uniforms", "vertexShader", "fragmentShader", "onInit", "material", "se", "entries", "colors", "uC1", "colorToRgb", "uC2", "uC3", "rgbColors", "formatColor", "uniformValues", "acc", "name", "value", "uniform", "UniformsUtils", "__spreadValues", "material2", "MeshPhysicalMaterial", "DoubleSide", "shader", "v", "ue", "useFrame", "clock", "p", "Mesh", "animate", "positionX", "positionY", "positionZ", "rotationX", "rotationY", "rotationZ", "type", "color1", "color2", "color3", "uTime", "uSpeed", "uDensity", "uStrength", "uFrequency", "uAmplitude", "u", "dToRArr", "p", "Geometry", "Materials", "vertexSphere_default", "vertex_default", "fragmentSphere_default", "fragment_default", "material", "filter_obj_exports", "__export", "filter_obj_default", "exports", "module", "value", "obj", "predicate", "ret", "keys", "isArr", "i", "key", "val", "split_on_first_exports", "split_on_first_default", "exports2", "module2", "string", "separator", "separatorIndex", "decode_uri_component_exports", "decode_uri_component_default", "exports3", "module3", "token", "singleMatcher", "multiMatcher", "decodeComponents", "components", "split", "left", "right", "decode", "input", "tokens", "customDecodeURIComponent", "replaceMap", "match", "result", "entries", "encodedURI", "strict_uri_encode_exports", "strict_uri_encode_default", "exports4", "module4", "str", "x", "__cjs_default__", "requiredModule", "Object2", "window", "global", "isEsModule", "specifiers", "hasNamedExports", "hasDefaultExport", "names", "k", "symbols", "exports5", "module5", "strictUriEncode", "decodeComponent", "splitOnFirst", "filterObject", "isNullOrUndefined", "encodeFragmentIdentifier", "encoderForArrayFormat", "options", "index", "encode", "keyValueSep", "parserForArrayFormat", "accumulator", "isArray", "isEncodedArray", "decode2", "newValue", "item", "arrayValue", "validateArrayFormatSeparator", "keysSorter", "a", "b", "removeHash", "hashStart", "getHash", "url", "hash", "extract", "queryStart", "parseValue", "parse", "query", "formatter", "param", "object", "shouldFilter", "objectCopy", "url_", "queryFromUrl", "parsedQueryFromUrl", "queryString", "filter", "fragmentIdentifier", "exclusionFilter", "__export0", "__export1", "__export2", "__export3", "__export4", "__export5", "__export6", "query_string_default", "presets", "presetsArray", "presets", "ShaderGradient", "passedProps", "_a", "__spreadValues", "presets", "control", "urlString", "props", "__objRest", "__export1", "formatUrlString", "_b", "lightType", "envPreset", "brightness", "grain", "toggleAxis", "others", "u", "l", "p", "Mesh", "Lights", "PostProcessing", "Controls", "FramerShaderGradient", "_a", "_b", "position", "rotation", "cameraAngle", "noise", "rest", "__objRest", "positionX", "positionY", "positionZ", "rotationX", "rotationY", "rotationZ", "cAzimuthAngle", "cPolarAngle", "uDensity", "uStrength", "p", "ShaderGradient", "__spreadValues", "ControlType", "props", "ShaderGradient", "props", "p", "ShaderGradientCanvas", "FramerShaderGradient", "addPropertyControls"]
}
