diff --git a/assets/index-4eee8af0.js b/assets/index-a6bb92a0.js similarity index 81% rename from assets/index-4eee8af0.js rename to assets/index-a6bb92a0.js index 90c566c..2b3d314 100644 --- a/assets/index-4eee8af0.js +++ b/assets/index-a6bb92a0.js @@ -1,4 +1,4 @@ -(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))i(s);new MutationObserver(s=>{for(const r of s)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function t(s){const r={};return s.integrity&&(r.integrity=s.integrity),s.referrerPolicy&&(r.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?r.credentials="include":s.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(s){if(s.ep)return;s.ep=!0;const r=t(s);fetch(s.href,r)}})();var UM=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Gb(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var fS={exports:{}},IA={},bS={exports:{}},Mt={};/** +(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))i(s);new MutationObserver(s=>{for(const r of s)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function t(s){const r={};return s.integrity&&(r.integrity=s.integrity),s.referrerPolicy&&(r.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?r.credentials="include":s.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(s){if(s.ep)return;s.ep=!0;const r=t(s);fetch(s.href,r)}})();var e5=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Sb(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var wS={exports:{}},mA={},SS={exports:{}},Nt={};/** * @license React * react.production.min.js * @@ -6,7 +6,7 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var Zu=Symbol.for("react.element"),PM=Symbol.for("react.portal"),_M=Symbol.for("react.fragment"),JM=Symbol.for("react.strict_mode"),OM=Symbol.for("react.profiler"),QM=Symbol.for("react.provider"),jM=Symbol.for("react.context"),qM=Symbol.for("react.forward_ref"),$M=Symbol.for("react.suspense"),e5=Symbol.for("react.memo"),t5=Symbol.for("react.lazy"),tB=Symbol.iterator;function n5(n){return n===null||typeof n!="object"?null:(n=tB&&n[tB]||n["@@iterator"],typeof n=="function"?n:null)}var vS={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},yS=Object.assign,GS={};function ic(n,e,t){this.props=n,this.context=e,this.refs=GS,this.updater=t||vS}ic.prototype.isReactComponent={};ic.prototype.setState=function(n,e){if(typeof n!="object"&&typeof n!="function"&&n!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,n,e,"setState")};ic.prototype.forceUpdate=function(n){this.updater.enqueueForceUpdate(this,n,"forceUpdate")};function BS(){}BS.prototype=ic.prototype;function Bb(n,e,t){this.props=n,this.context=e,this.refs=GS,this.updater=t||vS}var Zb=Bb.prototype=new BS;Zb.constructor=Bb;yS(Zb,ic.prototype);Zb.isPureReactComponent=!0;var nB=Array.isArray,ZS=Object.prototype.hasOwnProperty,wb={current:null},wS={key:!0,ref:!0,__self:!0,__source:!0};function SS(n,e,t){var i,s={},r=null,o=null;if(e!=null)for(i in e.ref!==void 0&&(o=e.ref),e.key!==void 0&&(r=""+e.key),e)ZS.call(e,i)&&!wS.hasOwnProperty(i)&&(s[i]=e[i]);var a=arguments.length-2;if(a===1)s.children=t;else if(1>>1,se=L[ce];if(0>>1;ces(ve,P))yes(_,ve)?(L[ce]=_,L[ye]=P,ce=ye):(L[ce]=ve,L[re]=P,ce=re);else if(yes(_,P))L[ce]=_,L[ye]=P,ce=ye;else break e}}return J}function s(L,J){var P=L.sortIndex-J.sortIndex;return P!==0?P:L.id-J.id}if(typeof performance=="object"&&typeof performance.now=="function"){var r=performance;n.unstable_now=function(){return r.now()}}else{var o=Date,a=o.now();n.unstable_now=function(){return o.now()-a}}var l=[],c=[],u=1,C=null,d=3,h=!1,m=!1,v=!1,y=typeof setTimeout=="function"?setTimeout:null,A=typeof clearTimeout=="function"?clearTimeout:null,b=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function f(L){for(var J=t(c);J!==null;){if(J.callback===null)i(c);else if(J.startTime<=L)i(c),J.sortIndex=J.expirationTime,e(l,J);else break;J=t(c)}}function B(L){if(v=!1,f(L),!m)if(t(l)!==null)m=!0,Ce(S);else{var J=t(c);J!==null&&le(B,J.startTime-L)}}function S(L,J){m=!1,v&&(v=!1,A(M),M=-1),h=!0;var P=d;try{for(f(J),C=t(l);C!==null&&(!(C.expirationTime>J)||L&&!N());){var ce=C.callback;if(typeof ce=="function"){C.callback=null,d=C.priorityLevel;var se=ce(C.expirationTime<=J);J=n.unstable_now(),typeof se=="function"?C.callback=se:C===t(l)&&i(l),f(J)}else i(l);C=t(l)}if(C!==null)var ee=!0;else{var re=t(c);re!==null&&le(B,re.startTime-J),ee=!1}return ee}finally{C=null,d=P,h=!1}}var x=!1,R=null,M=-1,Z=5,V=-1;function N(){return!(n.unstable_now()-VL||125ce?(L.sortIndex=P,e(c,L),t(l)===null&&L===t(c)&&(v?(A(M),M=-1):v=!0,le(B,P-ce))):(L.sortIndex=se,e(l,L),m||h||(m=!0,Ce(S))),L},n.unstable_shouldYield=N,n.unstable_wrapCallback=function(L){var J=d;return function(){var P=d;d=J;try{return L.apply(this,arguments)}finally{d=P}}}})(VS);WS.exports=VS;var C5=WS.exports;/** + */(function(n){function e(L,J){var P=L.length;L.push(J);e:for(;0>>1,se=L[ce];if(0>>1;ces(ve,P))yes(_,ve)?(L[ce]=_,L[ye]=P,ce=ye):(L[ce]=ve,L[re]=P,ce=re);else if(yes(_,P))L[ce]=_,L[ye]=P,ce=ye;else break e}}return J}function s(L,J){var P=L.sortIndex-J.sortIndex;return P!==0?P:L.id-J.id}if(typeof performance=="object"&&typeof performance.now=="function"){var r=performance;n.unstable_now=function(){return r.now()}}else{var o=Date,a=o.now();n.unstable_now=function(){return o.now()-a}}var l=[],c=[],u=1,C=null,d=3,h=!1,m=!1,v=!1,y=typeof setTimeout=="function"?setTimeout:null,A=typeof clearTimeout=="function"?clearTimeout:null,b=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function f(L){for(var J=t(c);J!==null;){if(J.callback===null)i(c);else if(J.startTime<=L)i(c),J.sortIndex=J.expirationTime,e(l,J);else break;J=t(c)}}function B(L){if(v=!1,f(L),!m)if(t(l)!==null)m=!0,Ce(S);else{var J=t(c);J!==null&&le(B,J.startTime-L)}}function S(L,J){m=!1,v&&(v=!1,A(M),M=-1),h=!0;var P=d;try{for(f(J),C=t(l);C!==null&&(!(C.expirationTime>J)||L&&!N());){var ce=C.callback;if(typeof ce=="function"){C.callback=null,d=C.priorityLevel;var se=ce(C.expirationTime<=J);J=n.unstable_now(),typeof se=="function"?C.callback=se:C===t(l)&&i(l),f(J)}else i(l);C=t(l)}if(C!==null)var ee=!0;else{var re=t(c);re!==null&&le(B,re.startTime-J),ee=!1}return ee}finally{C=null,d=P,h=!1}}var x=!1,R=null,M=-1,Z=5,V=-1;function N(){return!(n.unstable_now()-VL||125ce?(L.sortIndex=P,e(c,L),t(l)===null&&L===t(c)&&(v?(A(M),M=-1):v=!0,le(B,P-ce))):(L.sortIndex=se,e(l,L),m||h||(m=!0,Ce(S))),L},n.unstable_shouldYield=N,n.unstable_wrapCallback=function(L){var J=d;return function(){var P=d;d=J;try{return L.apply(this,arguments)}finally{d=P}}}})(KS);FS.exports=KS;var y5=FS.exports;/** * @license React * react-dom.production.min.js * @@ -30,22 +30,22 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var MS=U,ds=C5;function we(n){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+n,t=1;t"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Mf=Object.prototype.hasOwnProperty,d5=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,sB={},rB={};function h5(n){return Mf.call(rB,n)?!0:Mf.call(sB,n)?!1:d5.test(n)?rB[n]=!0:(sB[n]=!0,!1)}function A5(n,e,t,i){if(t!==null&&t.type===0)return!1;switch(typeof e){case"function":case"symbol":return!0;case"boolean":return i?!1:t!==null?!t.acceptsBooleans:(n=n.toLowerCase().slice(0,5),n!=="data-"&&n!=="aria-");default:return!1}}function p5(n,e,t,i){if(e===null||typeof e>"u"||A5(n,e,t,i))return!0;if(i)return!1;if(t!==null)switch(t.type){case 3:return!e;case 4:return e===!1;case 5:return isNaN(e);case 6:return isNaN(e)||1>e}return!1}function Mi(n,e,t,i,s,r,o){this.acceptsBooleans=e===2||e===3||e===4,this.attributeName=i,this.attributeNamespace=s,this.mustUseProperty=t,this.propertyName=n,this.type=e,this.sanitizeURL=r,this.removeEmptyString=o}var ai={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(n){ai[n]=new Mi(n,0,!1,n,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(n){var e=n[0];ai[e]=new Mi(e,1,!1,n[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(n){ai[n]=new Mi(n,2,!1,n.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(n){ai[n]=new Mi(n,2,!1,n,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(n){ai[n]=new Mi(n,3,!1,n.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(n){ai[n]=new Mi(n,3,!0,n,null,!1,!1)});["capture","download"].forEach(function(n){ai[n]=new Mi(n,4,!1,n,null,!1,!1)});["cols","rows","size","span"].forEach(function(n){ai[n]=new Mi(n,6,!1,n,null,!1,!1)});["rowSpan","start"].forEach(function(n){ai[n]=new Mi(n,5,!1,n.toLowerCase(),null,!1,!1)});var xb=/[\-:]([a-z])/g;function Rb(n){return n[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(n){var e=n.replace(xb,Rb);ai[e]=new Mi(e,1,!1,n,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(n){var e=n.replace(xb,Rb);ai[e]=new Mi(e,1,!1,n,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(n){var e=n.replace(xb,Rb);ai[e]=new Mi(e,1,!1,n,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(n){ai[n]=new Mi(n,1,!1,n.toLowerCase(),null,!1,!1)});ai.xlinkHref=new Mi("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(n){ai[n]=new Mi(n,1,!1,n.toLowerCase(),null,!0,!0)});function Wb(n,e,t,i){var s=ai.hasOwnProperty(e)?ai[e]:null;(s!==null?s.type!==0:i||!(2"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Yf=Object.prototype.hasOwnProperty,G5=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,cB={},IB={};function B5(n){return Yf.call(IB,n)?!0:Yf.call(cB,n)?!1:G5.test(n)?IB[n]=!0:(cB[n]=!0,!1)}function Z5(n,e,t,i){if(t!==null&&t.type===0)return!1;switch(typeof e){case"function":case"symbol":return!0;case"boolean":return i?!1:t!==null?!t.acceptsBooleans:(n=n.toLowerCase().slice(0,5),n!=="data-"&&n!=="aria-");default:return!1}}function w5(n,e,t,i){if(e===null||typeof e>"u"||Z5(n,e,t,i))return!0;if(i)return!1;if(t!==null)switch(t.type){case 3:return!e;case 4:return e===!1;case 5:return isNaN(e);case 6:return isNaN(e)||1>e}return!1}function Ni(n,e,t,i,s,r,o){this.acceptsBooleans=e===2||e===3||e===4,this.attributeName=i,this.attributeNamespace=s,this.mustUseProperty=t,this.propertyName=n,this.type=e,this.sanitizeURL=r,this.removeEmptyString=o}var li={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(n){li[n]=new Ni(n,0,!1,n,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(n){var e=n[0];li[e]=new Ni(e,1,!1,n[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(n){li[n]=new Ni(n,2,!1,n.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(n){li[n]=new Ni(n,2,!1,n,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(n){li[n]=new Ni(n,3,!1,n.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(n){li[n]=new Ni(n,3,!0,n,null,!1,!1)});["capture","download"].forEach(function(n){li[n]=new Ni(n,4,!1,n,null,!1,!1)});["cols","rows","size","span"].forEach(function(n){li[n]=new Ni(n,6,!1,n,null,!1,!1)});["rowSpan","start"].forEach(function(n){li[n]=new Ni(n,5,!1,n.toLowerCase(),null,!1,!1)});var Mb=/[\-:]([a-z])/g;function Nb(n){return n[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(n){var e=n.replace(Mb,Nb);li[e]=new Ni(e,1,!1,n,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(n){var e=n.replace(Mb,Nb);li[e]=new Ni(e,1,!1,n,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(n){var e=n.replace(Mb,Nb);li[e]=new Ni(e,1,!1,n,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(n){li[n]=new Ni(n,1,!1,n.toLowerCase(),null,!1,!1)});li.xlinkHref=new Ni("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(n){li[n]=new Ni(n,1,!1,n.toLowerCase(),null,!0,!0)});function Hb(n,e,t,i){var s=li.hasOwnProperty(e)?li[e]:null;(s!==null?s.type!==0:i||!(2a||s[o]!==r[a]){var l=` -`+s[o].replace(" at new "," at ");return n.displayName&&l.includes("")&&(l=l.replace("",n.displayName)),l}while(1<=o&&0<=a);break}}}finally{lm=!1,Error.prepareStackTrace=t}return(n=n?n.displayName||n.name:"")?dI(n):""}function m5(n){switch(n.tag){case 5:return dI(n.type);case 16:return dI("Lazy");case 13:return dI("Suspense");case 19:return dI("SuspenseList");case 0:case 2:case 15:return n=gm(n.type,!1),n;case 11:return n=gm(n.type.render,!1),n;case 1:return n=gm(n.type,!0),n;default:return""}}function Yf(n){if(n==null)return null;if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n;switch(n){case Ag:return"Fragment";case hg:return"Portal";case Nf:return"Profiler";case Vb:return"StrictMode";case Hf:return"Suspense";case Xf:return"SuspenseList"}if(typeof n=="object")switch(n.$$typeof){case XS:return(n.displayName||"Context")+".Consumer";case HS:return(n._context.displayName||"Context")+".Provider";case Mb:var e=n.render;return n=n.displayName,n||(n=e.displayName||e.name||"",n=n!==""?"ForwardRef("+n+")":"ForwardRef"),n;case Nb:return e=n.displayName||null,e!==null?e:Yf(n.type)||"Memo";case zo:e=n._payload,n=n._init;try{return Yf(n(e))}catch{}}return null}function f5(n){var e=n.type;switch(n.tag){case 24:return"Cache";case 9:return(e.displayName||"Context")+".Consumer";case 10:return(e._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return n=e.render,n=n.displayName||n.name||"",e.displayName||(n!==""?"ForwardRef("+n+")":"ForwardRef");case 7:return"Fragment";case 5:return e;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Yf(e);case 8:return e===Vb?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e}return null}function sa(n){switch(typeof n){case"boolean":case"number":case"string":case"undefined":return n;case"object":return n;default:return""}}function FS(n){var e=n.type;return(n=n.nodeName)&&n.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function b5(n){var e=FS(n)?"checked":"value",t=Object.getOwnPropertyDescriptor(n.constructor.prototype,e),i=""+n[e];if(!n.hasOwnProperty(e)&&typeof t<"u"&&typeof t.get=="function"&&typeof t.set=="function"){var s=t.get,r=t.set;return Object.defineProperty(n,e,{configurable:!0,get:function(){return s.call(this)},set:function(o){i=""+o,r.call(this,o)}}),Object.defineProperty(n,e,{enumerable:t.enumerable}),{getValue:function(){return i},setValue:function(o){i=""+o},stopTracking:function(){n._valueTracker=null,delete n[e]}}}}function _C(n){n._valueTracker||(n._valueTracker=b5(n))}function KS(n){if(!n)return!1;var e=n._valueTracker;if(!e)return!0;var t=e.getValue(),i="";return n&&(i=FS(n)?n.checked?"true":"false":n.value),n=i,n!==t?(e.setValue(n),!0):!1}function Nh(n){if(n=n||(typeof document<"u"?document:void 0),typeof n>"u")return null;try{return n.activeElement||n.body}catch{return n.body}}function Ff(n,e){var t=e.checked;return fn({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:t??n._wrapperState.initialChecked})}function aB(n,e){var t=e.defaultValue==null?"":e.defaultValue,i=e.checked!=null?e.checked:e.defaultChecked;t=sa(e.value!=null?e.value:t),n._wrapperState={initialChecked:i,initialValue:t,controlled:e.type==="checkbox"||e.type==="radio"?e.checked!=null:e.value!=null}}function zS(n,e){e=e.checked,e!=null&&Wb(n,"checked",e,!1)}function Kf(n,e){zS(n,e);var t=sa(e.value),i=e.type;if(t!=null)i==="number"?(t===0&&n.value===""||n.value!=t)&&(n.value=""+t):n.value!==""+t&&(n.value=""+t);else if(i==="submit"||i==="reset"){n.removeAttribute("value");return}e.hasOwnProperty("value")?zf(n,e.type,t):e.hasOwnProperty("defaultValue")&&zf(n,e.type,sa(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(n.defaultChecked=!!e.defaultChecked)}function lB(n,e,t){if(e.hasOwnProperty("value")||e.hasOwnProperty("defaultValue")){var i=e.type;if(!(i!=="submit"&&i!=="reset"||e.value!==void 0&&e.value!==null))return;e=""+n._wrapperState.initialValue,t||e===n.value||(n.value=e),n.defaultValue=e}t=n.name,t!==""&&(n.name=""),n.defaultChecked=!!n._wrapperState.initialChecked,t!==""&&(n.name=t)}function zf(n,e,t){(e!=="number"||Nh(n.ownerDocument)!==n)&&(t==null?n.defaultValue=""+n._wrapperState.initialValue:n.defaultValue!==""+t&&(n.defaultValue=""+t))}var hI=Array.isArray;function Hg(n,e,t,i){if(n=n.options,e){e={};for(var s=0;s"+e.valueOf().toString()+"",e=JC.firstChild;n.firstChild;)n.removeChild(n.firstChild);for(;e.firstChild;)n.appendChild(e.firstChild)}});function EI(n,e){if(e){var t=n.firstChild;if(t&&t===n.lastChild&&t.nodeType===3){t.nodeValue=e;return}}n.textContent=e}var yI={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},v5=["Webkit","ms","Moz","O"];Object.keys(yI).forEach(function(n){v5.forEach(function(e){e=e+n.charAt(0).toUpperCase()+n.substring(1),yI[e]=yI[n]})});function kS(n,e,t){return e==null||typeof e=="boolean"||e===""?"":t||typeof e!="number"||e===0||yI.hasOwnProperty(n)&&yI[n]?(""+e).trim():e+"px"}function DS(n,e){n=n.style;for(var t in e)if(e.hasOwnProperty(t)){var i=t.indexOf("--")===0,s=kS(t,e[t],i);t==="float"&&(t="cssFloat"),i?n.setProperty(t,s):n[t]=s}}var y5=fn({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Ef(n,e){if(e){if(y5[n]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(we(137,n));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(we(60));if(typeof e.dangerouslySetInnerHTML!="object"||!("__html"in e.dangerouslySetInnerHTML))throw Error(we(61))}if(e.style!=null&&typeof e.style!="object")throw Error(we(62))}}function kf(n,e){if(n.indexOf("-")===-1)return typeof e.is=="string";switch(n){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Df=null;function Hb(n){return n=n.target||n.srcElement||window,n.correspondingUseElement&&(n=n.correspondingUseElement),n.nodeType===3?n.parentNode:n}var Uf=null,Xg=null,Yg=null;function IB(n){if(n=xu(n)){if(typeof Uf!="function")throw Error(we(280));var e=n.stateNode;e&&(e=AA(e),Uf(n.stateNode,n.type,e))}}function US(n){Xg?Yg?Yg.push(n):Yg=[n]:Xg=n}function PS(){if(Xg){var n=Xg,e=Yg;if(Yg=Xg=null,IB(n),e)for(n=0;n>>=0,n===0?32:31-(N5(n)/H5|0)|0}var OC=64,QC=4194304;function AI(n){switch(n&-n){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return n&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return n&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return n}}function Fh(n,e){var t=n.pendingLanes;if(t===0)return 0;var i=0,s=n.suspendedLanes,r=n.pingedLanes,o=t&268435455;if(o!==0){var a=o&~s;a!==0?i=AI(a):(r&=o,r!==0&&(i=AI(r)))}else o=t&~s,o!==0?i=AI(o):r!==0&&(i=AI(r));if(i===0)return 0;if(e!==0&&e!==i&&!(e&s)&&(s=i&-i,r=e&-e,s>=r||s===16&&(r&4194240)!==0))return e;if(i&4&&(i|=t&16),e=n.entangledLanes,e!==0)for(n=n.entanglements,e&=i;0t;t++)e.push(n);return e}function wu(n,e,t){n.pendingLanes|=e,e!==536870912&&(n.suspendedLanes=0,n.pingedLanes=0),n=n.eventTimes,e=31-ar(e),n[e]=t}function K5(n,e){var t=n.pendingLanes&~e;n.pendingLanes=e,n.suspendedLanes=0,n.pingedLanes=0,n.expiredLanes&=e,n.mutableReadLanes&=e,n.entangledLanes&=e,e=n.entanglements;var i=n.eventTimes;for(n=n.expirationTimes;0=BI),bB=String.fromCharCode(32),vB=!1;function ux(n,e){switch(n){case"keyup":return uN.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Cx(n){return n=n.detail,typeof n=="object"&&"data"in n?n.data:null}var pg=!1;function dN(n,e){switch(n){case"compositionend":return Cx(e);case"keypress":return e.which!==32?null:(vB=!0,bB);case"textInput":return n=e.data,n===bB&&vB?null:n;default:return null}}function hN(n,e){if(pg)return n==="compositionend"||!Eb&&ux(n,e)?(n=cx(),Ch=zb=Do=null,pg=!1,n):null;switch(n){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:t,offset:e-n};n=i}e:{for(;t;){if(t.nextSibling){t=t.nextSibling;break e}t=t.parentNode}t=void 0}t=ZB(t)}}function px(n,e){return n&&e?n===e?!0:n&&n.nodeType===3?!1:e&&e.nodeType===3?px(n,e.parentNode):"contains"in n?n.contains(e):n.compareDocumentPosition?!!(n.compareDocumentPosition(e)&16):!1:!1}function mx(){for(var n=window,e=Nh();e instanceof n.HTMLIFrameElement;){try{var t=typeof e.contentWindow.location.href=="string"}catch{t=!1}if(t)n=e.contentWindow;else break;e=Nh(n.document)}return e}function kb(n){var e=n&&n.nodeName&&n.nodeName.toLowerCase();return e&&(e==="input"&&(n.type==="text"||n.type==="search"||n.type==="tel"||n.type==="url"||n.type==="password")||e==="textarea"||n.contentEditable==="true")}function BN(n){var e=mx(),t=n.focusedElem,i=n.selectionRange;if(e!==t&&t&&t.ownerDocument&&px(t.ownerDocument.documentElement,t)){if(i!==null&&kb(t)){if(e=i.start,n=i.end,n===void 0&&(n=e),"selectionStart"in t)t.selectionStart=e,t.selectionEnd=Math.min(n,t.value.length);else if(n=(e=t.ownerDocument||document)&&e.defaultView||window,n.getSelection){n=n.getSelection();var s=t.textContent.length,r=Math.min(i.start,s);i=i.end===void 0?r:Math.min(i.end,s),!n.extend&&r>i&&(s=i,i=r,r=s),s=wB(t,r);var o=wB(t,i);s&&o&&(n.rangeCount!==1||n.anchorNode!==s.node||n.anchorOffset!==s.offset||n.focusNode!==o.node||n.focusOffset!==o.offset)&&(e=e.createRange(),e.setStart(s.node,s.offset),n.removeAllRanges(),r>i?(n.addRange(e),n.extend(o.node,o.offset)):(e.setEnd(o.node,o.offset),n.addRange(e)))}}for(e=[],n=t;n=n.parentNode;)n.nodeType===1&&e.push({element:n,left:n.scrollLeft,top:n.scrollTop});for(typeof t.focus=="function"&&t.focus(),t=0;t=document.documentMode,mg=null,jf=null,wI=null,qf=!1;function SB(n,e,t){var i=t.window===t?t.document:t.nodeType===9?t:t.ownerDocument;qf||mg==null||mg!==Nh(i)||(i=mg,"selectionStart"in i&&kb(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),wI&&JI(wI,i)||(wI=i,i=Lh(jf,"onSelect"),0vg||(n.current=s0[vg],s0[vg]=null,vg--)}function sn(n,e){vg++,s0[vg]=n.current,n.current=e}var ra={},vi=ua(ra),Oi=ua(!1),gl=ra;function Pg(n,e){var t=n.type.contextTypes;if(!t)return ra;var i=n.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===e)return i.__reactInternalMemoizedMaskedChildContext;var s={},r;for(r in t)s[r]=e[r];return i&&(n=n.stateNode,n.__reactInternalMemoizedUnmaskedChildContext=e,n.__reactInternalMemoizedMaskedChildContext=s),s}function Qi(n){return n=n.childContextTypes,n!=null}function Eh(){ln(Oi),ln(vi)}function HB(n,e,t){if(vi.current!==ra)throw Error(we(168));sn(vi,e),sn(Oi,t)}function Sx(n,e,t){var i=n.stateNode;if(e=e.childContextTypes,typeof i.getChildContext!="function")return t;i=i.getChildContext();for(var s in i)if(!(s in e))throw Error(we(108,f5(n)||"Unknown",s));return fn({},t,i)}function kh(n){return n=(n=n.stateNode)&&n.__reactInternalMemoizedMergedChildContext||ra,gl=vi.current,sn(vi,n),sn(Oi,Oi.current),!0}function XB(n,e,t){var i=n.stateNode;if(!i)throw Error(we(169));t?(n=Sx(n,e,gl),i.__reactInternalMemoizedMergedChildContext=n,ln(Oi),ln(vi),sn(vi,n)):ln(Oi),sn(Oi,t)}var to=null,pA=!1,Gm=!1;function xx(n){to===null?to=[n]:to.push(n)}function YN(n){pA=!0,xx(n)}function Ca(){if(!Gm&&to!==null){Gm=!0;var n=0,e=Qt;try{var t=to;for(Qt=1;n>=o,s-=o,so=1<<32-ar(e)+s|t<M?(Z=R,R=null):Z=R.sibling;var V=d(A,R,f[M],B);if(V===null){R===null&&(R=Z);break}n&&R&&V.alternate===null&&e(A,R),b=r(V,b,M),x===null?S=V:x.sibling=V,x=V,R=Z}if(M===f.length)return t(A,R),In&&Ka(A,M),S;if(R===null){for(;MM?(Z=R,R=null):Z=R.sibling;var N=d(A,R,V.value,B);if(N===null){R===null&&(R=Z);break}n&&R&&N.alternate===null&&e(A,R),b=r(N,b,M),x===null?S=N:x.sibling=N,x=N,R=Z}if(V.done)return t(A,R),In&&Ka(A,M),S;if(R===null){for(;!V.done;M++,V=f.next())V=C(A,V.value,B),V!==null&&(b=r(V,b,M),x===null?S=V:x.sibling=V,x=V);return In&&Ka(A,M),S}for(R=i(A,R);!V.done;M++,V=f.next())V=h(R,A,M,V.value,B),V!==null&&(n&&V.alternate!==null&&R.delete(V.key===null?M:V.key),b=r(V,b,M),x===null?S=V:x.sibling=V,x=V);return n&&R.forEach(function(D){return e(A,D)}),In&&Ka(A,M),S}function y(A,b,f,B){if(typeof f=="object"&&f!==null&&f.type===Ag&&f.key===null&&(f=f.props.children),typeof f=="object"&&f!==null){switch(f.$$typeof){case PC:e:{for(var S=f.key,x=b;x!==null;){if(x.key===S){if(S=f.type,S===Ag){if(x.tag===7){t(A,x.sibling),b=s(x,f.props.children),b.return=A,A=b;break e}}else if(x.elementType===S||typeof S=="object"&&S!==null&&S.$$typeof===zo&&EB(S)===x.type){t(A,x.sibling),b=s(x,f.props),b.ref=kc(A,x,f),b.return=A,A=b;break e}t(A,x);break}else e(A,x);x=x.sibling}f.type===Ag?(b=il(f.props.children,A.mode,B,f.key),b.return=A,A=b):(B=vh(f.type,f.key,f.props,null,A.mode,B),B.ref=kc(A,b,f),B.return=A,A=B)}return o(A);case hg:e:{for(x=f.key;b!==null;){if(b.key===x)if(b.tag===4&&b.stateNode.containerInfo===f.containerInfo&&b.stateNode.implementation===f.implementation){t(A,b.sibling),b=s(b,f.children||[]),b.return=A,A=b;break e}else{t(A,b);break}else e(A,b);b=b.sibling}b=Vm(f,A.mode,B),b.return=A,A=b}return o(A);case zo:return x=f._init,y(A,b,x(f._payload),B)}if(hI(f))return m(A,b,f,B);if(Kc(f))return v(A,b,f,B);id(A,f)}return typeof f=="string"&&f!==""||typeof f=="number"?(f=""+f,b!==null&&b.tag===6?(t(A,b.sibling),b=s(b,f),b.return=A,A=b):(t(A,b),b=Wm(f,A.mode,B),b.return=A,A=b),o(A)):t(A,b)}return y}var Jg=Yx(!0),Fx=Yx(!1),Ru={},Vr=ua(Ru),qI=ua(Ru),$I=ua(Ru);function Oa(n){if(n===Ru)throw Error(we(174));return n}function qb(n,e){switch(sn($I,e),sn(qI,n),sn(Vr,Ru),n=e.nodeType,n){case 9:case 11:e=(e=e.documentElement)?e.namespaceURI:Tf(null,"");break;default:n=n===8?e.parentNode:e,e=n.namespaceURI||null,n=n.tagName,e=Tf(e,n)}ln(Vr),sn(Vr,e)}function Og(){ln(Vr),ln(qI),ln($I)}function Kx(n){Oa($I.current);var e=Oa(Vr.current),t=Tf(e,n.type);e!==t&&(sn(qI,n),sn(Vr,t))}function $b(n){qI.current===n&&(ln(Vr),ln(qI))}var hn=ua(0);function Oh(n){for(var e=n;e!==null;){if(e.tag===13){var t=e.memoizedState;if(t!==null&&(t=t.dehydrated,t===null||t.data==="$?"||t.data==="$!"))return e}else if(e.tag===19&&e.memoizedProps.revealOrder!==void 0){if(e.flags&128)return e}else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===n)break;for(;e.sibling===null;){if(e.return===null||e.return===n)return null;e=e.return}e.sibling.return=e.return,e=e.sibling}return null}var Bm=[];function ev(){for(var n=0;nt?t:4,n(!0);var i=Zm.transition;Zm.transition={};try{n(!1),e()}finally{Qt=t,Zm.transition=i}}function eR(){return Ks().memoizedState}function LN(n,e,t){var i=$o(n);if(t={lane:i,action:t,hasEagerState:!1,eagerState:null,next:null},tR(n))nR(e,t);else if(t=Mx(n,e,t,i),t!==null){var s=Wi();lr(t,n,i,s),iR(t,e,i)}}function TN(n,e,t){var i=$o(n),s={lane:i,action:t,hasEagerState:!1,eagerState:null,next:null};if(tR(n))nR(e,s);else{var r=n.alternate;if(n.lanes===0&&(r===null||r.lanes===0)&&(r=e.lastRenderedReducer,r!==null))try{var o=e.lastRenderedState,a=r(o,t);if(s.hasEagerState=!0,s.eagerState=a,Ir(a,o)){var l=e.interleaved;l===null?(s.next=s,Qb(e)):(s.next=l.next,l.next=s),e.interleaved=s;return}}catch{}finally{}t=Mx(n,e,s,i),t!==null&&(s=Wi(),lr(t,n,i,s),iR(t,e,i))}}function tR(n){var e=n.alternate;return n===mn||e!==null&&e===mn}function nR(n,e){SI=Qh=!0;var t=n.pending;t===null?e.next=e:(e.next=t.next,t.next=e),n.pending=e}function iR(n,e,t){if(t&4194240){var i=e.lanes;i&=n.pendingLanes,t|=i,e.lanes=t,Yb(n,t)}}var jh={readContext:Fs,useCallback:di,useContext:di,useEffect:di,useImperativeHandle:di,useInsertionEffect:di,useLayoutEffect:di,useMemo:di,useReducer:di,useRef:di,useState:di,useDebugValue:di,useDeferredValue:di,useTransition:di,useMutableSource:di,useSyncExternalStore:di,useId:di,unstable_isNewReconciler:!1},EN={readContext:Fs,useCallback:function(n,e){return xr().memoizedState=[n,e===void 0?null:e],n},useContext:Fs,useEffect:DB,useImperativeHandle:function(n,e,t){return t=t!=null?t.concat([n]):null,ph(4194308,4,Ox.bind(null,e,n),t)},useLayoutEffect:function(n,e){return ph(4194308,4,n,e)},useInsertionEffect:function(n,e){return ph(4,2,n,e)},useMemo:function(n,e){var t=xr();return e=e===void 0?null:e,n=n(),t.memoizedState=[n,e],n},useReducer:function(n,e,t){var i=xr();return e=t!==void 0?t(e):e,i.memoizedState=i.baseState=e,n={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:n,lastRenderedState:e},i.queue=n,n=n.dispatch=LN.bind(null,mn,n),[i.memoizedState,n]},useRef:function(n){var e=xr();return n={current:n},e.memoizedState=n},useState:kB,useDebugValue:rv,useDeferredValue:function(n){return xr().memoizedState=n},useTransition:function(){var n=kB(!1),e=n[0];return n=zN.bind(null,n[1]),xr().memoizedState=n,[e,n]},useMutableSource:function(){},useSyncExternalStore:function(n,e,t){var i=mn,s=xr();if(In){if(t===void 0)throw Error(we(407));t=t()}else{if(t=e(),ei===null)throw Error(we(349));Il&30||Tx(i,e,t)}s.memoizedState=t;var r={value:t,getSnapshot:e};return s.queue=r,DB(kx.bind(null,i,r,n),[n]),i.flags|=2048,nu(9,Ex.bind(null,i,r,t,e),void 0,null),t},useId:function(){var n=xr(),e=ei.identifierPrefix;if(In){var t=ro,i=so;t=(i&~(1<<32-ar(i)-1)).toString(32)+t,e=":"+e+"R"+t,t=eu++,0")&&(l=l.replace("",n.displayName)),l}while(1<=o&&0<=a);break}}}finally{um=!1,Error.prepareStackTrace=t}return(n=n?n.displayName||n.name:"")?pI(n):""}function S5(n){switch(n.tag){case 5:return pI(n.type);case 16:return pI("Lazy");case 13:return pI("Suspense");case 19:return pI("SuspenseList");case 0:case 2:case 15:return n=Cm(n.type,!1),n;case 11:return n=Cm(n.type.render,!1),n;case 1:return n=Cm(n.type,!0),n;default:return""}}function Lf(n){if(n==null)return null;if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n;switch(n){case fg:return"Fragment";case mg:return"Portal";case Ff:return"Profiler";case Xb:return"StrictMode";case Kf:return"Suspense";case zf:return"SuspenseList"}if(typeof n=="object")switch(n.$$typeof){case TS:return(n.displayName||"Context")+".Consumer";case ES:return(n._context.displayName||"Context")+".Provider";case Yb:var e=n.render;return n=n.displayName,n||(n=e.displayName||e.name||"",n=n!==""?"ForwardRef("+n+")":"ForwardRef"),n;case Fb:return e=n.displayName||null,e!==null?e:Lf(n.type)||"Memo";case zo:e=n._payload,n=n._init;try{return Lf(n(e))}catch{}}return null}function x5(n){var e=n.type;switch(n.tag){case 24:return"Cache";case 9:return(e.displayName||"Context")+".Consumer";case 10:return(e._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return n=e.render,n=n.displayName||n.name||"",e.displayName||(n!==""?"ForwardRef("+n+")":"ForwardRef");case 7:return"Fragment";case 5:return e;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Lf(e);case 8:return e===Xb?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e}return null}function oa(n){switch(typeof n){case"boolean":case"number":case"string":case"undefined":return n;case"object":return n;default:return""}}function DS(n){var e=n.type;return(n=n.nodeName)&&n.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function R5(n){var e=DS(n)?"checked":"value",t=Object.getOwnPropertyDescriptor(n.constructor.prototype,e),i=""+n[e];if(!n.hasOwnProperty(e)&&typeof t<"u"&&typeof t.get=="function"&&typeof t.set=="function"){var s=t.get,r=t.set;return Object.defineProperty(n,e,{configurable:!0,get:function(){return s.call(this)},set:function(o){i=""+o,r.call(this,o)}}),Object.defineProperty(n,e,{enumerable:t.enumerable}),{getValue:function(){return i},setValue:function(o){i=""+o},stopTracking:function(){n._valueTracker=null,delete n[e]}}}}function $C(n){n._valueTracker||(n._valueTracker=R5(n))}function US(n){if(!n)return!1;var e=n._valueTracker;if(!e)return!0;var t=e.getValue(),i="";return n&&(i=DS(n)?n.checked?"true":"false":n.value),n=i,n!==t?(e.setValue(n),!0):!1}function zh(n){if(n=n||(typeof document<"u"?document:void 0),typeof n>"u")return null;try{return n.activeElement||n.body}catch{return n.body}}function Ef(n,e){var t=e.checked;return fn({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:t??n._wrapperState.initialChecked})}function CB(n,e){var t=e.defaultValue==null?"":e.defaultValue,i=e.checked!=null?e.checked:e.defaultChecked;t=oa(e.value!=null?e.value:t),n._wrapperState={initialChecked:i,initialValue:t,controlled:e.type==="checkbox"||e.type==="radio"?e.checked!=null:e.value!=null}}function PS(n,e){e=e.checked,e!=null&&Hb(n,"checked",e,!1)}function Tf(n,e){PS(n,e);var t=oa(e.value),i=e.type;if(t!=null)i==="number"?(t===0&&n.value===""||n.value!=t)&&(n.value=""+t):n.value!==""+t&&(n.value=""+t);else if(i==="submit"||i==="reset"){n.removeAttribute("value");return}e.hasOwnProperty("value")?kf(n,e.type,t):e.hasOwnProperty("defaultValue")&&kf(n,e.type,oa(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(n.defaultChecked=!!e.defaultChecked)}function dB(n,e,t){if(e.hasOwnProperty("value")||e.hasOwnProperty("defaultValue")){var i=e.type;if(!(i!=="submit"&&i!=="reset"||e.value!==void 0&&e.value!==null))return;e=""+n._wrapperState.initialValue,t||e===n.value||(n.value=e),n.defaultValue=e}t=n.name,t!==""&&(n.name=""),n.defaultChecked=!!n._wrapperState.initialChecked,t!==""&&(n.name=t)}function kf(n,e,t){(e!=="number"||zh(n.ownerDocument)!==n)&&(t==null?n.defaultValue=""+n._wrapperState.initialValue:n.defaultValue!==""+t&&(n.defaultValue=""+t))}var mI=Array.isArray;function Fg(n,e,t,i){if(n=n.options,e){e={};for(var s=0;s"+e.valueOf().toString()+"",e=ed.firstChild;n.firstChild;)n.removeChild(n.firstChild);for(;e.firstChild;)n.appendChild(e.firstChild)}});function UI(n,e){if(e){var t=n.firstChild;if(t&&t===n.lastChild&&t.nodeType===3){t.nodeValue=e;return}}n.textContent=e}var ZI={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},W5=["Webkit","ms","Moz","O"];Object.keys(ZI).forEach(function(n){W5.forEach(function(e){e=e+n.charAt(0).toUpperCase()+n.substring(1),ZI[e]=ZI[n]})});function QS(n,e,t){return e==null||typeof e=="boolean"||e===""?"":t||typeof e!="number"||e===0||ZI.hasOwnProperty(n)&&ZI[n]?(""+e).trim():e+"px"}function jS(n,e){n=n.style;for(var t in e)if(e.hasOwnProperty(t)){var i=t.indexOf("--")===0,s=QS(t,e[t],i);t==="float"&&(t="cssFloat"),i?n.setProperty(t,s):n[t]=s}}var V5=fn({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Pf(n,e){if(e){if(V5[n]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(we(137,n));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(we(60));if(typeof e.dangerouslySetInnerHTML!="object"||!("__html"in e.dangerouslySetInnerHTML))throw Error(we(61))}if(e.style!=null&&typeof e.style!="object")throw Error(we(62))}}function _f(n,e){if(n.indexOf("-")===-1)return typeof e.is=="string";switch(n){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Jf=null;function Kb(n){return n=n.target||n.srcElement||window,n.correspondingUseElement&&(n=n.correspondingUseElement),n.nodeType===3?n.parentNode:n}var Of=null,Kg=null,zg=null;function pB(n){if(n=Mu(n)){if(typeof Of!="function")throw Error(we(280));var e=n.stateNode;e&&(e=GA(e),Of(n.stateNode,n.type,e))}}function qS(n){Kg?zg?zg.push(n):zg=[n]:Kg=n}function $S(){if(Kg){var n=Kg,e=zg;if(zg=Kg=null,pB(n),e)for(n=0;n>>=0,n===0?32:31-(T5(n)/k5|0)|0}var td=64,nd=4194304;function fI(n){switch(n&-n){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return n&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return n&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return n}}function kh(n,e){var t=n.pendingLanes;if(t===0)return 0;var i=0,s=n.suspendedLanes,r=n.pingedLanes,o=t&268435455;if(o!==0){var a=o&~s;a!==0?i=fI(a):(r&=o,r!==0&&(i=fI(r)))}else o=t&~s,o!==0?i=fI(o):r!==0&&(i=fI(r));if(i===0)return 0;if(e!==0&&e!==i&&!(e&s)&&(s=i&-i,r=e&-e,s>=r||s===16&&(r&4194240)!==0))return e;if(i&4&&(i|=t&16),e=n.entangledLanes,e!==0)for(n=n.entanglements,e&=i;0t;t++)e.push(n);return e}function Wu(n,e,t){n.pendingLanes|=e,e!==536870912&&(n.suspendedLanes=0,n.pingedLanes=0),n=n.eventTimes,e=31-lr(e),n[e]=t}function _5(n,e){var t=n.pendingLanes&~e;n.pendingLanes=e,n.suspendedLanes=0,n.pingedLanes=0,n.expiredLanes&=e,n.mutableReadLanes&=e,n.entangledLanes&=e,e=n.entanglements;var i=n.eventTimes;for(n=n.expirationTimes;0=SI),wB=String.fromCharCode(32),SB=!1;function fx(n,e){switch(n){case"keyup":return vN.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function bx(n){return n=n.detail,typeof n=="object"&&"data"in n?n.data:null}var bg=!1;function GN(n,e){switch(n){case"compositionend":return bx(e);case"keypress":return e.which!==32?null:(SB=!0,wB);case"textInput":return n=e.data,n===wB&&SB?null:n;default:return null}}function BN(n,e){if(bg)return n==="compositionend"||!Pb&&fx(n,e)?(n=px(),fh=kb=Do=null,bg=!1,n):null;switch(n){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:t,offset:e-n};n=i}e:{for(;t;){if(t.nextSibling){t=t.nextSibling;break e}t=t.parentNode}t=void 0}t=VB(t)}}function Bx(n,e){return n&&e?n===e?!0:n&&n.nodeType===3?!1:e&&e.nodeType===3?Bx(n,e.parentNode):"contains"in n?n.contains(e):n.compareDocumentPosition?!!(n.compareDocumentPosition(e)&16):!1:!1}function Zx(){for(var n=window,e=zh();e instanceof n.HTMLIFrameElement;){try{var t=typeof e.contentWindow.location.href=="string"}catch{t=!1}if(t)n=e.contentWindow;else break;e=zh(n.document)}return e}function _b(n){var e=n&&n.nodeName&&n.nodeName.toLowerCase();return e&&(e==="input"&&(n.type==="text"||n.type==="search"||n.type==="tel"||n.type==="url"||n.type==="password")||e==="textarea"||n.contentEditable==="true")}function NN(n){var e=Zx(),t=n.focusedElem,i=n.selectionRange;if(e!==t&&t&&t.ownerDocument&&Bx(t.ownerDocument.documentElement,t)){if(i!==null&&_b(t)){if(e=i.start,n=i.end,n===void 0&&(n=e),"selectionStart"in t)t.selectionStart=e,t.selectionEnd=Math.min(n,t.value.length);else if(n=(e=t.ownerDocument||document)&&e.defaultView||window,n.getSelection){n=n.getSelection();var s=t.textContent.length,r=Math.min(i.start,s);i=i.end===void 0?r:Math.min(i.end,s),!n.extend&&r>i&&(s=i,i=r,r=s),s=MB(t,r);var o=MB(t,i);s&&o&&(n.rangeCount!==1||n.anchorNode!==s.node||n.anchorOffset!==s.offset||n.focusNode!==o.node||n.focusOffset!==o.offset)&&(e=e.createRange(),e.setStart(s.node,s.offset),n.removeAllRanges(),r>i?(n.addRange(e),n.extend(o.node,o.offset)):(e.setEnd(o.node,o.offset),n.addRange(e)))}}for(e=[],n=t;n=n.parentNode;)n.nodeType===1&&e.push({element:n,left:n.scrollLeft,top:n.scrollTop});for(typeof t.focus=="function"&&t.focus(),t=0;t=document.documentMode,vg=null,t0=null,RI=null,n0=!1;function NB(n,e,t){var i=t.window===t?t.document:t.nodeType===9?t:t.ownerDocument;n0||vg==null||vg!==zh(i)||(i=vg,"selectionStart"in i&&_b(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),RI&&jI(RI,i)||(RI=i,i=Ph(t0,"onSelect"),0Bg||(n.current=l0[Bg],l0[Bg]=null,Bg--)}function sn(n,e){Bg++,l0[Bg]=n.current,n.current=e}var aa={},yi=da(aa),Qi=da(!1),cl=aa;function Og(n,e){var t=n.type.contextTypes;if(!t)return aa;var i=n.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===e)return i.__reactInternalMemoizedMaskedChildContext;var s={},r;for(r in t)s[r]=e[r];return i&&(n=n.stateNode,n.__reactInternalMemoizedUnmaskedChildContext=e,n.__reactInternalMemoizedMaskedChildContext=s),s}function ji(n){return n=n.childContextTypes,n!=null}function Jh(){ln(Qi),ln(yi)}function LB(n,e,t){if(yi.current!==aa)throw Error(we(168));sn(yi,e),sn(Qi,t)}function Hx(n,e,t){var i=n.stateNode;if(e=e.childContextTypes,typeof i.getChildContext!="function")return t;i=i.getChildContext();for(var s in i)if(!(s in e))throw Error(we(108,x5(n)||"Unknown",s));return fn({},t,i)}function Oh(n){return n=(n=n.stateNode)&&n.__reactInternalMemoizedMergedChildContext||aa,cl=yi.current,sn(yi,n),sn(Qi,Qi.current),!0}function EB(n,e,t){var i=n.stateNode;if(!i)throw Error(we(169));t?(n=Hx(n,e,cl),i.__reactInternalMemoizedMergedChildContext=n,ln(Qi),ln(yi),sn(yi,n)):ln(Qi),sn(Qi,t)}var to=null,BA=!1,Sm=!1;function Xx(n){to===null?to=[n]:to.push(n)}function UN(n){BA=!0,Xx(n)}function ha(){if(!Sm&&to!==null){Sm=!0;var n=0,e=Qt;try{var t=to;for(Qt=1;n>=o,s-=o,so=1<<32-lr(e)+s|t<M?(Z=R,R=null):Z=R.sibling;var V=d(A,R,f[M],B);if(V===null){R===null&&(R=Z);break}n&&R&&V.alternate===null&&e(A,R),b=r(V,b,M),x===null?S=V:x.sibling=V,x=V,R=Z}if(M===f.length)return t(A,R),In&&La(A,M),S;if(R===null){for(;MM?(Z=R,R=null):Z=R.sibling;var N=d(A,R,V.value,B);if(N===null){R===null&&(R=Z);break}n&&R&&N.alternate===null&&e(A,R),b=r(N,b,M),x===null?S=N:x.sibling=N,x=N,R=Z}if(V.done)return t(A,R),In&&La(A,M),S;if(R===null){for(;!V.done;M++,V=f.next())V=C(A,V.value,B),V!==null&&(b=r(V,b,M),x===null?S=V:x.sibling=V,x=V);return In&&La(A,M),S}for(R=i(A,R);!V.done;M++,V=f.next())V=h(R,A,M,V.value,B),V!==null&&(n&&V.alternate!==null&&R.delete(V.key===null?M:V.key),b=r(V,b,M),x===null?S=V:x.sibling=V,x=V);return n&&R.forEach(function(U){return e(A,U)}),In&&La(A,M),S}function y(A,b,f,B){if(typeof f=="object"&&f!==null&&f.type===fg&&f.key===null&&(f=f.props.children),typeof f=="object"&&f!==null){switch(f.$$typeof){case qC:e:{for(var S=f.key,x=b;x!==null;){if(x.key===S){if(S=f.type,S===fg){if(x.tag===7){t(A,x.sibling),b=s(x,f.props.children),b.return=A,A=b;break e}}else if(x.elementType===S||typeof S=="object"&&S!==null&&S.$$typeof===zo&&JB(S)===x.type){t(A,x.sibling),b=s(x,f.props),b.ref=Pc(A,x,f),b.return=A,A=b;break e}t(A,x);break}else e(A,x);x=x.sibling}f.type===fg?(b=sl(f.props.children,A.mode,B,f.key),b.return=A,A=b):(B=Sh(f.type,f.key,f.props,null,A.mode,B),B.ref=Pc(A,b,f),B.return=A,A=B)}return o(A);case mg:e:{for(x=f.key;b!==null;){if(b.key===x)if(b.tag===4&&b.stateNode.containerInfo===f.containerInfo&&b.stateNode.implementation===f.implementation){t(A,b.sibling),b=s(b,f.children||[]),b.return=A,A=b;break e}else{t(A,b);break}else e(A,b);b=b.sibling}b=Xm(f,A.mode,B),b.return=A,A=b}return o(A);case zo:return x=f._init,y(A,b,x(f._payload),B)}if(mI(f))return m(A,b,f,B);if(Ec(f))return v(A,b,f,B);gd(A,f)}return typeof f=="string"&&f!==""||typeof f=="number"?(f=""+f,b!==null&&b.tag===6?(t(A,b.sibling),b=s(b,f),b.return=A,A=b):(t(A,b),b=Hm(f,A.mode,B),b.return=A,A=b),o(A)):t(A,b)}return y}var jg=kx(!0),Dx=kx(!1),Nu={},Vr=da(Nu),tu=da(Nu),nu=da(Nu);function ja(n){if(n===Nu)throw Error(we(174));return n}function nv(n,e){switch(sn(nu,e),sn(tu,n),sn(Vr,Nu),n=e.nodeType,n){case 9:case 11:e=(e=e.documentElement)?e.namespaceURI:Uf(null,"");break;default:n=n===8?e.parentNode:e,e=n.namespaceURI||null,n=n.tagName,e=Uf(e,n)}ln(Vr),sn(Vr,e)}function qg(){ln(Vr),ln(tu),ln(nu)}function Ux(n){ja(nu.current);var e=ja(Vr.current),t=Uf(e,n.type);e!==t&&(sn(tu,n),sn(Vr,t))}function iv(n){tu.current===n&&(ln(Vr),ln(tu))}var hn=da(0);function tA(n){for(var e=n;e!==null;){if(e.tag===13){var t=e.memoizedState;if(t!==null&&(t=t.dehydrated,t===null||t.data==="$?"||t.data==="$!"))return e}else if(e.tag===19&&e.memoizedProps.revealOrder!==void 0){if(e.flags&128)return e}else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===n)break;for(;e.sibling===null;){if(e.return===null||e.return===n)return null;e=e.return}e.sibling.return=e.return,e=e.sibling}return null}var xm=[];function sv(){for(var n=0;nt?t:4,n(!0);var i=Rm.transition;Rm.transition={};try{n(!1),e()}finally{Qt=t,Rm.transition=i}}function aR(){return zs().memoizedState}function ON(n,e,t){var i=ea(n);if(t={lane:i,action:t,hasEagerState:!1,eagerState:null,next:null},lR(n))gR(e,t);else if(t=zx(n,e,t,i),t!==null){var s=Vi();gr(t,n,i,s),cR(t,e,i)}}function QN(n,e,t){var i=ea(n),s={lane:i,action:t,hasEagerState:!1,eagerState:null,next:null};if(lR(n))gR(e,s);else{var r=n.alternate;if(n.lanes===0&&(r===null||r.lanes===0)&&(r=e.lastRenderedReducer,r!==null))try{var o=e.lastRenderedState,a=r(o,t);if(s.hasEagerState=!0,s.eagerState=a,Ir(a,o)){var l=e.interleaved;l===null?(s.next=s,ev(e)):(s.next=l.next,l.next=s),e.interleaved=s;return}}catch{}finally{}t=zx(n,e,s,i),t!==null&&(s=Vi(),gr(t,n,i,s),cR(t,e,i))}}function lR(n){var e=n.alternate;return n===mn||e!==null&&e===mn}function gR(n,e){WI=nA=!0;var t=n.pending;t===null?e.next=e:(e.next=t.next,t.next=e),n.pending=e}function cR(n,e,t){if(t&4194240){var i=e.lanes;i&=n.pendingLanes,t|=i,e.lanes=t,Lb(n,t)}}var iA={readContext:Ks,useCallback:hi,useContext:hi,useEffect:hi,useImperativeHandle:hi,useInsertionEffect:hi,useLayoutEffect:hi,useMemo:hi,useReducer:hi,useRef:hi,useState:hi,useDebugValue:hi,useDeferredValue:hi,useTransition:hi,useMutableSource:hi,useSyncExternalStore:hi,useId:hi,unstable_isNewReconciler:!1},jN={readContext:Ks,useCallback:function(n,e){return xr().memoizedState=[n,e===void 0?null:e],n},useContext:Ks,useEffect:QB,useImperativeHandle:function(n,e,t){return t=t!=null?t.concat([n]):null,Gh(4194308,4,nR.bind(null,e,n),t)},useLayoutEffect:function(n,e){return Gh(4194308,4,n,e)},useInsertionEffect:function(n,e){return Gh(4,2,n,e)},useMemo:function(n,e){var t=xr();return e=e===void 0?null:e,n=n(),t.memoizedState=[n,e],n},useReducer:function(n,e,t){var i=xr();return e=t!==void 0?t(e):e,i.memoizedState=i.baseState=e,n={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:n,lastRenderedState:e},i.queue=n,n=n.dispatch=ON.bind(null,mn,n),[i.memoizedState,n]},useRef:function(n){var e=xr();return n={current:n},e.memoizedState=n},useState:OB,useDebugValue:gv,useDeferredValue:function(n){return xr().memoizedState=n},useTransition:function(){var n=OB(!1),e=n[0];return n=JN.bind(null,n[1]),xr().memoizedState=n,[e,n]},useMutableSource:function(){},useSyncExternalStore:function(n,e,t){var i=mn,s=xr();if(In){if(t===void 0)throw Error(we(407));t=t()}else{if(t=e(),ti===null)throw Error(we(349));ul&30||Jx(i,e,t)}s.memoizedState=t;var r={value:t,getSnapshot:e};return s.queue=r,QB(Qx.bind(null,i,r,n),[n]),i.flags|=2048,ru(9,Ox.bind(null,i,r,t,e),void 0,null),t},useId:function(){var n=xr(),e=ti.identifierPrefix;if(In){var t=ro,i=so;t=(i&~(1<<32-lr(i)-1)).toString(32)+t,e=":"+e+"R"+t,t=iu++,0<\/script>",n=n.removeChild(n.firstChild)):typeof i.is=="string"?n=o.createElement(t,{is:i.is}):(n=o.createElement(t),t==="select"&&(o=n,i.multiple?o.multiple=!0:i.size&&(o.size=i.size))):n=o.createElementNS(n,t),n[Rr]=e,n[jI]=i,uR(n,e,!1,!1),e.stateNode=n;e:{switch(o=kf(t,i),t){case"dialog":on("cancel",n),on("close",n),s=i;break;case"iframe":case"object":case"embed":on("load",n),s=i;break;case"video":case"audio":for(s=0;sjg&&(e.flags|=128,i=!0,Dc(r,!1),e.lanes=4194304)}else{if(!i)if(n=Oh(o),n!==null){if(e.flags|=128,i=!0,t=n.updateQueue,t!==null&&(e.updateQueue=t,e.flags|=4),Dc(r,!0),r.tail===null&&r.tailMode==="hidden"&&!o.alternate&&!In)return hi(e),null}else 2*Sn()-r.renderingStartTime>jg&&t!==1073741824&&(e.flags|=128,i=!0,Dc(r,!1),e.lanes=4194304);r.isBackwards?(o.sibling=e.child,e.child=o):(t=r.last,t!==null?t.sibling=o:e.child=o,r.last=o)}return r.tail!==null?(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Sn(),e.sibling=null,t=hn.current,sn(hn,i?t&1|2:t&1),e):(hi(e),null);case 22:case 23:return Iv(),i=e.memoizedState!==null,n!==null&&n.memoizedState!==null!==i&&(e.flags|=8192),i&&e.mode&1?as&1073741824&&(hi(e),e.subtreeFlags&6&&(e.flags|=8192)):hi(e),null;case 24:return null;case 25:return null}throw Error(we(156,e.tag))}function QN(n,e){switch(Ub(e),e.tag){case 1:return Qi(e.type)&&Eh(),n=e.flags,n&65536?(e.flags=n&-65537|128,e):null;case 3:return Og(),ln(Oi),ln(vi),ev(),n=e.flags,n&65536&&!(n&128)?(e.flags=n&-65537|128,e):null;case 5:return $b(e),null;case 13:if(ln(hn),n=e.memoizedState,n!==null&&n.dehydrated!==null){if(e.alternate===null)throw Error(we(340));_g()}return n=e.flags,n&65536?(e.flags=n&-65537|128,e):null;case 19:return ln(hn),null;case 4:return Og(),null;case 10:return Ob(e.type._context),null;case 22:case 23:return Iv(),null;case 24:return null;default:return null}}var rd=!1,bi=!1,jN=typeof WeakSet=="function"?WeakSet:Set,ze=null;function Zg(n,e){var t=n.ref;if(t!==null)if(typeof t=="function")try{t(null)}catch(i){yn(n,e,i)}else t.current=null}function A0(n,e,t){try{t()}catch(i){yn(n,e,i)}}var $B=!1;function qN(n,e){if($f=Kh,n=mx(),kb(n)){if("selectionStart"in n)var t={start:n.selectionStart,end:n.selectionEnd};else e:{t=(t=n.ownerDocument)&&t.defaultView||window;var i=t.getSelection&&t.getSelection();if(i&&i.rangeCount!==0){t=i.anchorNode;var s=i.anchorOffset,r=i.focusNode;i=i.focusOffset;try{t.nodeType,r.nodeType}catch{t=null;break e}var o=0,a=-1,l=-1,c=0,u=0,C=n,d=null;t:for(;;){for(var h;C!==t||s!==0&&C.nodeType!==3||(a=o+s),C!==r||i!==0&&C.nodeType!==3||(l=o+i),C.nodeType===3&&(o+=C.nodeValue.length),(h=C.firstChild)!==null;)d=C,C=h;for(;;){if(C===n)break t;if(d===t&&++c===s&&(a=o),d===r&&++u===i&&(l=o),(h=C.nextSibling)!==null)break;C=d,d=C.parentNode}C=h}t=a===-1||l===-1?null:{start:a,end:l}}else t=null}t=t||{start:0,end:0}}else t=null;for(e0={focusedElem:n,selectionRange:t},Kh=!1,ze=e;ze!==null;)if(e=ze,n=e.child,(e.subtreeFlags&1028)!==0&&n!==null)n.return=e,ze=n;else for(;ze!==null;){e=ze;try{var m=e.alternate;if(e.flags&1024)switch(e.tag){case 0:case 11:case 15:break;case 1:if(m!==null){var v=m.memoizedProps,y=m.memoizedState,A=e.stateNode,b=A.getSnapshotBeforeUpdate(e.elementType===e.type?v:nr(e.type,v),y);A.__reactInternalSnapshotBeforeUpdate=b}break;case 3:var f=e.stateNode.containerInfo;f.nodeType===1?f.textContent="":f.nodeType===9&&f.documentElement&&f.removeChild(f.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(we(163))}}catch(B){yn(e,e.return,B)}if(n=e.sibling,n!==null){n.return=e.return,ze=n;break}ze=e.return}return m=$B,$B=!1,m}function xI(n,e,t){var i=e.updateQueue;if(i=i!==null?i.lastEffect:null,i!==null){var s=i=i.next;do{if((s.tag&n)===n){var r=s.destroy;s.destroy=void 0,r!==void 0&&A0(e,t,r)}s=s.next}while(s!==i)}}function bA(n,e){if(e=e.updateQueue,e=e!==null?e.lastEffect:null,e!==null){var t=e=e.next;do{if((t.tag&n)===n){var i=t.create;t.destroy=i()}t=t.next}while(t!==e)}}function p0(n){var e=n.ref;if(e!==null){var t=n.stateNode;switch(n.tag){case 5:n=t;break;default:n=t}typeof e=="function"?e(n):e.current=n}}function hR(n){var e=n.alternate;e!==null&&(n.alternate=null,hR(e)),n.child=null,n.deletions=null,n.sibling=null,n.tag===5&&(e=n.stateNode,e!==null&&(delete e[Rr],delete e[jI],delete e[i0],delete e[HN],delete e[XN])),n.stateNode=null,n.return=null,n.dependencies=null,n.memoizedProps=null,n.memoizedState=null,n.pendingProps=null,n.stateNode=null,n.updateQueue=null}function AR(n){return n.tag===5||n.tag===3||n.tag===4}function e2(n){e:for(;;){for(;n.sibling===null;){if(n.return===null||AR(n.return))return null;n=n.return}for(n.sibling.return=n.return,n=n.sibling;n.tag!==5&&n.tag!==6&&n.tag!==18;){if(n.flags&2||n.child===null||n.tag===4)continue e;n.child.return=n,n=n.child}if(!(n.flags&2))return n.stateNode}}function m0(n,e,t){var i=n.tag;if(i===5||i===6)n=n.stateNode,e?t.nodeType===8?t.parentNode.insertBefore(n,e):t.insertBefore(n,e):(t.nodeType===8?(e=t.parentNode,e.insertBefore(n,t)):(e=t,e.appendChild(n)),t=t._reactRootContainer,t!=null||e.onclick!==null||(e.onclick=Th));else if(i!==4&&(n=n.child,n!==null))for(m0(n,e,t),n=n.sibling;n!==null;)m0(n,e,t),n=n.sibling}function f0(n,e,t){var i=n.tag;if(i===5||i===6)n=n.stateNode,e?t.insertBefore(n,e):t.appendChild(n);else if(i!==4&&(n=n.child,n!==null))for(f0(n,e,t),n=n.sibling;n!==null;)f0(n,e,t),n=n.sibling}var ri=null,sr=!1;function Vo(n,e,t){for(t=t.child;t!==null;)pR(n,e,t),t=t.sibling}function pR(n,e,t){if(Wr&&typeof Wr.onCommitFiberUnmount=="function")try{Wr.onCommitFiberUnmount(uA,t)}catch{}switch(t.tag){case 5:bi||Zg(t,e);case 6:var i=ri,s=sr;ri=null,Vo(n,e,t),ri=i,sr=s,ri!==null&&(sr?(n=ri,t=t.stateNode,n.nodeType===8?n.parentNode.removeChild(t):n.removeChild(t)):ri.removeChild(t.stateNode));break;case 18:ri!==null&&(sr?(n=ri,t=t.stateNode,n.nodeType===8?ym(n.parentNode,t):n.nodeType===1&&ym(n,t),PI(n)):ym(ri,t.stateNode));break;case 4:i=ri,s=sr,ri=t.stateNode.containerInfo,sr=!0,Vo(n,e,t),ri=i,sr=s;break;case 0:case 11:case 14:case 15:if(!bi&&(i=t.updateQueue,i!==null&&(i=i.lastEffect,i!==null))){s=i=i.next;do{var r=s,o=r.destroy;r=r.tag,o!==void 0&&(r&2||r&4)&&A0(t,e,o),s=s.next}while(s!==i)}Vo(n,e,t);break;case 1:if(!bi&&(Zg(t,e),i=t.stateNode,typeof i.componentWillUnmount=="function"))try{i.props=t.memoizedProps,i.state=t.memoizedState,i.componentWillUnmount()}catch(a){yn(t,e,a)}Vo(n,e,t);break;case 21:Vo(n,e,t);break;case 22:t.mode&1?(bi=(i=bi)||t.memoizedState!==null,Vo(n,e,t),bi=i):Vo(n,e,t);break;default:Vo(n,e,t)}}function t2(n){var e=n.updateQueue;if(e!==null){n.updateQueue=null;var t=n.stateNode;t===null&&(t=n.stateNode=new jN),e.forEach(function(i){var s=a3.bind(null,n,i);t.has(i)||(t.add(i),i.then(s,s))})}}function Os(n,e){var t=e.deletions;if(t!==null)for(var i=0;is&&(s=o),i&=~r}if(i=s,i=Sn()-i,i=(120>i?120:480>i?480:1080>i?1080:1920>i?1920:3e3>i?3e3:4320>i?4320:1960*e3(i/1960))-i,10n?16:n,Uo===null)var i=!1;else{if(n=Uo,Uo=null,eA=0,Ft&6)throw Error(we(331));var s=Ft;for(Ft|=4,ze=n.current;ze!==null;){var r=ze,o=r.child;if(ze.flags&16){var a=r.deletions;if(a!==null){for(var l=0;lSn()-gv?nl(n,0):lv|=t),ji(n,e)}function ZR(n,e){e===0&&(n.mode&1?(e=QC,QC<<=1,!(QC&130023424)&&(QC=4194304)):e=1);var t=Wi();n=Co(n,e),n!==null&&(wu(n,e,t),ji(n,t))}function o3(n){var e=n.memoizedState,t=0;e!==null&&(t=e.retryLane),ZR(n,t)}function a3(n,e){var t=0;switch(n.tag){case 13:var i=n.stateNode,s=n.memoizedState;s!==null&&(t=s.retryLane);break;case 19:i=n.stateNode;break;default:throw Error(we(314))}i!==null&&i.delete(e),ZR(n,t)}var wR;wR=function(n,e,t){if(n!==null)if(n.memoizedProps!==e.pendingProps||Oi.current)_i=!0;else{if(!(n.lanes&t)&&!(e.flags&128))return _i=!1,JN(n,e,t);_i=!!(n.flags&131072)}else _i=!1,In&&e.flags&1048576&&Rx(e,Uh,e.index);switch(e.lanes=0,e.tag){case 2:var i=e.type;mh(n,e),n=e.pendingProps;var s=Pg(e,vi.current);Kg(e,t),s=nv(null,e,i,n,s,t);var r=iv();return e.flags|=1,typeof s=="object"&&s!==null&&typeof s.render=="function"&&s.$$typeof===void 0?(e.tag=1,e.memoizedState=null,e.updateQueue=null,Qi(i)?(r=!0,kh(e)):r=!1,e.memoizedState=s.state!==null&&s.state!==void 0?s.state:null,jb(e),s.updater=mA,e.stateNode=s,s._reactInternals=e,g0(e,i,n,t),e=u0(null,e,i,!0,r,t)):(e.tag=0,In&&r&&Db(e),Si(null,e,s,t),e=e.child),e;case 16:i=e.elementType;e:{switch(mh(n,e),n=e.pendingProps,s=i._init,i=s(i._payload),e.type=i,s=e.tag=g3(i),n=nr(i,n),s){case 0:e=I0(null,e,i,n,t);break e;case 1:e=QB(null,e,i,n,t);break e;case 11:e=JB(null,e,i,n,t);break e;case 14:e=OB(null,e,i,nr(i.type,n),t);break e}throw Error(we(306,i,""))}return e;case 0:return i=e.type,s=e.pendingProps,s=e.elementType===i?s:nr(i,s),I0(n,e,i,s,t);case 1:return i=e.type,s=e.pendingProps,s=e.elementType===i?s:nr(i,s),QB(n,e,i,s,t);case 3:e:{if(gR(e),n===null)throw Error(we(387));i=e.pendingProps,r=e.memoizedState,s=r.element,Nx(n,e),Jh(e,i,null,t);var o=e.memoizedState;if(i=o.element,r.isDehydrated)if(r={element:i,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},e.updateQueue.baseState=r,e.memoizedState=r,e.flags&256){s=Qg(Error(we(423)),e),e=jB(n,e,i,t,s);break e}else if(i!==s){s=Qg(Error(we(424)),e),e=jB(n,e,i,t,s);break e}else for(gs=Qo(e.stateNode.containerInfo.firstChild),Is=e,In=!0,rr=null,t=Fx(e,null,i,t),e.child=t;t;)t.flags=t.flags&-3|4096,t=t.sibling;else{if(_g(),i===s){e=ho(n,e,t);break e}Si(n,e,i,t)}e=e.child}return e;case 5:return Kx(e),n===null&&o0(e),i=e.type,s=e.pendingProps,r=n!==null?n.memoizedProps:null,o=s.children,t0(i,s)?o=null:r!==null&&t0(i,r)&&(e.flags|=32),lR(n,e),Si(n,e,o,t),e.child;case 6:return n===null&&o0(e),null;case 13:return cR(n,e,t);case 4:return qb(e,e.stateNode.containerInfo),i=e.pendingProps,n===null?e.child=Jg(e,null,i,t):Si(n,e,i,t),e.child;case 11:return i=e.type,s=e.pendingProps,s=e.elementType===i?s:nr(i,s),JB(n,e,i,s,t);case 7:return Si(n,e,e.pendingProps,t),e.child;case 8:return Si(n,e,e.pendingProps.children,t),e.child;case 12:return Si(n,e,e.pendingProps.children,t),e.child;case 10:e:{if(i=e.type._context,s=e.pendingProps,r=e.memoizedProps,o=s.value,sn(Ph,i._currentValue),i._currentValue=o,r!==null)if(Ir(r.value,o)){if(r.children===s.children&&!Oi.current){e=ho(n,e,t);break e}}else for(r=e.child,r!==null&&(r.return=e);r!==null;){var a=r.dependencies;if(a!==null){o=r.child;for(var l=a.firstContext;l!==null;){if(l.context===i){if(r.tag===1){l=go(-1,t&-t),l.tag=2;var c=r.updateQueue;if(c!==null){c=c.shared;var u=c.pending;u===null?l.next=l:(l.next=u.next,u.next=l),c.pending=l}}r.lanes|=t,l=r.alternate,l!==null&&(l.lanes|=t),a0(r.return,t,e),a.lanes|=t;break}l=l.next}}else if(r.tag===10)o=r.type===e.type?null:r.child;else if(r.tag===18){if(o=r.return,o===null)throw Error(we(341));o.lanes|=t,a=o.alternate,a!==null&&(a.lanes|=t),a0(o,t,e),o=r.sibling}else o=r.child;if(o!==null)o.return=r;else for(o=r;o!==null;){if(o===e){o=null;break}if(r=o.sibling,r!==null){r.return=o.return,o=r;break}o=o.return}r=o}Si(n,e,s.children,t),e=e.child}return e;case 9:return s=e.type,i=e.pendingProps.children,Kg(e,t),s=Fs(s),i=i(s),e.flags|=1,Si(n,e,i,t),e.child;case 14:return i=e.type,s=nr(i,e.pendingProps),s=nr(i.type,s),OB(n,e,i,s,t);case 15:return oR(n,e,e.type,e.pendingProps,t);case 17:return i=e.type,s=e.pendingProps,s=e.elementType===i?s:nr(i,s),mh(n,e),e.tag=1,Qi(i)?(n=!0,kh(e)):n=!1,Kg(e,t),Xx(e,i,s),g0(e,i,s,t),u0(null,e,i,!0,n,t);case 19:return IR(n,e,t);case 22:return aR(n,e,t)}throw Error(we(156,e.tag))};function SR(n,e){return $S(n,e)}function l3(n,e,t,i){this.tag=n,this.key=t,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=e,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Hs(n,e,t,i){return new l3(n,e,t,i)}function Cv(n){return n=n.prototype,!(!n||!n.isReactComponent)}function g3(n){if(typeof n=="function")return Cv(n)?1:0;if(n!=null){if(n=n.$$typeof,n===Mb)return 11;if(n===Nb)return 14}return 2}function ea(n,e){var t=n.alternate;return t===null?(t=Hs(n.tag,e,n.key,n.mode),t.elementType=n.elementType,t.type=n.type,t.stateNode=n.stateNode,t.alternate=n,n.alternate=t):(t.pendingProps=e,t.type=n.type,t.flags=0,t.subtreeFlags=0,t.deletions=null),t.flags=n.flags&14680064,t.childLanes=n.childLanes,t.lanes=n.lanes,t.child=n.child,t.memoizedProps=n.memoizedProps,t.memoizedState=n.memoizedState,t.updateQueue=n.updateQueue,e=n.dependencies,t.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext},t.sibling=n.sibling,t.index=n.index,t.ref=n.ref,t}function vh(n,e,t,i,s,r){var o=2;if(i=n,typeof n=="function")Cv(n)&&(o=1);else if(typeof n=="string")o=5;else e:switch(n){case Ag:return il(t.children,s,r,e);case Vb:o=8,s|=8;break;case Nf:return n=Hs(12,t,e,s|2),n.elementType=Nf,n.lanes=r,n;case Hf:return n=Hs(13,t,e,s),n.elementType=Hf,n.lanes=r,n;case Xf:return n=Hs(19,t,e,s),n.elementType=Xf,n.lanes=r,n;case YS:return yA(t,s,r,e);default:if(typeof n=="object"&&n!==null)switch(n.$$typeof){case HS:o=10;break e;case XS:o=9;break e;case Mb:o=11;break e;case Nb:o=14;break e;case zo:o=16,i=null;break e}throw Error(we(130,n==null?n:typeof n,""))}return e=Hs(o,t,e,s),e.elementType=n,e.type=i,e.lanes=r,e}function il(n,e,t,i){return n=Hs(7,n,i,e),n.lanes=t,n}function yA(n,e,t,i){return n=Hs(22,n,i,e),n.elementType=YS,n.lanes=t,n.stateNode={isHidden:!1},n}function Wm(n,e,t){return n=Hs(6,n,null,e),n.lanes=t,n}function Vm(n,e,t){return e=Hs(4,n.children!==null?n.children:[],n.key,e),e.lanes=t,e.stateNode={containerInfo:n.containerInfo,pendingChildren:null,implementation:n.implementation},e}function c3(n,e,t,i,s){this.tag=e,this.containerInfo=n,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Im(0),this.expirationTimes=Im(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Im(0),this.identifierPrefix=i,this.onRecoverableError=s,this.mutableSourceEagerHydrationData=null}function dv(n,e,t,i,s,r,o,a,l){return n=new c3(n,e,t,a,l),e===1?(e=1,r===!0&&(e|=8)):e=0,r=Hs(3,null,null,e),n.current=r,r.stateNode=n,r.memoizedState={element:i,isDehydrated:t,cache:null,transitions:null,pendingSuspenseBoundaries:null},jb(r),n}function I3(n,e,t){var i=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(VR)}catch(n){console.error(n)}}VR(),RS.exports=As;var A3=RS.exports,g2=A3;Vf.createRoot=g2.createRoot,Vf.hydrateRoot=g2.hydrateRoot;const p3=({className:n})=>E.jsxs("svg",{className:n,width:"100%",height:"100%",viewBox:"0 0 180 180",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[E.jsx("path",{className:"fill-icontext dark:fill-icontext-dark",d:"M76.875 5.3125L65.25 51H54.2188L48.0312 27C47.9062 26.5417 47.7396 25.8438 47.5312 24.9062C47.3229 23.9688 47.1042 22.9479 46.875 21.8438C46.6458 20.7188 46.4375 19.6667 46.25 18.6875C46.0833 17.6875 45.9688 16.8958 45.9062 16.3125C45.8438 16.8958 45.7188 17.6771 45.5312 18.6562C45.3646 19.6354 45.1667 20.6771 44.9375 21.7812C44.7292 22.8854 44.5208 23.9167 44.3125 24.875C44.1042 25.8333 43.9375 26.5625 43.8125 27.0625L37.6562 51H26.6562L15 5.3125H24.5312L30.375 30.25C30.5417 31 30.7292 31.8958 30.9375 32.9375C31.1667 33.9792 31.3854 35.0729 31.5938 36.2188C31.8229 37.3438 32.0208 38.4375 32.1875 39.5C32.375 40.5417 32.5104 41.4479 32.5938 42.2188C32.6979 41.4271 32.8333 40.5104 33 39.4688C33.1667 38.4062 33.3438 37.3333 33.5312 36.25C33.7396 35.1458 33.9479 34.125 34.1562 33.1875C34.3646 32.25 34.5521 31.4896 34.7188 30.9062L41.375 5.3125H50.5312L57.1875 30.9062C57.3333 31.4688 57.5 32.2292 57.6875 33.1875C57.8958 34.125 58.1042 35.1458 58.3125 36.25C58.5208 37.3542 58.7083 38.4375 58.875 39.5C59.0625 40.5417 59.1979 41.4479 59.2812 42.2188C59.4271 41.1771 59.625 39.9167 59.875 38.4375C60.1458 36.9375 60.4271 35.4479 60.7188 33.9688C61.0312 32.4896 61.3021 31.25 61.5312 30.25L67.3438 5.3125H76.875ZM107.225 33.4688C107.225 36.3854 106.829 38.9688 106.037 41.2188C105.267 43.4688 104.131 45.375 102.631 46.9375C101.152 48.4792 99.3604 49.6458 97.2562 50.4375C95.1729 51.2292 92.8187 51.625 90.1937 51.625C87.7354 51.625 85.475 51.2292 83.4125 50.4375C81.3708 49.6458 79.5896 48.4792 78.0687 46.9375C76.5687 45.375 75.4021 43.4688 74.5687 41.2188C73.7562 38.9688 73.35 36.3854 73.35 33.4688C73.35 29.5938 74.0375 26.3125 75.4125 23.625C76.7875 20.9375 78.7458 18.8958 81.2875 17.5C83.8292 16.1042 86.8604 15.4062 90.3812 15.4062C93.6521 15.4062 96.5479 16.1042 99.0687 17.5C101.61 18.8958 103.6 20.9375 105.037 23.625C106.496 26.3125 107.225 29.5938 107.225 33.4688ZM83.0687 33.4688C83.0687 35.7604 83.3187 37.6875 83.8187 39.25C84.3187 40.8125 85.1 41.9896 86.1625 42.7812C87.225 43.5729 88.6104 43.9688 90.3187 43.9688C92.0062 43.9688 93.3708 43.5729 94.4125 42.7812C95.475 41.9896 96.2458 40.8125 96.725 39.25C97.225 37.6875 97.475 35.7604 97.475 33.4688C97.475 31.1562 97.225 29.2396 96.725 27.7188C96.2458 26.1771 95.475 25.0208 94.4125 24.25C93.35 23.4792 91.9646 23.0938 90.2562 23.0938C87.7354 23.0938 85.9021 23.9583 84.7562 25.6875C83.6312 27.4167 83.0687 30.0104 83.0687 33.4688ZM122.003 51.625C118.107 51.625 114.93 50.1042 112.471 47.0625C110.034 44 108.815 39.5104 108.815 33.5938C108.815 27.6146 110.055 23.0938 112.534 20.0312C115.013 16.9479 118.253 15.4062 122.253 15.4062C123.919 15.4062 125.388 15.6354 126.659 16.0938C127.93 16.5521 129.023 17.1667 129.94 17.9375C130.878 18.7083 131.669 19.5729 132.315 20.5312H132.628C132.503 19.8646 132.346 18.8854 132.159 17.5938C131.992 16.2812 131.909 14.9375 131.909 13.5625V2.375H141.471V51H134.159L132.315 46.4688H131.909C131.305 47.4271 130.544 48.3021 129.628 49.0938C128.732 49.8646 127.659 50.4792 126.409 50.9375C125.159 51.3958 123.69 51.625 122.003 51.625ZM125.346 44.0312C127.95 44.0312 129.784 43.2604 130.846 41.7188C131.93 40.1562 132.503 37.8125 132.565 34.6875V33.6562C132.565 30.2604 132.044 27.6667 131.003 25.875C129.961 24.0625 128.023 23.1562 125.19 23.1562C123.086 23.1562 121.44 24.0625 120.253 25.875C119.065 27.6875 118.471 30.3021 118.471 33.7188C118.471 37.1354 119.065 39.7083 120.253 41.4375C121.461 43.1667 123.159 44.0312 125.346 44.0312ZM159.446 15.4062C162.675 15.4062 165.457 16.0312 167.79 17.2812C170.123 18.5104 171.925 20.3021 173.196 22.6562C174.467 25.0104 175.103 27.8854 175.103 31.2812V35.9062H152.571C152.675 38.5938 153.478 40.7083 154.978 42.25C156.498 43.7708 158.603 44.5312 161.29 44.5312C163.519 44.5312 165.561 44.3021 167.415 43.8438C169.269 43.3854 171.175 42.6979 173.134 41.7812V49.1562C171.405 50.0104 169.592 50.6354 167.696 51.0312C165.821 51.4271 163.54 51.625 160.853 51.625C157.353 51.625 154.248 50.9792 151.54 49.6875C148.853 48.3958 146.738 46.4271 145.196 43.7812C143.675 41.1354 142.915 37.8021 142.915 33.7812C142.915 29.6979 143.603 26.3021 144.978 23.5938C146.373 20.8646 148.311 18.8229 150.79 17.4688C153.269 16.0938 156.155 15.4062 159.446 15.4062ZM159.509 22.1875C157.655 22.1875 156.113 22.7812 154.884 23.9688C153.675 25.1562 152.978 27.0208 152.79 29.5625H166.165C166.144 28.1458 165.884 26.8854 165.384 25.7812C164.905 24.6771 164.175 23.8021 163.196 23.1562C162.238 22.5104 161.009 22.1875 159.509 22.1875ZM61.2812 155H48.9688L29.0938 120.438H28.8125C28.8958 121.875 28.9688 123.323 29.0312 124.781C29.0938 126.24 29.1562 127.698 29.2188 129.156C29.2812 130.594 29.3438 132.042 29.4062 133.5V155H20.75V109.312H32.9688L52.8125 143.531H53.0312C52.9896 142.115 52.9375 140.708 52.875 139.312C52.8125 137.917 52.75 136.521 52.6875 135.125C52.6458 133.729 52.6042 132.333 52.5625 130.938V109.312H61.2812V155ZM75.1937 120.062V155H65.6625V120.062H75.1937ZM70.4437 106.375C71.8604 106.375 73.0792 106.708 74.1 107.375C75.1208 108.021 75.6312 109.24 75.6312 111.031C75.6312 112.802 75.1208 114.031 74.1 114.719C73.0792 115.385 71.8604 115.719 70.4437 115.719C69.0062 115.719 67.7771 115.385 66.7562 114.719C65.7562 114.031 65.2562 112.802 65.2562 111.031C65.2562 109.24 65.7562 108.021 66.7562 107.375C67.7771 106.708 69.0062 106.375 70.4437 106.375Z"}),E.jsx("path",{className:"fill-primary",d:"M18.3382 54.625C18.1007 55.7875 17.857 57.0187 17.607 58.3187C17.3695 59.6187 17.1507 60.8937 16.9507 62.1437C16.7632 63.3937 16.6132 64.5312 16.5007 65.5562H10.0882L9.807 65.1437C10.0445 64.2187 10.3382 63.1187 10.6882 61.8437C11.0507 60.5562 11.4382 59.2687 11.8507 57.9812C12.2757 56.6812 12.7007 55.5625 13.1257 54.625H18.3382ZM8.77575 54.625C8.53825 55.7875 8.2945 57.0187 8.0445 58.3187C7.807 59.6187 7.58825 60.8937 7.38825 62.1437C7.20075 63.3937 7.05075 64.5312 6.93825 65.5562H0.525749L0.244499 65.1437C0.481999 64.2187 0.775749 63.1187 1.12575 61.8437C1.48825 60.5562 1.87575 59.2687 2.28825 57.9812C2.71325 56.6812 3.13825 55.5625 3.56325 54.625H8.77575ZM61.2812 103H48.9688L29.0938 68.4375H28.8125C28.8958 69.875 28.9688 71.3229 29.0312 72.7812C29.0938 74.2396 29.1562 75.6979 29.2188 77.1562C29.2812 78.5938 29.3438 80.0417 29.4062 81.5V103H20.75V57.3125H32.9688L52.8125 91.5312H53.0312C52.9896 90.1146 52.9375 88.7083 52.875 87.3125C52.8125 85.9167 52.75 84.5208 52.6875 83.125C52.6458 81.7292 52.6042 80.3333 52.5625 78.9375V57.3125H61.2812V103ZM75.1937 68.0625V103H65.6625V68.0625H75.1937ZM70.4437 54.375C71.8604 54.375 73.0792 54.7083 74.1 55.375C75.1208 56.0208 75.6312 57.2396 75.6312 59.0312C75.6312 60.8021 75.1208 62.0312 74.1 62.7188C73.0792 63.3854 71.8604 63.7188 70.4437 63.7188C69.0062 63.7188 67.7771 63.3854 66.7562 62.7188C65.7562 62.0312 65.2562 60.8021 65.2562 59.0312C65.2562 57.2396 65.7562 56.0208 66.7562 55.375C67.7771 54.7083 69.0062 54.375 70.4437 54.375ZM119.856 67.4062C123.815 67.4062 126.804 68.4271 128.825 70.4688C130.867 72.4896 131.888 75.7396 131.888 80.2188V103H122.325V82.5938C122.325 80.0938 121.898 78.2083 121.044 76.9375C120.19 75.6667 118.867 75.0312 117.075 75.0312C114.554 75.0312 112.763 75.9375 111.7 77.75C110.638 79.5417 110.106 82.1146 110.106 85.4688V103H100.575V82.5938C100.575 80.9271 100.388 79.5312 100.013 78.4062C99.6375 77.2812 99.0646 76.4375 98.2938 75.875C97.5229 75.3125 96.5333 75.0312 95.325 75.0312C93.5542 75.0312 92.1583 75.4792 91.1375 76.375C90.1375 77.25 89.4188 78.5521 88.9813 80.2812C88.5646 81.9896 88.3563 84.0833 88.3563 86.5625V103H78.825V68.0625H86.1063L87.3875 72.5312H87.9188C88.6271 71.3229 89.5125 70.3438 90.575 69.5938C91.6583 68.8438 92.8458 68.2917 94.1375 67.9375C95.4292 67.5833 96.7417 67.4062 98.075 67.4062C100.638 67.4062 102.804 67.8229 104.575 68.6562C106.367 69.4896 107.742 70.7812 108.7 72.5312H109.544C110.585 70.7396 112.054 69.4375 113.95 68.625C115.867 67.8125 117.835 67.4062 119.856 67.4062ZM167.05 85.4688C167.05 88.3854 166.654 90.9688 165.863 93.2188C165.092 95.4688 163.956 97.375 162.456 98.9375C160.977 100.479 159.185 101.646 157.081 102.438C154.998 103.229 152.644 103.625 150.019 103.625C147.56 103.625 145.3 103.229 143.238 102.438C141.196 101.646 139.415 100.479 137.894 98.9375C136.394 97.375 135.227 95.4688 134.394 93.2188C133.581 90.9688 133.175 88.3854 133.175 85.4688C133.175 81.5938 133.863 78.3125 135.238 75.625C136.613 72.9375 138.571 70.8958 141.113 69.5C143.654 68.1042 146.685 67.4062 150.206 67.4062C153.477 67.4062 156.373 68.1042 158.894 69.5C161.435 70.8958 163.425 72.9375 164.863 75.625C166.321 78.3125 167.05 81.5938 167.05 85.4688ZM142.894 85.4688C142.894 87.7604 143.144 89.6875 143.644 91.25C144.144 92.8125 144.925 93.9896 145.988 94.7812C147.05 95.5729 148.435 95.9688 150.144 95.9688C151.831 95.9688 153.196 95.5729 154.238 94.7812C155.3 93.9896 156.071 92.8125 156.55 91.25C157.05 89.6875 157.3 87.7604 157.3 85.4688C157.3 83.1562 157.05 81.2396 156.55 79.7188C156.071 78.1771 155.3 77.0208 154.238 76.25C153.175 75.4792 151.79 75.0938 150.081 75.0938C147.56 75.0938 145.727 75.9583 144.581 77.6875C143.456 79.4167 142.894 82.0104 142.894 85.4688ZM182.031 54.625L182.294 55.0375C182.069 55.9625 181.775 57.0687 181.412 58.3562C181.062 59.6312 180.675 60.9125 180.25 62.2C179.837 63.4875 179.419 64.6062 178.994 65.5562H173.781C174.031 64.3937 174.275 63.1625 174.512 61.8625C174.75 60.5625 174.962 59.2875 175.15 58.0375C175.35 56.7875 175.506 55.65 175.619 54.625H182.031ZM172.469 54.625L172.75 55.0375C172.525 55.9625 172.231 57.0687 171.869 58.3562C171.506 59.6312 171.112 60.9125 170.687 62.2C170.275 63.4875 169.856 64.6062 169.431 65.5562H164.219C164.406 64.6812 164.587 63.7687 164.762 62.8187C164.95 61.8562 165.125 60.8937 165.287 59.9312C165.45 58.9687 165.594 58.0375 165.719 57.1375C165.856 56.225 165.969 55.3875 166.056 54.625H172.469Z"})]}),m3="/assets/penrose.svg",f3="/assets/edgeworth.svg",b3="/assets/mathdiagrams.webp";/** +`+r.stack}return{value:n,source:e,stack:s,digest:null}}function Mm(n,e,t){return{value:n,source:null,stack:t??null,digest:e??null}}function d0(n,e){try{console.error(e.value)}catch(t){setTimeout(function(){throw t})}}var e3=typeof WeakMap=="function"?WeakMap:Map;function IR(n,e,t){t=go(-1,t),t.tag=3,t.payload={element:null};var i=e.value;return t.callback=function(){rA||(rA=!0,B0=i),d0(n,e)},t}function uR(n,e,t){t=go(-1,t),t.tag=3;var i=n.type.getDerivedStateFromError;if(typeof i=="function"){var s=e.value;t.payload=function(){return i(s)},t.callback=function(){d0(n,e)}}var r=n.stateNode;return r!==null&&typeof r.componentDidCatch=="function"&&(t.callback=function(){d0(n,e),typeof i!="function"&&($o===null?$o=new Set([this]):$o.add(this));var o=e.stack;this.componentDidCatch(e.value,{componentStack:o!==null?o:""})}),t}function jB(n,e,t){var i=n.pingCache;if(i===null){i=n.pingCache=new e3;var s=new Set;i.set(e,s)}else s=i.get(e),s===void 0&&(s=new Set,i.set(e,s));s.has(t)||(s.add(t),n=d3.bind(null,n,e,t),e.then(n,n))}function qB(n){do{var e;if((e=n.tag===13)&&(e=n.memoizedState,e=e!==null?e.dehydrated!==null:!0),e)return n;n=n.return}while(n!==null);return null}function $B(n,e,t,i,s){return n.mode&1?(n.flags|=65536,n.lanes=s,n):(n===e?n.flags|=65536:(n.flags|=128,t.flags|=131072,t.flags&=-52805,t.tag===1&&(t.alternate===null?t.tag=17:(e=go(-1,1),e.tag=2,qo(t,e,1))),t.lanes|=1),n)}var t3=mo.ReactCurrentOwner,Ji=!1;function xi(n,e,t,i){e.child=n===null?Dx(e,null,t,i):jg(e,n.child,t,i)}function e2(n,e,t,i,s){t=t.render;var r=e.ref;return Eg(e,s),i=ov(n,e,t,i,r,s),t=av(),n!==null&&!Ji?(e.updateQueue=n.updateQueue,e.flags&=-2053,n.lanes&=~s,ho(n,e,s)):(In&&t&&Jb(e),e.flags|=1,xi(n,e,i,s),e.child)}function t2(n,e,t,i,s){if(n===null){var r=t.type;return typeof r=="function"&&!pv(r)&&r.defaultProps===void 0&&t.compare===null&&t.defaultProps===void 0?(e.tag=15,e.type=r,CR(n,e,r,i,s)):(n=Sh(t.type,null,i,e,e.mode,s),n.ref=e.ref,n.return=e,e.child=n)}if(r=n.child,!(n.lanes&s)){var o=r.memoizedProps;if(t=t.compare,t=t!==null?t:jI,t(o,i)&&n.ref===e.ref)return ho(n,e,s)}return e.flags|=1,n=ta(r,i),n.ref=e.ref,n.return=e,e.child=n}function CR(n,e,t,i,s){if(n!==null){var r=n.memoizedProps;if(jI(r,i)&&n.ref===e.ref)if(Ji=!1,e.pendingProps=i=r,(n.lanes&s)!==0)n.flags&131072&&(Ji=!0);else return e.lanes=n.lanes,ho(n,e,s)}return h0(n,e,t,i,s)}function dR(n,e,t){var i=e.pendingProps,s=i.children,r=n!==null?n.memoizedState:null;if(i.mode==="hidden")if(!(e.mode&1))e.memoizedState={baseLanes:0,cachePool:null,transitions:null},sn(Rg,ls),ls|=t;else{if(!(t&1073741824))return n=r!==null?r.baseLanes|t:t,e.lanes=e.childLanes=1073741824,e.memoizedState={baseLanes:n,cachePool:null,transitions:null},e.updateQueue=null,sn(Rg,ls),ls|=n,null;e.memoizedState={baseLanes:0,cachePool:null,transitions:null},i=r!==null?r.baseLanes:t,sn(Rg,ls),ls|=i}else r!==null?(i=r.baseLanes|t,e.memoizedState=null):i=t,sn(Rg,ls),ls|=i;return xi(n,e,s,t),e.child}function hR(n,e){var t=e.ref;(n===null&&t!==null||n!==null&&n.ref!==t)&&(e.flags|=512,e.flags|=2097152)}function h0(n,e,t,i,s){var r=ji(t)?cl:yi.current;return r=Og(e,r),Eg(e,s),t=ov(n,e,t,i,r,s),i=av(),n!==null&&!Ji?(e.updateQueue=n.updateQueue,e.flags&=-2053,n.lanes&=~s,ho(n,e,s)):(In&&i&&Jb(e),e.flags|=1,xi(n,e,t,s),e.child)}function n2(n,e,t,i,s){if(ji(t)){var r=!0;Oh(e)}else r=!1;if(Eg(e,s),e.stateNode===null)Bh(n,e),Tx(e,t,i),C0(e,t,i,s),i=!0;else if(n===null){var o=e.stateNode,a=e.memoizedProps;o.props=a;var l=o.context,c=t.contextType;typeof c=="object"&&c!==null?c=Ks(c):(c=ji(t)?cl:yi.current,c=Og(e,c));var u=t.getDerivedStateFromProps,C=typeof u=="function"||typeof o.getSnapshotBeforeUpdate=="function";C||typeof o.UNSAFE_componentWillReceiveProps!="function"&&typeof o.componentWillReceiveProps!="function"||(a!==i||l!==c)&&_B(e,o,i,c),Lo=!1;var d=e.memoizedState;o.state=d,eA(e,i,o,s),l=e.memoizedState,a!==i||d!==l||Qi.current||Lo?(typeof u=="function"&&(u0(e,t,u,i),l=e.memoizedState),(a=Lo||PB(e,t,a,i,d,l,c))?(C||typeof o.UNSAFE_componentWillMount!="function"&&typeof o.componentWillMount!="function"||(typeof o.componentWillMount=="function"&&o.componentWillMount(),typeof o.UNSAFE_componentWillMount=="function"&&o.UNSAFE_componentWillMount()),typeof o.componentDidMount=="function"&&(e.flags|=4194308)):(typeof o.componentDidMount=="function"&&(e.flags|=4194308),e.memoizedProps=i,e.memoizedState=l),o.props=i,o.state=l,o.context=c,i=a):(typeof o.componentDidMount=="function"&&(e.flags|=4194308),i=!1)}else{o=e.stateNode,Lx(n,e),a=e.memoizedProps,c=e.type===e.elementType?a:ir(e.type,a),o.props=c,C=e.pendingProps,d=o.context,l=t.contextType,typeof l=="object"&&l!==null?l=Ks(l):(l=ji(t)?cl:yi.current,l=Og(e,l));var h=t.getDerivedStateFromProps;(u=typeof h=="function"||typeof o.getSnapshotBeforeUpdate=="function")||typeof o.UNSAFE_componentWillReceiveProps!="function"&&typeof o.componentWillReceiveProps!="function"||(a!==C||d!==l)&&_B(e,o,i,l),Lo=!1,d=e.memoizedState,o.state=d,eA(e,i,o,s);var m=e.memoizedState;a!==C||d!==m||Qi.current||Lo?(typeof h=="function"&&(u0(e,t,h,i),m=e.memoizedState),(c=Lo||PB(e,t,c,i,d,m,l)||!1)?(u||typeof o.UNSAFE_componentWillUpdate!="function"&&typeof o.componentWillUpdate!="function"||(typeof o.componentWillUpdate=="function"&&o.componentWillUpdate(i,m,l),typeof o.UNSAFE_componentWillUpdate=="function"&&o.UNSAFE_componentWillUpdate(i,m,l)),typeof o.componentDidUpdate=="function"&&(e.flags|=4),typeof o.getSnapshotBeforeUpdate=="function"&&(e.flags|=1024)):(typeof o.componentDidUpdate!="function"||a===n.memoizedProps&&d===n.memoizedState||(e.flags|=4),typeof o.getSnapshotBeforeUpdate!="function"||a===n.memoizedProps&&d===n.memoizedState||(e.flags|=1024),e.memoizedProps=i,e.memoizedState=m),o.props=i,o.state=m,o.context=l,i=c):(typeof o.componentDidUpdate!="function"||a===n.memoizedProps&&d===n.memoizedState||(e.flags|=4),typeof o.getSnapshotBeforeUpdate!="function"||a===n.memoizedProps&&d===n.memoizedState||(e.flags|=1024),i=!1)}return A0(n,e,t,i,r,s)}function A0(n,e,t,i,s,r){hR(n,e);var o=(e.flags&128)!==0;if(!i&&!o)return s&&EB(e,t,!1),ho(n,e,r);i=e.stateNode,t3.current=e;var a=o&&typeof t.getDerivedStateFromError!="function"?null:i.render();return e.flags|=1,n!==null&&o?(e.child=jg(e,n.child,null,r),e.child=jg(e,null,a,r)):xi(n,e,a,r),e.memoizedState=i.state,s&&EB(e,t,!0),e.child}function AR(n){var e=n.stateNode;e.pendingContext?LB(n,e.pendingContext,e.pendingContext!==e.context):e.context&&LB(n,e.context,!1),nv(n,e.containerInfo)}function i2(n,e,t,i,s){return Qg(),Qb(s),e.flags|=256,xi(n,e,t,i),e.child}var p0={dehydrated:null,treeContext:null,retryLane:0};function m0(n){return{baseLanes:n,cachePool:null,transitions:null}}function pR(n,e,t){var i=e.pendingProps,s=hn.current,r=!1,o=(e.flags&128)!==0,a;if((a=o)||(a=n!==null&&n.memoizedState===null?!1:(s&2)!==0),a?(r=!0,e.flags&=-129):(n===null||n.memoizedState!==null)&&(s|=1),sn(hn,s&1),n===null)return c0(e),n=e.memoizedState,n!==null&&(n=n.dehydrated,n!==null)?(e.mode&1?n.data==="$!"?e.lanes=8:e.lanes=1073741824:e.lanes=1,null):(o=i.children,n=i.fallback,r?(i=e.mode,r=e.child,o={mode:"hidden",children:o},!(i&1)&&r!==null?(r.childLanes=0,r.pendingProps=o):r=RA(o,i,0,null),n=sl(n,i,t,null),r.return=e,n.return=e,r.sibling=n,e.child=r,e.child.memoizedState=m0(t),e.memoizedState=p0,n):cv(e,o));if(s=n.memoizedState,s!==null&&(a=s.dehydrated,a!==null))return n3(n,e,o,i,a,s,t);if(r){r=i.fallback,o=e.mode,s=n.child,a=s.sibling;var l={mode:"hidden",children:i.children};return!(o&1)&&e.child!==s?(i=e.child,i.childLanes=0,i.pendingProps=l,e.deletions=null):(i=ta(s,l),i.subtreeFlags=s.subtreeFlags&14680064),a!==null?r=ta(a,r):(r=sl(r,o,t,null),r.flags|=2),r.return=e,i.return=e,i.sibling=r,e.child=i,i=r,r=e.child,o=n.child.memoizedState,o=o===null?m0(t):{baseLanes:o.baseLanes|t,cachePool:null,transitions:o.transitions},r.memoizedState=o,r.childLanes=n.childLanes&~t,e.memoizedState=p0,i}return r=n.child,n=r.sibling,i=ta(r,{mode:"visible",children:i.children}),!(e.mode&1)&&(i.lanes=t),i.return=e,i.sibling=null,n!==null&&(t=e.deletions,t===null?(e.deletions=[n],e.flags|=16):t.push(n)),e.child=i,e.memoizedState=null,i}function cv(n,e){return e=RA({mode:"visible",children:e},n.mode,0,null),e.return=n,n.child=e}function cd(n,e,t,i){return i!==null&&Qb(i),jg(e,n.child,null,t),n=cv(e,e.pendingProps.children),n.flags|=2,e.memoizedState=null,n}function n3(n,e,t,i,s,r,o){if(t)return e.flags&256?(e.flags&=-257,i=Mm(Error(we(422))),cd(n,e,o,i)):e.memoizedState!==null?(e.child=n.child,e.flags|=128,null):(r=i.fallback,s=e.mode,i=RA({mode:"visible",children:i.children},s,0,null),r=sl(r,s,o,null),r.flags|=2,i.return=e,r.return=e,i.sibling=r,e.child=i,e.mode&1&&jg(e,n.child,null,o),e.child.memoizedState=m0(o),e.memoizedState=p0,r);if(!(e.mode&1))return cd(n,e,o,null);if(s.data==="$!"){if(i=s.nextSibling&&s.nextSibling.dataset,i)var a=i.dgst;return i=a,r=Error(we(419)),i=Mm(r,i,void 0),cd(n,e,o,i)}if(a=(o&n.childLanes)!==0,Ji||a){if(i=ti,i!==null){switch(o&-o){case 4:s=2;break;case 16:s=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:s=32;break;case 536870912:s=268435456;break;default:s=0}s=s&(i.suspendedLanes|o)?0:s,s!==0&&s!==r.retryLane&&(r.retryLane=s,Co(n,s),gr(i,n,s,-1))}return Av(),i=Mm(Error(we(421))),cd(n,e,o,i)}return s.data==="$?"?(e.flags|=128,e.child=n.child,e=h3.bind(null,n),s._reactRetry=e,null):(n=r.treeContext,cs=jo(s.nextSibling),us=e,In=!0,or=null,n!==null&&(Ns[Hs++]=so,Ns[Hs++]=ro,Ns[Hs++]=Il,so=n.id,ro=n.overflow,Il=e),e=cv(e,i.children),e.flags|=4096,e)}function s2(n,e,t){n.lanes|=e;var i=n.alternate;i!==null&&(i.lanes|=e),I0(n.return,e,t)}function Nm(n,e,t,i,s){var r=n.memoizedState;r===null?n.memoizedState={isBackwards:e,rendering:null,renderingStartTime:0,last:i,tail:t,tailMode:s}:(r.isBackwards=e,r.rendering=null,r.renderingStartTime=0,r.last=i,r.tail=t,r.tailMode=s)}function mR(n,e,t){var i=e.pendingProps,s=i.revealOrder,r=i.tail;if(xi(n,e,i.children,t),i=hn.current,i&2)i=i&1|2,e.flags|=128;else{if(n!==null&&n.flags&128)e:for(n=e.child;n!==null;){if(n.tag===13)n.memoizedState!==null&&s2(n,t,e);else if(n.tag===19)s2(n,t,e);else if(n.child!==null){n.child.return=n,n=n.child;continue}if(n===e)break e;for(;n.sibling===null;){if(n.return===null||n.return===e)break e;n=n.return}n.sibling.return=n.return,n=n.sibling}i&=1}if(sn(hn,i),!(e.mode&1))e.memoizedState=null;else switch(s){case"forwards":for(t=e.child,s=null;t!==null;)n=t.alternate,n!==null&&tA(n)===null&&(s=t),t=t.sibling;t=s,t===null?(s=e.child,e.child=null):(s=t.sibling,t.sibling=null),Nm(e,!1,s,t,r);break;case"backwards":for(t=null,s=e.child,e.child=null;s!==null;){if(n=s.alternate,n!==null&&tA(n)===null){e.child=s;break}n=s.sibling,s.sibling=t,t=s,s=n}Nm(e,!0,t,null,r);break;case"together":Nm(e,!1,null,null,void 0);break;default:e.memoizedState=null}return e.child}function Bh(n,e){!(e.mode&1)&&n!==null&&(n.alternate=null,e.alternate=null,e.flags|=2)}function ho(n,e,t){if(n!==null&&(e.dependencies=n.dependencies),Cl|=e.lanes,!(t&e.childLanes))return null;if(n!==null&&e.child!==n.child)throw Error(we(153));if(e.child!==null){for(n=e.child,t=ta(n,n.pendingProps),e.child=t,t.return=e;n.sibling!==null;)n=n.sibling,t=t.sibling=ta(n,n.pendingProps),t.return=e;t.sibling=null}return e.child}function i3(n,e,t){switch(e.tag){case 3:AR(e),Qg();break;case 5:Ux(e);break;case 1:ji(e.type)&&Oh(e);break;case 4:nv(e,e.stateNode.containerInfo);break;case 10:var i=e.type._context,s=e.memoizedProps.value;sn(qh,i._currentValue),i._currentValue=s;break;case 13:if(i=e.memoizedState,i!==null)return i.dehydrated!==null?(sn(hn,hn.current&1),e.flags|=128,null):t&e.child.childLanes?pR(n,e,t):(sn(hn,hn.current&1),n=ho(n,e,t),n!==null?n.sibling:null);sn(hn,hn.current&1);break;case 19:if(i=(t&e.childLanes)!==0,n.flags&128){if(i)return mR(n,e,t);e.flags|=128}if(s=e.memoizedState,s!==null&&(s.rendering=null,s.tail=null,s.lastEffect=null),sn(hn,hn.current),i)break;return null;case 22:case 23:return e.lanes=0,dR(n,e,t)}return ho(n,e,t)}var fR,f0,bR,vR;fR=function(n,e){for(var t=e.child;t!==null;){if(t.tag===5||t.tag===6)n.appendChild(t.stateNode);else if(t.tag!==4&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return;t=t.return}t.sibling.return=t.return,t=t.sibling}};f0=function(){};bR=function(n,e,t,i){var s=n.memoizedProps;if(s!==i){n=e.stateNode,ja(Vr.current);var r=null;switch(t){case"input":s=Ef(n,s),i=Ef(n,i),r=[];break;case"select":s=fn({},s,{value:void 0}),i=fn({},i,{value:void 0}),r=[];break;case"textarea":s=Df(n,s),i=Df(n,i),r=[];break;default:typeof s.onClick!="function"&&typeof i.onClick=="function"&&(n.onclick=_h)}Pf(t,i);var o;t=null;for(c in s)if(!i.hasOwnProperty(c)&&s.hasOwnProperty(c)&&s[c]!=null)if(c==="style"){var a=s[c];for(o in a)a.hasOwnProperty(o)&&(t||(t={}),t[o]="")}else c!=="dangerouslySetInnerHTML"&&c!=="children"&&c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&c!=="autoFocus"&&(DI.hasOwnProperty(c)?r||(r=[]):(r=r||[]).push(c,null));for(c in i){var l=i[c];if(a=s?.[c],i.hasOwnProperty(c)&&l!==a&&(l!=null||a!=null))if(c==="style")if(a){for(o in a)!a.hasOwnProperty(o)||l&&l.hasOwnProperty(o)||(t||(t={}),t[o]="");for(o in l)l.hasOwnProperty(o)&&a[o]!==l[o]&&(t||(t={}),t[o]=l[o])}else t||(r||(r=[]),r.push(c,t)),t=l;else c==="dangerouslySetInnerHTML"?(l=l?l.__html:void 0,a=a?a.__html:void 0,l!=null&&a!==l&&(r=r||[]).push(c,l)):c==="children"?typeof l!="string"&&typeof l!="number"||(r=r||[]).push(c,""+l):c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&(DI.hasOwnProperty(c)?(l!=null&&c==="onScroll"&&on("scroll",n),r||a===l||(r=[])):(r=r||[]).push(c,l))}t&&(r=r||[]).push("style",t);var c=r;(e.updateQueue=c)&&(e.flags|=4)}};vR=function(n,e,t,i){t!==i&&(e.flags|=4)};function _c(n,e){if(!In)switch(n.tailMode){case"hidden":e=n.tail;for(var t=null;e!==null;)e.alternate!==null&&(t=e),e=e.sibling;t===null?n.tail=null:t.sibling=null;break;case"collapsed":t=n.tail;for(var i=null;t!==null;)t.alternate!==null&&(i=t),t=t.sibling;i===null?e||n.tail===null?n.tail=null:n.tail.sibling=null:i.sibling=null}}function Ai(n){var e=n.alternate!==null&&n.alternate.child===n.child,t=0,i=0;if(e)for(var s=n.child;s!==null;)t|=s.lanes|s.childLanes,i|=s.subtreeFlags&14680064,i|=s.flags&14680064,s.return=n,s=s.sibling;else for(s=n.child;s!==null;)t|=s.lanes|s.childLanes,i|=s.subtreeFlags,i|=s.flags,s.return=n,s=s.sibling;return n.subtreeFlags|=i,n.childLanes=t,e}function s3(n,e,t){var i=e.pendingProps;switch(Ob(e),e.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Ai(e),null;case 1:return ji(e.type)&&Jh(),Ai(e),null;case 3:return i=e.stateNode,qg(),ln(Qi),ln(yi),sv(),i.pendingContext&&(i.context=i.pendingContext,i.pendingContext=null),(n===null||n.child===null)&&(ld(e)?e.flags|=4:n===null||n.memoizedState.isDehydrated&&!(e.flags&256)||(e.flags|=1024,or!==null&&(S0(or),or=null))),f0(n,e),Ai(e),null;case 5:iv(e);var s=ja(nu.current);if(t=e.type,n!==null&&e.stateNode!=null)bR(n,e,t,i,s),n.ref!==e.ref&&(e.flags|=512,e.flags|=2097152);else{if(!i){if(e.stateNode===null)throw Error(we(166));return Ai(e),null}if(n=ja(Vr.current),ld(e)){i=e.stateNode,t=e.type;var r=e.memoizedProps;switch(i[Rr]=e,i[eu]=r,n=(e.mode&1)!==0,t){case"dialog":on("cancel",i),on("close",i);break;case"iframe":case"object":case"embed":on("load",i);break;case"video":case"audio":for(s=0;s<\/script>",n=n.removeChild(n.firstChild)):typeof i.is=="string"?n=o.createElement(t,{is:i.is}):(n=o.createElement(t),t==="select"&&(o=n,i.multiple?o.multiple=!0:i.size&&(o.size=i.size))):n=o.createElementNS(n,t),n[Rr]=e,n[eu]=i,fR(n,e,!1,!1),e.stateNode=n;e:{switch(o=_f(t,i),t){case"dialog":on("cancel",n),on("close",n),s=i;break;case"iframe":case"object":case"embed":on("load",n),s=i;break;case"video":case"audio":for(s=0;sec&&(e.flags|=128,i=!0,_c(r,!1),e.lanes=4194304)}else{if(!i)if(n=tA(o),n!==null){if(e.flags|=128,i=!0,t=n.updateQueue,t!==null&&(e.updateQueue=t,e.flags|=4),_c(r,!0),r.tail===null&&r.tailMode==="hidden"&&!o.alternate&&!In)return Ai(e),null}else 2*Sn()-r.renderingStartTime>ec&&t!==1073741824&&(e.flags|=128,i=!0,_c(r,!1),e.lanes=4194304);r.isBackwards?(o.sibling=e.child,e.child=o):(t=r.last,t!==null?t.sibling=o:e.child=o,r.last=o)}return r.tail!==null?(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Sn(),e.sibling=null,t=hn.current,sn(hn,i?t&1|2:t&1),e):(Ai(e),null);case 22:case 23:return hv(),i=e.memoizedState!==null,n!==null&&n.memoizedState!==null!==i&&(e.flags|=8192),i&&e.mode&1?ls&1073741824&&(Ai(e),e.subtreeFlags&6&&(e.flags|=8192)):Ai(e),null;case 24:return null;case 25:return null}throw Error(we(156,e.tag))}function r3(n,e){switch(Ob(e),e.tag){case 1:return ji(e.type)&&Jh(),n=e.flags,n&65536?(e.flags=n&-65537|128,e):null;case 3:return qg(),ln(Qi),ln(yi),sv(),n=e.flags,n&65536&&!(n&128)?(e.flags=n&-65537|128,e):null;case 5:return iv(e),null;case 13:if(ln(hn),n=e.memoizedState,n!==null&&n.dehydrated!==null){if(e.alternate===null)throw Error(we(340));Qg()}return n=e.flags,n&65536?(e.flags=n&-65537|128,e):null;case 19:return ln(hn),null;case 4:return qg(),null;case 10:return $b(e.type._context),null;case 22:case 23:return hv(),null;case 24:return null;default:return null}}var Id=!1,vi=!1,o3=typeof WeakSet=="function"?WeakSet:Set,ze=null;function xg(n,e){var t=n.ref;if(t!==null)if(typeof t=="function")try{t(null)}catch(i){yn(n,e,i)}else t.current=null}function b0(n,e,t){try{t()}catch(i){yn(n,e,i)}}var r2=!1;function a3(n,e){if(i0=Dh,n=Zx(),_b(n)){if("selectionStart"in n)var t={start:n.selectionStart,end:n.selectionEnd};else e:{t=(t=n.ownerDocument)&&t.defaultView||window;var i=t.getSelection&&t.getSelection();if(i&&i.rangeCount!==0){t=i.anchorNode;var s=i.anchorOffset,r=i.focusNode;i=i.focusOffset;try{t.nodeType,r.nodeType}catch{t=null;break e}var o=0,a=-1,l=-1,c=0,u=0,C=n,d=null;t:for(;;){for(var h;C!==t||s!==0&&C.nodeType!==3||(a=o+s),C!==r||i!==0&&C.nodeType!==3||(l=o+i),C.nodeType===3&&(o+=C.nodeValue.length),(h=C.firstChild)!==null;)d=C,C=h;for(;;){if(C===n)break t;if(d===t&&++c===s&&(a=o),d===r&&++u===i&&(l=o),(h=C.nextSibling)!==null)break;C=d,d=C.parentNode}C=h}t=a===-1||l===-1?null:{start:a,end:l}}else t=null}t=t||{start:0,end:0}}else t=null;for(s0={focusedElem:n,selectionRange:t},Dh=!1,ze=e;ze!==null;)if(e=ze,n=e.child,(e.subtreeFlags&1028)!==0&&n!==null)n.return=e,ze=n;else for(;ze!==null;){e=ze;try{var m=e.alternate;if(e.flags&1024)switch(e.tag){case 0:case 11:case 15:break;case 1:if(m!==null){var v=m.memoizedProps,y=m.memoizedState,A=e.stateNode,b=A.getSnapshotBeforeUpdate(e.elementType===e.type?v:ir(e.type,v),y);A.__reactInternalSnapshotBeforeUpdate=b}break;case 3:var f=e.stateNode.containerInfo;f.nodeType===1?f.textContent="":f.nodeType===9&&f.documentElement&&f.removeChild(f.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(we(163))}}catch(B){yn(e,e.return,B)}if(n=e.sibling,n!==null){n.return=e.return,ze=n;break}ze=e.return}return m=r2,r2=!1,m}function VI(n,e,t){var i=e.updateQueue;if(i=i!==null?i.lastEffect:null,i!==null){var s=i=i.next;do{if((s.tag&n)===n){var r=s.destroy;s.destroy=void 0,r!==void 0&&b0(e,t,r)}s=s.next}while(s!==i)}}function SA(n,e){if(e=e.updateQueue,e=e!==null?e.lastEffect:null,e!==null){var t=e=e.next;do{if((t.tag&n)===n){var i=t.create;t.destroy=i()}t=t.next}while(t!==e)}}function v0(n){var e=n.ref;if(e!==null){var t=n.stateNode;switch(n.tag){case 5:n=t;break;default:n=t}typeof e=="function"?e(n):e.current=n}}function yR(n){var e=n.alternate;e!==null&&(n.alternate=null,yR(e)),n.child=null,n.deletions=null,n.sibling=null,n.tag===5&&(e=n.stateNode,e!==null&&(delete e[Rr],delete e[eu],delete e[a0],delete e[kN],delete e[DN])),n.stateNode=null,n.return=null,n.dependencies=null,n.memoizedProps=null,n.memoizedState=null,n.pendingProps=null,n.stateNode=null,n.updateQueue=null}function GR(n){return n.tag===5||n.tag===3||n.tag===4}function o2(n){e:for(;;){for(;n.sibling===null;){if(n.return===null||GR(n.return))return null;n=n.return}for(n.sibling.return=n.return,n=n.sibling;n.tag!==5&&n.tag!==6&&n.tag!==18;){if(n.flags&2||n.child===null||n.tag===4)continue e;n.child.return=n,n=n.child}if(!(n.flags&2))return n.stateNode}}function y0(n,e,t){var i=n.tag;if(i===5||i===6)n=n.stateNode,e?t.nodeType===8?t.parentNode.insertBefore(n,e):t.insertBefore(n,e):(t.nodeType===8?(e=t.parentNode,e.insertBefore(n,t)):(e=t,e.appendChild(n)),t=t._reactRootContainer,t!=null||e.onclick!==null||(e.onclick=_h));else if(i!==4&&(n=n.child,n!==null))for(y0(n,e,t),n=n.sibling;n!==null;)y0(n,e,t),n=n.sibling}function G0(n,e,t){var i=n.tag;if(i===5||i===6)n=n.stateNode,e?t.insertBefore(n,e):t.appendChild(n);else if(i!==4&&(n=n.child,n!==null))for(G0(n,e,t),n=n.sibling;n!==null;)G0(n,e,t),n=n.sibling}var oi=null,rr=!1;function Vo(n,e,t){for(t=t.child;t!==null;)BR(n,e,t),t=t.sibling}function BR(n,e,t){if(Wr&&typeof Wr.onCommitFiberUnmount=="function")try{Wr.onCommitFiberUnmount(fA,t)}catch{}switch(t.tag){case 5:vi||xg(t,e);case 6:var i=oi,s=rr;oi=null,Vo(n,e,t),oi=i,rr=s,oi!==null&&(rr?(n=oi,t=t.stateNode,n.nodeType===8?n.parentNode.removeChild(t):n.removeChild(t)):oi.removeChild(t.stateNode));break;case 18:oi!==null&&(rr?(n=oi,t=t.stateNode,n.nodeType===8?wm(n.parentNode,t):n.nodeType===1&&wm(n,t),OI(n)):wm(oi,t.stateNode));break;case 4:i=oi,s=rr,oi=t.stateNode.containerInfo,rr=!0,Vo(n,e,t),oi=i,rr=s;break;case 0:case 11:case 14:case 15:if(!vi&&(i=t.updateQueue,i!==null&&(i=i.lastEffect,i!==null))){s=i=i.next;do{var r=s,o=r.destroy;r=r.tag,o!==void 0&&(r&2||r&4)&&b0(t,e,o),s=s.next}while(s!==i)}Vo(n,e,t);break;case 1:if(!vi&&(xg(t,e),i=t.stateNode,typeof i.componentWillUnmount=="function"))try{i.props=t.memoizedProps,i.state=t.memoizedState,i.componentWillUnmount()}catch(a){yn(t,e,a)}Vo(n,e,t);break;case 21:Vo(n,e,t);break;case 22:t.mode&1?(vi=(i=vi)||t.memoizedState!==null,Vo(n,e,t),vi=i):Vo(n,e,t);break;default:Vo(n,e,t)}}function a2(n){var e=n.updateQueue;if(e!==null){n.updateQueue=null;var t=n.stateNode;t===null&&(t=n.stateNode=new o3),e.forEach(function(i){var s=A3.bind(null,n,i);t.has(i)||(t.add(i),i.then(s,s))})}}function Qs(n,e){var t=e.deletions;if(t!==null)for(var i=0;is&&(s=o),i&=~r}if(i=s,i=Sn()-i,i=(120>i?120:480>i?480:1080>i?1080:1920>i?1920:3e3>i?3e3:4320>i?4320:1960*g3(i/1960))-i,10n?16:n,Uo===null)var i=!1;else{if(n=Uo,Uo=null,oA=0,Ft&6)throw Error(we(331));var s=Ft;for(Ft|=4,ze=n.current;ze!==null;){var r=ze,o=r.child;if(ze.flags&16){var a=r.deletions;if(a!==null){for(var l=0;lSn()-Cv?il(n,0):uv|=t),qi(n,e)}function MR(n,e){e===0&&(n.mode&1?(e=nd,nd<<=1,!(nd&130023424)&&(nd=4194304)):e=1);var t=Vi();n=Co(n,e),n!==null&&(Wu(n,e,t),qi(n,t))}function h3(n){var e=n.memoizedState,t=0;e!==null&&(t=e.retryLane),MR(n,t)}function A3(n,e){var t=0;switch(n.tag){case 13:var i=n.stateNode,s=n.memoizedState;s!==null&&(t=s.retryLane);break;case 19:i=n.stateNode;break;default:throw Error(we(314))}i!==null&&i.delete(e),MR(n,t)}var NR;NR=function(n,e,t){if(n!==null)if(n.memoizedProps!==e.pendingProps||Qi.current)Ji=!0;else{if(!(n.lanes&t)&&!(e.flags&128))return Ji=!1,i3(n,e,t);Ji=!!(n.flags&131072)}else Ji=!1,In&&e.flags&1048576&&Yx(e,jh,e.index);switch(e.lanes=0,e.tag){case 2:var i=e.type;Bh(n,e),n=e.pendingProps;var s=Og(e,yi.current);Eg(e,t),s=ov(null,e,i,n,s,t);var r=av();return e.flags|=1,typeof s=="object"&&s!==null&&typeof s.render=="function"&&s.$$typeof===void 0?(e.tag=1,e.memoizedState=null,e.updateQueue=null,ji(i)?(r=!0,Oh(e)):r=!1,e.memoizedState=s.state!==null&&s.state!==void 0?s.state:null,tv(e),s.updater=ZA,e.stateNode=s,s._reactInternals=e,C0(e,i,n,t),e=A0(null,e,i,!0,r,t)):(e.tag=0,In&&r&&Jb(e),xi(null,e,s,t),e=e.child),e;case 16:i=e.elementType;e:{switch(Bh(n,e),n=e.pendingProps,s=i._init,i=s(i._payload),e.type=i,s=e.tag=m3(i),n=ir(i,n),s){case 0:e=h0(null,e,i,n,t);break e;case 1:e=n2(null,e,i,n,t);break e;case 11:e=e2(null,e,i,n,t);break e;case 14:e=t2(null,e,i,ir(i.type,n),t);break e}throw Error(we(306,i,""))}return e;case 0:return i=e.type,s=e.pendingProps,s=e.elementType===i?s:ir(i,s),h0(n,e,i,s,t);case 1:return i=e.type,s=e.pendingProps,s=e.elementType===i?s:ir(i,s),n2(n,e,i,s,t);case 3:e:{if(AR(e),n===null)throw Error(we(387));i=e.pendingProps,r=e.memoizedState,s=r.element,Lx(n,e),eA(e,i,null,t);var o=e.memoizedState;if(i=o.element,r.isDehydrated)if(r={element:i,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},e.updateQueue.baseState=r,e.memoizedState=r,e.flags&256){s=$g(Error(we(423)),e),e=i2(n,e,i,t,s);break e}else if(i!==s){s=$g(Error(we(424)),e),e=i2(n,e,i,t,s);break e}else for(cs=jo(e.stateNode.containerInfo.firstChild),us=e,In=!0,or=null,t=Dx(e,null,i,t),e.child=t;t;)t.flags=t.flags&-3|4096,t=t.sibling;else{if(Qg(),i===s){e=ho(n,e,t);break e}xi(n,e,i,t)}e=e.child}return e;case 5:return Ux(e),n===null&&c0(e),i=e.type,s=e.pendingProps,r=n!==null?n.memoizedProps:null,o=s.children,r0(i,s)?o=null:r!==null&&r0(i,r)&&(e.flags|=32),hR(n,e),xi(n,e,o,t),e.child;case 6:return n===null&&c0(e),null;case 13:return pR(n,e,t);case 4:return nv(e,e.stateNode.containerInfo),i=e.pendingProps,n===null?e.child=jg(e,null,i,t):xi(n,e,i,t),e.child;case 11:return i=e.type,s=e.pendingProps,s=e.elementType===i?s:ir(i,s),e2(n,e,i,s,t);case 7:return xi(n,e,e.pendingProps,t),e.child;case 8:return xi(n,e,e.pendingProps.children,t),e.child;case 12:return xi(n,e,e.pendingProps.children,t),e.child;case 10:e:{if(i=e.type._context,s=e.pendingProps,r=e.memoizedProps,o=s.value,sn(qh,i._currentValue),i._currentValue=o,r!==null)if(Ir(r.value,o)){if(r.children===s.children&&!Qi.current){e=ho(n,e,t);break e}}else for(r=e.child,r!==null&&(r.return=e);r!==null;){var a=r.dependencies;if(a!==null){o=r.child;for(var l=a.firstContext;l!==null;){if(l.context===i){if(r.tag===1){l=go(-1,t&-t),l.tag=2;var c=r.updateQueue;if(c!==null){c=c.shared;var u=c.pending;u===null?l.next=l:(l.next=u.next,u.next=l),c.pending=l}}r.lanes|=t,l=r.alternate,l!==null&&(l.lanes|=t),I0(r.return,t,e),a.lanes|=t;break}l=l.next}}else if(r.tag===10)o=r.type===e.type?null:r.child;else if(r.tag===18){if(o=r.return,o===null)throw Error(we(341));o.lanes|=t,a=o.alternate,a!==null&&(a.lanes|=t),I0(o,t,e),o=r.sibling}else o=r.child;if(o!==null)o.return=r;else for(o=r;o!==null;){if(o===e){o=null;break}if(r=o.sibling,r!==null){r.return=o.return,o=r;break}o=o.return}r=o}xi(n,e,s.children,t),e=e.child}return e;case 9:return s=e.type,i=e.pendingProps.children,Eg(e,t),s=Ks(s),i=i(s),e.flags|=1,xi(n,e,i,t),e.child;case 14:return i=e.type,s=ir(i,e.pendingProps),s=ir(i.type,s),t2(n,e,i,s,t);case 15:return CR(n,e,e.type,e.pendingProps,t);case 17:return i=e.type,s=e.pendingProps,s=e.elementType===i?s:ir(i,s),Bh(n,e),e.tag=1,ji(i)?(n=!0,Oh(e)):n=!1,Eg(e,t),Tx(e,i,s),C0(e,i,s,t),A0(null,e,i,!0,n,t);case 19:return mR(n,e,t);case 22:return dR(n,e,t)}throw Error(we(156,e.tag))};function HR(n,e){return ox(n,e)}function p3(n,e,t,i){this.tag=n,this.key=t,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=e,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Xs(n,e,t,i){return new p3(n,e,t,i)}function pv(n){return n=n.prototype,!(!n||!n.isReactComponent)}function m3(n){if(typeof n=="function")return pv(n)?1:0;if(n!=null){if(n=n.$$typeof,n===Yb)return 11;if(n===Fb)return 14}return 2}function ta(n,e){var t=n.alternate;return t===null?(t=Xs(n.tag,e,n.key,n.mode),t.elementType=n.elementType,t.type=n.type,t.stateNode=n.stateNode,t.alternate=n,n.alternate=t):(t.pendingProps=e,t.type=n.type,t.flags=0,t.subtreeFlags=0,t.deletions=null),t.flags=n.flags&14680064,t.childLanes=n.childLanes,t.lanes=n.lanes,t.child=n.child,t.memoizedProps=n.memoizedProps,t.memoizedState=n.memoizedState,t.updateQueue=n.updateQueue,e=n.dependencies,t.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext},t.sibling=n.sibling,t.index=n.index,t.ref=n.ref,t}function Sh(n,e,t,i,s,r){var o=2;if(i=n,typeof n=="function")pv(n)&&(o=1);else if(typeof n=="string")o=5;else e:switch(n){case fg:return sl(t.children,s,r,e);case Xb:o=8,s|=8;break;case Ff:return n=Xs(12,t,e,s|2),n.elementType=Ff,n.lanes=r,n;case Kf:return n=Xs(13,t,e,s),n.elementType=Kf,n.lanes=r,n;case zf:return n=Xs(19,t,e,s),n.elementType=zf,n.lanes=r,n;case kS:return RA(t,s,r,e);default:if(typeof n=="object"&&n!==null)switch(n.$$typeof){case ES:o=10;break e;case TS:o=9;break e;case Yb:o=11;break e;case Fb:o=14;break e;case zo:o=16,i=null;break e}throw Error(we(130,n==null?n:typeof n,""))}return e=Xs(o,t,e,s),e.elementType=n,e.type=i,e.lanes=r,e}function sl(n,e,t,i){return n=Xs(7,n,i,e),n.lanes=t,n}function RA(n,e,t,i){return n=Xs(22,n,i,e),n.elementType=kS,n.lanes=t,n.stateNode={isHidden:!1},n}function Hm(n,e,t){return n=Xs(6,n,null,e),n.lanes=t,n}function Xm(n,e,t){return e=Xs(4,n.children!==null?n.children:[],n.key,e),e.lanes=t,e.stateNode={containerInfo:n.containerInfo,pendingChildren:null,implementation:n.implementation},e}function f3(n,e,t,i,s){this.tag=e,this.containerInfo=n,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=hm(0),this.expirationTimes=hm(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=hm(0),this.identifierPrefix=i,this.onRecoverableError=s,this.mutableSourceEagerHydrationData=null}function mv(n,e,t,i,s,r,o,a,l){return n=new f3(n,e,t,a,l),e===1?(e=1,r===!0&&(e|=8)):e=0,r=Xs(3,null,null,e),n.current=r,r.stateNode=n,r.memoizedState={element:i,isDehydrated:t,cache:null,transitions:null,pendingSuspenseBoundaries:null},tv(r),n}function b3(n,e,t){var i=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(KR)}catch(n){console.error(n)}}KR(),YS.exports=ps;var Z3=YS.exports,h2=Z3;Xf.createRoot=h2.createRoot,Xf.hydrateRoot=h2.hydrateRoot;const w3=({className:n})=>E.jsxs("svg",{className:n,width:"100%",height:"100%",viewBox:"0 0 180 180",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[E.jsx("path",{className:"fill-icontext dark:fill-icontext-dark",d:"M76.875 5.3125L65.25 51H54.2188L48.0312 27C47.9062 26.5417 47.7396 25.8438 47.5312 24.9062C47.3229 23.9688 47.1042 22.9479 46.875 21.8438C46.6458 20.7188 46.4375 19.6667 46.25 18.6875C46.0833 17.6875 45.9688 16.8958 45.9062 16.3125C45.8438 16.8958 45.7188 17.6771 45.5312 18.6562C45.3646 19.6354 45.1667 20.6771 44.9375 21.7812C44.7292 22.8854 44.5208 23.9167 44.3125 24.875C44.1042 25.8333 43.9375 26.5625 43.8125 27.0625L37.6562 51H26.6562L15 5.3125H24.5312L30.375 30.25C30.5417 31 30.7292 31.8958 30.9375 32.9375C31.1667 33.9792 31.3854 35.0729 31.5938 36.2188C31.8229 37.3438 32.0208 38.4375 32.1875 39.5C32.375 40.5417 32.5104 41.4479 32.5938 42.2188C32.6979 41.4271 32.8333 40.5104 33 39.4688C33.1667 38.4062 33.3438 37.3333 33.5312 36.25C33.7396 35.1458 33.9479 34.125 34.1562 33.1875C34.3646 32.25 34.5521 31.4896 34.7188 30.9062L41.375 5.3125H50.5312L57.1875 30.9062C57.3333 31.4688 57.5 32.2292 57.6875 33.1875C57.8958 34.125 58.1042 35.1458 58.3125 36.25C58.5208 37.3542 58.7083 38.4375 58.875 39.5C59.0625 40.5417 59.1979 41.4479 59.2812 42.2188C59.4271 41.1771 59.625 39.9167 59.875 38.4375C60.1458 36.9375 60.4271 35.4479 60.7188 33.9688C61.0312 32.4896 61.3021 31.25 61.5312 30.25L67.3438 5.3125H76.875ZM107.225 33.4688C107.225 36.3854 106.829 38.9688 106.037 41.2188C105.267 43.4688 104.131 45.375 102.631 46.9375C101.152 48.4792 99.3604 49.6458 97.2562 50.4375C95.1729 51.2292 92.8187 51.625 90.1937 51.625C87.7354 51.625 85.475 51.2292 83.4125 50.4375C81.3708 49.6458 79.5896 48.4792 78.0687 46.9375C76.5687 45.375 75.4021 43.4688 74.5687 41.2188C73.7562 38.9688 73.35 36.3854 73.35 33.4688C73.35 29.5938 74.0375 26.3125 75.4125 23.625C76.7875 20.9375 78.7458 18.8958 81.2875 17.5C83.8292 16.1042 86.8604 15.4062 90.3812 15.4062C93.6521 15.4062 96.5479 16.1042 99.0687 17.5C101.61 18.8958 103.6 20.9375 105.037 23.625C106.496 26.3125 107.225 29.5938 107.225 33.4688ZM83.0687 33.4688C83.0687 35.7604 83.3187 37.6875 83.8187 39.25C84.3187 40.8125 85.1 41.9896 86.1625 42.7812C87.225 43.5729 88.6104 43.9688 90.3187 43.9688C92.0062 43.9688 93.3708 43.5729 94.4125 42.7812C95.475 41.9896 96.2458 40.8125 96.725 39.25C97.225 37.6875 97.475 35.7604 97.475 33.4688C97.475 31.1562 97.225 29.2396 96.725 27.7188C96.2458 26.1771 95.475 25.0208 94.4125 24.25C93.35 23.4792 91.9646 23.0938 90.2562 23.0938C87.7354 23.0938 85.9021 23.9583 84.7562 25.6875C83.6312 27.4167 83.0687 30.0104 83.0687 33.4688ZM122.003 51.625C118.107 51.625 114.93 50.1042 112.471 47.0625C110.034 44 108.815 39.5104 108.815 33.5938C108.815 27.6146 110.055 23.0938 112.534 20.0312C115.013 16.9479 118.253 15.4062 122.253 15.4062C123.919 15.4062 125.388 15.6354 126.659 16.0938C127.93 16.5521 129.023 17.1667 129.94 17.9375C130.878 18.7083 131.669 19.5729 132.315 20.5312H132.628C132.503 19.8646 132.346 18.8854 132.159 17.5938C131.992 16.2812 131.909 14.9375 131.909 13.5625V2.375H141.471V51H134.159L132.315 46.4688H131.909C131.305 47.4271 130.544 48.3021 129.628 49.0938C128.732 49.8646 127.659 50.4792 126.409 50.9375C125.159 51.3958 123.69 51.625 122.003 51.625ZM125.346 44.0312C127.95 44.0312 129.784 43.2604 130.846 41.7188C131.93 40.1562 132.503 37.8125 132.565 34.6875V33.6562C132.565 30.2604 132.044 27.6667 131.003 25.875C129.961 24.0625 128.023 23.1562 125.19 23.1562C123.086 23.1562 121.44 24.0625 120.253 25.875C119.065 27.6875 118.471 30.3021 118.471 33.7188C118.471 37.1354 119.065 39.7083 120.253 41.4375C121.461 43.1667 123.159 44.0312 125.346 44.0312ZM159.446 15.4062C162.675 15.4062 165.457 16.0312 167.79 17.2812C170.123 18.5104 171.925 20.3021 173.196 22.6562C174.467 25.0104 175.103 27.8854 175.103 31.2812V35.9062H152.571C152.675 38.5938 153.478 40.7083 154.978 42.25C156.498 43.7708 158.603 44.5312 161.29 44.5312C163.519 44.5312 165.561 44.3021 167.415 43.8438C169.269 43.3854 171.175 42.6979 173.134 41.7812V49.1562C171.405 50.0104 169.592 50.6354 167.696 51.0312C165.821 51.4271 163.54 51.625 160.853 51.625C157.353 51.625 154.248 50.9792 151.54 49.6875C148.853 48.3958 146.738 46.4271 145.196 43.7812C143.675 41.1354 142.915 37.8021 142.915 33.7812C142.915 29.6979 143.603 26.3021 144.978 23.5938C146.373 20.8646 148.311 18.8229 150.79 17.4688C153.269 16.0938 156.155 15.4062 159.446 15.4062ZM159.509 22.1875C157.655 22.1875 156.113 22.7812 154.884 23.9688C153.675 25.1562 152.978 27.0208 152.79 29.5625H166.165C166.144 28.1458 165.884 26.8854 165.384 25.7812C164.905 24.6771 164.175 23.8021 163.196 23.1562C162.238 22.5104 161.009 22.1875 159.509 22.1875ZM61.2812 155H48.9688L29.0938 120.438H28.8125C28.8958 121.875 28.9688 123.323 29.0312 124.781C29.0938 126.24 29.1562 127.698 29.2188 129.156C29.2812 130.594 29.3438 132.042 29.4062 133.5V155H20.75V109.312H32.9688L52.8125 143.531H53.0312C52.9896 142.115 52.9375 140.708 52.875 139.312C52.8125 137.917 52.75 136.521 52.6875 135.125C52.6458 133.729 52.6042 132.333 52.5625 130.938V109.312H61.2812V155ZM75.1937 120.062V155H65.6625V120.062H75.1937ZM70.4437 106.375C71.8604 106.375 73.0792 106.708 74.1 107.375C75.1208 108.021 75.6312 109.24 75.6312 111.031C75.6312 112.802 75.1208 114.031 74.1 114.719C73.0792 115.385 71.8604 115.719 70.4437 115.719C69.0062 115.719 67.7771 115.385 66.7562 114.719C65.7562 114.031 65.2562 112.802 65.2562 111.031C65.2562 109.24 65.7562 108.021 66.7562 107.375C67.7771 106.708 69.0062 106.375 70.4437 106.375Z"}),E.jsx("path",{className:"fill-primary",d:"M18.3382 54.625C18.1007 55.7875 17.857 57.0187 17.607 58.3187C17.3695 59.6187 17.1507 60.8937 16.9507 62.1437C16.7632 63.3937 16.6132 64.5312 16.5007 65.5562H10.0882L9.807 65.1437C10.0445 64.2187 10.3382 63.1187 10.6882 61.8437C11.0507 60.5562 11.4382 59.2687 11.8507 57.9812C12.2757 56.6812 12.7007 55.5625 13.1257 54.625H18.3382ZM8.77575 54.625C8.53825 55.7875 8.2945 57.0187 8.0445 58.3187C7.807 59.6187 7.58825 60.8937 7.38825 62.1437C7.20075 63.3937 7.05075 64.5312 6.93825 65.5562H0.525749L0.244499 65.1437C0.481999 64.2187 0.775749 63.1187 1.12575 61.8437C1.48825 60.5562 1.87575 59.2687 2.28825 57.9812C2.71325 56.6812 3.13825 55.5625 3.56325 54.625H8.77575ZM61.2812 103H48.9688L29.0938 68.4375H28.8125C28.8958 69.875 28.9688 71.3229 29.0312 72.7812C29.0938 74.2396 29.1562 75.6979 29.2188 77.1562C29.2812 78.5938 29.3438 80.0417 29.4062 81.5V103H20.75V57.3125H32.9688L52.8125 91.5312H53.0312C52.9896 90.1146 52.9375 88.7083 52.875 87.3125C52.8125 85.9167 52.75 84.5208 52.6875 83.125C52.6458 81.7292 52.6042 80.3333 52.5625 78.9375V57.3125H61.2812V103ZM75.1937 68.0625V103H65.6625V68.0625H75.1937ZM70.4437 54.375C71.8604 54.375 73.0792 54.7083 74.1 55.375C75.1208 56.0208 75.6312 57.2396 75.6312 59.0312C75.6312 60.8021 75.1208 62.0312 74.1 62.7188C73.0792 63.3854 71.8604 63.7188 70.4437 63.7188C69.0062 63.7188 67.7771 63.3854 66.7562 62.7188C65.7562 62.0312 65.2562 60.8021 65.2562 59.0312C65.2562 57.2396 65.7562 56.0208 66.7562 55.375C67.7771 54.7083 69.0062 54.375 70.4437 54.375ZM119.856 67.4062C123.815 67.4062 126.804 68.4271 128.825 70.4688C130.867 72.4896 131.888 75.7396 131.888 80.2188V103H122.325V82.5938C122.325 80.0938 121.898 78.2083 121.044 76.9375C120.19 75.6667 118.867 75.0312 117.075 75.0312C114.554 75.0312 112.763 75.9375 111.7 77.75C110.638 79.5417 110.106 82.1146 110.106 85.4688V103H100.575V82.5938C100.575 80.9271 100.388 79.5312 100.013 78.4062C99.6375 77.2812 99.0646 76.4375 98.2938 75.875C97.5229 75.3125 96.5333 75.0312 95.325 75.0312C93.5542 75.0312 92.1583 75.4792 91.1375 76.375C90.1375 77.25 89.4188 78.5521 88.9813 80.2812C88.5646 81.9896 88.3563 84.0833 88.3563 86.5625V103H78.825V68.0625H86.1063L87.3875 72.5312H87.9188C88.6271 71.3229 89.5125 70.3438 90.575 69.5938C91.6583 68.8438 92.8458 68.2917 94.1375 67.9375C95.4292 67.5833 96.7417 67.4062 98.075 67.4062C100.638 67.4062 102.804 67.8229 104.575 68.6562C106.367 69.4896 107.742 70.7812 108.7 72.5312H109.544C110.585 70.7396 112.054 69.4375 113.95 68.625C115.867 67.8125 117.835 67.4062 119.856 67.4062ZM167.05 85.4688C167.05 88.3854 166.654 90.9688 165.863 93.2188C165.092 95.4688 163.956 97.375 162.456 98.9375C160.977 100.479 159.185 101.646 157.081 102.438C154.998 103.229 152.644 103.625 150.019 103.625C147.56 103.625 145.3 103.229 143.238 102.438C141.196 101.646 139.415 100.479 137.894 98.9375C136.394 97.375 135.227 95.4688 134.394 93.2188C133.581 90.9688 133.175 88.3854 133.175 85.4688C133.175 81.5938 133.863 78.3125 135.238 75.625C136.613 72.9375 138.571 70.8958 141.113 69.5C143.654 68.1042 146.685 67.4062 150.206 67.4062C153.477 67.4062 156.373 68.1042 158.894 69.5C161.435 70.8958 163.425 72.9375 164.863 75.625C166.321 78.3125 167.05 81.5938 167.05 85.4688ZM142.894 85.4688C142.894 87.7604 143.144 89.6875 143.644 91.25C144.144 92.8125 144.925 93.9896 145.988 94.7812C147.05 95.5729 148.435 95.9688 150.144 95.9688C151.831 95.9688 153.196 95.5729 154.238 94.7812C155.3 93.9896 156.071 92.8125 156.55 91.25C157.05 89.6875 157.3 87.7604 157.3 85.4688C157.3 83.1562 157.05 81.2396 156.55 79.7188C156.071 78.1771 155.3 77.0208 154.238 76.25C153.175 75.4792 151.79 75.0938 150.081 75.0938C147.56 75.0938 145.727 75.9583 144.581 77.6875C143.456 79.4167 142.894 82.0104 142.894 85.4688ZM182.031 54.625L182.294 55.0375C182.069 55.9625 181.775 57.0687 181.412 58.3562C181.062 59.6312 180.675 60.9125 180.25 62.2C179.837 63.4875 179.419 64.6062 178.994 65.5562H173.781C174.031 64.3937 174.275 63.1625 174.512 61.8625C174.75 60.5625 174.962 59.2875 175.15 58.0375C175.35 56.7875 175.506 55.65 175.619 54.625H182.031ZM172.469 54.625L172.75 55.0375C172.525 55.9625 172.231 57.0687 171.869 58.3562C171.506 59.6312 171.112 60.9125 170.687 62.2C170.275 63.4875 169.856 64.6062 169.431 65.5562H164.219C164.406 64.6812 164.587 63.7687 164.762 62.8187C164.95 61.8562 165.125 60.8937 165.287 59.9312C165.45 58.9687 165.594 58.0375 165.719 57.1375C165.856 56.225 165.969 55.3875 166.056 54.625H172.469Z"})]}),S3="/assets/penrose.svg",x3="/assets/edgeworth.svg",R3="/assets/mathdiagrams.webp";/** * @license * Copyright 2010-2023 Three.js Authors * SPDX-License-Identifier: MIT - */const da="152",v3={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},y3={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},MR=0,B0=1,NR=2,G3=3,HR=0,SA=1,VI=2,ir=3,Hr=0,Tn=1,Pi=2,B3=2,tn=0,sl=1,Z0=2,w0=3,S0=4,XR=5,Ea=100,YR=101,FR=102,x0=103,R0=104,KR=200,zR=201,LR=202,TR=203,mv=204,fv=205,ER=206,kR=207,DR=208,UR=209,PR=210,bv=0,vv=1,iA=2,su=3,ru=4,yv=5,Gv=6,xA=7,Wu=0,_R=1,JR=2,gr=0,OR=1,QR=2,jR=3,Bv=4,qR=5,RA=300,oa=301,aa=302,ou=303,au=304,oc=306,hs=1e3,zn=1001,lu=1002,pt=1003,sA=1004,Z3=1004,MI=1005,w3=1005,je=1006,Zv=1007,S3=1007,la=1008,x3=1008,rn=1009,$R=1010,e1=1011,wv=1012,t1=1013,oo=1014,wn=1015,us=1016,n1=1017,i1=1018,ta=1020,s1=1021,un=1023,WA=1024,r1=1025,na=1026,ga=1027,Sv=1028,o1=1029,xv=1030,a1=1031,l1=1033,yh=33776,Gh=33777,Bh=33778,Zh=33779,W0=35840,V0=35841,M0=35842,N0=35843,g1=36196,H0=37492,X0=37496,Y0=37808,F0=37809,K0=37810,z0=37811,L0=37812,T0=37813,E0=37814,k0=37815,D0=37816,U0=37817,P0=37818,_0=37819,J0=37820,O0=37821,wh=36492,c1=36283,Q0=36284,j0=36285,q0=36286,I1=2200,u1=2201,C1=2202,gu=2300,cu=2301,Sh=2302,Qa=2400,ja=2401,Iu=2402,VA=2500,Rv=2501,R3=0,W3=1,V3=2,Vu=3e3,Ys=3001,Yn=3200,Xr=3201,fo=0,d1=1,co="",mt="srgb",ur="srgb-linear",Wv="display-p3",M3=0,xh=7680,N3=7681,H3=7682,X3=7683,Y3=34055,F3=34056,K3=5386,z3=512,L3=513,T3=514,E3=515,k3=516,D3=517,U3=518,h1=519,uu=35044,A1=35048,P3=35040,_3=35045,J3=35049,O3=35041,Q3=35046,j3=35050,q3=35042,$3="100",rA="300 es",oA=1035;class zs{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const i=this._listeners;i[e]===void 0&&(i[e]=[]),i[e].indexOf(t)===-1&&i[e].push(t)}hasEventListener(e,t){if(this._listeners===void 0)return!1;const i=this._listeners;return i[e]!==void 0&&i[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;const s=this._listeners[e];if(s!==void 0){const r=s.indexOf(t);r!==-1&&s.splice(r,1)}}dispatchEvent(e){if(this._listeners===void 0)return;const i=this._listeners[e.type];if(i!==void 0){e.target=this;const s=i.slice(0);for(let r=0,o=s.length;r>8&255]+Ai[n>>16&255]+Ai[n>>24&255]+"-"+Ai[e&255]+Ai[e>>8&255]+"-"+Ai[e>>16&15|64]+Ai[e>>24&255]+"-"+Ai[t&63|128]+Ai[t>>8&255]+"-"+Ai[t>>16&255]+Ai[t>>24&255]+Ai[i&255]+Ai[i>>8&255]+Ai[i>>16&255]+Ai[i>>24&255]).toLowerCase()}function Gn(n,e,t){return Math.max(e,Math.min(t,n))}function Vv(n,e){return(n%e+e)%e}function eH(n,e,t,i,s){return i+(n-e)*(s-i)/(t-e)}function tH(n,e,t){return n!==e?(t-n)/(e-n):0}function NI(n,e,t){return(1-t)*n+t*e}function nH(n,e,t,i){return NI(n,e,1-Math.exp(-t*i))}function iH(n,e=1){return e-Math.abs(Vv(n,e*2)-e)}function sH(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*(3-2*n))}function rH(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*n*(n*(n*6-15)+10))}function oH(n,e){return n+Math.floor(Math.random()*(e-n+1))}function aH(n,e){return n+Math.random()*(e-n)}function lH(n){return n*(.5-Math.random())}function gH(n){n!==void 0&&(c2=n);let e=c2+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function cH(n){return n*rl}function IH(n){return n*qg}function $0(n){return(n&n-1)===0&&n!==0}function p1(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.LN2))}function m1(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}function uH(n,e,t,i,s){const r=Math.cos,o=Math.sin,a=r(t/2),l=o(t/2),c=r((e+i)/2),u=o((e+i)/2),C=r((e-i)/2),d=o((e-i)/2),h=r((i-e)/2),m=o((i-e)/2);switch(s){case"XYX":n.set(a*u,l*C,l*d,a*c);break;case"YZY":n.set(l*d,a*u,l*C,a*c);break;case"ZXZ":n.set(l*C,l*d,a*u,a*c);break;case"XZX":n.set(a*u,l*m,l*h,a*c);break;case"YXY":n.set(l*h,a*u,l*m,a*c);break;case"ZYZ":n.set(l*m,l*h,a*u,a*c);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+s)}}function cs(n,e){switch(e.constructor){case Float32Array:return n;case Uint16Array:return n/65535;case Uint8Array:return n/255;case Int16Array:return Math.max(n/32767,-1);case Int8Array:return Math.max(n/127,-1);default:throw new Error("Invalid component type.")}}function vt(n,e){switch(e.constructor){case Float32Array:return n;case Uint16Array:return Math.round(n*65535);case Uint8Array:return Math.round(n*255);case Int16Array:return Math.round(n*32767);case Int8Array:return Math.round(n*127);default:throw new Error("Invalid component type.")}}const f1={DEG2RAD:rl,RAD2DEG:qg,generateUUID:Cs,clamp:Gn,euclideanModulo:Vv,mapLinear:eH,inverseLerp:tH,lerp:NI,damp:nH,pingpong:iH,smoothstep:sH,smootherstep:rH,randInt:oH,randFloat:aH,randFloatSpread:lH,seededRandom:gH,degToRad:cH,radToDeg:IH,isPowerOfTwo:$0,ceilPowerOfTwo:p1,floorPowerOfTwo:m1,setQuaternionFromProperEuler:uH,normalize:vt,denormalize:cs};class ne{constructor(e=0,t=0){ne.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,i=this.y,s=e.elements;return this.x=s[0]*t+s[3]*i+s[6],this.y=s[1]*t+s[4]*i+s[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const i=this.dot(e)/t;return Math.acos(Gn(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y;return t*t+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const i=Math.cos(t),s=Math.sin(t),r=this.x-e.x,o=this.y-e.y;return this.x=r*i-o*s+e.x,this.y=r*s+o*i+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class xt{constructor(){xt.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1]}set(e,t,i,s,r,o,a,l,c){const u=this.elements;return u[0]=e,u[1]=s,u[2]=a,u[3]=t,u[4]=r,u[5]=l,u[6]=i,u[7]=o,u[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],this}extractBasis(e,t,i){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,s=t.elements,r=this.elements,o=i[0],a=i[3],l=i[6],c=i[1],u=i[4],C=i[7],d=i[2],h=i[5],m=i[8],v=s[0],y=s[3],A=s[6],b=s[1],f=s[4],B=s[7],S=s[2],x=s[5],R=s[8];return r[0]=o*v+a*b+l*S,r[3]=o*y+a*f+l*x,r[6]=o*A+a*B+l*R,r[1]=c*v+u*b+C*S,r[4]=c*y+u*f+C*x,r[7]=c*A+u*B+C*R,r[2]=d*v+h*b+m*S,r[5]=d*y+h*f+m*x,r[8]=d*A+h*B+m*R,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],i=e[1],s=e[2],r=e[3],o=e[4],a=e[5],l=e[6],c=e[7],u=e[8];return t*o*u-t*a*c-i*r*u+i*a*l+s*r*c-s*o*l}invert(){const e=this.elements,t=e[0],i=e[1],s=e[2],r=e[3],o=e[4],a=e[5],l=e[6],c=e[7],u=e[8],C=u*o-a*c,d=a*l-u*r,h=c*r-o*l,m=t*C+i*d+s*h;if(m===0)return this.set(0,0,0,0,0,0,0,0,0);const v=1/m;return e[0]=C*v,e[1]=(s*c-u*i)*v,e[2]=(a*i-s*o)*v,e[3]=d*v,e[4]=(u*t-s*l)*v,e[5]=(s*r-a*t)*v,e[6]=h*v,e[7]=(i*l-c*t)*v,e[8]=(o*t-i*r)*v,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,i,s,r,o,a){const l=Math.cos(r),c=Math.sin(r);return this.set(i*l,i*c,-i*(l*o+c*a)+o+e,-s*c,s*l,-s*(-c*o+l*a)+a+t,0,0,1),this}scale(e,t){return this.premultiply(Mm.makeScale(e,t)),this}rotate(e){return this.premultiply(Mm.makeRotation(-e)),this}translate(e,t){return this.premultiply(Mm.makeTranslation(e,t)),this}makeTranslation(e,t){return this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,i,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,i=e.elements;for(let s=0;s<9;s++)if(t[s]!==i[s])return!1;return!0}fromArray(e,t=0){for(let i=0;i<9;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){const i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const Mm=new xt;function b1(n){for(let e=n.length-1;e>=0;--e)if(n[e]>=65535)return!0;return!1}const CH={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function Sg(n,e){return new CH[n](e)}function Cu(n){return document.createElementNS("http://www.w3.org/1999/xhtml",n)}const I2={};function HI(n){n in I2||(I2[n]=!0,console.warn(n))}function Lg(n){return n<.04045?n*.0773993808:Math.pow(n*.9478672986+.0521327014,2.4)}function Nm(n){return n<.0031308?n*12.92:1.055*Math.pow(n,.41666)-.055}const dH=new xt().fromArray([.8224621,.0331941,.0170827,.177538,.9668058,.0723974,-1e-7,1e-7,.9105199]),hH=new xt().fromArray([1.2249401,-.0420569,-.0196376,-.2249404,1.0420571,-.0786361,1e-7,0,1.0982735]);function AH(n){return n.convertSRGBToLinear().applyMatrix3(hH)}function pH(n){return n.applyMatrix3(dH).convertLinearToSRGB()}const mH={[ur]:n=>n,[mt]:n=>n.convertSRGBToLinear(),[Wv]:AH},fH={[ur]:n=>n,[mt]:n=>n.convertLinearToSRGB(),[Wv]:pH},Ws={enabled:!0,get legacyMode(){return console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),!this.enabled},set legacyMode(n){console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),this.enabled=!n},get workingColorSpace(){return ur},set workingColorSpace(n){console.warn("THREE.ColorManagement: .workingColorSpace is readonly.")},convert:function(n,e,t){if(this.enabled===!1||e===t||!e||!t)return n;const i=mH[e],s=fH[t];if(i===void 0||s===void 0)throw new Error(`Unsupported color space conversion, "${e}" to "${t}".`);return s(i(n))},fromWorkingColorSpace:function(n,e){return this.convert(n,this.workingColorSpace,e)},toWorkingColorSpace:function(n,e){return this.convert(n,e,this.workingColorSpace)}};let El;class Mv{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{El===void 0&&(El=Cu("canvas")),El.width=e.width,El.height=e.height;const i=El.getContext("2d");e instanceof ImageData?i.putImageData(e,0,0):i.drawImage(e,0,0,e.width,e.height),t=El}return t.width>2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const t=Cu("canvas");t.width=e.width,t.height=e.height;const i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);const s=i.getImageData(0,0,e.width,e.height),r=s.data;for(let o=0;o0&&(i.userData=this.userData),t||(e.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==RA)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case hs:e.x=e.x-Math.floor(e.x);break;case zn:e.x=e.x<0?0:1;break;case lu:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case hs:e.y=e.y-Math.floor(e.y);break;case zn:e.y=e.y<0?0:1;break;case lu:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}get encoding(){return HI("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace===mt?Ys:Vu}set encoding(e){HI("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace=e===Ys?mt:co}}qt.DEFAULT_IMAGE=null;qt.DEFAULT_MAPPING=RA;qt.DEFAULT_ANISOTROPY=1;class Vt{constructor(e=0,t=0,i=0,s=1){Vt.prototype.isVector4=!0,this.x=e,this.y=t,this.z=i,this.w=s}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,i,s){return this.x=e,this.y=t,this.z=i,this.w=s,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,i=this.y,s=this.z,r=this.w,o=e.elements;return this.x=o[0]*t+o[4]*i+o[8]*s+o[12]*r,this.y=o[1]*t+o[5]*i+o[9]*s+o[13]*r,this.z=o[2]*t+o[6]*i+o[10]*s+o[14]*r,this.w=o[3]*t+o[7]*i+o[11]*s+o[15]*r,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,i,s,r;const l=e.elements,c=l[0],u=l[4],C=l[8],d=l[1],h=l[5],m=l[9],v=l[2],y=l[6],A=l[10];if(Math.abs(u-d)<.01&&Math.abs(C-v)<.01&&Math.abs(m-y)<.01){if(Math.abs(u+d)<.1&&Math.abs(C+v)<.1&&Math.abs(m+y)<.1&&Math.abs(c+h+A-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const f=(c+1)/2,B=(h+1)/2,S=(A+1)/2,x=(u+d)/4,R=(C+v)/4,M=(m+y)/4;return f>B&&f>S?f<.01?(i=0,s=.707106781,r=.707106781):(i=Math.sqrt(f),s=x/i,r=R/i):B>S?B<.01?(i=.707106781,s=0,r=.707106781):(s=Math.sqrt(B),i=x/s,r=M/s):S<.01?(i=.707106781,s=.707106781,r=0):(r=Math.sqrt(S),i=R/r,s=M/r),this.set(i,s,r,t),this}let b=Math.sqrt((y-m)*(y-m)+(C-v)*(C-v)+(d-u)*(d-u));return Math.abs(b)<.001&&(b=1),this.x=(y-m)/b,this.y=(C-v)/b,this.z=(d-u)/b,this.w=Math.acos((c+h+A-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this.w=e.w+(t.w-e.w)*i,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class Rt extends zs{constructor(e=1,t=1,i={}){super(),this.isWebGLRenderTarget=!0,this.width=e,this.height=t,this.depth=1,this.scissor=new Vt(0,0,e,t),this.scissorTest=!1,this.viewport=new Vt(0,0,e,t);const s={width:e,height:t,depth:1};i.encoding!==void 0&&(HI("THREE.WebGLRenderTarget: option.encoding has been replaced by option.colorSpace."),i.colorSpace=i.encoding===Ys?mt:co),this.texture=new qt(s,i.mapping,i.wrapS,i.wrapT,i.magFilter,i.minFilter,i.format,i.type,i.anisotropy,i.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=i.generateMipmaps!==void 0?i.generateMipmaps:!1,this.texture.internalFormat=i.internalFormat!==void 0?i.internalFormat:null,this.texture.minFilter=i.minFilter!==void 0?i.minFilter:je,this.depthBuffer=i.depthBuffer!==void 0?i.depthBuffer:!0,this.stencilBuffer=i.stencilBuffer!==void 0?i.stencilBuffer:!1,this.depthTexture=i.depthTexture!==void 0?i.depthTexture:null,this.samples=i.samples!==void 0?i.samples:0}setSize(e,t,i=1){(this.width!==e||this.height!==t||this.depth!==i)&&(this.width=e,this.height=t,this.depth=i,this.texture.image.width=e,this.texture.image.height=t,this.texture.image.depth=i,this.dispose()),this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.texture=e.texture.clone(),this.texture.isRenderTargetTexture=!0;const t=Object.assign({},e.texture.image);return this.texture.source=new qa(t),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,e.depthTexture!==null&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class MA extends qt{constructor(e=null,t=1,i=1,s=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:i,depth:s},this.magFilter=pt,this.minFilter=pt,this.wrapR=zn,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class vH extends Rt{constructor(e=1,t=1,i=1){super(e,t),this.isWebGLArrayRenderTarget=!0,this.depth=i,this.texture=new MA(null,e,t,i),this.texture.isRenderTargetTexture=!0}}class ol extends qt{constructor(e=null,t=1,i=1,s=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:i,depth:s},this.magFilter=pt,this.minFilter=pt,this.wrapR=zn,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class yH extends Rt{constructor(e=1,t=1,i=1){super(e,t),this.isWebGL3DRenderTarget=!0,this.depth=i,this.texture=new ol(null,e,t,i),this.texture.isRenderTargetTexture=!0}}class v1 extends Rt{constructor(e=1,t=1,i=1,s={}){super(e,t,s),this.isWebGLMultipleRenderTargets=!0;const r=this.texture;this.texture=[];for(let o=0;o=0?1:-1,f=1-A*A;if(f>Number.EPSILON){const S=Math.sqrt(f),x=Math.atan2(S,A*b);y=Math.sin(y*x)/S,a=Math.sin(a*x)/S}const B=a*b;if(l=l*y+d*B,c=c*y+h*B,u=u*y+m*B,C=C*y+v*B,y===1-a){const S=1/Math.sqrt(l*l+c*c+u*u+C*C);l*=S,c*=S,u*=S,C*=S}}e[t]=l,e[t+1]=c,e[t+2]=u,e[t+3]=C}static multiplyQuaternionsFlat(e,t,i,s,r,o){const a=i[s],l=i[s+1],c=i[s+2],u=i[s+3],C=r[o],d=r[o+1],h=r[o+2],m=r[o+3];return e[t]=a*m+u*C+l*h-c*d,e[t+1]=l*m+u*d+c*C-a*h,e[t+2]=c*m+u*h+a*d-l*C,e[t+3]=u*m-a*C-l*d-c*h,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,i,s){return this._x=e,this._y=t,this._z=i,this._w=s,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t){const i=e._x,s=e._y,r=e._z,o=e._order,a=Math.cos,l=Math.sin,c=a(i/2),u=a(s/2),C=a(r/2),d=l(i/2),h=l(s/2),m=l(r/2);switch(o){case"XYZ":this._x=d*u*C+c*h*m,this._y=c*h*C-d*u*m,this._z=c*u*m+d*h*C,this._w=c*u*C-d*h*m;break;case"YXZ":this._x=d*u*C+c*h*m,this._y=c*h*C-d*u*m,this._z=c*u*m-d*h*C,this._w=c*u*C+d*h*m;break;case"ZXY":this._x=d*u*C-c*h*m,this._y=c*h*C+d*u*m,this._z=c*u*m+d*h*C,this._w=c*u*C-d*h*m;break;case"ZYX":this._x=d*u*C-c*h*m,this._y=c*h*C+d*u*m,this._z=c*u*m-d*h*C,this._w=c*u*C+d*h*m;break;case"YZX":this._x=d*u*C+c*h*m,this._y=c*h*C+d*u*m,this._z=c*u*m-d*h*C,this._w=c*u*C-d*h*m;break;case"XZY":this._x=d*u*C-c*h*m,this._y=c*h*C-d*u*m,this._z=c*u*m+d*h*C,this._w=c*u*C+d*h*m;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+o)}return t!==!1&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const i=t/2,s=Math.sin(i);return this._x=e.x*s,this._y=e.y*s,this._z=e.z*s,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,i=t[0],s=t[4],r=t[8],o=t[1],a=t[5],l=t[9],c=t[2],u=t[6],C=t[10],d=i+a+C;if(d>0){const h=.5/Math.sqrt(d+1);this._w=.25/h,this._x=(u-l)*h,this._y=(r-c)*h,this._z=(o-s)*h}else if(i>a&&i>C){const h=2*Math.sqrt(1+i-a-C);this._w=(u-l)/h,this._x=.25*h,this._y=(s+o)/h,this._z=(r+c)/h}else if(a>C){const h=2*Math.sqrt(1+a-i-C);this._w=(r-c)/h,this._x=(s+o)/h,this._y=.25*h,this._z=(l+u)/h}else{const h=2*Math.sqrt(1+C-i-a);this._w=(o-s)/h,this._x=(r+c)/h,this._y=(l+u)/h,this._z=.25*h}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return iMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=i),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Gn(this.dot(e),-1,1)))}rotateTowards(e,t){const i=this.angleTo(e);if(i===0)return this;const s=Math.min(1,t/i);return this.slerp(e,s),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const i=e._x,s=e._y,r=e._z,o=e._w,a=t._x,l=t._y,c=t._z,u=t._w;return this._x=i*u+o*a+s*c-r*l,this._y=s*u+o*l+r*a-i*c,this._z=r*u+o*c+i*l-s*a,this._w=o*u-i*a-s*l-r*c,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const i=this._x,s=this._y,r=this._z,o=this._w;let a=o*e._w+i*e._x+s*e._y+r*e._z;if(a<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=o,this._x=i,this._y=s,this._z=r,this;const l=1-a*a;if(l<=Number.EPSILON){const h=1-t;return this._w=h*o+t*this._w,this._x=h*i+t*this._x,this._y=h*s+t*this._y,this._z=h*r+t*this._z,this.normalize(),this._onChangeCallback(),this}const c=Math.sqrt(l),u=Math.atan2(c,a),C=Math.sin((1-t)*u)/c,d=Math.sin(t*u)/c;return this._w=o*C+this._w*d,this._x=i*C+this._x*d,this._y=s*C+this._y*d,this._z=r*C+this._z*d,this._onChangeCallback(),this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){const e=Math.random(),t=Math.sqrt(1-e),i=Math.sqrt(e),s=2*Math.PI*Math.random(),r=2*Math.PI*Math.random();return this.set(t*Math.cos(s),i*Math.sin(r),i*Math.cos(r),t*Math.sin(s))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}};class H{constructor(e=0,t=0,i=0){H.prototype.isVector3=!0,this.x=e,this.y=t,this.z=i}set(e,t,i){return i===void 0&&(i=this.z),this.x=e,this.y=t,this.z=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(u2.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(u2.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,i=this.y,s=this.z,r=e.elements;return this.x=r[0]*t+r[3]*i+r[6]*s,this.y=r[1]*t+r[4]*i+r[7]*s,this.z=r[2]*t+r[5]*i+r[8]*s,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,i=this.y,s=this.z,r=e.elements,o=1/(r[3]*t+r[7]*i+r[11]*s+r[15]);return this.x=(r[0]*t+r[4]*i+r[8]*s+r[12])*o,this.y=(r[1]*t+r[5]*i+r[9]*s+r[13])*o,this.z=(r[2]*t+r[6]*i+r[10]*s+r[14])*o,this}applyQuaternion(e){const t=this.x,i=this.y,s=this.z,r=e.x,o=e.y,a=e.z,l=e.w,c=l*t+o*s-a*i,u=l*i+a*t-r*s,C=l*s+r*i-o*t,d=-r*t-o*i-a*s;return this.x=c*l+d*-r+u*-a-C*-o,this.y=u*l+d*-o+C*-r-c*-a,this.z=C*l+d*-a+c*-o-u*-r,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,i=this.y,s=this.z,r=e.elements;return this.x=r[0]*t+r[4]*i+r[8]*s,this.y=r[1]*t+r[5]*i+r[9]*s,this.z=r[2]*t+r[6]*i+r[10]*s,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const i=e.x,s=e.y,r=e.z,o=t.x,a=t.y,l=t.z;return this.x=s*l-r*a,this.y=r*o-i*l,this.z=i*a-s*o,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return Xm.copy(this).projectOnVector(e),this.sub(Xm)}reflect(e){return this.sub(Xm.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const i=this.dot(e)/t;return Math.acos(Gn(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y,s=this.z-e.z;return t*t+i*i+s*s}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,i){const s=Math.sin(t)*e;return this.x=s*Math.sin(i),this.y=Math.cos(t)*e,this.z=s*Math.cos(i),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,i){return this.x=e*Math.sin(t),this.y=i,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),i=this.setFromMatrixColumn(e,1).length(),s=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=i,this.z=s,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=(Math.random()-.5)*2,t=Math.random()*Math.PI*2,i=Math.sqrt(1-e**2);return this.x=i*Math.cos(t),this.y=i*Math.sin(t),this.z=e,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Xm=new H,u2=new xn;class Yr{constructor(e=new H(1/0,1/0,1/0),t=new H(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,i=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)}intersectsSphere(e){return this.clampPoint(e.center,_r),_r.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,i;return e.normal.x>0?(t=e.normal.x*this.min.x,i=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,i=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,i+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,i+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,i+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,i+=e.normal.z*this.min.z),t<=-e.constant&&i>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(Pc),ld.subVectors(this.max,Pc),Dl.subVectors(e.a,Pc),Ul.subVectors(e.b,Pc),Pl.subVectors(e.c,Pc),Mo.subVectors(Ul,Dl),No.subVectors(Pl,Ul),Ra.subVectors(Dl,Pl);let t=[0,-Mo.z,Mo.y,0,-No.z,No.y,0,-Ra.z,Ra.y,Mo.z,0,-Mo.x,No.z,0,-No.x,Ra.z,0,-Ra.x,-Mo.y,Mo.x,0,-No.y,No.x,0,-Ra.y,Ra.x,0];return!Ym(t,Dl,Ul,Pl,ld)||(t=[1,0,0,0,1,0,0,0,1],!Ym(t,Dl,Ul,Pl,ld))?!1:(gd.crossVectors(Mo,No),t=[gd.x,gd.y,gd.z],Ym(t,Dl,Ul,Pl,ld))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,_r).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(_r).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(Pr[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Pr[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Pr[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Pr[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Pr[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Pr[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Pr[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Pr[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Pr),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const Pr=[new H,new H,new H,new H,new H,new H,new H,new H],_r=new H,kl=new Yr,Dl=new H,Ul=new H,Pl=new H,Mo=new H,No=new H,Ra=new H,Pc=new H,ld=new H,gd=new H,Wa=new H;function Ym(n,e,t,i,s){for(let r=0,o=n.length-3;r<=o;r+=3){Wa.fromArray(n,r);const a=s.x*Math.abs(Wa.x)+s.y*Math.abs(Wa.y)+s.z*Math.abs(Wa.z),l=e.dot(Wa),c=t.dot(Wa),u=i.dot(Wa);if(Math.max(-Math.max(l,c,u),Math.min(l,c,u))>a)return!1}return!0}const GH=new Yr,_c=new H,Fm=new H;class Fr{constructor(e=new H,t=-1){this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const i=this.center;t!==void 0?i.copy(t):GH.setFromPoints(e).getCenter(i);let s=0;for(let r=0,o=e.length;rthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;_c.subVectors(e,this.center);const t=_c.lengthSq();if(t>this.radius*this.radius){const i=Math.sqrt(t),s=(i-this.radius)*.5;this.center.addScaledVector(_c,s/i),this.radius+=s}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(Fm.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(_c.copy(e.center).add(Fm)),this.expandByPoint(_c.copy(e.center).sub(Fm))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}}const Jr=new H,Km=new H,cd=new H,Ho=new H,zm=new H,Id=new H,Lm=new H;let Mu=class{constructor(e=new H,t=new H(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,Jr)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=Jr.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Jr.copy(this.origin).addScaledVector(this.direction,t),Jr.distanceToSquared(e))}distanceSqToSegment(e,t,i,s){Km.copy(e).add(t).multiplyScalar(.5),cd.copy(t).sub(e).normalize(),Ho.copy(this.origin).sub(Km);const r=e.distanceTo(t)*.5,o=-this.direction.dot(cd),a=Ho.dot(this.direction),l=-Ho.dot(cd),c=Ho.lengthSq(),u=Math.abs(1-o*o);let C,d,h,m;if(u>0)if(C=o*l-a,d=o*a-l,m=r*u,C>=0)if(d>=-m)if(d<=m){const v=1/u;C*=v,d*=v,h=C*(C+o*d+2*a)+d*(o*C+d+2*l)+c}else d=r,C=Math.max(0,-(o*d+a)),h=-C*C+d*(d+2*l)+c;else d=-r,C=Math.max(0,-(o*d+a)),h=-C*C+d*(d+2*l)+c;else d<=-m?(C=Math.max(0,-(-o*r+a)),d=C>0?-r:Math.min(Math.max(-r,-l),r),h=-C*C+d*(d+2*l)+c):d<=m?(C=0,d=Math.min(Math.max(-r,-l),r),h=d*(d+2*l)+c):(C=Math.max(0,-(o*r+a)),d=C>0?r:Math.min(Math.max(-r,-l),r),h=-C*C+d*(d+2*l)+c);else d=o>0?-r:r,C=Math.max(0,-(o*d+a)),h=-C*C+d*(d+2*l)+c;return i&&i.copy(this.origin).addScaledVector(this.direction,C),s&&s.copy(Km).addScaledVector(cd,d),h}intersectSphere(e,t){Jr.subVectors(e.center,this.origin);const i=Jr.dot(this.direction),s=Jr.dot(Jr)-i*i,r=e.radius*e.radius;if(s>r)return null;const o=Math.sqrt(r-s),a=i-o,l=i+o;return l<0?null:a<0?this.at(l,t):this.at(a,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){const i=this.distanceToPlane(e);return i===null?null:this.at(i,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,s,r,o,a,l;const c=1/this.direction.x,u=1/this.direction.y,C=1/this.direction.z,d=this.origin;return c>=0?(i=(e.min.x-d.x)*c,s=(e.max.x-d.x)*c):(i=(e.max.x-d.x)*c,s=(e.min.x-d.x)*c),u>=0?(r=(e.min.y-d.y)*u,o=(e.max.y-d.y)*u):(r=(e.max.y-d.y)*u,o=(e.min.y-d.y)*u),i>o||r>s||((r>i||isNaN(i))&&(i=r),(o=0?(a=(e.min.z-d.z)*C,l=(e.max.z-d.z)*C):(a=(e.max.z-d.z)*C,l=(e.min.z-d.z)*C),i>l||a>s)||((a>i||i!==i)&&(i=a),(l=0?i:s,t)}intersectsBox(e){return this.intersectBox(e,Jr)!==null}intersectTriangle(e,t,i,s,r){zm.subVectors(t,e),Id.subVectors(i,e),Lm.crossVectors(zm,Id);let o=this.direction.dot(Lm),a;if(o>0){if(s)return null;a=1}else if(o<0)a=-1,o=-o;else return null;Ho.subVectors(this.origin,e);const l=a*this.direction.dot(Id.crossVectors(Ho,Id));if(l<0)return null;const c=a*this.direction.dot(zm.cross(Ho));if(c<0||l+c>o)return null;const u=-a*Ho.dot(Lm);return u<0?null:this.at(u/o,r)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}};class Fe{constructor(){Fe.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}set(e,t,i,s,r,o,a,l,c,u,C,d,h,m,v,y){const A=this.elements;return A[0]=e,A[4]=t,A[8]=i,A[12]=s,A[1]=r,A[5]=o,A[9]=a,A[13]=l,A[2]=c,A[6]=u,A[10]=C,A[14]=d,A[3]=h,A[7]=m,A[11]=v,A[15]=y,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new Fe().fromArray(this.elements)}copy(e){const t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],this}copyPosition(e){const t=this.elements,i=e.elements;return t[12]=i[12],t[13]=i[13],t[14]=i[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,i){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(e,t,i){return this.set(e.x,t.x,i.x,0,e.y,t.y,i.y,0,e.z,t.z,i.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,i=e.elements,s=1/_l.setFromMatrixColumn(e,0).length(),r=1/_l.setFromMatrixColumn(e,1).length(),o=1/_l.setFromMatrixColumn(e,2).length();return t[0]=i[0]*s,t[1]=i[1]*s,t[2]=i[2]*s,t[3]=0,t[4]=i[4]*r,t[5]=i[5]*r,t[6]=i[6]*r,t[7]=0,t[8]=i[8]*o,t[9]=i[9]*o,t[10]=i[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,i=e.x,s=e.y,r=e.z,o=Math.cos(i),a=Math.sin(i),l=Math.cos(s),c=Math.sin(s),u=Math.cos(r),C=Math.sin(r);if(e.order==="XYZ"){const d=o*u,h=o*C,m=a*u,v=a*C;t[0]=l*u,t[4]=-l*C,t[8]=c,t[1]=h+m*c,t[5]=d-v*c,t[9]=-a*l,t[2]=v-d*c,t[6]=m+h*c,t[10]=o*l}else if(e.order==="YXZ"){const d=l*u,h=l*C,m=c*u,v=c*C;t[0]=d+v*a,t[4]=m*a-h,t[8]=o*c,t[1]=o*C,t[5]=o*u,t[9]=-a,t[2]=h*a-m,t[6]=v+d*a,t[10]=o*l}else if(e.order==="ZXY"){const d=l*u,h=l*C,m=c*u,v=c*C;t[0]=d-v*a,t[4]=-o*C,t[8]=m+h*a,t[1]=h+m*a,t[5]=o*u,t[9]=v-d*a,t[2]=-o*c,t[6]=a,t[10]=o*l}else if(e.order==="ZYX"){const d=o*u,h=o*C,m=a*u,v=a*C;t[0]=l*u,t[4]=m*c-h,t[8]=d*c+v,t[1]=l*C,t[5]=v*c+d,t[9]=h*c-m,t[2]=-c,t[6]=a*l,t[10]=o*l}else if(e.order==="YZX"){const d=o*l,h=o*c,m=a*l,v=a*c;t[0]=l*u,t[4]=v-d*C,t[8]=m*C+h,t[1]=C,t[5]=o*u,t[9]=-a*u,t[2]=-c*u,t[6]=h*C+m,t[10]=d-v*C}else if(e.order==="XZY"){const d=o*l,h=o*c,m=a*l,v=a*c;t[0]=l*u,t[4]=-C,t[8]=c*u,t[1]=d*C+v,t[5]=o*u,t[9]=h*C-m,t[2]=m*C-h,t[6]=a*u,t[10]=v*C+d}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(BH,e,ZH)}lookAt(e,t,i){const s=this.elements;return rs.subVectors(e,t),rs.lengthSq()===0&&(rs.z=1),rs.normalize(),Xo.crossVectors(i,rs),Xo.lengthSq()===0&&(Math.abs(i.z)===1?rs.x+=1e-4:rs.z+=1e-4,rs.normalize(),Xo.crossVectors(i,rs)),Xo.normalize(),ud.crossVectors(rs,Xo),s[0]=Xo.x,s[4]=ud.x,s[8]=rs.x,s[1]=Xo.y,s[5]=ud.y,s[9]=rs.y,s[2]=Xo.z,s[6]=ud.z,s[10]=rs.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,s=t.elements,r=this.elements,o=i[0],a=i[4],l=i[8],c=i[12],u=i[1],C=i[5],d=i[9],h=i[13],m=i[2],v=i[6],y=i[10],A=i[14],b=i[3],f=i[7],B=i[11],S=i[15],x=s[0],R=s[4],M=s[8],Z=s[12],V=s[1],N=s[5],D=s[9],k=s[13],$=s[2],te=s[6],Ce=s[10],le=s[14],L=s[3],J=s[7],P=s[11],ce=s[15];return r[0]=o*x+a*V+l*$+c*L,r[4]=o*R+a*N+l*te+c*J,r[8]=o*M+a*D+l*Ce+c*P,r[12]=o*Z+a*k+l*le+c*ce,r[1]=u*x+C*V+d*$+h*L,r[5]=u*R+C*N+d*te+h*J,r[9]=u*M+C*D+d*Ce+h*P,r[13]=u*Z+C*k+d*le+h*ce,r[2]=m*x+v*V+y*$+A*L,r[6]=m*R+v*N+y*te+A*J,r[10]=m*M+v*D+y*Ce+A*P,r[14]=m*Z+v*k+y*le+A*ce,r[3]=b*x+f*V+B*$+S*L,r[7]=b*R+f*N+B*te+S*J,r[11]=b*M+f*D+B*Ce+S*P,r[15]=b*Z+f*k+B*le+S*ce,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],i=e[4],s=e[8],r=e[12],o=e[1],a=e[5],l=e[9],c=e[13],u=e[2],C=e[6],d=e[10],h=e[14],m=e[3],v=e[7],y=e[11],A=e[15];return m*(+r*l*C-s*c*C-r*a*d+i*c*d+s*a*h-i*l*h)+v*(+t*l*h-t*c*d+r*o*d-s*o*h+s*c*u-r*l*u)+y*(+t*c*C-t*a*h-r*o*C+i*o*h+r*a*u-i*c*u)+A*(-s*a*u-t*l*C+t*a*d+s*o*C-i*o*d+i*l*u)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,i){const s=this.elements;return e.isVector3?(s[12]=e.x,s[13]=e.y,s[14]=e.z):(s[12]=e,s[13]=t,s[14]=i),this}invert(){const e=this.elements,t=e[0],i=e[1],s=e[2],r=e[3],o=e[4],a=e[5],l=e[6],c=e[7],u=e[8],C=e[9],d=e[10],h=e[11],m=e[12],v=e[13],y=e[14],A=e[15],b=C*y*c-v*d*c+v*l*h-a*y*h-C*l*A+a*d*A,f=m*d*c-u*y*c-m*l*h+o*y*h+u*l*A-o*d*A,B=u*v*c-m*C*c+m*a*h-o*v*h-u*a*A+o*C*A,S=m*C*l-u*v*l-m*a*d+o*v*d+u*a*y-o*C*y,x=t*b+i*f+s*B+r*S;if(x===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const R=1/x;return e[0]=b*R,e[1]=(v*d*r-C*y*r-v*s*h+i*y*h+C*s*A-i*d*A)*R,e[2]=(a*y*r-v*l*r+v*s*c-i*y*c-a*s*A+i*l*A)*R,e[3]=(C*l*r-a*d*r-C*s*c+i*d*c+a*s*h-i*l*h)*R,e[4]=f*R,e[5]=(u*y*r-m*d*r+m*s*h-t*y*h-u*s*A+t*d*A)*R,e[6]=(m*l*r-o*y*r-m*s*c+t*y*c+o*s*A-t*l*A)*R,e[7]=(o*d*r-u*l*r+u*s*c-t*d*c-o*s*h+t*l*h)*R,e[8]=B*R,e[9]=(m*C*r-u*v*r-m*i*h+t*v*h+u*i*A-t*C*A)*R,e[10]=(o*v*r-m*a*r+m*i*c-t*v*c-o*i*A+t*a*A)*R,e[11]=(u*a*r-o*C*r-u*i*c+t*C*c+o*i*h-t*a*h)*R,e[12]=S*R,e[13]=(u*v*s-m*C*s+m*i*d-t*v*d-u*i*y+t*C*y)*R,e[14]=(m*a*s-o*v*s-m*i*l+t*v*l+o*i*y-t*a*y)*R,e[15]=(o*C*s-u*a*s+u*i*l-t*C*l-o*i*d+t*a*d)*R,this}scale(e){const t=this.elements,i=e.x,s=e.y,r=e.z;return t[0]*=i,t[4]*=s,t[8]*=r,t[1]*=i,t[5]*=s,t[9]*=r,t[2]*=i,t[6]*=s,t[10]*=r,t[3]*=i,t[7]*=s,t[11]*=r,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],i=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],s=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,i,s))}makeTranslation(e,t,i){return this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),i=Math.sin(e);return this.set(1,0,0,0,0,t,-i,0,0,i,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,0,i,0,0,1,0,0,-i,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,0,i,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const i=Math.cos(t),s=Math.sin(t),r=1-i,o=e.x,a=e.y,l=e.z,c=r*o,u=r*a;return this.set(c*o+i,c*a-s*l,c*l+s*a,0,c*a+s*l,u*a+i,u*l-s*o,0,c*l-s*a,u*l+s*o,r*l*l+i,0,0,0,0,1),this}makeScale(e,t,i){return this.set(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1),this}makeShear(e,t,i,s,r,o){return this.set(1,i,r,0,e,1,o,0,t,s,1,0,0,0,0,1),this}compose(e,t,i){const s=this.elements,r=t._x,o=t._y,a=t._z,l=t._w,c=r+r,u=o+o,C=a+a,d=r*c,h=r*u,m=r*C,v=o*u,y=o*C,A=a*C,b=l*c,f=l*u,B=l*C,S=i.x,x=i.y,R=i.z;return s[0]=(1-(v+A))*S,s[1]=(h+B)*S,s[2]=(m-f)*S,s[3]=0,s[4]=(h-B)*x,s[5]=(1-(d+A))*x,s[6]=(y+b)*x,s[7]=0,s[8]=(m+f)*R,s[9]=(y-b)*R,s[10]=(1-(d+v))*R,s[11]=0,s[12]=e.x,s[13]=e.y,s[14]=e.z,s[15]=1,this}decompose(e,t,i){const s=this.elements;let r=_l.set(s[0],s[1],s[2]).length();const o=_l.set(s[4],s[5],s[6]).length(),a=_l.set(s[8],s[9],s[10]).length();this.determinant()<0&&(r=-r),e.x=s[12],e.y=s[13],e.z=s[14],Qs.copy(this);const c=1/r,u=1/o,C=1/a;return Qs.elements[0]*=c,Qs.elements[1]*=c,Qs.elements[2]*=c,Qs.elements[4]*=u,Qs.elements[5]*=u,Qs.elements[6]*=u,Qs.elements[8]*=C,Qs.elements[9]*=C,Qs.elements[10]*=C,t.setFromRotationMatrix(Qs),i.x=r,i.y=o,i.z=a,this}makePerspective(e,t,i,s,r,o){const a=this.elements,l=2*r/(t-e),c=2*r/(i-s),u=(t+e)/(t-e),C=(i+s)/(i-s),d=-(o+r)/(o-r),h=-2*o*r/(o-r);return a[0]=l,a[4]=0,a[8]=u,a[12]=0,a[1]=0,a[5]=c,a[9]=C,a[13]=0,a[2]=0,a[6]=0,a[10]=d,a[14]=h,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makeOrthographic(e,t,i,s,r,o){const a=this.elements,l=1/(t-e),c=1/(i-s),u=1/(o-r),C=(t+e)*l,d=(i+s)*c,h=(o+r)*u;return a[0]=2*l,a[4]=0,a[8]=0,a[12]=-C,a[1]=0,a[5]=2*c,a[9]=0,a[13]=-d,a[2]=0,a[6]=0,a[10]=-2*u,a[14]=-h,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}equals(e){const t=this.elements,i=e.elements;for(let s=0;s<16;s++)if(t[s]!==i[s])return!1;return!0}fromArray(e,t=0){for(let i=0;i<16;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){const i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e[t+9]=i[9],e[t+10]=i[10],e[t+11]=i[11],e[t+12]=i[12],e[t+13]=i[13],e[t+14]=i[14],e[t+15]=i[15],e}}const _l=new H,Qs=new Fe,BH=new H(0,0,0),ZH=new H(1,1,1),Xo=new H,ud=new H,rs=new H,C2=new Fe,d2=new xn;class bl{constructor(e=0,t=0,i=0,s=bl.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=i,this._order=s}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,i,s=this._order){return this._x=e,this._y=t,this._z=i,this._order=s,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,i=!0){const s=e.elements,r=s[0],o=s[4],a=s[8],l=s[1],c=s[5],u=s[9],C=s[2],d=s[6],h=s[10];switch(t){case"XYZ":this._y=Math.asin(Gn(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-u,h),this._z=Math.atan2(-o,r)):(this._x=Math.atan2(d,c),this._z=0);break;case"YXZ":this._x=Math.asin(-Gn(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(a,h),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-C,r),this._z=0);break;case"ZXY":this._x=Math.asin(Gn(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(-C,h),this._z=Math.atan2(-o,c)):(this._y=0,this._z=Math.atan2(l,r));break;case"ZYX":this._y=Math.asin(-Gn(C,-1,1)),Math.abs(C)<.9999999?(this._x=Math.atan2(d,h),this._z=Math.atan2(l,r)):(this._x=0,this._z=Math.atan2(-o,c));break;case"YZX":this._z=Math.asin(Gn(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-u,c),this._y=Math.atan2(-C,r)):(this._x=0,this._y=Math.atan2(a,h));break;case"XZY":this._z=Math.asin(-Gn(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(d,c),this._y=Math.atan2(a,r)):(this._x=Math.atan2(-u,h),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,i===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,i){return C2.makeRotationFromQuaternion(e),this.setFromRotationMatrix(C2,t,i)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return d2.setFromEuler(this),this.setFromQuaternion(d2,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}bl.DEFAULT_ORDER="XYZ";class al{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let i=0;i0&&(i=i.concat(o))}return i}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Jc,e,SH),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Jc,xH,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(e){e(this);const t=this.children;for(let i=0,s=t.length;i0&&(s.userData=this.userData),s.layers=this.layers.mask,s.matrix=this.matrix.toArray(),s.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(s.matrixAutoUpdate=!1),this.isInstancedMesh&&(s.type="InstancedMesh",s.count=this.count,s.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(s.instanceColor=this.instanceColor.toJSON()));function r(a,l){return a[l.uuid]===void 0&&(a[l.uuid]=l.toJSON(e)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?s.background=this.background.toJSON():this.background.isTexture&&(s.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(s.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){s.geometry=r(e.geometries,this.geometry);const a=this.geometry.parameters;if(a!==void 0&&a.shapes!==void 0){const l=a.shapes;if(Array.isArray(l))for(let c=0,u=l.length;c0){s.children=[];for(let a=0;a0){s.animations=[];for(let a=0;a0&&(i.geometries=a),l.length>0&&(i.materials=l),c.length>0&&(i.textures=c),u.length>0&&(i.images=u),C.length>0&&(i.shapes=C),d.length>0&&(i.skeletons=d),h.length>0&&(i.animations=h),m.length>0&&(i.nodes=m)}return i.object=s,i;function o(a){const l=[];for(const c in a){const u=a[c];delete u.metadata,l.push(u)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations,this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let i=0;i0?s.multiplyScalar(1/Math.sqrt(r)):s.set(0,0,0)}static getBarycoord(e,t,i,s,r){js.subVectors(s,t),Qr.subVectors(i,t),Tm.subVectors(e,t);const o=js.dot(js),a=js.dot(Qr),l=js.dot(Tm),c=Qr.dot(Qr),u=Qr.dot(Tm),C=o*c-a*a;if(C===0)return r.set(-2,-1,-1);const d=1/C,h=(c*l-a*u)*d,m=(o*u-a*l)*d;return r.set(1-h-m,m,h)}static containsPoint(e,t,i,s){return this.getBarycoord(e,t,i,s,jr),jr.x>=0&&jr.y>=0&&jr.x+jr.y<=1}static getUV(e,t,i,s,r,o,a,l){return dd===!1&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),dd=!0),this.getInterpolation(e,t,i,s,r,o,a,l)}static getInterpolation(e,t,i,s,r,o,a,l){return this.getBarycoord(e,t,i,s,jr),l.setScalar(0),l.addScaledVector(r,jr.x),l.addScaledVector(o,jr.y),l.addScaledVector(a,jr.z),l}static isFrontFacing(e,t,i,s){return js.subVectors(i,t),Qr.subVectors(e,t),js.cross(Qr).dot(s)<0}set(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this}setFromPointsAndIndices(e,t,i,s){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[s]),this}setFromAttributeAndIndices(e,t,i,s){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,i),this.c.fromBufferAttribute(e,s),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return js.subVectors(this.c,this.b),Qr.subVectors(this.a,this.b),js.cross(Qr).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Ui.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return Ui.getBarycoord(e,this.a,this.b,this.c,t)}getUV(e,t,i,s,r){return dd===!1&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),dd=!0),Ui.getInterpolation(e,this.a,this.b,this.c,t,i,s,r)}getInterpolation(e,t,i,s,r){return Ui.getInterpolation(e,this.a,this.b,this.c,t,i,s,r)}containsPoint(e){return Ui.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Ui.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const i=this.a,s=this.b,r=this.c;let o,a;Ol.subVectors(s,i),Ql.subVectors(r,i),Em.subVectors(e,i);const l=Ol.dot(Em),c=Ql.dot(Em);if(l<=0&&c<=0)return t.copy(i);km.subVectors(e,s);const u=Ol.dot(km),C=Ql.dot(km);if(u>=0&&C<=u)return t.copy(s);const d=l*C-u*c;if(d<=0&&l>=0&&u<=0)return o=l/(l-u),t.copy(i).addScaledVector(Ol,o);Dm.subVectors(e,r);const h=Ol.dot(Dm),m=Ql.dot(Dm);if(m>=0&&h<=m)return t.copy(r);const v=h*c-l*m;if(v<=0&&c>=0&&m<=0)return a=c/(c-m),t.copy(i).addScaledVector(Ql,a);const y=u*m-h*C;if(y<=0&&C-u>=0&&h-m>=0)return b2.subVectors(r,s),a=(C-u)/(C-u+(h-m)),t.copy(s).addScaledVector(b2,a);const A=1/(y+v+d);return o=v*A,a=d*A,t.copy(i).addScaledVector(Ol,o).addScaledVector(Ql,a)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}let WH=0;class _n extends zs{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:WH++}),this.uuid=Cs(),this.name="",this.type="Material",this.blending=sl,this.side=Hr,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=mv,this.blendDst=fv,this.blendEquation=Ea,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=su,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=h1,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=xh,this.stencilZFail=xh,this.stencilZPass=xh,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const i=e[t];if(i===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}const s=this[t];if(s===void 0){console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`);continue}s&&s.isColor?s.set(i):s&&s.isVector3&&i&&i.isVector3?s.copy(i):this[t]=i}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const i={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),this.roughness!==void 0&&(i.roughness=this.roughness),this.metalness!==void 0&&(i.metalness=this.metalness),this.sheen!==void 0&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity&&this.emissiveIntensity!==1&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(i.shininess=this.shininess),this.clearcoat!==void 0&&(i.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.iridescence!==void 0&&(i.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(i.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(e).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(e).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(e).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(e).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(e).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(i.combine=this.combine)),this.envMapIntensity!==void 0&&(i.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(i.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(i.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(i.size=this.size),this.shadowSide!==null&&(i.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==sl&&(i.blending=this.blending),this.side!==Hr&&(i.side=this.side),this.vertexColors&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),this.transparent===!0&&(i.transparent=this.transparent),i.depthFunc=this.depthFunc,i.depthTest=this.depthTest,i.depthWrite=this.depthWrite,i.colorWrite=this.colorWrite,i.stencilWrite=this.stencilWrite,i.stencilWriteMask=this.stencilWriteMask,i.stencilFunc=this.stencilFunc,i.stencilRef=this.stencilRef,i.stencilFuncMask=this.stencilFuncMask,i.stencilFail=this.stencilFail,i.stencilZFail=this.stencilZFail,i.stencilZPass=this.stencilZPass,this.rotation!==void 0&&this.rotation!==0&&(i.rotation=this.rotation),this.polygonOffset===!0&&(i.polygonOffset=!0),this.polygonOffsetFactor!==0&&(i.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(i.linewidth=this.linewidth),this.dashSize!==void 0&&(i.dashSize=this.dashSize),this.gapSize!==void 0&&(i.gapSize=this.gapSize),this.scale!==void 0&&(i.scale=this.scale),this.dithering===!0&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),this.alphaToCoverage===!0&&(i.alphaToCoverage=this.alphaToCoverage),this.premultipliedAlpha===!0&&(i.premultipliedAlpha=this.premultipliedAlpha),this.forceSinglePass===!0&&(i.forceSinglePass=this.forceSinglePass),this.wireframe===!0&&(i.wireframe=this.wireframe),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(i.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(i.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(i.flatShading=this.flatShading),this.visible===!1&&(i.visible=!1),this.toneMapped===!1&&(i.toneMapped=!1),this.fog===!1&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData);function s(r){const o=[];for(const a in r){const l=r[a];delete l.metadata,o.push(l)}return o}if(t){const r=s(e.textures),o=s(e.images);r.length>0&&(i.textures=r),o.length>0&&(i.images=o)}return i}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let i=null;if(t!==null){const s=t.length;i=new Array(s);for(let r=0;r!==s;++r)i[r]=t[r].clone()}return this.clippingPlanes=i,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}}const y1={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},qs={h:0,s:0,l:0},hd={h:0,s:0,l:0};function Um(n,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?n+(e-n)*6*t:t<1/2?e:t<2/3?n+(e-n)*6*(2/3-t):n}class Re{constructor(e,t,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,t===void 0&&i===void 0?this.set(e):this.setRGB(e,t,i)}set(e){return e&&e.isColor?this.copy(e):typeof e=="number"?this.setHex(e):typeof e=="string"&&this.setStyle(e),this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=mt){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Ws.toWorkingColorSpace(this,t),this}setRGB(e,t,i,s=Ws.workingColorSpace){return this.r=e,this.g=t,this.b=i,Ws.toWorkingColorSpace(this,s),this}setHSL(e,t,i,s=Ws.workingColorSpace){if(e=Vv(e,1),t=Gn(t,0,1),i=Gn(i,0,1),t===0)this.r=this.g=this.b=i;else{const r=i<=.5?i*(1+t):i+t-i*t,o=2*i-r;this.r=Um(o,r,e+1/3),this.g=Um(o,r,e),this.b=Um(o,r,e-1/3)}return Ws.toWorkingColorSpace(this,s),this}setStyle(e,t=mt){function i(r){r!==void 0&&parseFloat(r)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let s;if(s=/^(\w+)\(([^\)]*)\)/.exec(e)){let r;const o=s[1],a=s[2];switch(o){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return i(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,t);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return i(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,t);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return i(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(s=/^\#([A-Fa-f\d]+)$/.exec(e)){const r=s[1],o=r.length;if(o===3)return this.setRGB(parseInt(r.charAt(0),16)/15,parseInt(r.charAt(1),16)/15,parseInt(r.charAt(2),16)/15,t);if(o===6)return this.setHex(parseInt(r,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=mt){const i=y1[e.toLowerCase()];return i!==void 0?this.setHex(i,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Lg(e.r),this.g=Lg(e.g),this.b=Lg(e.b),this}copyLinearToSRGB(e){return this.r=Nm(e.r),this.g=Nm(e.g),this.b=Nm(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=mt){return Ws.fromWorkingColorSpace(pi.copy(this),e),Math.round(Gn(pi.r*255,0,255))*65536+Math.round(Gn(pi.g*255,0,255))*256+Math.round(Gn(pi.b*255,0,255))}getHexString(e=mt){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Ws.workingColorSpace){Ws.fromWorkingColorSpace(pi.copy(this),t);const i=pi.r,s=pi.g,r=pi.b,o=Math.max(i,s,r),a=Math.min(i,s,r);let l,c;const u=(a+o)/2;if(a===o)l=0,c=0;else{const C=o-a;switch(c=u<=.5?C/(o+a):C/(2-o-a),o){case i:l=(s-r)/C+(s>-c-14,i[l|256]=1024>>-c-14|32768,s[l]=-c-1,s[l|256]=-c-1):c<=15?(i[l]=c+15<<10,i[l|256]=c+15<<10|32768,s[l]=13,s[l|256]=13):c<128?(i[l]=31744,i[l|256]=64512,s[l]=24,s[l|256]=24):(i[l]=31744,i[l|256]=64512,s[l]=13,s[l|256]=13)}const r=new Uint32Array(2048),o=new Uint32Array(64),a=new Uint32Array(64);for(let l=1;l<1024;++l){let c=l<<13,u=0;for(;!(c&8388608);)c<<=1,u-=8388608;c&=-8388609,u+=947912704,r[l]=c|u}for(let l=1024;l<2048;++l)r[l]=939524096+(l-1024<<13);for(let l=1;l<31;++l)o[l]=l<<23;o[31]=1199570944,o[32]=2147483648;for(let l=33;l<63;++l)o[l]=2147483648+(l-32<<23);o[63]=3347054592;for(let l=1;l<64;++l)l!==32&&(a[l]=1024);return{floatView:e,uint32View:t,baseTable:i,shiftTable:s,mantissaTable:r,exponentTable:o,offsetTable:a}}function Ti(n){Math.abs(n)>65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),n=Gn(n,-65504,65504),no.floatView[0]=n;const e=no.uint32View[0],t=e>>23&511;return no.baseTable[t]+((e&8388607)>>no.shiftTable[t])}function mI(n){const e=n>>10;return no.uint32View[0]=no.mantissaTable[no.offsetTable[e]+(n&1023)]+no.exponentTable[e],no.floatView[0]}const MH={toHalfFloat:Ti,fromHalfFloat:mI},Hn=new H,Ad=new ne;class kt{constructor(e,t,i=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=i,this.usage=uu,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this}copyAt(e,t,i){e*=this.itemSize,i*=t.itemSize;for(let s=0,r=this.itemSize;s0&&(e.userData=this.userData),this.parameters!==void 0){const l=this.parameters;for(const c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const i=this.attributes;for(const l in i){const c=i[l];e.data.attributes[l]=c.toJSON(e.data)}const s={};let r=!1;for(const l in this.morphAttributes){const c=this.morphAttributes[l],u=[];for(let C=0,d=c.length;C0&&(s[l]=u,r=!0)}r&&(e.data.morphAttributes=s,e.data.morphTargetsRelative=this.morphTargetsRelative);const o=this.groups;o.length>0&&(e.data.groups=JSON.parse(JSON.stringify(o)));const a=this.boundingSphere;return a!==null&&(e.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const i=e.index;i!==null&&this.setIndex(i.clone(t));const s=e.attributes;for(const c in s){const u=s[c];this.setAttribute(c,u.clone(t))}const r=e.morphAttributes;for(const c in r){const u=[],C=r[c];for(let d=0,h=C.length;d0){const s=t[i[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,o=s.length;r(e.far-e.near)**2))&&(v2.copy(r).invert(),Gr.copy(e.ray).applyMatrix4(v2),!(i.boundingBox!==null&&Gr.intersectsBox(i.boundingBox)===!1)&&this._computeIntersections(e,t)))}_computeIntersections(e,t){let i;const s=this.geometry,r=this.material,o=s.index,a=s.attributes.position,l=s.attributes.uv,c=s.attributes.uv1,u=s.attributes.normal,C=s.groups,d=s.drawRange;if(o!==null)if(Array.isArray(r))for(let h=0,m=C.length;ht.far?null:{distance:c,point:Gd.clone(),object:n}}function Bd(n,e,t,i,s,r,o,a,l,c){n.getVertexPosition(a,ql),n.getVertexPosition(l,$l),n.getVertexPosition(c,eg);const u=TH(n,e,t,i,ql,$l,eg,yd);if(u){s&&(fd.fromBufferAttribute(s,a),bd.fromBufferAttribute(s,l),vd.fromBufferAttribute(s,c),u.uv=Ui.getInterpolation(yd,ql,$l,eg,fd,bd,vd,new ne)),r&&(fd.fromBufferAttribute(r,a),bd.fromBufferAttribute(r,l),vd.fromBufferAttribute(r,c),u.uv1=Ui.getInterpolation(yd,ql,$l,eg,fd,bd,vd,new ne),u.uv2=u.uv1),o&&(G2.fromBufferAttribute(o,a),B2.fromBufferAttribute(o,l),Z2.fromBufferAttribute(o,c),u.normal=Ui.getInterpolation(yd,ql,$l,eg,G2,B2,Z2,new H),u.normal.dot(i.direction)>0&&u.normal.multiplyScalar(-1));const C={a,b:l,c,normal:new H,materialIndex:0};Ui.getNormal(ql,$l,eg,C.normal),u.face=C}return u}class Aa extends ft{constructor(e=1,t=1,i=1,s=1,r=1,o=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:i,widthSegments:s,heightSegments:r,depthSegments:o};const a=this;s=Math.floor(s),r=Math.floor(r),o=Math.floor(o);const l=[],c=[],u=[],C=[];let d=0,h=0;m("z","y","x",-1,-1,i,t,e,o,r,0),m("z","y","x",1,-1,i,t,-e,o,r,1),m("x","z","y",1,1,e,i,t,s,o,2),m("x","z","y",1,-1,e,i,-t,s,o,3),m("x","y","z",1,-1,e,t,i,s,r,4),m("x","y","z",-1,-1,e,t,-i,s,r,5),this.setIndex(l),this.setAttribute("position",new ke(c,3)),this.setAttribute("normal",new ke(u,3)),this.setAttribute("uv",new ke(C,2));function m(v,y,A,b,f,B,S,x,R,M,Z){const V=B/R,N=S/M,D=B/2,k=S/2,$=x/2,te=R+1,Ce=M+1;let le=0,L=0;const J=new H;for(let P=0;P0?1:-1,u.push(J.x,J.y,J.z),C.push(se/R),C.push(1-P/M),le+=1}}for(let P=0;P>8&255]+pi[n>>16&255]+pi[n>>24&255]+"-"+pi[e&255]+pi[e>>8&255]+"-"+pi[e>>16&15|64]+pi[e>>24&255]+"-"+pi[t&63|128]+pi[t>>8&255]+"-"+pi[t>>16&255]+pi[t>>24&255]+pi[i&255]+pi[i>>8&255]+pi[i>>16&255]+pi[i>>24&255]).toLowerCase()}function Gn(n,e,t){return Math.max(e,Math.min(t,n))}function Xv(n,e){return(n%e+e)%e}function gH(n,e,t,i,s){return i+(n-e)*(s-i)/(t-e)}function cH(n,e,t){return n!==e?(t-n)/(e-n):0}function YI(n,e,t){return(1-t)*n+t*e}function IH(n,e,t,i){return YI(n,e,1-Math.exp(-t*i))}function uH(n,e=1){return e-Math.abs(Xv(n,e*2)-e)}function CH(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*(3-2*n))}function dH(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*n*(n*(n*6-15)+10))}function hH(n,e){return n+Math.floor(Math.random()*(e-n+1))}function AH(n,e){return n+Math.random()*(e-n)}function pH(n){return n*(.5-Math.random())}function mH(n){n!==void 0&&(A2=n);let e=A2+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function fH(n){return n*ol}function bH(n){return n*tc}function ib(n){return(n&n-1)===0&&n!==0}function B1(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.LN2))}function Z1(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}function vH(n,e,t,i,s){const r=Math.cos,o=Math.sin,a=r(t/2),l=o(t/2),c=r((e+i)/2),u=o((e+i)/2),C=r((e-i)/2),d=o((e-i)/2),h=r((i-e)/2),m=o((i-e)/2);switch(s){case"XYX":n.set(a*u,l*C,l*d,a*c);break;case"YZY":n.set(l*d,a*u,l*C,a*c);break;case"ZXZ":n.set(l*C,l*d,a*u,a*c);break;case"XZX":n.set(a*u,l*m,l*h,a*c);break;case"YXY":n.set(l*h,a*u,l*m,a*c);break;case"ZYZ":n.set(l*m,l*h,a*u,a*c);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+s)}}function Is(n,e){switch(e.constructor){case Float32Array:return n;case Uint16Array:return n/65535;case Uint8Array:return n/255;case Int16Array:return Math.max(n/32767,-1);case Int8Array:return Math.max(n/127,-1);default:throw new Error("Invalid component type.")}}function vt(n,e){switch(e.constructor){case Float32Array:return n;case Uint16Array:return Math.round(n*65535);case Uint8Array:return Math.round(n*255);case Int16Array:return Math.round(n*32767);case Int8Array:return Math.round(n*127);default:throw new Error("Invalid component type.")}}const w1={DEG2RAD:ol,RAD2DEG:tc,generateUUID:ds,clamp:Gn,euclideanModulo:Xv,mapLinear:gH,inverseLerp:cH,lerp:YI,damp:IH,pingpong:uH,smoothstep:CH,smootherstep:dH,randInt:hH,randFloat:AH,randFloatSpread:pH,seededRandom:mH,degToRad:fH,radToDeg:bH,isPowerOfTwo:ib,ceilPowerOfTwo:B1,floorPowerOfTwo:Z1,setQuaternionFromProperEuler:vH,normalize:vt,denormalize:Is};class ne{constructor(e=0,t=0){ne.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,i=this.y,s=e.elements;return this.x=s[0]*t+s[3]*i+s[6],this.y=s[1]*t+s[4]*i+s[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const i=this.dot(e)/t;return Math.acos(Gn(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y;return t*t+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const i=Math.cos(t),s=Math.sin(t),r=this.x-e.x,o=this.y-e.y;return this.x=r*i-o*s+e.x,this.y=r*s+o*i+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class xt{constructor(){xt.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1]}set(e,t,i,s,r,o,a,l,c){const u=this.elements;return u[0]=e,u[1]=s,u[2]=a,u[3]=t,u[4]=r,u[5]=l,u[6]=i,u[7]=o,u[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],this}extractBasis(e,t,i){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,s=t.elements,r=this.elements,o=i[0],a=i[3],l=i[6],c=i[1],u=i[4],C=i[7],d=i[2],h=i[5],m=i[8],v=s[0],y=s[3],A=s[6],b=s[1],f=s[4],B=s[7],S=s[2],x=s[5],R=s[8];return r[0]=o*v+a*b+l*S,r[3]=o*y+a*f+l*x,r[6]=o*A+a*B+l*R,r[1]=c*v+u*b+C*S,r[4]=c*y+u*f+C*x,r[7]=c*A+u*B+C*R,r[2]=d*v+h*b+m*S,r[5]=d*y+h*f+m*x,r[8]=d*A+h*B+m*R,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],i=e[1],s=e[2],r=e[3],o=e[4],a=e[5],l=e[6],c=e[7],u=e[8];return t*o*u-t*a*c-i*r*u+i*a*l+s*r*c-s*o*l}invert(){const e=this.elements,t=e[0],i=e[1],s=e[2],r=e[3],o=e[4],a=e[5],l=e[6],c=e[7],u=e[8],C=u*o-a*c,d=a*l-u*r,h=c*r-o*l,m=t*C+i*d+s*h;if(m===0)return this.set(0,0,0,0,0,0,0,0,0);const v=1/m;return e[0]=C*v,e[1]=(s*c-u*i)*v,e[2]=(a*i-s*o)*v,e[3]=d*v,e[4]=(u*t-s*l)*v,e[5]=(s*r-a*t)*v,e[6]=h*v,e[7]=(i*l-c*t)*v,e[8]=(o*t-i*r)*v,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,i,s,r,o,a){const l=Math.cos(r),c=Math.sin(r);return this.set(i*l,i*c,-i*(l*o+c*a)+o+e,-s*c,s*l,-s*(-c*o+l*a)+a+t,0,0,1),this}scale(e,t){return this.premultiply(Ym.makeScale(e,t)),this}rotate(e){return this.premultiply(Ym.makeRotation(-e)),this}translate(e,t){return this.premultiply(Ym.makeTranslation(e,t)),this}makeTranslation(e,t){return this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,i,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,i=e.elements;for(let s=0;s<9;s++)if(t[s]!==i[s])return!1;return!0}fromArray(e,t=0){for(let i=0;i<9;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){const i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const Ym=new xt;function S1(n){for(let e=n.length-1;e>=0;--e)if(n[e]>=65535)return!0;return!1}const yH={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function Wg(n,e){return new yH[n](e)}function Au(n){return document.createElementNS("http://www.w3.org/1999/xhtml",n)}const p2={};function FI(n){n in p2||(p2[n]=!0,console.warn(n))}function kg(n){return n<.04045?n*.0773993808:Math.pow(n*.9478672986+.0521327014,2.4)}function Fm(n){return n<.0031308?n*12.92:1.055*Math.pow(n,.41666)-.055}const GH=new xt().fromArray([.8224621,.0331941,.0170827,.177538,.9668058,.0723974,-1e-7,1e-7,.9105199]),BH=new xt().fromArray([1.2249401,-.0420569,-.0196376,-.2249404,1.0420571,-.0786361,1e-7,0,1.0982735]);function ZH(n){return n.convertSRGBToLinear().applyMatrix3(BH)}function wH(n){return n.applyMatrix3(GH).convertLinearToSRGB()}const SH={[ur]:n=>n,[mt]:n=>n.convertSRGBToLinear(),[Hv]:ZH},xH={[ur]:n=>n,[mt]:n=>n.convertLinearToSRGB(),[Hv]:wH},Vs={enabled:!0,get legacyMode(){return console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),!this.enabled},set legacyMode(n){console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),this.enabled=!n},get workingColorSpace(){return ur},set workingColorSpace(n){console.warn("THREE.ColorManagement: .workingColorSpace is readonly.")},convert:function(n,e,t){if(this.enabled===!1||e===t||!e||!t)return n;const i=SH[e],s=xH[t];if(i===void 0||s===void 0)throw new Error(`Unsupported color space conversion, "${e}" to "${t}".`);return s(i(n))},fromWorkingColorSpace:function(n,e){return this.convert(n,this.workingColorSpace,e)},toWorkingColorSpace:function(n,e){return this.convert(n,e,this.workingColorSpace)}};let Ul;class Yv{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{Ul===void 0&&(Ul=Au("canvas")),Ul.width=e.width,Ul.height=e.height;const i=Ul.getContext("2d");e instanceof ImageData?i.putImageData(e,0,0):i.drawImage(e,0,0,e.width,e.height),t=Ul}return t.width>2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const t=Au("canvas");t.width=e.width,t.height=e.height;const i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);const s=i.getImageData(0,0,e.width,e.height),r=s.data;for(let o=0;o0&&(i.userData=this.userData),t||(e.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==YA)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case As:e.x=e.x-Math.floor(e.x);break;case Ln:e.x=e.x<0?0:1;break;case Iu:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case As:e.y=e.y-Math.floor(e.y);break;case Ln:e.y=e.y<0?0:1;break;case Iu:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}get encoding(){return FI("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace===mt?Fs:Xu}set encoding(e){FI("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace=e===Fs?mt:co}}qt.DEFAULT_IMAGE=null;qt.DEFAULT_MAPPING=YA;qt.DEFAULT_ANISOTROPY=1;class Mt{constructor(e=0,t=0,i=0,s=1){Mt.prototype.isVector4=!0,this.x=e,this.y=t,this.z=i,this.w=s}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,i,s){return this.x=e,this.y=t,this.z=i,this.w=s,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,i=this.y,s=this.z,r=this.w,o=e.elements;return this.x=o[0]*t+o[4]*i+o[8]*s+o[12]*r,this.y=o[1]*t+o[5]*i+o[9]*s+o[13]*r,this.z=o[2]*t+o[6]*i+o[10]*s+o[14]*r,this.w=o[3]*t+o[7]*i+o[11]*s+o[15]*r,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,i,s,r;const l=e.elements,c=l[0],u=l[4],C=l[8],d=l[1],h=l[5],m=l[9],v=l[2],y=l[6],A=l[10];if(Math.abs(u-d)<.01&&Math.abs(C-v)<.01&&Math.abs(m-y)<.01){if(Math.abs(u+d)<.1&&Math.abs(C+v)<.1&&Math.abs(m+y)<.1&&Math.abs(c+h+A-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const f=(c+1)/2,B=(h+1)/2,S=(A+1)/2,x=(u+d)/4,R=(C+v)/4,M=(m+y)/4;return f>B&&f>S?f<.01?(i=0,s=.707106781,r=.707106781):(i=Math.sqrt(f),s=x/i,r=R/i):B>S?B<.01?(i=.707106781,s=0,r=.707106781):(s=Math.sqrt(B),i=x/s,r=M/s):S<.01?(i=.707106781,s=.707106781,r=0):(r=Math.sqrt(S),i=R/r,s=M/r),this.set(i,s,r,t),this}let b=Math.sqrt((y-m)*(y-m)+(C-v)*(C-v)+(d-u)*(d-u));return Math.abs(b)<.001&&(b=1),this.x=(y-m)/b,this.y=(C-v)/b,this.z=(d-u)/b,this.w=Math.acos((c+h+A-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this.w=e.w+(t.w-e.w)*i,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class Wt extends Ls{constructor(e=1,t=1,i={}){super(),this.isWebGLRenderTarget=!0,this.width=e,this.height=t,this.depth=1,this.scissor=new Mt(0,0,e,t),this.scissorTest=!1,this.viewport=new Mt(0,0,e,t);const s={width:e,height:t,depth:1};i.encoding!==void 0&&(FI("THREE.WebGLRenderTarget: option.encoding has been replaced by option.colorSpace."),i.colorSpace=i.encoding===Fs?mt:co),this.texture=new qt(s,i.mapping,i.wrapS,i.wrapT,i.magFilter,i.minFilter,i.format,i.type,i.anisotropy,i.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=i.generateMipmaps!==void 0?i.generateMipmaps:!1,this.texture.internalFormat=i.internalFormat!==void 0?i.internalFormat:null,this.texture.minFilter=i.minFilter!==void 0?i.minFilter:je,this.depthBuffer=i.depthBuffer!==void 0?i.depthBuffer:!0,this.stencilBuffer=i.stencilBuffer!==void 0?i.stencilBuffer:!1,this.depthTexture=i.depthTexture!==void 0?i.depthTexture:null,this.samples=i.samples!==void 0?i.samples:0}setSize(e,t,i=1){(this.width!==e||this.height!==t||this.depth!==i)&&(this.width=e,this.height=t,this.depth=i,this.texture.image.width=e,this.texture.image.height=t,this.texture.image.depth=i,this.dispose()),this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.texture=e.texture.clone(),this.texture.isRenderTargetTexture=!0;const t=Object.assign({},e.texture.image);return this.texture.source=new el(t),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,e.depthTexture!==null&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class zA extends qt{constructor(e=null,t=1,i=1,s=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:i,depth:s},this.magFilter=pt,this.minFilter=pt,this.wrapR=Ln,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class WH extends Wt{constructor(e=1,t=1,i=1){super(e,t),this.isWebGLArrayRenderTarget=!0,this.depth=i,this.texture=new zA(null,e,t,i),this.texture.isRenderTargetTexture=!0}}class al extends qt{constructor(e=null,t=1,i=1,s=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:i,depth:s},this.magFilter=pt,this.minFilter=pt,this.wrapR=Ln,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class VH extends Wt{constructor(e=1,t=1,i=1){super(e,t),this.isWebGL3DRenderTarget=!0,this.depth=i,this.texture=new al(null,e,t,i),this.texture.isRenderTargetTexture=!0}}class x1 extends Wt{constructor(e=1,t=1,i=1,s={}){super(e,t,s),this.isWebGLMultipleRenderTargets=!0;const r=this.texture;this.texture=[];for(let o=0;o=0?1:-1,f=1-A*A;if(f>Number.EPSILON){const S=Math.sqrt(f),x=Math.atan2(S,A*b);y=Math.sin(y*x)/S,a=Math.sin(a*x)/S}const B=a*b;if(l=l*y+d*B,c=c*y+h*B,u=u*y+m*B,C=C*y+v*B,y===1-a){const S=1/Math.sqrt(l*l+c*c+u*u+C*C);l*=S,c*=S,u*=S,C*=S}}e[t]=l,e[t+1]=c,e[t+2]=u,e[t+3]=C}static multiplyQuaternionsFlat(e,t,i,s,r,o){const a=i[s],l=i[s+1],c=i[s+2],u=i[s+3],C=r[o],d=r[o+1],h=r[o+2],m=r[o+3];return e[t]=a*m+u*C+l*h-c*d,e[t+1]=l*m+u*d+c*C-a*h,e[t+2]=c*m+u*h+a*d-l*C,e[t+3]=u*m-a*C-l*d-c*h,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,i,s){return this._x=e,this._y=t,this._z=i,this._w=s,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t){const i=e._x,s=e._y,r=e._z,o=e._order,a=Math.cos,l=Math.sin,c=a(i/2),u=a(s/2),C=a(r/2),d=l(i/2),h=l(s/2),m=l(r/2);switch(o){case"XYZ":this._x=d*u*C+c*h*m,this._y=c*h*C-d*u*m,this._z=c*u*m+d*h*C,this._w=c*u*C-d*h*m;break;case"YXZ":this._x=d*u*C+c*h*m,this._y=c*h*C-d*u*m,this._z=c*u*m-d*h*C,this._w=c*u*C+d*h*m;break;case"ZXY":this._x=d*u*C-c*h*m,this._y=c*h*C+d*u*m,this._z=c*u*m+d*h*C,this._w=c*u*C-d*h*m;break;case"ZYX":this._x=d*u*C-c*h*m,this._y=c*h*C+d*u*m,this._z=c*u*m-d*h*C,this._w=c*u*C+d*h*m;break;case"YZX":this._x=d*u*C+c*h*m,this._y=c*h*C+d*u*m,this._z=c*u*m-d*h*C,this._w=c*u*C-d*h*m;break;case"XZY":this._x=d*u*C-c*h*m,this._y=c*h*C-d*u*m,this._z=c*u*m+d*h*C,this._w=c*u*C+d*h*m;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+o)}return t!==!1&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const i=t/2,s=Math.sin(i);return this._x=e.x*s,this._y=e.y*s,this._z=e.z*s,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,i=t[0],s=t[4],r=t[8],o=t[1],a=t[5],l=t[9],c=t[2],u=t[6],C=t[10],d=i+a+C;if(d>0){const h=.5/Math.sqrt(d+1);this._w=.25/h,this._x=(u-l)*h,this._y=(r-c)*h,this._z=(o-s)*h}else if(i>a&&i>C){const h=2*Math.sqrt(1+i-a-C);this._w=(u-l)/h,this._x=.25*h,this._y=(s+o)/h,this._z=(r+c)/h}else if(a>C){const h=2*Math.sqrt(1+a-i-C);this._w=(r-c)/h,this._x=(s+o)/h,this._y=.25*h,this._z=(l+u)/h}else{const h=2*Math.sqrt(1+C-i-a);this._w=(o-s)/h,this._x=(r+c)/h,this._y=(l+u)/h,this._z=.25*h}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return iMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=i),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Gn(this.dot(e),-1,1)))}rotateTowards(e,t){const i=this.angleTo(e);if(i===0)return this;const s=Math.min(1,t/i);return this.slerp(e,s),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const i=e._x,s=e._y,r=e._z,o=e._w,a=t._x,l=t._y,c=t._z,u=t._w;return this._x=i*u+o*a+s*c-r*l,this._y=s*u+o*l+r*a-i*c,this._z=r*u+o*c+i*l-s*a,this._w=o*u-i*a-s*l-r*c,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const i=this._x,s=this._y,r=this._z,o=this._w;let a=o*e._w+i*e._x+s*e._y+r*e._z;if(a<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=o,this._x=i,this._y=s,this._z=r,this;const l=1-a*a;if(l<=Number.EPSILON){const h=1-t;return this._w=h*o+t*this._w,this._x=h*i+t*this._x,this._y=h*s+t*this._y,this._z=h*r+t*this._z,this.normalize(),this._onChangeCallback(),this}const c=Math.sqrt(l),u=Math.atan2(c,a),C=Math.sin((1-t)*u)/c,d=Math.sin(t*u)/c;return this._w=o*C+this._w*d,this._x=i*C+this._x*d,this._y=s*C+this._y*d,this._z=r*C+this._z*d,this._onChangeCallback(),this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){const e=Math.random(),t=Math.sqrt(1-e),i=Math.sqrt(e),s=2*Math.PI*Math.random(),r=2*Math.PI*Math.random();return this.set(t*Math.cos(s),i*Math.sin(r),i*Math.cos(r),t*Math.sin(s))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}};class H{constructor(e=0,t=0,i=0){H.prototype.isVector3=!0,this.x=e,this.y=t,this.z=i}set(e,t,i){return i===void 0&&(i=this.z),this.x=e,this.y=t,this.z=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(m2.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(m2.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,i=this.y,s=this.z,r=e.elements;return this.x=r[0]*t+r[3]*i+r[6]*s,this.y=r[1]*t+r[4]*i+r[7]*s,this.z=r[2]*t+r[5]*i+r[8]*s,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,i=this.y,s=this.z,r=e.elements,o=1/(r[3]*t+r[7]*i+r[11]*s+r[15]);return this.x=(r[0]*t+r[4]*i+r[8]*s+r[12])*o,this.y=(r[1]*t+r[5]*i+r[9]*s+r[13])*o,this.z=(r[2]*t+r[6]*i+r[10]*s+r[14])*o,this}applyQuaternion(e){const t=this.x,i=this.y,s=this.z,r=e.x,o=e.y,a=e.z,l=e.w,c=l*t+o*s-a*i,u=l*i+a*t-r*s,C=l*s+r*i-o*t,d=-r*t-o*i-a*s;return this.x=c*l+d*-r+u*-a-C*-o,this.y=u*l+d*-o+C*-r-c*-a,this.z=C*l+d*-a+c*-o-u*-r,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,i=this.y,s=this.z,r=e.elements;return this.x=r[0]*t+r[4]*i+r[8]*s,this.y=r[1]*t+r[5]*i+r[9]*s,this.z=r[2]*t+r[6]*i+r[10]*s,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const i=e.x,s=e.y,r=e.z,o=t.x,a=t.y,l=t.z;return this.x=s*l-r*a,this.y=r*o-i*l,this.z=i*a-s*o,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return zm.copy(this).projectOnVector(e),this.sub(zm)}reflect(e){return this.sub(zm.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const i=this.dot(e)/t;return Math.acos(Gn(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y,s=this.z-e.z;return t*t+i*i+s*s}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,i){const s=Math.sin(t)*e;return this.x=s*Math.sin(i),this.y=Math.cos(t)*e,this.z=s*Math.cos(i),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,i){return this.x=e*Math.sin(t),this.y=i,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),i=this.setFromMatrixColumn(e,1).length(),s=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=i,this.z=s,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=(Math.random()-.5)*2,t=Math.random()*Math.PI*2,i=Math.sqrt(1-e**2);return this.x=i*Math.cos(t),this.y=i*Math.sin(t),this.z=e,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const zm=new H,m2=new xn;class Yr{constructor(e=new H(1/0,1/0,1/0),t=new H(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,i=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)}intersectsSphere(e){return this.clampPoint(e.center,_r),_r.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,i;return e.normal.x>0?(t=e.normal.x*this.min.x,i=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,i=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,i+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,i+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,i+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,i+=e.normal.z*this.min.z),t<=-e.constant&&i>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(Oc),dd.subVectors(this.max,Oc),_l.subVectors(e.a,Oc),Jl.subVectors(e.b,Oc),Ol.subVectors(e.c,Oc),Mo.subVectors(Jl,_l),No.subVectors(Ol,Jl),Va.subVectors(_l,Ol);let t=[0,-Mo.z,Mo.y,0,-No.z,No.y,0,-Va.z,Va.y,Mo.z,0,-Mo.x,No.z,0,-No.x,Va.z,0,-Va.x,-Mo.y,Mo.x,0,-No.y,No.x,0,-Va.y,Va.x,0];return!Lm(t,_l,Jl,Ol,dd)||(t=[1,0,0,0,1,0,0,0,1],!Lm(t,_l,Jl,Ol,dd))?!1:(hd.crossVectors(Mo,No),t=[hd.x,hd.y,hd.z],Lm(t,_l,Jl,Ol,dd))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,_r).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(_r).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(Pr[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Pr[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Pr[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Pr[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Pr[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Pr[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Pr[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Pr[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Pr),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const Pr=[new H,new H,new H,new H,new H,new H,new H,new H],_r=new H,Pl=new Yr,_l=new H,Jl=new H,Ol=new H,Mo=new H,No=new H,Va=new H,Oc=new H,dd=new H,hd=new H,Ma=new H;function Lm(n,e,t,i,s){for(let r=0,o=n.length-3;r<=o;r+=3){Ma.fromArray(n,r);const a=s.x*Math.abs(Ma.x)+s.y*Math.abs(Ma.y)+s.z*Math.abs(Ma.z),l=e.dot(Ma),c=t.dot(Ma),u=i.dot(Ma);if(Math.max(-Math.max(l,c,u),Math.min(l,c,u))>a)return!1}return!0}const MH=new Yr,Qc=new H,Em=new H;class Fr{constructor(e=new H,t=-1){this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const i=this.center;t!==void 0?i.copy(t):MH.setFromPoints(e).getCenter(i);let s=0;for(let r=0,o=e.length;rthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;Qc.subVectors(e,this.center);const t=Qc.lengthSq();if(t>this.radius*this.radius){const i=Math.sqrt(t),s=(i-this.radius)*.5;this.center.addScaledVector(Qc,s/i),this.radius+=s}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(Em.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(Qc.copy(e.center).add(Em)),this.expandByPoint(Qc.copy(e.center).sub(Em))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}}const Jr=new H,Tm=new H,Ad=new H,Ho=new H,km=new H,pd=new H,Dm=new H;let Yu=class{constructor(e=new H,t=new H(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,Jr)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=Jr.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Jr.copy(this.origin).addScaledVector(this.direction,t),Jr.distanceToSquared(e))}distanceSqToSegment(e,t,i,s){Tm.copy(e).add(t).multiplyScalar(.5),Ad.copy(t).sub(e).normalize(),Ho.copy(this.origin).sub(Tm);const r=e.distanceTo(t)*.5,o=-this.direction.dot(Ad),a=Ho.dot(this.direction),l=-Ho.dot(Ad),c=Ho.lengthSq(),u=Math.abs(1-o*o);let C,d,h,m;if(u>0)if(C=o*l-a,d=o*a-l,m=r*u,C>=0)if(d>=-m)if(d<=m){const v=1/u;C*=v,d*=v,h=C*(C+o*d+2*a)+d*(o*C+d+2*l)+c}else d=r,C=Math.max(0,-(o*d+a)),h=-C*C+d*(d+2*l)+c;else d=-r,C=Math.max(0,-(o*d+a)),h=-C*C+d*(d+2*l)+c;else d<=-m?(C=Math.max(0,-(-o*r+a)),d=C>0?-r:Math.min(Math.max(-r,-l),r),h=-C*C+d*(d+2*l)+c):d<=m?(C=0,d=Math.min(Math.max(-r,-l),r),h=d*(d+2*l)+c):(C=Math.max(0,-(o*r+a)),d=C>0?r:Math.min(Math.max(-r,-l),r),h=-C*C+d*(d+2*l)+c);else d=o>0?-r:r,C=Math.max(0,-(o*d+a)),h=-C*C+d*(d+2*l)+c;return i&&i.copy(this.origin).addScaledVector(this.direction,C),s&&s.copy(Tm).addScaledVector(Ad,d),h}intersectSphere(e,t){Jr.subVectors(e.center,this.origin);const i=Jr.dot(this.direction),s=Jr.dot(Jr)-i*i,r=e.radius*e.radius;if(s>r)return null;const o=Math.sqrt(r-s),a=i-o,l=i+o;return l<0?null:a<0?this.at(l,t):this.at(a,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){const i=this.distanceToPlane(e);return i===null?null:this.at(i,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,s,r,o,a,l;const c=1/this.direction.x,u=1/this.direction.y,C=1/this.direction.z,d=this.origin;return c>=0?(i=(e.min.x-d.x)*c,s=(e.max.x-d.x)*c):(i=(e.max.x-d.x)*c,s=(e.min.x-d.x)*c),u>=0?(r=(e.min.y-d.y)*u,o=(e.max.y-d.y)*u):(r=(e.max.y-d.y)*u,o=(e.min.y-d.y)*u),i>o||r>s||((r>i||isNaN(i))&&(i=r),(o=0?(a=(e.min.z-d.z)*C,l=(e.max.z-d.z)*C):(a=(e.max.z-d.z)*C,l=(e.min.z-d.z)*C),i>l||a>s)||((a>i||i!==i)&&(i=a),(l=0?i:s,t)}intersectsBox(e){return this.intersectBox(e,Jr)!==null}intersectTriangle(e,t,i,s,r){km.subVectors(t,e),pd.subVectors(i,e),Dm.crossVectors(km,pd);let o=this.direction.dot(Dm),a;if(o>0){if(s)return null;a=1}else if(o<0)a=-1,o=-o;else return null;Ho.subVectors(this.origin,e);const l=a*this.direction.dot(pd.crossVectors(Ho,pd));if(l<0)return null;const c=a*this.direction.dot(km.cross(Ho));if(c<0||l+c>o)return null;const u=-a*Ho.dot(Dm);return u<0?null:this.at(u/o,r)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}};class Fe{constructor(){Fe.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}set(e,t,i,s,r,o,a,l,c,u,C,d,h,m,v,y){const A=this.elements;return A[0]=e,A[4]=t,A[8]=i,A[12]=s,A[1]=r,A[5]=o,A[9]=a,A[13]=l,A[2]=c,A[6]=u,A[10]=C,A[14]=d,A[3]=h,A[7]=m,A[11]=v,A[15]=y,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new Fe().fromArray(this.elements)}copy(e){const t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],this}copyPosition(e){const t=this.elements,i=e.elements;return t[12]=i[12],t[13]=i[13],t[14]=i[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,i){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(e,t,i){return this.set(e.x,t.x,i.x,0,e.y,t.y,i.y,0,e.z,t.z,i.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,i=e.elements,s=1/Ql.setFromMatrixColumn(e,0).length(),r=1/Ql.setFromMatrixColumn(e,1).length(),o=1/Ql.setFromMatrixColumn(e,2).length();return t[0]=i[0]*s,t[1]=i[1]*s,t[2]=i[2]*s,t[3]=0,t[4]=i[4]*r,t[5]=i[5]*r,t[6]=i[6]*r,t[7]=0,t[8]=i[8]*o,t[9]=i[9]*o,t[10]=i[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,i=e.x,s=e.y,r=e.z,o=Math.cos(i),a=Math.sin(i),l=Math.cos(s),c=Math.sin(s),u=Math.cos(r),C=Math.sin(r);if(e.order==="XYZ"){const d=o*u,h=o*C,m=a*u,v=a*C;t[0]=l*u,t[4]=-l*C,t[8]=c,t[1]=h+m*c,t[5]=d-v*c,t[9]=-a*l,t[2]=v-d*c,t[6]=m+h*c,t[10]=o*l}else if(e.order==="YXZ"){const d=l*u,h=l*C,m=c*u,v=c*C;t[0]=d+v*a,t[4]=m*a-h,t[8]=o*c,t[1]=o*C,t[5]=o*u,t[9]=-a,t[2]=h*a-m,t[6]=v+d*a,t[10]=o*l}else if(e.order==="ZXY"){const d=l*u,h=l*C,m=c*u,v=c*C;t[0]=d-v*a,t[4]=-o*C,t[8]=m+h*a,t[1]=h+m*a,t[5]=o*u,t[9]=v-d*a,t[2]=-o*c,t[6]=a,t[10]=o*l}else if(e.order==="ZYX"){const d=o*u,h=o*C,m=a*u,v=a*C;t[0]=l*u,t[4]=m*c-h,t[8]=d*c+v,t[1]=l*C,t[5]=v*c+d,t[9]=h*c-m,t[2]=-c,t[6]=a*l,t[10]=o*l}else if(e.order==="YZX"){const d=o*l,h=o*c,m=a*l,v=a*c;t[0]=l*u,t[4]=v-d*C,t[8]=m*C+h,t[1]=C,t[5]=o*u,t[9]=-a*u,t[2]=-c*u,t[6]=h*C+m,t[10]=d-v*C}else if(e.order==="XZY"){const d=o*l,h=o*c,m=a*l,v=a*c;t[0]=l*u,t[4]=-C,t[8]=c*u,t[1]=d*C+v,t[5]=o*u,t[9]=h*C-m,t[2]=m*C-h,t[6]=a*u,t[10]=v*C+d}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(NH,e,HH)}lookAt(e,t,i){const s=this.elements;return os.subVectors(e,t),os.lengthSq()===0&&(os.z=1),os.normalize(),Xo.crossVectors(i,os),Xo.lengthSq()===0&&(Math.abs(i.z)===1?os.x+=1e-4:os.z+=1e-4,os.normalize(),Xo.crossVectors(i,os)),Xo.normalize(),md.crossVectors(os,Xo),s[0]=Xo.x,s[4]=md.x,s[8]=os.x,s[1]=Xo.y,s[5]=md.y,s[9]=os.y,s[2]=Xo.z,s[6]=md.z,s[10]=os.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,s=t.elements,r=this.elements,o=i[0],a=i[4],l=i[8],c=i[12],u=i[1],C=i[5],d=i[9],h=i[13],m=i[2],v=i[6],y=i[10],A=i[14],b=i[3],f=i[7],B=i[11],S=i[15],x=s[0],R=s[4],M=s[8],Z=s[12],V=s[1],N=s[5],U=s[9],D=s[13],$=s[2],te=s[6],Ce=s[10],le=s[14],L=s[3],J=s[7],P=s[11],ce=s[15];return r[0]=o*x+a*V+l*$+c*L,r[4]=o*R+a*N+l*te+c*J,r[8]=o*M+a*U+l*Ce+c*P,r[12]=o*Z+a*D+l*le+c*ce,r[1]=u*x+C*V+d*$+h*L,r[5]=u*R+C*N+d*te+h*J,r[9]=u*M+C*U+d*Ce+h*P,r[13]=u*Z+C*D+d*le+h*ce,r[2]=m*x+v*V+y*$+A*L,r[6]=m*R+v*N+y*te+A*J,r[10]=m*M+v*U+y*Ce+A*P,r[14]=m*Z+v*D+y*le+A*ce,r[3]=b*x+f*V+B*$+S*L,r[7]=b*R+f*N+B*te+S*J,r[11]=b*M+f*U+B*Ce+S*P,r[15]=b*Z+f*D+B*le+S*ce,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],i=e[4],s=e[8],r=e[12],o=e[1],a=e[5],l=e[9],c=e[13],u=e[2],C=e[6],d=e[10],h=e[14],m=e[3],v=e[7],y=e[11],A=e[15];return m*(+r*l*C-s*c*C-r*a*d+i*c*d+s*a*h-i*l*h)+v*(+t*l*h-t*c*d+r*o*d-s*o*h+s*c*u-r*l*u)+y*(+t*c*C-t*a*h-r*o*C+i*o*h+r*a*u-i*c*u)+A*(-s*a*u-t*l*C+t*a*d+s*o*C-i*o*d+i*l*u)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,i){const s=this.elements;return e.isVector3?(s[12]=e.x,s[13]=e.y,s[14]=e.z):(s[12]=e,s[13]=t,s[14]=i),this}invert(){const e=this.elements,t=e[0],i=e[1],s=e[2],r=e[3],o=e[4],a=e[5],l=e[6],c=e[7],u=e[8],C=e[9],d=e[10],h=e[11],m=e[12],v=e[13],y=e[14],A=e[15],b=C*y*c-v*d*c+v*l*h-a*y*h-C*l*A+a*d*A,f=m*d*c-u*y*c-m*l*h+o*y*h+u*l*A-o*d*A,B=u*v*c-m*C*c+m*a*h-o*v*h-u*a*A+o*C*A,S=m*C*l-u*v*l-m*a*d+o*v*d+u*a*y-o*C*y,x=t*b+i*f+s*B+r*S;if(x===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const R=1/x;return e[0]=b*R,e[1]=(v*d*r-C*y*r-v*s*h+i*y*h+C*s*A-i*d*A)*R,e[2]=(a*y*r-v*l*r+v*s*c-i*y*c-a*s*A+i*l*A)*R,e[3]=(C*l*r-a*d*r-C*s*c+i*d*c+a*s*h-i*l*h)*R,e[4]=f*R,e[5]=(u*y*r-m*d*r+m*s*h-t*y*h-u*s*A+t*d*A)*R,e[6]=(m*l*r-o*y*r-m*s*c+t*y*c+o*s*A-t*l*A)*R,e[7]=(o*d*r-u*l*r+u*s*c-t*d*c-o*s*h+t*l*h)*R,e[8]=B*R,e[9]=(m*C*r-u*v*r-m*i*h+t*v*h+u*i*A-t*C*A)*R,e[10]=(o*v*r-m*a*r+m*i*c-t*v*c-o*i*A+t*a*A)*R,e[11]=(u*a*r-o*C*r-u*i*c+t*C*c+o*i*h-t*a*h)*R,e[12]=S*R,e[13]=(u*v*s-m*C*s+m*i*d-t*v*d-u*i*y+t*C*y)*R,e[14]=(m*a*s-o*v*s-m*i*l+t*v*l+o*i*y-t*a*y)*R,e[15]=(o*C*s-u*a*s+u*i*l-t*C*l-o*i*d+t*a*d)*R,this}scale(e){const t=this.elements,i=e.x,s=e.y,r=e.z;return t[0]*=i,t[4]*=s,t[8]*=r,t[1]*=i,t[5]*=s,t[9]*=r,t[2]*=i,t[6]*=s,t[10]*=r,t[3]*=i,t[7]*=s,t[11]*=r,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],i=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],s=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,i,s))}makeTranslation(e,t,i){return this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),i=Math.sin(e);return this.set(1,0,0,0,0,t,-i,0,0,i,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,0,i,0,0,1,0,0,-i,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,0,i,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const i=Math.cos(t),s=Math.sin(t),r=1-i,o=e.x,a=e.y,l=e.z,c=r*o,u=r*a;return this.set(c*o+i,c*a-s*l,c*l+s*a,0,c*a+s*l,u*a+i,u*l-s*o,0,c*l-s*a,u*l+s*o,r*l*l+i,0,0,0,0,1),this}makeScale(e,t,i){return this.set(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1),this}makeShear(e,t,i,s,r,o){return this.set(1,i,r,0,e,1,o,0,t,s,1,0,0,0,0,1),this}compose(e,t,i){const s=this.elements,r=t._x,o=t._y,a=t._z,l=t._w,c=r+r,u=o+o,C=a+a,d=r*c,h=r*u,m=r*C,v=o*u,y=o*C,A=a*C,b=l*c,f=l*u,B=l*C,S=i.x,x=i.y,R=i.z;return s[0]=(1-(v+A))*S,s[1]=(h+B)*S,s[2]=(m-f)*S,s[3]=0,s[4]=(h-B)*x,s[5]=(1-(d+A))*x,s[6]=(y+b)*x,s[7]=0,s[8]=(m+f)*R,s[9]=(y-b)*R,s[10]=(1-(d+v))*R,s[11]=0,s[12]=e.x,s[13]=e.y,s[14]=e.z,s[15]=1,this}decompose(e,t,i){const s=this.elements;let r=Ql.set(s[0],s[1],s[2]).length();const o=Ql.set(s[4],s[5],s[6]).length(),a=Ql.set(s[8],s[9],s[10]).length();this.determinant()<0&&(r=-r),e.x=s[12],e.y=s[13],e.z=s[14],js.copy(this);const c=1/r,u=1/o,C=1/a;return js.elements[0]*=c,js.elements[1]*=c,js.elements[2]*=c,js.elements[4]*=u,js.elements[5]*=u,js.elements[6]*=u,js.elements[8]*=C,js.elements[9]*=C,js.elements[10]*=C,t.setFromRotationMatrix(js),i.x=r,i.y=o,i.z=a,this}makePerspective(e,t,i,s,r,o){const a=this.elements,l=2*r/(t-e),c=2*r/(i-s),u=(t+e)/(t-e),C=(i+s)/(i-s),d=-(o+r)/(o-r),h=-2*o*r/(o-r);return a[0]=l,a[4]=0,a[8]=u,a[12]=0,a[1]=0,a[5]=c,a[9]=C,a[13]=0,a[2]=0,a[6]=0,a[10]=d,a[14]=h,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makeOrthographic(e,t,i,s,r,o){const a=this.elements,l=1/(t-e),c=1/(i-s),u=1/(o-r),C=(t+e)*l,d=(i+s)*c,h=(o+r)*u;return a[0]=2*l,a[4]=0,a[8]=0,a[12]=-C,a[1]=0,a[5]=2*c,a[9]=0,a[13]=-d,a[2]=0,a[6]=0,a[10]=-2*u,a[14]=-h,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}equals(e){const t=this.elements,i=e.elements;for(let s=0;s<16;s++)if(t[s]!==i[s])return!1;return!0}fromArray(e,t=0){for(let i=0;i<16;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){const i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e[t+9]=i[9],e[t+10]=i[10],e[t+11]=i[11],e[t+12]=i[12],e[t+13]=i[13],e[t+14]=i[14],e[t+15]=i[15],e}}const Ql=new H,js=new Fe,NH=new H(0,0,0),HH=new H(1,1,1),Xo=new H,md=new H,os=new H,f2=new Fe,b2=new xn;class vl{constructor(e=0,t=0,i=0,s=vl.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=i,this._order=s}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,i,s=this._order){return this._x=e,this._y=t,this._z=i,this._order=s,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,i=!0){const s=e.elements,r=s[0],o=s[4],a=s[8],l=s[1],c=s[5],u=s[9],C=s[2],d=s[6],h=s[10];switch(t){case"XYZ":this._y=Math.asin(Gn(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-u,h),this._z=Math.atan2(-o,r)):(this._x=Math.atan2(d,c),this._z=0);break;case"YXZ":this._x=Math.asin(-Gn(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(a,h),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-C,r),this._z=0);break;case"ZXY":this._x=Math.asin(Gn(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(-C,h),this._z=Math.atan2(-o,c)):(this._y=0,this._z=Math.atan2(l,r));break;case"ZYX":this._y=Math.asin(-Gn(C,-1,1)),Math.abs(C)<.9999999?(this._x=Math.atan2(d,h),this._z=Math.atan2(l,r)):(this._x=0,this._z=Math.atan2(-o,c));break;case"YZX":this._z=Math.asin(Gn(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-u,c),this._y=Math.atan2(-C,r)):(this._x=0,this._y=Math.atan2(a,h));break;case"XZY":this._z=Math.asin(-Gn(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(d,c),this._y=Math.atan2(a,r)):(this._x=Math.atan2(-u,h),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,i===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,i){return f2.makeRotationFromQuaternion(e),this.setFromRotationMatrix(f2,t,i)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return b2.setFromEuler(this),this.setFromQuaternion(b2,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}vl.DEFAULT_ORDER="XYZ";class ll{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let i=0;i0&&(i=i.concat(o))}return i}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(jc,e,YH),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(jc,FH,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(e){e(this);const t=this.children;for(let i=0,s=t.length;i0&&(s.userData=this.userData),s.layers=this.layers.mask,s.matrix=this.matrix.toArray(),s.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(s.matrixAutoUpdate=!1),this.isInstancedMesh&&(s.type="InstancedMesh",s.count=this.count,s.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(s.instanceColor=this.instanceColor.toJSON()));function r(a,l){return a[l.uuid]===void 0&&(a[l.uuid]=l.toJSON(e)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?s.background=this.background.toJSON():this.background.isTexture&&(s.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(s.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){s.geometry=r(e.geometries,this.geometry);const a=this.geometry.parameters;if(a!==void 0&&a.shapes!==void 0){const l=a.shapes;if(Array.isArray(l))for(let c=0,u=l.length;c0){s.children=[];for(let a=0;a0){s.animations=[];for(let a=0;a0&&(i.geometries=a),l.length>0&&(i.materials=l),c.length>0&&(i.textures=c),u.length>0&&(i.images=u),C.length>0&&(i.shapes=C),d.length>0&&(i.skeletons=d),h.length>0&&(i.animations=h),m.length>0&&(i.nodes=m)}return i.object=s,i;function o(a){const l=[];for(const c in a){const u=a[c];delete u.metadata,l.push(u)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations,this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let i=0;i0?s.multiplyScalar(1/Math.sqrt(r)):s.set(0,0,0)}static getBarycoord(e,t,i,s,r){qs.subVectors(s,t),Qr.subVectors(i,t),Um.subVectors(e,t);const o=qs.dot(qs),a=qs.dot(Qr),l=qs.dot(Um),c=Qr.dot(Qr),u=Qr.dot(Um),C=o*c-a*a;if(C===0)return r.set(-2,-1,-1);const d=1/C,h=(c*l-a*u)*d,m=(o*u-a*l)*d;return r.set(1-h-m,m,h)}static containsPoint(e,t,i,s){return this.getBarycoord(e,t,i,s,jr),jr.x>=0&&jr.y>=0&&jr.x+jr.y<=1}static getUV(e,t,i,s,r,o,a,l){return bd===!1&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),bd=!0),this.getInterpolation(e,t,i,s,r,o,a,l)}static getInterpolation(e,t,i,s,r,o,a,l){return this.getBarycoord(e,t,i,s,jr),l.setScalar(0),l.addScaledVector(r,jr.x),l.addScaledVector(o,jr.y),l.addScaledVector(a,jr.z),l}static isFrontFacing(e,t,i,s){return qs.subVectors(i,t),Qr.subVectors(e,t),qs.cross(Qr).dot(s)<0}set(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this}setFromPointsAndIndices(e,t,i,s){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[s]),this}setFromAttributeAndIndices(e,t,i,s){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,i),this.c.fromBufferAttribute(e,s),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return qs.subVectors(this.c,this.b),Qr.subVectors(this.a,this.b),qs.cross(Qr).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Pi.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return Pi.getBarycoord(e,this.a,this.b,this.c,t)}getUV(e,t,i,s,r){return bd===!1&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),bd=!0),Pi.getInterpolation(e,this.a,this.b,this.c,t,i,s,r)}getInterpolation(e,t,i,s,r){return Pi.getInterpolation(e,this.a,this.b,this.c,t,i,s,r)}containsPoint(e){return Pi.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Pi.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const i=this.a,s=this.b,r=this.c;let o,a;ql.subVectors(s,i),$l.subVectors(r,i),Pm.subVectors(e,i);const l=ql.dot(Pm),c=$l.dot(Pm);if(l<=0&&c<=0)return t.copy(i);_m.subVectors(e,s);const u=ql.dot(_m),C=$l.dot(_m);if(u>=0&&C<=u)return t.copy(s);const d=l*C-u*c;if(d<=0&&l>=0&&u<=0)return o=l/(l-u),t.copy(i).addScaledVector(ql,o);Jm.subVectors(e,r);const h=ql.dot(Jm),m=$l.dot(Jm);if(m>=0&&h<=m)return t.copy(r);const v=h*c-l*m;if(v<=0&&c>=0&&m<=0)return a=c/(c-m),t.copy(i).addScaledVector($l,a);const y=u*m-h*C;if(y<=0&&C-u>=0&&h-m>=0)return w2.subVectors(r,s),a=(C-u)/(C-u+(h-m)),t.copy(s).addScaledVector(w2,a);const A=1/(y+v+d);return o=v*A,a=d*A,t.copy(i).addScaledVector(ql,o).addScaledVector($l,a)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}let zH=0;class Jn extends Ls{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:zH++}),this.uuid=ds(),this.name="",this.type="Material",this.blending=rl,this.side=Hr,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=yv,this.blendDst=Gv,this.blendEquation=Da,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=au,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=y1,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=Hh,this.stencilZFail=Hh,this.stencilZPass=Hh,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const i=e[t];if(i===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}const s=this[t];if(s===void 0){console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`);continue}s&&s.isColor?s.set(i):s&&s.isVector3&&i&&i.isVector3?s.copy(i):this[t]=i}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const i={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),this.roughness!==void 0&&(i.roughness=this.roughness),this.metalness!==void 0&&(i.metalness=this.metalness),this.sheen!==void 0&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity&&this.emissiveIntensity!==1&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(i.shininess=this.shininess),this.clearcoat!==void 0&&(i.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.iridescence!==void 0&&(i.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(i.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(e).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(e).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(e).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(e).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(e).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(i.combine=this.combine)),this.envMapIntensity!==void 0&&(i.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(i.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(i.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(i.size=this.size),this.shadowSide!==null&&(i.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==rl&&(i.blending=this.blending),this.side!==Hr&&(i.side=this.side),this.vertexColors&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),this.transparent===!0&&(i.transparent=this.transparent),i.depthFunc=this.depthFunc,i.depthTest=this.depthTest,i.depthWrite=this.depthWrite,i.colorWrite=this.colorWrite,i.stencilWrite=this.stencilWrite,i.stencilWriteMask=this.stencilWriteMask,i.stencilFunc=this.stencilFunc,i.stencilRef=this.stencilRef,i.stencilFuncMask=this.stencilFuncMask,i.stencilFail=this.stencilFail,i.stencilZFail=this.stencilZFail,i.stencilZPass=this.stencilZPass,this.rotation!==void 0&&this.rotation!==0&&(i.rotation=this.rotation),this.polygonOffset===!0&&(i.polygonOffset=!0),this.polygonOffsetFactor!==0&&(i.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(i.linewidth=this.linewidth),this.dashSize!==void 0&&(i.dashSize=this.dashSize),this.gapSize!==void 0&&(i.gapSize=this.gapSize),this.scale!==void 0&&(i.scale=this.scale),this.dithering===!0&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),this.alphaToCoverage===!0&&(i.alphaToCoverage=this.alphaToCoverage),this.premultipliedAlpha===!0&&(i.premultipliedAlpha=this.premultipliedAlpha),this.forceSinglePass===!0&&(i.forceSinglePass=this.forceSinglePass),this.wireframe===!0&&(i.wireframe=this.wireframe),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(i.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(i.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(i.flatShading=this.flatShading),this.visible===!1&&(i.visible=!1),this.toneMapped===!1&&(i.toneMapped=!1),this.fog===!1&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData);function s(r){const o=[];for(const a in r){const l=r[a];delete l.metadata,o.push(l)}return o}if(t){const r=s(e.textures),o=s(e.images);r.length>0&&(i.textures=r),o.length>0&&(i.images=o)}return i}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let i=null;if(t!==null){const s=t.length;i=new Array(s);for(let r=0;r!==s;++r)i[r]=t[r].clone()}return this.clippingPlanes=i,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}}const R1={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},$s={h:0,s:0,l:0},vd={h:0,s:0,l:0};function Om(n,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?n+(e-n)*6*t:t<1/2?e:t<2/3?n+(e-n)*6*(2/3-t):n}class Re{constructor(e,t,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,t===void 0&&i===void 0?this.set(e):this.setRGB(e,t,i)}set(e){return e&&e.isColor?this.copy(e):typeof e=="number"?this.setHex(e):typeof e=="string"&&this.setStyle(e),this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=mt){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Vs.toWorkingColorSpace(this,t),this}setRGB(e,t,i,s=Vs.workingColorSpace){return this.r=e,this.g=t,this.b=i,Vs.toWorkingColorSpace(this,s),this}setHSL(e,t,i,s=Vs.workingColorSpace){if(e=Xv(e,1),t=Gn(t,0,1),i=Gn(i,0,1),t===0)this.r=this.g=this.b=i;else{const r=i<=.5?i*(1+t):i+t-i*t,o=2*i-r;this.r=Om(o,r,e+1/3),this.g=Om(o,r,e),this.b=Om(o,r,e-1/3)}return Vs.toWorkingColorSpace(this,s),this}setStyle(e,t=mt){function i(r){r!==void 0&&parseFloat(r)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let s;if(s=/^(\w+)\(([^\)]*)\)/.exec(e)){let r;const o=s[1],a=s[2];switch(o){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return i(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,t);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return i(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,t);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return i(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(s=/^\#([A-Fa-f\d]+)$/.exec(e)){const r=s[1],o=r.length;if(o===3)return this.setRGB(parseInt(r.charAt(0),16)/15,parseInt(r.charAt(1),16)/15,parseInt(r.charAt(2),16)/15,t);if(o===6)return this.setHex(parseInt(r,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=mt){const i=R1[e.toLowerCase()];return i!==void 0?this.setHex(i,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=kg(e.r),this.g=kg(e.g),this.b=kg(e.b),this}copyLinearToSRGB(e){return this.r=Fm(e.r),this.g=Fm(e.g),this.b=Fm(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=mt){return Vs.fromWorkingColorSpace(mi.copy(this),e),Math.round(Gn(mi.r*255,0,255))*65536+Math.round(Gn(mi.g*255,0,255))*256+Math.round(Gn(mi.b*255,0,255))}getHexString(e=mt){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Vs.workingColorSpace){Vs.fromWorkingColorSpace(mi.copy(this),t);const i=mi.r,s=mi.g,r=mi.b,o=Math.max(i,s,r),a=Math.min(i,s,r);let l,c;const u=(a+o)/2;if(a===o)l=0,c=0;else{const C=o-a;switch(c=u<=.5?C/(o+a):C/(2-o-a),o){case i:l=(s-r)/C+(s>-c-14,i[l|256]=1024>>-c-14|32768,s[l]=-c-1,s[l|256]=-c-1):c<=15?(i[l]=c+15<<10,i[l|256]=c+15<<10|32768,s[l]=13,s[l|256]=13):c<128?(i[l]=31744,i[l|256]=64512,s[l]=24,s[l|256]=24):(i[l]=31744,i[l|256]=64512,s[l]=13,s[l|256]=13)}const r=new Uint32Array(2048),o=new Uint32Array(64),a=new Uint32Array(64);for(let l=1;l<1024;++l){let c=l<<13,u=0;for(;!(c&8388608);)c<<=1,u-=8388608;c&=-8388609,u+=947912704,r[l]=c|u}for(let l=1024;l<2048;++l)r[l]=939524096+(l-1024<<13);for(let l=1;l<31;++l)o[l]=l<<23;o[31]=1199570944,o[32]=2147483648;for(let l=33;l<63;++l)o[l]=2147483648+(l-32<<23);o[63]=3347054592;for(let l=1;l<64;++l)l!==32&&(a[l]=1024);return{floatView:e,uint32View:t,baseTable:i,shiftTable:s,mantissaTable:r,exponentTable:o,offsetTable:a}}function Ti(n){Math.abs(n)>65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),n=Gn(n,-65504,65504),no.floatView[0]=n;const e=no.uint32View[0],t=e>>23&511;return no.baseTable[t]+((e&8388607)>>no.shiftTable[t])}function vI(n){const e=n>>10;return no.uint32View[0]=no.mantissaTable[no.offsetTable[e]+(n&1023)]+no.exponentTable[e],no.floatView[0]}const EH={toHalfFloat:Ti,fromHalfFloat:vI},Hn=new H,yd=new ne;class kt{constructor(e,t,i=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=i,this.usage=hu,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this}copyAt(e,t,i){e*=this.itemSize,i*=t.itemSize;for(let s=0,r=this.itemSize;s0&&(e.userData=this.userData),this.parameters!==void 0){const l=this.parameters;for(const c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const i=this.attributes;for(const l in i){const c=i[l];e.data.attributes[l]=c.toJSON(e.data)}const s={};let r=!1;for(const l in this.morphAttributes){const c=this.morphAttributes[l],u=[];for(let C=0,d=c.length;C0&&(s[l]=u,r=!0)}r&&(e.data.morphAttributes=s,e.data.morphTargetsRelative=this.morphTargetsRelative);const o=this.groups;o.length>0&&(e.data.groups=JSON.parse(JSON.stringify(o)));const a=this.boundingSphere;return a!==null&&(e.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const i=e.index;i!==null&&this.setIndex(i.clone(t));const s=e.attributes;for(const c in s){const u=s[c];this.setAttribute(c,u.clone(t))}const r=e.morphAttributes;for(const c in r){const u=[],C=r[c];for(let d=0,h=C.length;d0){const s=t[i[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,o=s.length;r(e.far-e.near)**2))&&(S2.copy(r).invert(),Gr.copy(e.ray).applyMatrix4(S2),!(i.boundingBox!==null&&Gr.intersectsBox(i.boundingBox)===!1)&&this._computeIntersections(e,t)))}_computeIntersections(e,t){let i;const s=this.geometry,r=this.material,o=s.index,a=s.attributes.position,l=s.attributes.uv,c=s.attributes.uv1,u=s.attributes.normal,C=s.groups,d=s.drawRange;if(o!==null)if(Array.isArray(r))for(let h=0,m=C.length;ht.far?null:{distance:c,point:Rd.clone(),object:n}}function Wd(n,e,t,i,s,r,o,a,l,c){n.getVertexPosition(a,tg),n.getVertexPosition(l,ng),n.getVertexPosition(c,ig);const u=QH(n,e,t,i,tg,ng,ig,xd);if(u){s&&(Zd.fromBufferAttribute(s,a),wd.fromBufferAttribute(s,l),Sd.fromBufferAttribute(s,c),u.uv=Pi.getInterpolation(xd,tg,ng,ig,Zd,wd,Sd,new ne)),r&&(Zd.fromBufferAttribute(r,a),wd.fromBufferAttribute(r,l),Sd.fromBufferAttribute(r,c),u.uv1=Pi.getInterpolation(xd,tg,ng,ig,Zd,wd,Sd,new ne),u.uv2=u.uv1),o&&(R2.fromBufferAttribute(o,a),W2.fromBufferAttribute(o,l),V2.fromBufferAttribute(o,c),u.normal=Pi.getInterpolation(xd,tg,ng,ig,R2,W2,V2,new H),u.normal.dot(i.direction)>0&&u.normal.multiplyScalar(-1));const C={a,b:l,c,normal:new H,materialIndex:0};Pi.getNormal(tg,ng,ig,C.normal),u.face=C}return u}class ma extends ft{constructor(e=1,t=1,i=1,s=1,r=1,o=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:i,widthSegments:s,heightSegments:r,depthSegments:o};const a=this;s=Math.floor(s),r=Math.floor(r),o=Math.floor(o);const l=[],c=[],u=[],C=[];let d=0,h=0;m("z","y","x",-1,-1,i,t,e,o,r,0),m("z","y","x",1,-1,i,t,-e,o,r,1),m("x","z","y",1,1,e,i,t,s,o,2),m("x","z","y",1,-1,e,i,-t,s,o,3),m("x","y","z",1,-1,e,t,i,s,r,4),m("x","y","z",-1,-1,e,t,-i,s,r,5),this.setIndex(l),this.setAttribute("position",new ke(c,3)),this.setAttribute("normal",new ke(u,3)),this.setAttribute("uv",new ke(C,2));function m(v,y,A,b,f,B,S,x,R,M,Z){const V=B/R,N=S/M,U=B/2,D=S/2,$=x/2,te=R+1,Ce=M+1;let le=0,L=0;const J=new H;for(let P=0;P0?1:-1,u.push(J.x,J.y,J.z),C.push(se/R),C.push(1-P/M),le+=1}}for(let P=0;P0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const i={};for(const s in this.extensions)this.extensions[s]===!0&&(i[s]=!0);return Object.keys(i).length>0&&(t.extensions=i),t}}class ac extends Xt{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new Fe,this.projectionMatrix=new Fe,this.projectionMatrixInverse=new Fe}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return e.set(-t[8],-t[9],-t[10]).normalize()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}class An extends ac{constructor(e=50,t=1,i=.1,s=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=i,this.far=s,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=qg*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(rl*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return qg*2*Math.atan(Math.tan(rl*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(e,t,i,s,r,o){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=s,this.view.width=r,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(rl*.5*this.fov)/this.zoom,i=2*t,s=this.aspect*i,r=-.5*s;const o=this.view;if(this.view!==null&&this.view.enabled){const l=o.fullWidth,c=o.fullHeight;r+=o.offsetX*s/l,t-=o.offsetY*i/c,s*=o.width/l,i*=o.height/c}const a=this.filmOffset;a!==0&&(r+=e*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+s,t,t-i,e,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}const tg=-90,ng=1;class Xv extends Xt{constructor(e,t,i){super(),this.type="CubeCamera",this.renderTarget=i;const s=new An(tg,ng,e,t);s.layers=this.layers,s.up.set(0,1,0),s.lookAt(1,0,0),this.add(s);const r=new An(tg,ng,e,t);r.layers=this.layers,r.up.set(0,1,0),r.lookAt(-1,0,0),this.add(r);const o=new An(tg,ng,e,t);o.layers=this.layers,o.up.set(0,0,-1),o.lookAt(0,1,0),this.add(o);const a=new An(tg,ng,e,t);a.layers=this.layers,a.up.set(0,0,1),a.lookAt(0,-1,0),this.add(a);const l=new An(tg,ng,e,t);l.layers=this.layers,l.up.set(0,1,0),l.lookAt(0,0,1),this.add(l);const c=new An(tg,ng,e,t);c.layers=this.layers,c.up.set(0,1,0),c.lookAt(0,0,-1),this.add(c)}update(e,t){this.parent===null&&this.updateMatrixWorld();const i=this.renderTarget,[s,r,o,a,l,c]=this.children,u=e.getRenderTarget(),C=e.toneMapping,d=e.xr.enabled;e.toneMapping=gr,e.xr.enabled=!1;const h=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,e.setRenderTarget(i,0),e.render(t,s),e.setRenderTarget(i,1),e.render(t,r),e.setRenderTarget(i,2),e.render(t,o),e.setRenderTarget(i,3),e.render(t,a),e.setRenderTarget(i,4),e.render(t,l),i.texture.generateMipmaps=h,e.setRenderTarget(i,5),e.render(t,c),e.setRenderTarget(u),e.toneMapping=C,e.xr.enabled=d,i.texture.needsPMREMUpdate=!0}}class Nu extends qt{constructor(e,t,i,s,r,o,a,l,c,u){e=e!==void 0?e:[],t=t!==void 0?t:oa,super(e,t,i,s,r,o,a,l,c,u),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class NA extends Rt{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const i={width:e,height:e,depth:1},s=[i,i,i,i,i,i];t.encoding!==void 0&&(HI("THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace."),t.colorSpace=t.encoding===Ys?mt:co),this.texture=new Nu(s,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=t.generateMipmaps!==void 0?t.generateMipmaps:!1,this.texture.minFilter=t.minFilter!==void 0?t.minFilter:je}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const i={uniforms:{tEquirect:{value:null}},vertexShader:` +}`;class Zt extends Jn{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=qH,this.fragmentShader=$H,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,e!==void 0&&this.setValues(e)}copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=nc(e.uniforms),this.uniformsGroups=jH(e.uniformsGroups),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.fog=e.fog,this.lights=e.lights,this.clipping=e.clipping,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this}toJSON(e){const t=super.toJSON(e);t.glslVersion=this.glslVersion,t.uniforms={};for(const s in this.uniforms){const o=this.uniforms[s].value;o&&o.isTexture?t.uniforms[s]={type:"t",value:o.toJSON(e).uuid}:o&&o.isColor?t.uniforms[s]={type:"c",value:o.getHex()}:o&&o.isVector2?t.uniforms[s]={type:"v2",value:o.toArray()}:o&&o.isVector3?t.uniforms[s]={type:"v3",value:o.toArray()}:o&&o.isVector4?t.uniforms[s]={type:"v4",value:o.toArray()}:o&&o.isMatrix3?t.uniforms[s]={type:"m3",value:o.toArray()}:o&&o.isMatrix4?t.uniforms[s]={type:"m4",value:o.toArray()}:t.uniforms[s]={value:o}}Object.keys(this.defines).length>0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const i={};for(const s in this.extensions)this.extensions[s]===!0&&(i[s]=!0);return Object.keys(i).length>0&&(t.extensions=i),t}}class cc extends Xt{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new Fe,this.projectionMatrix=new Fe,this.projectionMatrixInverse=new Fe}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return e.set(-t[8],-t[9],-t[10]).normalize()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}class An extends cc{constructor(e=50,t=1,i=.1,s=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=i,this.far=s,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=tc*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(ol*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return tc*2*Math.atan(Math.tan(ol*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(e,t,i,s,r,o){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=s,this.view.width=r,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(ol*.5*this.fov)/this.zoom,i=2*t,s=this.aspect*i,r=-.5*s;const o=this.view;if(this.view!==null&&this.view.enabled){const l=o.fullWidth,c=o.fullHeight;r+=o.offsetX*s/l,t-=o.offsetY*i/c,s*=o.width/l,i*=o.height/c}const a=this.filmOffset;a!==0&&(r+=e*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+s,t,t-i,e,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}const sg=-90,rg=1;class zv extends Xt{constructor(e,t,i){super(),this.type="CubeCamera",this.renderTarget=i;const s=new An(sg,rg,e,t);s.layers=this.layers,s.up.set(0,1,0),s.lookAt(1,0,0),this.add(s);const r=new An(sg,rg,e,t);r.layers=this.layers,r.up.set(0,1,0),r.lookAt(-1,0,0),this.add(r);const o=new An(sg,rg,e,t);o.layers=this.layers,o.up.set(0,0,-1),o.lookAt(0,1,0),this.add(o);const a=new An(sg,rg,e,t);a.layers=this.layers,a.up.set(0,0,1),a.lookAt(0,-1,0),this.add(a);const l=new An(sg,rg,e,t);l.layers=this.layers,l.up.set(0,1,0),l.lookAt(0,0,1),this.add(l);const c=new An(sg,rg,e,t);c.layers=this.layers,c.up.set(0,1,0),c.lookAt(0,0,-1),this.add(c)}update(e,t){this.parent===null&&this.updateMatrixWorld();const i=this.renderTarget,[s,r,o,a,l,c]=this.children,u=e.getRenderTarget(),C=e.toneMapping,d=e.xr.enabled;e.toneMapping=cr,e.xr.enabled=!1;const h=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,e.setRenderTarget(i,0),e.render(t,s),e.setRenderTarget(i,1),e.render(t,r),e.setRenderTarget(i,2),e.render(t,o),e.setRenderTarget(i,3),e.render(t,a),e.setRenderTarget(i,4),e.render(t,l),i.texture.generateMipmaps=h,e.setRenderTarget(i,5),e.render(t,c),e.setRenderTarget(u),e.toneMapping=C,e.xr.enabled=d,i.texture.needsPMREMUpdate=!0}}class Fu extends qt{constructor(e,t,i,s,r,o,a,l,c,u){e=e!==void 0?e:[],t=t!==void 0?t:la,super(e,t,i,s,r,o,a,l,c,u),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class LA extends Wt{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const i={width:e,height:e,depth:1},s=[i,i,i,i,i,i];t.encoding!==void 0&&(FI("THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace."),t.colorSpace=t.encoding===Fs?mt:co),this.texture=new Fu(s,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=t.generateMipmaps!==void 0?t.generateMipmaps:!1,this.texture.minFilter=t.minFilter!==void 0?t.minFilter:je}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const i={uniforms:{tEquirect:{value:null}},vertexShader:` varying vec3 vWorldDirection; @@ -80,28 +80,28 @@ Error generating stack: `+r.message+` gl_FragColor = texture2D( tEquirect, sampleUV ); } - `},s=new Aa(5,5,5),r=new Zt({name:"CubemapFromEquirect",uniforms:$g(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:Tn,blending:tn});r.uniforms.tEquirect.value=t;const o=new En(s,r),a=t.minFilter;return t.minFilter===la&&(t.minFilter=je),new Xv(1,10,this).update(e,o),t.minFilter=a,o.geometry.dispose(),o.material.dispose(),this}clear(e,t,i,s){const r=e.getRenderTarget();for(let o=0;o<6;o++)e.setRenderTarget(this,o),e.clear(t,i,s);e.setRenderTarget(r)}}const Jm=new H,UH=new H,PH=new xt;class To{constructor(e=new H(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,i,s){return this.normal.set(e,t,i),this.constant=s,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,i){const s=Jm.subVectors(i,t).cross(UH.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(s,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectLine(e,t){const i=e.delta(Jm),s=this.normal.dot(i);if(s===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;const r=-(e.start.dot(this.normal)+this.constant)/s;return r<0||r>1?null:t.copy(e.start).addScaledVector(i,r)}intersectsLine(e){const t=this.distanceToPoint(e.start),i=this.distanceToPoint(e.end);return t<0&&i>0||i<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const i=t||PH.getNormalMatrix(e),s=this.coplanarPoint(Jm).applyMatrix4(e),r=this.normal.applyMatrix3(i).normalize();return this.constant=-s.dot(r),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const Va=new Fr,Zd=new H;class HA{constructor(e=new To,t=new To,i=new To,s=new To,r=new To,o=new To){this.planes=[e,t,i,s,r,o]}set(e,t,i,s,r,o){const a=this.planes;return a[0].copy(e),a[1].copy(t),a[2].copy(i),a[3].copy(s),a[4].copy(r),a[5].copy(o),this}copy(e){const t=this.planes;for(let i=0;i<6;i++)t[i].copy(e.planes[i]);return this}setFromProjectionMatrix(e){const t=this.planes,i=e.elements,s=i[0],r=i[1],o=i[2],a=i[3],l=i[4],c=i[5],u=i[6],C=i[7],d=i[8],h=i[9],m=i[10],v=i[11],y=i[12],A=i[13],b=i[14],f=i[15];return t[0].setComponents(a-s,C-l,v-d,f-y).normalize(),t[1].setComponents(a+s,C+l,v+d,f+y).normalize(),t[2].setComponents(a+r,C+c,v+h,f+A).normalize(),t[3].setComponents(a-r,C-c,v-h,f-A).normalize(),t[4].setComponents(a-o,C-u,v-m,f-b).normalize(),t[5].setComponents(a+o,C+u,v+m,f+b).normalize(),this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),Va.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),Va.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Va)}intersectsSprite(e){return Va.center.set(0,0,0),Va.radius=.7071067811865476,Va.applyMatrix4(e.matrixWorld),this.intersectsSphere(Va)}intersectsSphere(e){const t=this.planes,i=e.center,s=-e.radius;for(let r=0;r<6;r++)if(t[r].distanceToPoint(i)0?e.max.x:e.min.x,Zd.y=s.normal.y>0?e.max.y:e.min.y,Zd.z=s.normal.z>0?e.max.z:e.min.z,s.distanceToPoint(Zd)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}function Z1(){let n=null,e=!1,t=null,i=null;function s(r,o){t(r,o),i=n.requestAnimationFrame(s)}return{start:function(){e!==!0&&t!==null&&(i=n.requestAnimationFrame(s),e=!0)},stop:function(){n.cancelAnimationFrame(i),e=!1},setAnimationLoop:function(r){t=r},setContext:function(r){n=r}}}function _H(n,e){const t=e.isWebGL2,i=new WeakMap;function s(c,u){const C=c.array,d=c.usage,h=n.createBuffer();n.bindBuffer(u,h),n.bufferData(u,C,d),c.onUploadCallback();let m;if(C instanceof Float32Array)m=n.FLOAT;else if(C instanceof Uint16Array)if(c.isFloat16BufferAttribute)if(t)m=n.HALF_FLOAT;else throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.");else m=n.UNSIGNED_SHORT;else if(C instanceof Int16Array)m=n.SHORT;else if(C instanceof Uint32Array)m=n.UNSIGNED_INT;else if(C instanceof Int32Array)m=n.INT;else if(C instanceof Int8Array)m=n.BYTE;else if(C instanceof Uint8Array)m=n.UNSIGNED_BYTE;else if(C instanceof Uint8ClampedArray)m=n.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+C);return{buffer:h,type:m,bytesPerElement:C.BYTES_PER_ELEMENT,version:c.version}}function r(c,u,C){const d=u.array,h=u.updateRange;n.bindBuffer(C,c),h.count===-1?n.bufferSubData(C,0,d):(t?n.bufferSubData(C,h.offset*d.BYTES_PER_ELEMENT,d,h.offset,h.count):n.bufferSubData(C,h.offset*d.BYTES_PER_ELEMENT,d.subarray(h.offset,h.offset+h.count)),h.count=-1),u.onUploadCallback()}function o(c){return c.isInterleavedBufferAttribute&&(c=c.data),i.get(c)}function a(c){c.isInterleavedBufferAttribute&&(c=c.data);const u=i.get(c);u&&(n.deleteBuffer(u.buffer),i.delete(c))}function l(c,u){if(c.isGLBufferAttribute){const d=i.get(c);(!d||d.version1?null:t.copy(e.start).addScaledVector(i,r)}intersectsLine(e){const t=this.distanceToPoint(e.start),i=this.distanceToPoint(e.end);return t<0&&i>0||i<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const i=t||tX.getNormalMatrix(e),s=this.coplanarPoint(qm).applyMatrix4(e),r=this.normal.applyMatrix3(i).normalize();return this.constant=-s.dot(r),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const Na=new Fr,Vd=new H;class EA{constructor(e=new Eo,t=new Eo,i=new Eo,s=new Eo,r=new Eo,o=new Eo){this.planes=[e,t,i,s,r,o]}set(e,t,i,s,r,o){const a=this.planes;return a[0].copy(e),a[1].copy(t),a[2].copy(i),a[3].copy(s),a[4].copy(r),a[5].copy(o),this}copy(e){const t=this.planes;for(let i=0;i<6;i++)t[i].copy(e.planes[i]);return this}setFromProjectionMatrix(e){const t=this.planes,i=e.elements,s=i[0],r=i[1],o=i[2],a=i[3],l=i[4],c=i[5],u=i[6],C=i[7],d=i[8],h=i[9],m=i[10],v=i[11],y=i[12],A=i[13],b=i[14],f=i[15];return t[0].setComponents(a-s,C-l,v-d,f-y).normalize(),t[1].setComponents(a+s,C+l,v+d,f+y).normalize(),t[2].setComponents(a+r,C+c,v+h,f+A).normalize(),t[3].setComponents(a-r,C-c,v-h,f-A).normalize(),t[4].setComponents(a-o,C-u,v-m,f-b).normalize(),t[5].setComponents(a+o,C+u,v+m,f+b).normalize(),this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),Na.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),Na.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Na)}intersectsSprite(e){return Na.center.set(0,0,0),Na.radius=.7071067811865476,Na.applyMatrix4(e.matrixWorld),this.intersectsSphere(Na)}intersectsSphere(e){const t=this.planes,i=e.center,s=-e.radius;for(let r=0;r<6;r++)if(t[r].distanceToPoint(i)0?e.max.x:e.min.x,Vd.y=s.normal.y>0?e.max.y:e.min.y,Vd.z=s.normal.z>0?e.max.z:e.min.z,s.distanceToPoint(Vd)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}function M1(){let n=null,e=!1,t=null,i=null;function s(r,o){t(r,o),i=n.requestAnimationFrame(s)}return{start:function(){e!==!0&&t!==null&&(i=n.requestAnimationFrame(s),e=!0)},stop:function(){n.cancelAnimationFrame(i),e=!1},setAnimationLoop:function(r){t=r},setContext:function(r){n=r}}}function nX(n,e){const t=e.isWebGL2,i=new WeakMap;function s(c,u){const C=c.array,d=c.usage,h=n.createBuffer();n.bindBuffer(u,h),n.bufferData(u,C,d),c.onUploadCallback();let m;if(C instanceof Float32Array)m=n.FLOAT;else if(C instanceof Uint16Array)if(c.isFloat16BufferAttribute)if(t)m=n.HALF_FLOAT;else throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.");else m=n.UNSIGNED_SHORT;else if(C instanceof Int16Array)m=n.SHORT;else if(C instanceof Uint32Array)m=n.UNSIGNED_INT;else if(C instanceof Int32Array)m=n.INT;else if(C instanceof Int8Array)m=n.BYTE;else if(C instanceof Uint8Array)m=n.UNSIGNED_BYTE;else if(C instanceof Uint8ClampedArray)m=n.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+C);return{buffer:h,type:m,bytesPerElement:C.BYTES_PER_ELEMENT,version:c.version}}function r(c,u,C){const d=u.array,h=u.updateRange;n.bindBuffer(C,c),h.count===-1?n.bufferSubData(C,0,d):(t?n.bufferSubData(C,h.offset*d.BYTES_PER_ELEMENT,d,h.offset,h.count):n.bufferSubData(C,h.offset*d.BYTES_PER_ELEMENT,d.subarray(h.offset,h.offset+h.count)),h.count=-1),u.onUploadCallback()}function o(c){return c.isInterleavedBufferAttribute&&(c=c.data),i.get(c)}function a(c){c.isInterleavedBufferAttribute&&(c=c.data);const u=i.get(c);u&&(n.deleteBuffer(u.buffer),i.delete(c))}function l(c,u){if(c.isGLBufferAttribute){const d=i.get(c);(!d||d.version 0 +#endif`,dX=`#if NUM_CLIPPING_PLANES > 0 vec4 plane; #pragma unroll_loop_start for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { @@ -218,26 +218,26 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve #pragma unroll_loop_end if ( clipped ) discard; #endif -#endif`,oX=`#if NUM_CLIPPING_PLANES > 0 +#endif`,hX=`#if NUM_CLIPPING_PLANES > 0 varying vec3 vClipPosition; uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; -#endif`,aX=`#if NUM_CLIPPING_PLANES > 0 +#endif`,AX=`#if NUM_CLIPPING_PLANES > 0 varying vec3 vClipPosition; -#endif`,lX=`#if NUM_CLIPPING_PLANES > 0 +#endif`,pX=`#if NUM_CLIPPING_PLANES > 0 vClipPosition = - mvPosition.xyz; -#endif`,gX=`#if defined( USE_COLOR_ALPHA ) +#endif`,mX=`#if defined( USE_COLOR_ALPHA ) diffuseColor *= vColor; #elif defined( USE_COLOR ) diffuseColor.rgb *= vColor; -#endif`,cX=`#if defined( USE_COLOR_ALPHA ) +#endif`,fX=`#if defined( USE_COLOR_ALPHA ) varying vec4 vColor; #elif defined( USE_COLOR ) varying vec3 vColor; -#endif`,IX=`#if defined( USE_COLOR_ALPHA ) +#endif`,bX=`#if defined( USE_COLOR_ALPHA ) varying vec4 vColor; #elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) varying vec3 vColor; -#endif`,uX=`#if defined( USE_COLOR_ALPHA ) +#endif`,vX=`#if defined( USE_COLOR_ALPHA ) vColor = vec4( 1.0 ); #elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) vColor = vec3( 1.0 ); @@ -247,7 +247,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve #endif #ifdef USE_INSTANCING_COLOR vColor.xyz *= instanceColor.xyz; -#endif`,CX=`#define PI 3.141592653589793 +#endif`,yX=`#define PI 3.141592653589793 #define PI2 6.283185307179586 #define PI_HALF 1.5707963267948966 #define RECIPROCAL_PI 0.3183098861837907 @@ -330,7 +330,7 @@ vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); -} // validated`,dX=`#ifdef ENVMAP_TYPE_CUBE_UV +} // validated`,GX=`#ifdef ENVMAP_TYPE_CUBE_UV #define cubeUV_minMipLevel 4.0 #define cubeUV_minTileSize 16.0 float getFace( vec3 direction ) { @@ -428,7 +428,7 @@ float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { return vec4( mix( color0, color1, mipF ), 1.0 ); } } -#endif`,hX=`vec3 transformedNormal = objectNormal; +#endif`,BX=`vec3 transformedNormal = objectNormal; #ifdef USE_INSTANCING mat3 m = mat3( instanceMatrix ); transformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) ); @@ -443,23 +443,23 @@ transformedNormal = normalMatrix * transformedNormal; #ifdef FLIP_SIDED transformedTangent = - transformedTangent; #endif -#endif`,AX=`#ifdef USE_DISPLACEMENTMAP +#endif`,ZX=`#ifdef USE_DISPLACEMENTMAP uniform sampler2D displacementMap; uniform float displacementScale; uniform float displacementBias; -#endif`,pX=`#ifdef USE_DISPLACEMENTMAP +#endif`,wX=`#ifdef USE_DISPLACEMENTMAP transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); -#endif`,mX=`#ifdef USE_EMISSIVEMAP +#endif`,SX=`#ifdef USE_EMISSIVEMAP vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); totalEmissiveRadiance *= emissiveColor.rgb; -#endif`,fX=`#ifdef USE_EMISSIVEMAP +#endif`,xX=`#ifdef USE_EMISSIVEMAP uniform sampler2D emissiveMap; -#endif`,bX="gl_FragColor = linearToOutputTexel( gl_FragColor );",vX=`vec4 LinearToLinear( in vec4 value ) { +#endif`,RX="gl_FragColor = linearToOutputTexel( gl_FragColor );",WX=`vec4 LinearToLinear( in vec4 value ) { return value; } vec4 LinearTosRGB( in vec4 value ) { return 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 ); -}`,yX=`#ifdef USE_ENVMAP +}`,VX=`#ifdef USE_ENVMAP #ifdef ENV_WORLDPOS vec3 cameraToFrag; if ( isOrthographic ) { @@ -488,7 +488,7 @@ vec4 LinearTosRGB( in vec4 value ) { #elif defined( ENVMAP_BLENDING_ADD ) outgoingLight += envColor.xyz * specularStrength * reflectivity; #endif -#endif`,GX=`#ifdef USE_ENVMAP +#endif`,MX=`#ifdef USE_ENVMAP uniform float envMapIntensity; uniform float flipEnvMap; #ifdef ENVMAP_TYPE_CUBE @@ -497,7 +497,7 @@ vec4 LinearTosRGB( in vec4 value ) { uniform sampler2D envMap; #endif -#endif`,BX=`#ifdef USE_ENVMAP +#endif`,NX=`#ifdef USE_ENVMAP uniform float reflectivity; #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) #define ENV_WORLDPOS @@ -508,7 +508,7 @@ vec4 LinearTosRGB( in vec4 value ) { #else varying vec3 vReflect; #endif -#endif`,ZX=`#ifdef USE_ENVMAP +#endif`,HX=`#ifdef USE_ENVMAP #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) #define ENV_WORLDPOS #endif @@ -519,7 +519,7 @@ vec4 LinearTosRGB( in vec4 value ) { varying vec3 vReflect; uniform float refractionRatio; #endif -#endif`,wX=`#ifdef USE_ENVMAP +#endif`,XX=`#ifdef USE_ENVMAP #ifdef ENV_WORLDPOS vWorldPosition = worldPosition.xyz; #else @@ -536,18 +536,18 @@ vec4 LinearTosRGB( in vec4 value ) { vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); #endif #endif -#endif`,SX=`#ifdef USE_FOG +#endif`,YX=`#ifdef USE_FOG vFogDepth = - mvPosition.z; -#endif`,xX=`#ifdef USE_FOG +#endif`,FX=`#ifdef USE_FOG varying float vFogDepth; -#endif`,RX=`#ifdef USE_FOG +#endif`,KX=`#ifdef USE_FOG #ifdef FOG_EXP2 float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); #else float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); #endif gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); -#endif`,WX=`#ifdef USE_FOG +#endif`,zX=`#ifdef USE_FOG uniform vec3 fogColor; varying float vFogDepth; #ifdef FOG_EXP2 @@ -556,7 +556,7 @@ vec4 LinearTosRGB( in vec4 value ) { uniform float fogNear; uniform float fogFar; #endif -#endif`,VX=`#ifdef USE_GRADIENTMAP +#endif`,LX=`#ifdef USE_GRADIENTMAP uniform sampler2D gradientMap; #endif vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { @@ -568,16 +568,16 @@ vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { vec2 fw = fwidth( coord ) * 0.5; return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); #endif -}`,MX=`#ifdef USE_LIGHTMAP +}`,EX=`#ifdef USE_LIGHTMAP vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; reflectedLight.indirectDiffuse += lightMapIrradiance; -#endif`,NX=`#ifdef USE_LIGHTMAP +#endif`,TX=`#ifdef USE_LIGHTMAP uniform sampler2D lightMap; uniform float lightMapIntensity; -#endif`,HX=`LambertMaterial material; +#endif`,kX=`LambertMaterial material; material.diffuseColor = diffuseColor.rgb; -material.specularStrength = specularStrength;`,XX=`varying vec3 vViewPosition; +material.specularStrength = specularStrength;`,DX=`varying vec3 vViewPosition; struct LambertMaterial { vec3 diffuseColor; float specularStrength; @@ -591,7 +591,7 @@ void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in GeometricCon reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_Lambert -#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,YX=`uniform bool receiveShadow; +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,UX=`uniform bool receiveShadow; uniform vec3 ambientLightColor; uniform vec3 lightProbe[ 9 ]; vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { @@ -712,7 +712,7 @@ float getSpotAttenuation( const in float coneCosine, const in float penumbraCosi vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); return irradiance; } -#endif`,FX=`#if defined( USE_ENVMAP ) +#endif`,PX=`#if defined( USE_ENVMAP ) vec3 getIBLIrradiance( const in vec3 normal ) { #if defined( ENVMAP_TYPE_CUBE_UV ) vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); @@ -733,8 +733,8 @@ float getSpotAttenuation( const in float coneCosine, const in float penumbraCosi return vec3( 0.0 ); #endif } -#endif`,KX=`ToonMaterial material; -material.diffuseColor = diffuseColor.rgb;`,zX=`varying vec3 vViewPosition; +#endif`,_X=`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,JX=`varying vec3 vViewPosition; struct ToonMaterial { vec3 diffuseColor; }; @@ -746,11 +746,11 @@ void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContex reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_Toon -#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,LX=`BlinnPhongMaterial material; +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,OX=`BlinnPhongMaterial material; material.diffuseColor = diffuseColor.rgb; material.specularColor = specular; material.specularShininess = shininess; -material.specularStrength = specularStrength;`,TX=`varying vec3 vViewPosition; +material.specularStrength = specularStrength;`,QX=`varying vec3 vViewPosition; struct BlinnPhongMaterial { vec3 diffuseColor; vec3 specularColor; @@ -767,7 +767,7 @@ void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in Geometric reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_BlinnPhong -#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,EX=`PhysicalMaterial material; +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,jX=`PhysicalMaterial material; material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) ); float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); @@ -831,7 +831,7 @@ material.roughness = min( material.roughness, 1.0 ); #ifdef USE_SHEEN_ROUGHNESSMAP material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; #endif -#endif`,kX=`struct PhysicalMaterial { +#endif`,qX=`struct PhysicalMaterial { vec3 diffuseColor; float roughness; vec3 specularColor; @@ -1097,7 +1097,7 @@ void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradia #define RE_IndirectSpecular RE_IndirectSpecular_Physical float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); -}`,DX=` +}`,$X=` GeometricContext geometry; geometry.position = - vViewPosition; geometry.normal = normal; @@ -1210,7 +1210,7 @@ IncidentLight directLight; #if defined( RE_IndirectSpecular ) vec3 radiance = vec3( 0.0 ); vec3 clearcoatRadiance = vec3( 0.0 ); -#endif`,UX=`#if defined( RE_IndirectDiffuse ) +#endif`,eY=`#if defined( RE_IndirectDiffuse ) #ifdef USE_LIGHTMAP vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; @@ -1225,25 +1225,25 @@ IncidentLight directLight; #ifdef USE_CLEARCOAT clearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness ); #endif -#endif`,PX=`#if defined( RE_IndirectDiffuse ) +#endif`,tY=`#if defined( RE_IndirectDiffuse ) RE_IndirectDiffuse( irradiance, geometry, material, reflectedLight ); #endif #if defined( RE_IndirectSpecular ) RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight ); -#endif`,_X=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) +#endif`,nY=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) gl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; -#endif`,JX=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) +#endif`,iY=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) uniform float logDepthBufFC; varying float vFragDepth; varying float vIsPerspective; -#endif`,OX=`#ifdef USE_LOGDEPTHBUF +#endif`,sY=`#ifdef USE_LOGDEPTHBUF #ifdef USE_LOGDEPTHBUF_EXT varying float vFragDepth; varying float vIsPerspective; #else uniform float logDepthBufFC; #endif -#endif`,QX=`#ifdef USE_LOGDEPTHBUF +#endif`,rY=`#ifdef USE_LOGDEPTHBUF #ifdef USE_LOGDEPTHBUF_EXT vFragDepth = 1.0 + gl_Position.w; vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); @@ -1253,11 +1253,11 @@ IncidentLight directLight; gl_Position.z *= gl_Position.w; } #endif -#endif`,jX=`#ifdef USE_MAP +#endif`,oY=`#ifdef USE_MAP diffuseColor *= texture2D( map, vMapUv ); -#endif`,qX=`#ifdef USE_MAP +#endif`,aY=`#ifdef USE_MAP uniform sampler2D map; -#endif`,$X=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) +#endif`,lY=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) #if defined( USE_POINTS_UV ) vec2 uv = vUv; #else @@ -1269,7 +1269,7 @@ IncidentLight directLight; #endif #ifdef USE_ALPHAMAP diffuseColor.a *= texture2D( alphaMap, uv ).g; -#endif`,eY=`#if defined( USE_POINTS_UV ) +#endif`,gY=`#if defined( USE_POINTS_UV ) varying vec2 vUv; #else #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) @@ -1281,13 +1281,13 @@ IncidentLight directLight; #endif #ifdef USE_ALPHAMAP uniform sampler2D alphaMap; -#endif`,tY=`float metalnessFactor = metalness; +#endif`,cY=`float metalnessFactor = metalness; #ifdef USE_METALNESSMAP vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); metalnessFactor *= texelMetalness.b; -#endif`,nY=`#ifdef USE_METALNESSMAP +#endif`,IY=`#ifdef USE_METALNESSMAP uniform sampler2D metalnessMap; -#endif`,iY=`#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE ) +#endif`,uY=`#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE ) vColor *= morphTargetBaseInfluence; for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { #if defined( USE_COLOR_ALPHA ) @@ -1296,7 +1296,7 @@ IncidentLight directLight; if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; #endif } -#endif`,sY=`#ifdef USE_MORPHNORMALS +#endif`,CY=`#ifdef USE_MORPHNORMALS objectNormal *= morphTargetBaseInfluence; #ifdef MORPHTARGETS_TEXTURE for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { @@ -1308,7 +1308,7 @@ IncidentLight directLight; objectNormal += morphNormal2 * morphTargetInfluences[ 2 ]; objectNormal += morphNormal3 * morphTargetInfluences[ 3 ]; #endif -#endif`,rY=`#ifdef USE_MORPHTARGETS +#endif`,dY=`#ifdef USE_MORPHTARGETS uniform float morphTargetBaseInfluence; #ifdef MORPHTARGETS_TEXTURE uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; @@ -1328,7 +1328,7 @@ IncidentLight directLight; uniform float morphTargetInfluences[ 4 ]; #endif #endif -#endif`,oY=`#ifdef USE_MORPHTARGETS +#endif`,hY=`#ifdef USE_MORPHTARGETS transformed *= morphTargetBaseInfluence; #ifdef MORPHTARGETS_TEXTURE for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { @@ -1346,7 +1346,7 @@ IncidentLight directLight; transformed += morphTarget7 * morphTargetInfluences[ 7 ]; #endif #endif -#endif`,aY=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#endif`,AY=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; #ifdef FLAT_SHADED vec3 fdx = dFdx( vViewPosition ); vec3 fdy = dFdy( vViewPosition ); @@ -1379,7 +1379,7 @@ IncidentLight directLight; tbn2[1] *= faceDirection; #endif #endif -vec3 geometryNormal = normal;`,lY=`#ifdef USE_NORMALMAP_OBJECTSPACE +vec3 geometryNormal = normal;`,pY=`#ifdef USE_NORMALMAP_OBJECTSPACE normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; #ifdef FLIP_SIDED normal = - normal; @@ -1394,25 +1394,25 @@ vec3 geometryNormal = normal;`,lY=`#ifdef USE_NORMALMAP_OBJECTSPACE normal = normalize( tbn * mapN ); #elif defined( USE_BUMPMAP ) normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); -#endif`,gY=`#ifndef FLAT_SHADED +#endif`,mY=`#ifndef FLAT_SHADED varying vec3 vNormal; #ifdef USE_TANGENT varying vec3 vTangent; varying vec3 vBitangent; #endif -#endif`,cY=`#ifndef FLAT_SHADED +#endif`,fY=`#ifndef FLAT_SHADED varying vec3 vNormal; #ifdef USE_TANGENT varying vec3 vTangent; varying vec3 vBitangent; #endif -#endif`,IY=`#ifndef FLAT_SHADED +#endif`,bY=`#ifndef FLAT_SHADED vNormal = normalize( transformedNormal ); #ifdef USE_TANGENT vTangent = normalize( transformedTangent ); vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); #endif -#endif`,uY=`#ifdef USE_NORMALMAP +#endif`,vY=`#ifdef USE_NORMALMAP uniform sampler2D normalMap; uniform vec2 normalScale; #endif @@ -1434,13 +1434,13 @@ vec3 geometryNormal = normal;`,lY=`#ifdef USE_NORMALMAP_OBJECTSPACE float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); return mat3( T * scale, B * scale, N ); } -#endif`,CY=`#ifdef USE_CLEARCOAT +#endif`,yY=`#ifdef USE_CLEARCOAT vec3 clearcoatNormal = geometryNormal; -#endif`,dY=`#ifdef USE_CLEARCOAT_NORMALMAP +#endif`,GY=`#ifdef USE_CLEARCOAT_NORMALMAP vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; clearcoatMapN.xy *= clearcoatNormalScale; clearcoatNormal = normalize( tbn2 * clearcoatMapN ); -#endif`,hY=`#ifdef USE_CLEARCOATMAP +#endif`,BY=`#ifdef USE_CLEARCOATMAP uniform sampler2D clearcoatMap; #endif #ifdef USE_CLEARCOAT_NORMALMAP @@ -1449,18 +1449,18 @@ vec3 geometryNormal = normal;`,lY=`#ifdef USE_NORMALMAP_OBJECTSPACE #endif #ifdef USE_CLEARCOAT_ROUGHNESSMAP uniform sampler2D clearcoatRoughnessMap; -#endif`,AY=`#ifdef USE_IRIDESCENCEMAP +#endif`,ZY=`#ifdef USE_IRIDESCENCEMAP uniform sampler2D iridescenceMap; #endif #ifdef USE_IRIDESCENCE_THICKNESSMAP uniform sampler2D iridescenceThicknessMap; -#endif`,pY=`#ifdef OPAQUE +#endif`,wY=`#ifdef OPAQUE diffuseColor.a = 1.0; #endif #ifdef USE_TRANSMISSION diffuseColor.a *= material.transmissionAlpha + 0.1; #endif -gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,mY=`vec3 packNormalToRGB( const in vec3 normal ) { +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,SY=`vec3 packNormalToRGB( const in vec3 normal ) { return normalize( normal ) * 0.5 + 0.5; } vec3 unpackRGBToNormal( const in vec3 rgb ) { @@ -1501,29 +1501,29 @@ float viewZToPerspectiveDepth( const in float viewZ, const in float near, const } float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { return ( near * far ) / ( ( far - near ) * depth - far ); -}`,fY=`#ifdef PREMULTIPLIED_ALPHA +}`,xY=`#ifdef PREMULTIPLIED_ALPHA gl_FragColor.rgb *= gl_FragColor.a; -#endif`,bY=`vec4 mvPosition = vec4( transformed, 1.0 ); +#endif`,RY=`vec4 mvPosition = vec4( transformed, 1.0 ); #ifdef USE_INSTANCING mvPosition = instanceMatrix * mvPosition; #endif mvPosition = modelViewMatrix * mvPosition; -gl_Position = projectionMatrix * mvPosition;`,vY=`#ifdef DITHERING +gl_Position = projectionMatrix * mvPosition;`,WY=`#ifdef DITHERING gl_FragColor.rgb = dithering( gl_FragColor.rgb ); -#endif`,yY=`#ifdef DITHERING +#endif`,VY=`#ifdef DITHERING vec3 dithering( vec3 color ) { float grid_position = rand( gl_FragCoord.xy ); vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); return color + dither_shift_RGB; } -#endif`,GY=`float roughnessFactor = roughness; +#endif`,MY=`float roughnessFactor = roughness; #ifdef USE_ROUGHNESSMAP vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); roughnessFactor *= texelRoughness.g; -#endif`,BY=`#ifdef USE_ROUGHNESSMAP +#endif`,NY=`#ifdef USE_ROUGHNESSMAP uniform sampler2D roughnessMap; -#endif`,ZY=`#if NUM_SPOT_LIGHT_COORDS > 0 +#endif`,HY=`#if NUM_SPOT_LIGHT_COORDS > 0 varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; #endif #if NUM_SPOT_LIGHT_MAPS > 0 @@ -1700,7 +1700,7 @@ gl_Position = projectionMatrix * mvPosition;`,vY=`#ifdef DITHERING return texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); #endif } -#endif`,wY=`#if NUM_SPOT_LIGHT_COORDS > 0 +#endif`,XY=`#if NUM_SPOT_LIGHT_COORDS > 0 uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; #endif @@ -1738,7 +1738,7 @@ gl_Position = projectionMatrix * mvPosition;`,vY=`#ifdef DITHERING }; uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; #endif -#endif`,SY=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) +#endif`,YY=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); vec4 shadowWorldPosition; #endif @@ -1770,7 +1770,7 @@ gl_Position = projectionMatrix * mvPosition;`,vY=`#ifdef DITHERING vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; } #pragma unroll_loop_end -#endif`,xY=`float getShadowMask() { +#endif`,FY=`float getShadowMask() { float shadow = 1.0; #ifdef USE_SHADOWMAP #if NUM_DIR_LIGHT_SHADOWS > 0 @@ -1802,12 +1802,12 @@ gl_Position = projectionMatrix * mvPosition;`,vY=`#ifdef DITHERING #endif #endif return shadow; -}`,RY=`#ifdef USE_SKINNING +}`,KY=`#ifdef USE_SKINNING mat4 boneMatX = getBoneMatrix( skinIndex.x ); mat4 boneMatY = getBoneMatrix( skinIndex.y ); mat4 boneMatZ = getBoneMatrix( skinIndex.z ); mat4 boneMatW = getBoneMatrix( skinIndex.w ); -#endif`,WY=`#ifdef USE_SKINNING +#endif`,zY=`#ifdef USE_SKINNING uniform mat4 bindMatrix; uniform mat4 bindMatrixInverse; uniform highp sampler2D boneTexture; @@ -1826,7 +1826,7 @@ gl_Position = projectionMatrix * mvPosition;`,vY=`#ifdef DITHERING mat4 bone = mat4( v1, v2, v3, v4 ); return bone; } -#endif`,VY=`#ifdef USE_SKINNING +#endif`,LY=`#ifdef USE_SKINNING vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); vec4 skinned = vec4( 0.0 ); skinned += boneMatX * skinVertex * skinWeight.x; @@ -1834,7 +1834,7 @@ gl_Position = projectionMatrix * mvPosition;`,vY=`#ifdef DITHERING skinned += boneMatZ * skinVertex * skinWeight.z; skinned += boneMatW * skinVertex * skinWeight.w; transformed = ( bindMatrixInverse * skinned ).xyz; -#endif`,MY=`#ifdef USE_SKINNING +#endif`,EY=`#ifdef USE_SKINNING mat4 skinMatrix = mat4( 0.0 ); skinMatrix += skinWeight.x * boneMatX; skinMatrix += skinWeight.y * boneMatY; @@ -1845,17 +1845,17 @@ gl_Position = projectionMatrix * mvPosition;`,vY=`#ifdef DITHERING #ifdef USE_TANGENT objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; #endif -#endif`,NY=`float specularStrength; +#endif`,TY=`float specularStrength; #ifdef USE_SPECULARMAP vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); specularStrength = texelSpecular.r; #else specularStrength = 1.0; -#endif`,HY=`#ifdef USE_SPECULARMAP +#endif`,kY=`#ifdef USE_SPECULARMAP uniform sampler2D specularMap; -#endif`,XY=`#if defined( TONE_MAPPING ) +#endif`,DY=`#if defined( TONE_MAPPING ) gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); -#endif`,YY=`#ifndef saturate +#endif`,UY=`#ifndef saturate #define saturate( a ) clamp( a, 0.0, 1.0 ) #endif uniform float toneMappingExposure; @@ -1891,7 +1891,7 @@ vec3 ACESFilmicToneMapping( vec3 color ) { color = ACESOutputMat * color; return saturate( color ); } -vec3 CustomToneMapping( vec3 color ) { return color; }`,FY=`#ifdef USE_TRANSMISSION +vec3 CustomToneMapping( vec3 color ) { return color; }`,PY=`#ifdef USE_TRANSMISSION material.transmission = transmission; material.transmissionAlpha = 1.0; material.thickness = thickness; @@ -1912,7 +1912,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,FY=`#ifdef USE_TRANSMISS material.attenuationColor, material.attenuationDistance ); material.transmissionAlpha = mix( material.transmissionAlpha, transmission.a, material.transmission ); totalDiffuse = mix( totalDiffuse, transmission.rgb, material.transmission ); -#endif`,KY=`#ifdef USE_TRANSMISSION +#endif`,_Y=`#ifdef USE_TRANSMISSION uniform float transmission; uniform float thickness; uniform float attenuationDistance; @@ -2016,7 +2016,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,FY=`#ifdef USE_TRANSMISS vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); return vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a ); } -#endif`,zY=`#ifdef USE_UV +#endif`,JY=`#ifdef USE_UV varying vec2 vUv; #endif #ifdef USE_MAP @@ -2083,7 +2083,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,FY=`#ifdef USE_TRANSMISS #ifdef USE_THICKNESSMAP uniform mat3 thicknessMapTransform; varying vec2 vThicknessMapUv; -#endif`,LY=`#ifdef USE_UV +#endif`,OY=`#ifdef USE_UV varying vec2 vUv; #endif #ifdef USE_MAP @@ -2173,7 +2173,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,FY=`#ifdef USE_TRANSMISS #ifdef USE_THICKNESSMAP uniform mat3 thicknessMapTransform; varying vec2 vThicknessMapUv; -#endif`,TY=`#ifdef USE_UV +#endif`,QY=`#ifdef USE_UV vUv = vec3( uv, 1 ).xy; #endif #ifdef USE_MAP @@ -2241,18 +2241,18 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,FY=`#ifdef USE_TRANSMISS #endif #ifdef USE_THICKNESSMAP vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; -#endif`,EY=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 +#endif`,jY=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 vec4 worldPosition = vec4( transformed, 1.0 ); #ifdef USE_INSTANCING worldPosition = instanceMatrix * worldPosition; #endif worldPosition = modelMatrix * worldPosition; -#endif`;const kY=`varying vec2 vUv; +#endif`;const qY=`varying vec2 vUv; uniform mat3 uvTransform; void main() { vUv = ( uvTransform * vec3( uv, 1 ) ).xy; gl_Position = vec4( position.xy, 1.0, 1.0 ); -}`,DY=`uniform sampler2D t2D; +}`,$Y=`uniform sampler2D t2D; uniform float backgroundIntensity; varying vec2 vUv; void main() { @@ -2261,14 +2261,14 @@ void main() { gl_FragColor = texColor; #include #include -}`,UY=`varying vec3 vWorldDirection; +}`,eF=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include gl_Position.z = gl_Position.w; -}`,PY=`#ifdef ENVMAP_TYPE_CUBE +}`,tF=`#ifdef ENVMAP_TYPE_CUBE uniform samplerCube envMap; #elif defined( ENVMAP_TYPE_CUBE_UV ) uniform sampler2D envMap; @@ -2290,14 +2290,14 @@ void main() { gl_FragColor = texColor; #include #include -}`,_Y=`varying vec3 vWorldDirection; +}`,nF=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include gl_Position.z = gl_Position.w; -}`,JY=`uniform samplerCube tCube; +}`,iF=`uniform samplerCube tCube; uniform float tFlip; uniform float opacity; varying vec3 vWorldDirection; @@ -2307,7 +2307,7 @@ void main() { gl_FragColor.a *= opacity; #include #include -}`,OY=`#include +}`,sF=`#include #include #include #include @@ -2331,7 +2331,7 @@ void main() { #include #include vHighPrecisionZW = gl_Position.zw; -}`,QY=`#if DEPTH_PACKING == 3200 +}`,rF=`#if DEPTH_PACKING == 3200 uniform float opacity; #endif #include @@ -2359,7 +2359,7 @@ void main() { #elif DEPTH_PACKING == 3201 gl_FragColor = packDepthToRGBA( fragCoordZ ); #endif -}`,jY=`#define DISTANCE +}`,oF=`#define DISTANCE varying vec3 vWorldPosition; #include #include @@ -2383,7 +2383,7 @@ void main() { #include #include vWorldPosition = worldPosition.xyz; -}`,qY=`#define DISTANCE +}`,aF=`#define DISTANCE uniform vec3 referencePosition; uniform float nearDistance; uniform float farDistance; @@ -2405,13 +2405,13 @@ void main () { dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); dist = saturate( dist ); gl_FragColor = packDepthToRGBA( dist ); -}`,$Y=`varying vec3 vWorldDirection; +}`,lF=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include -}`,eF=`uniform sampler2D tEquirect; +}`,gF=`uniform sampler2D tEquirect; varying vec3 vWorldDirection; #include void main() { @@ -2420,7 +2420,7 @@ void main() { gl_FragColor = texture2D( tEquirect, sampleUV ); #include #include -}`,tF=`uniform float scale; +}`,cF=`uniform float scale; attribute float lineDistance; varying float vLineDistance; #include @@ -2441,7 +2441,7 @@ void main() { #include #include #include -}`,nF=`uniform vec3 diffuse; +}`,IF=`uniform vec3 diffuse; uniform float opacity; uniform float dashSize; uniform float totalSize; @@ -2469,7 +2469,7 @@ void main() { #include #include #include -}`,iF=`#include +}`,uF=`#include #include #include #include @@ -2498,7 +2498,7 @@ void main() { #include #include #include -}`,sF=`uniform vec3 diffuse; +}`,CF=`uniform vec3 diffuse; uniform float opacity; #ifndef FLAT_SHADED varying vec3 vNormal; @@ -2544,7 +2544,7 @@ void main() { #include #include #include -}`,rF=`#define LAMBERT +}`,dF=`#define LAMBERT varying vec3 vViewPosition; #include #include @@ -2580,7 +2580,7 @@ void main() { #include #include #include -}`,oF=`#define LAMBERT +}`,hF=`#define LAMBERT uniform vec3 diffuse; uniform vec3 emissive; uniform float opacity; @@ -2635,7 +2635,7 @@ void main() { #include #include #include -}`,aF=`#define MATCAP +}`,AF=`#define MATCAP varying vec3 vViewPosition; #include #include @@ -2666,7 +2666,7 @@ void main() { #include #include vViewPosition = - mvPosition.xyz; -}`,lF=`#define MATCAP +}`,pF=`#define MATCAP uniform vec3 diffuse; uniform float opacity; uniform sampler2D matcap; @@ -2710,7 +2710,7 @@ void main() { #include #include #include -}`,gF=`#define NORMAL +}`,mF=`#define NORMAL #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) varying vec3 vViewPosition; #endif @@ -2740,7 +2740,7 @@ void main() { #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) vViewPosition = - mvPosition.xyz; #endif -}`,cF=`#define NORMAL +}`,fF=`#define NORMAL uniform float opacity; #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) varying vec3 vViewPosition; @@ -2761,7 +2761,7 @@ void main() { #ifdef OPAQUE gl_FragColor.a = 1.0; #endif -}`,IF=`#define PHONG +}`,bF=`#define PHONG varying vec3 vViewPosition; #include #include @@ -2797,7 +2797,7 @@ void main() { #include #include #include -}`,uF=`#define PHONG +}`,vF=`#define PHONG uniform vec3 diffuse; uniform vec3 emissive; uniform vec3 specular; @@ -2854,7 +2854,7 @@ void main() { #include #include #include -}`,CF=`#define STANDARD +}`,yF=`#define STANDARD varying vec3 vViewPosition; #ifdef USE_TRANSMISSION varying vec3 vWorldPosition; @@ -2894,7 +2894,7 @@ void main() { #ifdef USE_TRANSMISSION vWorldPosition = worldPosition.xyz; #endif -}`,dF=`#define STANDARD +}`,GF=`#define STANDARD #ifdef PHYSICAL #define IOR #define USE_SPECULAR @@ -3008,7 +3008,7 @@ void main() { #include #include #include -}`,hF=`#define TOON +}`,BF=`#define TOON varying vec3 vViewPosition; #include #include @@ -3042,7 +3042,7 @@ void main() { #include #include #include -}`,AF=`#define TOON +}`,ZF=`#define TOON uniform vec3 diffuse; uniform vec3 emissive; uniform float opacity; @@ -3093,7 +3093,7 @@ void main() { #include #include #include -}`,pF=`uniform float size; +}`,wF=`uniform float size; uniform float scale; #include #include @@ -3123,7 +3123,7 @@ void main() { #include #include #include -}`,mF=`uniform vec3 diffuse; +}`,SF=`uniform vec3 diffuse; uniform float opacity; #include #include @@ -3146,7 +3146,7 @@ void main() { #include #include #include -}`,fF=`#include +}`,xF=`#include #include #include #include @@ -3166,7 +3166,7 @@ void main() { #include #include #include -}`,bF=`uniform vec3 color; +}`,RF=`uniform vec3 color; uniform float opacity; #include #include @@ -3182,7 +3182,7 @@ void main() { #include #include #include -}`,vF=`uniform float rotation; +}`,WF=`uniform float rotation; uniform vec2 center; #include #include @@ -3208,7 +3208,7 @@ void main() { #include #include #include -}`,yF=`uniform vec3 diffuse; +}`,VF=`uniform vec3 diffuse; uniform float opacity; #include #include @@ -3231,7 +3231,7 @@ void main() { #include #include #include -}`,tt={alphamap_fragment:JH,alphamap_pars_fragment:OH,alphatest_fragment:QH,alphatest_pars_fragment:jH,aomap_fragment:qH,aomap_pars_fragment:$H,begin_vertex:eX,beginnormal_vertex:tX,bsdfs:nX,iridescence_fragment:iX,bumpmap_pars_fragment:sX,clipping_planes_fragment:rX,clipping_planes_pars_fragment:oX,clipping_planes_pars_vertex:aX,clipping_planes_vertex:lX,color_fragment:gX,color_pars_fragment:cX,color_pars_vertex:IX,color_vertex:uX,common:CX,cube_uv_reflection_fragment:dX,defaultnormal_vertex:hX,displacementmap_pars_vertex:AX,displacementmap_vertex:pX,emissivemap_fragment:mX,emissivemap_pars_fragment:fX,encodings_fragment:bX,encodings_pars_fragment:vX,envmap_fragment:yX,envmap_common_pars_fragment:GX,envmap_pars_fragment:BX,envmap_pars_vertex:ZX,envmap_physical_pars_fragment:FX,envmap_vertex:wX,fog_vertex:SX,fog_pars_vertex:xX,fog_fragment:RX,fog_pars_fragment:WX,gradientmap_pars_fragment:VX,lightmap_fragment:MX,lightmap_pars_fragment:NX,lights_lambert_fragment:HX,lights_lambert_pars_fragment:XX,lights_pars_begin:YX,lights_toon_fragment:KX,lights_toon_pars_fragment:zX,lights_phong_fragment:LX,lights_phong_pars_fragment:TX,lights_physical_fragment:EX,lights_physical_pars_fragment:kX,lights_fragment_begin:DX,lights_fragment_maps:UX,lights_fragment_end:PX,logdepthbuf_fragment:_X,logdepthbuf_pars_fragment:JX,logdepthbuf_pars_vertex:OX,logdepthbuf_vertex:QX,map_fragment:jX,map_pars_fragment:qX,map_particle_fragment:$X,map_particle_pars_fragment:eY,metalnessmap_fragment:tY,metalnessmap_pars_fragment:nY,morphcolor_vertex:iY,morphnormal_vertex:sY,morphtarget_pars_vertex:rY,morphtarget_vertex:oY,normal_fragment_begin:aY,normal_fragment_maps:lY,normal_pars_fragment:gY,normal_pars_vertex:cY,normal_vertex:IY,normalmap_pars_fragment:uY,clearcoat_normal_fragment_begin:CY,clearcoat_normal_fragment_maps:dY,clearcoat_pars_fragment:hY,iridescence_pars_fragment:AY,output_fragment:pY,packing:mY,premultiplied_alpha_fragment:fY,project_vertex:bY,dithering_fragment:vY,dithering_pars_fragment:yY,roughnessmap_fragment:GY,roughnessmap_pars_fragment:BY,shadowmap_pars_fragment:ZY,shadowmap_pars_vertex:wY,shadowmap_vertex:SY,shadowmask_pars_fragment:xY,skinbase_vertex:RY,skinning_pars_vertex:WY,skinning_vertex:VY,skinnormal_vertex:MY,specularmap_fragment:NY,specularmap_pars_fragment:HY,tonemapping_fragment:XY,tonemapping_pars_fragment:YY,transmission_fragment:FY,transmission_pars_fragment:KY,uv_pars_fragment:zY,uv_pars_vertex:LY,uv_vertex:TY,worldpos_vertex:EY,background_vert:kY,background_frag:DY,backgroundCube_vert:UY,backgroundCube_frag:PY,cube_vert:_Y,cube_frag:JY,depth_vert:OY,depth_frag:QY,distanceRGBA_vert:jY,distanceRGBA_frag:qY,equirect_vert:$Y,equirect_frag:eF,linedashed_vert:tF,linedashed_frag:nF,meshbasic_vert:iF,meshbasic_frag:sF,meshlambert_vert:rF,meshlambert_frag:oF,meshmatcap_vert:aF,meshmatcap_frag:lF,meshnormal_vert:gF,meshnormal_frag:cF,meshphong_vert:IF,meshphong_frag:uF,meshphysical_vert:CF,meshphysical_frag:dF,meshtoon_vert:hF,meshtoon_frag:AF,points_vert:pF,points_frag:mF,shadow_vert:fF,shadow_frag:bF,sprite_vert:vF,sprite_frag:yF},We={common:{diffuse:{value:new Re(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new xt},alphaMap:{value:null},alphaMapTransform:{value:new xt},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new xt}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new xt}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new xt}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new xt},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new xt},normalScale:{value:new ne(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new xt},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new xt}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new xt}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new xt}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Re(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Re(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new xt}},sprite:{diffuse:{value:new Re(16777215)},opacity:{value:1},center:{value:new ne(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new xt},alphaMap:{value:null},alphaTest:{value:0}}},or={basic:{uniforms:wi([We.common,We.specularmap,We.envmap,We.aomap,We.lightmap,We.fog]),vertexShader:tt.meshbasic_vert,fragmentShader:tt.meshbasic_frag},lambert:{uniforms:wi([We.common,We.specularmap,We.envmap,We.aomap,We.lightmap,We.emissivemap,We.bumpmap,We.normalmap,We.displacementmap,We.fog,We.lights,{emissive:{value:new Re(0)}}]),vertexShader:tt.meshlambert_vert,fragmentShader:tt.meshlambert_frag},phong:{uniforms:wi([We.common,We.specularmap,We.envmap,We.aomap,We.lightmap,We.emissivemap,We.bumpmap,We.normalmap,We.displacementmap,We.fog,We.lights,{emissive:{value:new Re(0)},specular:{value:new Re(1118481)},shininess:{value:30}}]),vertexShader:tt.meshphong_vert,fragmentShader:tt.meshphong_frag},standard:{uniforms:wi([We.common,We.envmap,We.aomap,We.lightmap,We.emissivemap,We.bumpmap,We.normalmap,We.displacementmap,We.roughnessmap,We.metalnessmap,We.fog,We.lights,{emissive:{value:new Re(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:tt.meshphysical_vert,fragmentShader:tt.meshphysical_frag},toon:{uniforms:wi([We.common,We.aomap,We.lightmap,We.emissivemap,We.bumpmap,We.normalmap,We.displacementmap,We.gradientmap,We.fog,We.lights,{emissive:{value:new Re(0)}}]),vertexShader:tt.meshtoon_vert,fragmentShader:tt.meshtoon_frag},matcap:{uniforms:wi([We.common,We.bumpmap,We.normalmap,We.displacementmap,We.fog,{matcap:{value:null}}]),vertexShader:tt.meshmatcap_vert,fragmentShader:tt.meshmatcap_frag},points:{uniforms:wi([We.points,We.fog]),vertexShader:tt.points_vert,fragmentShader:tt.points_frag},dashed:{uniforms:wi([We.common,We.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:tt.linedashed_vert,fragmentShader:tt.linedashed_frag},depth:{uniforms:wi([We.common,We.displacementmap]),vertexShader:tt.depth_vert,fragmentShader:tt.depth_frag},normal:{uniforms:wi([We.common,We.bumpmap,We.normalmap,We.displacementmap,{opacity:{value:1}}]),vertexShader:tt.meshnormal_vert,fragmentShader:tt.meshnormal_frag},sprite:{uniforms:wi([We.sprite,We.fog]),vertexShader:tt.sprite_vert,fragmentShader:tt.sprite_frag},background:{uniforms:{uvTransform:{value:new xt},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:tt.background_vert,fragmentShader:tt.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:tt.backgroundCube_vert,fragmentShader:tt.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:tt.cube_vert,fragmentShader:tt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:tt.equirect_vert,fragmentShader:tt.equirect_frag},distanceRGBA:{uniforms:wi([We.common,We.displacementmap,{referencePosition:{value:new H},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:tt.distanceRGBA_vert,fragmentShader:tt.distanceRGBA_frag},shadow:{uniforms:wi([We.lights,We.fog,{color:{value:new Re(0)},opacity:{value:1}}]),vertexShader:tt.shadow_vert,fragmentShader:tt.shadow_frag}};or.physical={uniforms:wi([or.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new xt},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new xt},clearcoatNormalScale:{value:new ne(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new xt},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new xt},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new xt},sheen:{value:0},sheenColor:{value:new Re(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new xt},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new xt},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new xt},transmissionSamplerSize:{value:new ne},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new xt},attenuationDistance:{value:0},attenuationColor:{value:new Re(0)},specularColor:{value:new Re(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new xt},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new xt}}]),vertexShader:tt.meshphysical_vert,fragmentShader:tt.meshphysical_frag};const wd={r:0,b:0,g:0};function GF(n,e,t,i,s,r,o){const a=new Re(0);let l=r===!0?0:1,c,u,C=null,d=0,h=null;function m(y,A){let b=!1,f=A.isScene===!0?A.background:null;switch(f&&f.isTexture&&(f=(A.backgroundBlurriness>0?t:e).get(f)),f===null?v(a,l):f&&f.isColor&&(v(f,1),b=!0),n.xr.getEnvironmentBlendMode()){case"opaque":b=!0;break;case"additive":i.buffers.color.setClear(0,0,0,1,o),b=!0;break;case"alpha-blend":i.buffers.color.setClear(0,0,0,0,o),b=!0;break}(n.autoClear||b)&&n.clear(n.autoClearColor,n.autoClearDepth,n.autoClearStencil),f&&(f.isCubeTexture||f.mapping===oc)?(u===void 0&&(u=new En(new Aa(1,1,1),new Zt({name:"BackgroundCubeMaterial",uniforms:$g(or.backgroundCube.uniforms),vertexShader:or.backgroundCube.vertexShader,fragmentShader:or.backgroundCube.fragmentShader,side:Tn,depthTest:!1,depthWrite:!1,fog:!1})),u.geometry.deleteAttribute("normal"),u.geometry.deleteAttribute("uv"),u.onBeforeRender=function(x,R,M){this.matrixWorld.copyPosition(M.matrixWorld)},Object.defineProperty(u.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),s.update(u)),u.material.uniforms.envMap.value=f,u.material.uniforms.flipEnvMap.value=f.isCubeTexture&&f.isRenderTargetTexture===!1?-1:1,u.material.uniforms.backgroundBlurriness.value=A.backgroundBlurriness,u.material.uniforms.backgroundIntensity.value=A.backgroundIntensity,u.material.toneMapped=f.colorSpace!==mt,(C!==f||d!==f.version||h!==n.toneMapping)&&(u.material.needsUpdate=!0,C=f,d=f.version,h=n.toneMapping),u.layers.enableAll(),y.unshift(u,u.geometry,u.material,0,0,null)):f&&f.isTexture&&(c===void 0&&(c=new En(new vl(2,2),new Zt({name:"BackgroundMaterial",uniforms:$g(or.background.uniforms),vertexShader:or.background.vertexShader,fragmentShader:or.background.fragmentShader,side:Hr,depthTest:!1,depthWrite:!1,fog:!1})),c.geometry.deleteAttribute("normal"),Object.defineProperty(c.material,"map",{get:function(){return this.uniforms.t2D.value}}),s.update(c)),c.material.uniforms.t2D.value=f,c.material.uniforms.backgroundIntensity.value=A.backgroundIntensity,c.material.toneMapped=f.colorSpace!==mt,f.matrixAutoUpdate===!0&&f.updateMatrix(),c.material.uniforms.uvTransform.value.copy(f.matrix),(C!==f||d!==f.version||h!==n.toneMapping)&&(c.material.needsUpdate=!0,C=f,d=f.version,h=n.toneMapping),c.layers.enableAll(),y.unshift(c,c.geometry,c.material,0,0,null))}function v(y,A){y.getRGB(wd,G1(n)),i.buffers.color.setClear(wd.r,wd.g,wd.b,A,o)}return{getClearColor:function(){return a},setClearColor:function(y,A=1){a.set(y),l=A,v(a,l)},getClearAlpha:function(){return l},setClearAlpha:function(y){l=y,v(a,l)},render:m}}function BF(n,e,t,i){const s=n.getParameter(n.MAX_VERTEX_ATTRIBS),r=i.isWebGL2?null:e.get("OES_vertex_array_object"),o=i.isWebGL2||r!==null,a={},l=y(null);let c=l,u=!1;function C($,te,Ce,le,L){let J=!1;if(o){const P=v(le,Ce,te);c!==P&&(c=P,h(c.object)),J=A($,le,Ce,L),J&&b($,le,Ce,L)}else{const P=te.wireframe===!0;(c.geometry!==le.id||c.program!==Ce.id||c.wireframe!==P)&&(c.geometry=le.id,c.program=Ce.id,c.wireframe=P,J=!0)}L!==null&&t.update(L,n.ELEMENT_ARRAY_BUFFER),(J||u)&&(u=!1,M($,te,Ce,le),L!==null&&n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,t.get(L).buffer))}function d(){return i.isWebGL2?n.createVertexArray():r.createVertexArrayOES()}function h($){return i.isWebGL2?n.bindVertexArray($):r.bindVertexArrayOES($)}function m($){return i.isWebGL2?n.deleteVertexArray($):r.deleteVertexArrayOES($)}function v($,te,Ce){const le=Ce.wireframe===!0;let L=a[$.id];L===void 0&&(L={},a[$.id]=L);let J=L[te.id];J===void 0&&(J={},L[te.id]=J);let P=J[le];return P===void 0&&(P=y(d()),J[le]=P),P}function y($){const te=[],Ce=[],le=[];for(let L=0;L=0){const re=L[se];let ve=J[se];if(ve===void 0&&(se==="instanceMatrix"&&$.instanceMatrix&&(ve=$.instanceMatrix),se==="instanceColor"&&$.instanceColor&&(ve=$.instanceColor)),re===void 0||re.attribute!==ve||ve&&re.data!==ve.data)return!0;P++}return c.attributesNum!==P||c.index!==le}function b($,te,Ce,le){const L={},J=te.attributes;let P=0;const ce=Ce.getAttributes();for(const se in ce)if(ce[se].location>=0){let re=J[se];re===void 0&&(se==="instanceMatrix"&&$.instanceMatrix&&(re=$.instanceMatrix),se==="instanceColor"&&$.instanceColor&&(re=$.instanceColor));const ve={};ve.attribute=re,re&&re.data&&(ve.data=re.data),L[se]=ve,P++}c.attributes=L,c.attributesNum=P,c.index=le}function f(){const $=c.newAttributes;for(let te=0,Ce=$.length;te=0){let ee=L[ce];if(ee===void 0&&(ce==="instanceMatrix"&&$.instanceMatrix&&(ee=$.instanceMatrix),ce==="instanceColor"&&$.instanceColor&&(ee=$.instanceColor)),ee!==void 0){const re=ee.normalized,ve=ee.itemSize,ye=t.get(ee);if(ye===void 0)continue;const _=ye.buffer,nt=ye.type,lt=ye.bytesPerElement;if(ee.isInterleavedBufferAttribute){const Se=ee.data,Xe=Se.stride,fe=ee.offset;if(Se.isInstancedInterleavedBuffer){for(let ue=0;ue0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.HIGH_FLOAT).precision>0)return"highp";R="mediump"}return R==="mediump"&&n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.MEDIUM_FLOAT).precision>0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}const o=typeof WebGL2RenderingContext<"u"&&n.constructor.name==="WebGL2RenderingContext";let a=t.precision!==void 0?t.precision:"highp";const l=r(a);l!==a&&(console.warn("THREE.WebGLRenderer:",a,"not supported, using",l,"instead."),a=l);const c=o||e.has("WEBGL_draw_buffers"),u=t.logarithmicDepthBuffer===!0,C=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS),d=n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS),h=n.getParameter(n.MAX_TEXTURE_SIZE),m=n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE),v=n.getParameter(n.MAX_VERTEX_ATTRIBS),y=n.getParameter(n.MAX_VERTEX_UNIFORM_VECTORS),A=n.getParameter(n.MAX_VARYING_VECTORS),b=n.getParameter(n.MAX_FRAGMENT_UNIFORM_VECTORS),f=d>0,B=o||e.has("OES_texture_float"),S=f&&B,x=o?n.getParameter(n.MAX_SAMPLES):0;return{isWebGL2:o,drawBuffers:c,getMaxAnisotropy:s,getMaxPrecision:r,precision:a,logarithmicDepthBuffer:u,maxTextures:C,maxVertexTextures:d,maxTextureSize:h,maxCubemapSize:m,maxAttributes:v,maxVertexUniforms:y,maxVaryings:A,maxFragmentUniforms:b,vertexTextures:f,floatFragmentTextures:B,floatVertexTextures:S,maxSamples:x}}function SF(n){const e=this;let t=null,i=0,s=!1,r=!1;const o=new To,a=new xt,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(C,d){const h=C.length!==0||d||i!==0||s;return s=d,i=C.length,h},this.beginShadows=function(){r=!0,u(null)},this.endShadows=function(){r=!1},this.setGlobalState=function(C,d){t=u(C,d,0)},this.setState=function(C,d,h){const m=C.clippingPlanes,v=C.clipIntersection,y=C.clipShadows,A=n.get(C);if(!s||m===null||m.length===0||r&&!y)r?u(null):c();else{const b=r?0:i,f=b*4;let B=A.clippingState||null;l.value=B,B=u(m,d,f,h);for(let S=0;S!==f;++S)B[S]=t[S];A.clippingState=B,this.numIntersection=v?this.numPlanes:0,this.numPlanes+=b}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=i>0),e.numPlanes=i,e.numIntersection=0}function u(C,d,h,m){const v=C!==null?C.length:0;let y=null;if(v!==0){if(y=l.value,m!==!0||y===null){const A=h+v*4,b=d.matrixWorldInverse;a.getNormalMatrix(b),(y===null||y.length0){const c=new NA(l.height/2);return c.fromEquirectangularTexture(n,o),e.set(o,c),o.addEventListener("dispose",s),t(c.texture,o.mapping)}else return null}}return o}function s(o){const a=o.target;a.removeEventListener("dispose",s);const l=e.get(a);l!==void 0&&(e.delete(a),l.dispose())}function r(){e=new WeakMap}return{get:i,dispose:r}}class lc extends ac{constructor(e=-1,t=1,i=1,s=-1,r=.1,o=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=i,this.bottom=s,this.near=r,this.far=o,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,i,s,r,o){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=s,this.view.width=r,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,s=(this.top+this.bottom)/2;let r=i-e,o=i+e,a=s+t,l=s-t;if(this.view!==null&&this.view.enabled){const c=(this.right-this.left)/this.view.fullWidth/this.zoom,u=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=c*this.view.offsetX,o=r+c*this.view.width,a-=u*this.view.offsetY,l=a-u*this.view.height}this.projectionMatrix.makeOrthographic(r,o,a,l,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}}const xg=4,w2=[.125,.215,.35,.446,.526,.582],ka=20,Om=new lc,S2=new Re;let Qm=null;const La=(1+Math.sqrt(5))/2,ig=1/La,x2=[new H(1,1,1),new H(-1,1,1),new H(1,1,-1),new H(-1,1,-1),new H(0,La,ig),new H(0,La,-ig),new H(ig,0,La),new H(-ig,0,La),new H(La,ig,0),new H(-La,ig,0)];class aA{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,i=.1,s=100){Qm=this._renderer.getRenderTarget(),this._setSize(256);const r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(e,i,s,r),t>0&&this._blur(r,0,0,t),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=V2(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=W2(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?f:0,f,f),u.setRenderTarget(s),v&&u.render(m,a),u.render(e,a)}m.geometry.dispose(),m.material.dispose(),u.toneMapping=d,u.autoClear=C,e.background=y}_textureToCubeUV(e,t){const i=this._renderer,s=e.mapping===oa||e.mapping===aa;s?(this._cubemapMaterial===null&&(this._cubemapMaterial=V2()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=W2());const r=s?this._cubemapMaterial:this._equirectMaterial,o=new En(this._lodPlanes[0],r),a=r.uniforms;a.envMap.value=e;const l=this._cubeSize;Sd(t,0,0,3*l,2*l),i.setRenderTarget(t),i.render(o,Om)}_applyPMREM(e){const t=this._renderer,i=t.autoClear;t.autoClear=!1;for(let s=1;ska&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${y} samples when the maximum is set to ${ka}`);const A=[];let b=0;for(let R=0;Rf-xg?s-f+xg:0),x=4*(this._cubeSize-B);Sd(t,S,x,3*B,2*B),l.setRenderTarget(t),l.render(C,Om)}}function RF(n){const e=[],t=[],i=[];let s=n;const r=n-xg+1+w2.length;for(let o=0;on-xg?l=w2[o-n+xg-1]:o===0&&(l=0),i.push(l);const c=1/(a-2),u=-c,C=1+c,d=[u,u,C,u,C,C,u,u,C,C,u,C],h=6,m=6,v=3,y=2,A=1,b=new Float32Array(v*m*h),f=new Float32Array(y*m*h),B=new Float32Array(A*m*h);for(let x=0;x2?0:-1,Z=[R,M,0,R+2/3,M,0,R+2/3,M+1,0,R,M,0,R+2/3,M+1,0,R,M+1,0];b.set(Z,v*m*x),f.set(d,y*m*x);const V=[x,x,x,x,x,x];B.set(V,A*m*x)}const S=new ft;S.setAttribute("position",new kt(b,v)),S.setAttribute("uv",new kt(f,y)),S.setAttribute("faceIndex",new kt(B,A)),e.push(S),s>xg&&s--}return{lodPlanes:e,sizeLods:t,sigmas:i}}function R2(n,e,t){const i=new Rt(n,e,t);return i.texture.mapping=oc,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function Sd(n,e,t,i,s){n.viewport.set(e,t,i,s),n.scissor.set(e,t,i,s)}function WF(n,e,t){const i=new Float32Array(ka),s=new H(0,1,0);return new Zt({name:"SphericalGaussianBlur",defines:{n:ka,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${n}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:s}},vertexShader:Yv(),fragmentShader:` +}`,tt={alphamap_fragment:iX,alphamap_pars_fragment:sX,alphatest_fragment:rX,alphatest_pars_fragment:oX,aomap_fragment:aX,aomap_pars_fragment:lX,begin_vertex:gX,beginnormal_vertex:cX,bsdfs:IX,iridescence_fragment:uX,bumpmap_pars_fragment:CX,clipping_planes_fragment:dX,clipping_planes_pars_fragment:hX,clipping_planes_pars_vertex:AX,clipping_planes_vertex:pX,color_fragment:mX,color_pars_fragment:fX,color_pars_vertex:bX,color_vertex:vX,common:yX,cube_uv_reflection_fragment:GX,defaultnormal_vertex:BX,displacementmap_pars_vertex:ZX,displacementmap_vertex:wX,emissivemap_fragment:SX,emissivemap_pars_fragment:xX,encodings_fragment:RX,encodings_pars_fragment:WX,envmap_fragment:VX,envmap_common_pars_fragment:MX,envmap_pars_fragment:NX,envmap_pars_vertex:HX,envmap_physical_pars_fragment:PX,envmap_vertex:XX,fog_vertex:YX,fog_pars_vertex:FX,fog_fragment:KX,fog_pars_fragment:zX,gradientmap_pars_fragment:LX,lightmap_fragment:EX,lightmap_pars_fragment:TX,lights_lambert_fragment:kX,lights_lambert_pars_fragment:DX,lights_pars_begin:UX,lights_toon_fragment:_X,lights_toon_pars_fragment:JX,lights_phong_fragment:OX,lights_phong_pars_fragment:QX,lights_physical_fragment:jX,lights_physical_pars_fragment:qX,lights_fragment_begin:$X,lights_fragment_maps:eY,lights_fragment_end:tY,logdepthbuf_fragment:nY,logdepthbuf_pars_fragment:iY,logdepthbuf_pars_vertex:sY,logdepthbuf_vertex:rY,map_fragment:oY,map_pars_fragment:aY,map_particle_fragment:lY,map_particle_pars_fragment:gY,metalnessmap_fragment:cY,metalnessmap_pars_fragment:IY,morphcolor_vertex:uY,morphnormal_vertex:CY,morphtarget_pars_vertex:dY,morphtarget_vertex:hY,normal_fragment_begin:AY,normal_fragment_maps:pY,normal_pars_fragment:mY,normal_pars_vertex:fY,normal_vertex:bY,normalmap_pars_fragment:vY,clearcoat_normal_fragment_begin:yY,clearcoat_normal_fragment_maps:GY,clearcoat_pars_fragment:BY,iridescence_pars_fragment:ZY,output_fragment:wY,packing:SY,premultiplied_alpha_fragment:xY,project_vertex:RY,dithering_fragment:WY,dithering_pars_fragment:VY,roughnessmap_fragment:MY,roughnessmap_pars_fragment:NY,shadowmap_pars_fragment:HY,shadowmap_pars_vertex:XY,shadowmap_vertex:YY,shadowmask_pars_fragment:FY,skinbase_vertex:KY,skinning_pars_vertex:zY,skinning_vertex:LY,skinnormal_vertex:EY,specularmap_fragment:TY,specularmap_pars_fragment:kY,tonemapping_fragment:DY,tonemapping_pars_fragment:UY,transmission_fragment:PY,transmission_pars_fragment:_Y,uv_pars_fragment:JY,uv_pars_vertex:OY,uv_vertex:QY,worldpos_vertex:jY,background_vert:qY,background_frag:$Y,backgroundCube_vert:eF,backgroundCube_frag:tF,cube_vert:nF,cube_frag:iF,depth_vert:sF,depth_frag:rF,distanceRGBA_vert:oF,distanceRGBA_frag:aF,equirect_vert:lF,equirect_frag:gF,linedashed_vert:cF,linedashed_frag:IF,meshbasic_vert:uF,meshbasic_frag:CF,meshlambert_vert:dF,meshlambert_frag:hF,meshmatcap_vert:AF,meshmatcap_frag:pF,meshnormal_vert:mF,meshnormal_frag:fF,meshphong_vert:bF,meshphong_frag:vF,meshphysical_vert:yF,meshphysical_frag:GF,meshtoon_vert:BF,meshtoon_frag:ZF,points_vert:wF,points_frag:SF,shadow_vert:xF,shadow_frag:RF,sprite_vert:WF,sprite_frag:VF},We={common:{diffuse:{value:new Re(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new xt},alphaMap:{value:null},alphaMapTransform:{value:new xt},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new xt}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new xt}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new xt}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new xt},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new xt},normalScale:{value:new ne(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new xt},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new xt}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new xt}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new xt}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Re(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Re(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new xt}},sprite:{diffuse:{value:new Re(16777215)},opacity:{value:1},center:{value:new ne(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new xt},alphaMap:{value:null},alphaTest:{value:0}}},ar={basic:{uniforms:Si([We.common,We.specularmap,We.envmap,We.aomap,We.lightmap,We.fog]),vertexShader:tt.meshbasic_vert,fragmentShader:tt.meshbasic_frag},lambert:{uniforms:Si([We.common,We.specularmap,We.envmap,We.aomap,We.lightmap,We.emissivemap,We.bumpmap,We.normalmap,We.displacementmap,We.fog,We.lights,{emissive:{value:new Re(0)}}]),vertexShader:tt.meshlambert_vert,fragmentShader:tt.meshlambert_frag},phong:{uniforms:Si([We.common,We.specularmap,We.envmap,We.aomap,We.lightmap,We.emissivemap,We.bumpmap,We.normalmap,We.displacementmap,We.fog,We.lights,{emissive:{value:new Re(0)},specular:{value:new Re(1118481)},shininess:{value:30}}]),vertexShader:tt.meshphong_vert,fragmentShader:tt.meshphong_frag},standard:{uniforms:Si([We.common,We.envmap,We.aomap,We.lightmap,We.emissivemap,We.bumpmap,We.normalmap,We.displacementmap,We.roughnessmap,We.metalnessmap,We.fog,We.lights,{emissive:{value:new Re(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:tt.meshphysical_vert,fragmentShader:tt.meshphysical_frag},toon:{uniforms:Si([We.common,We.aomap,We.lightmap,We.emissivemap,We.bumpmap,We.normalmap,We.displacementmap,We.gradientmap,We.fog,We.lights,{emissive:{value:new Re(0)}}]),vertexShader:tt.meshtoon_vert,fragmentShader:tt.meshtoon_frag},matcap:{uniforms:Si([We.common,We.bumpmap,We.normalmap,We.displacementmap,We.fog,{matcap:{value:null}}]),vertexShader:tt.meshmatcap_vert,fragmentShader:tt.meshmatcap_frag},points:{uniforms:Si([We.points,We.fog]),vertexShader:tt.points_vert,fragmentShader:tt.points_frag},dashed:{uniforms:Si([We.common,We.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:tt.linedashed_vert,fragmentShader:tt.linedashed_frag},depth:{uniforms:Si([We.common,We.displacementmap]),vertexShader:tt.depth_vert,fragmentShader:tt.depth_frag},normal:{uniforms:Si([We.common,We.bumpmap,We.normalmap,We.displacementmap,{opacity:{value:1}}]),vertexShader:tt.meshnormal_vert,fragmentShader:tt.meshnormal_frag},sprite:{uniforms:Si([We.sprite,We.fog]),vertexShader:tt.sprite_vert,fragmentShader:tt.sprite_frag},background:{uniforms:{uvTransform:{value:new xt},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:tt.background_vert,fragmentShader:tt.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:tt.backgroundCube_vert,fragmentShader:tt.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:tt.cube_vert,fragmentShader:tt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:tt.equirect_vert,fragmentShader:tt.equirect_frag},distanceRGBA:{uniforms:Si([We.common,We.displacementmap,{referencePosition:{value:new H},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:tt.distanceRGBA_vert,fragmentShader:tt.distanceRGBA_frag},shadow:{uniforms:Si([We.lights,We.fog,{color:{value:new Re(0)},opacity:{value:1}}]),vertexShader:tt.shadow_vert,fragmentShader:tt.shadow_frag}};ar.physical={uniforms:Si([ar.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new xt},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new xt},clearcoatNormalScale:{value:new ne(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new xt},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new xt},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new xt},sheen:{value:0},sheenColor:{value:new Re(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new xt},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new xt},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new xt},transmissionSamplerSize:{value:new ne},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new xt},attenuationDistance:{value:0},attenuationColor:{value:new Re(0)},specularColor:{value:new Re(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new xt},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new xt}}]),vertexShader:tt.meshphysical_vert,fragmentShader:tt.meshphysical_frag};const Md={r:0,b:0,g:0};function MF(n,e,t,i,s,r,o){const a=new Re(0);let l=r===!0?0:1,c,u,C=null,d=0,h=null;function m(y,A){let b=!1,f=A.isScene===!0?A.background:null;switch(f&&f.isTexture&&(f=(A.backgroundBlurriness>0?t:e).get(f)),f===null?v(a,l):f&&f.isColor&&(v(f,1),b=!0),n.xr.getEnvironmentBlendMode()){case"opaque":b=!0;break;case"additive":i.buffers.color.setClear(0,0,0,1,o),b=!0;break;case"alpha-blend":i.buffers.color.setClear(0,0,0,0,o),b=!0;break}(n.autoClear||b)&&n.clear(n.autoClearColor,n.autoClearDepth,n.autoClearStencil),f&&(f.isCubeTexture||f.mapping===gc)?(u===void 0&&(u=new kn(new ma(1,1,1),new Zt({name:"BackgroundCubeMaterial",uniforms:nc(ar.backgroundCube.uniforms),vertexShader:ar.backgroundCube.vertexShader,fragmentShader:ar.backgroundCube.fragmentShader,side:Tn,depthTest:!1,depthWrite:!1,fog:!1})),u.geometry.deleteAttribute("normal"),u.geometry.deleteAttribute("uv"),u.onBeforeRender=function(x,R,M){this.matrixWorld.copyPosition(M.matrixWorld)},Object.defineProperty(u.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),s.update(u)),u.material.uniforms.envMap.value=f,u.material.uniforms.flipEnvMap.value=f.isCubeTexture&&f.isRenderTargetTexture===!1?-1:1,u.material.uniforms.backgroundBlurriness.value=A.backgroundBlurriness,u.material.uniforms.backgroundIntensity.value=A.backgroundIntensity,u.material.toneMapped=f.colorSpace!==mt,(C!==f||d!==f.version||h!==n.toneMapping)&&(u.material.needsUpdate=!0,C=f,d=f.version,h=n.toneMapping),u.layers.enableAll(),y.unshift(u,u.geometry,u.material,0,0,null)):f&&f.isTexture&&(c===void 0&&(c=new kn(new yl(2,2),new Zt({name:"BackgroundMaterial",uniforms:nc(ar.background.uniforms),vertexShader:ar.background.vertexShader,fragmentShader:ar.background.fragmentShader,side:Hr,depthTest:!1,depthWrite:!1,fog:!1})),c.geometry.deleteAttribute("normal"),Object.defineProperty(c.material,"map",{get:function(){return this.uniforms.t2D.value}}),s.update(c)),c.material.uniforms.t2D.value=f,c.material.uniforms.backgroundIntensity.value=A.backgroundIntensity,c.material.toneMapped=f.colorSpace!==mt,f.matrixAutoUpdate===!0&&f.updateMatrix(),c.material.uniforms.uvTransform.value.copy(f.matrix),(C!==f||d!==f.version||h!==n.toneMapping)&&(c.material.needsUpdate=!0,C=f,d=f.version,h=n.toneMapping),c.layers.enableAll(),y.unshift(c,c.geometry,c.material,0,0,null))}function v(y,A){y.getRGB(Md,W1(n)),i.buffers.color.setClear(Md.r,Md.g,Md.b,A,o)}return{getClearColor:function(){return a},setClearColor:function(y,A=1){a.set(y),l=A,v(a,l)},getClearAlpha:function(){return l},setClearAlpha:function(y){l=y,v(a,l)},render:m}}function NF(n,e,t,i){const s=n.getParameter(n.MAX_VERTEX_ATTRIBS),r=i.isWebGL2?null:e.get("OES_vertex_array_object"),o=i.isWebGL2||r!==null,a={},l=y(null);let c=l,u=!1;function C($,te,Ce,le,L){let J=!1;if(o){const P=v(le,Ce,te);c!==P&&(c=P,h(c.object)),J=A($,le,Ce,L),J&&b($,le,Ce,L)}else{const P=te.wireframe===!0;(c.geometry!==le.id||c.program!==Ce.id||c.wireframe!==P)&&(c.geometry=le.id,c.program=Ce.id,c.wireframe=P,J=!0)}L!==null&&t.update(L,n.ELEMENT_ARRAY_BUFFER),(J||u)&&(u=!1,M($,te,Ce,le),L!==null&&n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,t.get(L).buffer))}function d(){return i.isWebGL2?n.createVertexArray():r.createVertexArrayOES()}function h($){return i.isWebGL2?n.bindVertexArray($):r.bindVertexArrayOES($)}function m($){return i.isWebGL2?n.deleteVertexArray($):r.deleteVertexArrayOES($)}function v($,te,Ce){const le=Ce.wireframe===!0;let L=a[$.id];L===void 0&&(L={},a[$.id]=L);let J=L[te.id];J===void 0&&(J={},L[te.id]=J);let P=J[le];return P===void 0&&(P=y(d()),J[le]=P),P}function y($){const te=[],Ce=[],le=[];for(let L=0;L=0){const re=L[se];let ve=J[se];if(ve===void 0&&(se==="instanceMatrix"&&$.instanceMatrix&&(ve=$.instanceMatrix),se==="instanceColor"&&$.instanceColor&&(ve=$.instanceColor)),re===void 0||re.attribute!==ve||ve&&re.data!==ve.data)return!0;P++}return c.attributesNum!==P||c.index!==le}function b($,te,Ce,le){const L={},J=te.attributes;let P=0;const ce=Ce.getAttributes();for(const se in ce)if(ce[se].location>=0){let re=J[se];re===void 0&&(se==="instanceMatrix"&&$.instanceMatrix&&(re=$.instanceMatrix),se==="instanceColor"&&$.instanceColor&&(re=$.instanceColor));const ve={};ve.attribute=re,re&&re.data&&(ve.data=re.data),L[se]=ve,P++}c.attributes=L,c.attributesNum=P,c.index=le}function f(){const $=c.newAttributes;for(let te=0,Ce=$.length;te=0){let ee=L[ce];if(ee===void 0&&(ce==="instanceMatrix"&&$.instanceMatrix&&(ee=$.instanceMatrix),ce==="instanceColor"&&$.instanceColor&&(ee=$.instanceColor)),ee!==void 0){const re=ee.normalized,ve=ee.itemSize,ye=t.get(ee);if(ye===void 0)continue;const _=ye.buffer,nt=ye.type,lt=ye.bytesPerElement;if(ee.isInterleavedBufferAttribute){const Se=ee.data,Xe=Se.stride,fe=ee.offset;if(Se.isInstancedInterleavedBuffer){for(let ue=0;ue0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.HIGH_FLOAT).precision>0)return"highp";R="mediump"}return R==="mediump"&&n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.MEDIUM_FLOAT).precision>0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}const o=typeof WebGL2RenderingContext<"u"&&n.constructor.name==="WebGL2RenderingContext";let a=t.precision!==void 0?t.precision:"highp";const l=r(a);l!==a&&(console.warn("THREE.WebGLRenderer:",a,"not supported, using",l,"instead."),a=l);const c=o||e.has("WEBGL_draw_buffers"),u=t.logarithmicDepthBuffer===!0,C=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS),d=n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS),h=n.getParameter(n.MAX_TEXTURE_SIZE),m=n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE),v=n.getParameter(n.MAX_VERTEX_ATTRIBS),y=n.getParameter(n.MAX_VERTEX_UNIFORM_VECTORS),A=n.getParameter(n.MAX_VARYING_VECTORS),b=n.getParameter(n.MAX_FRAGMENT_UNIFORM_VECTORS),f=d>0,B=o||e.has("OES_texture_float"),S=f&&B,x=o?n.getParameter(n.MAX_SAMPLES):0;return{isWebGL2:o,drawBuffers:c,getMaxAnisotropy:s,getMaxPrecision:r,precision:a,logarithmicDepthBuffer:u,maxTextures:C,maxVertexTextures:d,maxTextureSize:h,maxCubemapSize:m,maxAttributes:v,maxVertexUniforms:y,maxVaryings:A,maxFragmentUniforms:b,vertexTextures:f,floatFragmentTextures:B,floatVertexTextures:S,maxSamples:x}}function YF(n){const e=this;let t=null,i=0,s=!1,r=!1;const o=new Eo,a=new xt,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(C,d){const h=C.length!==0||d||i!==0||s;return s=d,i=C.length,h},this.beginShadows=function(){r=!0,u(null)},this.endShadows=function(){r=!1},this.setGlobalState=function(C,d){t=u(C,d,0)},this.setState=function(C,d,h){const m=C.clippingPlanes,v=C.clipIntersection,y=C.clipShadows,A=n.get(C);if(!s||m===null||m.length===0||r&&!y)r?u(null):c();else{const b=r?0:i,f=b*4;let B=A.clippingState||null;l.value=B,B=u(m,d,f,h);for(let S=0;S!==f;++S)B[S]=t[S];A.clippingState=B,this.numIntersection=v?this.numPlanes:0,this.numPlanes+=b}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=i>0),e.numPlanes=i,e.numIntersection=0}function u(C,d,h,m){const v=C!==null?C.length:0;let y=null;if(v!==0){if(y=l.value,m!==!0||y===null){const A=h+v*4,b=d.matrixWorldInverse;a.getNormalMatrix(b),(y===null||y.length0){const c=new LA(l.height/2);return c.fromEquirectangularTexture(n,o),e.set(o,c),o.addEventListener("dispose",s),t(c.texture,o.mapping)}else return null}}return o}function s(o){const a=o.target;a.removeEventListener("dispose",s);const l=e.get(a);l!==void 0&&(e.delete(a),l.dispose())}function r(){e=new WeakMap}return{get:i,dispose:r}}class Ic extends cc{constructor(e=-1,t=1,i=1,s=-1,r=.1,o=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=i,this.bottom=s,this.near=r,this.far=o,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,i,s,r,o){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=s,this.view.width=r,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,s=(this.top+this.bottom)/2;let r=i-e,o=i+e,a=s+t,l=s-t;if(this.view!==null&&this.view.enabled){const c=(this.right-this.left)/this.view.fullWidth/this.zoom,u=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=c*this.view.offsetX,o=r+c*this.view.width,a-=u*this.view.offsetY,l=a-u*this.view.height}this.projectionMatrix.makeOrthographic(r,o,a,l,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}}const Vg=4,M2=[.125,.215,.35,.446,.526,.582],Ua=20,$m=new Ic,N2=new Re;let ef=null;const Ta=(1+Math.sqrt(5))/2,og=1/Ta,H2=[new H(1,1,1),new H(-1,1,1),new H(1,1,-1),new H(-1,1,-1),new H(0,Ta,og),new H(0,Ta,-og),new H(og,0,Ta),new H(-og,0,Ta),new H(Ta,og,0),new H(-Ta,og,0)];class CA{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,i=.1,s=100){ef=this._renderer.getRenderTarget(),this._setSize(256);const r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(e,i,s,r),t>0&&this._blur(r,0,0,t),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=F2(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=Y2(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?f:0,f,f),u.setRenderTarget(s),v&&u.render(m,a),u.render(e,a)}m.geometry.dispose(),m.material.dispose(),u.toneMapping=d,u.autoClear=C,e.background=y}_textureToCubeUV(e,t){const i=this._renderer,s=e.mapping===la||e.mapping===ga;s?(this._cubemapMaterial===null&&(this._cubemapMaterial=F2()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=Y2());const r=s?this._cubemapMaterial:this._equirectMaterial,o=new kn(this._lodPlanes[0],r),a=r.uniforms;a.envMap.value=e;const l=this._cubeSize;Nd(t,0,0,3*l,2*l),i.setRenderTarget(t),i.render(o,$m)}_applyPMREM(e){const t=this._renderer,i=t.autoClear;t.autoClear=!1;for(let s=1;sUa&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${y} samples when the maximum is set to ${Ua}`);const A=[];let b=0;for(let R=0;Rf-Vg?s-f+Vg:0),x=4*(this._cubeSize-B);Nd(t,S,x,3*B,2*B),l.setRenderTarget(t),l.render(C,$m)}}function KF(n){const e=[],t=[],i=[];let s=n;const r=n-Vg+1+M2.length;for(let o=0;on-Vg?l=M2[o-n+Vg-1]:o===0&&(l=0),i.push(l);const c=1/(a-2),u=-c,C=1+c,d=[u,u,C,u,C,C,u,u,C,C,u,C],h=6,m=6,v=3,y=2,A=1,b=new Float32Array(v*m*h),f=new Float32Array(y*m*h),B=new Float32Array(A*m*h);for(let x=0;x2?0:-1,Z=[R,M,0,R+2/3,M,0,R+2/3,M+1,0,R,M,0,R+2/3,M+1,0,R,M+1,0];b.set(Z,v*m*x),f.set(d,y*m*x);const V=[x,x,x,x,x,x];B.set(V,A*m*x)}const S=new ft;S.setAttribute("position",new kt(b,v)),S.setAttribute("uv",new kt(f,y)),S.setAttribute("faceIndex",new kt(B,A)),e.push(S),s>Vg&&s--}return{lodPlanes:e,sizeLods:t,sigmas:i}}function X2(n,e,t){const i=new Wt(n,e,t);return i.texture.mapping=gc,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function Nd(n,e,t,i,s){n.viewport.set(e,t,i,s),n.scissor.set(e,t,i,s)}function zF(n,e,t){const i=new Float32Array(Ua),s=new H(0,1,0);return new Zt({name:"SphericalGaussianBlur",defines:{n:Ua,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${n}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:s}},vertexShader:Lv(),fragmentShader:` precision mediump float; precision mediump int; @@ -3291,7 +3291,7 @@ void main() { } } - `,blending:tn,depthTest:!1,depthWrite:!1})}function W2(){return new Zt({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:Yv(),fragmentShader:` + `,blending:tn,depthTest:!1,depthWrite:!1})}function Y2(){return new Zt({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:Lv(),fragmentShader:` precision mediump float; precision mediump int; @@ -3310,7 +3310,7 @@ void main() { gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); } - `,blending:tn,depthTest:!1,depthWrite:!1})}function V2(){return new Zt({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:Yv(),fragmentShader:` + `,blending:tn,depthTest:!1,depthWrite:!1})}function F2(){return new Zt({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:Lv(),fragmentShader:` precision mediump float; precision mediump int; @@ -3326,7 +3326,7 @@ void main() { gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); } - `,blending:tn,depthTest:!1,depthWrite:!1})}function Yv(){return` + `,blending:tn,depthTest:!1,depthWrite:!1})}function Lv(){return` precision mediump float; precision mediump int; @@ -3381,39 +3381,39 @@ void main() { gl_Position = vec4( position, 1.0 ); } - `}function VF(n){let e=new WeakMap,t=null;function i(a){if(a&&a.isTexture){const l=a.mapping,c=l===ou||l===au,u=l===oa||l===aa;if(c||u)if(a.isRenderTargetTexture&&a.needsPMREMUpdate===!0){a.needsPMREMUpdate=!1;let C=e.get(a);return t===null&&(t=new aA(n)),C=c?t.fromEquirectangular(a,C):t.fromCubemap(a,C),e.set(a,C),C.texture}else{if(e.has(a))return e.get(a).texture;{const C=a.image;if(c&&C&&C.height>0||u&&C&&s(C)){t===null&&(t=new aA(n));const d=c?t.fromEquirectangular(a):t.fromCubemap(a);return e.set(a,d),a.addEventListener("dispose",r),d.texture}else return null}}}return a}function s(a){let l=0;const c=6;for(let u=0;ue.maxTextureSize&&(N=Math.ceil(V/e.maxTextureSize),V=e.maxTextureSize);const D=new Float32Array(V*N*4*v),k=new MA(D,V,N,v);k.type=wn,k.needsUpdate=!0;const $=Z*4;for(let Ce=0;Ce0)return n;const s=e*t;let r=M2[s];if(r===void 0&&(r=new Float32Array(s),M2[s]=r),e!==0){i.toArray(r,0);for(let o=1,a=0;o!==e;++o)a+=t,n[o].toArray(r,a)}return r}function Un(n,e){if(n.length!==e.length)return!1;for(let t=0,i=n.length;t0||u&&C&&s(C)){t===null&&(t=new CA(n));const d=c?t.fromEquirectangular(a):t.fromCubemap(a);return e.set(a,d),a.addEventListener("dispose",r),d.texture}else return null}}}return a}function s(a){let l=0;const c=6;for(let u=0;ue.maxTextureSize&&(N=Math.ceil(V/e.maxTextureSize),V=e.maxTextureSize);const U=new Float32Array(V*N*4*v),D=new zA(U,V,N,v);D.type=wn,D.needsUpdate=!0;const $=Z*4;for(let Ce=0;Ce0)return n;const s=e*t;let r=K2[s];if(r===void 0&&(r=new Float32Array(s),K2[s]=r),e!==0){i.toArray(r,0);for(let o=1,a=0;o!==e;++o)a+=t,n[o].toArray(r,a)}return r}function Pn(n,e){if(n.length!==e.length)return!1;for(let t=0,i=n.length;t":" "} ${a}: ${t[o]}`)}return i.join(` -`)}function M9(n){switch(n){case ur:return["Linear","( value )"];case mt:return["sRGB","( value )"];default:return console.warn("THREE.WebGLProgram: Unsupported color space:",n),["Linear","( value )"]}}function z2(n,e,t){const i=n.getShaderParameter(e,n.COMPILE_STATUS),s=n.getShaderInfoLog(e).trim();if(i&&s==="")return"";const r=/ERROR: 0:(\d+)/.exec(s);if(r){const o=parseInt(r[1]);return t.toUpperCase()+` +`)}function E9(n){switch(n){case ur:return["Linear","( value )"];case mt:return["sRGB","( value )"];default:return console.warn("THREE.WebGLProgram: Unsupported color space:",n),["Linear","( value )"]}}function U2(n,e,t){const i=n.getShaderParameter(e,n.COMPILE_STATUS),s=n.getShaderInfoLog(e).trim();if(i&&s==="")return"";const r=/ERROR: 0:(\d+)/.exec(s);if(r){const o=parseInt(r[1]);return t.toUpperCase()+` `+s+` -`+V9(n.getShaderSource(e),o)}else return s}function N9(n,e){const t=M9(e);return"vec4 "+n+"( vec4 value ) { return LinearTo"+t[0]+t[1]+"; }"}function H9(n,e){let t;switch(e){case OR:t="Linear";break;case QR:t="Reinhard";break;case jR:t="OptimizedCineon";break;case Bv:t="ACESFilmic";break;case qR:t="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",e),t="Linear"}return"vec3 "+n+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}function X9(n){return[n.extensionDerivatives||n.envMapCubeUVHeight||n.bumpMap||n.normalMapTangentSpace||n.clearcoatNormalMap||n.flatShading||n.shaderID==="physical"?"#extension GL_OES_standard_derivatives : enable":"",(n.extensionFragDepth||n.logarithmicDepthBuffer)&&n.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",n.extensionDrawBuffers&&n.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(n.extensionShaderTextureLOD||n.envMap||n.transmission)&&n.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter(fI).join(` -`)}function Y9(n){const e=[];for(const t in n){const i=n[t];i!==!1&&e.push("#define "+t+" "+i)}return e.join(` -`)}function F9(n,e){const t={},i=n.getProgramParameter(e,n.ACTIVE_ATTRIBUTES);for(let s=0;s/gm;function eb(n){return n.replace(K9,z9)}function z9(n,e){const t=tt[e];if(t===void 0)throw new Error("Can not resolve #include <"+e+">");return eb(t)}const L9=/#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;function E2(n){return n.replace(L9,T9)}function T9(n,e,t,i){let s="";for(let r=parseInt(e);r/gm;function sb(n){return n.replace(_9,J9)}function J9(n,e){const t=tt[e];if(t===void 0)throw new Error("Can not resolve #include <"+e+">");return sb(t)}const O9=/#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;function J2(n){return n.replace(O9,Q9)}function Q9(n,e,t,i){let s="";for(let r=parseInt(e);r0&&(y+=` -`),A=[h,m].filter(fI).join(` +`),A=[h,m].filter(yI).join(` `),A.length>0&&(A+=` -`)):(y=[k2(t),"#define SHADER_NAME "+t.shaderName,m,t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+u:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphColors&&t.isWebGL2?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0&&t.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",t.morphTargetsCount>0&&t.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0&&t.isWebGL2?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.logarithmicDepthBuffer&&t.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )"," attribute vec3 morphTarget0;"," attribute vec3 morphTarget1;"," attribute vec3 morphTarget2;"," attribute vec3 morphTarget3;"," #ifdef USE_MORPHNORMALS"," attribute vec3 morphNormal0;"," attribute vec3 morphNormal1;"," attribute vec3 morphNormal2;"," attribute vec3 morphNormal3;"," #else"," attribute vec3 morphTarget4;"," attribute vec3 morphTarget5;"," attribute vec3 morphTarget6;"," attribute vec3 morphTarget7;"," #endif","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` -`].filter(fI).join(` -`),A=[h,k2(t),"#define SHADER_NAME "+t.shaderName,m,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+c:"",t.envMap?"#define "+u:"",t.envMap?"#define "+C:"",d?"#define CUBEUV_TEXEL_WIDTH "+d.texelWidth:"",d?"#define CUBEUV_TEXEL_HEIGHT "+d.texelHeight:"",d?"#define CUBEUV_MAX_MIP "+d.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.useLegacyLights?"#define LEGACY_LIGHTS":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.logarithmicDepthBuffer&&t.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==gr?"#define TONE_MAPPING":"",t.toneMapping!==gr?tt.tonemapping_pars_fragment:"",t.toneMapping!==gr?H9("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",tt.encodings_pars_fragment,N9("linearToOutputTexel",t.outputColorSpace),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` -`].filter(fI).join(` -`)),o=eb(o),o=L2(o,t),o=T2(o,t),a=eb(a),a=L2(a,t),a=T2(a,t),o=E2(o),a=E2(a),t.isWebGL2&&t.isRawShaderMaterial!==!0&&(b=`#version 300 es +`)):(y=[O2(t),"#define SHADER_NAME "+t.shaderName,m,t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+u:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphColors&&t.isWebGL2?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0&&t.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",t.morphTargetsCount>0&&t.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0&&t.isWebGL2?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.logarithmicDepthBuffer&&t.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )"," attribute vec3 morphTarget0;"," attribute vec3 morphTarget1;"," attribute vec3 morphTarget2;"," attribute vec3 morphTarget3;"," #ifdef USE_MORPHNORMALS"," attribute vec3 morphNormal0;"," attribute vec3 morphNormal1;"," attribute vec3 morphNormal2;"," attribute vec3 morphNormal3;"," #else"," attribute vec3 morphTarget4;"," attribute vec3 morphTarget5;"," attribute vec3 morphTarget6;"," attribute vec3 morphTarget7;"," #endif","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` +`].filter(yI).join(` +`),A=[h,O2(t),"#define SHADER_NAME "+t.shaderName,m,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+c:"",t.envMap?"#define "+u:"",t.envMap?"#define "+C:"",d?"#define CUBEUV_TEXEL_WIDTH "+d.texelWidth:"",d?"#define CUBEUV_TEXEL_HEIGHT "+d.texelHeight:"",d?"#define CUBEUV_MAX_MIP "+d.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.useLegacyLights?"#define LEGACY_LIGHTS":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.logarithmicDepthBuffer&&t.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==cr?"#define TONE_MAPPING":"",t.toneMapping!==cr?tt.tonemapping_pars_fragment:"",t.toneMapping!==cr?k9("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",tt.encodings_pars_fragment,T9("linearToOutputTexel",t.outputColorSpace),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` +`].filter(yI).join(` +`)),o=sb(o),o=P2(o,t),o=_2(o,t),a=sb(a),a=P2(a,t),a=_2(a,t),o=J2(o),a=J2(a),t.isWebGL2&&t.isRawShaderMaterial!==!0&&(b=`#version 300 es `,y=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join(` `)+` -`+y,A=["#define varying in",t.glslVersion===rA?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===rA?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` +`+y,A=["#define varying in",t.glslVersion===IA?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===IA?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` `)+` -`+A);const f=b+y+o,B=b+A+a,S=K2(s,s.VERTEX_SHADER,f),x=K2(s,s.FRAGMENT_SHADER,B);if(s.attachShader(v,S),s.attachShader(v,x),t.index0AttributeName!==void 0?s.bindAttribLocation(v,0,t.index0AttributeName):t.morphTargets===!0&&s.bindAttribLocation(v,0,"position"),s.linkProgram(v),n.debug.checkShaderErrors){const Z=s.getProgramInfoLog(v).trim(),V=s.getShaderInfoLog(S).trim(),N=s.getShaderInfoLog(x).trim();let D=!0,k=!0;if(s.getProgramParameter(v,s.LINK_STATUS)===!1)if(D=!1,typeof n.debug.onShaderError=="function")n.debug.onShaderError(s,v,S,x);else{const $=z2(s,S,"vertex"),te=z2(s,x,"fragment");console.error("THREE.WebGLProgram: Shader Error "+s.getError()+" - VALIDATE_STATUS "+s.getProgramParameter(v,s.VALIDATE_STATUS)+` +`+A);const f=b+y+o,B=b+A+a,S=D2(s,s.VERTEX_SHADER,f),x=D2(s,s.FRAGMENT_SHADER,B);if(s.attachShader(v,S),s.attachShader(v,x),t.index0AttributeName!==void 0?s.bindAttribLocation(v,0,t.index0AttributeName):t.morphTargets===!0&&s.bindAttribLocation(v,0,"position"),s.linkProgram(v),n.debug.checkShaderErrors){const Z=s.getProgramInfoLog(v).trim(),V=s.getShaderInfoLog(S).trim(),N=s.getShaderInfoLog(x).trim();let U=!0,D=!0;if(s.getProgramParameter(v,s.LINK_STATUS)===!1)if(U=!1,typeof n.debug.onShaderError=="function")n.debug.onShaderError(s,v,S,x);else{const $=U2(s,S,"vertex"),te=U2(s,x,"fragment");console.error("THREE.WebGLProgram: Shader Error "+s.getError()+" - VALIDATE_STATUS "+s.getProgramParameter(v,s.VALIDATE_STATUS)+` Program Info Log: `+Z+` `+$+` -`+te)}else Z!==""?console.warn("THREE.WebGLProgram: Program Info Log:",Z):(V===""||N==="")&&(k=!1);k&&(this.diagnostics={runnable:D,programLog:Z,vertexShader:{log:V,prefix:y},fragmentShader:{log:N,prefix:A}})}s.deleteShader(S),s.deleteShader(x);let R;this.getUniforms=function(){return R===void 0&&(R=new Rh(s,v)),R};let M;return this.getAttributes=function(){return M===void 0&&(M=F9(s,v)),M},this.destroy=function(){i.releaseStatesOfProgram(this),s.deleteProgram(v),this.program=void 0},this.name=t.shaderName,this.id=W9++,this.cacheKey=e,this.usedTimes=1,this.program=v,this.vertexShader=S,this.fragmentShader=x,this}let J9=0;class O9{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,i=e.fragmentShader,s=this._getShaderStage(t),r=this._getShaderStage(i),o=this._getShaderCacheForMaterial(e);return o.has(s)===!1&&(o.add(s),s.usedTimes++),o.has(r)===!1&&(o.add(r),r.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const i of t)i.usedTimes--,i.usedTimes===0&&this.shaderCache.delete(i.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const t=this.materialCache;let i=t.get(e);return i===void 0&&(i=new Set,t.set(e,i)),i}_getShaderStage(e){const t=this.shaderCache;let i=t.get(e);return i===void 0&&(i=new Q9(e),t.set(e,i)),i}}class Q9{constructor(e){this.id=J9++,this.code=e,this.usedTimes=0}}function j9(n,e,t,i,s,r,o){const a=new al,l=new O9,c=[],u=s.isWebGL2,C=s.logarithmicDepthBuffer,d=s.vertexTextures;let h=s.precision;const m={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function v(Z){return Z===1?"uv1":Z===2?"uv2":Z===3?"uv3":"uv"}function y(Z,V,N,D,k){const $=D.fog,te=k.geometry,Ce=Z.isMeshStandardMaterial?D.environment:null,le=(Z.isMeshStandardMaterial?t:e).get(Z.envMap||Ce),L=le&&le.mapping===oc?le.image.height:null,J=m[Z.type];Z.precision!==null&&(h=s.getMaxPrecision(Z.precision),h!==Z.precision&&console.warn("THREE.WebGLProgram.getParameters:",Z.precision,"not supported, using",h,"instead."));const P=te.morphAttributes.position||te.morphAttributes.normal||te.morphAttributes.color,ce=P!==void 0?P.length:0;let se=0;te.morphAttributes.position!==void 0&&(se=1),te.morphAttributes.normal!==void 0&&(se=2),te.morphAttributes.color!==void 0&&(se=3);let ee,re,ve,ye;if(J){const Dt=or[J];ee=Dt.vertexShader,re=Dt.fragmentShader}else ee=Z.vertexShader,re=Z.fragmentShader,l.update(Z),ve=l.getVertexShaderID(Z),ye=l.getFragmentShaderID(Z);const _=n.getRenderTarget(),nt=k.isInstancedMesh===!0,lt=!!Z.map,Se=!!Z.matcap,Xe=!!le,fe=!!Z.aoMap,ue=!!Z.lightMap,be=!!Z.bumpMap,Le=!!Z.normalMap,Ve=!!Z.displacementMap,st=!!Z.emissiveMap,rt=!!Z.metalnessMap,qe=!!Z.roughnessMap,ut=Z.clearcoat>0,Ht=Z.iridescence>0,T=Z.sheen>0,X=Z.transmission>0,ge=ut&&!!Z.clearcoatMap,Ge=ut&&!!Z.clearcoatNormalMap,Ze=ut&&!!Z.clearcoatRoughnessMap,Me=Ht&&!!Z.iridescenceMap,gt=Ht&&!!Z.iridescenceThicknessMap,Ke=T&&!!Z.sheenColorMap,pe=T&&!!Z.sheenRoughnessMap,De=!!Z.specularMap,$e=!!Z.specularColorMap,ot=!!Z.specularIntensityMap,Te=X&&!!Z.transmissionMap,Oe=X&&!!Z.thicknessMap,Wt=!!Z.gradientMap,Et=!!Z.alphaMap,Cn=Z.alphaTest>0,O=!!Z.extensions,he=!!te.attributes.uv1,Be=!!te.attributes.uv2,Ye=!!te.attributes.uv3;return{isWebGL2:u,shaderID:J,shaderName:Z.type,vertexShader:ee,fragmentShader:re,defines:Z.defines,customVertexShaderID:ve,customFragmentShaderID:ye,isRawShaderMaterial:Z.isRawShaderMaterial===!0,glslVersion:Z.glslVersion,precision:h,instancing:nt,instancingColor:nt&&k.instanceColor!==null,supportsVertexTextures:d,outputColorSpace:_===null?n.outputColorSpace:_.isXRRenderTarget===!0?_.texture.colorSpace:ur,map:lt,matcap:Se,envMap:Xe,envMapMode:Xe&&le.mapping,envMapCubeUVHeight:L,aoMap:fe,lightMap:ue,bumpMap:be,normalMap:Le,displacementMap:d&&Ve,emissiveMap:st,normalMapObjectSpace:Le&&Z.normalMapType===d1,normalMapTangentSpace:Le&&Z.normalMapType===fo,metalnessMap:rt,roughnessMap:qe,clearcoat:ut,clearcoatMap:ge,clearcoatNormalMap:Ge,clearcoatRoughnessMap:Ze,iridescence:Ht,iridescenceMap:Me,iridescenceThicknessMap:gt,sheen:T,sheenColorMap:Ke,sheenRoughnessMap:pe,specularMap:De,specularColorMap:$e,specularIntensityMap:ot,transmission:X,transmissionMap:Te,thicknessMap:Oe,gradientMap:Wt,opaque:Z.transparent===!1&&Z.blending===sl,alphaMap:Et,alphaTest:Cn,combine:Z.combine,mapUv:lt&&v(Z.map.channel),aoMapUv:fe&&v(Z.aoMap.channel),lightMapUv:ue&&v(Z.lightMap.channel),bumpMapUv:be&&v(Z.bumpMap.channel),normalMapUv:Le&&v(Z.normalMap.channel),displacementMapUv:Ve&&v(Z.displacementMap.channel),emissiveMapUv:st&&v(Z.emissiveMap.channel),metalnessMapUv:rt&&v(Z.metalnessMap.channel),roughnessMapUv:qe&&v(Z.roughnessMap.channel),clearcoatMapUv:ge&&v(Z.clearcoatMap.channel),clearcoatNormalMapUv:Ge&&v(Z.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:Ze&&v(Z.clearcoatRoughnessMap.channel),iridescenceMapUv:Me&&v(Z.iridescenceMap.channel),iridescenceThicknessMapUv:gt&&v(Z.iridescenceThicknessMap.channel),sheenColorMapUv:Ke&&v(Z.sheenColorMap.channel),sheenRoughnessMapUv:pe&&v(Z.sheenRoughnessMap.channel),specularMapUv:De&&v(Z.specularMap.channel),specularColorMapUv:$e&&v(Z.specularColorMap.channel),specularIntensityMapUv:ot&&v(Z.specularIntensityMap.channel),transmissionMapUv:Te&&v(Z.transmissionMap.channel),thicknessMapUv:Oe&&v(Z.thicknessMap.channel),alphaMapUv:Et&&v(Z.alphaMap.channel),vertexTangents:Le&&!!te.attributes.tangent,vertexColors:Z.vertexColors,vertexAlphas:Z.vertexColors===!0&&!!te.attributes.color&&te.attributes.color.itemSize===4,vertexUv1s:he,vertexUv2s:Be,vertexUv3s:Ye,pointsUvs:k.isPoints===!0&&!!te.attributes.uv&&(lt||Et),fog:!!$,useFog:Z.fog===!0,fogExp2:$&&$.isFogExp2,flatShading:Z.flatShading===!0,sizeAttenuation:Z.sizeAttenuation===!0,logarithmicDepthBuffer:C,skinning:k.isSkinnedMesh===!0,morphTargets:te.morphAttributes.position!==void 0,morphNormals:te.morphAttributes.normal!==void 0,morphColors:te.morphAttributes.color!==void 0,morphTargetsCount:ce,morphTextureStride:se,numDirLights:V.directional.length,numPointLights:V.point.length,numSpotLights:V.spot.length,numSpotLightMaps:V.spotLightMap.length,numRectAreaLights:V.rectArea.length,numHemiLights:V.hemi.length,numDirLightShadows:V.directionalShadowMap.length,numPointLightShadows:V.pointShadowMap.length,numSpotLightShadows:V.spotShadowMap.length,numSpotLightShadowsWithMaps:V.numSpotLightShadowsWithMaps,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:Z.dithering,shadowMapEnabled:n.shadowMap.enabled&&N.length>0,shadowMapType:n.shadowMap.type,toneMapping:Z.toneMapped?n.toneMapping:gr,useLegacyLights:n.useLegacyLights,premultipliedAlpha:Z.premultipliedAlpha,doubleSided:Z.side===Pi,flipSided:Z.side===Tn,useDepthPacking:Z.depthPacking>=0,depthPacking:Z.depthPacking||0,index0AttributeName:Z.index0AttributeName,extensionDerivatives:O&&Z.extensions.derivatives===!0,extensionFragDepth:O&&Z.extensions.fragDepth===!0,extensionDrawBuffers:O&&Z.extensions.drawBuffers===!0,extensionShaderTextureLOD:O&&Z.extensions.shaderTextureLOD===!0,rendererExtensionFragDepth:u||i.has("EXT_frag_depth"),rendererExtensionDrawBuffers:u||i.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:u||i.has("EXT_shader_texture_lod"),customProgramCacheKey:Z.customProgramCacheKey()}}function A(Z){const V=[];if(Z.shaderID?V.push(Z.shaderID):(V.push(Z.customVertexShaderID),V.push(Z.customFragmentShaderID)),Z.defines!==void 0)for(const N in Z.defines)V.push(N),V.push(Z.defines[N]);return Z.isRawShaderMaterial===!1&&(b(V,Z),f(V,Z),V.push(n.outputColorSpace)),V.push(Z.customProgramCacheKey),V.join()}function b(Z,V){Z.push(V.precision),Z.push(V.outputColorSpace),Z.push(V.envMapMode),Z.push(V.envMapCubeUVHeight),Z.push(V.mapUv),Z.push(V.alphaMapUv),Z.push(V.lightMapUv),Z.push(V.aoMapUv),Z.push(V.bumpMapUv),Z.push(V.normalMapUv),Z.push(V.displacementMapUv),Z.push(V.emissiveMapUv),Z.push(V.metalnessMapUv),Z.push(V.roughnessMapUv),Z.push(V.clearcoatMapUv),Z.push(V.clearcoatNormalMapUv),Z.push(V.clearcoatRoughnessMapUv),Z.push(V.iridescenceMapUv),Z.push(V.iridescenceThicknessMapUv),Z.push(V.sheenColorMapUv),Z.push(V.sheenRoughnessMapUv),Z.push(V.specularMapUv),Z.push(V.specularColorMapUv),Z.push(V.specularIntensityMapUv),Z.push(V.transmissionMapUv),Z.push(V.thicknessMapUv),Z.push(V.combine),Z.push(V.fogExp2),Z.push(V.sizeAttenuation),Z.push(V.morphTargetsCount),Z.push(V.morphAttributeCount),Z.push(V.numDirLights),Z.push(V.numPointLights),Z.push(V.numSpotLights),Z.push(V.numSpotLightMaps),Z.push(V.numHemiLights),Z.push(V.numRectAreaLights),Z.push(V.numDirLightShadows),Z.push(V.numPointLightShadows),Z.push(V.numSpotLightShadows),Z.push(V.numSpotLightShadowsWithMaps),Z.push(V.shadowMapType),Z.push(V.toneMapping),Z.push(V.numClippingPlanes),Z.push(V.numClipIntersection),Z.push(V.depthPacking)}function f(Z,V){a.disableAll(),V.isWebGL2&&a.enable(0),V.supportsVertexTextures&&a.enable(1),V.instancing&&a.enable(2),V.instancingColor&&a.enable(3),V.matcap&&a.enable(4),V.envMap&&a.enable(5),V.normalMapObjectSpace&&a.enable(6),V.normalMapTangentSpace&&a.enable(7),V.clearcoat&&a.enable(8),V.iridescence&&a.enable(9),V.alphaTest&&a.enable(10),V.vertexColors&&a.enable(11),V.vertexAlphas&&a.enable(12),V.vertexUv1s&&a.enable(13),V.vertexUv2s&&a.enable(14),V.vertexUv3s&&a.enable(15),V.vertexTangents&&a.enable(16),Z.push(a.mask),a.disableAll(),V.fog&&a.enable(0),V.useFog&&a.enable(1),V.flatShading&&a.enable(2),V.logarithmicDepthBuffer&&a.enable(3),V.skinning&&a.enable(4),V.morphTargets&&a.enable(5),V.morphNormals&&a.enable(6),V.morphColors&&a.enable(7),V.premultipliedAlpha&&a.enable(8),V.shadowMapEnabled&&a.enable(9),V.useLegacyLights&&a.enable(10),V.doubleSided&&a.enable(11),V.flipSided&&a.enable(12),V.useDepthPacking&&a.enable(13),V.dithering&&a.enable(14),V.transmission&&a.enable(15),V.sheen&&a.enable(16),V.opaque&&a.enable(17),V.pointsUvs&&a.enable(18),Z.push(a.mask)}function B(Z){const V=m[Z.type];let N;if(V){const D=or[V];N=B1.clone(D.uniforms)}else N=Z.uniforms;return N}function S(Z,V){let N;for(let D=0,k=c.length;D0?i.push(A):h.transparent===!0?s.push(A):t.push(A)}function l(C,d,h,m,v,y){const A=o(C,d,h,m,v,y);h.transmission>0?i.unshift(A):h.transparent===!0?s.unshift(A):t.unshift(A)}function c(C,d){t.length>1&&t.sort(C||$9),i.length>1&&i.sort(d||D2),s.length>1&&s.sort(d||D2)}function u(){for(let C=e,d=n.length;C=r.length?(o=new U2,r.push(o)):o=r[s],o}function t(){n=new WeakMap}return{get:e,dispose:t}}function tK(){const n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new H,color:new Re};break;case"SpotLight":t={position:new H,direction:new H,color:new Re,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new H,color:new Re,distance:0,decay:0};break;case"HemisphereLight":t={direction:new H,skyColor:new Re,groundColor:new Re};break;case"RectAreaLight":t={color:new Re,position:new H,halfWidth:new H,halfHeight:new H};break}return n[e.id]=t,t}}}function nK(){const n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ne};break;case"SpotLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ne};break;case"PointLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ne,shadowCameraNear:1,shadowCameraFar:1e3};break}return n[e.id]=t,t}}}let iK=0;function sK(n,e){return(e.castShadow?2:0)-(n.castShadow?2:0)+(e.map?1:0)-(n.map?1:0)}function rK(n,e){const t=new tK,i=nK(),s={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0};for(let u=0;u<9;u++)s.probe.push(new H);const r=new H,o=new Fe,a=new Fe;function l(u,C){let d=0,h=0,m=0;for(let N=0;N<9;N++)s.probe[N].set(0,0,0);let v=0,y=0,A=0,b=0,f=0,B=0,S=0,x=0,R=0,M=0;u.sort(sK);const Z=C===!0?Math.PI:1;for(let N=0,D=u.length;N0&&(e.isWebGL2||n.has("OES_texture_float_linear")===!0?(s.rectAreaLTC1=We.LTC_FLOAT_1,s.rectAreaLTC2=We.LTC_FLOAT_2):n.has("OES_texture_half_float_linear")===!0?(s.rectAreaLTC1=We.LTC_HALF_1,s.rectAreaLTC2=We.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),s.ambient[0]=d,s.ambient[1]=h,s.ambient[2]=m;const V=s.hash;(V.directionalLength!==v||V.pointLength!==y||V.spotLength!==A||V.rectAreaLength!==b||V.hemiLength!==f||V.numDirectionalShadows!==B||V.numPointShadows!==S||V.numSpotShadows!==x||V.numSpotMaps!==R)&&(s.directional.length=v,s.spot.length=A,s.rectArea.length=b,s.point.length=y,s.hemi.length=f,s.directionalShadow.length=B,s.directionalShadowMap.length=B,s.pointShadow.length=S,s.pointShadowMap.length=S,s.spotShadow.length=x,s.spotShadowMap.length=x,s.directionalShadowMatrix.length=B,s.pointShadowMatrix.length=S,s.spotLightMatrix.length=x+R-M,s.spotLightMap.length=R,s.numSpotLightShadowsWithMaps=M,V.directionalLength=v,V.pointLength=y,V.spotLength=A,V.rectAreaLength=b,V.hemiLength=f,V.numDirectionalShadows=B,V.numPointShadows=S,V.numSpotShadows=x,V.numSpotMaps=R,s.version=iK++)}function c(u,C){let d=0,h=0,m=0,v=0,y=0;const A=C.matrixWorldInverse;for(let b=0,f=u.length;b=a.length?(l=new P2(n,e),a.push(l)):l=a[o],l}function s(){t=new WeakMap}return{get:i,dispose:s}}class YA extends _n{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=Yn,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class Fv extends _n{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}const aK=`void main() { +`+te)}else Z!==""?console.warn("THREE.WebGLProgram: Program Info Log:",Z):(V===""||N==="")&&(D=!1);D&&(this.diagnostics={runnable:U,programLog:Z,vertexShader:{log:V,prefix:y},fragmentShader:{log:N,prefix:A}})}s.deleteShader(S),s.deleteShader(x);let R;this.getUniforms=function(){return R===void 0&&(R=new Xh(s,v)),R};let M;return this.getAttributes=function(){return M===void 0&&(M=P9(s,v)),M},this.destroy=function(){i.releaseStatesOfProgram(this),s.deleteProgram(v),this.program=void 0},this.name=t.shaderName,this.id=z9++,this.cacheKey=e,this.usedTimes=1,this.program=v,this.vertexShader=S,this.fragmentShader=x,this}let iK=0;class sK{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,i=e.fragmentShader,s=this._getShaderStage(t),r=this._getShaderStage(i),o=this._getShaderCacheForMaterial(e);return o.has(s)===!1&&(o.add(s),s.usedTimes++),o.has(r)===!1&&(o.add(r),r.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const i of t)i.usedTimes--,i.usedTimes===0&&this.shaderCache.delete(i.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const t=this.materialCache;let i=t.get(e);return i===void 0&&(i=new Set,t.set(e,i)),i}_getShaderStage(e){const t=this.shaderCache;let i=t.get(e);return i===void 0&&(i=new rK(e),t.set(e,i)),i}}class rK{constructor(e){this.id=iK++,this.code=e,this.usedTimes=0}}function oK(n,e,t,i,s,r,o){const a=new ll,l=new sK,c=[],u=s.isWebGL2,C=s.logarithmicDepthBuffer,d=s.vertexTextures;let h=s.precision;const m={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function v(Z){return Z===1?"uv1":Z===2?"uv2":Z===3?"uv3":"uv"}function y(Z,V,N,U,D){const $=U.fog,te=D.geometry,Ce=Z.isMeshStandardMaterial?U.environment:null,le=(Z.isMeshStandardMaterial?t:e).get(Z.envMap||Ce),L=le&&le.mapping===gc?le.image.height:null,J=m[Z.type];Z.precision!==null&&(h=s.getMaxPrecision(Z.precision),h!==Z.precision&&console.warn("THREE.WebGLProgram.getParameters:",Z.precision,"not supported, using",h,"instead."));const P=te.morphAttributes.position||te.morphAttributes.normal||te.morphAttributes.color,ce=P!==void 0?P.length:0;let se=0;te.morphAttributes.position!==void 0&&(se=1),te.morphAttributes.normal!==void 0&&(se=2),te.morphAttributes.color!==void 0&&(se=3);let ee,re,ve,ye;if(J){const Dt=ar[J];ee=Dt.vertexShader,re=Dt.fragmentShader}else ee=Z.vertexShader,re=Z.fragmentShader,l.update(Z),ve=l.getVertexShaderID(Z),ye=l.getFragmentShaderID(Z);const _=n.getRenderTarget(),nt=D.isInstancedMesh===!0,lt=!!Z.map,Se=!!Z.matcap,Xe=!!le,fe=!!Z.aoMap,ue=!!Z.lightMap,be=!!Z.bumpMap,Le=!!Z.normalMap,Ve=!!Z.displacementMap,st=!!Z.emissiveMap,rt=!!Z.metalnessMap,qe=!!Z.roughnessMap,ut=Z.clearcoat>0,Ht=Z.iridescence>0,T=Z.sheen>0,X=Z.transmission>0,ge=ut&&!!Z.clearcoatMap,Ge=ut&&!!Z.clearcoatNormalMap,Ze=ut&&!!Z.clearcoatRoughnessMap,Me=Ht&&!!Z.iridescenceMap,gt=Ht&&!!Z.iridescenceThicknessMap,Ke=T&&!!Z.sheenColorMap,pe=T&&!!Z.sheenRoughnessMap,De=!!Z.specularMap,$e=!!Z.specularColorMap,ot=!!Z.specularIntensityMap,Ee=X&&!!Z.transmissionMap,Oe=X&&!!Z.thicknessMap,Vt=!!Z.gradientMap,Tt=!!Z.alphaMap,Cn=Z.alphaTest>0,O=!!Z.extensions,he=!!te.attributes.uv1,Be=!!te.attributes.uv2,Ye=!!te.attributes.uv3;return{isWebGL2:u,shaderID:J,shaderName:Z.type,vertexShader:ee,fragmentShader:re,defines:Z.defines,customVertexShaderID:ve,customFragmentShaderID:ye,isRawShaderMaterial:Z.isRawShaderMaterial===!0,glslVersion:Z.glslVersion,precision:h,instancing:nt,instancingColor:nt&&D.instanceColor!==null,supportsVertexTextures:d,outputColorSpace:_===null?n.outputColorSpace:_.isXRRenderTarget===!0?_.texture.colorSpace:ur,map:lt,matcap:Se,envMap:Xe,envMapMode:Xe&&le.mapping,envMapCubeUVHeight:L,aoMap:fe,lightMap:ue,bumpMap:be,normalMap:Le,displacementMap:d&&Ve,emissiveMap:st,normalMapObjectSpace:Le&&Z.normalMapType===v1,normalMapTangentSpace:Le&&Z.normalMapType===fo,metalnessMap:rt,roughnessMap:qe,clearcoat:ut,clearcoatMap:ge,clearcoatNormalMap:Ge,clearcoatRoughnessMap:Ze,iridescence:Ht,iridescenceMap:Me,iridescenceThicknessMap:gt,sheen:T,sheenColorMap:Ke,sheenRoughnessMap:pe,specularMap:De,specularColorMap:$e,specularIntensityMap:ot,transmission:X,transmissionMap:Ee,thicknessMap:Oe,gradientMap:Vt,opaque:Z.transparent===!1&&Z.blending===rl,alphaMap:Tt,alphaTest:Cn,combine:Z.combine,mapUv:lt&&v(Z.map.channel),aoMapUv:fe&&v(Z.aoMap.channel),lightMapUv:ue&&v(Z.lightMap.channel),bumpMapUv:be&&v(Z.bumpMap.channel),normalMapUv:Le&&v(Z.normalMap.channel),displacementMapUv:Ve&&v(Z.displacementMap.channel),emissiveMapUv:st&&v(Z.emissiveMap.channel),metalnessMapUv:rt&&v(Z.metalnessMap.channel),roughnessMapUv:qe&&v(Z.roughnessMap.channel),clearcoatMapUv:ge&&v(Z.clearcoatMap.channel),clearcoatNormalMapUv:Ge&&v(Z.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:Ze&&v(Z.clearcoatRoughnessMap.channel),iridescenceMapUv:Me&&v(Z.iridescenceMap.channel),iridescenceThicknessMapUv:gt&&v(Z.iridescenceThicknessMap.channel),sheenColorMapUv:Ke&&v(Z.sheenColorMap.channel),sheenRoughnessMapUv:pe&&v(Z.sheenRoughnessMap.channel),specularMapUv:De&&v(Z.specularMap.channel),specularColorMapUv:$e&&v(Z.specularColorMap.channel),specularIntensityMapUv:ot&&v(Z.specularIntensityMap.channel),transmissionMapUv:Ee&&v(Z.transmissionMap.channel),thicknessMapUv:Oe&&v(Z.thicknessMap.channel),alphaMapUv:Tt&&v(Z.alphaMap.channel),vertexTangents:Le&&!!te.attributes.tangent,vertexColors:Z.vertexColors,vertexAlphas:Z.vertexColors===!0&&!!te.attributes.color&&te.attributes.color.itemSize===4,vertexUv1s:he,vertexUv2s:Be,vertexUv3s:Ye,pointsUvs:D.isPoints===!0&&!!te.attributes.uv&&(lt||Tt),fog:!!$,useFog:Z.fog===!0,fogExp2:$&&$.isFogExp2,flatShading:Z.flatShading===!0,sizeAttenuation:Z.sizeAttenuation===!0,logarithmicDepthBuffer:C,skinning:D.isSkinnedMesh===!0,morphTargets:te.morphAttributes.position!==void 0,morphNormals:te.morphAttributes.normal!==void 0,morphColors:te.morphAttributes.color!==void 0,morphTargetsCount:ce,morphTextureStride:se,numDirLights:V.directional.length,numPointLights:V.point.length,numSpotLights:V.spot.length,numSpotLightMaps:V.spotLightMap.length,numRectAreaLights:V.rectArea.length,numHemiLights:V.hemi.length,numDirLightShadows:V.directionalShadowMap.length,numPointLightShadows:V.pointShadowMap.length,numSpotLightShadows:V.spotShadowMap.length,numSpotLightShadowsWithMaps:V.numSpotLightShadowsWithMaps,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:Z.dithering,shadowMapEnabled:n.shadowMap.enabled&&N.length>0,shadowMapType:n.shadowMap.type,toneMapping:Z.toneMapped?n.toneMapping:cr,useLegacyLights:n.useLegacyLights,premultipliedAlpha:Z.premultipliedAlpha,doubleSided:Z.side===_i,flipSided:Z.side===Tn,useDepthPacking:Z.depthPacking>=0,depthPacking:Z.depthPacking||0,index0AttributeName:Z.index0AttributeName,extensionDerivatives:O&&Z.extensions.derivatives===!0,extensionFragDepth:O&&Z.extensions.fragDepth===!0,extensionDrawBuffers:O&&Z.extensions.drawBuffers===!0,extensionShaderTextureLOD:O&&Z.extensions.shaderTextureLOD===!0,rendererExtensionFragDepth:u||i.has("EXT_frag_depth"),rendererExtensionDrawBuffers:u||i.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:u||i.has("EXT_shader_texture_lod"),customProgramCacheKey:Z.customProgramCacheKey()}}function A(Z){const V=[];if(Z.shaderID?V.push(Z.shaderID):(V.push(Z.customVertexShaderID),V.push(Z.customFragmentShaderID)),Z.defines!==void 0)for(const N in Z.defines)V.push(N),V.push(Z.defines[N]);return Z.isRawShaderMaterial===!1&&(b(V,Z),f(V,Z),V.push(n.outputColorSpace)),V.push(Z.customProgramCacheKey),V.join()}function b(Z,V){Z.push(V.precision),Z.push(V.outputColorSpace),Z.push(V.envMapMode),Z.push(V.envMapCubeUVHeight),Z.push(V.mapUv),Z.push(V.alphaMapUv),Z.push(V.lightMapUv),Z.push(V.aoMapUv),Z.push(V.bumpMapUv),Z.push(V.normalMapUv),Z.push(V.displacementMapUv),Z.push(V.emissiveMapUv),Z.push(V.metalnessMapUv),Z.push(V.roughnessMapUv),Z.push(V.clearcoatMapUv),Z.push(V.clearcoatNormalMapUv),Z.push(V.clearcoatRoughnessMapUv),Z.push(V.iridescenceMapUv),Z.push(V.iridescenceThicknessMapUv),Z.push(V.sheenColorMapUv),Z.push(V.sheenRoughnessMapUv),Z.push(V.specularMapUv),Z.push(V.specularColorMapUv),Z.push(V.specularIntensityMapUv),Z.push(V.transmissionMapUv),Z.push(V.thicknessMapUv),Z.push(V.combine),Z.push(V.fogExp2),Z.push(V.sizeAttenuation),Z.push(V.morphTargetsCount),Z.push(V.morphAttributeCount),Z.push(V.numDirLights),Z.push(V.numPointLights),Z.push(V.numSpotLights),Z.push(V.numSpotLightMaps),Z.push(V.numHemiLights),Z.push(V.numRectAreaLights),Z.push(V.numDirLightShadows),Z.push(V.numPointLightShadows),Z.push(V.numSpotLightShadows),Z.push(V.numSpotLightShadowsWithMaps),Z.push(V.shadowMapType),Z.push(V.toneMapping),Z.push(V.numClippingPlanes),Z.push(V.numClipIntersection),Z.push(V.depthPacking)}function f(Z,V){a.disableAll(),V.isWebGL2&&a.enable(0),V.supportsVertexTextures&&a.enable(1),V.instancing&&a.enable(2),V.instancingColor&&a.enable(3),V.matcap&&a.enable(4),V.envMap&&a.enable(5),V.normalMapObjectSpace&&a.enable(6),V.normalMapTangentSpace&&a.enable(7),V.clearcoat&&a.enable(8),V.iridescence&&a.enable(9),V.alphaTest&&a.enable(10),V.vertexColors&&a.enable(11),V.vertexAlphas&&a.enable(12),V.vertexUv1s&&a.enable(13),V.vertexUv2s&&a.enable(14),V.vertexUv3s&&a.enable(15),V.vertexTangents&&a.enable(16),Z.push(a.mask),a.disableAll(),V.fog&&a.enable(0),V.useFog&&a.enable(1),V.flatShading&&a.enable(2),V.logarithmicDepthBuffer&&a.enable(3),V.skinning&&a.enable(4),V.morphTargets&&a.enable(5),V.morphNormals&&a.enable(6),V.morphColors&&a.enable(7),V.premultipliedAlpha&&a.enable(8),V.shadowMapEnabled&&a.enable(9),V.useLegacyLights&&a.enable(10),V.doubleSided&&a.enable(11),V.flipSided&&a.enable(12),V.useDepthPacking&&a.enable(13),V.dithering&&a.enable(14),V.transmission&&a.enable(15),V.sheen&&a.enable(16),V.opaque&&a.enable(17),V.pointsUvs&&a.enable(18),Z.push(a.mask)}function B(Z){const V=m[Z.type];let N;if(V){const U=ar[V];N=V1.clone(U.uniforms)}else N=Z.uniforms;return N}function S(Z,V){let N;for(let U=0,D=c.length;U0?i.push(A):h.transparent===!0?s.push(A):t.push(A)}function l(C,d,h,m,v,y){const A=o(C,d,h,m,v,y);h.transmission>0?i.unshift(A):h.transparent===!0?s.unshift(A):t.unshift(A)}function c(C,d){t.length>1&&t.sort(C||lK),i.length>1&&i.sort(d||Q2),s.length>1&&s.sort(d||Q2)}function u(){for(let C=e,d=n.length;C=r.length?(o=new j2,r.push(o)):o=r[s],o}function t(){n=new WeakMap}return{get:e,dispose:t}}function cK(){const n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new H,color:new Re};break;case"SpotLight":t={position:new H,direction:new H,color:new Re,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new H,color:new Re,distance:0,decay:0};break;case"HemisphereLight":t={direction:new H,skyColor:new Re,groundColor:new Re};break;case"RectAreaLight":t={color:new Re,position:new H,halfWidth:new H,halfHeight:new H};break}return n[e.id]=t,t}}}function IK(){const n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ne};break;case"SpotLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ne};break;case"PointLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ne,shadowCameraNear:1,shadowCameraFar:1e3};break}return n[e.id]=t,t}}}let uK=0;function CK(n,e){return(e.castShadow?2:0)-(n.castShadow?2:0)+(e.map?1:0)-(n.map?1:0)}function dK(n,e){const t=new cK,i=IK(),s={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0};for(let u=0;u<9;u++)s.probe.push(new H);const r=new H,o=new Fe,a=new Fe;function l(u,C){let d=0,h=0,m=0;for(let N=0;N<9;N++)s.probe[N].set(0,0,0);let v=0,y=0,A=0,b=0,f=0,B=0,S=0,x=0,R=0,M=0;u.sort(CK);const Z=C===!0?Math.PI:1;for(let N=0,U=u.length;N0&&(e.isWebGL2||n.has("OES_texture_float_linear")===!0?(s.rectAreaLTC1=We.LTC_FLOAT_1,s.rectAreaLTC2=We.LTC_FLOAT_2):n.has("OES_texture_half_float_linear")===!0?(s.rectAreaLTC1=We.LTC_HALF_1,s.rectAreaLTC2=We.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),s.ambient[0]=d,s.ambient[1]=h,s.ambient[2]=m;const V=s.hash;(V.directionalLength!==v||V.pointLength!==y||V.spotLength!==A||V.rectAreaLength!==b||V.hemiLength!==f||V.numDirectionalShadows!==B||V.numPointShadows!==S||V.numSpotShadows!==x||V.numSpotMaps!==R)&&(s.directional.length=v,s.spot.length=A,s.rectArea.length=b,s.point.length=y,s.hemi.length=f,s.directionalShadow.length=B,s.directionalShadowMap.length=B,s.pointShadow.length=S,s.pointShadowMap.length=S,s.spotShadow.length=x,s.spotShadowMap.length=x,s.directionalShadowMatrix.length=B,s.pointShadowMatrix.length=S,s.spotLightMatrix.length=x+R-M,s.spotLightMap.length=R,s.numSpotLightShadowsWithMaps=M,V.directionalLength=v,V.pointLength=y,V.spotLength=A,V.rectAreaLength=b,V.hemiLength=f,V.numDirectionalShadows=B,V.numPointShadows=S,V.numSpotShadows=x,V.numSpotMaps=R,s.version=uK++)}function c(u,C){let d=0,h=0,m=0,v=0,y=0;const A=C.matrixWorldInverse;for(let b=0,f=u.length;b=a.length?(l=new q2(n,e),a.push(l)):l=a[o],l}function s(){t=new WeakMap}return{get:i,dispose:s}}class kA extends Jn{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=Fn,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class Ev extends Jn{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}const AK=`void main() { gl_Position = vec4( position, 1.0 ); -}`,lK=`uniform sampler2D shadow_pass; +}`,pK=`uniform sampler2D shadow_pass; uniform vec2 resolution; uniform float radius; #include @@ -3439,7 +3439,7 @@ void main() { squared_mean = squared_mean / samples; float std_dev = sqrt( squared_mean - mean * mean ); gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); -}`;function gK(n,e,t){let i=new HA;const s=new ne,r=new ne,o=new Vt,a=new YA({depthPacking:Xr}),l=new Fv,c={},u=t.maxTextureSize,C={[Hr]:Tn,[Tn]:Hr,[Pi]:Pi},d=new Zt({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new ne},radius:{value:4}},vertexShader:aK,fragmentShader:lK}),h=d.clone();h.defines.HORIZONTAL_PASS=1;const m=new ft;m.setAttribute("position",new kt(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const v=new En(m,d),y=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=SA;let A=this.type;this.render=function(S,x,R){if(y.enabled===!1||y.autoUpdate===!1&&y.needsUpdate===!1||S.length===0)return;const M=n.getRenderTarget(),Z=n.getActiveCubeFace(),V=n.getActiveMipmapLevel(),N=n.state;N.setBlending(tn),N.buffers.color.setClear(1,1,1,1),N.buffers.depth.setTest(!0),N.setScissorTest(!1);const D=A!==ir&&this.type===ir,k=A===ir&&this.type!==ir;for(let $=0,te=S.length;$u||s.y>u)&&(s.x>u&&(r.x=Math.floor(u/L.x),s.x=r.x*L.x,le.mapSize.x=r.x),s.y>u&&(r.y=Math.floor(u/L.y),s.y=r.y*L.y,le.mapSize.y=r.y)),le.map===null||D===!0||k===!0){const P=this.type!==ir?{minFilter:pt,magFilter:pt}:{};le.map!==null&&le.map.dispose(),le.map=new Rt(s.x,s.y,P),le.map.texture.name=Ce.name+".shadowMap",le.camera.updateProjectionMatrix()}n.setRenderTarget(le.map),n.clear();const J=le.getViewportCount();for(let P=0;P0||x.map&&x.alphaTest>0){const N=Z.uuid,D=x.uuid;let k=c[N];k===void 0&&(k={},c[N]=k);let $=k[D];$===void 0&&($=Z.clone(),k[D]=$),Z=$}if(Z.visible=x.visible,Z.wireframe=x.wireframe,M===ir?Z.side=x.shadowSide!==null?x.shadowSide:x.side:Z.side=x.shadowSide!==null?x.shadowSide:C[x.side],Z.alphaMap=x.alphaMap,Z.alphaTest=x.alphaTest,Z.map=x.map,Z.clipShadows=x.clipShadows,Z.clippingPlanes=x.clippingPlanes,Z.clipIntersection=x.clipIntersection,Z.displacementMap=x.displacementMap,Z.displacementScale=x.displacementScale,Z.displacementBias=x.displacementBias,Z.wireframeLinewidth=x.wireframeLinewidth,Z.linewidth=x.linewidth,R.isPointLight===!0&&Z.isMeshDistanceMaterial===!0){const N=n.properties.get(Z);N.light=R}return Z}function B(S,x,R,M,Z){if(S.visible===!1)return;if(S.layers.test(x.layers)&&(S.isMesh||S.isLine||S.isPoints)&&(S.castShadow||S.receiveShadow&&Z===ir)&&(!S.frustumCulled||i.intersectsObject(S))){S.modelViewMatrix.multiplyMatrices(R.matrixWorldInverse,S.matrixWorld);const D=e.update(S),k=S.material;if(Array.isArray(k)){const $=D.groups;for(let te=0,Ce=$.length;te=1):L.indexOf("OpenGL ES")!==-1&&(le=parseFloat(/^OpenGL ES (\d)/.exec(L)[1]),Ce=le>=2);let J=null,P={};const ce=n.getParameter(n.SCISSOR_BOX),se=n.getParameter(n.VIEWPORT),ee=new Vt().fromArray(ce),re=new Vt().fromArray(se);function ve(O,he,Be,Ye){const Ue=new Uint8Array(4),Dt=n.createTexture();n.bindTexture(O,Dt),n.texParameteri(O,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(O,n.TEXTURE_MAG_FILTER,n.NEAREST);for(let Ut=0;Ut"u"?!1:/OculusBrowser/g.test(navigator.userAgent),m=new WeakMap;let v;const y=new WeakMap;let A=!1;try{A=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function b(T,X){return A?new OffscreenCanvas(T,X):Cu("canvas")}function f(T,X,ge,Ge){let Ze=1;if((T.width>Ge||T.height>Ge)&&(Ze=Ge/Math.max(T.width,T.height)),Ze<1||X===!0)if(typeof HTMLImageElement<"u"&&T instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&T instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&T instanceof ImageBitmap){const Me=X?m1:Math.floor,gt=Me(Ze*T.width),Ke=Me(Ze*T.height);v===void 0&&(v=b(gt,Ke));const pe=ge?b(gt,Ke):v;return pe.width=gt,pe.height=Ke,pe.getContext("2d").drawImage(T,0,0,gt,Ke),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+T.width+"x"+T.height+") to ("+gt+"x"+Ke+")."),pe}else return"data"in T&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+T.width+"x"+T.height+")."),T;return T}function B(T){return $0(T.width)&&$0(T.height)}function S(T){return a?!1:T.wrapS!==zn||T.wrapT!==zn||T.minFilter!==pt&&T.minFilter!==je}function x(T,X){return T.generateMipmaps&&X&&T.minFilter!==pt&&T.minFilter!==je}function R(T){n.generateMipmap(T)}function M(T,X,ge,Ge,Ze=!1){if(a===!1)return X;if(T!==null){if(n[T]!==void 0)return n[T];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+T+"'")}let Me=X;return X===n.RED&&(ge===n.FLOAT&&(Me=n.R32F),ge===n.HALF_FLOAT&&(Me=n.R16F),ge===n.UNSIGNED_BYTE&&(Me=n.R8)),X===n.RG&&(ge===n.FLOAT&&(Me=n.RG32F),ge===n.HALF_FLOAT&&(Me=n.RG16F),ge===n.UNSIGNED_BYTE&&(Me=n.RG8)),X===n.RGBA&&(ge===n.FLOAT&&(Me=n.RGBA32F),ge===n.HALF_FLOAT&&(Me=n.RGBA16F),ge===n.UNSIGNED_BYTE&&(Me=Ge===mt&&Ze===!1?n.SRGB8_ALPHA8:n.RGBA8),ge===n.UNSIGNED_SHORT_4_4_4_4&&(Me=n.RGBA4),ge===n.UNSIGNED_SHORT_5_5_5_1&&(Me=n.RGB5_A1)),(Me===n.R16F||Me===n.R32F||Me===n.RG16F||Me===n.RG32F||Me===n.RGBA16F||Me===n.RGBA32F)&&e.get("EXT_color_buffer_float"),Me}function Z(T,X,ge){return x(T,ge)===!0||T.isFramebufferTexture&&T.minFilter!==pt&&T.minFilter!==je?Math.log2(Math.max(X.width,X.height))+1:T.mipmaps!==void 0&&T.mipmaps.length>0?T.mipmaps.length:T.isCompressedTexture&&Array.isArray(T.image)?X.mipmaps.length:1}function V(T){return T===pt||T===sA||T===MI?n.NEAREST:n.LINEAR}function N(T){const X=T.target;X.removeEventListener("dispose",N),k(X),X.isVideoTexture&&m.delete(X)}function D(T){const X=T.target;X.removeEventListener("dispose",D),te(X)}function k(T){const X=i.get(T);if(X.__webglInit===void 0)return;const ge=T.source,Ge=y.get(ge);if(Ge){const Ze=Ge[X.__cacheKey];Ze.usedTimes--,Ze.usedTimes===0&&$(T),Object.keys(Ge).length===0&&y.delete(ge)}i.remove(T)}function $(T){const X=i.get(T);n.deleteTexture(X.__webglTexture);const ge=T.source,Ge=y.get(ge);delete Ge[X.__cacheKey],o.memory.textures--}function te(T){const X=T.texture,ge=i.get(T),Ge=i.get(X);if(Ge.__webglTexture!==void 0&&(n.deleteTexture(Ge.__webglTexture),o.memory.textures--),T.depthTexture&&T.depthTexture.dispose(),T.isWebGLCubeRenderTarget)for(let Ze=0;Ze<6;Ze++)n.deleteFramebuffer(ge.__webglFramebuffer[Ze]),ge.__webglDepthbuffer&&n.deleteRenderbuffer(ge.__webglDepthbuffer[Ze]);else{if(n.deleteFramebuffer(ge.__webglFramebuffer),ge.__webglDepthbuffer&&n.deleteRenderbuffer(ge.__webglDepthbuffer),ge.__webglMultisampledFramebuffer&&n.deleteFramebuffer(ge.__webglMultisampledFramebuffer),ge.__webglColorRenderbuffer)for(let Ze=0;Ze=l&&console.warn("THREE.WebGLTextures: Trying to use "+T+" texture units while this GPU supports only "+l),Ce+=1,T}function J(T){const X=[];return X.push(T.wrapS),X.push(T.wrapT),X.push(T.wrapR||0),X.push(T.magFilter),X.push(T.minFilter),X.push(T.anisotropy),X.push(T.internalFormat),X.push(T.format),X.push(T.type),X.push(T.generateMipmaps),X.push(T.premultiplyAlpha),X.push(T.flipY),X.push(T.unpackAlignment),X.push(T.colorSpace),X.join()}function P(T,X){const ge=i.get(T);if(T.isVideoTexture&&ut(T),T.isRenderTargetTexture===!1&&T.version>0&&ge.__version!==T.version){const Ge=T.image;if(Ge===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(Ge.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{nt(ge,T,X);return}}t.bindTexture(n.TEXTURE_2D,ge.__webglTexture,n.TEXTURE0+X)}function ce(T,X){const ge=i.get(T);if(T.version>0&&ge.__version!==T.version){nt(ge,T,X);return}t.bindTexture(n.TEXTURE_2D_ARRAY,ge.__webglTexture,n.TEXTURE0+X)}function se(T,X){const ge=i.get(T);if(T.version>0&&ge.__version!==T.version){nt(ge,T,X);return}t.bindTexture(n.TEXTURE_3D,ge.__webglTexture,n.TEXTURE0+X)}function ee(T,X){const ge=i.get(T);if(T.version>0&&ge.__version!==T.version){lt(ge,T,X);return}t.bindTexture(n.TEXTURE_CUBE_MAP,ge.__webglTexture,n.TEXTURE0+X)}const re={[hs]:n.REPEAT,[zn]:n.CLAMP_TO_EDGE,[lu]:n.MIRRORED_REPEAT},ve={[pt]:n.NEAREST,[sA]:n.NEAREST_MIPMAP_NEAREST,[MI]:n.NEAREST_MIPMAP_LINEAR,[je]:n.LINEAR,[Zv]:n.LINEAR_MIPMAP_NEAREST,[la]:n.LINEAR_MIPMAP_LINEAR};function ye(T,X,ge){if(ge?(n.texParameteri(T,n.TEXTURE_WRAP_S,re[X.wrapS]),n.texParameteri(T,n.TEXTURE_WRAP_T,re[X.wrapT]),(T===n.TEXTURE_3D||T===n.TEXTURE_2D_ARRAY)&&n.texParameteri(T,n.TEXTURE_WRAP_R,re[X.wrapR]),n.texParameteri(T,n.TEXTURE_MAG_FILTER,ve[X.magFilter]),n.texParameteri(T,n.TEXTURE_MIN_FILTER,ve[X.minFilter])):(n.texParameteri(T,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE),n.texParameteri(T,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE),(T===n.TEXTURE_3D||T===n.TEXTURE_2D_ARRAY)&&n.texParameteri(T,n.TEXTURE_WRAP_R,n.CLAMP_TO_EDGE),(X.wrapS!==zn||X.wrapT!==zn)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),n.texParameteri(T,n.TEXTURE_MAG_FILTER,V(X.magFilter)),n.texParameteri(T,n.TEXTURE_MIN_FILTER,V(X.minFilter)),X.minFilter!==pt&&X.minFilter!==je&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),e.has("EXT_texture_filter_anisotropic")===!0){const Ge=e.get("EXT_texture_filter_anisotropic");if(X.magFilter===pt||X.minFilter!==MI&&X.minFilter!==la||X.type===wn&&e.has("OES_texture_float_linear")===!1||a===!1&&X.type===us&&e.has("OES_texture_half_float_linear")===!1)return;(X.anisotropy>1||i.get(X).__currentAnisotropy)&&(n.texParameterf(T,Ge.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(X.anisotropy,s.getMaxAnisotropy())),i.get(X).__currentAnisotropy=X.anisotropy)}}function _(T,X){let ge=!1;T.__webglInit===void 0&&(T.__webglInit=!0,X.addEventListener("dispose",N));const Ge=X.source;let Ze=y.get(Ge);Ze===void 0&&(Ze={},y.set(Ge,Ze));const Me=J(X);if(Me!==T.__cacheKey){Ze[Me]===void 0&&(Ze[Me]={texture:n.createTexture(),usedTimes:0},o.memory.textures++,ge=!0),Ze[Me].usedTimes++;const gt=Ze[T.__cacheKey];gt!==void 0&&(Ze[T.__cacheKey].usedTimes--,gt.usedTimes===0&&$(X)),T.__cacheKey=Me,T.__webglTexture=Ze[Me].texture}return ge}function nt(T,X,ge){let Ge=n.TEXTURE_2D;(X.isDataArrayTexture||X.isCompressedArrayTexture)&&(Ge=n.TEXTURE_2D_ARRAY),X.isData3DTexture&&(Ge=n.TEXTURE_3D);const Ze=_(T,X),Me=X.source;t.bindTexture(Ge,T.__webglTexture,n.TEXTURE0+ge);const gt=i.get(Me);if(Me.version!==gt.__version||Ze===!0){t.activeTexture(n.TEXTURE0+ge),n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,X.flipY),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,X.premultiplyAlpha),n.pixelStorei(n.UNPACK_ALIGNMENT,X.unpackAlignment),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,n.NONE);const Ke=S(X)&&B(X.image)===!1;let pe=f(X.image,Ke,!1,u);pe=Ht(X,pe);const De=B(pe)||a,$e=r.convert(X.format,X.colorSpace);let ot=r.convert(X.type),Te=M(X.internalFormat,$e,ot,X.colorSpace);ye(Ge,X,De);let Oe;const Wt=X.mipmaps,Et=a&&X.isVideoTexture!==!0,Cn=gt.__version===void 0||Ze===!0,O=Z(X,pe,De);if(X.isDepthTexture)Te=n.DEPTH_COMPONENT,a?X.type===wn?Te=n.DEPTH_COMPONENT32F:X.type===oo?Te=n.DEPTH_COMPONENT24:X.type===ta?Te=n.DEPTH24_STENCIL8:Te=n.DEPTH_COMPONENT16:X.type===wn&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),X.format===na&&Te===n.DEPTH_COMPONENT&&X.type!==wv&&X.type!==oo&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),X.type=oo,ot=r.convert(X.type)),X.format===ga&&Te===n.DEPTH_COMPONENT&&(Te=n.DEPTH_STENCIL,X.type!==ta&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),X.type=ta,ot=r.convert(X.type))),Cn&&(Et?t.texStorage2D(n.TEXTURE_2D,1,Te,pe.width,pe.height):t.texImage2D(n.TEXTURE_2D,0,Te,pe.width,pe.height,0,$e,ot,null));else if(X.isDataTexture)if(Wt.length>0&&De){Et&&Cn&&t.texStorage2D(n.TEXTURE_2D,O,Te,Wt[0].width,Wt[0].height);for(let he=0,Be=Wt.length;he>=1,Be>>=1}}else if(Wt.length>0&&De){Et&&Cn&&t.texStorage2D(n.TEXTURE_2D,O,Te,Wt[0].width,Wt[0].height);for(let he=0,Be=Wt.length;he0&&Cn++,t.texStorage2D(n.TEXTURE_CUBE_MAP,Cn,Oe,pe[0].width,pe[0].height));for(let he=0;he<6;he++)if(Ke){Wt?t.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+he,0,0,0,pe[he].width,pe[he].height,ot,Te,pe[he].data):t.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+he,0,Oe,pe[he].width,pe[he].height,0,ot,Te,pe[he].data);for(let Be=0;Be=n.TEXTURE_CUBE_MAP_POSITIVE_X&&Ze<=n.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&n.framebufferTexture2D(n.FRAMEBUFFER,Ge,Ze,i.get(ge).__webglTexture,0),t.bindFramebuffer(n.FRAMEBUFFER,null)}function Xe(T,X,ge){if(n.bindRenderbuffer(n.RENDERBUFFER,T),X.depthBuffer&&!X.stencilBuffer){let Ge=n.DEPTH_COMPONENT16;if(ge||qe(X)){const Ze=X.depthTexture;Ze&&Ze.isDepthTexture&&(Ze.type===wn?Ge=n.DEPTH_COMPONENT32F:Ze.type===oo&&(Ge=n.DEPTH_COMPONENT24));const Me=rt(X);qe(X)?d.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,Me,Ge,X.width,X.height):n.renderbufferStorageMultisample(n.RENDERBUFFER,Me,Ge,X.width,X.height)}else n.renderbufferStorage(n.RENDERBUFFER,Ge,X.width,X.height);n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.RENDERBUFFER,T)}else if(X.depthBuffer&&X.stencilBuffer){const Ge=rt(X);ge&&qe(X)===!1?n.renderbufferStorageMultisample(n.RENDERBUFFER,Ge,n.DEPTH24_STENCIL8,X.width,X.height):qe(X)?d.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,Ge,n.DEPTH24_STENCIL8,X.width,X.height):n.renderbufferStorage(n.RENDERBUFFER,n.DEPTH_STENCIL,X.width,X.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_STENCIL_ATTACHMENT,n.RENDERBUFFER,T)}else{const Ge=X.isWebGLMultipleRenderTargets===!0?X.texture:[X.texture];for(let Ze=0;Ze0&&qe(T)===!1){const Ke=Me?X:[X];ge.__webglMultisampledFramebuffer=n.createFramebuffer(),ge.__webglColorRenderbuffer=[],t.bindFramebuffer(n.FRAMEBUFFER,ge.__webglMultisampledFramebuffer);for(let pe=0;pe0&&qe(T)===!1){const X=T.isWebGLMultipleRenderTargets?T.texture:[T.texture],ge=T.width,Ge=T.height;let Ze=n.COLOR_BUFFER_BIT;const Me=[],gt=T.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,Ke=i.get(T),pe=T.isWebGLMultipleRenderTargets===!0;if(pe)for(let De=0;De0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&X.__useRenderToTexture!==!1}function ut(T){const X=o.render.frame;m.get(T)!==X&&(m.set(T,X),T.update())}function Ht(T,X){const ge=T.colorSpace,Ge=T.format,Ze=T.type;return T.isCompressedTexture===!0||T.format===oA||ge!==ur&&ge!==co&&(ge===mt?a===!1?e.has("EXT_sRGB")===!0&&Ge===un?(T.format=oA,T.minFilter=je,T.generateMipmaps=!1):X=Mv.sRGBToLinear(X):(Ge!==un||Ze!==rn)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",ge)),X}this.allocateTextureUnit=L,this.resetTextureUnits=le,this.setTexture2D=P,this.setTexture2DArray=ce,this.setTexture3D=se,this.setTextureCube=ee,this.rebindTextures=be,this.setupRenderTarget=Le,this.updateRenderTargetMipmap=Ve,this.updateMultisampleRenderTarget=st,this.setupDepthRenderbuffer=ue,this.setupFrameBufferTexture=Se,this.useMultisampledRTT=qe}function W1(n,e,t){const i=t.isWebGL2;function s(r,o=co){let a;if(r===rn)return n.UNSIGNED_BYTE;if(r===n1)return n.UNSIGNED_SHORT_4_4_4_4;if(r===i1)return n.UNSIGNED_SHORT_5_5_5_1;if(r===$R)return n.BYTE;if(r===e1)return n.SHORT;if(r===wv)return n.UNSIGNED_SHORT;if(r===t1)return n.INT;if(r===oo)return n.UNSIGNED_INT;if(r===wn)return n.FLOAT;if(r===us)return i?n.HALF_FLOAT:(a=e.get("OES_texture_half_float"),a!==null?a.HALF_FLOAT_OES:null);if(r===s1)return n.ALPHA;if(r===un)return n.RGBA;if(r===WA)return n.LUMINANCE;if(r===r1)return n.LUMINANCE_ALPHA;if(r===na)return n.DEPTH_COMPONENT;if(r===ga)return n.DEPTH_STENCIL;if(r===oA)return a=e.get("EXT_sRGB"),a!==null?a.SRGB_ALPHA_EXT:null;if(r===Sv)return n.RED;if(r===o1)return n.RED_INTEGER;if(r===xv)return n.RG;if(r===a1)return n.RG_INTEGER;if(r===l1)return n.RGBA_INTEGER;if(r===yh||r===Gh||r===Bh||r===Zh)if(o===mt)if(a=e.get("WEBGL_compressed_texture_s3tc_srgb"),a!==null){if(r===yh)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(r===Gh)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(r===Bh)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(r===Zh)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(a=e.get("WEBGL_compressed_texture_s3tc"),a!==null){if(r===yh)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(r===Gh)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(r===Bh)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(r===Zh)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(r===W0||r===V0||r===M0||r===N0)if(a=e.get("WEBGL_compressed_texture_pvrtc"),a!==null){if(r===W0)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(r===V0)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(r===M0)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(r===N0)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(r===g1)return a=e.get("WEBGL_compressed_texture_etc1"),a!==null?a.COMPRESSED_RGB_ETC1_WEBGL:null;if(r===H0||r===X0)if(a=e.get("WEBGL_compressed_texture_etc"),a!==null){if(r===H0)return o===mt?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(r===X0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(r===Y0||r===F0||r===K0||r===z0||r===L0||r===T0||r===E0||r===k0||r===D0||r===U0||r===P0||r===_0||r===J0||r===O0)if(a=e.get("WEBGL_compressed_texture_astc"),a!==null){if(r===Y0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(r===F0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(r===K0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(r===z0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(r===L0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(r===T0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(r===E0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(r===k0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(r===D0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(r===U0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(r===P0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(r===_0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(r===J0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(r===O0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(r===wh)if(a=e.get("EXT_texture_compression_bptc"),a!==null){if(r===wh)return o===mt?a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:a.COMPRESSED_RGBA_BPTC_UNORM_EXT}else return null;if(r===c1||r===Q0||r===j0||r===q0)if(a=e.get("EXT_texture_compression_rgtc"),a!==null){if(r===wh)return a.COMPRESSED_RED_RGTC1_EXT;if(r===Q0)return a.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(r===j0)return a.COMPRESSED_RED_GREEN_RGTC2_EXT;if(r===q0)return a.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return r===ta?i?n.UNSIGNED_INT_24_8:(a=e.get("WEBGL_depth_texture"),a!==null?a.UNSIGNED_INT_24_8_WEBGL:null):n[r]!==void 0?n[r]:null}return{convert:s}}class V1 extends An{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}}class Rg extends Xt{constructor(){super(),this.isGroup=!0,this.type="Group"}}const uK={type:"move"};class qm{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Rg,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Rg,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new H,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new H),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Rg,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new H,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new H),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const t=this._hand;if(t)for(const i of e.hand.values())this._getHandJoint(t,i)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,i){let s=null,r=null,o=null;const a=this._targetRay,l=this._grip,c=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(c&&e.hand){o=!0;for(const v of e.hand.values()){const y=t.getJointPose(v,i),A=this._getHandJoint(c,v);y!==null&&(A.matrix.fromArray(y.transform.matrix),A.matrix.decompose(A.position,A.rotation,A.scale),A.matrixWorldNeedsUpdate=!0,A.jointRadius=y.radius),A.visible=y!==null}const u=c.joints["index-finger-tip"],C=c.joints["thumb-tip"],d=u.position.distanceTo(C.position),h=.02,m=.005;c.inputState.pinching&&d>h+m?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&d<=h-m&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(r=t.getPose(e.gripSpace,i),r!==null&&(l.matrix.fromArray(r.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,r.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(r.linearVelocity)):l.hasLinearVelocity=!1,r.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(r.angularVelocity)):l.hasAngularVelocity=!1));a!==null&&(s=t.getPose(e.targetRaySpace,i),s===null&&r!==null&&(s=r),s!==null&&(a.matrix.fromArray(s.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),a.matrixWorldNeedsUpdate=!0,s.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(s.linearVelocity)):a.hasLinearVelocity=!1,s.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(s.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(uK)))}return a!==null&&(a.visible=s!==null),l!==null&&(l.visible=r!==null),c!==null&&(c.visible=o!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const i=new Rg;i.matrixAutoUpdate=!1,i.visible=!1,e.joints[t.jointName]=i,e.add(i)}return e.joints[t.jointName]}}class FA extends qt{constructor(e,t,i,s,r,o,a,l,c,u){if(u=u!==void 0?u:na,u!==na&&u!==ga)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");i===void 0&&u===na&&(i=oo),i===void 0&&u===ga&&(i=ta),super(null,s,r,o,a,l,u,i,c),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=a!==void 0?a:pt,this.minFilter=l!==void 0?l:pt,this.flipY=!1,this.generateMipmaps=!1}}class CK extends zs{constructor(e,t){super();const i=this;let s=null,r=1,o=null,a="local-floor",l=1,c=null,u=null,C=null,d=null,h=null,m=null;const v=t.getContextAttributes();let y=null,A=null;const b=[],f=[],B=new Set,S=new Map,x=new An;x.layers.enable(1),x.viewport=new Vt;const R=new An;R.layers.enable(2),R.viewport=new Vt;const M=[x,R],Z=new V1;Z.layers.enable(1),Z.layers.enable(2);let V=null,N=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(ee){let re=b[ee];return re===void 0&&(re=new qm,b[ee]=re),re.getTargetRaySpace()},this.getControllerGrip=function(ee){let re=b[ee];return re===void 0&&(re=new qm,b[ee]=re),re.getGripSpace()},this.getHand=function(ee){let re=b[ee];return re===void 0&&(re=new qm,b[ee]=re),re.getHandSpace()};function D(ee){const re=f.indexOf(ee.inputSource);if(re===-1)return;const ve=b[re];ve!==void 0&&(ve.update(ee.inputSource,ee.frame,c||o),ve.dispatchEvent({type:ee.type,data:ee.inputSource}))}function k(){s.removeEventListener("select",D),s.removeEventListener("selectstart",D),s.removeEventListener("selectend",D),s.removeEventListener("squeeze",D),s.removeEventListener("squeezestart",D),s.removeEventListener("squeezeend",D),s.removeEventListener("end",k),s.removeEventListener("inputsourceschange",$);for(let ee=0;ee=0&&(f[ye]=null,b[ye].disconnect(ve))}for(let re=0;re=f.length){f.push(ve),ye=nt;break}else if(f[nt]===null){f[nt]=ve,ye=nt;break}if(ye===-1)break}const _=b[ye];_&&_.connect(ve)}}const te=new H,Ce=new H;function le(ee,re,ve){te.setFromMatrixPosition(re.matrixWorld),Ce.setFromMatrixPosition(ve.matrixWorld);const ye=te.distanceTo(Ce),_=re.projectionMatrix.elements,nt=ve.projectionMatrix.elements,lt=_[14]/(_[10]-1),Se=_[14]/(_[10]+1),Xe=(_[9]+1)/_[5],fe=(_[9]-1)/_[5],ue=(_[8]-1)/_[0],be=(nt[8]+1)/nt[0],Le=lt*ue,Ve=lt*be,st=ye/(-ue+be),rt=st*-ue;re.matrixWorld.decompose(ee.position,ee.quaternion,ee.scale),ee.translateX(rt),ee.translateZ(st),ee.matrixWorld.compose(ee.position,ee.quaternion,ee.scale),ee.matrixWorldInverse.copy(ee.matrixWorld).invert();const qe=lt+st,ut=Se+st,Ht=Le-rt,T=Ve+(ye-rt),X=Xe*Se/ut*qe,ge=fe*Se/ut*qe;ee.projectionMatrix.makePerspective(Ht,T,X,ge,qe,ut),ee.projectionMatrixInverse.copy(ee.projectionMatrix).invert()}function L(ee,re){re===null?ee.matrixWorld.copy(ee.matrix):ee.matrixWorld.multiplyMatrices(re.matrixWorld,ee.matrix),ee.matrixWorldInverse.copy(ee.matrixWorld).invert()}this.updateCamera=function(ee){if(s===null)return;Z.near=R.near=x.near=ee.near,Z.far=R.far=x.far=ee.far,(V!==Z.near||N!==Z.far)&&(s.updateRenderState({depthNear:Z.near,depthFar:Z.far}),V=Z.near,N=Z.far);const re=ee.parent,ve=Z.cameras;L(Z,re);for(let ye=0;ye_&&(S.set(ye,ye.lastChangedTime),i.dispatchEvent({type:"planechanged",data:ye}))}}m=null}const se=new Z1;se.setAnimationLoop(ce),this.setAnimationLoop=function(ee){P=ee},this.dispose=function(){}}}function dK(n,e){function t(y,A){y.matrixAutoUpdate===!0&&y.updateMatrix(),A.value.copy(y.matrix)}function i(y,A){A.color.getRGB(y.fogColor.value,G1(n)),A.isFog?(y.fogNear.value=A.near,y.fogFar.value=A.far):A.isFogExp2&&(y.fogDensity.value=A.density)}function s(y,A,b,f,B){A.isMeshBasicMaterial||A.isMeshLambertMaterial?r(y,A):A.isMeshToonMaterial?(r(y,A),C(y,A)):A.isMeshPhongMaterial?(r(y,A),u(y,A)):A.isMeshStandardMaterial?(r(y,A),d(y,A),A.isMeshPhysicalMaterial&&h(y,A,B)):A.isMeshMatcapMaterial?(r(y,A),m(y,A)):A.isMeshDepthMaterial?r(y,A):A.isMeshDistanceMaterial?(r(y,A),v(y,A)):A.isMeshNormalMaterial?r(y,A):A.isLineBasicMaterial?(o(y,A),A.isLineDashedMaterial&&a(y,A)):A.isPointsMaterial?l(y,A,b,f):A.isSpriteMaterial?c(y,A):A.isShadowMaterial?(y.color.value.copy(A.color),y.opacity.value=A.opacity):A.isShaderMaterial&&(A.uniformsNeedUpdate=!1)}function r(y,A){y.opacity.value=A.opacity,A.color&&y.diffuse.value.copy(A.color),A.emissive&&y.emissive.value.copy(A.emissive).multiplyScalar(A.emissiveIntensity),A.map&&(y.map.value=A.map,t(A.map,y.mapTransform)),A.alphaMap&&(y.alphaMap.value=A.alphaMap,t(A.alphaMap,y.alphaMapTransform)),A.bumpMap&&(y.bumpMap.value=A.bumpMap,t(A.bumpMap,y.bumpMapTransform),y.bumpScale.value=A.bumpScale,A.side===Tn&&(y.bumpScale.value*=-1)),A.normalMap&&(y.normalMap.value=A.normalMap,t(A.normalMap,y.normalMapTransform),y.normalScale.value.copy(A.normalScale),A.side===Tn&&y.normalScale.value.negate()),A.displacementMap&&(y.displacementMap.value=A.displacementMap,t(A.displacementMap,y.displacementMapTransform),y.displacementScale.value=A.displacementScale,y.displacementBias.value=A.displacementBias),A.emissiveMap&&(y.emissiveMap.value=A.emissiveMap,t(A.emissiveMap,y.emissiveMapTransform)),A.specularMap&&(y.specularMap.value=A.specularMap,t(A.specularMap,y.specularMapTransform)),A.alphaTest>0&&(y.alphaTest.value=A.alphaTest);const b=e.get(A).envMap;if(b&&(y.envMap.value=b,y.flipEnvMap.value=b.isCubeTexture&&b.isRenderTargetTexture===!1?-1:1,y.reflectivity.value=A.reflectivity,y.ior.value=A.ior,y.refractionRatio.value=A.refractionRatio),A.lightMap){y.lightMap.value=A.lightMap;const f=n.useLegacyLights===!0?Math.PI:1;y.lightMapIntensity.value=A.lightMapIntensity*f,t(A.lightMap,y.lightMapTransform)}A.aoMap&&(y.aoMap.value=A.aoMap,y.aoMapIntensity.value=A.aoMapIntensity,t(A.aoMap,y.aoMapTransform))}function o(y,A){y.diffuse.value.copy(A.color),y.opacity.value=A.opacity,A.map&&(y.map.value=A.map,t(A.map,y.mapTransform))}function a(y,A){y.dashSize.value=A.dashSize,y.totalSize.value=A.dashSize+A.gapSize,y.scale.value=A.scale}function l(y,A,b,f){y.diffuse.value.copy(A.color),y.opacity.value=A.opacity,y.size.value=A.size*b,y.scale.value=f*.5,A.map&&(y.map.value=A.map,t(A.map,y.uvTransform)),A.alphaMap&&(y.alphaMap.value=A.alphaMap),A.alphaTest>0&&(y.alphaTest.value=A.alphaTest)}function c(y,A){y.diffuse.value.copy(A.color),y.opacity.value=A.opacity,y.rotation.value=A.rotation,A.map&&(y.map.value=A.map,t(A.map,y.mapTransform)),A.alphaMap&&(y.alphaMap.value=A.alphaMap),A.alphaTest>0&&(y.alphaTest.value=A.alphaTest)}function u(y,A){y.specular.value.copy(A.specular),y.shininess.value=Math.max(A.shininess,1e-4)}function C(y,A){A.gradientMap&&(y.gradientMap.value=A.gradientMap)}function d(y,A){y.metalness.value=A.metalness,A.metalnessMap&&(y.metalnessMap.value=A.metalnessMap,t(A.metalnessMap,y.metalnessMapTransform)),y.roughness.value=A.roughness,A.roughnessMap&&(y.roughnessMap.value=A.roughnessMap,t(A.roughnessMap,y.roughnessMapTransform)),e.get(A).envMap&&(y.envMapIntensity.value=A.envMapIntensity)}function h(y,A,b){y.ior.value=A.ior,A.sheen>0&&(y.sheenColor.value.copy(A.sheenColor).multiplyScalar(A.sheen),y.sheenRoughness.value=A.sheenRoughness,A.sheenColorMap&&(y.sheenColorMap.value=A.sheenColorMap,t(A.sheenColorMap,y.sheenColorMapTransform)),A.sheenRoughnessMap&&(y.sheenRoughnessMap.value=A.sheenRoughnessMap,t(A.sheenRoughnessMap,y.sheenRoughnessMapTransform))),A.clearcoat>0&&(y.clearcoat.value=A.clearcoat,y.clearcoatRoughness.value=A.clearcoatRoughness,A.clearcoatMap&&(y.clearcoatMap.value=A.clearcoatMap,t(A.clearcoatMap,y.clearcoatMapTransform)),A.clearcoatRoughnessMap&&(y.clearcoatRoughnessMap.value=A.clearcoatRoughnessMap,t(A.clearcoatRoughnessMap,y.clearcoatRoughnessMapTransform)),A.clearcoatNormalMap&&(y.clearcoatNormalMap.value=A.clearcoatNormalMap,t(A.clearcoatNormalMap,y.clearcoatNormalMapTransform),y.clearcoatNormalScale.value.copy(A.clearcoatNormalScale),A.side===Tn&&y.clearcoatNormalScale.value.negate())),A.iridescence>0&&(y.iridescence.value=A.iridescence,y.iridescenceIOR.value=A.iridescenceIOR,y.iridescenceThicknessMinimum.value=A.iridescenceThicknessRange[0],y.iridescenceThicknessMaximum.value=A.iridescenceThicknessRange[1],A.iridescenceMap&&(y.iridescenceMap.value=A.iridescenceMap,t(A.iridescenceMap,y.iridescenceMapTransform)),A.iridescenceThicknessMap&&(y.iridescenceThicknessMap.value=A.iridescenceThicknessMap,t(A.iridescenceThicknessMap,y.iridescenceThicknessMapTransform))),A.transmission>0&&(y.transmission.value=A.transmission,y.transmissionSamplerMap.value=b.texture,y.transmissionSamplerSize.value.set(b.width,b.height),A.transmissionMap&&(y.transmissionMap.value=A.transmissionMap,t(A.transmissionMap,y.transmissionMapTransform)),y.thickness.value=A.thickness,A.thicknessMap&&(y.thicknessMap.value=A.thicknessMap,t(A.thicknessMap,y.thicknessMapTransform)),y.attenuationDistance.value=A.attenuationDistance,y.attenuationColor.value.copy(A.attenuationColor)),y.specularIntensity.value=A.specularIntensity,y.specularColor.value.copy(A.specularColor),A.specularColorMap&&(y.specularColorMap.value=A.specularColorMap,t(A.specularColorMap,y.specularColorMapTransform)),A.specularIntensityMap&&(y.specularIntensityMap.value=A.specularIntensityMap,t(A.specularIntensityMap,y.specularIntensityMapTransform))}function m(y,A){A.matcap&&(y.matcap.value=A.matcap)}function v(y,A){const b=e.get(A).light;y.referencePosition.value.setFromMatrixPosition(b.matrixWorld),y.nearDistance.value=b.shadow.camera.near,y.farDistance.value=b.shadow.camera.far}return{refreshFogUniforms:i,refreshMaterialUniforms:s}}function hK(n,e,t,i){let s={},r={},o=[];const a=t.isWebGL2?n.getParameter(n.MAX_UNIFORM_BUFFER_BINDINGS):0;function l(b,f){const B=f.program;i.uniformBlockBinding(b,B)}function c(b,f){let B=s[b.id];B===void 0&&(m(b),B=u(b),s[b.id]=B,b.addEventListener("dispose",y));const S=f.program;i.updateUBOMapping(b,S);const x=e.render.frame;r[b.id]!==x&&(d(b),r[b.id]=x)}function u(b){const f=C();b.__bindingPointIndex=f;const B=n.createBuffer(),S=b.__size,x=b.usage;return n.bindBuffer(n.UNIFORM_BUFFER,B),n.bufferData(n.UNIFORM_BUFFER,S,x),n.bindBuffer(n.UNIFORM_BUFFER,null),n.bindBufferBase(n.UNIFORM_BUFFER,f,B),B}function C(){for(let b=0;b0){x=B%S;const D=S-x;x!==0&&D-V.boundary<0&&(B+=S-x,Z.__offset=B)}B+=V.storage}return x=B%S,x>0&&(B+=S-x),b.__size=B,b.__cache={},this}function v(b){const f={boundary:0,storage:0};return typeof b=="number"?(f.boundary=4,f.storage=4):b.isVector2?(f.boundary=8,f.storage=8):b.isVector3||b.isColor?(f.boundary=16,f.storage=12):b.isVector4?(f.boundary=16,f.storage=16):b.isMatrix3?(f.boundary=48,f.storage=48):b.isMatrix4?(f.boundary=64,f.storage=64):b.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",b),f}function y(b){const f=b.target;f.removeEventListener("dispose",y);const B=o.indexOf(f.__bindingPointIndex);o.splice(B,1),n.deleteBuffer(s[f.id]),delete s[f.id],delete r[f.id]}function A(){for(const b in s)n.deleteBuffer(s[b]);o=[],s={},r={}}return{bind:l,update:c,dispose:A}}function AK(){const n=Cu("canvas");return n.style.display="block",n}class Kv{constructor(e={}){const{canvas:t=AK(),context:i=null,depth:s=!0,stencil:r=!0,alpha:o=!1,antialias:a=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:c=!1,powerPreference:u="default",failIfMajorPerformanceCaveat:C=!1}=e;this.isWebGLRenderer=!0;let d;i!==null?d=i.getContextAttributes().alpha:d=o;let h=null,m=null;const v=[],y=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputColorSpace=mt,this.useLegacyLights=!0,this.toneMapping=gr,this.toneMappingExposure=1;const A=this;let b=!1,f=0,B=0,S=null,x=-1,R=null;const M=new Vt,Z=new Vt;let V=null,N=t.width,D=t.height,k=1,$=null,te=null;const Ce=new Vt(0,0,N,D),le=new Vt(0,0,N,D);let L=!1;const J=new HA;let P=!1,ce=!1,se=null;const ee=new Fe,re=new H,ve={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function ye(){return S===null?k:1}let _=i;function nt(Y,ae){for(let Ae=0;Ae0?m=y[y.length-1]:m=null,v.pop(),v.length>0?h=v[v.length-1]:h=null};function Jn(Y,ae,Ae,ie){if(Y.visible===!1)return;if(Y.layers.test(ae.layers)){if(Y.isGroup)Ae=Y.renderOrder;else if(Y.isLOD)Y.autoUpdate===!0&&Y.update(ae);else if(Y.isLight)m.pushLight(Y),Y.castShadow&&m.pushShadow(Y);else if(Y.isSprite){if(!Y.frustumCulled||J.intersectsSprite(Y)){ie&&re.setFromMatrixPosition(Y.matrixWorld).applyMatrix4(ee);const at=qe.update(Y),ct=Y.material;ct.visible&&h.push(Y,at,ct,Ae,re.z,null)}}else if((Y.isMesh||Y.isLine||Y.isPoints)&&(!Y.frustumCulled||J.intersectsObject(Y))){Y.isSkinnedMesh&&Y.skeleton.frame!==fe.render.frame&&(Y.skeleton.update(),Y.skeleton.frame=fe.render.frame);const at=qe.update(Y),ct=Y.material;if(ie&&(at.boundingSphere===null&&at.computeBoundingSphere(),re.copy(at.boundingSphere.center).applyMatrix4(Y.matrixWorld).applyMatrix4(ee)),Array.isArray(ct)){const ht=at.groups;for(let yt=0,Gt=ht.length;yt0&&gn(me,et,ae,Ae),ie&&Xe.viewport(M.copy(ie)),me.length>0&&yi(me,ae,Ae),et.length>0&&yi(et,ae,Ae),at.length>0&&yi(at,ae,Ae),Xe.buffers.depth.setTest(!0),Xe.buffers.depth.setMask(!0),Xe.buffers.color.setMask(!0),Xe.setPolygonOffset(!1)}function gn(Y,ae,Ae,ie){if(se===null){const ct=Se.isWebGL2;se=new Rt(1024,1024,{generateMipmaps:!0,type:lt.has("EXT_color_buffer_half_float")?us:rn,minFilter:la,samples:ct&&a===!0?4:0})}const me=A.getRenderTarget();A.setRenderTarget(se),A.clear();const et=A.toneMapping;A.toneMapping=gr,yi(Y,Ae,ie),be.updateMultisampleRenderTarget(se),be.updateRenderTargetMipmap(se);let at=!1;for(let ct=0,ht=ae.length;ct0&&be.useMultisampledRTT(Y)===!1?me=ue.get(Y).__webglMultisampledFramebuffer:me=Gt,M.copy(Y.viewport),Z.copy(Y.scissor),V=Y.scissorTest}else M.copy(Ce).multiplyScalar(k).floor(),Z.copy(le).multiplyScalar(k).floor(),V=L;if(Xe.bindFramebuffer(_.FRAMEBUFFER,me)&&Se.drawBuffers&&ie&&Xe.drawBuffers(Y,me),Xe.viewport(M),Xe.scissor(Z),Xe.setScissorTest(V),et){const ht=ue.get(Y.texture);_.framebufferTexture2D(_.FRAMEBUFFER,_.COLOR_ATTACHMENT0,_.TEXTURE_CUBE_MAP_POSITIVE_X+ae,ht.__webglTexture,Ae)}else if(at){const ht=ue.get(Y.texture),yt=ae||0;_.framebufferTextureLayer(_.FRAMEBUFFER,_.COLOR_ATTACHMENT0,ht.__webglTexture,Ae||0,yt)}x=-1},this.readRenderTargetPixels=function(Y,ae,Ae,ie,me,et,at){if(!(Y&&Y.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let ct=ue.get(Y).__webglFramebuffer;if(Y.isWebGLCubeRenderTarget&&at!==void 0&&(ct=ct[at]),ct){Xe.bindFramebuffer(_.FRAMEBUFFER,ct);try{const ht=Y.texture,yt=ht.format,Gt=ht.type;if(yt!==un&&pe.convert(yt)!==_.getParameter(_.IMPLEMENTATION_COLOR_READ_FORMAT)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}const wt=Gt===us&&(lt.has("EXT_color_buffer_half_float")||Se.isWebGL2&<.has("EXT_color_buffer_float"));if(Gt!==rn&&pe.convert(Gt)!==_.getParameter(_.IMPLEMENTATION_COLOR_READ_TYPE)&&!(Gt===wn&&(Se.isWebGL2||lt.has("OES_texture_float")||lt.has("WEBGL_color_buffer_float")))&&!wt){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}ae>=0&&ae<=Y.width-ie&&Ae>=0&&Ae<=Y.height-me&&_.readPixels(ae,Ae,ie,me,pe.convert(yt),pe.convert(Gt),et)}finally{const ht=S!==null?ue.get(S).__webglFramebuffer:null;Xe.bindFramebuffer(_.FRAMEBUFFER,ht)}}},this.copyFramebufferToTexture=function(Y,ae,Ae=0){const ie=Math.pow(2,-Ae),me=Math.floor(ae.image.width*ie),et=Math.floor(ae.image.height*ie);be.setTexture2D(ae,0),_.copyTexSubImage2D(_.TEXTURE_2D,Ae,0,0,Y.x,Y.y,me,et),Xe.unbindTexture()},this.copyTextureToTexture=function(Y,ae,Ae,ie=0){const me=ae.image.width,et=ae.image.height,at=pe.convert(Ae.format),ct=pe.convert(Ae.type);be.setTexture2D(Ae,0),_.pixelStorei(_.UNPACK_FLIP_Y_WEBGL,Ae.flipY),_.pixelStorei(_.UNPACK_PREMULTIPLY_ALPHA_WEBGL,Ae.premultiplyAlpha),_.pixelStorei(_.UNPACK_ALIGNMENT,Ae.unpackAlignment),ae.isDataTexture?_.texSubImage2D(_.TEXTURE_2D,ie,Y.x,Y.y,me,et,at,ct,ae.image.data):ae.isCompressedTexture?_.compressedTexSubImage2D(_.TEXTURE_2D,ie,Y.x,Y.y,ae.mipmaps[0].width,ae.mipmaps[0].height,at,ae.mipmaps[0].data):_.texSubImage2D(_.TEXTURE_2D,ie,Y.x,Y.y,at,ct,ae.image),ie===0&&Ae.generateMipmaps&&_.generateMipmap(_.TEXTURE_2D),Xe.unbindTexture()},this.copyTextureToTexture3D=function(Y,ae,Ae,ie,me=0){if(A.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}const et=Y.max.x-Y.min.x+1,at=Y.max.y-Y.min.y+1,ct=Y.max.z-Y.min.z+1,ht=pe.convert(ie.format),yt=pe.convert(ie.type);let Gt;if(ie.isData3DTexture)be.setTexture3D(ie,0),Gt=_.TEXTURE_3D;else if(ie.isDataArrayTexture)be.setTexture2DArray(ie,0),Gt=_.TEXTURE_2D_ARRAY;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}_.pixelStorei(_.UNPACK_FLIP_Y_WEBGL,ie.flipY),_.pixelStorei(_.UNPACK_PREMULTIPLY_ALPHA_WEBGL,ie.premultiplyAlpha),_.pixelStorei(_.UNPACK_ALIGNMENT,ie.unpackAlignment);const wt=_.getParameter(_.UNPACK_ROW_LENGTH),Pt=_.getParameter(_.UNPACK_IMAGE_HEIGHT),ti=_.getParameter(_.UNPACK_SKIP_PIXELS),es=_.getParameter(_.UNPACK_SKIP_ROWS),ks=_.getParameter(_.UNPACK_SKIP_IMAGES),nn=Ae.isCompressedTexture?Ae.mipmaps[0]:Ae.image;_.pixelStorei(_.UNPACK_ROW_LENGTH,nn.width),_.pixelStorei(_.UNPACK_IMAGE_HEIGHT,nn.height),_.pixelStorei(_.UNPACK_SKIP_PIXELS,Y.min.x),_.pixelStorei(_.UNPACK_SKIP_ROWS,Y.min.y),_.pixelStorei(_.UNPACK_SKIP_IMAGES,Y.min.z),Ae.isDataTexture||Ae.isData3DTexture?_.texSubImage3D(Gt,me,ae.x,ae.y,ae.z,et,at,ct,ht,yt,nn.data):Ae.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),_.compressedTexSubImage3D(Gt,me,ae.x,ae.y,ae.z,et,at,ct,ht,nn.data)):_.texSubImage3D(Gt,me,ae.x,ae.y,ae.z,et,at,ct,ht,yt,nn),_.pixelStorei(_.UNPACK_ROW_LENGTH,wt),_.pixelStorei(_.UNPACK_IMAGE_HEIGHT,Pt),_.pixelStorei(_.UNPACK_SKIP_PIXELS,ti),_.pixelStorei(_.UNPACK_SKIP_ROWS,es),_.pixelStorei(_.UNPACK_SKIP_IMAGES,ks),me===0&&ie.generateMipmaps&&_.generateMipmap(Gt),Xe.unbindTexture()},this.initTexture=function(Y){Y.isCubeTexture?be.setTextureCube(Y,0):Y.isData3DTexture?be.setTexture3D(Y,0):Y.isDataArrayTexture||Y.isCompressedArrayTexture?be.setTexture2DArray(Y,0):be.setTexture2D(Y,0),Xe.unbindTexture()},this.resetState=function(){f=0,B=0,S=null,Xe.reset(),De.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get physicallyCorrectLights(){return console.warn("THREE.WebGLRenderer: the property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),!this.useLegacyLights}set physicallyCorrectLights(e){console.warn("THREE.WebGLRenderer: the property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),this.useLegacyLights=!e}get outputEncoding(){return console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace===mt?Ys:Vu}set outputEncoding(e){console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace=e===Ys?mt:ur}}class M1 extends Kv{}M1.prototype.isWebGL1Renderer=!0;class KA{constructor(e,t=25e-5){this.isFogExp2=!0,this.name="",this.color=new Re(e),this.density=t}clone(){return new KA(this.color,this.density)}toJSON(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}}}class zA{constructor(e,t=1,i=1e3){this.isFog=!0,this.name="",this.color=new Re(e),this.near=t,this.far=i}clone(){return new zA(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}}class dl extends Xt{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t}get autoUpdate(){return console.warn("THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144."),this.matrixWorldAutoUpdate}set autoUpdate(e){console.warn("THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144."),this.matrixWorldAutoUpdate=e}}class LA{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=uu,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=Cs()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,i){e*=this.stride,i*=t.stride;for(let s=0,r=this.stride;se.far||t.push({distance:l,point:Qc.clone(),uv:Ui.getInterpolation(Qc,xd,qc,Rd,_2,$m,J2,new ne),face:null,object:this})}copy(e,t){return super.copy(e,t),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}}function Wd(n,e,t,i,s,r){ag.subVectors(n,t).addScalar(.5).multiply(i),s!==void 0?(jc.x=r*ag.x-s*ag.y,jc.y=s*ag.x+r*ag.y):jc.copy(ag),n.copy(e),n.x+=jc.x,n.y+=jc.y,n.applyMatrix4(N1)}const Vd=new H,O2=new H;class X1 extends Xt{constructor(){super(),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);const t=e.levels;for(let i=0,s=t.length;i0){let i,s;for(i=1,s=t.length;i0){Vd.setFromMatrixPosition(this.matrixWorld);const s=e.ray.origin.distanceTo(Vd);this.getObjectForDistance(s).raycast(e,t)}}update(e){const t=this.levels;if(t.length>1){Vd.setFromMatrixPosition(e.matrixWorld),O2.setFromMatrixPosition(this.matrixWorld);const i=Vd.distanceTo(O2)/e.zoom;t[0].object.visible=!0;let s,r;for(s=1,r=t.length;s=o)t[s-1].object.visible=!1,t[s].object.visible=!0;else break}for(this._currentLevel=s-1;sl)continue;d.applyMatrix4(this.matrixWorld);const M=e.ray.origin.distanceTo(d);Me.far||t.push({distance:M,point:C.clone().applyMatrix4(this.matrixWorld),index:f,face:null,faceIndex:null,object:this})}}else{const A=Math.max(0,o.start),b=Math.min(y.count,o.start+o.count);for(let f=A,B=b-1;fl)continue;d.applyMatrix4(this.matrixWorld);const x=e.ray.origin.distanceTo(d);xe.far||t.push({distance:x,point:C.clone().applyMatrix4(this.matrixWorld),index:f,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){const t=this.geometry.morphAttributes,i=Object.keys(t);if(i.length>0){const s=t[i[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,o=s.length;r0){const s=t[i[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,o=s.length;rs.far)return;r.push({distance:c,distanceToRay:Math.sqrt(a),point:l,index:e,face:null,object:o})}}class z1 extends qt{constructor(e,t,i,s,r,o,a,l,c){super(e,t,i,s,r,o,a,l,c),this.isVideoTexture=!0,this.minFilter=o!==void 0?o:je,this.magFilter=r!==void 0?r:je,this.generateMipmaps=!1;const u=this;function C(){u.needsUpdate=!0,e.requestVideoFrameCallback(C)}"requestVideoFrameCallback"in e&&e.requestVideoFrameCallback(C)}clone(){return new this.constructor(this.image).copy(this)}update(){const e=this.image;"requestVideoFrameCallback"in e===!1&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}class nb extends qt{constructor(e,t,i){super({width:e,height:t}),this.isFramebufferTexture=!0,this.format=i,this.magFilter=pt,this.minFilter=pt,this.generateMipmaps=!1,this.needsUpdate=!0}}class Ev extends qt{constructor(e,t,i,s,r,o,a,l,c,u,C,d){super(null,o,a,l,c,u,s,r,C,d),this.isCompressedTexture=!0,this.image={width:t,height:i},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}}class bK extends Ev{constructor(e,t,i,s,r,o){super(e,t,i,r,o),this.isCompressedArrayTexture=!0,this.image.depth=s,this.wrapR=zn}}class L1 extends qt{constructor(e,t,i,s,r,o,a,l,c){super(e,t,i,s,r,o,a,l,c),this.isCanvasTexture=!0,this.needsUpdate=!0}}class Cr{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(e,t){const i=this.getUtoTmapping(e);return this.getPoint(i,t)}getPoints(e=5){const t=[];for(let i=0;i<=e;i++)t.push(this.getPoint(i/e));return t}getSpacedPoints(e=5){const t=[];for(let i=0;i<=e;i++)t.push(this.getPointAt(i/e));return t}getLength(){const e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const t=[];let i,s=this.getPoint(0),r=0;t.push(0);for(let o=1;o<=e;o++)i=this.getPoint(o/e),r+=i.distanceTo(s),t.push(r),s=i;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){const i=this.getLengths();let s=0;const r=i.length;let o;t?o=t:o=e*i[r-1];let a=0,l=r-1,c;for(;a<=l;)if(s=Math.floor(a+(l-a)/2),c=i[s]-o,c<0)a=s+1;else if(c>0)l=s-1;else{l=s;break}if(s=l,i[s]===o)return s/(r-1);const u=i[s],d=i[s+1]-u,h=(o-u)/d;return(s+h)/(r-1)}getTangent(e,t){let s=e-1e-4,r=e+1e-4;s<0&&(s=0),r>1&&(r=1);const o=this.getPoint(s),a=this.getPoint(r),l=t||(o.isVector2?new ne:new H);return l.copy(a).sub(o).normalize(),l}getTangentAt(e,t){const i=this.getUtoTmapping(e);return this.getTangent(i,t)}computeFrenetFrames(e,t){const i=new H,s=[],r=[],o=[],a=new H,l=new Fe;for(let h=0;h<=e;h++){const m=h/e;s[h]=this.getTangentAt(m,new H)}r[0]=new H,o[0]=new H;let c=Number.MAX_VALUE;const u=Math.abs(s[0].x),C=Math.abs(s[0].y),d=Math.abs(s[0].z);u<=c&&(c=u,i.set(1,0,0)),C<=c&&(c=C,i.set(0,1,0)),d<=c&&i.set(0,0,1),a.crossVectors(s[0],i).normalize(),r[0].crossVectors(s[0],a),o[0].crossVectors(s[0],r[0]);for(let h=1;h<=e;h++){if(r[h]=r[h-1].clone(),o[h]=o[h-1].clone(),a.crossVectors(s[h-1],s[h]),a.length()>Number.EPSILON){a.normalize();const m=Math.acos(Gn(s[h-1].dot(s[h]),-1,1));r[h].applyMatrix4(l.makeRotationAxis(a,m))}o[h].crossVectors(s[h],r[h])}if(t===!0){let h=Math.acos(Gn(r[0].dot(r[e]),-1,1));h/=e,s[0].dot(a.crossVectors(r[0],r[e]))>0&&(h=-h);for(let m=1;m<=e;m++)r[m].applyMatrix4(l.makeRotationAxis(s[m],h*m)),o[m].crossVectors(s[m],r[m])}return{tangents:s,normals:r,binormals:o}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){const e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}class EA extends Cr{constructor(e=0,t=0,i=1,s=1,r=0,o=Math.PI*2,a=!1,l=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=i,this.yRadius=s,this.aStartAngle=r,this.aEndAngle=o,this.aClockwise=a,this.aRotation=l}getPoint(e,t){const i=t||new ne,s=Math.PI*2;let r=this.aEndAngle-this.aStartAngle;const o=Math.abs(r)s;)r-=s;r0?0:(Math.floor(Math.abs(a)/r)+1)*r:l===0&&a===r-1&&(a=r-2,l=1);let c,u;this.closed||a>0?c=s[(a-1)%r]:(Yd.subVectors(s[0],s[1]).add(s[0]),c=Yd);const C=s[a%r],d=s[(a+1)%r];if(this.closed||a+2s.length-2?s.length-1:o+1],C=s[o>s.length-3?s.length-1:o+2];return i.set(cZ(a,l.x,c.x,u.x,C.x),cZ(a,l.y,c.y,u.y,C.y)),i}copy(e){super.copy(e),this.points=[];for(let t=0,i=e.points.length;t=i){const o=s[r]-i,a=this.curves[r],l=a.getLength(),c=l===0?0:1-o/l;return a.getPointAt(c,t)}r++}return null}getLength(){const e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const e=[];let t=0;for(let i=0,s=this.curves.length;i1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,i=e.curves.length;t0){const C=c.getPoint(0);C.equals(this.currentPoint)||this.lineTo(C.x,C.y)}this.curves.push(c);const u=c.getPoint(1);return this.currentPoint.copy(u),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){const e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}}class cc extends ft{constructor(e=[new ne(0,-.5),new ne(.5,0),new ne(0,.5)],t=12,i=0,s=Math.PI*2){super(),this.type="LatheGeometry",this.parameters={points:e,segments:t,phiStart:i,phiLength:s},t=Math.floor(t),s=Gn(s,0,Math.PI*2);const r=[],o=[],a=[],l=[],c=[],u=1/t,C=new H,d=new ne,h=new H,m=new H,v=new H;let y=0,A=0;for(let b=0;b<=e.length-1;b++)switch(b){case 0:y=e[b+1].x-e[b].x,A=e[b+1].y-e[b].y,h.x=A*1,h.y=-y,h.z=A*0,v.copy(h),h.normalize(),l.push(h.x,h.y,h.z);break;case e.length-1:l.push(v.x,v.y,v.z);break;default:y=e[b+1].x-e[b].x,A=e[b+1].y-e[b].y,h.x=A*1,h.y=-y,h.z=A*0,m.copy(h),h.x+=v.x,h.y+=v.y,h.z+=v.z,h.normalize(),l.push(h.x,h.y,h.z),v.copy(m)}for(let b=0;b<=t;b++){const f=i+b*u*s,B=Math.sin(f),S=Math.cos(f);for(let x=0;x<=e.length-1;x++){C.x=e[x].x*B,C.y=e[x].y,C.z=e[x].x*S,o.push(C.x,C.y,C.z),d.x=b/t,d.y=x/(e.length-1),a.push(d.x,d.y);const R=l[3*x+0]*B,M=l[3*x+1],Z=l[3*x+0]*S;c.push(R,M,Z)}}for(let b=0;b0&&f(!0),t>0&&f(!1)),this.setIndex(u),this.setAttribute("position",new ke(C,3)),this.setAttribute("normal",new ke(d,3)),this.setAttribute("uv",new ke(h,2));function b(){const B=new H,S=new H;let x=0;const R=(t-e)/i;for(let M=0;M<=r;M++){const Z=[],V=M/r,N=V*(t-e)+e;for(let D=0;D<=s;D++){const k=D/s,$=k*l+a,te=Math.sin($),Ce=Math.cos($);S.x=N*te,S.y=-V*i+y,S.z=N*Ce,C.push(S.x,S.y,S.z),B.set(te,R,Ce).normalize(),d.push(B.x,B.y,B.z),h.push(k,1-V),Z.push(m++)}v.push(Z)}for(let M=0;M.9&&R<.1&&(f<.2&&(o[b+0]+=1),B<.2&&(o[b+2]+=1),S<.2&&(o[b+4]+=1))}}function d(b){r.push(b.x,b.y,b.z)}function h(b,f){const B=b*3;f.x=e[B+0],f.y=e[B+1],f.z=e[B+2]}function m(){const b=new H,f=new H,B=new H,S=new H,x=new ne,R=new ne,M=new ne;for(let Z=0,V=0;Z80*t){a=c=n[0],l=u=n[1];for(let m=t;mc&&(c=C),d>u&&(u=d);h=Math.max(c-a,u-l),h=h!==0?32767/h:0}return hu(r,o,t,a,l,h,0),o}};function _1(n,e,t,i,s){let r,o;if(s===DK(n,e,t,i)>0)for(r=e;r=e;r-=i)o=IZ(r,n[r],n[r+1],o);return o&&DA(o,o.next)&&(pu(o),o=o.next),o}function Al(n,e){if(!n)return n;e||(e=n);let t=n,i;do if(i=!1,!t.steiner&&(DA(t,t.next)||pn(t.prev,t,t.next)===0)){if(pu(t),t=e=t.prev,t===t.next)break;i=!0}else t=t.next;while(i||t!==e);return e}function hu(n,e,t,i,s,r,o){if(!n)return;!o&&r&&KK(n,i,s,r);let a=n,l,c;for(;n.prev!==n.next;){if(l=n.prev,c=n.next,r?WK(n,i,s,r):RK(n)){e.push(l.i/t|0),e.push(n.i/t|0),e.push(c.i/t|0),pu(n),n=c.next,a=c.next;continue}if(n=c,n===a){o?o===1?(n=VK(Al(n),e,t),hu(n,e,t,i,s,r,2)):o===2&&MK(n,e,t,i,s,r):hu(Al(n),e,t,i,s,r,1);break}}}function RK(n){const e=n.prev,t=n,i=n.next;if(pn(e,t,i)>=0)return!1;const s=e.x,r=t.x,o=i.x,a=e.y,l=t.y,c=i.y,u=sr?s>o?s:o:r>o?r:o,h=a>l?a>c?a:c:l>c?l:c;let m=i.next;for(;m!==e;){if(m.x>=u&&m.x<=d&&m.y>=C&&m.y<=h&&Wg(s,a,r,l,o,c,m.x,m.y)&&pn(m.prev,m,m.next)>=0)return!1;m=m.next}return!0}function WK(n,e,t,i){const s=n.prev,r=n,o=n.next;if(pn(s,r,o)>=0)return!1;const a=s.x,l=r.x,c=o.x,u=s.y,C=r.y,d=o.y,h=al?a>c?a:c:l>c?l:c,y=u>C?u>d?u:d:C>d?C:d,A=ib(h,m,e,t,i),b=ib(v,y,e,t,i);let f=n.prevZ,B=n.nextZ;for(;f&&f.z>=A&&B&&B.z<=b;){if(f.x>=h&&f.x<=v&&f.y>=m&&f.y<=y&&f!==s&&f!==o&&Wg(a,u,l,C,c,d,f.x,f.y)&&pn(f.prev,f,f.next)>=0||(f=f.prevZ,B.x>=h&&B.x<=v&&B.y>=m&&B.y<=y&&B!==s&&B!==o&&Wg(a,u,l,C,c,d,B.x,B.y)&&pn(B.prev,B,B.next)>=0))return!1;B=B.nextZ}for(;f&&f.z>=A;){if(f.x>=h&&f.x<=v&&f.y>=m&&f.y<=y&&f!==s&&f!==o&&Wg(a,u,l,C,c,d,f.x,f.y)&&pn(f.prev,f,f.next)>=0)return!1;f=f.prevZ}for(;B&&B.z<=b;){if(B.x>=h&&B.x<=v&&B.y>=m&&B.y<=y&&B!==s&&B!==o&&Wg(a,u,l,C,c,d,B.x,B.y)&&pn(B.prev,B,B.next)>=0)return!1;B=B.nextZ}return!0}function VK(n,e,t){let i=n;do{const s=i.prev,r=i.next.next;!DA(s,r)&&J1(s,i,i.next,r)&&Au(s,r)&&Au(r,s)&&(e.push(s.i/t|0),e.push(i.i/t|0),e.push(r.i/t|0),pu(i),pu(i.next),i=n=r),i=i.next}while(i!==n);return Al(i)}function MK(n,e,t,i,s,r){let o=n;do{let a=o.next.next;for(;a!==o.prev;){if(o.i!==a.i&&TK(o,a)){let l=O1(o,a);o=Al(o,o.next),l=Al(l,l.next),hu(o,e,t,i,s,r,0),hu(l,e,t,i,s,r,0);return}a=a.next}o=o.next}while(o!==n)}function NK(n,e,t,i){const s=[];let r,o,a,l,c;for(r=0,o=e.length;r=t.next.y&&t.next.y!==t.y){const d=t.x+(o-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(d<=r&&d>i&&(i=d,s=t.x=t.x&&t.x>=l&&r!==t.x&&Wg(os.x||t.x===s.x&&FK(s,t)))&&(s=t,u=C)),t=t.next;while(t!==a);return s}function FK(n,e){return pn(n.prev,n,e.prev)<0&&pn(e.next,n,n.next)<0}function KK(n,e,t,i){let s=n;do s.z===0&&(s.z=ib(s.x,s.y,e,t,i)),s.prevZ=s.prev,s.nextZ=s.next,s=s.next;while(s!==n);s.prevZ.nextZ=null,s.prevZ=null,zK(s)}function zK(n){let e,t,i,s,r,o,a,l,c=1;do{for(t=n,n=null,r=null,o=0;t;){for(o++,i=t,a=0,e=0;e0||l>0&&i;)a!==0&&(l===0||!i||t.z<=i.z)?(s=t,t=t.nextZ,a--):(s=i,i=i.nextZ,l--),r?r.nextZ=s:n=s,s.prevZ=r,r=s;t=i}r.nextZ=null,c*=2}while(o>1);return n}function ib(n,e,t,i,s){return n=(n-t)*s|0,e=(e-i)*s|0,n=(n|n<<8)&16711935,n=(n|n<<4)&252645135,n=(n|n<<2)&858993459,n=(n|n<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,n|e<<1}function LK(n){let e=n,t=n;do(e.x=(n-o)*(r-a)&&(n-o)*(i-a)>=(t-o)*(e-a)&&(t-o)*(r-a)>=(s-o)*(i-a)}function TK(n,e){return n.next.i!==e.i&&n.prev.i!==e.i&&!EK(n,e)&&(Au(n,e)&&Au(e,n)&&kK(n,e)&&(pn(n.prev,n,e.prev)||pn(n,e.prev,e))||DA(n,e)&&pn(n.prev,n,n.next)>0&&pn(e.prev,e,e.next)>0)}function pn(n,e,t){return(e.y-n.y)*(t.x-e.x)-(e.x-n.x)*(t.y-e.y)}function DA(n,e){return n.x===e.x&&n.y===e.y}function J1(n,e,t,i){const s=Td(pn(n,e,t)),r=Td(pn(n,e,i)),o=Td(pn(t,i,n)),a=Td(pn(t,i,e));return!!(s!==r&&o!==a||s===0&&Ld(n,t,e)||r===0&&Ld(n,i,e)||o===0&&Ld(t,n,i)||a===0&&Ld(t,e,i))}function Ld(n,e,t){return e.x<=Math.max(n.x,t.x)&&e.x>=Math.min(n.x,t.x)&&e.y<=Math.max(n.y,t.y)&&e.y>=Math.min(n.y,t.y)}function Td(n){return n>0?1:n<0?-1:0}function EK(n,e){let t=n;do{if(t.i!==n.i&&t.next.i!==n.i&&t.i!==e.i&&t.next.i!==e.i&&J1(t,t.next,n,e))return!0;t=t.next}while(t!==n);return!1}function Au(n,e){return pn(n.prev,n,n.next)<0?pn(n,e,n.next)>=0&&pn(n,n.prev,e)>=0:pn(n,e,n.prev)<0||pn(n,n.next,e)<0}function kK(n,e){let t=n,i=!1;const s=(n.x+e.x)/2,r=(n.y+e.y)/2;do t.y>r!=t.next.y>r&&t.next.y!==t.y&&s<(t.next.x-t.x)*(r-t.y)/(t.next.y-t.y)+t.x&&(i=!i),t=t.next;while(t!==n);return i}function O1(n,e){const t=new sb(n.i,n.x,n.y),i=new sb(e.i,e.x,e.y),s=n.next,r=e.prev;return n.next=e,e.prev=n,t.next=s,s.prev=t,i.next=t,t.prev=i,r.next=i,i.prev=r,i}function IZ(n,e,t,i){const s=new sb(n,e,t);return i?(s.next=i.next,s.prev=i,i.next.prev=s,i.next=s):(s.prev=s,s.next=s),s}function pu(n){n.next.prev=n.prev,n.prev.next=n.next,n.prevZ&&(n.prevZ.nextZ=n.nextZ),n.nextZ&&(n.nextZ.prevZ=n.prevZ)}function sb(n,e,t){this.i=n,this.x=e,this.y=t,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function DK(n,e,t,i){let s=0;for(let r=e,o=t-i;r2&&n[e-1].equals(n[0])&&n.pop()}function CZ(n,e){for(let t=0;tNumber.EPSILON){const ge=Math.sqrt(T),Ge=Math.sqrt(ut*ut+Ht*Ht),Ze=ue.x-qe/ge,Me=ue.y+rt/ge,gt=be.x-Ht/Ge,Ke=be.y+ut/Ge,pe=((gt-Ze)*Ht-(Ke-Me)*ut)/(rt*Ht-qe*ut);Le=Ze+rt*pe-fe.x,Ve=Me+qe*pe-fe.y;const De=Le*Le+Ve*Ve;if(De<=2)return new ne(Le,Ve);st=Math.sqrt(De/2)}else{let ge=!1;rt>Number.EPSILON?ut>Number.EPSILON&&(ge=!0):rt<-Number.EPSILON?ut<-Number.EPSILON&&(ge=!0):Math.sign(qe)===Math.sign(Ht)&&(ge=!0),ge?(Le=-qe,Ve=rt,st=Math.sqrt(T)):(Le=rt,Ve=qe,st=Math.sqrt(T/2))}return new ne(Le/st,Ve/st)}const J=[];for(let fe=0,ue=$.length,be=ue-1,Le=fe+1;fe=0;fe--){const ue=fe/y,be=h*Math.cos(ue*Math.PI/2),Le=m*Math.sin(ue*Math.PI/2)+v;for(let Ve=0,st=$.length;Ve=0;){const Le=be;let Ve=be-1;Ve<0&&(Ve=fe.length-1);for(let st=0,rt=u+y*2;st0)&&h.push(f,B,x),(A!==i-1||l0!=e>0&&this.version++,this._sheen=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class eW extends _n{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new Re(16777215),this.specular=new Re(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Re(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=fo,this.normalScale=new ne(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Wu,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class tW extends _n{constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new Re(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Re(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=fo,this.normalScale=new ne(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}class Ov extends _n{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=fo,this.normalScale=new ne(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}}class nW extends _n{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new Re(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Re(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=fo,this.normalScale=new ne(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Wu,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class iW extends _n{constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new Re(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=fo,this.normalScale=new ne(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.flatShading=e.flatShading,this.fog=e.fog,this}}class sW extends Ni{constructor(e){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}}function Vs(n,e,t){return Qv(n)?new n.constructor(n.subarray(e,t!==void 0?t:n.length)):n.slice(e,t)}function $a(n,e,t){return!n||!t&&n.constructor===e?n:typeof e.BYTES_PER_ELEMENT=="number"?new e(n):Array.prototype.slice.call(n)}function Qv(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function rW(n){function e(s,r){return n[s]-n[r]}const t=n.length,i=new Array(t);for(let s=0;s!==t;++s)i[s]=s;return i.sort(e),i}function rb(n,e,t){const i=n.length,s=new n.constructor(i);for(let r=0,o=0;o!==i;++r){const a=t[r]*e;for(let l=0;l!==e;++l)s[o++]=n[a+l]}return s}function jv(n,e,t,i){let s=1,r=n[0];for(;r!==void 0&&r[i]===void 0;)r=n[s++];if(r===void 0)return;let o=r[i];if(o!==void 0)if(Array.isArray(o))do o=r[i],o!==void 0&&(e.push(r.time),t.push.apply(t,o)),r=n[s++];while(r!==void 0);else if(o.toArray!==void 0)do o=r[i],o!==void 0&&(e.push(r.time),o.toArray(t,t.length)),r=n[s++];while(r!==void 0);else do o=r[i],o!==void 0&&(e.push(r.time),t.push(o)),r=n[s++];while(r!==void 0)}function JK(n,e,t,i,s=30){const r=n.clone();r.name=e;const o=[];for(let l=0;l=i)){C.push(c.times[h]);for(let v=0;vr.tracks[l].times[0]&&(a=r.tracks[l].times[0]);for(let l=0;l=a.times[m]){const A=m*C+u,b=A+C-u;v=Vs(a.values,A,b)}else{const A=a.createInterpolant(),b=u,f=C-u;A.evaluate(r),v=Vs(A.resultBuffer,b,f)}l==="quaternion"&&new xn().fromArray(v).normalize().conjugate().toArray(v);const y=c.times.length;for(let A=0;A=r)){const a=t[1];e=r)break t}o=i,i=0;break n}break e}for(;i>>1;et;)--o;if(++o,r!==0||o!==s){r>=o&&(o=Math.max(o,1),r=o-1);const a=this.getValueSize();this.times=Vs(i,r,o),this.values=Vs(this.values,r*a,o*a)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);const i=this.times,s=this.values,r=i.length;r===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let o=null;for(let a=0;a!==r;a++){const l=i[a];if(typeof l=="number"&&isNaN(l)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,l),e=!1;break}if(o!==null&&o>l){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,l,o),e=!1;break}o=l}if(s!==void 0&&Qv(s))for(let a=0,l=s.length;a!==l;++a){const c=s[a];if(isNaN(c)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,c),e=!1;break}}return e}optimize(){const e=Vs(this.times),t=Vs(this.values),i=this.getValueSize(),s=this.getInterpolation()===Sh,r=e.length-1;let o=1;for(let a=1;a0){e[o]=e[r];for(let a=r*i,l=o*i,c=0;c!==i;++c)t[l+c]=t[a+c];++o}return o!==e.length?(this.times=Vs(e,0,o),this.values=Vs(t,0,o*i)):(this.times=e,this.values=t),this}clone(){const e=Vs(this.times,0),t=Vs(this.values,0),i=this.constructor,s=new i(this.name,e,t);return s.createInterpolant=this.createInterpolant,s}}dr.prototype.TimeBufferType=Float32Array;dr.prototype.ValueBufferType=Float32Array;dr.prototype.DefaultInterpolation=cu;class Bl extends dr{}Bl.prototype.ValueTypeName="bool";Bl.prototype.ValueBufferType=Array;Bl.prototype.DefaultInterpolation=gu;Bl.prototype.InterpolantFactoryMethodLinear=void 0;Bl.prototype.InterpolantFactoryMethodSmooth=void 0;class $v extends dr{}$v.prototype.ValueTypeName="color";class mu extends dr{}mu.prototype.ValueTypeName="number";class lW extends Pu{constructor(e,t,i,s){super(e,t,i,s)}interpolate_(e,t,i,s){const r=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=(i-t)/(s-t);let c=e*a;for(let u=c+a;c!==u;c+=4)xn.slerpFlat(r,0,o,c-a,o,c,l);return r}}class uc extends dr{InterpolantFactoryMethodLinear(e){return new lW(this.times,this.values,this.getValueSize(),e)}}uc.prototype.ValueTypeName="quaternion";uc.prototype.DefaultInterpolation=cu;uc.prototype.InterpolantFactoryMethodSmooth=void 0;class Zl extends dr{}Zl.prototype.ValueTypeName="string";Zl.prototype.ValueBufferType=Array;Zl.prototype.DefaultInterpolation=gu;Zl.prototype.InterpolantFactoryMethodLinear=void 0;Zl.prototype.InterpolantFactoryMethodSmooth=void 0;class fu extends dr{}fu.prototype.ValueTypeName="vector";class bu{constructor(e,t=-1,i,s=VA){this.name=e,this.tracks=i,this.duration=t,this.blendMode=s,this.uuid=Cs(),this.duration<0&&this.resetDuration()}static parse(e){const t=[],i=e.tracks,s=1/(e.fps||1);for(let o=0,a=i.length;o!==a;++o)t.push(qK(i[o]).scale(s));const r=new this(e.name,e.duration,t,e.blendMode);return r.uuid=e.uuid,r}static toJSON(e){const t=[],i=e.tracks,s={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let r=0,o=i.length;r!==o;++r)t.push(dr.toJSON(i[r]));return s}static CreateFromMorphTargetSequence(e,t,i,s){const r=t.length,o=[];for(let a=0;a1){const C=u[1];let d=s[C];d||(s[C]=d=[]),d.push(c)}}const o=[];for(const a in s)o.push(this.CreateFromMorphTargetSequence(a,s[a],t,i));return o}static parseAnimation(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const i=function(C,d,h,m,v){if(h.length!==0){const y=[],A=[];jv(h,y,A,m),y.length!==0&&v.push(new C(d,y,A))}},s=[],r=e.name||"default",o=e.fps||30,a=e.blendMode;let l=e.length||-1;const c=e.hierarchy||[];for(let C=0;C{t&&t(r),this.manager.itemEnd(e)},0),r;if(qr[e]!==void 0){qr[e].push({onLoad:t,onProgress:i,onError:s});return}qr[e]=[],qr[e].push({onLoad:t,onProgress:i,onError:s});const o=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),a=this.mimeType,l=this.responseType;fetch(o).then(c=>{if(c.status===200||c.status===0){if(c.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||c.body===void 0||c.body.getReader===void 0)return c;const u=qr[e],C=c.body.getReader(),d=c.headers.get("Content-Length")||c.headers.get("X-File-Size"),h=d?parseInt(d):0,m=h!==0;let v=0;const y=new ReadableStream({start(A){b();function b(){C.read().then(({done:f,value:B})=>{if(f)A.close();else{v+=B.byteLength;const S=new ProgressEvent("progress",{lengthComputable:m,loaded:v,total:h});for(let x=0,R=u.length;x{switch(l){case"arraybuffer":return c.arrayBuffer();case"blob":return c.blob();case"document":return c.text().then(u=>new DOMParser().parseFromString(u,a));case"json":return c.json();default:if(a===void 0)return c.text();{const C=/charset="?([^;"\s]*)"?/i.exec(a),d=C&&C[1]?C[1].toLowerCase():void 0,h=new TextDecoder(d);return c.arrayBuffer().then(m=>h.decode(m))}}}).then(c=>{pl.add(e,c);const u=qr[e];delete qr[e];for(let C=0,d=u.length;C{const u=qr[e];if(u===void 0)throw this.manager.itemError(e),c;delete qr[e];for(let C=0,d=u.length;C{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}}class ez extends ms{constructor(e){super(e)}load(e,t,i,s){const r=this,o=new Ao(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(a){try{t(r.parse(JSON.parse(a)))}catch(l){s?s(l):console.error(l),r.manager.itemError(e)}},i,s)}parse(e){const t=[];for(let i=0;i0:s.vertexColors=e.vertexColors),e.uniforms!==void 0)for(const r in e.uniforms){const o=e.uniforms[r];switch(s.uniforms[r]={},o.type){case"t":s.uniforms[r].value=i(o.value);break;case"c":s.uniforms[r].value=new Re().setHex(o.value);break;case"v2":s.uniforms[r].value=new ne().fromArray(o.value);break;case"v3":s.uniforms[r].value=new H().fromArray(o.value);break;case"v4":s.uniforms[r].value=new Vt().fromArray(o.value);break;case"m3":s.uniforms[r].value=new xt().fromArray(o.value);break;case"m4":s.uniforms[r].value=new Fe().fromArray(o.value);break;default:s.uniforms[r].value=o.value}}if(e.defines!==void 0&&(s.defines=e.defines),e.vertexShader!==void 0&&(s.vertexShader=e.vertexShader),e.fragmentShader!==void 0&&(s.fragmentShader=e.fragmentShader),e.glslVersion!==void 0&&(s.glslVersion=e.glslVersion),e.extensions!==void 0)for(const r in e.extensions)s.extensions[r]=e.extensions[r];if(e.lights!==void 0&&(s.lights=e.lights),e.clipping!==void 0&&(s.clipping=e.clipping),e.size!==void 0&&(s.size=e.size),e.sizeAttenuation!==void 0&&(s.sizeAttenuation=e.sizeAttenuation),e.map!==void 0&&(s.map=i(e.map)),e.matcap!==void 0&&(s.matcap=i(e.matcap)),e.alphaMap!==void 0&&(s.alphaMap=i(e.alphaMap)),e.bumpMap!==void 0&&(s.bumpMap=i(e.bumpMap)),e.bumpScale!==void 0&&(s.bumpScale=e.bumpScale),e.normalMap!==void 0&&(s.normalMap=i(e.normalMap)),e.normalMapType!==void 0&&(s.normalMapType=e.normalMapType),e.normalScale!==void 0){let r=e.normalScale;Array.isArray(r)===!1&&(r=[r,r]),s.normalScale=new ne().fromArray(r)}return e.displacementMap!==void 0&&(s.displacementMap=i(e.displacementMap)),e.displacementScale!==void 0&&(s.displacementScale=e.displacementScale),e.displacementBias!==void 0&&(s.displacementBias=e.displacementBias),e.roughnessMap!==void 0&&(s.roughnessMap=i(e.roughnessMap)),e.metalnessMap!==void 0&&(s.metalnessMap=i(e.metalnessMap)),e.emissiveMap!==void 0&&(s.emissiveMap=i(e.emissiveMap)),e.emissiveIntensity!==void 0&&(s.emissiveIntensity=e.emissiveIntensity),e.specularMap!==void 0&&(s.specularMap=i(e.specularMap)),e.specularIntensityMap!==void 0&&(s.specularIntensityMap=i(e.specularIntensityMap)),e.specularColorMap!==void 0&&(s.specularColorMap=i(e.specularColorMap)),e.envMap!==void 0&&(s.envMap=i(e.envMap)),e.envMapIntensity!==void 0&&(s.envMapIntensity=e.envMapIntensity),e.reflectivity!==void 0&&(s.reflectivity=e.reflectivity),e.refractionRatio!==void 0&&(s.refractionRatio=e.refractionRatio),e.lightMap!==void 0&&(s.lightMap=i(e.lightMap)),e.lightMapIntensity!==void 0&&(s.lightMapIntensity=e.lightMapIntensity),e.aoMap!==void 0&&(s.aoMap=i(e.aoMap)),e.aoMapIntensity!==void 0&&(s.aoMapIntensity=e.aoMapIntensity),e.gradientMap!==void 0&&(s.gradientMap=i(e.gradientMap)),e.clearcoatMap!==void 0&&(s.clearcoatMap=i(e.clearcoatMap)),e.clearcoatRoughnessMap!==void 0&&(s.clearcoatRoughnessMap=i(e.clearcoatRoughnessMap)),e.clearcoatNormalMap!==void 0&&(s.clearcoatNormalMap=i(e.clearcoatNormalMap)),e.clearcoatNormalScale!==void 0&&(s.clearcoatNormalScale=new ne().fromArray(e.clearcoatNormalScale)),e.iridescenceMap!==void 0&&(s.iridescenceMap=i(e.iridescenceMap)),e.iridescenceThicknessMap!==void 0&&(s.iridescenceThicknessMap=i(e.iridescenceThicknessMap)),e.transmissionMap!==void 0&&(s.transmissionMap=i(e.transmissionMap)),e.thicknessMap!==void 0&&(s.thicknessMap=i(e.thicknessMap)),e.sheenColorMap!==void 0&&(s.sheenColorMap=i(e.sheenColorMap)),e.sheenRoughnessMap!==void 0&&(s.sheenRoughnessMap=i(e.sheenRoughnessMap)),s}setTextures(e){return this.textures=e,this}static createMaterialFromType(e){const t={ShadowMaterial:j1,SpriteMaterial:zv,RawShaderMaterial:q1,ShaderMaterial:Zt,PointsMaterial:Tv,MeshPhysicalMaterial:$1,MeshStandardMaterial:UA,MeshPhongMaterial:eW,MeshToonMaterial:tW,MeshNormalMaterial:Ov,MeshLambertMaterial:nW,MeshDepthMaterial:YA,MeshDistanceMaterial:Fv,MeshBasicMaterial:ha,MeshMatcapMaterial:iW,LineDashedMaterial:sW,LineBasicMaterial:Ni,Material:_n};return new t[e]}}class ob{static decodeText(e){if(typeof TextDecoder<"u")return new TextDecoder().decode(e);let t="";for(let i=0,s=e.length;i0){const l=new PA(t);r=new vu(l),r.setCrossOrigin(this.crossOrigin);for(let c=0,u=e.length;c0){s=new vu(this.manager),s.setCrossOrigin(this.crossOrigin);for(let o=0,a=e.length;o"u"&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"}}setOptions(e){return this.options=e,this}load(e,t,i,s){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const r=this,o=pl.get(e);if(o!==void 0)return r.manager.itemStart(e),setTimeout(function(){t&&t(o),r.manager.itemEnd(e)},0),o;const a={};a.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",a.headers=this.requestHeader,fetch(e,a).then(function(l){return l.blob()}).then(function(l){return createImageBitmap(l,Object.assign(r.options,{colorSpaceConversion:"none"}))}).then(function(l){pl.add(e,l),t&&t(l),r.manager.itemEnd(e)}).catch(function(l){s&&s(l),r.manager.itemError(e),r.manager.itemEnd(e)}),r.manager.itemStart(e)}}let Ed;class ty{static getContext(){return Ed===void 0&&(Ed=new(window.AudioContext||window.webkitAudioContext)),Ed}static setContext(e){Ed=e}}class cz extends ms{constructor(e){super(e)}load(e,t,i,s){const r=this,o=new Ao(this.manager);o.setResponseType("arraybuffer"),o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(l){try{const c=l.slice(0);ty.getContext().decodeAudioData(c,function(C){t(C)},a)}catch(c){a(c)}},i,s);function a(l){s?s(l):console.error(l),r.manager.itemError(e)}}}class Iz extends _A{constructor(e,t,i=1){super(void 0,i),this.isHemisphereLightProbe=!0;const s=new Re().set(e),r=new Re().set(t),o=new H(s.r,s.g,s.b),a=new H(r.r,r.g,r.b),l=Math.sqrt(Math.PI),c=l*Math.sqrt(.75);this.sh.coefficients[0].copy(o).add(a).multiplyScalar(l),this.sh.coefficients[1].copy(o).sub(a).multiplyScalar(c)}}class uz extends _A{constructor(e,t=1){super(void 0,t),this.isAmbientLightProbe=!0;const i=new Re().set(e);this.sh.coefficients[0].set(i.r,i.g,i.b).multiplyScalar(2*Math.sqrt(Math.PI))}}const vZ=new Fe,yZ=new Fe,Ma=new Fe;class Cz{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new An,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new An,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(e){const t=this._cache;if(t.focus!==e.focus||t.fov!==e.fov||t.aspect!==e.aspect*this.aspect||t.near!==e.near||t.far!==e.far||t.zoom!==e.zoom||t.eyeSep!==this.eyeSep){t.focus=e.focus,t.fov=e.fov,t.aspect=e.aspect*this.aspect,t.near=e.near,t.far=e.far,t.zoom=e.zoom,t.eyeSep=this.eyeSep,Ma.copy(e.projectionMatrix);const s=t.eyeSep/2,r=s*t.near/t.focus,o=t.near*Math.tan(rl*t.fov*.5)/t.zoom;let a,l;yZ.elements[12]=-s,vZ.elements[12]=s,a=-o*t.aspect+r,l=o*t.aspect+r,Ma.elements[0]=2*t.near/(l-a),Ma.elements[8]=(l+a)/(l-a),this.cameraL.projectionMatrix.copy(Ma),a=-o*t.aspect-r,l=o*t.aspect-r,Ma.elements[0]=2*t.near/(l-a),Ma.elements[8]=(l+a)/(l-a),this.cameraR.projectionMatrix.copy(Ma)}this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(yZ),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(vZ)}}class ny{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=GZ(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const t=GZ();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}}function GZ(){return(typeof performance>"u"?Date:performance).now()}const Na=new H,BZ=new xn,dz=new H,Ha=new H;class hz extends Xt{constructor(){super(),this.type="AudioListener",this.context=ty.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new ny}getInput(){return this.gain}removeFilter(){return this.filter!==null&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(e){return this.filter!==null?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}updateMatrixWorld(e){super.updateMatrixWorld(e);const t=this.context.listener,i=this.up;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(Na,BZ,dz),Ha.set(0,0,-1).applyQuaternion(BZ),t.positionX){const s=this.context.currentTime+this.timeDelta;t.positionX.linearRampToValueAtTime(Na.x,s),t.positionY.linearRampToValueAtTime(Na.y,s),t.positionZ.linearRampToValueAtTime(Na.z,s),t.forwardX.linearRampToValueAtTime(Ha.x,s),t.forwardY.linearRampToValueAtTime(Ha.y,s),t.forwardZ.linearRampToValueAtTime(Ha.z,s),t.upX.linearRampToValueAtTime(i.x,s),t.upY.linearRampToValueAtTime(i.y,s),t.upZ.linearRampToValueAtTime(i.z,s)}else t.setPosition(Na.x,Na.y,Na.z),t.setOrientation(Ha.x,Ha.y,Ha.z,i.x,i.y,i.z)}}class bW extends Xt{constructor(e){super(),this.type="Audio",this.listener=e,this.context=e.context,this.gain=this.context.createGain(),this.gain.connect(e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=e,this.connect(),this}setMediaElementSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(e),this.connect(),this}setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(e),this.connect(),this}setBuffer(e){return this.buffer=e,this.sourceType="buffer",this.autoplay&&this.play(),this}play(e=0){if(this.isPlaying===!0){console.warn("THREE.Audio: Audio is already playing.");return}if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}this._startedAt=this.context.currentTime+e;const t=this.context.createBufferSource();return t.buffer=this.buffer,t.loop=this.loop,t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.onended=this.onEnded.bind(this),t.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=t,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this._progress=0,this.source!==null&&(this.source.stop(),this.source.onended=null),this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(i,s,this._addIndex*t,1,t);for(let l=t,c=t+t;l!==c;++l)if(i[l]!==i[l+t]){a.setValue(i,s);break}}saveOriginalState(){const e=this.binding,t=this.buffer,i=this.valueSize,s=i*this._origIndex;e.getValue(t,s);for(let r=i,o=s;r!==o;++r)t[r]=t[s+r%i];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){const e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let i=e;i=.5)for(let o=0;o!==r;++o)e[t+o]=e[i+o]}_slerp(e,t,i,s){xn.slerpFlat(e,t,e,t,e,i,s)}_slerpAdditive(e,t,i,s,r){const o=this._workIndex*r;xn.multiplyQuaternionsFlat(e,o,e,t,e,i),xn.slerpFlat(e,t,e,t,e,o,s)}_lerp(e,t,i,s,r){const o=1-s;for(let a=0;a!==r;++a){const l=t+a;e[l]=e[l]*o+e[i+a]*s}}_lerpAdditive(e,t,i,s,r){for(let o=0;o!==r;++o){const a=t+o;e[a]=e[a]+e[i+o]*s}}}const iy="\\[\\]\\.:\\/",fz=new RegExp("["+iy+"]","g"),sy="[^"+iy+"]",bz="[^"+iy.replace("\\.","")+"]",vz=/((?:WC+[\/:])*)/.source.replace("WC",sy),yz=/(WCOD+)?/.source.replace("WCOD",bz),Gz=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",sy),Bz=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",sy),Zz=new RegExp("^"+vz+yz+Gz+Bz+"$"),wz=["material","materials","bones","map"];class Sz{constructor(e,t,i){const s=i||Yt.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,s)}getValue(e,t){this.bind();const i=this._targetGroup.nCachedObjects_,s=this._bindings[i];s!==void 0&&s.getValue(e,t)}setValue(e,t){const i=this._bindings;for(let s=this._targetGroup.nCachedObjects_,r=i.length;s!==r;++s)i[s].setValue(e,t)}bind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].bind()}unbind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].unbind()}}class Yt{constructor(e,t,i){this.path=t,this.parsedPath=i||Yt.parseTrackName(t),this.node=Yt.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,i){return e&&e.isAnimationObjectGroup?new Yt.Composite(e,t,i):new Yt(e,t,i)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(fz,"")}static parseTrackName(e){const t=Zz.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);const i={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},s=i.nodeName&&i.nodeName.lastIndexOf(".");if(s!==void 0&&s!==-1){const r=i.nodeName.substring(s+1);wz.indexOf(r)!==-1&&(i.nodeName=i.nodeName.substring(0,s),i.objectName=r)}if(i.propertyName===null||i.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return i}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){const i=e.skeleton.getBoneByName(t);if(i!==void 0)return i}if(e.children){const i=function(r){for(let o=0;o=r){const C=r++,d=e[C];t[d.uuid]=u,e[u]=d,t[c]=C,e[C]=l;for(let h=0,m=s;h!==m;++h){const v=i[h],y=v[C],A=v[u];v[u]=y,v[C]=A}}}this.nCachedObjects_=r}uncache(){const e=this._objects,t=this._indicesByUUID,i=this._bindings,s=i.length;let r=this.nCachedObjects_,o=e.length;for(let a=0,l=arguments.length;a!==l;++a){const c=arguments[a],u=c.uuid,C=t[u];if(C!==void 0)if(delete t[u],C0&&(t[h.uuid]=C),e[C]=h,e.pop();for(let m=0,v=s;m!==v;++m){const y=i[m];y[C]=y[d],y.pop()}}}this.nCachedObjects_=r}subscribe_(e,t){const i=this._bindingsIndicesByPath;let s=i[e];const r=this._bindings;if(s!==void 0)return r[s];const o=this._paths,a=this._parsedPaths,l=this._objects,c=l.length,u=this.nCachedObjects_,C=new Array(c);s=r.length,i[e]=s,o.push(e),a.push(t),r.push(C);for(let d=u,h=l.length;d!==h;++d){const m=l[d];C[d]=new Yt(m,e,t)}return C}unsubscribe_(e){const t=this._bindingsIndicesByPath,i=t[e];if(i!==void 0){const s=this._paths,r=this._parsedPaths,o=this._bindings,a=o.length-1,l=o[a],c=e[a];t[c]=i,o[i]=l,o.pop(),r[i]=r[a],r.pop(),s[i]=s[a],s.pop()}}}class yW{constructor(e,t,i=null,s=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=i,this.blendMode=s;const r=t.tracks,o=r.length,a=new Array(o),l={endingStart:Qa,endingEnd:Qa};for(let c=0;c!==o;++c){const u=r[c].createInterpolant(null);a[c]=u,u.settings=l}this._interpolantSettings=l,this._interpolants=a,this._propertyBindings=new Array(o),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=u1,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,i){if(e.fadeOut(t),this.fadeIn(t),i){const s=this._clip.duration,r=e._clip.duration,o=r/s,a=s/r;e.warp(1,o,t),this.warp(a,1,t)}return this}crossFadeTo(e,t,i){return e.crossFadeFrom(this,t,i)}stopFading(){const e=this._weightInterpolant;return e!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,i){const s=this._mixer,r=s.time,o=this.timeScale;let a=this._timeScaleInterpolant;a===null&&(a=s._lendControlInterpolant(),this._timeScaleInterpolant=a);const l=a.parameterPositions,c=a.sampleValues;return l[0]=r,l[1]=r+i,c[0]=e/o,c[1]=t/o,this}stopWarping(){const e=this._timeScaleInterpolant;return e!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,i,s){if(!this.enabled){this._updateWeight(e);return}const r=this._startTime;if(r!==null){const l=(e-r)*i;l<0||i===0?t=0:(this._startTime=null,t=i*l)}t*=this._updateTimeScale(e);const o=this._updateTime(t),a=this._updateWeight(e);if(a>0){const l=this._interpolants,c=this._propertyBindings;switch(this.blendMode){case Rv:for(let u=0,C=l.length;u!==C;++u)l[u].evaluate(o),c[u].accumulateAdditive(a);break;case VA:default:for(let u=0,C=l.length;u!==C;++u)l[u].evaluate(o),c[u].accumulate(s,a)}}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;const i=this._weightInterpolant;if(i!==null){const s=i.evaluate(e)[0];t*=s,e>i.parameterPositions[1]&&(this.stopFading(),s===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;const i=this._timeScaleInterpolant;if(i!==null){const s=i.evaluate(e)[0];t*=s,e>i.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){const t=this._clip.duration,i=this.loop;let s=this.time+e,r=this._loopCount;const o=i===C1;if(e===0)return r===-1?s:o&&(r&1)===1?t-s:s;if(i===I1){r===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(s>=t)s=t;else if(s<0)s=0;else{this.time=s;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=s,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(r===-1&&(e>=0?(r=0,this._setEndings(!0,this.repetitions===0,o)):this._setEndings(this.repetitions===0,!0,o)),s>=t||s<0){const a=Math.floor(s/t);s-=t*a,r+=Math.abs(a);const l=this.repetitions-r;if(l<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,s=e>0?t:0,this.time=s,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(l===1){const c=e<0;this._setEndings(c,!c,o)}else this._setEndings(!1,!1,o);this._loopCount=r,this.time=s,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:a})}}else this.time=s;if(o&&(r&1)===1)return t-s}return s}_setEndings(e,t,i){const s=this._interpolantSettings;i?(s.endingStart=ja,s.endingEnd=ja):(e?s.endingStart=this.zeroSlopeAtStart?ja:Qa:s.endingStart=Iu,t?s.endingEnd=this.zeroSlopeAtEnd?ja:Qa:s.endingEnd=Iu)}_scheduleFading(e,t,i){const s=this._mixer,r=s.time;let o=this._weightInterpolant;o===null&&(o=s._lendControlInterpolant(),this._weightInterpolant=o);const a=o.parameterPositions,l=o.sampleValues;return a[0]=r,l[0]=t,a[1]=r+e,l[1]=i,this}}const Rz=new Float32Array(1);class Wz extends zs{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){const i=e._localRoot||this._root,s=e._clip.tracks,r=s.length,o=e._propertyBindings,a=e._interpolants,l=i.uuid,c=this._bindingsByRootAndName;let u=c[l];u===void 0&&(u={},c[l]=u);for(let C=0;C!==r;++C){const d=s[C],h=d.name;let m=u[h];if(m!==void 0)++m.referenceCount,o[C]=m;else{if(m=o[C],m!==void 0){m._cacheIndex===null&&(++m.referenceCount,this._addInactiveBinding(m,l,h));continue}const v=t&&t._propertyBindings[C].binding.parsedPath;m=new vW(Yt.create(i,h,v),d.ValueTypeName,d.getValueSize()),++m.referenceCount,this._addInactiveBinding(m,l,h),o[C]=m}a[C].resultBuffer=m.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){const i=(e._localRoot||this._root).uuid,s=e._clip.uuid,r=this._actionsByClip[s];this._bindAction(e,r&&r.knownActions[0]),this._addInactiveAction(e,s,i)}const t=e._propertyBindings;for(let i=0,s=t.length;i!==s;++i){const r=t[i];r.useCount++===0&&(this._lendBinding(r),r.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){const t=e._propertyBindings;for(let i=0,s=t.length;i!==s;++i){const r=t[i];--r.useCount===0&&(r.restoreOriginalState(),this._takeBackBinding(r))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){const t=e._cacheIndex;return t!==null&&t=0;--i)e[i].stop();return this}update(e){e*=this.timeScale;const t=this._actions,i=this._nActiveActions,s=this.time+=e,r=Math.sign(e),o=this._accuIndex^=1;for(let c=0;c!==i;++c)t[c]._update(s,e,r,o);const a=this._bindings,l=this._nActiveBindings;for(let c=0;c!==l;++c)a[c].apply(o);return this}setTime(e){this.time=0;for(let t=0;tthis.max.x||e.ythis.max.y)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y)}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,SZ).distanceTo(e)}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const xZ=new H,kd=new H;class Fz{constructor(e=new H,t=new H){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){xZ.subVectors(e,this.start),kd.subVectors(this.end,this.start);const i=kd.dot(kd);let r=kd.dot(xZ)/i;return t&&(r=Gn(r,0,1)),r}closestPointToPoint(e,t,i){const s=this.closestPointToPointParameter(e,t);return this.delta(i).multiplyScalar(s).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}const RZ=new H;class Kz extends Xt{constructor(e,t){super(),this.light=e,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=t,this.type="SpotLightHelper";const i=new ft,s=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let o=0,a=1,l=32;o1)for(let C=0;C.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{HZ.set(e.z,0,-e.x).normalize();const t=Math.acos(e.y);this.quaternion.setFromAxisAngle(HZ,t)}}setLength(e,t=e*.2,i=t*.2){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(i,t,i),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}}class jz extends Kr{constructor(e=1){const t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],i=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],s=new ft;s.setAttribute("position",new ke(t,3)),s.setAttribute("color",new ke(i,3));const r=new Ni({vertexColors:!0,toneMapped:!1});super(s,r),this.type="AxesHelper"}setColors(e,t,i){const s=new Re,r=this.geometry.attributes.color.array;return s.set(e),s.toArray(r,0),s.toArray(r,3),s.set(t),s.toArray(r,6),s.toArray(r,9),s.set(i),s.toArray(r,12),s.toArray(r,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class qz{constructor(){this.type="ShapePath",this.color=new Re,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new du,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,i,s){return this.currentPath.quadraticCurveTo(e,t,i,s),this}bezierCurveTo(e,t,i,s,r,o){return this.currentPath.bezierCurveTo(e,t,i,s,r,o),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){function t(A){const b=[];for(let f=0,B=A.length;fNumber.EPSILON){if(V<0&&(R=b[x],Z=-Z,M=b[S],V=-V),A.yM.y)continue;if(A.y===R.y){if(A.x===R.x)return!0}else{const N=V*(A.x-R.x)-Z*(A.y-R.y);if(N===0)return!0;if(N<0)continue;B=!B}}else{if(A.y!==R.y)continue;if(M.x<=A.x&&A.x<=R.x||R.x<=A.x&&A.x<=M.x)return!0}}return B}const s=Nr.isClockWise,r=this.subPaths;if(r.length===0)return[];let o,a,l;const c=[];if(r.length===1)return a=r[0],l=new ll,l.curves=a.curves,c.push(l),c;let u=!s(r[0].getPoints());u=e?!u:u;const C=[],d=[];let h=[],m=0,v;d[m]=void 0,h[m]=[];for(let A=0,b=r.length;A1){let A=!1,b=0;for(let f=0,B=d.length;f0&&A===!1&&(h=C)}let y;for(let A=0,b=d.length;Au||s.y>u)&&(s.x>u&&(r.x=Math.floor(u/L.x),s.x=r.x*L.x,le.mapSize.x=r.x),s.y>u&&(r.y=Math.floor(u/L.y),s.y=r.y*L.y,le.mapSize.y=r.y)),le.map===null||U===!0||D===!0){const P=this.type!==sr?{minFilter:pt,magFilter:pt}:{};le.map!==null&&le.map.dispose(),le.map=new Wt(s.x,s.y,P),le.map.texture.name=Ce.name+".shadowMap",le.camera.updateProjectionMatrix()}n.setRenderTarget(le.map),n.clear();const J=le.getViewportCount();for(let P=0;P0||x.map&&x.alphaTest>0){const N=Z.uuid,U=x.uuid;let D=c[N];D===void 0&&(D={},c[N]=D);let $=D[U];$===void 0&&($=Z.clone(),D[U]=$),Z=$}if(Z.visible=x.visible,Z.wireframe=x.wireframe,M===sr?Z.side=x.shadowSide!==null?x.shadowSide:x.side:Z.side=x.shadowSide!==null?x.shadowSide:C[x.side],Z.alphaMap=x.alphaMap,Z.alphaTest=x.alphaTest,Z.map=x.map,Z.clipShadows=x.clipShadows,Z.clippingPlanes=x.clippingPlanes,Z.clipIntersection=x.clipIntersection,Z.displacementMap=x.displacementMap,Z.displacementScale=x.displacementScale,Z.displacementBias=x.displacementBias,Z.wireframeLinewidth=x.wireframeLinewidth,Z.linewidth=x.linewidth,R.isPointLight===!0&&Z.isMeshDistanceMaterial===!0){const N=n.properties.get(Z);N.light=R}return Z}function B(S,x,R,M,Z){if(S.visible===!1)return;if(S.layers.test(x.layers)&&(S.isMesh||S.isLine||S.isPoints)&&(S.castShadow||S.receiveShadow&&Z===sr)&&(!S.frustumCulled||i.intersectsObject(S))){S.modelViewMatrix.multiplyMatrices(R.matrixWorldInverse,S.matrixWorld);const U=e.update(S),D=S.material;if(Array.isArray(D)){const $=U.groups;for(let te=0,Ce=$.length;te=1):L.indexOf("OpenGL ES")!==-1&&(le=parseFloat(/^OpenGL ES (\d)/.exec(L)[1]),Ce=le>=2);let J=null,P={};const ce=n.getParameter(n.SCISSOR_BOX),se=n.getParameter(n.VIEWPORT),ee=new Mt().fromArray(ce),re=new Mt().fromArray(se);function ve(O,he,Be,Ye){const Ue=new Uint8Array(4),Dt=n.createTexture();n.bindTexture(O,Dt),n.texParameteri(O,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(O,n.TEXTURE_MAG_FILTER,n.NEAREST);for(let Ut=0;Ut"u"?!1:/OculusBrowser/g.test(navigator.userAgent),m=new WeakMap;let v;const y=new WeakMap;let A=!1;try{A=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function b(T,X){return A?new OffscreenCanvas(T,X):Au("canvas")}function f(T,X,ge,Ge){let Ze=1;if((T.width>Ge||T.height>Ge)&&(Ze=Ge/Math.max(T.width,T.height)),Ze<1||X===!0)if(typeof HTMLImageElement<"u"&&T instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&T instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&T instanceof ImageBitmap){const Me=X?Z1:Math.floor,gt=Me(Ze*T.width),Ke=Me(Ze*T.height);v===void 0&&(v=b(gt,Ke));const pe=ge?b(gt,Ke):v;return pe.width=gt,pe.height=Ke,pe.getContext("2d").drawImage(T,0,0,gt,Ke),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+T.width+"x"+T.height+") to ("+gt+"x"+Ke+")."),pe}else return"data"in T&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+T.width+"x"+T.height+")."),T;return T}function B(T){return ib(T.width)&&ib(T.height)}function S(T){return a?!1:T.wrapS!==Ln||T.wrapT!==Ln||T.minFilter!==pt&&T.minFilter!==je}function x(T,X){return T.generateMipmaps&&X&&T.minFilter!==pt&&T.minFilter!==je}function R(T){n.generateMipmap(T)}function M(T,X,ge,Ge,Ze=!1){if(a===!1)return X;if(T!==null){if(n[T]!==void 0)return n[T];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+T+"'")}let Me=X;return X===n.RED&&(ge===n.FLOAT&&(Me=n.R32F),ge===n.HALF_FLOAT&&(Me=n.R16F),ge===n.UNSIGNED_BYTE&&(Me=n.R8)),X===n.RG&&(ge===n.FLOAT&&(Me=n.RG32F),ge===n.HALF_FLOAT&&(Me=n.RG16F),ge===n.UNSIGNED_BYTE&&(Me=n.RG8)),X===n.RGBA&&(ge===n.FLOAT&&(Me=n.RGBA32F),ge===n.HALF_FLOAT&&(Me=n.RGBA16F),ge===n.UNSIGNED_BYTE&&(Me=Ge===mt&&Ze===!1?n.SRGB8_ALPHA8:n.RGBA8),ge===n.UNSIGNED_SHORT_4_4_4_4&&(Me=n.RGBA4),ge===n.UNSIGNED_SHORT_5_5_5_1&&(Me=n.RGB5_A1)),(Me===n.R16F||Me===n.R32F||Me===n.RG16F||Me===n.RG32F||Me===n.RGBA16F||Me===n.RGBA32F)&&e.get("EXT_color_buffer_float"),Me}function Z(T,X,ge){return x(T,ge)===!0||T.isFramebufferTexture&&T.minFilter!==pt&&T.minFilter!==je?Math.log2(Math.max(X.width,X.height))+1:T.mipmaps!==void 0&&T.mipmaps.length>0?T.mipmaps.length:T.isCompressedTexture&&Array.isArray(T.image)?X.mipmaps.length:1}function V(T){return T===pt||T===cA||T===XI?n.NEAREST:n.LINEAR}function N(T){const X=T.target;X.removeEventListener("dispose",N),D(X),X.isVideoTexture&&m.delete(X)}function U(T){const X=T.target;X.removeEventListener("dispose",U),te(X)}function D(T){const X=i.get(T);if(X.__webglInit===void 0)return;const ge=T.source,Ge=y.get(ge);if(Ge){const Ze=Ge[X.__cacheKey];Ze.usedTimes--,Ze.usedTimes===0&&$(T),Object.keys(Ge).length===0&&y.delete(ge)}i.remove(T)}function $(T){const X=i.get(T);n.deleteTexture(X.__webglTexture);const ge=T.source,Ge=y.get(ge);delete Ge[X.__cacheKey],o.memory.textures--}function te(T){const X=T.texture,ge=i.get(T),Ge=i.get(X);if(Ge.__webglTexture!==void 0&&(n.deleteTexture(Ge.__webglTexture),o.memory.textures--),T.depthTexture&&T.depthTexture.dispose(),T.isWebGLCubeRenderTarget)for(let Ze=0;Ze<6;Ze++)n.deleteFramebuffer(ge.__webglFramebuffer[Ze]),ge.__webglDepthbuffer&&n.deleteRenderbuffer(ge.__webglDepthbuffer[Ze]);else{if(n.deleteFramebuffer(ge.__webglFramebuffer),ge.__webglDepthbuffer&&n.deleteRenderbuffer(ge.__webglDepthbuffer),ge.__webglMultisampledFramebuffer&&n.deleteFramebuffer(ge.__webglMultisampledFramebuffer),ge.__webglColorRenderbuffer)for(let Ze=0;Ze=l&&console.warn("THREE.WebGLTextures: Trying to use "+T+" texture units while this GPU supports only "+l),Ce+=1,T}function J(T){const X=[];return X.push(T.wrapS),X.push(T.wrapT),X.push(T.wrapR||0),X.push(T.magFilter),X.push(T.minFilter),X.push(T.anisotropy),X.push(T.internalFormat),X.push(T.format),X.push(T.type),X.push(T.generateMipmaps),X.push(T.premultiplyAlpha),X.push(T.flipY),X.push(T.unpackAlignment),X.push(T.colorSpace),X.join()}function P(T,X){const ge=i.get(T);if(T.isVideoTexture&&ut(T),T.isRenderTargetTexture===!1&&T.version>0&&ge.__version!==T.version){const Ge=T.image;if(Ge===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(Ge.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{nt(ge,T,X);return}}t.bindTexture(n.TEXTURE_2D,ge.__webglTexture,n.TEXTURE0+X)}function ce(T,X){const ge=i.get(T);if(T.version>0&&ge.__version!==T.version){nt(ge,T,X);return}t.bindTexture(n.TEXTURE_2D_ARRAY,ge.__webglTexture,n.TEXTURE0+X)}function se(T,X){const ge=i.get(T);if(T.version>0&&ge.__version!==T.version){nt(ge,T,X);return}t.bindTexture(n.TEXTURE_3D,ge.__webglTexture,n.TEXTURE0+X)}function ee(T,X){const ge=i.get(T);if(T.version>0&&ge.__version!==T.version){lt(ge,T,X);return}t.bindTexture(n.TEXTURE_CUBE_MAP,ge.__webglTexture,n.TEXTURE0+X)}const re={[As]:n.REPEAT,[Ln]:n.CLAMP_TO_EDGE,[Iu]:n.MIRRORED_REPEAT},ve={[pt]:n.NEAREST,[cA]:n.NEAREST_MIPMAP_NEAREST,[XI]:n.NEAREST_MIPMAP_LINEAR,[je]:n.LINEAR,[Rv]:n.LINEAR_MIPMAP_NEAREST,[ca]:n.LINEAR_MIPMAP_LINEAR};function ye(T,X,ge){if(ge?(n.texParameteri(T,n.TEXTURE_WRAP_S,re[X.wrapS]),n.texParameteri(T,n.TEXTURE_WRAP_T,re[X.wrapT]),(T===n.TEXTURE_3D||T===n.TEXTURE_2D_ARRAY)&&n.texParameteri(T,n.TEXTURE_WRAP_R,re[X.wrapR]),n.texParameteri(T,n.TEXTURE_MAG_FILTER,ve[X.magFilter]),n.texParameteri(T,n.TEXTURE_MIN_FILTER,ve[X.minFilter])):(n.texParameteri(T,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE),n.texParameteri(T,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE),(T===n.TEXTURE_3D||T===n.TEXTURE_2D_ARRAY)&&n.texParameteri(T,n.TEXTURE_WRAP_R,n.CLAMP_TO_EDGE),(X.wrapS!==Ln||X.wrapT!==Ln)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),n.texParameteri(T,n.TEXTURE_MAG_FILTER,V(X.magFilter)),n.texParameteri(T,n.TEXTURE_MIN_FILTER,V(X.minFilter)),X.minFilter!==pt&&X.minFilter!==je&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),e.has("EXT_texture_filter_anisotropic")===!0){const Ge=e.get("EXT_texture_filter_anisotropic");if(X.magFilter===pt||X.minFilter!==XI&&X.minFilter!==ca||X.type===wn&&e.has("OES_texture_float_linear")===!1||a===!1&&X.type===Cs&&e.has("OES_texture_half_float_linear")===!1)return;(X.anisotropy>1||i.get(X).__currentAnisotropy)&&(n.texParameterf(T,Ge.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(X.anisotropy,s.getMaxAnisotropy())),i.get(X).__currentAnisotropy=X.anisotropy)}}function _(T,X){let ge=!1;T.__webglInit===void 0&&(T.__webglInit=!0,X.addEventListener("dispose",N));const Ge=X.source;let Ze=y.get(Ge);Ze===void 0&&(Ze={},y.set(Ge,Ze));const Me=J(X);if(Me!==T.__cacheKey){Ze[Me]===void 0&&(Ze[Me]={texture:n.createTexture(),usedTimes:0},o.memory.textures++,ge=!0),Ze[Me].usedTimes++;const gt=Ze[T.__cacheKey];gt!==void 0&&(Ze[T.__cacheKey].usedTimes--,gt.usedTimes===0&&$(X)),T.__cacheKey=Me,T.__webglTexture=Ze[Me].texture}return ge}function nt(T,X,ge){let Ge=n.TEXTURE_2D;(X.isDataArrayTexture||X.isCompressedArrayTexture)&&(Ge=n.TEXTURE_2D_ARRAY),X.isData3DTexture&&(Ge=n.TEXTURE_3D);const Ze=_(T,X),Me=X.source;t.bindTexture(Ge,T.__webglTexture,n.TEXTURE0+ge);const gt=i.get(Me);if(Me.version!==gt.__version||Ze===!0){t.activeTexture(n.TEXTURE0+ge),n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,X.flipY),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,X.premultiplyAlpha),n.pixelStorei(n.UNPACK_ALIGNMENT,X.unpackAlignment),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,n.NONE);const Ke=S(X)&&B(X.image)===!1;let pe=f(X.image,Ke,!1,u);pe=Ht(X,pe);const De=B(pe)||a,$e=r.convert(X.format,X.colorSpace);let ot=r.convert(X.type),Ee=M(X.internalFormat,$e,ot,X.colorSpace);ye(Ge,X,De);let Oe;const Vt=X.mipmaps,Tt=a&&X.isVideoTexture!==!0,Cn=gt.__version===void 0||Ze===!0,O=Z(X,pe,De);if(X.isDepthTexture)Ee=n.DEPTH_COMPONENT,a?X.type===wn?Ee=n.DEPTH_COMPONENT32F:X.type===oo?Ee=n.DEPTH_COMPONENT24:X.type===na?Ee=n.DEPTH24_STENCIL8:Ee=n.DEPTH_COMPONENT16:X.type===wn&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),X.format===ia&&Ee===n.DEPTH_COMPONENT&&X.type!==Wv&&X.type!==oo&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),X.type=oo,ot=r.convert(X.type)),X.format===Ia&&Ee===n.DEPTH_COMPONENT&&(Ee=n.DEPTH_STENCIL,X.type!==na&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),X.type=na,ot=r.convert(X.type))),Cn&&(Tt?t.texStorage2D(n.TEXTURE_2D,1,Ee,pe.width,pe.height):t.texImage2D(n.TEXTURE_2D,0,Ee,pe.width,pe.height,0,$e,ot,null));else if(X.isDataTexture)if(Vt.length>0&&De){Tt&&Cn&&t.texStorage2D(n.TEXTURE_2D,O,Ee,Vt[0].width,Vt[0].height);for(let he=0,Be=Vt.length;he>=1,Be>>=1}}else if(Vt.length>0&&De){Tt&&Cn&&t.texStorage2D(n.TEXTURE_2D,O,Ee,Vt[0].width,Vt[0].height);for(let he=0,Be=Vt.length;he0&&Cn++,t.texStorage2D(n.TEXTURE_CUBE_MAP,Cn,Oe,pe[0].width,pe[0].height));for(let he=0;he<6;he++)if(Ke){Vt?t.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+he,0,0,0,pe[he].width,pe[he].height,ot,Ee,pe[he].data):t.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+he,0,Oe,pe[he].width,pe[he].height,0,ot,Ee,pe[he].data);for(let Be=0;Be=n.TEXTURE_CUBE_MAP_POSITIVE_X&&Ze<=n.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&n.framebufferTexture2D(n.FRAMEBUFFER,Ge,Ze,i.get(ge).__webglTexture,0),t.bindFramebuffer(n.FRAMEBUFFER,null)}function Xe(T,X,ge){if(n.bindRenderbuffer(n.RENDERBUFFER,T),X.depthBuffer&&!X.stencilBuffer){let Ge=n.DEPTH_COMPONENT16;if(ge||qe(X)){const Ze=X.depthTexture;Ze&&Ze.isDepthTexture&&(Ze.type===wn?Ge=n.DEPTH_COMPONENT32F:Ze.type===oo&&(Ge=n.DEPTH_COMPONENT24));const Me=rt(X);qe(X)?d.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,Me,Ge,X.width,X.height):n.renderbufferStorageMultisample(n.RENDERBUFFER,Me,Ge,X.width,X.height)}else n.renderbufferStorage(n.RENDERBUFFER,Ge,X.width,X.height);n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.RENDERBUFFER,T)}else if(X.depthBuffer&&X.stencilBuffer){const Ge=rt(X);ge&&qe(X)===!1?n.renderbufferStorageMultisample(n.RENDERBUFFER,Ge,n.DEPTH24_STENCIL8,X.width,X.height):qe(X)?d.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,Ge,n.DEPTH24_STENCIL8,X.width,X.height):n.renderbufferStorage(n.RENDERBUFFER,n.DEPTH_STENCIL,X.width,X.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_STENCIL_ATTACHMENT,n.RENDERBUFFER,T)}else{const Ge=X.isWebGLMultipleRenderTargets===!0?X.texture:[X.texture];for(let Ze=0;Ze0&&qe(T)===!1){const Ke=Me?X:[X];ge.__webglMultisampledFramebuffer=n.createFramebuffer(),ge.__webglColorRenderbuffer=[],t.bindFramebuffer(n.FRAMEBUFFER,ge.__webglMultisampledFramebuffer);for(let pe=0;pe0&&qe(T)===!1){const X=T.isWebGLMultipleRenderTargets?T.texture:[T.texture],ge=T.width,Ge=T.height;let Ze=n.COLOR_BUFFER_BIT;const Me=[],gt=T.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,Ke=i.get(T),pe=T.isWebGLMultipleRenderTargets===!0;if(pe)for(let De=0;De0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&X.__useRenderToTexture!==!1}function ut(T){const X=o.render.frame;m.get(T)!==X&&(m.set(T,X),T.update())}function Ht(T,X){const ge=T.colorSpace,Ge=T.format,Ze=T.type;return T.isCompressedTexture===!0||T.format===uA||ge!==ur&&ge!==co&&(ge===mt?a===!1?e.has("EXT_sRGB")===!0&&Ge===un?(T.format=uA,T.minFilter=je,T.generateMipmaps=!1):X=Yv.sRGBToLinear(X):(Ge!==un||Ze!==rn)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",ge)),X}this.allocateTextureUnit=L,this.resetTextureUnits=le,this.setTexture2D=P,this.setTexture2DArray=ce,this.setTexture3D=se,this.setTextureCube=ee,this.rebindTextures=be,this.setupRenderTarget=Le,this.updateRenderTargetMipmap=Ve,this.updateMultisampleRenderTarget=st,this.setupDepthRenderbuffer=ue,this.setupFrameBufferTexture=Se,this.useMultisampledRTT=qe}function F1(n,e,t){const i=t.isWebGL2;function s(r,o=co){let a;if(r===rn)return n.UNSIGNED_BYTE;if(r===g1)return n.UNSIGNED_SHORT_4_4_4_4;if(r===c1)return n.UNSIGNED_SHORT_5_5_5_1;if(r===o1)return n.BYTE;if(r===a1)return n.SHORT;if(r===Wv)return n.UNSIGNED_SHORT;if(r===l1)return n.INT;if(r===oo)return n.UNSIGNED_INT;if(r===wn)return n.FLOAT;if(r===Cs)return i?n.HALF_FLOAT:(a=e.get("OES_texture_half_float"),a!==null?a.HALF_FLOAT_OES:null);if(r===I1)return n.ALPHA;if(r===un)return n.RGBA;if(r===FA)return n.LUMINANCE;if(r===u1)return n.LUMINANCE_ALPHA;if(r===ia)return n.DEPTH_COMPONENT;if(r===Ia)return n.DEPTH_STENCIL;if(r===uA)return a=e.get("EXT_sRGB"),a!==null?a.SRGB_ALPHA_EXT:null;if(r===Vv)return n.RED;if(r===C1)return n.RED_INTEGER;if(r===Mv)return n.RG;if(r===d1)return n.RG_INTEGER;if(r===h1)return n.RGBA_INTEGER;if(r===xh||r===Rh||r===Wh||r===Vh)if(o===mt)if(a=e.get("WEBGL_compressed_texture_s3tc_srgb"),a!==null){if(r===xh)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(r===Rh)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(r===Wh)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(r===Vh)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(a=e.get("WEBGL_compressed_texture_s3tc"),a!==null){if(r===xh)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(r===Rh)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(r===Wh)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(r===Vh)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(r===H0||r===X0||r===Y0||r===F0)if(a=e.get("WEBGL_compressed_texture_pvrtc"),a!==null){if(r===H0)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(r===X0)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(r===Y0)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(r===F0)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(r===A1)return a=e.get("WEBGL_compressed_texture_etc1"),a!==null?a.COMPRESSED_RGB_ETC1_WEBGL:null;if(r===K0||r===z0)if(a=e.get("WEBGL_compressed_texture_etc"),a!==null){if(r===K0)return o===mt?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(r===z0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(r===L0||r===E0||r===T0||r===k0||r===D0||r===U0||r===P0||r===_0||r===J0||r===O0||r===Q0||r===j0||r===q0||r===$0)if(a=e.get("WEBGL_compressed_texture_astc"),a!==null){if(r===L0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(r===E0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(r===T0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(r===k0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(r===D0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(r===U0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(r===P0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(r===_0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(r===J0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(r===O0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(r===Q0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(r===j0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(r===q0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(r===$0)return o===mt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(r===Mh)if(a=e.get("EXT_texture_compression_bptc"),a!==null){if(r===Mh)return o===mt?a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:a.COMPRESSED_RGBA_BPTC_UNORM_EXT}else return null;if(r===p1||r===eb||r===tb||r===nb)if(a=e.get("EXT_texture_compression_rgtc"),a!==null){if(r===Mh)return a.COMPRESSED_RED_RGTC1_EXT;if(r===eb)return a.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(r===tb)return a.COMPRESSED_RED_GREEN_RGTC2_EXT;if(r===nb)return a.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return r===na?i?n.UNSIGNED_INT_24_8:(a=e.get("WEBGL_depth_texture"),a!==null?a.UNSIGNED_INT_24_8_WEBGL:null):n[r]!==void 0?n[r]:null}return{convert:s}}class K1 extends An{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}}class Mg extends Xt{constructor(){super(),this.isGroup=!0,this.type="Group"}}const vK={type:"move"};class nf{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Mg,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Mg,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new H,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new H),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Mg,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new H,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new H),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const t=this._hand;if(t)for(const i of e.hand.values())this._getHandJoint(t,i)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,i){let s=null,r=null,o=null;const a=this._targetRay,l=this._grip,c=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(c&&e.hand){o=!0;for(const v of e.hand.values()){const y=t.getJointPose(v,i),A=this._getHandJoint(c,v);y!==null&&(A.matrix.fromArray(y.transform.matrix),A.matrix.decompose(A.position,A.rotation,A.scale),A.matrixWorldNeedsUpdate=!0,A.jointRadius=y.radius),A.visible=y!==null}const u=c.joints["index-finger-tip"],C=c.joints["thumb-tip"],d=u.position.distanceTo(C.position),h=.02,m=.005;c.inputState.pinching&&d>h+m?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&d<=h-m&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(r=t.getPose(e.gripSpace,i),r!==null&&(l.matrix.fromArray(r.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,r.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(r.linearVelocity)):l.hasLinearVelocity=!1,r.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(r.angularVelocity)):l.hasAngularVelocity=!1));a!==null&&(s=t.getPose(e.targetRaySpace,i),s===null&&r!==null&&(s=r),s!==null&&(a.matrix.fromArray(s.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),a.matrixWorldNeedsUpdate=!0,s.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(s.linearVelocity)):a.hasLinearVelocity=!1,s.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(s.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(vK)))}return a!==null&&(a.visible=s!==null),l!==null&&(l.visible=r!==null),c!==null&&(c.visible=o!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const i=new Mg;i.matrixAutoUpdate=!1,i.visible=!1,e.joints[t.jointName]=i,e.add(i)}return e.joints[t.jointName]}}class DA extends qt{constructor(e,t,i,s,r,o,a,l,c,u){if(u=u!==void 0?u:ia,u!==ia&&u!==Ia)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");i===void 0&&u===ia&&(i=oo),i===void 0&&u===Ia&&(i=na),super(null,s,r,o,a,l,u,i,c),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=a!==void 0?a:pt,this.minFilter=l!==void 0?l:pt,this.flipY=!1,this.generateMipmaps=!1}}class yK extends Ls{constructor(e,t){super();const i=this;let s=null,r=1,o=null,a="local-floor",l=1,c=null,u=null,C=null,d=null,h=null,m=null;const v=t.getContextAttributes();let y=null,A=null;const b=[],f=[],B=new Set,S=new Map,x=new An;x.layers.enable(1),x.viewport=new Mt;const R=new An;R.layers.enable(2),R.viewport=new Mt;const M=[x,R],Z=new K1;Z.layers.enable(1),Z.layers.enable(2);let V=null,N=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(ee){let re=b[ee];return re===void 0&&(re=new nf,b[ee]=re),re.getTargetRaySpace()},this.getControllerGrip=function(ee){let re=b[ee];return re===void 0&&(re=new nf,b[ee]=re),re.getGripSpace()},this.getHand=function(ee){let re=b[ee];return re===void 0&&(re=new nf,b[ee]=re),re.getHandSpace()};function U(ee){const re=f.indexOf(ee.inputSource);if(re===-1)return;const ve=b[re];ve!==void 0&&(ve.update(ee.inputSource,ee.frame,c||o),ve.dispatchEvent({type:ee.type,data:ee.inputSource}))}function D(){s.removeEventListener("select",U),s.removeEventListener("selectstart",U),s.removeEventListener("selectend",U),s.removeEventListener("squeeze",U),s.removeEventListener("squeezestart",U),s.removeEventListener("squeezeend",U),s.removeEventListener("end",D),s.removeEventListener("inputsourceschange",$);for(let ee=0;ee=0&&(f[ye]=null,b[ye].disconnect(ve))}for(let re=0;re=f.length){f.push(ve),ye=nt;break}else if(f[nt]===null){f[nt]=ve,ye=nt;break}if(ye===-1)break}const _=b[ye];_&&_.connect(ve)}}const te=new H,Ce=new H;function le(ee,re,ve){te.setFromMatrixPosition(re.matrixWorld),Ce.setFromMatrixPosition(ve.matrixWorld);const ye=te.distanceTo(Ce),_=re.projectionMatrix.elements,nt=ve.projectionMatrix.elements,lt=_[14]/(_[10]-1),Se=_[14]/(_[10]+1),Xe=(_[9]+1)/_[5],fe=(_[9]-1)/_[5],ue=(_[8]-1)/_[0],be=(nt[8]+1)/nt[0],Le=lt*ue,Ve=lt*be,st=ye/(-ue+be),rt=st*-ue;re.matrixWorld.decompose(ee.position,ee.quaternion,ee.scale),ee.translateX(rt),ee.translateZ(st),ee.matrixWorld.compose(ee.position,ee.quaternion,ee.scale),ee.matrixWorldInverse.copy(ee.matrixWorld).invert();const qe=lt+st,ut=Se+st,Ht=Le-rt,T=Ve+(ye-rt),X=Xe*Se/ut*qe,ge=fe*Se/ut*qe;ee.projectionMatrix.makePerspective(Ht,T,X,ge,qe,ut),ee.projectionMatrixInverse.copy(ee.projectionMatrix).invert()}function L(ee,re){re===null?ee.matrixWorld.copy(ee.matrix):ee.matrixWorld.multiplyMatrices(re.matrixWorld,ee.matrix),ee.matrixWorldInverse.copy(ee.matrixWorld).invert()}this.updateCamera=function(ee){if(s===null)return;Z.near=R.near=x.near=ee.near,Z.far=R.far=x.far=ee.far,(V!==Z.near||N!==Z.far)&&(s.updateRenderState({depthNear:Z.near,depthFar:Z.far}),V=Z.near,N=Z.far);const re=ee.parent,ve=Z.cameras;L(Z,re);for(let ye=0;ye_&&(S.set(ye,ye.lastChangedTime),i.dispatchEvent({type:"planechanged",data:ye}))}}m=null}const se=new M1;se.setAnimationLoop(ce),this.setAnimationLoop=function(ee){P=ee},this.dispose=function(){}}}function GK(n,e){function t(y,A){y.matrixAutoUpdate===!0&&y.updateMatrix(),A.value.copy(y.matrix)}function i(y,A){A.color.getRGB(y.fogColor.value,W1(n)),A.isFog?(y.fogNear.value=A.near,y.fogFar.value=A.far):A.isFogExp2&&(y.fogDensity.value=A.density)}function s(y,A,b,f,B){A.isMeshBasicMaterial||A.isMeshLambertMaterial?r(y,A):A.isMeshToonMaterial?(r(y,A),C(y,A)):A.isMeshPhongMaterial?(r(y,A),u(y,A)):A.isMeshStandardMaterial?(r(y,A),d(y,A),A.isMeshPhysicalMaterial&&h(y,A,B)):A.isMeshMatcapMaterial?(r(y,A),m(y,A)):A.isMeshDepthMaterial?r(y,A):A.isMeshDistanceMaterial?(r(y,A),v(y,A)):A.isMeshNormalMaterial?r(y,A):A.isLineBasicMaterial?(o(y,A),A.isLineDashedMaterial&&a(y,A)):A.isPointsMaterial?l(y,A,b,f):A.isSpriteMaterial?c(y,A):A.isShadowMaterial?(y.color.value.copy(A.color),y.opacity.value=A.opacity):A.isShaderMaterial&&(A.uniformsNeedUpdate=!1)}function r(y,A){y.opacity.value=A.opacity,A.color&&y.diffuse.value.copy(A.color),A.emissive&&y.emissive.value.copy(A.emissive).multiplyScalar(A.emissiveIntensity),A.map&&(y.map.value=A.map,t(A.map,y.mapTransform)),A.alphaMap&&(y.alphaMap.value=A.alphaMap,t(A.alphaMap,y.alphaMapTransform)),A.bumpMap&&(y.bumpMap.value=A.bumpMap,t(A.bumpMap,y.bumpMapTransform),y.bumpScale.value=A.bumpScale,A.side===Tn&&(y.bumpScale.value*=-1)),A.normalMap&&(y.normalMap.value=A.normalMap,t(A.normalMap,y.normalMapTransform),y.normalScale.value.copy(A.normalScale),A.side===Tn&&y.normalScale.value.negate()),A.displacementMap&&(y.displacementMap.value=A.displacementMap,t(A.displacementMap,y.displacementMapTransform),y.displacementScale.value=A.displacementScale,y.displacementBias.value=A.displacementBias),A.emissiveMap&&(y.emissiveMap.value=A.emissiveMap,t(A.emissiveMap,y.emissiveMapTransform)),A.specularMap&&(y.specularMap.value=A.specularMap,t(A.specularMap,y.specularMapTransform)),A.alphaTest>0&&(y.alphaTest.value=A.alphaTest);const b=e.get(A).envMap;if(b&&(y.envMap.value=b,y.flipEnvMap.value=b.isCubeTexture&&b.isRenderTargetTexture===!1?-1:1,y.reflectivity.value=A.reflectivity,y.ior.value=A.ior,y.refractionRatio.value=A.refractionRatio),A.lightMap){y.lightMap.value=A.lightMap;const f=n.useLegacyLights===!0?Math.PI:1;y.lightMapIntensity.value=A.lightMapIntensity*f,t(A.lightMap,y.lightMapTransform)}A.aoMap&&(y.aoMap.value=A.aoMap,y.aoMapIntensity.value=A.aoMapIntensity,t(A.aoMap,y.aoMapTransform))}function o(y,A){y.diffuse.value.copy(A.color),y.opacity.value=A.opacity,A.map&&(y.map.value=A.map,t(A.map,y.mapTransform))}function a(y,A){y.dashSize.value=A.dashSize,y.totalSize.value=A.dashSize+A.gapSize,y.scale.value=A.scale}function l(y,A,b,f){y.diffuse.value.copy(A.color),y.opacity.value=A.opacity,y.size.value=A.size*b,y.scale.value=f*.5,A.map&&(y.map.value=A.map,t(A.map,y.uvTransform)),A.alphaMap&&(y.alphaMap.value=A.alphaMap),A.alphaTest>0&&(y.alphaTest.value=A.alphaTest)}function c(y,A){y.diffuse.value.copy(A.color),y.opacity.value=A.opacity,y.rotation.value=A.rotation,A.map&&(y.map.value=A.map,t(A.map,y.mapTransform)),A.alphaMap&&(y.alphaMap.value=A.alphaMap),A.alphaTest>0&&(y.alphaTest.value=A.alphaTest)}function u(y,A){y.specular.value.copy(A.specular),y.shininess.value=Math.max(A.shininess,1e-4)}function C(y,A){A.gradientMap&&(y.gradientMap.value=A.gradientMap)}function d(y,A){y.metalness.value=A.metalness,A.metalnessMap&&(y.metalnessMap.value=A.metalnessMap,t(A.metalnessMap,y.metalnessMapTransform)),y.roughness.value=A.roughness,A.roughnessMap&&(y.roughnessMap.value=A.roughnessMap,t(A.roughnessMap,y.roughnessMapTransform)),e.get(A).envMap&&(y.envMapIntensity.value=A.envMapIntensity)}function h(y,A,b){y.ior.value=A.ior,A.sheen>0&&(y.sheenColor.value.copy(A.sheenColor).multiplyScalar(A.sheen),y.sheenRoughness.value=A.sheenRoughness,A.sheenColorMap&&(y.sheenColorMap.value=A.sheenColorMap,t(A.sheenColorMap,y.sheenColorMapTransform)),A.sheenRoughnessMap&&(y.sheenRoughnessMap.value=A.sheenRoughnessMap,t(A.sheenRoughnessMap,y.sheenRoughnessMapTransform))),A.clearcoat>0&&(y.clearcoat.value=A.clearcoat,y.clearcoatRoughness.value=A.clearcoatRoughness,A.clearcoatMap&&(y.clearcoatMap.value=A.clearcoatMap,t(A.clearcoatMap,y.clearcoatMapTransform)),A.clearcoatRoughnessMap&&(y.clearcoatRoughnessMap.value=A.clearcoatRoughnessMap,t(A.clearcoatRoughnessMap,y.clearcoatRoughnessMapTransform)),A.clearcoatNormalMap&&(y.clearcoatNormalMap.value=A.clearcoatNormalMap,t(A.clearcoatNormalMap,y.clearcoatNormalMapTransform),y.clearcoatNormalScale.value.copy(A.clearcoatNormalScale),A.side===Tn&&y.clearcoatNormalScale.value.negate())),A.iridescence>0&&(y.iridescence.value=A.iridescence,y.iridescenceIOR.value=A.iridescenceIOR,y.iridescenceThicknessMinimum.value=A.iridescenceThicknessRange[0],y.iridescenceThicknessMaximum.value=A.iridescenceThicknessRange[1],A.iridescenceMap&&(y.iridescenceMap.value=A.iridescenceMap,t(A.iridescenceMap,y.iridescenceMapTransform)),A.iridescenceThicknessMap&&(y.iridescenceThicknessMap.value=A.iridescenceThicknessMap,t(A.iridescenceThicknessMap,y.iridescenceThicknessMapTransform))),A.transmission>0&&(y.transmission.value=A.transmission,y.transmissionSamplerMap.value=b.texture,y.transmissionSamplerSize.value.set(b.width,b.height),A.transmissionMap&&(y.transmissionMap.value=A.transmissionMap,t(A.transmissionMap,y.transmissionMapTransform)),y.thickness.value=A.thickness,A.thicknessMap&&(y.thicknessMap.value=A.thicknessMap,t(A.thicknessMap,y.thicknessMapTransform)),y.attenuationDistance.value=A.attenuationDistance,y.attenuationColor.value.copy(A.attenuationColor)),y.specularIntensity.value=A.specularIntensity,y.specularColor.value.copy(A.specularColor),A.specularColorMap&&(y.specularColorMap.value=A.specularColorMap,t(A.specularColorMap,y.specularColorMapTransform)),A.specularIntensityMap&&(y.specularIntensityMap.value=A.specularIntensityMap,t(A.specularIntensityMap,y.specularIntensityMapTransform))}function m(y,A){A.matcap&&(y.matcap.value=A.matcap)}function v(y,A){const b=e.get(A).light;y.referencePosition.value.setFromMatrixPosition(b.matrixWorld),y.nearDistance.value=b.shadow.camera.near,y.farDistance.value=b.shadow.camera.far}return{refreshFogUniforms:i,refreshMaterialUniforms:s}}function BK(n,e,t,i){let s={},r={},o=[];const a=t.isWebGL2?n.getParameter(n.MAX_UNIFORM_BUFFER_BINDINGS):0;function l(b,f){const B=f.program;i.uniformBlockBinding(b,B)}function c(b,f){let B=s[b.id];B===void 0&&(m(b),B=u(b),s[b.id]=B,b.addEventListener("dispose",y));const S=f.program;i.updateUBOMapping(b,S);const x=e.render.frame;r[b.id]!==x&&(d(b),r[b.id]=x)}function u(b){const f=C();b.__bindingPointIndex=f;const B=n.createBuffer(),S=b.__size,x=b.usage;return n.bindBuffer(n.UNIFORM_BUFFER,B),n.bufferData(n.UNIFORM_BUFFER,S,x),n.bindBuffer(n.UNIFORM_BUFFER,null),n.bindBufferBase(n.UNIFORM_BUFFER,f,B),B}function C(){for(let b=0;b0){x=B%S;const U=S-x;x!==0&&U-V.boundary<0&&(B+=S-x,Z.__offset=B)}B+=V.storage}return x=B%S,x>0&&(B+=S-x),b.__size=B,b.__cache={},this}function v(b){const f={boundary:0,storage:0};return typeof b=="number"?(f.boundary=4,f.storage=4):b.isVector2?(f.boundary=8,f.storage=8):b.isVector3||b.isColor?(f.boundary=16,f.storage=12):b.isVector4?(f.boundary=16,f.storage=16):b.isMatrix3?(f.boundary=48,f.storage=48):b.isMatrix4?(f.boundary=64,f.storage=64):b.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",b),f}function y(b){const f=b.target;f.removeEventListener("dispose",y);const B=o.indexOf(f.__bindingPointIndex);o.splice(B,1),n.deleteBuffer(s[f.id]),delete s[f.id],delete r[f.id]}function A(){for(const b in s)n.deleteBuffer(s[b]);o=[],s={},r={}}return{bind:l,update:c,dispose:A}}function ZK(){const n=Au("canvas");return n.style.display="block",n}class Tv{constructor(e={}){const{canvas:t=ZK(),context:i=null,depth:s=!0,stencil:r=!0,alpha:o=!1,antialias:a=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:c=!1,powerPreference:u="default",failIfMajorPerformanceCaveat:C=!1}=e;this.isWebGLRenderer=!0;let d;i!==null?d=i.getContextAttributes().alpha:d=o;let h=null,m=null;const v=[],y=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputColorSpace=mt,this.useLegacyLights=!0,this.toneMapping=cr,this.toneMappingExposure=1;const A=this;let b=!1,f=0,B=0,S=null,x=-1,R=null;const M=new Mt,Z=new Mt;let V=null,N=t.width,U=t.height,D=1,$=null,te=null;const Ce=new Mt(0,0,N,U),le=new Mt(0,0,N,U);let L=!1;const J=new EA;let P=!1,ce=!1,se=null;const ee=new Fe,re=new H,ve={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function ye(){return S===null?D:1}let _=i;function nt(Y,ae){for(let Ae=0;Ae0?m=y[y.length-1]:m=null,v.pop(),v.length>0?h=v[v.length-1]:h=null};function On(Y,ae,Ae,ie){if(Y.visible===!1)return;if(Y.layers.test(ae.layers)){if(Y.isGroup)Ae=Y.renderOrder;else if(Y.isLOD)Y.autoUpdate===!0&&Y.update(ae);else if(Y.isLight)m.pushLight(Y),Y.castShadow&&m.pushShadow(Y);else if(Y.isSprite){if(!Y.frustumCulled||J.intersectsSprite(Y)){ie&&re.setFromMatrixPosition(Y.matrixWorld).applyMatrix4(ee);const at=qe.update(Y),ct=Y.material;ct.visible&&h.push(Y,at,ct,Ae,re.z,null)}}else if((Y.isMesh||Y.isLine||Y.isPoints)&&(!Y.frustumCulled||J.intersectsObject(Y))){Y.isSkinnedMesh&&Y.skeleton.frame!==fe.render.frame&&(Y.skeleton.update(),Y.skeleton.frame=fe.render.frame);const at=qe.update(Y),ct=Y.material;if(ie&&(at.boundingSphere===null&&at.computeBoundingSphere(),re.copy(at.boundingSphere.center).applyMatrix4(Y.matrixWorld).applyMatrix4(ee)),Array.isArray(ct)){const ht=at.groups;for(let yt=0,Gt=ht.length;yt0&&gn(me,et,ae,Ae),ie&&Xe.viewport(M.copy(ie)),me.length>0&&Gi(me,ae,Ae),et.length>0&&Gi(et,ae,Ae),at.length>0&&Gi(at,ae,Ae),Xe.buffers.depth.setTest(!0),Xe.buffers.depth.setMask(!0),Xe.buffers.color.setMask(!0),Xe.setPolygonOffset(!1)}function gn(Y,ae,Ae,ie){if(se===null){const ct=Se.isWebGL2;se=new Wt(1024,1024,{generateMipmaps:!0,type:lt.has("EXT_color_buffer_half_float")?Cs:rn,minFilter:ca,samples:ct&&a===!0?4:0})}const me=A.getRenderTarget();A.setRenderTarget(se),A.clear();const et=A.toneMapping;A.toneMapping=cr,Gi(Y,Ae,ie),be.updateMultisampleRenderTarget(se),be.updateRenderTargetMipmap(se);let at=!1;for(let ct=0,ht=ae.length;ct0&&be.useMultisampledRTT(Y)===!1?me=ue.get(Y).__webglMultisampledFramebuffer:me=Gt,M.copy(Y.viewport),Z.copy(Y.scissor),V=Y.scissorTest}else M.copy(Ce).multiplyScalar(D).floor(),Z.copy(le).multiplyScalar(D).floor(),V=L;if(Xe.bindFramebuffer(_.FRAMEBUFFER,me)&&Se.drawBuffers&&ie&&Xe.drawBuffers(Y,me),Xe.viewport(M),Xe.scissor(Z),Xe.setScissorTest(V),et){const ht=ue.get(Y.texture);_.framebufferTexture2D(_.FRAMEBUFFER,_.COLOR_ATTACHMENT0,_.TEXTURE_CUBE_MAP_POSITIVE_X+ae,ht.__webglTexture,Ae)}else if(at){const ht=ue.get(Y.texture),yt=ae||0;_.framebufferTextureLayer(_.FRAMEBUFFER,_.COLOR_ATTACHMENT0,ht.__webglTexture,Ae||0,yt)}x=-1},this.readRenderTargetPixels=function(Y,ae,Ae,ie,me,et,at){if(!(Y&&Y.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let ct=ue.get(Y).__webglFramebuffer;if(Y.isWebGLCubeRenderTarget&&at!==void 0&&(ct=ct[at]),ct){Xe.bindFramebuffer(_.FRAMEBUFFER,ct);try{const ht=Y.texture,yt=ht.format,Gt=ht.type;if(yt!==un&&pe.convert(yt)!==_.getParameter(_.IMPLEMENTATION_COLOR_READ_FORMAT)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}const wt=Gt===Cs&&(lt.has("EXT_color_buffer_half_float")||Se.isWebGL2&<.has("EXT_color_buffer_float"));if(Gt!==rn&&pe.convert(Gt)!==_.getParameter(_.IMPLEMENTATION_COLOR_READ_TYPE)&&!(Gt===wn&&(Se.isWebGL2||lt.has("OES_texture_float")||lt.has("WEBGL_color_buffer_float")))&&!wt){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}ae>=0&&ae<=Y.width-ie&&Ae>=0&&Ae<=Y.height-me&&_.readPixels(ae,Ae,ie,me,pe.convert(yt),pe.convert(Gt),et)}finally{const ht=S!==null?ue.get(S).__webglFramebuffer:null;Xe.bindFramebuffer(_.FRAMEBUFFER,ht)}}},this.copyFramebufferToTexture=function(Y,ae,Ae=0){const ie=Math.pow(2,-Ae),me=Math.floor(ae.image.width*ie),et=Math.floor(ae.image.height*ie);be.setTexture2D(ae,0),_.copyTexSubImage2D(_.TEXTURE_2D,Ae,0,0,Y.x,Y.y,me,et),Xe.unbindTexture()},this.copyTextureToTexture=function(Y,ae,Ae,ie=0){const me=ae.image.width,et=ae.image.height,at=pe.convert(Ae.format),ct=pe.convert(Ae.type);be.setTexture2D(Ae,0),_.pixelStorei(_.UNPACK_FLIP_Y_WEBGL,Ae.flipY),_.pixelStorei(_.UNPACK_PREMULTIPLY_ALPHA_WEBGL,Ae.premultiplyAlpha),_.pixelStorei(_.UNPACK_ALIGNMENT,Ae.unpackAlignment),ae.isDataTexture?_.texSubImage2D(_.TEXTURE_2D,ie,Y.x,Y.y,me,et,at,ct,ae.image.data):ae.isCompressedTexture?_.compressedTexSubImage2D(_.TEXTURE_2D,ie,Y.x,Y.y,ae.mipmaps[0].width,ae.mipmaps[0].height,at,ae.mipmaps[0].data):_.texSubImage2D(_.TEXTURE_2D,ie,Y.x,Y.y,at,ct,ae.image),ie===0&&Ae.generateMipmaps&&_.generateMipmap(_.TEXTURE_2D),Xe.unbindTexture()},this.copyTextureToTexture3D=function(Y,ae,Ae,ie,me=0){if(A.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}const et=Y.max.x-Y.min.x+1,at=Y.max.y-Y.min.y+1,ct=Y.max.z-Y.min.z+1,ht=pe.convert(ie.format),yt=pe.convert(ie.type);let Gt;if(ie.isData3DTexture)be.setTexture3D(ie,0),Gt=_.TEXTURE_3D;else if(ie.isDataArrayTexture)be.setTexture2DArray(ie,0),Gt=_.TEXTURE_2D_ARRAY;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}_.pixelStorei(_.UNPACK_FLIP_Y_WEBGL,ie.flipY),_.pixelStorei(_.UNPACK_PREMULTIPLY_ALPHA_WEBGL,ie.premultiplyAlpha),_.pixelStorei(_.UNPACK_ALIGNMENT,ie.unpackAlignment);const wt=_.getParameter(_.UNPACK_ROW_LENGTH),Pt=_.getParameter(_.UNPACK_IMAGE_HEIGHT),ni=_.getParameter(_.UNPACK_SKIP_PIXELS),ts=_.getParameter(_.UNPACK_SKIP_ROWS),Ds=_.getParameter(_.UNPACK_SKIP_IMAGES),nn=Ae.isCompressedTexture?Ae.mipmaps[0]:Ae.image;_.pixelStorei(_.UNPACK_ROW_LENGTH,nn.width),_.pixelStorei(_.UNPACK_IMAGE_HEIGHT,nn.height),_.pixelStorei(_.UNPACK_SKIP_PIXELS,Y.min.x),_.pixelStorei(_.UNPACK_SKIP_ROWS,Y.min.y),_.pixelStorei(_.UNPACK_SKIP_IMAGES,Y.min.z),Ae.isDataTexture||Ae.isData3DTexture?_.texSubImage3D(Gt,me,ae.x,ae.y,ae.z,et,at,ct,ht,yt,nn.data):Ae.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),_.compressedTexSubImage3D(Gt,me,ae.x,ae.y,ae.z,et,at,ct,ht,nn.data)):_.texSubImage3D(Gt,me,ae.x,ae.y,ae.z,et,at,ct,ht,yt,nn),_.pixelStorei(_.UNPACK_ROW_LENGTH,wt),_.pixelStorei(_.UNPACK_IMAGE_HEIGHT,Pt),_.pixelStorei(_.UNPACK_SKIP_PIXELS,ni),_.pixelStorei(_.UNPACK_SKIP_ROWS,ts),_.pixelStorei(_.UNPACK_SKIP_IMAGES,Ds),me===0&&ie.generateMipmaps&&_.generateMipmap(Gt),Xe.unbindTexture()},this.initTexture=function(Y){Y.isCubeTexture?be.setTextureCube(Y,0):Y.isData3DTexture?be.setTexture3D(Y,0):Y.isDataArrayTexture||Y.isCompressedArrayTexture?be.setTexture2DArray(Y,0):be.setTexture2D(Y,0),Xe.unbindTexture()},this.resetState=function(){f=0,B=0,S=null,Xe.reset(),De.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get physicallyCorrectLights(){return console.warn("THREE.WebGLRenderer: the property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),!this.useLegacyLights}set physicallyCorrectLights(e){console.warn("THREE.WebGLRenderer: the property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),this.useLegacyLights=!e}get outputEncoding(){return console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace===mt?Fs:Xu}set outputEncoding(e){console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace=e===Fs?mt:ur}}class z1 extends Tv{}z1.prototype.isWebGL1Renderer=!0;class UA{constructor(e,t=25e-5){this.isFogExp2=!0,this.name="",this.color=new Re(e),this.density=t}clone(){return new UA(this.color,this.density)}toJSON(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}}}class PA{constructor(e,t=1,i=1e3){this.isFog=!0,this.name="",this.color=new Re(e),this.near=t,this.far=i}clone(){return new PA(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}}class hl extends Xt{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t}get autoUpdate(){return console.warn("THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144."),this.matrixWorldAutoUpdate}set autoUpdate(e){console.warn("THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144."),this.matrixWorldAutoUpdate=e}}class _A{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=hu,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=ds()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,i){e*=this.stride,i*=t.stride;for(let s=0,r=this.stride;se.far||t.push({distance:l,point:$c.clone(),uv:Pi.getInterpolation($c,Hd,tI,Xd,$2,sf,eZ,new ne),face:null,object:this})}copy(e,t){return super.copy(e,t),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}}function Yd(n,e,t,i,s,r){cg.subVectors(n,t).addScalar(.5).multiply(i),s!==void 0?(eI.x=r*cg.x-s*cg.y,eI.y=s*cg.x+r*cg.y):eI.copy(cg),n.copy(e),n.x+=eI.x,n.y+=eI.y,n.applyMatrix4(L1)}const Fd=new H,tZ=new H;class T1 extends Xt{constructor(){super(),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);const t=e.levels;for(let i=0,s=t.length;i0){let i,s;for(i=1,s=t.length;i0){Fd.setFromMatrixPosition(this.matrixWorld);const s=e.ray.origin.distanceTo(Fd);this.getObjectForDistance(s).raycast(e,t)}}update(e){const t=this.levels;if(t.length>1){Fd.setFromMatrixPosition(e.matrixWorld),tZ.setFromMatrixPosition(this.matrixWorld);const i=Fd.distanceTo(tZ)/e.zoom;t[0].object.visible=!0;let s,r;for(s=1,r=t.length;s=o)t[s-1].object.visible=!1,t[s].object.visible=!0;else break}for(this._currentLevel=s-1;sl)continue;d.applyMatrix4(this.matrixWorld);const M=e.ray.origin.distanceTo(d);Me.far||t.push({distance:M,point:C.clone().applyMatrix4(this.matrixWorld),index:f,face:null,faceIndex:null,object:this})}}else{const A=Math.max(0,o.start),b=Math.min(y.count,o.start+o.count);for(let f=A,B=b-1;fl)continue;d.applyMatrix4(this.matrixWorld);const x=e.ray.origin.distanceTo(d);xe.far||t.push({distance:x,point:C.clone().applyMatrix4(this.matrixWorld),index:f,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){const t=this.geometry.morphAttributes,i=Object.keys(t);if(i.length>0){const s=t[i[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,o=s.length;r0){const s=t[i[0]];if(s!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,o=s.length;rs.far)return;r.push({distance:c,distanceToRay:Math.sqrt(a),point:l,index:e,face:null,object:o})}}class P1 extends qt{constructor(e,t,i,s,r,o,a,l,c){super(e,t,i,s,r,o,a,l,c),this.isVideoTexture=!0,this.minFilter=o!==void 0?o:je,this.magFilter=r!==void 0?r:je,this.generateMipmaps=!1;const u=this;function C(){u.needsUpdate=!0,e.requestVideoFrameCallback(C)}"requestVideoFrameCallback"in e&&e.requestVideoFrameCallback(C)}clone(){return new this.constructor(this.image).copy(this)}update(){const e=this.image;"requestVideoFrameCallback"in e===!1&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}class ob extends qt{constructor(e,t,i){super({width:e,height:t}),this.isFramebufferTexture=!0,this.format=i,this.magFilter=pt,this.minFilter=pt,this.generateMipmaps=!1,this.needsUpdate=!0}}class Pv extends qt{constructor(e,t,i,s,r,o,a,l,c,u,C,d){super(null,o,a,l,c,u,s,r,C,d),this.isCompressedTexture=!0,this.image={width:t,height:i},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}}class RK extends Pv{constructor(e,t,i,s,r,o){super(e,t,i,r,o),this.isCompressedArrayTexture=!0,this.image.depth=s,this.wrapR=Ln}}class _1 extends qt{constructor(e,t,i,s,r,o,a,l,c){super(e,t,i,s,r,o,a,l,c),this.isCanvasTexture=!0,this.needsUpdate=!0}}class Cr{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(e,t){const i=this.getUtoTmapping(e);return this.getPoint(i,t)}getPoints(e=5){const t=[];for(let i=0;i<=e;i++)t.push(this.getPoint(i/e));return t}getSpacedPoints(e=5){const t=[];for(let i=0;i<=e;i++)t.push(this.getPointAt(i/e));return t}getLength(){const e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const t=[];let i,s=this.getPoint(0),r=0;t.push(0);for(let o=1;o<=e;o++)i=this.getPoint(o/e),r+=i.distanceTo(s),t.push(r),s=i;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){const i=this.getLengths();let s=0;const r=i.length;let o;t?o=t:o=e*i[r-1];let a=0,l=r-1,c;for(;a<=l;)if(s=Math.floor(a+(l-a)/2),c=i[s]-o,c<0)a=s+1;else if(c>0)l=s-1;else{l=s;break}if(s=l,i[s]===o)return s/(r-1);const u=i[s],d=i[s+1]-u,h=(o-u)/d;return(s+h)/(r-1)}getTangent(e,t){let s=e-1e-4,r=e+1e-4;s<0&&(s=0),r>1&&(r=1);const o=this.getPoint(s),a=this.getPoint(r),l=t||(o.isVector2?new ne:new H);return l.copy(a).sub(o).normalize(),l}getTangentAt(e,t){const i=this.getUtoTmapping(e);return this.getTangent(i,t)}computeFrenetFrames(e,t){const i=new H,s=[],r=[],o=[],a=new H,l=new Fe;for(let h=0;h<=e;h++){const m=h/e;s[h]=this.getTangentAt(m,new H)}r[0]=new H,o[0]=new H;let c=Number.MAX_VALUE;const u=Math.abs(s[0].x),C=Math.abs(s[0].y),d=Math.abs(s[0].z);u<=c&&(c=u,i.set(1,0,0)),C<=c&&(c=C,i.set(0,1,0)),d<=c&&i.set(0,0,1),a.crossVectors(s[0],i).normalize(),r[0].crossVectors(s[0],a),o[0].crossVectors(s[0],r[0]);for(let h=1;h<=e;h++){if(r[h]=r[h-1].clone(),o[h]=o[h-1].clone(),a.crossVectors(s[h-1],s[h]),a.length()>Number.EPSILON){a.normalize();const m=Math.acos(Gn(s[h-1].dot(s[h]),-1,1));r[h].applyMatrix4(l.makeRotationAxis(a,m))}o[h].crossVectors(s[h],r[h])}if(t===!0){let h=Math.acos(Gn(r[0].dot(r[e]),-1,1));h/=e,s[0].dot(a.crossVectors(r[0],r[e]))>0&&(h=-h);for(let m=1;m<=e;m++)r[m].applyMatrix4(l.makeRotationAxis(s[m],h*m)),o[m].crossVectors(s[m],r[m])}return{tangents:s,normals:r,binormals:o}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){const e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}class OA extends Cr{constructor(e=0,t=0,i=1,s=1,r=0,o=Math.PI*2,a=!1,l=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=i,this.yRadius=s,this.aStartAngle=r,this.aEndAngle=o,this.aClockwise=a,this.aRotation=l}getPoint(e,t){const i=t||new ne,s=Math.PI*2;let r=this.aEndAngle-this.aStartAngle;const o=Math.abs(r)s;)r-=s;r0?0:(Math.floor(Math.abs(a)/r)+1)*r:l===0&&a===r-1&&(a=r-2,l=1);let c,u;this.closed||a>0?c=s[(a-1)%r]:(Td.subVectors(s[0],s[1]).add(s[0]),c=Td);const C=s[a%r],d=s[(a+1)%r];if(this.closed||a+2s.length-2?s.length-1:o+1],C=s[o>s.length-3?s.length-1:o+2];return i.set(AZ(a,l.x,c.x,u.x,C.x),AZ(a,l.y,c.y,u.y,C.y)),i}copy(e){super.copy(e),this.points=[];for(let t=0,i=e.points.length;t=i){const o=s[r]-i,a=this.curves[r],l=a.getLength(),c=l===0?0:1-o/l;return a.getPointAt(c,t)}r++}return null}getLength(){const e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const e=[];let t=0;for(let i=0,s=this.curves.length;i1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,i=e.curves.length;t0){const C=c.getPoint(0);C.equals(this.currentPoint)||this.lineTo(C.x,C.y)}this.curves.push(c);const u=c.getPoint(1);return this.currentPoint.copy(u),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){const e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}}class Cc extends ft{constructor(e=[new ne(0,-.5),new ne(.5,0),new ne(0,.5)],t=12,i=0,s=Math.PI*2){super(),this.type="LatheGeometry",this.parameters={points:e,segments:t,phiStart:i,phiLength:s},t=Math.floor(t),s=Gn(s,0,Math.PI*2);const r=[],o=[],a=[],l=[],c=[],u=1/t,C=new H,d=new ne,h=new H,m=new H,v=new H;let y=0,A=0;for(let b=0;b<=e.length-1;b++)switch(b){case 0:y=e[b+1].x-e[b].x,A=e[b+1].y-e[b].y,h.x=A*1,h.y=-y,h.z=A*0,v.copy(h),h.normalize(),l.push(h.x,h.y,h.z);break;case e.length-1:l.push(v.x,v.y,v.z);break;default:y=e[b+1].x-e[b].x,A=e[b+1].y-e[b].y,h.x=A*1,h.y=-y,h.z=A*0,m.copy(h),h.x+=v.x,h.y+=v.y,h.z+=v.z,h.normalize(),l.push(h.x,h.y,h.z),v.copy(m)}for(let b=0;b<=t;b++){const f=i+b*u*s,B=Math.sin(f),S=Math.cos(f);for(let x=0;x<=e.length-1;x++){C.x=e[x].x*B,C.y=e[x].y,C.z=e[x].x*S,o.push(C.x,C.y,C.z),d.x=b/t,d.y=x/(e.length-1),a.push(d.x,d.y);const R=l[3*x+0]*B,M=l[3*x+1],Z=l[3*x+0]*S;c.push(R,M,Z)}}for(let b=0;b0&&f(!0),t>0&&f(!1)),this.setIndex(u),this.setAttribute("position",new ke(C,3)),this.setAttribute("normal",new ke(d,3)),this.setAttribute("uv",new ke(h,2));function b(){const B=new H,S=new H;let x=0;const R=(t-e)/i;for(let M=0;M<=r;M++){const Z=[],V=M/r,N=V*(t-e)+e;for(let U=0;U<=s;U++){const D=U/s,$=D*l+a,te=Math.sin($),Ce=Math.cos($);S.x=N*te,S.y=-V*i+y,S.z=N*Ce,C.push(S.x,S.y,S.z),B.set(te,R,Ce).normalize(),d.push(B.x,B.y,B.z),h.push(D,1-V),Z.push(m++)}v.push(Z)}for(let M=0;M.9&&R<.1&&(f<.2&&(o[b+0]+=1),B<.2&&(o[b+2]+=1),S<.2&&(o[b+4]+=1))}}function d(b){r.push(b.x,b.y,b.z)}function h(b,f){const B=b*3;f.x=e[B+0],f.y=e[B+1],f.z=e[B+2]}function m(){const b=new H,f=new H,B=new H,S=new H,x=new ne,R=new ne,M=new ne;for(let Z=0,V=0;Z80*t){a=c=n[0],l=u=n[1];for(let m=t;mc&&(c=C),d>u&&(u=d);h=Math.max(c-a,u-l),h=h!==0?32767/h:0}return mu(r,o,t,a,l,h,0),o}};function eW(n,e,t,i,s){let r,o;if(s===$K(n,e,t,i)>0)for(r=e;r=e;r-=i)o=pZ(r,n[r],n[r+1],o);return o&&jA(o,o.next)&&(bu(o),o=o.next),o}function pl(n,e){if(!n)return n;e||(e=n);let t=n,i;do if(i=!1,!t.steiner&&(jA(t,t.next)||pn(t.prev,t,t.next)===0)){if(bu(t),t=e=t.prev,t===t.next)break;i=!0}else t=t.next;while(i||t!==e);return e}function mu(n,e,t,i,s,r,o){if(!n)return;!o&&r&&_K(n,i,s,r);let a=n,l,c;for(;n.prev!==n.next;){if(l=n.prev,c=n.next,r?zK(n,i,s,r):KK(n)){e.push(l.i/t|0),e.push(n.i/t|0),e.push(c.i/t|0),bu(n),n=c.next,a=c.next;continue}if(n=c,n===a){o?o===1?(n=LK(pl(n),e,t),mu(n,e,t,i,s,r,2)):o===2&&EK(n,e,t,i,s,r):mu(pl(n),e,t,i,s,r,1);break}}}function KK(n){const e=n.prev,t=n,i=n.next;if(pn(e,t,i)>=0)return!1;const s=e.x,r=t.x,o=i.x,a=e.y,l=t.y,c=i.y,u=sr?s>o?s:o:r>o?r:o,h=a>l?a>c?a:c:l>c?l:c;let m=i.next;for(;m!==e;){if(m.x>=u&&m.x<=d&&m.y>=C&&m.y<=h&&Ng(s,a,r,l,o,c,m.x,m.y)&&pn(m.prev,m,m.next)>=0)return!1;m=m.next}return!0}function zK(n,e,t,i){const s=n.prev,r=n,o=n.next;if(pn(s,r,o)>=0)return!1;const a=s.x,l=r.x,c=o.x,u=s.y,C=r.y,d=o.y,h=al?a>c?a:c:l>c?l:c,y=u>C?u>d?u:d:C>d?C:d,A=ab(h,m,e,t,i),b=ab(v,y,e,t,i);let f=n.prevZ,B=n.nextZ;for(;f&&f.z>=A&&B&&B.z<=b;){if(f.x>=h&&f.x<=v&&f.y>=m&&f.y<=y&&f!==s&&f!==o&&Ng(a,u,l,C,c,d,f.x,f.y)&&pn(f.prev,f,f.next)>=0||(f=f.prevZ,B.x>=h&&B.x<=v&&B.y>=m&&B.y<=y&&B!==s&&B!==o&&Ng(a,u,l,C,c,d,B.x,B.y)&&pn(B.prev,B,B.next)>=0))return!1;B=B.nextZ}for(;f&&f.z>=A;){if(f.x>=h&&f.x<=v&&f.y>=m&&f.y<=y&&f!==s&&f!==o&&Ng(a,u,l,C,c,d,f.x,f.y)&&pn(f.prev,f,f.next)>=0)return!1;f=f.prevZ}for(;B&&B.z<=b;){if(B.x>=h&&B.x<=v&&B.y>=m&&B.y<=y&&B!==s&&B!==o&&Ng(a,u,l,C,c,d,B.x,B.y)&&pn(B.prev,B,B.next)>=0)return!1;B=B.nextZ}return!0}function LK(n,e,t){let i=n;do{const s=i.prev,r=i.next.next;!jA(s,r)&&tW(s,i,i.next,r)&&fu(s,r)&&fu(r,s)&&(e.push(s.i/t|0),e.push(i.i/t|0),e.push(r.i/t|0),bu(i),bu(i.next),i=n=r),i=i.next}while(i!==n);return pl(i)}function EK(n,e,t,i,s,r){let o=n;do{let a=o.next.next;for(;a!==o.prev;){if(o.i!==a.i&&QK(o,a)){let l=nW(o,a);o=pl(o,o.next),l=pl(l,l.next),mu(o,e,t,i,s,r,0),mu(l,e,t,i,s,r,0);return}a=a.next}o=o.next}while(o!==n)}function TK(n,e,t,i){const s=[];let r,o,a,l,c;for(r=0,o=e.length;r=t.next.y&&t.next.y!==t.y){const d=t.x+(o-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(d<=r&&d>i&&(i=d,s=t.x=t.x&&t.x>=l&&r!==t.x&&Ng(os.x||t.x===s.x&&PK(s,t)))&&(s=t,u=C)),t=t.next;while(t!==a);return s}function PK(n,e){return pn(n.prev,n,e.prev)<0&&pn(e.next,n,n.next)<0}function _K(n,e,t,i){let s=n;do s.z===0&&(s.z=ab(s.x,s.y,e,t,i)),s.prevZ=s.prev,s.nextZ=s.next,s=s.next;while(s!==n);s.prevZ.nextZ=null,s.prevZ=null,JK(s)}function JK(n){let e,t,i,s,r,o,a,l,c=1;do{for(t=n,n=null,r=null,o=0;t;){for(o++,i=t,a=0,e=0;e0||l>0&&i;)a!==0&&(l===0||!i||t.z<=i.z)?(s=t,t=t.nextZ,a--):(s=i,i=i.nextZ,l--),r?r.nextZ=s:n=s,s.prevZ=r,r=s;t=i}r.nextZ=null,c*=2}while(o>1);return n}function ab(n,e,t,i,s){return n=(n-t)*s|0,e=(e-i)*s|0,n=(n|n<<8)&16711935,n=(n|n<<4)&252645135,n=(n|n<<2)&858993459,n=(n|n<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,n|e<<1}function OK(n){let e=n,t=n;do(e.x=(n-o)*(r-a)&&(n-o)*(i-a)>=(t-o)*(e-a)&&(t-o)*(r-a)>=(s-o)*(i-a)}function QK(n,e){return n.next.i!==e.i&&n.prev.i!==e.i&&!jK(n,e)&&(fu(n,e)&&fu(e,n)&&qK(n,e)&&(pn(n.prev,n,e.prev)||pn(n,e.prev,e))||jA(n,e)&&pn(n.prev,n,n.next)>0&&pn(e.prev,e,e.next)>0)}function pn(n,e,t){return(e.y-n.y)*(t.x-e.x)-(e.x-n.x)*(t.y-e.y)}function jA(n,e){return n.x===e.x&&n.y===e.y}function tW(n,e,t,i){const s=_d(pn(n,e,t)),r=_d(pn(n,e,i)),o=_d(pn(t,i,n)),a=_d(pn(t,i,e));return!!(s!==r&&o!==a||s===0&&Pd(n,t,e)||r===0&&Pd(n,i,e)||o===0&&Pd(t,n,i)||a===0&&Pd(t,e,i))}function Pd(n,e,t){return e.x<=Math.max(n.x,t.x)&&e.x>=Math.min(n.x,t.x)&&e.y<=Math.max(n.y,t.y)&&e.y>=Math.min(n.y,t.y)}function _d(n){return n>0?1:n<0?-1:0}function jK(n,e){let t=n;do{if(t.i!==n.i&&t.next.i!==n.i&&t.i!==e.i&&t.next.i!==e.i&&tW(t,t.next,n,e))return!0;t=t.next}while(t!==n);return!1}function fu(n,e){return pn(n.prev,n,n.next)<0?pn(n,e,n.next)>=0&&pn(n,n.prev,e)>=0:pn(n,e,n.prev)<0||pn(n,n.next,e)<0}function qK(n,e){let t=n,i=!1;const s=(n.x+e.x)/2,r=(n.y+e.y)/2;do t.y>r!=t.next.y>r&&t.next.y!==t.y&&s<(t.next.x-t.x)*(r-t.y)/(t.next.y-t.y)+t.x&&(i=!i),t=t.next;while(t!==n);return i}function nW(n,e){const t=new lb(n.i,n.x,n.y),i=new lb(e.i,e.x,e.y),s=n.next,r=e.prev;return n.next=e,e.prev=n,t.next=s,s.prev=t,i.next=t,t.prev=i,r.next=i,i.prev=r,i}function pZ(n,e,t,i){const s=new lb(n,e,t);return i?(s.next=i.next,s.prev=i,i.next.prev=s,i.next=s):(s.prev=s,s.next=s),s}function bu(n){n.next.prev=n.prev,n.prev.next=n.next,n.prevZ&&(n.prevZ.nextZ=n.nextZ),n.nextZ&&(n.nextZ.prevZ=n.prevZ)}function lb(n,e,t){this.i=n,this.x=e,this.y=t,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function $K(n,e,t,i){let s=0;for(let r=e,o=t-i;r2&&n[e-1].equals(n[0])&&n.pop()}function fZ(n,e){for(let t=0;tNumber.EPSILON){const ge=Math.sqrt(T),Ge=Math.sqrt(ut*ut+Ht*Ht),Ze=ue.x-qe/ge,Me=ue.y+rt/ge,gt=be.x-Ht/Ge,Ke=be.y+ut/Ge,pe=((gt-Ze)*Ht-(Ke-Me)*ut)/(rt*Ht-qe*ut);Le=Ze+rt*pe-fe.x,Ve=Me+qe*pe-fe.y;const De=Le*Le+Ve*Ve;if(De<=2)return new ne(Le,Ve);st=Math.sqrt(De/2)}else{let ge=!1;rt>Number.EPSILON?ut>Number.EPSILON&&(ge=!0):rt<-Number.EPSILON?ut<-Number.EPSILON&&(ge=!0):Math.sign(qe)===Math.sign(Ht)&&(ge=!0),ge?(Le=-qe,Ve=rt,st=Math.sqrt(T)):(Le=rt,Ve=qe,st=Math.sqrt(T/2))}return new ne(Le/st,Ve/st)}const J=[];for(let fe=0,ue=$.length,be=ue-1,Le=fe+1;fe=0;fe--){const ue=fe/y,be=h*Math.cos(ue*Math.PI/2),Le=m*Math.sin(ue*Math.PI/2)+v;for(let Ve=0,st=$.length;Ve=0;){const Le=be;let Ve=be-1;Ve<0&&(Ve=fe.length-1);for(let st=0,rt=u+y*2;st0)&&h.push(f,B,x),(A!==i-1||l0!=e>0&&this.version++,this._sheen=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class aW extends Jn{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new Re(16777215),this.specular=new Re(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Re(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=fo,this.normalScale=new ne(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Hu,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class lW extends Jn{constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new Re(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Re(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=fo,this.normalScale=new ne(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}class $v extends Jn{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=fo,this.normalScale=new ne(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}}class gW extends Jn{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new Re(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Re(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=fo,this.normalScale=new ne(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Hu,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class cW extends Jn{constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new Re(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=fo,this.normalScale=new ne(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.flatShading=e.flatShading,this.fog=e.fog,this}}class IW extends Hi{constructor(e){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}}function Ms(n,e,t){return ey(n)?new n.constructor(n.subarray(e,t!==void 0?t:n.length)):n.slice(e,t)}function tl(n,e,t){return!n||!t&&n.constructor===e?n:typeof e.BYTES_PER_ELEMENT=="number"?new e(n):Array.prototype.slice.call(n)}function ey(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function uW(n){function e(s,r){return n[s]-n[r]}const t=n.length,i=new Array(t);for(let s=0;s!==t;++s)i[s]=s;return i.sort(e),i}function gb(n,e,t){const i=n.length,s=new n.constructor(i);for(let r=0,o=0;o!==i;++r){const a=t[r]*e;for(let l=0;l!==e;++l)s[o++]=n[a+l]}return s}function ty(n,e,t,i){let s=1,r=n[0];for(;r!==void 0&&r[i]===void 0;)r=n[s++];if(r===void 0)return;let o=r[i];if(o!==void 0)if(Array.isArray(o))do o=r[i],o!==void 0&&(e.push(r.time),t.push.apply(t,o)),r=n[s++];while(r!==void 0);else if(o.toArray!==void 0)do o=r[i],o!==void 0&&(e.push(r.time),o.toArray(t,t.length)),r=n[s++];while(r!==void 0);else do o=r[i],o!==void 0&&(e.push(r.time),t.push(o)),r=n[s++];while(r!==void 0)}function iz(n,e,t,i,s=30){const r=n.clone();r.name=e;const o=[];for(let l=0;l=i)){C.push(c.times[h]);for(let v=0;vr.tracks[l].times[0]&&(a=r.tracks[l].times[0]);for(let l=0;l=a.times[m]){const A=m*C+u,b=A+C-u;v=Ms(a.values,A,b)}else{const A=a.createInterpolant(),b=u,f=C-u;A.evaluate(r),v=Ms(A.resultBuffer,b,f)}l==="quaternion"&&new xn().fromArray(v).normalize().conjugate().toArray(v);const y=c.times.length;for(let A=0;A=r)){const a=t[1];e=r)break t}o=i,i=0;break n}break e}for(;i>>1;et;)--o;if(++o,r!==0||o!==s){r>=o&&(o=Math.max(o,1),r=o-1);const a=this.getValueSize();this.times=Ms(i,r,o),this.values=Ms(this.values,r*a,o*a)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);const i=this.times,s=this.values,r=i.length;r===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let o=null;for(let a=0;a!==r;a++){const l=i[a];if(typeof l=="number"&&isNaN(l)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,l),e=!1;break}if(o!==null&&o>l){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,l,o),e=!1;break}o=l}if(s!==void 0&&ey(s))for(let a=0,l=s.length;a!==l;++a){const c=s[a];if(isNaN(c)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,c),e=!1;break}}return e}optimize(){const e=Ms(this.times),t=Ms(this.values),i=this.getValueSize(),s=this.getInterpolation()===Nh,r=e.length-1;let o=1;for(let a=1;a0){e[o]=e[r];for(let a=r*i,l=o*i,c=0;c!==i;++c)t[l+c]=t[a+c];++o}return o!==e.length?(this.times=Ms(e,0,o),this.values=Ms(t,0,o*i)):(this.times=e,this.values=t),this}clone(){const e=Ms(this.times,0),t=Ms(this.values,0),i=this.constructor,s=new i(this.name,e,t);return s.createInterpolant=this.createInterpolant,s}}dr.prototype.TimeBufferType=Float32Array;dr.prototype.ValueBufferType=Float32Array;dr.prototype.DefaultInterpolation=Cu;class Zl extends dr{}Zl.prototype.ValueTypeName="bool";Zl.prototype.ValueBufferType=Array;Zl.prototype.DefaultInterpolation=uu;Zl.prototype.InterpolantFactoryMethodLinear=void 0;Zl.prototype.InterpolantFactoryMethodSmooth=void 0;class iy extends dr{}iy.prototype.ValueTypeName="color";class vu extends dr{}vu.prototype.ValueTypeName="number";class hW extends Qu{constructor(e,t,i,s){super(e,t,i,s)}interpolate_(e,t,i,s){const r=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=(i-t)/(s-t);let c=e*a;for(let u=c+a;c!==u;c+=4)xn.slerpFlat(r,0,o,c-a,o,c,l);return r}}class hc extends dr{InterpolantFactoryMethodLinear(e){return new hW(this.times,this.values,this.getValueSize(),e)}}hc.prototype.ValueTypeName="quaternion";hc.prototype.DefaultInterpolation=Cu;hc.prototype.InterpolantFactoryMethodSmooth=void 0;class wl extends dr{}wl.prototype.ValueTypeName="string";wl.prototype.ValueBufferType=Array;wl.prototype.DefaultInterpolation=uu;wl.prototype.InterpolantFactoryMethodLinear=void 0;wl.prototype.InterpolantFactoryMethodSmooth=void 0;class yu extends dr{}yu.prototype.ValueTypeName="vector";class Gu{constructor(e,t=-1,i,s=KA){this.name=e,this.tracks=i,this.duration=t,this.blendMode=s,this.uuid=ds(),this.duration<0&&this.resetDuration()}static parse(e){const t=[],i=e.tracks,s=1/(e.fps||1);for(let o=0,a=i.length;o!==a;++o)t.push(az(i[o]).scale(s));const r=new this(e.name,e.duration,t,e.blendMode);return r.uuid=e.uuid,r}static toJSON(e){const t=[],i=e.tracks,s={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let r=0,o=i.length;r!==o;++r)t.push(dr.toJSON(i[r]));return s}static CreateFromMorphTargetSequence(e,t,i,s){const r=t.length,o=[];for(let a=0;a1){const C=u[1];let d=s[C];d||(s[C]=d=[]),d.push(c)}}const o=[];for(const a in s)o.push(this.CreateFromMorphTargetSequence(a,s[a],t,i));return o}static parseAnimation(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const i=function(C,d,h,m,v){if(h.length!==0){const y=[],A=[];ty(h,y,A,m),y.length!==0&&v.push(new C(d,y,A))}},s=[],r=e.name||"default",o=e.fps||30,a=e.blendMode;let l=e.length||-1;const c=e.hierarchy||[];for(let C=0;C{t&&t(r),this.manager.itemEnd(e)},0),r;if(qr[e]!==void 0){qr[e].push({onLoad:t,onProgress:i,onError:s});return}qr[e]=[],qr[e].push({onLoad:t,onProgress:i,onError:s});const o=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),a=this.mimeType,l=this.responseType;fetch(o).then(c=>{if(c.status===200||c.status===0){if(c.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||c.body===void 0||c.body.getReader===void 0)return c;const u=qr[e],C=c.body.getReader(),d=c.headers.get("Content-Length")||c.headers.get("X-File-Size"),h=d?parseInt(d):0,m=h!==0;let v=0;const y=new ReadableStream({start(A){b();function b(){C.read().then(({done:f,value:B})=>{if(f)A.close();else{v+=B.byteLength;const S=new ProgressEvent("progress",{lengthComputable:m,loaded:v,total:h});for(let x=0,R=u.length;x{switch(l){case"arraybuffer":return c.arrayBuffer();case"blob":return c.blob();case"document":return c.text().then(u=>new DOMParser().parseFromString(u,a));case"json":return c.json();default:if(a===void 0)return c.text();{const C=/charset="?([^;"\s]*)"?/i.exec(a),d=C&&C[1]?C[1].toLowerCase():void 0,h=new TextDecoder(d);return c.arrayBuffer().then(m=>h.decode(m))}}}).then(c=>{ml.add(e,c);const u=qr[e];delete qr[e];for(let C=0,d=u.length;C{const u=qr[e];if(u===void 0)throw this.manager.itemError(e),c;delete qr[e];for(let C=0,d=u.length;C{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}}class gz extends fs{constructor(e){super(e)}load(e,t,i,s){const r=this,o=new Ao(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(a){try{t(r.parse(JSON.parse(a)))}catch(l){s?s(l):console.error(l),r.manager.itemError(e)}},i,s)}parse(e){const t=[];for(let i=0;i0:s.vertexColors=e.vertexColors),e.uniforms!==void 0)for(const r in e.uniforms){const o=e.uniforms[r];switch(s.uniforms[r]={},o.type){case"t":s.uniforms[r].value=i(o.value);break;case"c":s.uniforms[r].value=new Re().setHex(o.value);break;case"v2":s.uniforms[r].value=new ne().fromArray(o.value);break;case"v3":s.uniforms[r].value=new H().fromArray(o.value);break;case"v4":s.uniforms[r].value=new Mt().fromArray(o.value);break;case"m3":s.uniforms[r].value=new xt().fromArray(o.value);break;case"m4":s.uniforms[r].value=new Fe().fromArray(o.value);break;default:s.uniforms[r].value=o.value}}if(e.defines!==void 0&&(s.defines=e.defines),e.vertexShader!==void 0&&(s.vertexShader=e.vertexShader),e.fragmentShader!==void 0&&(s.fragmentShader=e.fragmentShader),e.glslVersion!==void 0&&(s.glslVersion=e.glslVersion),e.extensions!==void 0)for(const r in e.extensions)s.extensions[r]=e.extensions[r];if(e.lights!==void 0&&(s.lights=e.lights),e.clipping!==void 0&&(s.clipping=e.clipping),e.size!==void 0&&(s.size=e.size),e.sizeAttenuation!==void 0&&(s.sizeAttenuation=e.sizeAttenuation),e.map!==void 0&&(s.map=i(e.map)),e.matcap!==void 0&&(s.matcap=i(e.matcap)),e.alphaMap!==void 0&&(s.alphaMap=i(e.alphaMap)),e.bumpMap!==void 0&&(s.bumpMap=i(e.bumpMap)),e.bumpScale!==void 0&&(s.bumpScale=e.bumpScale),e.normalMap!==void 0&&(s.normalMap=i(e.normalMap)),e.normalMapType!==void 0&&(s.normalMapType=e.normalMapType),e.normalScale!==void 0){let r=e.normalScale;Array.isArray(r)===!1&&(r=[r,r]),s.normalScale=new ne().fromArray(r)}return e.displacementMap!==void 0&&(s.displacementMap=i(e.displacementMap)),e.displacementScale!==void 0&&(s.displacementScale=e.displacementScale),e.displacementBias!==void 0&&(s.displacementBias=e.displacementBias),e.roughnessMap!==void 0&&(s.roughnessMap=i(e.roughnessMap)),e.metalnessMap!==void 0&&(s.metalnessMap=i(e.metalnessMap)),e.emissiveMap!==void 0&&(s.emissiveMap=i(e.emissiveMap)),e.emissiveIntensity!==void 0&&(s.emissiveIntensity=e.emissiveIntensity),e.specularMap!==void 0&&(s.specularMap=i(e.specularMap)),e.specularIntensityMap!==void 0&&(s.specularIntensityMap=i(e.specularIntensityMap)),e.specularColorMap!==void 0&&(s.specularColorMap=i(e.specularColorMap)),e.envMap!==void 0&&(s.envMap=i(e.envMap)),e.envMapIntensity!==void 0&&(s.envMapIntensity=e.envMapIntensity),e.reflectivity!==void 0&&(s.reflectivity=e.reflectivity),e.refractionRatio!==void 0&&(s.refractionRatio=e.refractionRatio),e.lightMap!==void 0&&(s.lightMap=i(e.lightMap)),e.lightMapIntensity!==void 0&&(s.lightMapIntensity=e.lightMapIntensity),e.aoMap!==void 0&&(s.aoMap=i(e.aoMap)),e.aoMapIntensity!==void 0&&(s.aoMapIntensity=e.aoMapIntensity),e.gradientMap!==void 0&&(s.gradientMap=i(e.gradientMap)),e.clearcoatMap!==void 0&&(s.clearcoatMap=i(e.clearcoatMap)),e.clearcoatRoughnessMap!==void 0&&(s.clearcoatRoughnessMap=i(e.clearcoatRoughnessMap)),e.clearcoatNormalMap!==void 0&&(s.clearcoatNormalMap=i(e.clearcoatNormalMap)),e.clearcoatNormalScale!==void 0&&(s.clearcoatNormalScale=new ne().fromArray(e.clearcoatNormalScale)),e.iridescenceMap!==void 0&&(s.iridescenceMap=i(e.iridescenceMap)),e.iridescenceThicknessMap!==void 0&&(s.iridescenceThicknessMap=i(e.iridescenceThicknessMap)),e.transmissionMap!==void 0&&(s.transmissionMap=i(e.transmissionMap)),e.thicknessMap!==void 0&&(s.thicknessMap=i(e.thicknessMap)),e.sheenColorMap!==void 0&&(s.sheenColorMap=i(e.sheenColorMap)),e.sheenRoughnessMap!==void 0&&(s.sheenRoughnessMap=i(e.sheenRoughnessMap)),s}setTextures(e){return this.textures=e,this}static createMaterialFromType(e){const t={ShadowMaterial:sW,SpriteMaterial:kv,RawShaderMaterial:rW,ShaderMaterial:Zt,PointsMaterial:Uv,MeshPhysicalMaterial:oW,MeshStandardMaterial:qA,MeshPhongMaterial:aW,MeshToonMaterial:lW,MeshNormalMaterial:$v,MeshLambertMaterial:gW,MeshDepthMaterial:kA,MeshDistanceMaterial:Ev,MeshBasicMaterial:pa,MeshMatcapMaterial:cW,LineDashedMaterial:IW,LineBasicMaterial:Hi,Material:Jn};return new t[e]}}class cb{static decodeText(e){if(typeof TextDecoder<"u")return new TextDecoder().decode(e);let t="";for(let i=0,s=e.length;i0){const l=new $A(t);r=new Bu(l),r.setCrossOrigin(this.crossOrigin);for(let c=0,u=e.length;c0){s=new Bu(this.manager),s.setCrossOrigin(this.crossOrigin);for(let o=0,a=e.length;o"u"&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"}}setOptions(e){return this.options=e,this}load(e,t,i,s){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const r=this,o=ml.get(e);if(o!==void 0)return r.manager.itemStart(e),setTimeout(function(){t&&t(o),r.manager.itemEnd(e)},0),o;const a={};a.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",a.headers=this.requestHeader,fetch(e,a).then(function(l){return l.blob()}).then(function(l){return createImageBitmap(l,Object.assign(r.options,{colorSpaceConversion:"none"}))}).then(function(l){ml.add(e,l),t&&t(l),r.manager.itemEnd(e)}).catch(function(l){s&&s(l),r.manager.itemError(e),r.manager.itemEnd(e)}),r.manager.itemStart(e)}}let Jd;class ry{static getContext(){return Jd===void 0&&(Jd=new(window.AudioContext||window.webkitAudioContext)),Jd}static setContext(e){Jd=e}}class fz extends fs{constructor(e){super(e)}load(e,t,i,s){const r=this,o=new Ao(this.manager);o.setResponseType("arraybuffer"),o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(l){try{const c=l.slice(0);ry.getContext().decodeAudioData(c,function(C){t(C)},a)}catch(c){a(c)}},i,s);function a(l){s?s(l):console.error(l),r.manager.itemError(e)}}}class bz extends ep{constructor(e,t,i=1){super(void 0,i),this.isHemisphereLightProbe=!0;const s=new Re().set(e),r=new Re().set(t),o=new H(s.r,s.g,s.b),a=new H(r.r,r.g,r.b),l=Math.sqrt(Math.PI),c=l*Math.sqrt(.75);this.sh.coefficients[0].copy(o).add(a).multiplyScalar(l),this.sh.coefficients[1].copy(o).sub(a).multiplyScalar(c)}}class vz extends ep{constructor(e,t=1){super(void 0,t),this.isAmbientLightProbe=!0;const i=new Re().set(e);this.sh.coefficients[0].set(i.r,i.g,i.b).multiplyScalar(2*Math.sqrt(Math.PI))}}const SZ=new Fe,xZ=new Fe,Ha=new Fe;class yz{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new An,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new An,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(e){const t=this._cache;if(t.focus!==e.focus||t.fov!==e.fov||t.aspect!==e.aspect*this.aspect||t.near!==e.near||t.far!==e.far||t.zoom!==e.zoom||t.eyeSep!==this.eyeSep){t.focus=e.focus,t.fov=e.fov,t.aspect=e.aspect*this.aspect,t.near=e.near,t.far=e.far,t.zoom=e.zoom,t.eyeSep=this.eyeSep,Ha.copy(e.projectionMatrix);const s=t.eyeSep/2,r=s*t.near/t.focus,o=t.near*Math.tan(ol*t.fov*.5)/t.zoom;let a,l;xZ.elements[12]=-s,SZ.elements[12]=s,a=-o*t.aspect+r,l=o*t.aspect+r,Ha.elements[0]=2*t.near/(l-a),Ha.elements[8]=(l+a)/(l-a),this.cameraL.projectionMatrix.copy(Ha),a=-o*t.aspect-r,l=o*t.aspect-r,Ha.elements[0]=2*t.near/(l-a),Ha.elements[8]=(l+a)/(l-a),this.cameraR.projectionMatrix.copy(Ha)}this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(xZ),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(SZ)}}class oy{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=RZ(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const t=RZ();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}}function RZ(){return(typeof performance>"u"?Date:performance).now()}const Xa=new H,WZ=new xn,Gz=new H,Ya=new H;class Bz extends Xt{constructor(){super(),this.type="AudioListener",this.context=ry.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new oy}getInput(){return this.gain}removeFilter(){return this.filter!==null&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(e){return this.filter!==null?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}updateMatrixWorld(e){super.updateMatrixWorld(e);const t=this.context.listener,i=this.up;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(Xa,WZ,Gz),Ya.set(0,0,-1).applyQuaternion(WZ),t.positionX){const s=this.context.currentTime+this.timeDelta;t.positionX.linearRampToValueAtTime(Xa.x,s),t.positionY.linearRampToValueAtTime(Xa.y,s),t.positionZ.linearRampToValueAtTime(Xa.z,s),t.forwardX.linearRampToValueAtTime(Ya.x,s),t.forwardY.linearRampToValueAtTime(Ya.y,s),t.forwardZ.linearRampToValueAtTime(Ya.z,s),t.upX.linearRampToValueAtTime(i.x,s),t.upY.linearRampToValueAtTime(i.y,s),t.upZ.linearRampToValueAtTime(i.z,s)}else t.setPosition(Xa.x,Xa.y,Xa.z),t.setOrientation(Ya.x,Ya.y,Ya.z,i.x,i.y,i.z)}}class SW extends Xt{constructor(e){super(),this.type="Audio",this.listener=e,this.context=e.context,this.gain=this.context.createGain(),this.gain.connect(e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=e,this.connect(),this}setMediaElementSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(e),this.connect(),this}setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(e),this.connect(),this}setBuffer(e){return this.buffer=e,this.sourceType="buffer",this.autoplay&&this.play(),this}play(e=0){if(this.isPlaying===!0){console.warn("THREE.Audio: Audio is already playing.");return}if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}this._startedAt=this.context.currentTime+e;const t=this.context.createBufferSource();return t.buffer=this.buffer,t.loop=this.loop,t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.onended=this.onEnded.bind(this),t.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=t,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this._progress=0,this.source!==null&&(this.source.stop(),this.source.onended=null),this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(i,s,this._addIndex*t,1,t);for(let l=t,c=t+t;l!==c;++l)if(i[l]!==i[l+t]){a.setValue(i,s);break}}saveOriginalState(){const e=this.binding,t=this.buffer,i=this.valueSize,s=i*this._origIndex;e.getValue(t,s);for(let r=i,o=s;r!==o;++r)t[r]=t[s+r%i];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){const e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let i=e;i=.5)for(let o=0;o!==r;++o)e[t+o]=e[i+o]}_slerp(e,t,i,s){xn.slerpFlat(e,t,e,t,e,i,s)}_slerpAdditive(e,t,i,s,r){const o=this._workIndex*r;xn.multiplyQuaternionsFlat(e,o,e,t,e,i),xn.slerpFlat(e,t,e,t,e,o,s)}_lerp(e,t,i,s,r){const o=1-s;for(let a=0;a!==r;++a){const l=t+a;e[l]=e[l]*o+e[i+a]*s}}_lerpAdditive(e,t,i,s,r){for(let o=0;o!==r;++o){const a=t+o;e[a]=e[a]+e[i+o]*s}}}const ay="\\[\\]\\.:\\/",xz=new RegExp("["+ay+"]","g"),ly="[^"+ay+"]",Rz="[^"+ay.replace("\\.","")+"]",Wz=/((?:WC+[\/:])*)/.source.replace("WC",ly),Vz=/(WCOD+)?/.source.replace("WCOD",Rz),Mz=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",ly),Nz=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",ly),Hz=new RegExp("^"+Wz+Vz+Mz+Nz+"$"),Xz=["material","materials","bones","map"];class Yz{constructor(e,t,i){const s=i||Yt.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,s)}getValue(e,t){this.bind();const i=this._targetGroup.nCachedObjects_,s=this._bindings[i];s!==void 0&&s.getValue(e,t)}setValue(e,t){const i=this._bindings;for(let s=this._targetGroup.nCachedObjects_,r=i.length;s!==r;++s)i[s].setValue(e,t)}bind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].bind()}unbind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].unbind()}}class Yt{constructor(e,t,i){this.path=t,this.parsedPath=i||Yt.parseTrackName(t),this.node=Yt.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,i){return e&&e.isAnimationObjectGroup?new Yt.Composite(e,t,i):new Yt(e,t,i)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(xz,"")}static parseTrackName(e){const t=Hz.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);const i={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},s=i.nodeName&&i.nodeName.lastIndexOf(".");if(s!==void 0&&s!==-1){const r=i.nodeName.substring(s+1);Xz.indexOf(r)!==-1&&(i.nodeName=i.nodeName.substring(0,s),i.objectName=r)}if(i.propertyName===null||i.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return i}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){const i=e.skeleton.getBoneByName(t);if(i!==void 0)return i}if(e.children){const i=function(r){for(let o=0;o=r){const C=r++,d=e[C];t[d.uuid]=u,e[u]=d,t[c]=C,e[C]=l;for(let h=0,m=s;h!==m;++h){const v=i[h],y=v[C],A=v[u];v[u]=y,v[C]=A}}}this.nCachedObjects_=r}uncache(){const e=this._objects,t=this._indicesByUUID,i=this._bindings,s=i.length;let r=this.nCachedObjects_,o=e.length;for(let a=0,l=arguments.length;a!==l;++a){const c=arguments[a],u=c.uuid,C=t[u];if(C!==void 0)if(delete t[u],C0&&(t[h.uuid]=C),e[C]=h,e.pop();for(let m=0,v=s;m!==v;++m){const y=i[m];y[C]=y[d],y.pop()}}}this.nCachedObjects_=r}subscribe_(e,t){const i=this._bindingsIndicesByPath;let s=i[e];const r=this._bindings;if(s!==void 0)return r[s];const o=this._paths,a=this._parsedPaths,l=this._objects,c=l.length,u=this.nCachedObjects_,C=new Array(c);s=r.length,i[e]=s,o.push(e),a.push(t),r.push(C);for(let d=u,h=l.length;d!==h;++d){const m=l[d];C[d]=new Yt(m,e,t)}return C}unsubscribe_(e){const t=this._bindingsIndicesByPath,i=t[e];if(i!==void 0){const s=this._paths,r=this._parsedPaths,o=this._bindings,a=o.length-1,l=o[a],c=e[a];t[c]=i,o[i]=l,o.pop(),r[i]=r[a],r.pop(),s[i]=s[a],s.pop()}}}class RW{constructor(e,t,i=null,s=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=i,this.blendMode=s;const r=t.tracks,o=r.length,a=new Array(o),l={endingStart:qa,endingEnd:qa};for(let c=0;c!==o;++c){const u=r[c].createInterpolant(null);a[c]=u,u.settings=l}this._interpolantSettings=l,this._interpolants=a,this._propertyBindings=new Array(o),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=f1,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,i){if(e.fadeOut(t),this.fadeIn(t),i){const s=this._clip.duration,r=e._clip.duration,o=r/s,a=s/r;e.warp(1,o,t),this.warp(a,1,t)}return this}crossFadeTo(e,t,i){return e.crossFadeFrom(this,t,i)}stopFading(){const e=this._weightInterpolant;return e!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,i){const s=this._mixer,r=s.time,o=this.timeScale;let a=this._timeScaleInterpolant;a===null&&(a=s._lendControlInterpolant(),this._timeScaleInterpolant=a);const l=a.parameterPositions,c=a.sampleValues;return l[0]=r,l[1]=r+i,c[0]=e/o,c[1]=t/o,this}stopWarping(){const e=this._timeScaleInterpolant;return e!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,i,s){if(!this.enabled){this._updateWeight(e);return}const r=this._startTime;if(r!==null){const l=(e-r)*i;l<0||i===0?t=0:(this._startTime=null,t=i*l)}t*=this._updateTimeScale(e);const o=this._updateTime(t),a=this._updateWeight(e);if(a>0){const l=this._interpolants,c=this._propertyBindings;switch(this.blendMode){case Nv:for(let u=0,C=l.length;u!==C;++u)l[u].evaluate(o),c[u].accumulateAdditive(a);break;case KA:default:for(let u=0,C=l.length;u!==C;++u)l[u].evaluate(o),c[u].accumulate(s,a)}}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;const i=this._weightInterpolant;if(i!==null){const s=i.evaluate(e)[0];t*=s,e>i.parameterPositions[1]&&(this.stopFading(),s===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;const i=this._timeScaleInterpolant;if(i!==null){const s=i.evaluate(e)[0];t*=s,e>i.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){const t=this._clip.duration,i=this.loop;let s=this.time+e,r=this._loopCount;const o=i===b1;if(e===0)return r===-1?s:o&&(r&1)===1?t-s:s;if(i===m1){r===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(s>=t)s=t;else if(s<0)s=0;else{this.time=s;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=s,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(r===-1&&(e>=0?(r=0,this._setEndings(!0,this.repetitions===0,o)):this._setEndings(this.repetitions===0,!0,o)),s>=t||s<0){const a=Math.floor(s/t);s-=t*a,r+=Math.abs(a);const l=this.repetitions-r;if(l<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,s=e>0?t:0,this.time=s,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(l===1){const c=e<0;this._setEndings(c,!c,o)}else this._setEndings(!1,!1,o);this._loopCount=r,this.time=s,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:a})}}else this.time=s;if(o&&(r&1)===1)return t-s}return s}_setEndings(e,t,i){const s=this._interpolantSettings;i?(s.endingStart=$a,s.endingEnd=$a):(e?s.endingStart=this.zeroSlopeAtStart?$a:qa:s.endingStart=du,t?s.endingEnd=this.zeroSlopeAtEnd?$a:qa:s.endingEnd=du)}_scheduleFading(e,t,i){const s=this._mixer,r=s.time;let o=this._weightInterpolant;o===null&&(o=s._lendControlInterpolant(),this._weightInterpolant=o);const a=o.parameterPositions,l=o.sampleValues;return a[0]=r,l[0]=t,a[1]=r+e,l[1]=i,this}}const Kz=new Float32Array(1);class zz extends Ls{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){const i=e._localRoot||this._root,s=e._clip.tracks,r=s.length,o=e._propertyBindings,a=e._interpolants,l=i.uuid,c=this._bindingsByRootAndName;let u=c[l];u===void 0&&(u={},c[l]=u);for(let C=0;C!==r;++C){const d=s[C],h=d.name;let m=u[h];if(m!==void 0)++m.referenceCount,o[C]=m;else{if(m=o[C],m!==void 0){m._cacheIndex===null&&(++m.referenceCount,this._addInactiveBinding(m,l,h));continue}const v=t&&t._propertyBindings[C].binding.parsedPath;m=new xW(Yt.create(i,h,v),d.ValueTypeName,d.getValueSize()),++m.referenceCount,this._addInactiveBinding(m,l,h),o[C]=m}a[C].resultBuffer=m.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){const i=(e._localRoot||this._root).uuid,s=e._clip.uuid,r=this._actionsByClip[s];this._bindAction(e,r&&r.knownActions[0]),this._addInactiveAction(e,s,i)}const t=e._propertyBindings;for(let i=0,s=t.length;i!==s;++i){const r=t[i];r.useCount++===0&&(this._lendBinding(r),r.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){const t=e._propertyBindings;for(let i=0,s=t.length;i!==s;++i){const r=t[i];--r.useCount===0&&(r.restoreOriginalState(),this._takeBackBinding(r))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){const t=e._cacheIndex;return t!==null&&t=0;--i)e[i].stop();return this}update(e){e*=this.timeScale;const t=this._actions,i=this._nActiveActions,s=this.time+=e,r=Math.sign(e),o=this._accuIndex^=1;for(let c=0;c!==i;++c)t[c]._update(s,e,r,o);const a=this._bindings,l=this._nActiveBindings;for(let c=0;c!==l;++c)a[c].apply(o);return this}setTime(e){this.time=0;for(let t=0;tthis.max.x||e.ythis.max.y)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y)}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,NZ).distanceTo(e)}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const HZ=new H,Od=new H;class Pz{constructor(e=new H,t=new H){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){HZ.subVectors(e,this.start),Od.subVectors(this.end,this.start);const i=Od.dot(Od);let r=Od.dot(HZ)/i;return t&&(r=Gn(r,0,1)),r}closestPointToPoint(e,t,i){const s=this.closestPointToPointParameter(e,t);return this.delta(i).multiplyScalar(s).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}const XZ=new H;class _z extends Xt{constructor(e,t){super(),this.light=e,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=t,this.type="SpotLightHelper";const i=new ft,s=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let o=0,a=1,l=32;o1)for(let C=0;C.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{LZ.set(e.z,0,-e.x).normalize();const t=Math.acos(e.y);this.quaternion.setFromAxisAngle(LZ,t)}}setLength(e,t=e*.2,i=t*.2){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(i,t,i),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}}class oL extends Kr{constructor(e=1){const t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],i=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],s=new ft;s.setAttribute("position",new ke(t,3)),s.setAttribute("color",new ke(i,3));const r=new Hi({vertexColors:!0,toneMapped:!1});super(s,r),this.type="AxesHelper"}setColors(e,t,i){const s=new Re,r=this.geometry.attributes.color.array;return s.set(e),s.toArray(r,0),s.toArray(r,3),s.set(t),s.toArray(r,6),s.toArray(r,9),s.set(i),s.toArray(r,12),s.toArray(r,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class aL{constructor(){this.type="ShapePath",this.color=new Re,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new pu,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,i,s){return this.currentPath.quadraticCurveTo(e,t,i,s),this}bezierCurveTo(e,t,i,s,r,o){return this.currentPath.bezierCurveTo(e,t,i,s,r,o),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){function t(A){const b=[];for(let f=0,B=A.length;fNumber.EPSILON){if(V<0&&(R=b[x],Z=-Z,M=b[S],V=-V),A.yM.y)continue;if(A.y===R.y){if(A.x===R.x)return!0}else{const N=V*(A.x-R.x)-Z*(A.y-R.y);if(N===0)return!0;if(N<0)continue;B=!B}}else{if(A.y!==R.y)continue;if(M.x<=A.x&&A.x<=R.x||R.x<=A.x&&A.x<=M.x)return!0}}return B}const s=Nr.isClockWise,r=this.subPaths;if(r.length===0)return[];let o,a,l;const c=[];if(r.length===1)return a=r[0],l=new gl,l.curves=a.curves,c.push(l),c;let u=!s(r[0].getPoints());u=e?!u:u;const C=[],d=[];let h=[],m=0,v;d[m]=void 0,h[m]=[];for(let A=0,b=r.length;A1){let A=!1,b=0;for(let f=0,B=d.length;f0&&A===!1&&(h=C)}let y;for(let A=0,b=d.length;A{const C=typeof c=="function"?c(e):c;if(C!==e){const d=e;e=u?C:Object.assign({},e,C),t.forEach(h=>h(e,d))}},s=()=>e,r=(c,u=s,C=Object.is)=>{console.warn("[DEPRECATED] Please use `subscribeWithSelector` middleware");let d=u(e);function h(){const m=u(e);if(!C(d,m)){const v=d;c(d=m,v)}}return t.add(h),()=>t.delete(h)},l={setState:i,getState:s,subscribe:(c,u,C)=>u||C?r(c,u,C):(t.add(c),()=>t.delete(c)),destroy:()=>t.clear()};return e=n(i,s,l),l}const bL=typeof window>"u"||!window.navigator||/ServerSideRendering|^Deno\//.test(window.navigator.userAgent),XZ=bL?U.useEffect:U.useLayoutEffect;function wW(n){const e=typeof n=="function"?fL(n):n,t=(i=e.getState,s=Object.is)=>{const[,r]=U.useReducer(y=>y+1,0),o=e.getState(),a=U.useRef(o),l=U.useRef(i),c=U.useRef(s),u=U.useRef(!1),C=U.useRef();C.current===void 0&&(C.current=i(o));let d,h=!1;(a.current!==o||l.current!==i||c.current!==s||u.current)&&(d=i(o),h=!s(C.current,d)),XZ(()=>{h&&(C.current=d),a.current=o,l.current=i,c.current=s,u.current=!1});const m=U.useRef(o);XZ(()=>{const y=()=>{try{const b=e.getState(),f=l.current(b);c.current(C.current,f)||(a.current=b,C.current=f,r())}catch{u.current=!0,r()}},A=e.subscribe(y);return e.getState()!==m.current&&y(),A},[]);const v=h?d:C.current;return U.useDebugValue(v),v};return Object.assign(t,e),t[Symbol.iterator]=function(){console.warn("[useStore, api] = create() is deprecated and will be removed in v4");const i=[t,e];return{next(){const s=i.length<=0;return{value:i.shift(),done:s}}}},t}var SW={exports:{}},xW={exports:{}},RW={};/** + */Sl.ConcurrentRoot=1;Sl.ContinuousEventPriority=4;Sl.DefaultEventPriority=16;Sl.DiscreteEventPriority=1;Sl.IdleEventPriority=536870912;Sl.LegacyRoot=0;MW.exports=Sl;var Hg=MW.exports;function xL(n){let e;const t=new Set,i=(c,u)=>{const C=typeof c=="function"?c(e):c;if(C!==e){const d=e;e=u?C:Object.assign({},e,C),t.forEach(h=>h(e,d))}},s=()=>e,r=(c,u=s,C=Object.is)=>{console.warn("[DEPRECATED] Please use `subscribeWithSelector` middleware");let d=u(e);function h(){const m=u(e);if(!C(d,m)){const v=d;c(d=m,v)}}return t.add(h),()=>t.delete(h)},l={setState:i,getState:s,subscribe:(c,u,C)=>u||C?r(c,u,C):(t.add(c),()=>t.delete(c)),destroy:()=>t.clear()};return e=n(i,s,l),l}const RL=typeof window>"u"||!window.navigator||/ServerSideRendering|^Deno\//.test(window.navigator.userAgent),EZ=RL?k.useEffect:k.useLayoutEffect;function NW(n){const e=typeof n=="function"?xL(n):n,t=(i=e.getState,s=Object.is)=>{const[,r]=k.useReducer(y=>y+1,0),o=e.getState(),a=k.useRef(o),l=k.useRef(i),c=k.useRef(s),u=k.useRef(!1),C=k.useRef();C.current===void 0&&(C.current=i(o));let d,h=!1;(a.current!==o||l.current!==i||c.current!==s||u.current)&&(d=i(o),h=!s(C.current,d)),EZ(()=>{h&&(C.current=d),a.current=o,l.current=i,c.current=s,u.current=!1});const m=k.useRef(o);EZ(()=>{const y=()=>{try{const b=e.getState(),f=l.current(b);c.current(C.current,f)||(a.current=b,C.current=f,r())}catch{u.current=!0,r()}},A=e.subscribe(y);return e.getState()!==m.current&&y(),A},[]);const v=h?d:C.current;return k.useDebugValue(v),v};return Object.assign(t,e),t[Symbol.iterator]=function(){console.warn("[useStore, api] = create() is deprecated and will be removed in v4");const i=[t,e];return{next(){const s=i.length<=0;return{value:i.shift(),done:s}}}},t}var HW={exports:{}},XW={exports:{}},YW={};/** * @license React * scheduler.production.min.js * @@ -3455,7 +3455,7 @@ void main() { * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */(function(n){function e(L,J){var P=L.length;L.push(J);e:for(;0>>1,se=L[ce];if(0>>1;ces(ve,P))yes(_,ve)?(L[ce]=_,L[ye]=P,ce=ye):(L[ce]=ve,L[re]=P,ce=re);else if(yes(_,P))L[ce]=_,L[ye]=P,ce=ye;else break e}}return J}function s(L,J){var P=L.sortIndex-J.sortIndex;return P!==0?P:L.id-J.id}if(typeof performance=="object"&&typeof performance.now=="function"){var r=performance;n.unstable_now=function(){return r.now()}}else{var o=Date,a=o.now();n.unstable_now=function(){return o.now()-a}}var l=[],c=[],u=1,C=null,d=3,h=!1,m=!1,v=!1,y=typeof setTimeout=="function"?setTimeout:null,A=typeof clearTimeout=="function"?clearTimeout:null,b=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function f(L){for(var J=t(c);J!==null;){if(J.callback===null)i(c);else if(J.startTime<=L)i(c),J.sortIndex=J.expirationTime,e(l,J);else break;J=t(c)}}function B(L){if(v=!1,f(L),!m)if(t(l)!==null)m=!0,Ce(S);else{var J=t(c);J!==null&&le(B,J.startTime-L)}}function S(L,J){m=!1,v&&(v=!1,A(M),M=-1),h=!0;var P=d;try{for(f(J),C=t(l);C!==null&&(!(C.expirationTime>J)||L&&!N());){var ce=C.callback;if(typeof ce=="function"){C.callback=null,d=C.priorityLevel;var se=ce(C.expirationTime<=J);J=n.unstable_now(),typeof se=="function"?C.callback=se:C===t(l)&&i(l),f(J)}else i(l);C=t(l)}if(C!==null)var ee=!0;else{var re=t(c);re!==null&&le(B,re.startTime-J),ee=!1}return ee}finally{C=null,d=P,h=!1}}var x=!1,R=null,M=-1,Z=5,V=-1;function N(){return!(n.unstable_now()-VL||125ce?(L.sortIndex=P,e(c,L),t(l)===null&&L===t(c)&&(v?(A(M),M=-1):v=!0,le(B,P-ce))):(L.sortIndex=se,e(l,L),m||h||(m=!0,Ce(S))),L},n.unstable_shouldYield=N,n.unstable_wrapCallback=function(L){var J=d;return function(){var P=d;d=J;try{return L.apply(this,arguments)}finally{d=P}}}})(RW);xW.exports=RW;var lb=xW.exports;/** + */(function(n){function e(L,J){var P=L.length;L.push(J);e:for(;0>>1,se=L[ce];if(0>>1;ces(ve,P))yes(_,ve)?(L[ce]=_,L[ye]=P,ce=ye):(L[ce]=ve,L[re]=P,ce=re);else if(yes(_,P))L[ce]=_,L[ye]=P,ce=ye;else break e}}return J}function s(L,J){var P=L.sortIndex-J.sortIndex;return P!==0?P:L.id-J.id}if(typeof performance=="object"&&typeof performance.now=="function"){var r=performance;n.unstable_now=function(){return r.now()}}else{var o=Date,a=o.now();n.unstable_now=function(){return o.now()-a}}var l=[],c=[],u=1,C=null,d=3,h=!1,m=!1,v=!1,y=typeof setTimeout=="function"?setTimeout:null,A=typeof clearTimeout=="function"?clearTimeout:null,b=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function f(L){for(var J=t(c);J!==null;){if(J.callback===null)i(c);else if(J.startTime<=L)i(c),J.sortIndex=J.expirationTime,e(l,J);else break;J=t(c)}}function B(L){if(v=!1,f(L),!m)if(t(l)!==null)m=!0,Ce(S);else{var J=t(c);J!==null&&le(B,J.startTime-L)}}function S(L,J){m=!1,v&&(v=!1,A(M),M=-1),h=!0;var P=d;try{for(f(J),C=t(l);C!==null&&(!(C.expirationTime>J)||L&&!N());){var ce=C.callback;if(typeof ce=="function"){C.callback=null,d=C.priorityLevel;var se=ce(C.expirationTime<=J);J=n.unstable_now(),typeof se=="function"?C.callback=se:C===t(l)&&i(l),f(J)}else i(l);C=t(l)}if(C!==null)var ee=!0;else{var re=t(c);re!==null&&le(B,re.startTime-J),ee=!1}return ee}finally{C=null,d=P,h=!1}}var x=!1,R=null,M=-1,Z=5,V=-1;function N(){return!(n.unstable_now()-VL||125ce?(L.sortIndex=P,e(c,L),t(l)===null&&L===t(c)&&(v?(A(M),M=-1):v=!0,le(B,P-ce))):(L.sortIndex=se,e(l,L),m||h||(m=!0,Ce(S))),L},n.unstable_shouldYield=N,n.unstable_wrapCallback=function(L){var J=d;return function(){var P=d;d=J;try{return L.apply(this,arguments)}finally{d=P}}}})(YW);XW.exports=YW;var ub=XW.exports;/** * @license React * react-reconciler.production.min.js * @@ -3463,23 +3463,23 @@ void main() { * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var vL=function(e){var t={},i=U,s=lb,r=Object.assign;function o(g){for(var I="https://reactjs.org/docs/error-decoder.html?invariant="+g,p=1;pQ||w[z]!==W[Q]){var de=` -`+w[z].replace(" at new "," at ");return g.displayName&&de.includes("")&&(de=de.replace("",g.displayName)),de}while(1<=z&&0<=Q);break}}}finally{St=!1,Error.prepareStackTrace=p}return(g=g?g.displayName||g.name:"")?nn(g):""}var Wn=Object.prototype.hasOwnProperty,Ds=[],zr=-1;function Hi(g){return{current:g}}function Ot(g){0>zr||(g.current=Ds[zr],Ds[zr]=null,zr--)}function At(g,I){zr++,Ds[zr]=g.current,g.current=I}var gi={},Vn=Hi(gi),jt=Hi(!1),Us=gi;function yo(g,I){var p=g.type.contextTypes;if(!p)return gi;var G=g.stateNode;if(G&&G.__reactInternalMemoizedUnmaskedChildContext===I)return G.__reactInternalMemoizedMaskedChildContext;var w={},W;for(W in p)w[W]=I[W];return G&&(g=g.stateNode,g.__reactInternalMemoizedUnmaskedChildContext=I,g.__reactInternalMemoizedMaskedChildContext=w),w}function ni(g){return g=g.childContextTypes,g!=null}function ju(){Ot(jt),Ot(Vn)}function vy(g,I,p){if(Vn.current!==gi)throw Error(o(168));At(Vn,I),At(jt,p)}function yy(g,I,p){var G=g.stateNode;if(I=I.childContextTypes,typeof G.getChildContext!="function")return p;G=G.getChildContext();for(var w in G)if(!(w in I))throw Error(o(108,M(g)||"Unknown",w));return r({},p,G)}function qu(g){return g=(g=g.stateNode)&&g.__reactInternalMemoizedMergedChildContext||gi,Us=Vn.current,At(Vn,g),At(jt,jt.current),!0}function Gy(g,I,p){var G=g.stateNode;if(!G)throw Error(o(169));p?(g=yy(g,I,Us),G.__reactInternalMemoizedMergedChildContext=g,Ot(jt),Ot(Vn),At(Vn,g)):Ot(jt),At(jt,p)}var Ps=Math.clz32?Math.clz32:nM,eM=Math.log,tM=Math.LN2;function nM(g){return g>>>=0,g===0?32:31-(eM(g)/tM|0)|0}var $u=64,eC=4194304;function fc(g){switch(g&-g){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return g&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return g&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return g}}function tC(g,I){var p=g.pendingLanes;if(p===0)return 0;var G=0,w=g.suspendedLanes,W=g.pingedLanes,z=p&268435455;if(z!==0){var Q=z&~w;Q!==0?G=fc(Q):(W&=z,W!==0&&(G=fc(W)))}else z=p&~w,z!==0?G=fc(z):W!==0&&(G=fc(W));if(G===0)return 0;if(I!==0&&I!==G&&!(I&w)&&(w=G&-G,W=I&-I,w>=W||w===16&&(W&4194240)!==0))return I;if(G&4&&(G|=p&16),I=g.entangledLanes,I!==0)for(g=g.entanglements,I&=G;0p;p++)I.push(g);return I}function bc(g,I,p){g.pendingLanes|=I,I!==536870912&&(g.suspendedLanes=0,g.pingedLanes=0),g=g.eventTimes,I=31-Ps(I),g[I]=p}function rM(g,I){var p=g.pendingLanes&~I;g.pendingLanes=I,g.suspendedLanes=0,g.pingedLanes=0,g.expiredLanes&=I,g.mutableReadLanes&=I,g.entangledLanes&=I,I=g.entanglements;var G=g.eventTimes;for(g=g.expirationTimes;0>=z,w-=z,Er=1<<32-Ps(I)+w|p<zt?(jn=dt,dt=null):jn=dt.sibling;var Lt=it(oe,dt,Ie[zt],He);if(Lt===null){dt===null&&(dt=jn);break}g&&dt&&Lt.alternate===null&&I(oe,dt),j=W(Lt,j,zt),bt===null?Pe=Lt:bt.sibling=Lt,bt=Lt,dt=jn}if(zt===Ie.length)return p(oe,dt),cn&&va(oe,zt),Pe;if(dt===null){for(;ztzt?(jn=dt,dt=null):jn=dt.sibling;var Wo=it(oe,dt,Lt.value,He);if(Wo===null){dt===null&&(dt=jn);break}g&&dt&&Wo.alternate===null&&I(oe,dt),j=W(Wo,j,zt),bt===null?Pe=Wo:bt.sibling=Wo,bt=Wo,dt=jn}if(Lt.done)return p(oe,dt),cn&&va(oe,zt),Pe;if(dt===null){for(;!Lt.done;zt++,Lt=Ie.next())Lt=Ct(oe,Lt.value,He),Lt!==null&&(j=W(Lt,j,zt),bt===null?Pe=Lt:bt.sibling=Lt,bt=Lt);return cn&&va(oe,zt),Pe}for(dt=G(oe,dt);!Lt.done;zt++,Lt=Ie.next())Lt=en(dt,oe,zt,Lt.value,He),Lt!==null&&(g&&Lt.alternate!==null&&dt.delete(Lt.key===null?zt:Lt.key),j=W(Lt,j,zt),bt===null?Pe=Lt:bt.sibling=Lt,bt=Lt);return g&&dt.forEach(function(DM){return I(oe,DM)}),cn&&va(oe,zt),Pe}function Ss(oe,j,Ie,He){if(typeof Ie=="object"&&Ie!==null&&Ie.type===u&&Ie.key===null&&(Ie=Ie.props.children),typeof Ie=="object"&&Ie!==null){switch(Ie.$$typeof){case l:e:{for(var Pe=Ie.key,bt=j;bt!==null;){if(bt.key===Pe){if(Pe=Ie.type,Pe===u){if(bt.tag===7){p(oe,bt.sibling),j=w(bt,Ie.props.children),j.return=oe,oe=j;break e}}else if(bt.elementType===Pe||typeof Pe=="object"&&Pe!==null&&Pe.$$typeof===f&&zy(Pe)===bt.type){p(oe,bt.sibling),j=w(bt,Ie.props),j.ref=Gc(oe,bt,Ie),j.return=oe,oe=j;break e}p(oe,bt);break}else I(oe,bt);bt=bt.sibling}Ie.type===u?(j=xa(Ie.props.children,oe.mode,He,Ie.key),j.return=oe,oe=j):(He=kC(Ie.type,Ie.key,Ie.props,null,oe.mode,He),He.ref=Gc(oe,j,Ie),He.return=oe,oe=He)}return z(oe);case c:e:{for(bt=Ie.key;j!==null;){if(j.key===bt)if(j.tag===4&&j.stateNode.containerInfo===Ie.containerInfo&&j.stateNode.implementation===Ie.implementation){p(oe,j.sibling),j=w(j,Ie.children||[]),j.return=oe,oe=j;break e}else{p(oe,j);break}else I(oe,j);j=j.sibling}j=sm(Ie,oe.mode,He),j.return=oe,oe=j}return z(oe);case f:return bt=Ie._init,Ss(oe,j,bt(Ie._payload),He)}if(te(Ie))return Qe(oe,j,Ie,He);if(x(Ie))return Ci(oe,j,Ie,He);uC(oe,Ie)}return typeof Ie=="string"&&Ie!==""||typeof Ie=="number"?(Ie=""+Ie,j!==null&&j.tag===6?(p(oe,j.sibling),j=w(j,Ie),j.return=oe,oe=j):(p(oe,j),j=im(Ie,oe.mode,He),j.return=oe,oe=j),z(oe)):p(oe,j)}return Ss}var Hl=Ly(!0),Ty=Ly(!1),Bc={},Gs=Hi(Bc),Zc=Hi(Bc),Xl=Hi(Bc);function fr(g){if(g===Bc)throw Error(o(174));return g}function vp(g,I){At(Xl,I),At(Zc,g),At(Gs,Bc),g=le(I),Ot(Gs),At(Gs,g)}function Yl(){Ot(Gs),Ot(Zc),Ot(Xl)}function Ey(g){var I=fr(Xl.current),p=fr(Gs.current);I=L(p,g.type,I),p!==I&&(At(Zc,g),At(Gs,I))}function yp(g){Zc.current===g&&(Ot(Gs),Ot(Zc))}var dn=Hi(0);function CC(g){for(var I=g;I!==null;){if(I.tag===13){var p=I.memoizedState;if(p!==null&&(p=p.dehydrated,p===null||Qu(p)||mc(p)))return I}else if(I.tag===19&&I.memoizedProps.revealOrder!==void 0){if(I.flags&128)return I}else if(I.child!==null){I.child.return=I,I=I.child;continue}if(I===g)break;for(;I.sibling===null;){if(I.return===null||I.return===g)return null;I=I.return}I.sibling.return=I.return,I=I.sibling}return null}var Gp=[];function Bp(){for(var g=0;gp?p:4,g(!0);var G=Bs.transition;Bs.transition={};try{g(!1),I()}finally{Kt=p,Bs.transition=G}}function nG(){return br().memoizedState}function pM(g,I,p){var G=So(g);p={lane:G,action:p,hasEagerState:!1,eagerState:null,next:null},iG(g)?sG(I,p):(rG(g,I,p),p=Bi(),g=Zs(g,G,p),g!==null&&oG(g,I,G))}function mM(g,I,p){var G=So(g),w={lane:G,action:p,hasEagerState:!1,eagerState:null,next:null};if(iG(g))sG(I,w);else{rG(g,I,w);var W=g.alternate;if(g.lanes===0&&(W===null||W.lanes===0)&&(W=I.lastRenderedReducer,W!==null))try{var z=I.lastRenderedState,Q=W(z,p);if(w.hasEagerState=!0,w.eagerState=Q,Ar(Q,z))return}catch{}finally{}p=Bi(),g=Zs(g,G,p),g!==null&&oG(g,I,G)}}function iG(g){var I=g.alternate;return g===bn||I!==null&&I===bn}function sG(g,I){wc=hC=!0;var p=g.pending;p===null?I.next=I:(I.next=p.next,p.next=I),g.pending=I}function rG(g,I,p){Mn!==null&&g.mode&1&&!(Bt&2)?(g=I.interleaved,g===null?(p.next=p,mr===null?mr=[I]:mr.push(I)):(p.next=g.next,g.next=p),I.interleaved=p):(g=I.pending,g===null?p.next=p:(p.next=g.next,g.next=p),I.pending=p)}function oG(g,I,p){if(p&4194240){var G=I.lanes;G&=g.pendingLanes,p|=G,I.lanes=p,sp(g,p)}}var bC={readContext:bs,useCallback:Ii,useContext:Ii,useEffect:Ii,useImperativeHandle:Ii,useInsertionEffect:Ii,useLayoutEffect:Ii,useMemo:Ii,useReducer:Ii,useRef:Ii,useState:Ii,useDebugValue:Ii,useDeferredValue:Ii,useTransition:Ii,useMutableSource:Ii,useSyncExternalStore:Ii,useId:Ii,unstable_isNewReconciler:!1},fM={readContext:bs,useCallback:function(g,I){return Dr().memoizedState=[g,I===void 0?null:I],g},useContext:bs,useEffect:Rp,useImperativeHandle:function(g,I,p){return p=p!=null?p.concat([g]):null,mC(4194308,4,qy.bind(null,I,g),p)},useLayoutEffect:function(g,I){return mC(4194308,4,g,I)},useInsertionEffect:function(g,I){return mC(4,2,g,I)},useMemo:function(g,I){var p=Dr();return I=I===void 0?null:I,g=g(),p.memoizedState=[g,I],g},useReducer:function(g,I,p){var G=Dr();return I=p!==void 0?p(I):I,G.memoizedState=G.baseState=I,g={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:g,lastRenderedState:I},G.queue=g,g=g.dispatch=pM.bind(null,bn,g),[G.memoizedState,g]},useRef:function(g){var I=Dr();return g={current:g},I.memoizedState=g},useState:xp,useDebugValue:Wp,useDeferredValue:function(g){var I=xp(g),p=I[0],G=I[1];return Rp(function(){var w=Bs.transition;Bs.transition={};try{G(g)}finally{Bs.transition=w}},[g]),p},useTransition:function(){var g=xp(!1),I=g[0];return g=AM.bind(null,g[1]),Dr().memoizedState=g,[I,g]},useMutableSource:function(){},useSyncExternalStore:function(g,I,p){var G=bn,w=Dr();if(cn){if(p===void 0)throw Error(o(407));p=p()}else{if(p=I(),Mn===null)throw Error(o(349));Fl&30||Uy(G,I,p)}w.memoizedState=p;var W={value:p,getSnapshot:I};return w.queue=W,Rp(_y.bind(null,G,W,g),[g]),G.flags|=2048,xc(9,Py.bind(null,G,W,p,I),void 0,null),p},useId:function(){var g=Dr(),I=Mn.identifierPrefix;if(cn){var p=kr,G=Er;p=(G&~(1<<32-Ps(G)-1)).toString(32)+p,I=":"+I+"R"+p,p=Sc++,0")&&(de=de.replace("",g.displayName)),de}while(1<=z&&0<=Q);break}}}finally{St=!1,Error.prepareStackTrace=p}return(g=g?g.displayName||g.name:"")?nn(g):""}var Wn=Object.prototype.hasOwnProperty,Us=[],zr=-1;function Xi(g){return{current:g}}function Ot(g){0>zr||(g.current=Us[zr],Us[zr]=null,zr--)}function At(g,I){zr++,Us[zr]=g.current,g.current=I}var ci={},Vn=Xi(ci),jt=Xi(!1),Ps=ci;function yo(g,I){var p=g.type.contextTypes;if(!p)return ci;var G=g.stateNode;if(G&&G.__reactInternalMemoizedUnmaskedChildContext===I)return G.__reactInternalMemoizedMaskedChildContext;var w={},W;for(W in p)w[W]=I[W];return G&&(g=g.stateNode,g.__reactInternalMemoizedUnmaskedChildContext=I,g.__reactInternalMemoizedMaskedChildContext=w),w}function ii(g){return g=g.childContextTypes,g!=null}function iC(){Ot(jt),Ot(Vn)}function Sy(g,I,p){if(Vn.current!==ci)throw Error(o(168));At(Vn,I),At(jt,p)}function xy(g,I,p){var G=g.stateNode;if(I=I.childContextTypes,typeof G.getChildContext!="function")return p;G=G.getChildContext();for(var w in G)if(!(w in I))throw Error(o(108,M(g)||"Unknown",w));return r({},p,G)}function sC(g){return g=(g=g.stateNode)&&g.__reactInternalMemoizedMergedChildContext||ci,Ps=Vn.current,At(Vn,g),At(jt,jt.current),!0}function Ry(g,I,p){var G=g.stateNode;if(!G)throw Error(o(169));p?(g=xy(g,I,Ps),G.__reactInternalMemoizedMergedChildContext=g,Ot(jt),Ot(Vn),At(Vn,g)):Ot(jt),At(jt,p)}var _s=Math.clz32?Math.clz32:IM,gM=Math.log,cM=Math.LN2;function IM(g){return g>>>=0,g===0?32:31-(gM(g)/cM|0)|0}var rC=64,oC=4194304;function yc(g){switch(g&-g){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return g&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return g&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return g}}function aC(g,I){var p=g.pendingLanes;if(p===0)return 0;var G=0,w=g.suspendedLanes,W=g.pingedLanes,z=p&268435455;if(z!==0){var Q=z&~w;Q!==0?G=yc(Q):(W&=z,W!==0&&(G=yc(W)))}else z=p&~w,z!==0?G=yc(z):W!==0&&(G=yc(W));if(G===0)return 0;if(I!==0&&I!==G&&!(I&w)&&(w=G&-G,W=I&-I,w>=W||w===16&&(W&4194240)!==0))return I;if(G&4&&(G|=p&16),I=g.entangledLanes,I!==0)for(g=g.entanglements,I&=G;0p;p++)I.push(g);return I}function Gc(g,I,p){g.pendingLanes|=I,I!==536870912&&(g.suspendedLanes=0,g.pingedLanes=0),g=g.eventTimes,I=31-_s(I),g[I]=p}function dM(g,I){var p=g.pendingLanes&~I;g.pendingLanes=I,g.suspendedLanes=0,g.pingedLanes=0,g.expiredLanes&=I,g.mutableReadLanes&=I,g.entangledLanes&=I,I=g.entanglements;var G=g.eventTimes;for(g=g.expirationTimes;0>=z,w-=z,Tr=1<<32-_s(I)+w|p<zt?(qn=dt,dt=null):qn=dt.sibling;var Lt=it(oe,dt,Ie[zt],He);if(Lt===null){dt===null&&(dt=qn);break}g&&dt&&Lt.alternate===null&&I(oe,dt),j=W(Lt,j,zt),bt===null?Pe=Lt:bt.sibling=Lt,bt=Lt,dt=qn}if(zt===Ie.length)return p(oe,dt),cn&&Ga(oe,zt),Pe;if(dt===null){for(;ztzt?(qn=dt,dt=null):qn=dt.sibling;var Wo=it(oe,dt,Lt.value,He);if(Wo===null){dt===null&&(dt=qn);break}g&&dt&&Wo.alternate===null&&I(oe,dt),j=W(Wo,j,zt),bt===null?Pe=Wo:bt.sibling=Wo,bt=Wo,dt=qn}if(Lt.done)return p(oe,dt),cn&&Ga(oe,zt),Pe;if(dt===null){for(;!Lt.done;zt++,Lt=Ie.next())Lt=Ct(oe,Lt.value,He),Lt!==null&&(j=W(Lt,j,zt),bt===null?Pe=Lt:bt.sibling=Lt,bt=Lt);return cn&&Ga(oe,zt),Pe}for(dt=G(oe,dt);!Lt.done;zt++,Lt=Ie.next())Lt=en(dt,oe,zt,Lt.value,He),Lt!==null&&(g&&Lt.alternate!==null&&dt.delete(Lt.key===null?zt:Lt.key),j=W(Lt,j,zt),bt===null?Pe=Lt:bt.sibling=Lt,bt=Lt);return g&&dt.forEach(function($M){return I(oe,$M)}),cn&&Ga(oe,zt),Pe}function xs(oe,j,Ie,He){if(typeof Ie=="object"&&Ie!==null&&Ie.type===u&&Ie.key===null&&(Ie=Ie.props.children),typeof Ie=="object"&&Ie!==null){switch(Ie.$$typeof){case l:e:{for(var Pe=Ie.key,bt=j;bt!==null;){if(bt.key===Pe){if(Pe=Ie.type,Pe===u){if(bt.tag===7){p(oe,bt.sibling),j=w(bt,Ie.props.children),j.return=oe,oe=j;break e}}else if(bt.elementType===Pe||typeof Pe=="object"&&Pe!==null&&Pe.$$typeof===f&&Uy(Pe)===bt.type){p(oe,bt.sibling),j=w(bt,Ie.props),j.ref=wc(oe,bt,Ie),j.return=oe,oe=j;break e}p(oe,bt);break}else I(oe,bt);bt=bt.sibling}Ie.type===u?(j=Wa(Ie.props.children,oe.mode,He,Ie.key),j.return=oe,oe=j):(He=OC(Ie.type,Ie.key,Ie.props,null,oe.mode,He),He.ref=wc(oe,j,Ie),He.return=oe,oe=He)}return z(oe);case c:e:{for(bt=Ie.key;j!==null;){if(j.key===bt)if(j.tag===4&&j.stateNode.containerInfo===Ie.containerInfo&&j.stateNode.implementation===Ie.implementation){p(oe,j.sibling),j=w(j,Ie.children||[]),j.return=oe,oe=j;break e}else{p(oe,j);break}else I(oe,j);j=j.sibling}j=lm(Ie,oe.mode,He),j.return=oe,oe=j}return z(oe);case f:return bt=Ie._init,xs(oe,j,bt(Ie._payload),He)}if(te(Ie))return Qe(oe,j,Ie,He);if(x(Ie))return di(oe,j,Ie,He);mC(oe,Ie)}return typeof Ie=="string"&&Ie!==""||typeof Ie=="number"?(Ie=""+Ie,j!==null&&j.tag===6?(p(oe,j.sibling),j=w(j,Ie),j.return=oe,oe=j):(p(oe,j),j=am(Ie,oe.mode,He),j.return=oe,oe=j),z(oe)):p(oe,j)}return xs}var Fl=Py(!0),_y=Py(!1),Sc={},Bs=Xi(Sc),xc=Xi(Sc),Kl=Xi(Sc);function fr(g){if(g===Sc)throw Error(o(174));return g}function Zp(g,I){At(Kl,I),At(xc,g),At(Bs,Sc),g=le(I),Ot(Bs),At(Bs,g)}function zl(){Ot(Bs),Ot(xc),Ot(Kl)}function Jy(g){var I=fr(Kl.current),p=fr(Bs.current);I=L(p,g.type,I),p!==I&&(At(xc,g),At(Bs,I))}function wp(g){xc.current===g&&(Ot(Bs),Ot(xc))}var dn=Xi(0);function fC(g){for(var I=g;I!==null;){if(I.tag===13){var p=I.memoizedState;if(p!==null&&(p=p.dehydrated,p===null||nC(p)||vc(p)))return I}else if(I.tag===19&&I.memoizedProps.revealOrder!==void 0){if(I.flags&128)return I}else if(I.child!==null){I.child.return=I,I=I.child;continue}if(I===g)break;for(;I.sibling===null;){if(I.return===null||I.return===g)return null;I=I.return}I.sibling.return=I.return,I=I.sibling}return null}var Sp=[];function xp(){for(var g=0;gp?p:4,g(!0);var G=Zs.transition;Zs.transition={};try{g(!1),I()}finally{Kt=p,Zs.transition=G}}function lG(){return br().memoizedState}function wM(g,I,p){var G=So(g);p={lane:G,action:p,hasEagerState:!1,eagerState:null,next:null},gG(g)?cG(I,p):(IG(g,I,p),p=Zi(),g=ws(g,G,p),g!==null&&uG(g,I,G))}function SM(g,I,p){var G=So(g),w={lane:G,action:p,hasEagerState:!1,eagerState:null,next:null};if(gG(g))cG(I,w);else{IG(g,I,w);var W=g.alternate;if(g.lanes===0&&(W===null||W.lanes===0)&&(W=I.lastRenderedReducer,W!==null))try{var z=I.lastRenderedState,Q=W(z,p);if(w.hasEagerState=!0,w.eagerState=Q,Ar(Q,z))return}catch{}finally{}p=Zi(),g=ws(g,G,p),g!==null&&uG(g,I,G)}}function gG(g){var I=g.alternate;return g===bn||I!==null&&I===bn}function cG(g,I){Rc=vC=!0;var p=g.pending;p===null?I.next=I:(I.next=p.next,p.next=I),g.pending=I}function IG(g,I,p){Mn!==null&&g.mode&1&&!(Bt&2)?(g=I.interleaved,g===null?(p.next=p,mr===null?mr=[I]:mr.push(I)):(p.next=g.next,g.next=p),I.interleaved=p):(g=I.pending,g===null?p.next=p:(p.next=g.next,g.next=p),I.pending=p)}function uG(g,I,p){if(p&4194240){var G=I.lanes;G&=g.pendingLanes,p|=G,I.lanes=p,lp(g,p)}}var wC={readContext:vs,useCallback:ui,useContext:ui,useEffect:ui,useImperativeHandle:ui,useInsertionEffect:ui,useLayoutEffect:ui,useMemo:ui,useReducer:ui,useRef:ui,useState:ui,useDebugValue:ui,useDeferredValue:ui,useTransition:ui,useMutableSource:ui,useSyncExternalStore:ui,useId:ui,unstable_isNewReconciler:!1},xM={readContext:vs,useCallback:function(g,I){return Dr().memoizedState=[g,I===void 0?null:I],g},useContext:vs,useEffect:Np,useImperativeHandle:function(g,I,p){return p=p!=null?p.concat([g]):null,BC(4194308,4,sG.bind(null,I,g),p)},useLayoutEffect:function(g,I){return BC(4194308,4,g,I)},useInsertionEffect:function(g,I){return BC(4,2,g,I)},useMemo:function(g,I){var p=Dr();return I=I===void 0?null:I,g=g(),p.memoizedState=[g,I],g},useReducer:function(g,I,p){var G=Dr();return I=p!==void 0?p(I):I,G.memoizedState=G.baseState=I,g={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:g,lastRenderedState:I},G.queue=g,g=g.dispatch=wM.bind(null,bn,g),[G.memoizedState,g]},useRef:function(g){var I=Dr();return g={current:g},I.memoizedState=g},useState:Mp,useDebugValue:Hp,useDeferredValue:function(g){var I=Mp(g),p=I[0],G=I[1];return Np(function(){var w=Zs.transition;Zs.transition={};try{G(g)}finally{Zs.transition=w}},[g]),p},useTransition:function(){var g=Mp(!1),I=g[0];return g=ZM.bind(null,g[1]),Dr().memoizedState=g,[I,g]},useMutableSource:function(){},useSyncExternalStore:function(g,I,p){var G=bn,w=Dr();if(cn){if(p===void 0)throw Error(o(407));p=p()}else{if(p=I(),Mn===null)throw Error(o(349));Ll&30||jy(G,I,p)}w.memoizedState=p;var W={value:p,getSnapshot:I};return w.queue=W,Np($y.bind(null,G,W,g),[g]),G.flags|=2048,Vc(9,qy.bind(null,G,W,p,I),void 0,null),p},useId:function(){var g=Dr(),I=Mn.identifierPrefix;if(cn){var p=kr,G=Tr;p=(G&~(1<<32-_s(G)-1)).toString(32)+p,I=":"+I+"R"+p,p=Wc++,0Op&&(I.flags|=128,G=!0,Mc(w,!1),I.lanes=4194304)}else{if(!G)if(g=CC(W),g!==null){if(I.flags|=128,G=!0,g=g.updateQueue,g!==null&&(I.updateQueue=g,I.flags|=4),Mc(w,!0),w.tail===null&&w.tailMode==="hidden"&&!W.alternate&&!cn)return ui(I),null}else 2*On()-w.renderingStartTime>Op&&p!==1073741824&&(I.flags|=128,G=!0,Mc(w,!1),I.lanes=4194304);w.isBackwards?(W.sibling=I.child,I.child=W):(g=w.last,g!==null?g.sibling=W:I.child=W,w.last=W)}return w.tail!==null?(I=w.tail,w.rendering=I,w.tail=I.sibling,w.renderingStartTime=On(),I.sibling=null,g=dn.current,At(dn,G?g&1|2:g&1),I):(ui(I),null);case 22:case 23:return em(),G=I.memoizedState!==null,g!==null&&g.memoizedState!==null!==G&&(I.flags|=8192),G&&I.mode&1?ss&1073741824&&(ui(I),Xe&&I.subtreeFlags&6&&(I.flags|=8192)):ui(I),null;case 24:return null;case 25:return null}throw Error(o(156,I.tag))}var BM=a.ReactCurrentOwner,is=!1;function Gi(g,I,p,G){I.child=g===null?Ty(I,null,p,G):Hl(I,g.child,p,G)}function dG(g,I,p,G,w){p=p.render;var W=I.ref;return Wl(I,w),G=wp(g,I,p,G,W,w),p=Sp(),g!==null&&!is?(I.updateQueue=g.updateQueue,I.flags&=-2053,g.lanes&=~w,Ur(g,I,w)):(cn&&p&&Ap(I),I.flags|=1,Gi(g,I,G,w),I.child)}function hG(g,I,p,G,w){if(g===null){var W=p.type;return typeof W=="function"&&!nm(W)&&W.defaultProps===void 0&&p.compare===null&&p.defaultProps===void 0?(I.tag=15,I.type=W,AG(g,I,W,G,w)):(g=kC(p.type,null,G,I,I.mode,w),g.ref=I.ref,g.return=I,I.child=g)}if(W=g.child,!(g.lanes&w)){var z=W.memoizedProps;if(p=p.compare,p=p!==null?p:sC,p(z,G)&&g.ref===I.ref)return Ur(g,I,w)}return I.flags|=1,g=Ro(W,G),g.ref=I.ref,g.return=I,I.child=g}function AG(g,I,p,G,w){if(g!==null&&sC(g.memoizedProps,G)&&g.ref===I.ref)if(is=!1,(g.lanes&w)!==0)g.flags&131072&&(is=!0);else return I.lanes=g.lanes,Ur(g,I,w);return Np(g,I,p,G,w)}function pG(g,I,p){var G=I.pendingProps,w=G.children,W=g!==null?g.memoizedState:null;if(G.mode==="hidden")if(!(I.mode&1))I.memoizedState={baseLanes:0,cachePool:null},At(Kl,ss),ss|=p;else if(p&1073741824)I.memoizedState={baseLanes:0,cachePool:null},G=W!==null?W.baseLanes:p,At(Kl,ss),ss|=G;else return g=W!==null?W.baseLanes|p:p,I.lanes=I.childLanes=1073741824,I.memoizedState={baseLanes:g,cachePool:null},I.updateQueue=null,At(Kl,ss),ss|=g,null;else W!==null?(G=W.baseLanes|p,I.memoizedState=null):G=p,At(Kl,ss),ss|=G;return Gi(g,I,w,p),I.child}function mG(g,I){var p=I.ref;(g===null&&p!==null||g!==null&&g.ref!==p)&&(I.flags|=512,I.flags|=2097152)}function Np(g,I,p,G,w){var W=ni(p)?Us:Vn.current;return W=yo(I,W),Wl(I,w),p=wp(g,I,p,G,W,w),G=Sp(),g!==null&&!is?(I.updateQueue=g.updateQueue,I.flags&=-2053,g.lanes&=~w,Ur(g,I,w)):(cn&&G&&Ap(I),I.flags|=1,Gi(g,I,p,w),I.child)}function fG(g,I,p,G,w){if(ni(p)){var W=!0;qu(I)}else W=!1;if(Wl(I,w),I.stateNode===null)g!==null&&(g.alternate=null,I.alternate=null,I.flags|=2),Ny(I,p,G),hp(I,p,G,w),G=!0;else if(g===null){var z=I.stateNode,Q=I.memoizedProps;z.props=Q;var de=z.context,xe=p.contextType;typeof xe=="object"&&xe!==null?xe=bs(xe):(xe=ni(p)?Us:Vn.current,xe=yo(I,xe));var Ee=p.getDerivedStateFromProps,Ct=typeof Ee=="function"||typeof z.getSnapshotBeforeUpdate=="function";Ct||typeof z.UNSAFE_componentWillReceiveProps!="function"&&typeof z.componentWillReceiveProps!="function"||(Q!==G||de!==xe)&&Hy(I,z,G,xe),Go=!1;var it=I.memoizedState;z.state=it,lC(I,G,z,w),de=I.memoizedState,Q!==G||it!==de||jt.current||Go?(typeof Ee=="function"&&(dp(I,p,Ee,G),de=I.memoizedState),(Q=Go||My(I,p,Q,G,it,de,xe))?(Ct||typeof z.UNSAFE_componentWillMount!="function"&&typeof z.componentWillMount!="function"||(typeof z.componentWillMount=="function"&&z.componentWillMount(),typeof z.UNSAFE_componentWillMount=="function"&&z.UNSAFE_componentWillMount()),typeof z.componentDidMount=="function"&&(I.flags|=4194308)):(typeof z.componentDidMount=="function"&&(I.flags|=4194308),I.memoizedProps=G,I.memoizedState=de),z.props=G,z.state=de,z.context=xe,G=Q):(typeof z.componentDidMount=="function"&&(I.flags|=4194308),G=!1)}else{z=I.stateNode,xy(g,I),Q=I.memoizedProps,xe=I.type===I.elementType?Q:_s(I.type,Q),z.props=xe,Ct=I.pendingProps,it=z.context,de=p.contextType,typeof de=="object"&&de!==null?de=bs(de):(de=ni(p)?Us:Vn.current,de=yo(I,de));var en=p.getDerivedStateFromProps;(Ee=typeof en=="function"||typeof z.getSnapshotBeforeUpdate=="function")||typeof z.UNSAFE_componentWillReceiveProps!="function"&&typeof z.componentWillReceiveProps!="function"||(Q!==Ct||it!==de)&&Hy(I,z,G,de),Go=!1,it=I.memoizedState,z.state=it,lC(I,G,z,w);var Qe=I.memoizedState;Q!==Ct||it!==Qe||jt.current||Go?(typeof en=="function"&&(dp(I,p,en,G),Qe=I.memoizedState),(xe=Go||My(I,p,xe,G,it,Qe,de)||!1)?(Ee||typeof z.UNSAFE_componentWillUpdate!="function"&&typeof z.componentWillUpdate!="function"||(typeof z.componentWillUpdate=="function"&&z.componentWillUpdate(G,Qe,de),typeof z.UNSAFE_componentWillUpdate=="function"&&z.UNSAFE_componentWillUpdate(G,Qe,de)),typeof z.componentDidUpdate=="function"&&(I.flags|=4),typeof z.getSnapshotBeforeUpdate=="function"&&(I.flags|=1024)):(typeof z.componentDidUpdate!="function"||Q===g.memoizedProps&&it===g.memoizedState||(I.flags|=4),typeof z.getSnapshotBeforeUpdate!="function"||Q===g.memoizedProps&&it===g.memoizedState||(I.flags|=1024),I.memoizedProps=G,I.memoizedState=Qe),z.props=G,z.state=Qe,z.context=de,G=xe):(typeof z.componentDidUpdate!="function"||Q===g.memoizedProps&&it===g.memoizedState||(I.flags|=4),typeof z.getSnapshotBeforeUpdate!="function"||Q===g.memoizedProps&&it===g.memoizedState||(I.flags|=1024),G=!1)}return Hp(g,I,p,G,W,w)}function Hp(g,I,p,G,w,W){mG(g,I);var z=(I.flags&128)!==0;if(!G&&!z)return w&&Gy(I,p,!1),Ur(g,I,W);G=I.stateNode,BM.current=I;var Q=z&&typeof p.getDerivedStateFromError!="function"?null:G.render();return I.flags|=1,g!==null&&z?(I.child=Hl(I,g.child,null,W),I.child=Hl(I,null,Q,W)):Gi(g,I,Q,W),I.memoizedState=G.state,w&&Gy(I,p,!0),I.child}function bG(g){var I=g.stateNode;I.pendingContext?vy(g,I.pendingContext,I.pendingContext!==I.context):I.context&&vy(g,I.context,!1),vp(g,I.containerInfo)}function vG(g,I,p,G,w){return Nl(),bp(w),I.flags|=256,Gi(g,I,p,G),I.child}var GC={dehydrated:null,treeContext:null,retryLane:0};function BC(g){return{baseLanes:g,cachePool:null}}function yG(g,I,p){var G=I.pendingProps,w=dn.current,W=!1,z=(I.flags&128)!==0,Q;if((Q=z)||(Q=g!==null&&g.memoizedState===null?!1:(w&2)!==0),Q?(W=!0,I.flags&=-129):(g===null||g.memoizedState!==null)&&(w|=1),At(dn,w&1),g===null)return fp(I),g=I.memoizedState,g!==null&&(g=g.dehydrated,g!==null)?(I.mode&1?mc(g)?I.lanes=8:I.lanes=1073741824:I.lanes=1,null):(w=G.children,g=G.fallback,W?(G=I.mode,W=I.child,w={mode:"hidden",children:w},!(G&1)&&W!==null?(W.childLanes=0,W.pendingProps=w):W=DC(w,G,0,null),g=xa(g,G,p,null),W.return=I,g.return=I,W.sibling=g,I.child=W,I.child.memoizedState=BC(p),I.memoizedState=GC,g):Xp(I,w));if(w=g.memoizedState,w!==null){if(Q=w.dehydrated,Q!==null){if(z)return I.flags&256?(I.flags&=-257,ZC(g,I,p,Error(o(422)))):I.memoizedState!==null?(I.child=g.child,I.flags|=128,null):(W=G.fallback,w=I.mode,G=DC({mode:"visible",children:G.children},w,0,null),W=xa(W,w,p,null),W.flags|=2,G.return=I,W.return=I,G.sibling=W,I.child=G,I.mode&1&&Hl(I,g.child,null,p),I.child.memoizedState=BC(p),I.memoizedState=GC,W);if(!(I.mode&1))I=ZC(g,I,p,null);else if(mc(Q))I=ZC(g,I,p,Error(o(419)));else if(G=(p&g.childLanes)!==0,is||G){if(G=Mn,G!==null){switch(p&-p){case 4:W=2;break;case 16:W=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:W=32;break;case 536870912:W=268435456;break;default:W=0}G=W&(G.suspendedLanes|p)?0:W,G!==0&&G!==w.retryLane&&(w.retryLane=G,Zs(g,G,-1))}tm(),I=ZC(g,I,p,Error(o(421)))}else Qu(Q)?(I.flags|=128,I.child=g.child,I=FM.bind(null,g),tp(Q,I),I=null):(p=w.treeContext,ue&&(ns=ie(Q),ts=I,cn=!0,Js=null,vc=!1,p!==null&&(vs[ys++]=Er,vs[ys++]=kr,vs[ys++]=ba,Er=p.id,kr=p.overflow,ba=I)),I=Xp(I,I.pendingProps.children),I.flags|=4096);return I}return W?(G=BG(g,I,G.children,G.fallback,p),W=I.child,w=g.child.memoizedState,W.memoizedState=w===null?BC(p):{baseLanes:w.baseLanes|p,cachePool:null},W.childLanes=g.childLanes&~p,I.memoizedState=GC,G):(p=GG(g,I,G.children,p),I.memoizedState=null,p)}return W?(G=BG(g,I,G.children,G.fallback,p),W=I.child,w=g.child.memoizedState,W.memoizedState=w===null?BC(p):{baseLanes:w.baseLanes|p,cachePool:null},W.childLanes=g.childLanes&~p,I.memoizedState=GC,G):(p=GG(g,I,G.children,p),I.memoizedState=null,p)}function Xp(g,I){return I=DC({mode:"visible",children:I},g.mode,0,null),I.return=g,g.child=I}function GG(g,I,p,G){var w=g.child;return g=w.sibling,p=Ro(w,{mode:"visible",children:p}),!(I.mode&1)&&(p.lanes=G),p.return=I,p.sibling=null,g!==null&&(G=I.deletions,G===null?(I.deletions=[g],I.flags|=16):G.push(g)),I.child=p}function BG(g,I,p,G,w){var W=I.mode;g=g.child;var z=g.sibling,Q={mode:"hidden",children:p};return!(W&1)&&I.child!==g?(p=I.child,p.childLanes=0,p.pendingProps=Q,I.deletions=null):(p=Ro(g,Q),p.subtreeFlags=g.subtreeFlags&14680064),z!==null?G=Ro(z,G):(G=xa(G,W,w,null),G.flags|=2),G.return=I,p.return=I,p.sibling=G,I.child=p,G}function ZC(g,I,p,G){return G!==null&&bp(G),Hl(I,g.child,null,p),g=Xp(I,I.pendingProps.children),g.flags|=2,I.memoizedState=null,g}function ZG(g,I,p){g.lanes|=I;var G=g.alternate;G!==null&&(G.lanes|=I),up(g.return,I,p)}function Yp(g,I,p,G,w){var W=g.memoizedState;W===null?g.memoizedState={isBackwards:I,rendering:null,renderingStartTime:0,last:G,tail:p,tailMode:w}:(W.isBackwards=I,W.rendering=null,W.renderingStartTime=0,W.last=G,W.tail=p,W.tailMode=w)}function wG(g,I,p){var G=I.pendingProps,w=G.revealOrder,W=G.tail;if(Gi(g,I,G.children,p),G=dn.current,G&2)G=G&1|2,I.flags|=128;else{if(g!==null&&g.flags&128)e:for(g=I.child;g!==null;){if(g.tag===13)g.memoizedState!==null&&ZG(g,p,I);else if(g.tag===19)ZG(g,p,I);else if(g.child!==null){g.child.return=g,g=g.child;continue}if(g===I)break e;for(;g.sibling===null;){if(g.return===null||g.return===I)break e;g=g.return}g.sibling.return=g.return,g=g.sibling}G&=1}if(At(dn,G),!(I.mode&1))I.memoizedState=null;else switch(w){case"forwards":for(p=I.child,w=null;p!==null;)g=p.alternate,g!==null&&CC(g)===null&&(w=p),p=p.sibling;p=w,p===null?(w=I.child,I.child=null):(w=p.sibling,p.sibling=null),Yp(I,!1,w,p,W);break;case"backwards":for(p=null,w=I.child,I.child=null;w!==null;){if(g=w.alternate,g!==null&&CC(g)===null){I.child=w;break}g=w.sibling,w.sibling=p,p=w,w=g}Yp(I,!0,p,null,W);break;case"together":Yp(I,!1,null,null,void 0);break;default:I.memoizedState=null}return I.child}function Ur(g,I,p){if(g!==null&&(I.dependencies=g.dependencies),zl|=I.lanes,!(p&I.childLanes))return null;if(g!==null&&I.child!==g.child)throw Error(o(153));if(I.child!==null){for(g=I.child,p=Ro(g,g.pendingProps),I.child=p,p.return=I;g.sibling!==null;)g=g.sibling,p=p.sibling=Ro(g,g.pendingProps),p.return=I;p.sibling=null}return I.child}function ZM(g,I,p){switch(I.tag){case 3:bG(I),Nl();break;case 5:Ey(I);break;case 1:ni(I.type)&&qu(I);break;case 4:vp(I,I.stateNode.containerInfo);break;case 10:Sy(I,I.type._context,I.memoizedProps.value);break;case 13:var G=I.memoizedState;if(G!==null)return G.dehydrated!==null?(At(dn,dn.current&1),I.flags|=128,null):p&I.child.childLanes?yG(g,I,p):(At(dn,dn.current&1),g=Ur(g,I,p),g!==null?g.sibling:null);At(dn,dn.current&1);break;case 19:if(G=(p&I.childLanes)!==0,g.flags&128){if(G)return wG(g,I,p);I.flags|=128}var w=I.memoizedState;if(w!==null&&(w.rendering=null,w.tail=null,w.lastEffect=null),At(dn,dn.current),G)break;return null;case 22:case 23:return I.lanes=0,pG(g,I,p)}return Ur(g,I,p)}function wM(g,I){switch(pp(I),I.tag){case 1:return ni(I.type)&&ju(),g=I.flags,g&65536?(I.flags=g&-65537|128,I):null;case 3:return Yl(),Ot(jt),Ot(Vn),Bp(),g=I.flags,g&65536&&!(g&128)?(I.flags=g&-65537|128,I):null;case 5:return yp(I),null;case 13:if(Ot(dn),g=I.memoizedState,g!==null&&g.dehydrated!==null){if(I.alternate===null)throw Error(o(340));Nl()}return g=I.flags,g&65536?(I.flags=g&-65537|128,I):null;case 19:return Ot(dn),null;case 4:return Yl(),null;case 10:return Ip(I.type._context),null;case 22:case 23:return em(),null;case 24:return null;default:return null}}var wC=!1,Ga=!1,SM=typeof WeakSet=="function"?WeakSet:Set,Ne=null;function SC(g,I){var p=g.ref;if(p!==null)if(typeof p=="function")try{p(null)}catch(G){Fi(g,I,G)}else p.current=null}function Fp(g,I,p){try{p()}catch(G){Fi(g,I,G)}}var SG=!1;function xM(g,I){for(J(g.containerInfo),Ne=I;Ne!==null;)if(g=Ne,I=g.child,(g.subtreeFlags&1028)!==0&&I!==null)I.return=g,Ne=I;else for(;Ne!==null;){g=Ne;try{var p=g.alternate;if(g.flags&1024)switch(g.tag){case 0:case 11:case 15:break;case 1:if(p!==null){var G=p.memoizedProps,w=p.memoizedState,W=g.stateNode,z=W.getSnapshotBeforeUpdate(g.elementType===g.type?G:_s(g.type,G),w);W.__reactInternalSnapshotBeforeUpdate=z}break;case 3:Xe&&Ye(g.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;default:throw Error(o(163))}}catch(Q){Fi(g,g.return,Q)}if(I=g.sibling,I!==null){I.return=g.return,Ne=I;break}Ne=g.return}return p=SG,SG=!1,p}function Ba(g,I,p){var G=I.updateQueue;if(G=G!==null?G.lastEffect:null,G!==null){var w=G=G.next;do{if((w.tag&g)===g){var W=w.destroy;w.destroy=void 0,W!==void 0&&Fp(I,p,W)}w=w.next}while(w!==G)}}function Nc(g,I){if(I=I.updateQueue,I=I!==null?I.lastEffect:null,I!==null){var p=I=I.next;do{if((p.tag&g)===g){var G=p.create;p.destroy=G()}p=p.next}while(p!==I)}}function Kp(g){var I=g.ref;if(I!==null){var p=g.stateNode;switch(g.tag){case 5:g=Ce(p);break;default:g=p}typeof I=="function"?I(g):I.current=g}}function xG(g,I,p){if(hr&&typeof hr.onCommitFiberUnmount=="function")try{hr.onCommitFiberUnmount(nC,I)}catch{}switch(I.tag){case 0:case 11:case 14:case 15:if(g=I.updateQueue,g!==null&&(g=g.lastEffect,g!==null)){var G=g=g.next;do{var w=G,W=w.destroy;w=w.tag,W!==void 0&&(w&2||w&4)&&Fp(I,p,W),G=G.next}while(G!==g)}break;case 1:if(SC(I,p),g=I.stateNode,typeof g.componentWillUnmount=="function")try{g.props=I.memoizedProps,g.state=I.memoizedState,g.componentWillUnmount()}catch(z){Fi(I,p,z)}break;case 5:SC(I,p);break;case 4:Xe?HG(g,I,p):fe&&fe&&(I=I.stateNode.containerInfo,p=Dt(I),Es(I,p))}}function RG(g,I,p){for(var G=I;;)if(xG(g,G,p),G.child===null||Xe&&G.tag===4){if(G===I)break;for(;G.sibling===null;){if(G.return===null||G.return===I)return;G=G.return}G.sibling.return=G.return,G=G.sibling}else G.child.return=G,G=G.child}function WG(g){var I=g.alternate;I!==null&&(g.alternate=null,WG(I)),g.child=null,g.deletions=null,g.sibling=null,g.tag===5&&(I=g.stateNode,I!==null&&st(I)),g.stateNode=null,g.return=null,g.dependencies=null,g.memoizedProps=null,g.memoizedState=null,g.pendingProps=null,g.stateNode=null,g.updateQueue=null}function VG(g){return g.tag===5||g.tag===3||g.tag===4}function MG(g){e:for(;;){for(;g.sibling===null;){if(g.return===null||VG(g.return))return null;g=g.return}for(g.sibling.return=g.return,g=g.sibling;g.tag!==5&&g.tag!==6&&g.tag!==18;){if(g.flags&2||g.child===null||g.tag===4)continue e;g.child.return=g,g=g.child}if(!(g.flags&2))return g.stateNode}}function NG(g){if(Xe){e:{for(var I=g.return;I!==null;){if(VG(I))break e;I=I.return}throw Error(o(160))}var p=I;switch(p.tag){case 5:I=p.stateNode,p.flags&32&&(Et(I),p.flags&=-33),p=MG(g),Lp(g,p,I);break;case 3:case 4:I=p.stateNode.containerInfo,p=MG(g),zp(g,p,I);break;default:throw Error(o(161))}}}function zp(g,I,p){var G=g.tag;if(G===5||G===6)g=g.stateNode,I?Te(p,g,I):Ke(p,g);else if(G!==4&&(g=g.child,g!==null))for(zp(g,I,p),g=g.sibling;g!==null;)zp(g,I,p),g=g.sibling}function Lp(g,I,p){var G=g.tag;if(G===5||G===6)g=g.stateNode,I?ot(p,g,I):gt(p,g);else if(G!==4&&(g=g.child,g!==null))for(Lp(g,I,p),g=g.sibling;g!==null;)Lp(g,I,p),g=g.sibling}function HG(g,I,p){for(var G=I,w=!1,W,z;;){if(!w){w=G.return;e:for(;;){if(w===null)throw Error(o(160));switch(W=w.stateNode,w.tag){case 5:z=!1;break e;case 3:W=W.containerInfo,z=!0;break e;case 4:W=W.containerInfo,z=!0;break e}w=w.return}w=!0}if(G.tag===5||G.tag===6)RG(g,G,p),z?Wt(W,G.stateNode):Oe(W,G.stateNode);else if(G.tag===18)z?wt(W,G.stateNode):Gt(W,G.stateNode);else if(G.tag===4){if(G.child!==null){W=G.stateNode.containerInfo,z=!0,G.child.return=G,G=G.child;continue}}else if(xG(g,G,p),G.child!==null){G.child.return=G,G=G.child;continue}if(G===I)break;for(;G.sibling===null;){if(G.return===null||G.return===I)return;G=G.return,G.tag===4&&(w=!1)}G.sibling.return=G.return,G=G.sibling}}function Tp(g,I){if(Xe){switch(I.tag){case 0:case 11:case 14:case 15:Ba(3,I,I.return),Nc(3,I),Ba(5,I,I.return);return;case 1:return;case 5:var p=I.stateNode;if(p!=null){var G=I.memoizedProps;g=g!==null?g.memoizedProps:G;var w=I.type,W=I.updateQueue;I.updateQueue=null,W!==null&&$e(p,W,w,g,G,I)}return;case 6:if(I.stateNode===null)throw Error(o(162));p=I.memoizedProps,pe(I.stateNode,g!==null?g.memoizedProps:p,p);return;case 3:ue&&g!==null&&g.memoizedState.isDehydrated&&ht(I.stateNode.containerInfo);return;case 12:return;case 13:xC(I);return;case 19:xC(I);return;case 17:return}throw Error(o(163))}switch(I.tag){case 0:case 11:case 14:case 15:Ba(3,I,I.return),Nc(3,I),Ba(5,I,I.return);return;case 12:return;case 13:xC(I);return;case 19:xC(I);return;case 3:ue&&g!==null&&g.memoizedState.isDehydrated&&ht(I.stateNode.containerInfo);break;case 22:case 23:return}e:if(fe){switch(I.tag){case 1:case 5:case 6:break e;case 3:case 4:I=I.stateNode,Es(I.containerInfo,I.pendingChildren);break e}throw Error(o(163))}}function xC(g){var I=g.updateQueue;if(I!==null){g.updateQueue=null;var p=g.stateNode;p===null&&(p=g.stateNode=new SM),I.forEach(function(G){var w=KM.bind(null,g,G);p.has(G)||(p.add(G),G.then(w,w))})}}function RM(g,I){for(Ne=I;Ne!==null;){I=Ne;var p=I.deletions;if(p!==null)for(var G=0;G";case WC:return":has("+(Dp(g)||"")+")";case VC:return'[role="'+g.value+'"]';case NC:return'"'+g.value+'"';case MC:return'[data-testname="'+g.value+'"]';default:throw Error(o(365))}}function zG(g,I){var p=[];g=[g,0];for(var G=0;Gw&&(w=z),G&=~W}if(G=w,G=On()-G,G=(120>G?120:480>G?480:1080>G?1080:1920>G?1920:3e3>G?3e3:4320>G?4320:1960*VM(G/1960))-G,10g?16:g,wo===null)var G=!1;else{if(g=wo,wo=null,KC=0,Bt&6)throw Error(o(331));var w=Bt;for(Bt|=4,Ne=g.current;Ne!==null;){var W=Ne,z=W.child;if(Ne.flags&16){var Q=W.deletions;if(Q!==null){for(var de=0;deOn()-Jp?Za(g,0):_p|=p),Yi(g,I)}function JG(g,I){I===0&&(g.mode&1?(I=eC,eC<<=1,!(eC&130023424)&&(eC=4194304)):I=1);var p=Bi();g=TC(g,I),g!==null&&(bc(g,I,p),Yi(g,p))}function FM(g){var I=g.memoizedState,p=0;I!==null&&(p=I.retryLane),JG(g,p)}function KM(g,I){var p=0;switch(g.tag){case 13:var G=g.stateNode,w=g.memoizedState;w!==null&&(p=w.retryLane);break;case 19:G=g.stateNode;break;default:throw Error(o(314))}G!==null&&G.delete(I),JG(g,p)}var OG;OG=function(g,I,p){if(g!==null)if(g.memoizedProps!==I.pendingProps||jt.current)is=!0;else{if(!(g.lanes&p)&&!(I.flags&128))return is=!1,ZM(g,I,p);is=!!(g.flags&131072)}else is=!1,cn&&I.flags&1048576&&Xy(I,IC,I.index);switch(I.lanes=0,I.tag){case 2:var G=I.type;g!==null&&(g.alternate=null,I.alternate=null,I.flags|=2),g=I.pendingProps;var w=yo(I,Vn.current);Wl(I,p),w=wp(null,I,G,g,w,p);var W=Sp();return I.flags|=1,typeof w=="object"&&w!==null&&typeof w.render=="function"&&w.$$typeof===void 0?(I.tag=1,I.memoizedState=null,I.updateQueue=null,ni(G)?(W=!0,qu(I)):W=!1,I.memoizedState=w.state!==null&&w.state!==void 0?w.state:null,Cp(I),w.updater=gC,I.stateNode=w,w._reactInternals=I,hp(I,G,g,p),I=Hp(null,I,G,!0,W,p)):(I.tag=0,cn&&W&&Ap(I),Gi(null,I,w,p),I=I.child),I;case 16:G=I.elementType;e:{switch(g!==null&&(g.alternate=null,I.alternate=null,I.flags|=2),g=I.pendingProps,w=G._init,G=w(G._payload),I.type=G,w=I.tag=LM(G),g=_s(G,g),w){case 0:I=Np(null,I,G,g,p);break e;case 1:I=fG(null,I,G,g,p);break e;case 11:I=dG(null,I,G,g,p);break e;case 14:I=hG(null,I,G,_s(G.type,g),p);break e}throw Error(o(306,G,""))}return I;case 0:return G=I.type,w=I.pendingProps,w=I.elementType===G?w:_s(G,w),Np(g,I,G,w,p);case 1:return G=I.type,w=I.pendingProps,w=I.elementType===G?w:_s(G,w),fG(g,I,G,w,p);case 3:e:{if(bG(I),g===null)throw Error(o(387));G=I.pendingProps,W=I.memoizedState,w=W.element,xy(g,I),lC(I,G,null,p);var z=I.memoizedState;if(G=z.element,ue&&W.isDehydrated)if(W={element:G,isDehydrated:!1,cache:z.cache,transitions:z.transitions},I.updateQueue.baseState=W,I.memoizedState=W,I.flags&256){w=Error(o(423)),I=vG(g,I,G,p,w);break e}else if(G!==w){w=Error(o(424)),I=vG(g,I,G,p,w);break e}else for(ue&&(ns=Ae(I.stateNode.containerInfo),ts=I,cn=!0,Js=null,vc=!1),p=Ty(I,null,G,p),I.child=p;p;)p.flags=p.flags&-3|4096,p=p.sibling;else{if(Nl(),G===w){I=Ur(g,I,p);break e}Gi(g,I,G,p)}I=I.child}return I;case 5:return Ey(I),g===null&&fp(I),G=I.type,w=I.pendingProps,W=g!==null?g.memoizedProps:null,z=w.children,ve(G,w)?z=null:W!==null&&ve(G,W)&&(I.flags|=32),mG(g,I),Gi(g,I,z,p),I.child;case 6:return g===null&&fp(I),null;case 13:return yG(g,I,p);case 4:return vp(I,I.stateNode.containerInfo),G=I.pendingProps,g===null?I.child=Hl(I,null,G,p):Gi(g,I,G,p),I.child;case 11:return G=I.type,w=I.pendingProps,w=I.elementType===G?w:_s(G,w),dG(g,I,G,w,p);case 7:return Gi(g,I,I.pendingProps,p),I.child;case 8:return Gi(g,I,I.pendingProps.children,p),I.child;case 12:return Gi(g,I,I.pendingProps.children,p),I.child;case 10:e:{if(G=I.type._context,w=I.pendingProps,W=I.memoizedProps,z=w.value,Sy(I,G,z),W!==null)if(Ar(W.value,z)){if(W.children===w.children&&!jt.current){I=Ur(g,I,p);break e}}else for(W=I.child,W!==null&&(W.return=I);W!==null;){var Q=W.dependencies;if(Q!==null){z=W.child;for(var de=Q.firstContext;de!==null;){if(de.context===G){if(W.tag===1){de=Tr(-1,p&-p),de.tag=2;var xe=W.updateQueue;if(xe!==null){xe=xe.shared;var Ee=xe.pending;Ee===null?de.next=de:(de.next=Ee.next,Ee.next=de),xe.pending=de}}W.lanes|=p,de=W.alternate,de!==null&&(de.lanes|=p),up(W.return,p,I),Q.lanes|=p;break}de=de.next}}else if(W.tag===10)z=W.type===I.type?null:W.child;else if(W.tag===18){if(z=W.return,z===null)throw Error(o(341));z.lanes|=p,Q=z.alternate,Q!==null&&(Q.lanes|=p),up(z,p,I),z=W.sibling}else z=W.child;if(z!==null)z.return=W;else for(z=W;z!==null;){if(z===I){z=null;break}if(W=z.sibling,W!==null){W.return=z.return,z=W;break}z=z.return}W=z}Gi(g,I,w.children,p),I=I.child}return I;case 9:return w=I.type,G=I.pendingProps.children,Wl(I,p),w=bs(w),G=G(w),I.flags|=1,Gi(g,I,G,p),I.child;case 14:return G=I.type,w=_s(G,I.pendingProps),w=_s(G.type,w),hG(g,I,G,w,p);case 15:return AG(g,I,I.type,I.pendingProps,p);case 17:return G=I.type,w=I.pendingProps,w=I.elementType===G?w:_s(G,w),g!==null&&(g.alternate=null,I.alternate=null,I.flags|=2),I.tag=1,ni(G)?(g=!0,qu(I)):g=!1,Wl(I,p),Ny(I,G,w),hp(I,G,w,p),Hp(null,I,G,!0,g,p);case 19:return wG(g,I,p);case 22:return pG(g,I,p)}throw Error(o(156,I.tag))};function QG(g,I){return rp(g,I)}function zM(g,I,p,G){this.tag=g,this.key=p,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=I,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=G,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ws(g,I,p,G){return new zM(g,I,p,G)}function nm(g){return g=g.prototype,!(!g||!g.isReactComponent)}function LM(g){if(typeof g=="function")return nm(g)?1:0;if(g!=null){if(g=g.$$typeof,g===v)return 11;if(g===b)return 14}return 2}function Ro(g,I){var p=g.alternate;return p===null?(p=ws(g.tag,I,g.key,g.mode),p.elementType=g.elementType,p.type=g.type,p.stateNode=g.stateNode,p.alternate=g,g.alternate=p):(p.pendingProps=I,p.type=g.type,p.flags=0,p.subtreeFlags=0,p.deletions=null),p.flags=g.flags&14680064,p.childLanes=g.childLanes,p.lanes=g.lanes,p.child=g.child,p.memoizedProps=g.memoizedProps,p.memoizedState=g.memoizedState,p.updateQueue=g.updateQueue,I=g.dependencies,p.dependencies=I===null?null:{lanes:I.lanes,firstContext:I.firstContext},p.sibling=g.sibling,p.index=g.index,p.ref=g.ref,p}function kC(g,I,p,G,w,W){var z=2;if(G=g,typeof g=="function")nm(g)&&(z=1);else if(typeof g=="string")z=5;else e:switch(g){case u:return xa(p.children,w,W,I);case C:z=8,w|=8;break;case d:return g=ws(12,p,I,w|2),g.elementType=d,g.lanes=W,g;case y:return g=ws(13,p,I,w),g.elementType=y,g.lanes=W,g;case A:return g=ws(19,p,I,w),g.elementType=A,g.lanes=W,g;case B:return DC(p,w,W,I);default:if(typeof g=="object"&&g!==null)switch(g.$$typeof){case h:z=10;break e;case m:z=9;break e;case v:z=11;break e;case b:z=14;break e;case f:z=16,G=null;break e}throw Error(o(130,g==null?g:typeof g,""))}return I=ws(z,p,I,w),I.elementType=g,I.type=G,I.lanes=W,I}function xa(g,I,p,G){return g=ws(7,g,G,I),g.lanes=p,g}function DC(g,I,p,G){return g=ws(22,g,G,I),g.elementType=B,g.lanes=p,g.stateNode={},g}function im(g,I,p){return g=ws(6,g,null,I),g.lanes=p,g}function sm(g,I,p){return I=ws(4,g.children!==null?g.children:[],g.key,I),I.lanes=p,I.stateNode={containerInfo:g.containerInfo,pendingChildren:null,implementation:g.implementation},I}function TM(g,I,p,G,w){this.tag=I,this.containerInfo=g,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=lt,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=ip(0),this.expirationTimes=ip(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ip(0),this.identifierPrefix=G,this.onRecoverableError=w,ue&&(this.mutableSourceEagerHydrationData=null)}function jG(g,I,p,G,w,W,z,Q,de){return g=new TM(g,I,p,Q,de),I===1?(I=1,W===!0&&(I|=8)):I=0,W=ws(3,null,null,I),g.current=W,W.stateNode=g,W.memoizedState={element:G,isDehydrated:p,cache:null,transitions:null},Cp(W),g}function qG(g){if(!g)return gi;g=g._reactInternals;e:{if(Z(g)!==g||g.tag!==1)throw Error(o(170));var I=g;do{switch(I.tag){case 3:I=I.stateNode.context;break e;case 1:if(ni(I.type)){I=I.stateNode.__reactInternalMemoizedMergedChildContext;break e}}I=I.return}while(I!==null);throw Error(o(171))}if(g.tag===1){var p=g.type;if(ni(p))return yy(g,p,I)}return I}function $G(g){var I=g._reactInternals;if(I===void 0)throw typeof g.render=="function"?Error(o(188)):(g=Object.keys(g).join(","),Error(o(268,g)));return g=D(I),g===null?null:g.stateNode}function eB(g,I){if(g=g.memoizedState,g!==null&&g.dehydrated!==null){var p=g.retryLane;g.retryLane=p!==0&&p=xe&&W>=Ct&&w<=Ee&&z<=it){g.splice(I,1);break}else if(G!==xe||p.width!==de.width||itz){if(!(W!==Ct||p.height!==de.height||Eew)){xe>G&&(de.width+=xe-G,de.x=G),EeW&&(de.height+=Ct-W,de.y=W),itp&&(p=z)),z$p&&(I.flags|=128,G=!0,Xc(w,!1),I.lanes=4194304)}else{if(!G)if(g=fC(W),g!==null){if(I.flags|=128,G=!0,g=g.updateQueue,g!==null&&(I.updateQueue=g,I.flags|=4),Xc(w,!0),w.tail===null&&w.tailMode==="hidden"&&!W.alternate&&!cn)return Ci(I),null}else 2*Qn()-w.renderingStartTime>$p&&p!==1073741824&&(I.flags|=128,G=!0,Xc(w,!1),I.lanes=4194304);w.isBackwards?(W.sibling=I.child,I.child=W):(g=w.last,g!==null?g.sibling=W:I.child=W,w.last=W)}return w.tail!==null?(I=w.tail,w.rendering=I,w.tail=I.sibling,w.renderingStartTime=Qn(),I.sibling=null,g=dn.current,At(dn,G?g&1|2:g&1),I):(Ci(I),null);case 22:case 23:return sm(),G=I.memoizedState!==null,g!==null&&g.memoizedState!==null!==G&&(I.flags|=8192),G&&I.mode&1?rs&1073741824&&(Ci(I),Xe&&I.subtreeFlags&6&&(I.flags|=8192)):Ci(I),null;case 24:return null;case 25:return null}throw Error(o(156,I.tag))}var NM=a.ReactCurrentOwner,ss=!1;function Bi(g,I,p,G){I.child=g===null?_y(I,null,p,G):Fl(I,g.child,p,G)}function bG(g,I,p,G,w){p=p.render;var W=I.ref;return Nl(I,w),G=Wp(g,I,p,G,W,w),p=Vp(),g!==null&&!ss?(I.updateQueue=g.updateQueue,I.flags&=-2053,g.lanes&=~w,Ur(g,I,w)):(cn&&p&&bp(I),I.flags|=1,Bi(g,I,G,w),I.child)}function vG(g,I,p,G,w){if(g===null){var W=p.type;return typeof W=="function"&&!om(W)&&W.defaultProps===void 0&&p.compare===null&&p.defaultProps===void 0?(I.tag=15,I.type=W,yG(g,I,W,G,w)):(g=OC(p.type,null,G,I,I.mode,w),g.ref=I.ref,g.return=I,I.child=g)}if(W=g.child,!(g.lanes&w)){var z=W.memoizedProps;if(p=p.compare,p=p!==null?p:cC,p(z,G)&&g.ref===I.ref)return Ur(g,I,w)}return I.flags|=1,g=Ro(W,G),g.ref=I.ref,g.return=I,I.child=g}function yG(g,I,p,G,w){if(g!==null&&cC(g.memoizedProps,G)&&g.ref===I.ref)if(ss=!1,(g.lanes&w)!==0)g.flags&131072&&(ss=!0);else return I.lanes=g.lanes,Ur(g,I,w);return Fp(g,I,p,G,w)}function GG(g,I,p){var G=I.pendingProps,w=G.children,W=g!==null?g.memoizedState:null;if(G.mode==="hidden")if(!(I.mode&1))I.memoizedState={baseLanes:0,cachePool:null},At(El,rs),rs|=p;else if(p&1073741824)I.memoizedState={baseLanes:0,cachePool:null},G=W!==null?W.baseLanes:p,At(El,rs),rs|=G;else return g=W!==null?W.baseLanes|p:p,I.lanes=I.childLanes=1073741824,I.memoizedState={baseLanes:g,cachePool:null},I.updateQueue=null,At(El,rs),rs|=g,null;else W!==null?(G=W.baseLanes|p,I.memoizedState=null):G=p,At(El,rs),rs|=G;return Bi(g,I,w,p),I.child}function BG(g,I){var p=I.ref;(g===null&&p!==null||g!==null&&g.ref!==p)&&(I.flags|=512,I.flags|=2097152)}function Fp(g,I,p,G,w){var W=ii(p)?Ps:Vn.current;return W=yo(I,W),Nl(I,w),p=Wp(g,I,p,G,W,w),G=Vp(),g!==null&&!ss?(I.updateQueue=g.updateQueue,I.flags&=-2053,g.lanes&=~w,Ur(g,I,w)):(cn&&G&&bp(I),I.flags|=1,Bi(g,I,p,w),I.child)}function ZG(g,I,p,G,w){if(ii(p)){var W=!0;sC(I)}else W=!1;if(Nl(I,w),I.stateNode===null)g!==null&&(g.alternate=null,I.alternate=null,I.flags|=2),zy(I,p,G),fp(I,p,G,w),G=!0;else if(g===null){var z=I.stateNode,Q=I.memoizedProps;z.props=Q;var de=z.context,xe=p.contextType;typeof xe=="object"&&xe!==null?xe=vs(xe):(xe=ii(p)?Ps:Vn.current,xe=yo(I,xe));var Te=p.getDerivedStateFromProps,Ct=typeof Te=="function"||typeof z.getSnapshotBeforeUpdate=="function";Ct||typeof z.UNSAFE_componentWillReceiveProps!="function"&&typeof z.componentWillReceiveProps!="function"||(Q!==G||de!==xe)&&Ly(I,z,G,xe),Go=!1;var it=I.memoizedState;z.state=it,dC(I,G,z,w),de=I.memoizedState,Q!==G||it!==de||jt.current||Go?(typeof Te=="function"&&(mp(I,p,Te,G),de=I.memoizedState),(Q=Go||Ky(I,p,Q,G,it,de,xe))?(Ct||typeof z.UNSAFE_componentWillMount!="function"&&typeof z.componentWillMount!="function"||(typeof z.componentWillMount=="function"&&z.componentWillMount(),typeof z.UNSAFE_componentWillMount=="function"&&z.UNSAFE_componentWillMount()),typeof z.componentDidMount=="function"&&(I.flags|=4194308)):(typeof z.componentDidMount=="function"&&(I.flags|=4194308),I.memoizedProps=G,I.memoizedState=de),z.props=G,z.state=de,z.context=xe,G=Q):(typeof z.componentDidMount=="function"&&(I.flags|=4194308),G=!1)}else{z=I.stateNode,Hy(g,I),Q=I.memoizedProps,xe=I.type===I.elementType?Q:Js(I.type,Q),z.props=xe,Ct=I.pendingProps,it=z.context,de=p.contextType,typeof de=="object"&&de!==null?de=vs(de):(de=ii(p)?Ps:Vn.current,de=yo(I,de));var en=p.getDerivedStateFromProps;(Te=typeof en=="function"||typeof z.getSnapshotBeforeUpdate=="function")||typeof z.UNSAFE_componentWillReceiveProps!="function"&&typeof z.componentWillReceiveProps!="function"||(Q!==Ct||it!==de)&&Ly(I,z,G,de),Go=!1,it=I.memoizedState,z.state=it,dC(I,G,z,w);var Qe=I.memoizedState;Q!==Ct||it!==Qe||jt.current||Go?(typeof en=="function"&&(mp(I,p,en,G),Qe=I.memoizedState),(xe=Go||Ky(I,p,xe,G,it,Qe,de)||!1)?(Te||typeof z.UNSAFE_componentWillUpdate!="function"&&typeof z.componentWillUpdate!="function"||(typeof z.componentWillUpdate=="function"&&z.componentWillUpdate(G,Qe,de),typeof z.UNSAFE_componentWillUpdate=="function"&&z.UNSAFE_componentWillUpdate(G,Qe,de)),typeof z.componentDidUpdate=="function"&&(I.flags|=4),typeof z.getSnapshotBeforeUpdate=="function"&&(I.flags|=1024)):(typeof z.componentDidUpdate!="function"||Q===g.memoizedProps&&it===g.memoizedState||(I.flags|=4),typeof z.getSnapshotBeforeUpdate!="function"||Q===g.memoizedProps&&it===g.memoizedState||(I.flags|=1024),I.memoizedProps=G,I.memoizedState=Qe),z.props=G,z.state=Qe,z.context=de,G=xe):(typeof z.componentDidUpdate!="function"||Q===g.memoizedProps&&it===g.memoizedState||(I.flags|=4),typeof z.getSnapshotBeforeUpdate!="function"||Q===g.memoizedProps&&it===g.memoizedState||(I.flags|=1024),G=!1)}return Kp(g,I,p,G,W,w)}function Kp(g,I,p,G,w,W){BG(g,I);var z=(I.flags&128)!==0;if(!G&&!z)return w&&Ry(I,p,!1),Ur(g,I,W);G=I.stateNode,NM.current=I;var Q=z&&typeof p.getDerivedStateFromError!="function"?null:G.render();return I.flags|=1,g!==null&&z?(I.child=Fl(I,g.child,null,W),I.child=Fl(I,null,Q,W)):Bi(g,I,Q,W),I.memoizedState=G.state,w&&Ry(I,p,!0),I.child}function wG(g){var I=g.stateNode;I.pendingContext?Sy(g,I.pendingContext,I.pendingContext!==I.context):I.context&&Sy(g,I.context,!1),Zp(g,I.containerInfo)}function SG(g,I,p,G,w){return Yl(),Bp(w),I.flags|=256,Bi(g,I,p,G),I.child}var RC={dehydrated:null,treeContext:null,retryLane:0};function WC(g){return{baseLanes:g,cachePool:null}}function xG(g,I,p){var G=I.pendingProps,w=dn.current,W=!1,z=(I.flags&128)!==0,Q;if((Q=z)||(Q=g!==null&&g.memoizedState===null?!1:(w&2)!==0),Q?(W=!0,I.flags&=-129):(g===null||g.memoizedState!==null)&&(w|=1),At(dn,w&1),g===null)return Gp(I),g=I.memoizedState,g!==null&&(g=g.dehydrated,g!==null)?(I.mode&1?vc(g)?I.lanes=8:I.lanes=1073741824:I.lanes=1,null):(w=G.children,g=G.fallback,W?(G=I.mode,W=I.child,w={mode:"hidden",children:w},!(G&1)&&W!==null?(W.childLanes=0,W.pendingProps=w):W=QC(w,G,0,null),g=Wa(g,G,p,null),W.return=I,g.return=I,W.sibling=g,I.child=W,I.child.memoizedState=WC(p),I.memoizedState=RC,g):zp(I,w));if(w=g.memoizedState,w!==null){if(Q=w.dehydrated,Q!==null){if(z)return I.flags&256?(I.flags&=-257,VC(g,I,p,Error(o(422)))):I.memoizedState!==null?(I.child=g.child,I.flags|=128,null):(W=G.fallback,w=I.mode,G=QC({mode:"visible",children:G.children},w,0,null),W=Wa(W,w,p,null),W.flags|=2,G.return=I,W.return=I,G.sibling=W,I.child=G,I.mode&1&&Fl(I,g.child,null,p),I.child.memoizedState=WC(p),I.memoizedState=RC,W);if(!(I.mode&1))I=VC(g,I,p,null);else if(vc(Q))I=VC(g,I,p,Error(o(419)));else if(G=(p&g.childLanes)!==0,ss||G){if(G=Mn,G!==null){switch(p&-p){case 4:W=2;break;case 16:W=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:W=32;break;case 536870912:W=268435456;break;default:W=0}G=W&(G.suspendedLanes|p)?0:W,G!==0&&G!==w.retryLane&&(w.retryLane=G,ws(g,G,-1))}rm(),I=VC(g,I,p,Error(o(421)))}else nC(Q)?(I.flags|=128,I.child=g.child,I=PM.bind(null,g),rp(Q,I),I=null):(p=w.treeContext,ue&&(is=ie(Q),ns=I,cn=!0,Os=null,Bc=!1,p!==null&&(ys[Gs++]=Tr,ys[Gs++]=kr,ys[Gs++]=ya,Tr=p.id,kr=p.overflow,ya=I)),I=zp(I,I.pendingProps.children),I.flags|=4096);return I}return W?(G=WG(g,I,G.children,G.fallback,p),W=I.child,w=g.child.memoizedState,W.memoizedState=w===null?WC(p):{baseLanes:w.baseLanes|p,cachePool:null},W.childLanes=g.childLanes&~p,I.memoizedState=RC,G):(p=RG(g,I,G.children,p),I.memoizedState=null,p)}return W?(G=WG(g,I,G.children,G.fallback,p),W=I.child,w=g.child.memoizedState,W.memoizedState=w===null?WC(p):{baseLanes:w.baseLanes|p,cachePool:null},W.childLanes=g.childLanes&~p,I.memoizedState=RC,G):(p=RG(g,I,G.children,p),I.memoizedState=null,p)}function zp(g,I){return I=QC({mode:"visible",children:I},g.mode,0,null),I.return=g,g.child=I}function RG(g,I,p,G){var w=g.child;return g=w.sibling,p=Ro(w,{mode:"visible",children:p}),!(I.mode&1)&&(p.lanes=G),p.return=I,p.sibling=null,g!==null&&(G=I.deletions,G===null?(I.deletions=[g],I.flags|=16):G.push(g)),I.child=p}function WG(g,I,p,G,w){var W=I.mode;g=g.child;var z=g.sibling,Q={mode:"hidden",children:p};return!(W&1)&&I.child!==g?(p=I.child,p.childLanes=0,p.pendingProps=Q,I.deletions=null):(p=Ro(g,Q),p.subtreeFlags=g.subtreeFlags&14680064),z!==null?G=Ro(z,G):(G=Wa(G,W,w,null),G.flags|=2),G.return=I,p.return=I,p.sibling=G,I.child=p,G}function VC(g,I,p,G){return G!==null&&Bp(G),Fl(I,g.child,null,p),g=zp(I,I.pendingProps.children),g.flags|=2,I.memoizedState=null,g}function VG(g,I,p){g.lanes|=I;var G=g.alternate;G!==null&&(G.lanes|=I),Ap(g.return,I,p)}function Lp(g,I,p,G,w){var W=g.memoizedState;W===null?g.memoizedState={isBackwards:I,rendering:null,renderingStartTime:0,last:G,tail:p,tailMode:w}:(W.isBackwards=I,W.rendering=null,W.renderingStartTime=0,W.last=G,W.tail=p,W.tailMode=w)}function MG(g,I,p){var G=I.pendingProps,w=G.revealOrder,W=G.tail;if(Bi(g,I,G.children,p),G=dn.current,G&2)G=G&1|2,I.flags|=128;else{if(g!==null&&g.flags&128)e:for(g=I.child;g!==null;){if(g.tag===13)g.memoizedState!==null&&VG(g,p,I);else if(g.tag===19)VG(g,p,I);else if(g.child!==null){g.child.return=g,g=g.child;continue}if(g===I)break e;for(;g.sibling===null;){if(g.return===null||g.return===I)break e;g=g.return}g.sibling.return=g.return,g=g.sibling}G&=1}if(At(dn,G),!(I.mode&1))I.memoizedState=null;else switch(w){case"forwards":for(p=I.child,w=null;p!==null;)g=p.alternate,g!==null&&fC(g)===null&&(w=p),p=p.sibling;p=w,p===null?(w=I.child,I.child=null):(w=p.sibling,p.sibling=null),Lp(I,!1,w,p,W);break;case"backwards":for(p=null,w=I.child,I.child=null;w!==null;){if(g=w.alternate,g!==null&&fC(g)===null){I.child=w;break}g=w.sibling,w.sibling=p,p=w,w=g}Lp(I,!0,p,null,W);break;case"together":Lp(I,!1,null,null,void 0);break;default:I.memoizedState=null}return I.child}function Ur(g,I,p){if(g!==null&&(I.dependencies=g.dependencies),Tl|=I.lanes,!(p&I.childLanes))return null;if(g!==null&&I.child!==g.child)throw Error(o(153));if(I.child!==null){for(g=I.child,p=Ro(g,g.pendingProps),I.child=p,p.return=I;g.sibling!==null;)g=g.sibling,p=p.sibling=Ro(g,g.pendingProps),p.return=I;p.sibling=null}return I.child}function HM(g,I,p){switch(I.tag){case 3:wG(I),Yl();break;case 5:Jy(I);break;case 1:ii(I.type)&&sC(I);break;case 4:Zp(I,I.stateNode.containerInfo);break;case 10:Ny(I,I.type._context,I.memoizedProps.value);break;case 13:var G=I.memoizedState;if(G!==null)return G.dehydrated!==null?(At(dn,dn.current&1),I.flags|=128,null):p&I.child.childLanes?xG(g,I,p):(At(dn,dn.current&1),g=Ur(g,I,p),g!==null?g.sibling:null);At(dn,dn.current&1);break;case 19:if(G=(p&I.childLanes)!==0,g.flags&128){if(G)return MG(g,I,p);I.flags|=128}var w=I.memoizedState;if(w!==null&&(w.rendering=null,w.tail=null,w.lastEffect=null),At(dn,dn.current),G)break;return null;case 22:case 23:return I.lanes=0,GG(g,I,p)}return Ur(g,I,p)}function XM(g,I){switch(vp(I),I.tag){case 1:return ii(I.type)&&iC(),g=I.flags,g&65536?(I.flags=g&-65537|128,I):null;case 3:return zl(),Ot(jt),Ot(Vn),xp(),g=I.flags,g&65536&&!(g&128)?(I.flags=g&-65537|128,I):null;case 5:return wp(I),null;case 13:if(Ot(dn),g=I.memoizedState,g!==null&&g.dehydrated!==null){if(I.alternate===null)throw Error(o(340));Yl()}return g=I.flags,g&65536?(I.flags=g&-65537|128,I):null;case 19:return Ot(dn),null;case 4:return zl(),null;case 10:return hp(I.type._context),null;case 22:case 23:return sm(),null;case 24:return null;default:return null}}var MC=!1,Za=!1,YM=typeof WeakSet=="function"?WeakSet:Set,Ne=null;function NC(g,I){var p=g.ref;if(p!==null)if(typeof p=="function")try{p(null)}catch(G){Ki(g,I,G)}else p.current=null}function Ep(g,I,p){try{p()}catch(G){Ki(g,I,G)}}var NG=!1;function FM(g,I){for(J(g.containerInfo),Ne=I;Ne!==null;)if(g=Ne,I=g.child,(g.subtreeFlags&1028)!==0&&I!==null)I.return=g,Ne=I;else for(;Ne!==null;){g=Ne;try{var p=g.alternate;if(g.flags&1024)switch(g.tag){case 0:case 11:case 15:break;case 1:if(p!==null){var G=p.memoizedProps,w=p.memoizedState,W=g.stateNode,z=W.getSnapshotBeforeUpdate(g.elementType===g.type?G:Js(g.type,G),w);W.__reactInternalSnapshotBeforeUpdate=z}break;case 3:Xe&&Ye(g.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;default:throw Error(o(163))}}catch(Q){Ki(g,g.return,Q)}if(I=g.sibling,I!==null){I.return=g.return,Ne=I;break}Ne=g.return}return p=NG,NG=!1,p}function wa(g,I,p){var G=I.updateQueue;if(G=G!==null?G.lastEffect:null,G!==null){var w=G=G.next;do{if((w.tag&g)===g){var W=w.destroy;w.destroy=void 0,W!==void 0&&Ep(I,p,W)}w=w.next}while(w!==G)}}function Yc(g,I){if(I=I.updateQueue,I=I!==null?I.lastEffect:null,I!==null){var p=I=I.next;do{if((p.tag&g)===g){var G=p.create;p.destroy=G()}p=p.next}while(p!==I)}}function Tp(g){var I=g.ref;if(I!==null){var p=g.stateNode;switch(g.tag){case 5:g=Ce(p);break;default:g=p}typeof I=="function"?I(g):I.current=g}}function HG(g,I,p){if(hr&&typeof hr.onCommitFiberUnmount=="function")try{hr.onCommitFiberUnmount(lC,I)}catch{}switch(I.tag){case 0:case 11:case 14:case 15:if(g=I.updateQueue,g!==null&&(g=g.lastEffect,g!==null)){var G=g=g.next;do{var w=G,W=w.destroy;w=w.tag,W!==void 0&&(w&2||w&4)&&Ep(I,p,W),G=G.next}while(G!==g)}break;case 1:if(NC(I,p),g=I.stateNode,typeof g.componentWillUnmount=="function")try{g.props=I.memoizedProps,g.state=I.memoizedState,g.componentWillUnmount()}catch(z){Ki(I,p,z)}break;case 5:NC(I,p);break;case 4:Xe?LG(g,I,p):fe&&fe&&(I=I.stateNode.containerInfo,p=Dt(I),ks(I,p))}}function XG(g,I,p){for(var G=I;;)if(HG(g,G,p),G.child===null||Xe&&G.tag===4){if(G===I)break;for(;G.sibling===null;){if(G.return===null||G.return===I)return;G=G.return}G.sibling.return=G.return,G=G.sibling}else G.child.return=G,G=G.child}function YG(g){var I=g.alternate;I!==null&&(g.alternate=null,YG(I)),g.child=null,g.deletions=null,g.sibling=null,g.tag===5&&(I=g.stateNode,I!==null&&st(I)),g.stateNode=null,g.return=null,g.dependencies=null,g.memoizedProps=null,g.memoizedState=null,g.pendingProps=null,g.stateNode=null,g.updateQueue=null}function FG(g){return g.tag===5||g.tag===3||g.tag===4}function KG(g){e:for(;;){for(;g.sibling===null;){if(g.return===null||FG(g.return))return null;g=g.return}for(g.sibling.return=g.return,g=g.sibling;g.tag!==5&&g.tag!==6&&g.tag!==18;){if(g.flags&2||g.child===null||g.tag===4)continue e;g.child.return=g,g=g.child}if(!(g.flags&2))return g.stateNode}}function zG(g){if(Xe){e:{for(var I=g.return;I!==null;){if(FG(I))break e;I=I.return}throw Error(o(160))}var p=I;switch(p.tag){case 5:I=p.stateNode,p.flags&32&&(Tt(I),p.flags&=-33),p=KG(g),Dp(g,p,I);break;case 3:case 4:I=p.stateNode.containerInfo,p=KG(g),kp(g,p,I);break;default:throw Error(o(161))}}}function kp(g,I,p){var G=g.tag;if(G===5||G===6)g=g.stateNode,I?Ee(p,g,I):Ke(p,g);else if(G!==4&&(g=g.child,g!==null))for(kp(g,I,p),g=g.sibling;g!==null;)kp(g,I,p),g=g.sibling}function Dp(g,I,p){var G=g.tag;if(G===5||G===6)g=g.stateNode,I?ot(p,g,I):gt(p,g);else if(G!==4&&(g=g.child,g!==null))for(Dp(g,I,p),g=g.sibling;g!==null;)Dp(g,I,p),g=g.sibling}function LG(g,I,p){for(var G=I,w=!1,W,z;;){if(!w){w=G.return;e:for(;;){if(w===null)throw Error(o(160));switch(W=w.stateNode,w.tag){case 5:z=!1;break e;case 3:W=W.containerInfo,z=!0;break e;case 4:W=W.containerInfo,z=!0;break e}w=w.return}w=!0}if(G.tag===5||G.tag===6)XG(g,G,p),z?Vt(W,G.stateNode):Oe(W,G.stateNode);else if(G.tag===18)z?wt(W,G.stateNode):Gt(W,G.stateNode);else if(G.tag===4){if(G.child!==null){W=G.stateNode.containerInfo,z=!0,G.child.return=G,G=G.child;continue}}else if(HG(g,G,p),G.child!==null){G.child.return=G,G=G.child;continue}if(G===I)break;for(;G.sibling===null;){if(G.return===null||G.return===I)return;G=G.return,G.tag===4&&(w=!1)}G.sibling.return=G.return,G=G.sibling}}function Up(g,I){if(Xe){switch(I.tag){case 0:case 11:case 14:case 15:wa(3,I,I.return),Yc(3,I),wa(5,I,I.return);return;case 1:return;case 5:var p=I.stateNode;if(p!=null){var G=I.memoizedProps;g=g!==null?g.memoizedProps:G;var w=I.type,W=I.updateQueue;I.updateQueue=null,W!==null&&$e(p,W,w,g,G,I)}return;case 6:if(I.stateNode===null)throw Error(o(162));p=I.memoizedProps,pe(I.stateNode,g!==null?g.memoizedProps:p,p);return;case 3:ue&&g!==null&&g.memoizedState.isDehydrated&&ht(I.stateNode.containerInfo);return;case 12:return;case 13:HC(I);return;case 19:HC(I);return;case 17:return}throw Error(o(163))}switch(I.tag){case 0:case 11:case 14:case 15:wa(3,I,I.return),Yc(3,I),wa(5,I,I.return);return;case 12:return;case 13:HC(I);return;case 19:HC(I);return;case 3:ue&&g!==null&&g.memoizedState.isDehydrated&&ht(I.stateNode.containerInfo);break;case 22:case 23:return}e:if(fe){switch(I.tag){case 1:case 5:case 6:break e;case 3:case 4:I=I.stateNode,ks(I.containerInfo,I.pendingChildren);break e}throw Error(o(163))}}function HC(g){var I=g.updateQueue;if(I!==null){g.updateQueue=null;var p=g.stateNode;p===null&&(p=g.stateNode=new YM),I.forEach(function(G){var w=_M.bind(null,g,G);p.has(G)||(p.add(G),G.then(w,w))})}}function KM(g,I){for(Ne=I;Ne!==null;){I=Ne;var p=I.deletions;if(p!==null)for(var G=0;G";case YC:return":has("+(Jp(g)||"")+")";case FC:return'[role="'+g.value+'"]';case zC:return'"'+g.value+'"';case KC:return'[data-testname="'+g.value+'"]';default:throw Error(o(365))}}function UG(g,I){var p=[];g=[g,0];for(var G=0;Gw&&(w=z),G&=~W}if(G=w,G=Qn()-G,G=(120>G?120:480>G?480:1080>G?1080:1920>G?1920:3e3>G?3e3:4320>G?4320:1960*LM(G/1960))-G,10g?16:g,wo===null)var G=!1;else{if(g=wo,wo=null,DC=0,Bt&6)throw Error(o(331));var w=Bt;for(Bt|=4,Ne=g.current;Ne!==null;){var W=Ne,z=W.child;if(Ne.flags&16){var Q=W.deletions;if(Q!==null){for(var de=0;deQn()-qp?Sa(g,0):jp|=p),Fi(g,I)}function eB(g,I){I===0&&(g.mode&1?(I=oC,oC<<=1,!(oC&130023424)&&(oC=4194304)):I=1);var p=Zi();g=_C(g,I),g!==null&&(Gc(g,I,p),Fi(g,p))}function PM(g){var I=g.memoizedState,p=0;I!==null&&(p=I.retryLane),eB(g,p)}function _M(g,I){var p=0;switch(g.tag){case 13:var G=g.stateNode,w=g.memoizedState;w!==null&&(p=w.retryLane);break;case 19:G=g.stateNode;break;default:throw Error(o(314))}G!==null&&G.delete(I),eB(g,p)}var tB;tB=function(g,I,p){if(g!==null)if(g.memoizedProps!==I.pendingProps||jt.current)ss=!0;else{if(!(g.lanes&p)&&!(I.flags&128))return ss=!1,HM(g,I,p);ss=!!(g.flags&131072)}else ss=!1,cn&&I.flags&1048576&&Ey(I,pC,I.index);switch(I.lanes=0,I.tag){case 2:var G=I.type;g!==null&&(g.alternate=null,I.alternate=null,I.flags|=2),g=I.pendingProps;var w=yo(I,Vn.current);Nl(I,p),w=Wp(null,I,G,g,w,p);var W=Vp();return I.flags|=1,typeof w=="object"&&w!==null&&typeof w.render=="function"&&w.$$typeof===void 0?(I.tag=1,I.memoizedState=null,I.updateQueue=null,ii(G)?(W=!0,sC(I)):W=!1,I.memoizedState=w.state!==null&&w.state!==void 0?w.state:null,pp(I),w.updater=hC,I.stateNode=w,w._reactInternals=I,fp(I,G,g,p),I=Kp(null,I,G,!0,W,p)):(I.tag=0,cn&&W&&bp(I),Bi(null,I,w,p),I=I.child),I;case 16:G=I.elementType;e:{switch(g!==null&&(g.alternate=null,I.alternate=null,I.flags|=2),g=I.pendingProps,w=G._init,G=w(G._payload),I.type=G,w=I.tag=OM(G),g=Js(G,g),w){case 0:I=Fp(null,I,G,g,p);break e;case 1:I=ZG(null,I,G,g,p);break e;case 11:I=bG(null,I,G,g,p);break e;case 14:I=vG(null,I,G,Js(G.type,g),p);break e}throw Error(o(306,G,""))}return I;case 0:return G=I.type,w=I.pendingProps,w=I.elementType===G?w:Js(G,w),Fp(g,I,G,w,p);case 1:return G=I.type,w=I.pendingProps,w=I.elementType===G?w:Js(G,w),ZG(g,I,G,w,p);case 3:e:{if(wG(I),g===null)throw Error(o(387));G=I.pendingProps,W=I.memoizedState,w=W.element,Hy(g,I),dC(I,G,null,p);var z=I.memoizedState;if(G=z.element,ue&&W.isDehydrated)if(W={element:G,isDehydrated:!1,cache:z.cache,transitions:z.transitions},I.updateQueue.baseState=W,I.memoizedState=W,I.flags&256){w=Error(o(423)),I=SG(g,I,G,p,w);break e}else if(G!==w){w=Error(o(424)),I=SG(g,I,G,p,w);break e}else for(ue&&(is=Ae(I.stateNode.containerInfo),ns=I,cn=!0,Os=null,Bc=!1),p=_y(I,null,G,p),I.child=p;p;)p.flags=p.flags&-3|4096,p=p.sibling;else{if(Yl(),G===w){I=Ur(g,I,p);break e}Bi(g,I,G,p)}I=I.child}return I;case 5:return Jy(I),g===null&&Gp(I),G=I.type,w=I.pendingProps,W=g!==null?g.memoizedProps:null,z=w.children,ve(G,w)?z=null:W!==null&&ve(G,W)&&(I.flags|=32),BG(g,I),Bi(g,I,z,p),I.child;case 6:return g===null&&Gp(I),null;case 13:return xG(g,I,p);case 4:return Zp(I,I.stateNode.containerInfo),G=I.pendingProps,g===null?I.child=Fl(I,null,G,p):Bi(g,I,G,p),I.child;case 11:return G=I.type,w=I.pendingProps,w=I.elementType===G?w:Js(G,w),bG(g,I,G,w,p);case 7:return Bi(g,I,I.pendingProps,p),I.child;case 8:return Bi(g,I,I.pendingProps.children,p),I.child;case 12:return Bi(g,I,I.pendingProps.children,p),I.child;case 10:e:{if(G=I.type._context,w=I.pendingProps,W=I.memoizedProps,z=w.value,Ny(I,G,z),W!==null)if(Ar(W.value,z)){if(W.children===w.children&&!jt.current){I=Ur(g,I,p);break e}}else for(W=I.child,W!==null&&(W.return=I);W!==null;){var Q=W.dependencies;if(Q!==null){z=W.child;for(var de=Q.firstContext;de!==null;){if(de.context===G){if(W.tag===1){de=Er(-1,p&-p),de.tag=2;var xe=W.updateQueue;if(xe!==null){xe=xe.shared;var Te=xe.pending;Te===null?de.next=de:(de.next=Te.next,Te.next=de),xe.pending=de}}W.lanes|=p,de=W.alternate,de!==null&&(de.lanes|=p),Ap(W.return,p,I),Q.lanes|=p;break}de=de.next}}else if(W.tag===10)z=W.type===I.type?null:W.child;else if(W.tag===18){if(z=W.return,z===null)throw Error(o(341));z.lanes|=p,Q=z.alternate,Q!==null&&(Q.lanes|=p),Ap(z,p,I),z=W.sibling}else z=W.child;if(z!==null)z.return=W;else for(z=W;z!==null;){if(z===I){z=null;break}if(W=z.sibling,W!==null){W.return=z.return,z=W;break}z=z.return}W=z}Bi(g,I,w.children,p),I=I.child}return I;case 9:return w=I.type,G=I.pendingProps.children,Nl(I,p),w=vs(w),G=G(w),I.flags|=1,Bi(g,I,G,p),I.child;case 14:return G=I.type,w=Js(G,I.pendingProps),w=Js(G.type,w),vG(g,I,G,w,p);case 15:return yG(g,I,I.type,I.pendingProps,p);case 17:return G=I.type,w=I.pendingProps,w=I.elementType===G?w:Js(G,w),g!==null&&(g.alternate=null,I.alternate=null,I.flags|=2),I.tag=1,ii(G)?(g=!0,sC(I)):g=!1,Nl(I,p),zy(I,G,w),fp(I,G,w,p),Kp(null,I,G,!0,g,p);case 19:return MG(g,I,p);case 22:return GG(g,I,p)}throw Error(o(156,I.tag))};function nB(g,I){return gp(g,I)}function JM(g,I,p,G){this.tag=g,this.key=p,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=I,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=G,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ss(g,I,p,G){return new JM(g,I,p,G)}function om(g){return g=g.prototype,!(!g||!g.isReactComponent)}function OM(g){if(typeof g=="function")return om(g)?1:0;if(g!=null){if(g=g.$$typeof,g===v)return 11;if(g===b)return 14}return 2}function Ro(g,I){var p=g.alternate;return p===null?(p=Ss(g.tag,I,g.key,g.mode),p.elementType=g.elementType,p.type=g.type,p.stateNode=g.stateNode,p.alternate=g,g.alternate=p):(p.pendingProps=I,p.type=g.type,p.flags=0,p.subtreeFlags=0,p.deletions=null),p.flags=g.flags&14680064,p.childLanes=g.childLanes,p.lanes=g.lanes,p.child=g.child,p.memoizedProps=g.memoizedProps,p.memoizedState=g.memoizedState,p.updateQueue=g.updateQueue,I=g.dependencies,p.dependencies=I===null?null:{lanes:I.lanes,firstContext:I.firstContext},p.sibling=g.sibling,p.index=g.index,p.ref=g.ref,p}function OC(g,I,p,G,w,W){var z=2;if(G=g,typeof g=="function")om(g)&&(z=1);else if(typeof g=="string")z=5;else e:switch(g){case u:return Wa(p.children,w,W,I);case C:z=8,w|=8;break;case d:return g=Ss(12,p,I,w|2),g.elementType=d,g.lanes=W,g;case y:return g=Ss(13,p,I,w),g.elementType=y,g.lanes=W,g;case A:return g=Ss(19,p,I,w),g.elementType=A,g.lanes=W,g;case B:return QC(p,w,W,I);default:if(typeof g=="object"&&g!==null)switch(g.$$typeof){case h:z=10;break e;case m:z=9;break e;case v:z=11;break e;case b:z=14;break e;case f:z=16,G=null;break e}throw Error(o(130,g==null?g:typeof g,""))}return I=Ss(z,p,I,w),I.elementType=g,I.type=G,I.lanes=W,I}function Wa(g,I,p,G){return g=Ss(7,g,G,I),g.lanes=p,g}function QC(g,I,p,G){return g=Ss(22,g,G,I),g.elementType=B,g.lanes=p,g.stateNode={},g}function am(g,I,p){return g=Ss(6,g,null,I),g.lanes=p,g}function lm(g,I,p){return I=Ss(4,g.children!==null?g.children:[],g.key,I),I.lanes=p,I.stateNode={containerInfo:g.containerInfo,pendingChildren:null,implementation:g.implementation},I}function QM(g,I,p,G,w){this.tag=I,this.containerInfo=g,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=lt,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=ap(0),this.expirationTimes=ap(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ap(0),this.identifierPrefix=G,this.onRecoverableError=w,ue&&(this.mutableSourceEagerHydrationData=null)}function iB(g,I,p,G,w,W,z,Q,de){return g=new QM(g,I,p,Q,de),I===1?(I=1,W===!0&&(I|=8)):I=0,W=Ss(3,null,null,I),g.current=W,W.stateNode=g,W.memoizedState={element:G,isDehydrated:p,cache:null,transitions:null},pp(W),g}function sB(g){if(!g)return ci;g=g._reactInternals;e:{if(Z(g)!==g||g.tag!==1)throw Error(o(170));var I=g;do{switch(I.tag){case 3:I=I.stateNode.context;break e;case 1:if(ii(I.type)){I=I.stateNode.__reactInternalMemoizedMergedChildContext;break e}}I=I.return}while(I!==null);throw Error(o(171))}if(g.tag===1){var p=g.type;if(ii(p))return xy(g,p,I)}return I}function rB(g){var I=g._reactInternals;if(I===void 0)throw typeof g.render=="function"?Error(o(188)):(g=Object.keys(g).join(","),Error(o(268,g)));return g=U(I),g===null?null:g.stateNode}function oB(g,I){if(g=g.memoizedState,g!==null&&g.dehydrated!==null){var p=g.retryLane;g.retryLane=p!==0&&p=xe&&W>=Ct&&w<=Te&&z<=it){g.splice(I,1);break}else if(G!==xe||p.width!==de.width||itz){if(!(W!==Ct||p.height!==de.height||Tew)){xe>G&&(de.width+=xe-G,de.x=G),TeW&&(de.height+=Ct-W,de.y=W),itp&&(p=z)),z ")+` No matching component was found for: - `)+g.join(" > ")}return null},t.getPublicRootInstance=function(g){if(g=g.current,!g.child)return null;switch(g.child.tag){case 5:return Ce(g.child.stateNode);default:return g.child.stateNode}},t.injectIntoDevTools=function(g){if(g={bundleType:g.bundleType,version:g.version,rendererPackageName:g.rendererPackageName,rendererConfig:g.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:a.ReactCurrentDispatcher,findHostInstanceByFiber:EM,findFiberByHostInstance:g.findFiberByHostInstance||kM,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.0.0-fc46dba67-20220329"},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")g=!1;else{var I=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(I.isDisabled||!I.supportsFiber)g=!0;else{try{nC=I.inject(g),hr=I}catch{}g=!!I.checkDCE}}return g},t.isAlreadyRendering=function(){return!1},t.observeVisibleRects=function(g,I,p,G){if(!ut)throw Error(o(363));g=Up(g,I);var w=Me(g,p,G).disconnect;return{disconnect:function(){w()}}},t.registerMutableSourceForHydration=function(g,I){var p=I._getVersion;p=p(I._source),g.mutableSourceEagerHydrationData==null?g.mutableSourceEagerHydrationData=[I,p]:g.mutableSourceEagerHydrationData.push(I,p)},t.runWithPriority=function(g,I){var p=Kt;try{return Kt=g,I()}finally{Kt=p}},t.shouldError=function(){return null},t.shouldSuspend=function(){return!1},t.updateContainer=function(g,I,p,G){var w=I.current,W=Bi(),z=So(w);return p=qG(p),I.context===null?I.context=p:I.pendingContext=p,I=Tr(W,z),I.payload={element:g},G=G===void 0?null:G,G!==null&&(I.callback=G),Bo(w,I),g=Zs(w,z,W),g!==null&&aC(g,w,z),z},t};SW.exports=vL;var yL=SW.exports;const GL=Gb(yL);function WW(n,e,t=(i,s)=>i===s){if(n===e)return!0;if(!n||!e)return!1;const i=n.length;if(e.length!==i)return!1;for(let s=0;ss.response=r).then(()=>{i.lifespan&&i.lifespan>0&&setTimeout(()=>{const r=io.indexOf(s);r!==-1&&io.splice(r,1)},i.lifespan)}).catch(r=>s.error=r)};if(io.push(s),!t)throw s.promise}const BL=(n,e,t)=>VW(n,e,!1,t),ZL=(n,e,t)=>void VW(n,e,!0,t),wL=n=>{if(n===void 0||n.length===0)io.splice(0,io.length);else{const e=io.find(t=>WW(n,t.keys,t.equal));if(e){const t=io.indexOf(e);t!==-1&&io.splice(t,1)}}},oy={},MW=n=>void Object.assign(oy,n);function SL(n,e){function t(u,{args:C=[],attach:d,...h},m){let v=`${u[0].toUpperCase()}${u.slice(1)}`,y;if(u==="primitive"){if(h.object===void 0)throw new Error("R3F: Primitives without 'object' are invalid!");const A=h.object;y=Cg(A,{type:u,root:m,attach:d,primitive:!0})}else{const A=oy[v];if(!A)throw new Error(`R3F: ${v} 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`);if(!Array.isArray(C))throw new Error("R3F: The args prop must be an array!");y=Cg(new A(...C),{type:u,root:m,attach:d,memoizedProps:{args:C}})}return y.__r3f.attach===void 0&&(y instanceof ft?y.__r3f.attach="geometry":y instanceof _n&&(y.__r3f.attach="material")),v!=="inject"&&uf(y,h),y}function i(u,C){let d=!1;if(C){var h,m;(h=C.__r3f)!=null&&h.attach?If(u,C,C.__r3f.attach):C.isObject3D&&u.isObject3D&&(u.add(C),d=!0),d||(m=u.__r3f)==null||m.objects.push(C),C.__r3f||Cg(C,{}),C.__r3f.parent=u,cb(C),dg(C)}}function s(u,C,d){let h=!1;if(C){var m,v;if((m=C.__r3f)!=null&&m.attach)If(u,C,C.__r3f.attach);else if(C.isObject3D&&u.isObject3D){C.parent=u,C.dispatchEvent({type:"added"});const y=u.children.filter(b=>b!==C),A=y.indexOf(d);u.children=[...y.slice(0,A),C,...y.slice(A)],h=!0}h||(v=u.__r3f)==null||v.objects.push(C),C.__r3f||Cg(C,{}),C.__r3f.parent=u,cb(C),dg(C)}}function r(u,C,d=!1){u&&[...u].forEach(h=>o(C,h,d))}function o(u,C,d){if(C){var h,m,v;if(C.__r3f&&(C.__r3f.parent=null),(h=u.__r3f)!=null&&h.objects&&(u.__r3f.objects=u.__r3f.objects.filter(B=>B!==C)),(m=C.__r3f)!=null&&m.attach)LZ(u,C,C.__r3f.attach);else if(C.isObject3D&&u.isObject3D){var y;u.remove(C),(y=C.__r3f)!=null&&y.root&&HL(C.__r3f.root,C)}const b=(v=C.__r3f)==null?void 0:v.primitive,f=d===void 0?C.dispose!==null&&!b:d;if(!b){var A;r((A=C.__r3f)==null?void 0:A.objects,C,f),r(C.children,C,f)}C.__r3f&&(delete C.__r3f.root,delete C.__r3f.objects,delete C.__r3f.handlers,delete C.__r3f.memoizedProps,b||delete C.__r3f),f&&C.dispose&&C.type!=="Scene"&&lb.unstable_scheduleCallback(lb.unstable_IdlePriority,()=>{try{C.dispose()}catch{}}),dg(u)}}function a(u,C,d,h){var m;const v=(m=u.__r3f)==null?void 0:m.parent;if(!v)return;const y=t(C,d,u.__r3f.root);if(u.children){for(const A of u.children)A.__r3f&&i(y,A);u.children=u.children.filter(A=>!A.__r3f)}u.__r3f.objects.forEach(A=>i(y,A)),u.__r3f.objects=[],u.__r3f.autoRemovedBeforeAppend||o(v,u),y.parent&&(y.__r3f.autoRemovedBeforeAppend=!0),i(v,y),y.raycast&&y.__r3f.eventCount&&y.__r3f.root.getState().internal.interaction.push(y),[h,h.alternate].forEach(A=>{A!==null&&(A.stateNode=y,A.ref&&(typeof A.ref=="function"?A.ref(y):A.ref.current=y))})}const l=()=>console.warn("Text is not allowed in the R3F tree! This could be stray whitespace or characters.");return{reconciler:GL({createInstance:t,removeChild:o,appendChild:i,appendInitialChild:i,insertBefore:s,supportsMutation:!0,isPrimaryRenderer:!1,supportsPersistence:!1,supportsHydration:!1,noTimeout:-1,appendChildToContainer:(u,C)=>{if(!C)return;const d=u.getState().scene;d.__r3f&&(d.__r3f.root=u,i(d,C))},removeChildFromContainer:(u,C)=>{C&&o(u.getState().scene,C)},insertInContainerBefore:(u,C,d)=>{if(!C||!d)return;const h=u.getState().scene;h.__r3f&&s(h,C,d)},getRootHostContext:()=>null,getChildHostContext:u=>u,finalizeInitialChildren(u){var C;return!!((C=u?.__r3f)!=null?C:{}).handlers},prepareUpdate(u,C,d,h){if(u.__r3f.primitive&&h.object&&h.object!==u)return[!0];{const{args:m=[],children:v,...y}=h,{args:A=[],children:b,...f}=d;if(!Array.isArray(m))throw new Error("R3F: the args prop must be an array!");if(m.some((S,x)=>S!==A[x]))return[!0];const B=zW(u,y,f,!0);return B.changes.length?[!1,B]:null}},commitUpdate(u,[C,d],h,m,v,y){C?a(u,h,v,y):uf(u,d)},commitMount(u,C,d,h){var m;const v=(m=u.__r3f)!=null?m:{};u.raycast&&v.handlers&&v.eventCount&&u.__r3f.root.getState().internal.interaction.push(u)},getPublicInstance:u=>u,prepareForCommit:()=>null,preparePortalMount:u=>Cg(u.getState().scene),resetAfterCommit:()=>{},shouldSetTextContent:()=>!1,clearContainer:()=>!1,hideInstance(u){var C;const{attach:d,parent:h}=(C=u.__r3f)!=null?C:{};d&&h&&LZ(h,u,d),u.isObject3D&&(u.visible=!1),dg(u)},unhideInstance(u,C){var d;const{attach:h,parent:m}=(d=u.__r3f)!=null?d:{};h&&m&&If(m,u,h),(u.isObject3D&&C.visible==null||C.visible)&&(u.visible=!0),dg(u)},createTextInstance:l,hideTextInstance:l,unhideTextInstance:l,getCurrentEventPriority:()=>e?e():Vg.DefaultEventPriority,beforeActiveInstanceBlur:()=>{},afterActiveInstanceBlur:()=>{},detachDeletedInstance:()=>{},now:typeof performance<"u"&&an.fun(performance.now)?performance.now:an.fun(Date.now)?Date.now:()=>0,scheduleTimeout:an.fun(setTimeout)?setTimeout:void 0,cancelTimeout:an.fun(clearTimeout)?clearTimeout:void 0}),applyProps:uf}}var YZ,FZ;const cf=n=>"colorSpace"in n||"outputColorSpace"in n,NW=()=>{var n;return(n=oy.ColorManagement)!=null?n:null},HW=n=>n&&n.isOrthographicCamera,xL=n=>n&&n.hasOwnProperty("current"),Cc=typeof window<"u"&&((YZ=window.document)!=null&&YZ.createElement||((FZ=window.navigator)==null?void 0:FZ.product)==="ReactNative")?U.useLayoutEffect:U.useEffect;function XW(n){const e=U.useRef(n);return Cc(()=>void(e.current=n),[n]),e}function RL({set:n}){return Cc(()=>(n(new Promise(()=>null)),()=>n(!1)),[n]),null}class YW extends U.Component{constructor(...e){super(...e),this.state={error:!1}}componentDidCatch(e){this.props.set(e)}render(){return this.state.error?null:this.props.children}}YW.getDerivedStateFromError=()=>({error:!0});const FW="__default",KZ=new Map,WL=n=>n&&!!n.memoized&&!!n.changes;function KW(n){var e;const t=typeof window<"u"?(e=window.devicePixelRatio)!=null?e:2:1;return Array.isArray(n)?Math.min(Math.max(n[0],t),n[1]):n}const nI=n=>{var e;return(e=n.__r3f)==null?void 0:e.root.getState()},an={obj:n=>n===Object(n)&&!an.arr(n)&&typeof n!="function",fun:n=>typeof n=="function",str:n=>typeof n=="string",num:n=>typeof n=="number",boo:n=>typeof n=="boolean",und:n=>n===void 0,arr:n=>Array.isArray(n),equ(n,e,{arrays:t="shallow",objects:i="reference",strict:s=!0}={}){if(typeof n!=typeof e||!!n!=!!e)return!1;if(an.str(n)||an.num(n))return n===e;const r=an.obj(n);if(r&&i==="reference")return n===e;const o=an.arr(n);if(o&&t==="reference")return n===e;if((o||r)&&n===e)return!0;let a;for(a in n)if(!(a in e))return!1;if(r&&t==="shallow"&&i==="shallow"){for(a in s?e:n)if(!an.equ(n[a],e[a],{strict:s,objects:"reference"}))return!1}else for(a in s?e:n)if(n[a]!==e[a])return!1;if(an.und(a)){if(o&&n.length===0&&e.length===0||r&&Object.keys(n).length===0&&Object.keys(e).length===0)return!0;if(n!==e)return!1}return!0}};function VL(n){const e={nodes:{},materials:{}};return n&&n.traverse(t=>{t.name&&(e.nodes[t.name]=t),t.material&&!e.materials[t.material.name]&&(e.materials[t.material.name]=t.material)}),e}function ML(n){n.dispose&&n.type!=="Scene"&&n.dispose();for(const e in n)e.dispose==null||e.dispose(),delete n[e]}function Cg(n,e){const t=n;return(e!=null&&e.primitive||!t.__r3f)&&(t.__r3f={type:"",root:null,previousAttach:null,memoizedProps:{},eventCount:0,handlers:{},objects:[],parent:null,...e}),n}function gb(n,e){let t=n;if(e.includes("-")){const i=e.split("-"),s=i.pop();return t=i.reduce((r,o)=>r[o],n),{target:t,key:s}}else return{target:t,key:e}}const zZ=/-\d+$/;function If(n,e,t){if(an.str(t)){if(zZ.test(t)){const r=t.replace(zZ,""),{target:o,key:a}=gb(n,r);Array.isArray(o[a])||(o[a]=[])}const{target:i,key:s}=gb(n,t);e.__r3f.previousAttach=i[s],i[s]=e}else e.__r3f.previousAttach=t(n,e)}function LZ(n,e,t){var i,s;if(an.str(t)){const{target:r,key:o}=gb(n,t),a=e.__r3f.previousAttach;a===void 0?delete r[o]:r[o]=a}else(i=e.__r3f)==null||i.previousAttach==null||i.previousAttach(n,e);(s=e.__r3f)==null||delete s.previousAttach}function zW(n,{children:e,key:t,ref:i,...s},{children:r,key:o,ref:a,...l}={},c=!1){var u;const C=(u=n?.__r3f)!=null?u:{},d=Object.entries(s),h=[];if(c){const v=Object.keys(l);for(let y=0;y{var A;if((A=n.__r3f)!=null&&A.primitive&&v==="object"||an.equ(y,l[v]))return;if(/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/.test(v))return h.push([v,y,!0,[]]);let b=[];v.includes("-")&&(b=v.split("-")),h.push([v,y,!1,b]);for(const f in s){const B=s[f];f.startsWith(`${v}-`)&&h.push([f,B,!1,f.split("-")])}});const m={...s};return C.memoizedProps&&C.memoizedProps.args&&(m.args=C.memoizedProps.args),C.memoizedProps&&C.memoizedProps.attach&&(m.attach=C.memoizedProps.attach),{memoized:m,changes:h}}function uf(n,e){var t,i,s;const r=(t=n.__r3f)!=null?t:{},o=r.root,a=(i=o==null||o.getState==null?void 0:o.getState())!=null?i:{},{memoized:l,changes:c}=WL(e)?e:zW(n,e),u=r.eventCount;n.__r3f&&(n.__r3f.memoizedProps=l);for(let d=0;df[B],n),!(b&&b.set))){const[f,...B]=y.reverse();A=B.reverse().reduce((S,x)=>S[x],n),h=f}if(m===FW+"remove")if(A.constructor){let f=KZ.get(A.constructor);f||(f=new A.constructor,KZ.set(A.constructor,f)),m=f[h]}else m=0;if(v)m?r.handlers[h]=m:delete r.handlers[h],r.eventCount=Object.keys(r.handlers).length;else if(b&&b.set&&(b.copy||b instanceof al)){if(Array.isArray(m))b.fromArray?b.fromArray(m):b.set(...m);else if(b.copy&&m&&m.constructor&&b.constructor===m.constructor)b.copy(m);else if(m!==void 0){const f=b instanceof Re;!f&&b.setScalar?b.setScalar(m):b instanceof al&&m instanceof al?b.mask=m.mask:b.set(m),!NW()&&!a.linear&&f&&b.convertSRGBToLinear()}}else if(A[h]=m,A[h]instanceof qt&&A[h].format===un&&A[h].type===rn){const f=A[h];cf(f)&&cf(a.gl)?f.colorSpace=a.gl.outputColorSpace:f.encoding=a.gl.outputEncoding}dg(n)}if(r.parent&&a.internal&&n.raycast&&u!==r.eventCount){const d=a.internal.interaction.indexOf(n);d>-1&&a.internal.interaction.splice(d,1),r.eventCount&&a.internal.interaction.push(n)}return!(c.length===1&&c[0][0]==="onUpdate")&&c.length&&(s=n.__r3f)!=null&&s.parent&&cb(n),n}function dg(n){var e,t;const i=(e=n.__r3f)==null||(t=e.root)==null||t.getState==null?void 0:t.getState();i&&i.internal.frames===0&&i.invalidate()}function cb(n){n.onUpdate==null||n.onUpdate(n)}function LW(n,e){n.manual||(HW(n)?(n.left=e.width/-2,n.right=e.width/2,n.top=e.height/2,n.bottom=e.height/-2):n.aspect=e.width/e.height,n.updateProjectionMatrix(),n.updateMatrixWorld())}function Od(n){return(n.eventObject||n.object).uuid+"/"+n.index+n.instanceId}function NL(){var n;const e=typeof self<"u"&&self||typeof window<"u"&&window;if(!e)return Vg.DefaultEventPriority;switch((n=e.event)==null?void 0:n.type){case"click":case"contextmenu":case"dblclick":case"pointercancel":case"pointerdown":case"pointerup":return Vg.DiscreteEventPriority;case"pointermove":case"pointerout":case"pointerover":case"pointerenter":case"pointerleave":case"wheel":return Vg.ContinuousEventPriority;default:return Vg.DefaultEventPriority}}function TW(n,e,t,i){const s=t.get(e);s&&(t.delete(e),t.size===0&&(n.delete(i),s.target.releasePointerCapture(i)))}function HL(n,e){const{internal:t}=n.getState();t.interaction=t.interaction.filter(i=>i!==e),t.initialHits=t.initialHits.filter(i=>i!==e),t.hovered.forEach((i,s)=>{(i.eventObject===e||i.object===e)&&t.hovered.delete(s)}),t.capturedMap.forEach((i,s)=>{TW(t.capturedMap,e,i,s)})}function XL(n){function e(l){const{internal:c}=n.getState(),u=l.offsetX-c.initialClick[0],C=l.offsetY-c.initialClick[1];return Math.round(Math.sqrt(u*u+C*C))}function t(l){return l.filter(c=>["Move","Over","Enter","Out","Leave"].some(u=>{var C;return(C=c.__r3f)==null?void 0:C.handlers["onPointer"+u]}))}function i(l,c){const u=n.getState(),C=new Set,d=[],h=c?c(u.internal.interaction):u.internal.interaction;for(let A=0;A{const f=nI(A.object),B=nI(b.object);return!f||!B?A.distance-b.distance:B.events.priority-f.events.priority||A.distance-b.distance}).filter(A=>{const b=Od(A);return C.has(b)?!1:(C.add(b),!0)});u.events.filter&&(v=u.events.filter(v,u));for(const A of v){let b=A.object;for(;b;){var y;(y=b.__r3f)!=null&&y.eventCount&&d.push({...A,eventObject:b}),b=b.parent}}if("pointerId"in l&&u.internal.capturedMap.has(l.pointerId))for(let A of u.internal.capturedMap.get(l.pointerId).values())C.has(Od(A.intersection))||d.push(A.intersection);return d}function s(l,c,u,C){const d=n.getState();if(l.length){const h={stopped:!1};for(const m of l){const v=nI(m.object)||d,{raycaster:y,pointer:A,camera:b,internal:f}=v,B=new H(A.x,A.y,0).unproject(b),S=V=>{var N,D;return(N=(D=f.capturedMap.get(V))==null?void 0:D.has(m.eventObject))!=null?N:!1},x=V=>{const N={intersection:m,target:c.target};f.capturedMap.has(V)?f.capturedMap.get(V).set(m.eventObject,N):f.capturedMap.set(V,new Map([[m.eventObject,N]])),c.target.setPointerCapture(V)},R=V=>{const N=f.capturedMap.get(V);N&&TW(f.capturedMap,m.eventObject,N,V)};let M={};for(let V in c){let N=c[V];typeof N!="function"&&(M[V]=N)}let Z={...m,...M,pointer:A,intersections:l,stopped:h.stopped,delta:u,unprojectedPoint:B,ray:y.ray,camera:b,stopPropagation(){const V="pointerId"in c&&f.capturedMap.get(c.pointerId);if((!V||V.has(m.eventObject))&&(Z.stopped=h.stopped=!0,f.hovered.size&&Array.from(f.hovered.values()).find(N=>N.eventObject===m.eventObject))){const N=l.slice(0,l.indexOf(m));r([...N,m])}},target:{hasPointerCapture:S,setPointerCapture:x,releasePointerCapture:R},currentTarget:{hasPointerCapture:S,setPointerCapture:x,releasePointerCapture:R},nativeEvent:c};if(C(Z),h.stopped===!0)break}}return l}function r(l){const{internal:c}=n.getState();for(const u of c.hovered.values())if(!l.length||!l.find(C=>C.object===u.object&&C.index===u.index&&C.instanceId===u.instanceId)){const d=u.eventObject.__r3f,h=d?.handlers;if(c.hovered.delete(Od(u)),d!=null&&d.eventCount){const m={...u,intersections:l};h.onPointerOut==null||h.onPointerOut(m),h.onPointerLeave==null||h.onPointerLeave(m)}}}function o(l,c){for(let u=0;ur([]);case"onLostPointerCapture":return c=>{const{internal:u}=n.getState();"pointerId"in c&&u.capturedMap.has(c.pointerId)&&requestAnimationFrame(()=>{u.capturedMap.has(c.pointerId)&&(u.capturedMap.delete(c.pointerId),r([]))})}}return function(u){const{onPointerMissed:C,internal:d}=n.getState();d.lastEvent.current=u;const h=l==="onPointerMove",m=l==="onClick"||l==="onContextMenu"||l==="onDoubleClick",y=i(u,h?t:void 0),A=m?e(u):0;l==="onPointerDown"&&(d.initialClick=[u.offsetX,u.offsetY],d.initialHits=y.map(f=>f.eventObject)),m&&!y.length&&A<=2&&(o(u,d.interaction),C&&C(u)),h&&r(y);function b(f){const B=f.eventObject,S=B.__r3f,x=S?.handlers;if(S!=null&&S.eventCount)if(h){if(x.onPointerOver||x.onPointerEnter||x.onPointerOut||x.onPointerLeave){const R=Od(f),M=d.hovered.get(R);M?M.stopped&&f.stopPropagation():(d.hovered.set(R,f),x.onPointerOver==null||x.onPointerOver(f),x.onPointerEnter==null||x.onPointerEnter(f))}x.onPointerMove==null||x.onPointerMove(f)}else{const R=x[l];R?(!m||d.initialHits.includes(B))&&(o(u,d.interaction.filter(M=>!d.initialHits.includes(M))),R(f)):m&&d.initialHits.includes(B)&&o(u,d.interaction.filter(M=>!d.initialHits.includes(M)))}}s(y,u,A,b)}}return{handlePointer:a}}const YL=["set","get","setSize","setFrameloop","setDpr","events","invalidate","advance","size","viewport"],EW=n=>!!(n!=null&&n.render),ay=U.createContext(null),FL=(n,e)=>{const t=wW((a,l)=>{const c=new H,u=new H,C=new H;function d(A=l().camera,b=u,f=l().size){const{width:B,height:S,top:x,left:R}=f,M=B/S;b instanceof H?C.copy(b):C.set(...b);const Z=A.getWorldPosition(c).distanceTo(C);if(HW(A))return{width:B/A.zoom,height:S/A.zoom,top:x,left:R,factor:1,distance:Z,aspect:M};{const V=A.fov*Math.PI/180,N=2*Math.tan(V/2)*Z,D=N*(B/S);return{width:D,height:N,top:x,left:R,factor:B/D,distance:Z,aspect:M}}}let h;const m=A=>a(b=>({performance:{...b.performance,current:A}})),v=new ne;return{set:a,get:l,gl:null,camera:null,raycaster:null,events:{priority:1,enabled:!0,connected:!1},xr:null,scene:null,invalidate:(A=1)=>n(l(),A),advance:(A,b)=>e(A,b,l()),legacy:!1,linear:!1,flat:!1,controls:null,clock:new ny,pointer:v,mouse:v,frameloop:"always",onPointerMissed:void 0,performance:{current:1,min:.5,max:1,debounce:200,regress:()=>{const A=l();h&&clearTimeout(h),A.performance.current!==A.performance.min&&m(A.performance.min),h=setTimeout(()=>m(l().performance.max),A.performance.debounce)}},size:{width:0,height:0,top:0,left:0,updateStyle:!1},viewport:{initialDpr:0,dpr:0,width:0,height:0,top:0,left:0,aspect:0,distance:0,factor:0,getCurrentViewport:d},setEvents:A=>a(b=>({...b,events:{...b.events,...A}})),setSize:(A,b,f,B,S)=>{const x=l().camera,R={width:A,height:b,top:B||0,left:S||0,updateStyle:f};a(M=>({size:R,viewport:{...M.viewport,...d(x,u,R)}}))},setDpr:A=>a(b=>{const f=KW(A);return{viewport:{...b.viewport,dpr:f,initialDpr:b.viewport.initialDpr||f}}}),setFrameloop:(A="always")=>{const b=l().clock;b.stop(),b.elapsedTime=0,A!=="never"&&(b.start(),b.elapsedTime=0),a(()=>({frameloop:A}))},previousRoot:void 0,internal:{active:!1,priority:0,frames:0,lastEvent:U.createRef(),interaction:[],hovered:new Map,subscribers:[],initialClick:[0,0],initialHits:[],capturedMap:new Map,subscribe:(A,b,f)=>{const B=l().internal;return B.priority=B.priority+(b>0?1:0),B.subscribers.push({ref:A,priority:b,store:f}),B.subscribers=B.subscribers.sort((S,x)=>S.priority-x.priority),()=>{const S=l().internal;S!=null&&S.subscribers&&(S.priority=S.priority-(b>0?1:0),S.subscribers=S.subscribers.filter(x=>x.ref!==A))}}}}}),i=t.getState();let s=i.size,r=i.viewport.dpr,o=i.camera;return t.subscribe(()=>{const{camera:a,size:l,viewport:c,gl:u,set:C}=t.getState();if(l!==s||c.dpr!==r){var d;s=l,r=c.dpr,LW(a,l),u.setPixelRatio(c.dpr);const h=(d=l.updateStyle)!=null?d:typeof HTMLCanvasElement<"u"&&u.domElement instanceof HTMLCanvasElement;u.setSize(l.width,l.height,h)}a!==o&&(o=a,C(h=>({viewport:{...h.viewport,...h.viewport.getCurrentViewport(a)}})))}),t.subscribe(a=>n(a)),t};let Qd,KL=new Set,zL=new Set,LL=new Set;function Cf(n,e){if(n.size)for(const{callback:t}of n.values())t(e)}function iI(n,e){switch(n){case"before":return Cf(KL,e);case"after":return Cf(zL,e);case"tail":return Cf(LL,e)}}let df,hf;function Af(n,e,t){let i=e.clock.getDelta();for(e.frameloop==="never"&&typeof n=="number"&&(i=n-e.clock.elapsedTime,e.clock.oldTime=e.clock.elapsedTime,e.clock.elapsedTime=n),df=e.internal.subscribers,Qd=0;Qd0)&&!((c=s.gl.xr)!=null&&c.isPresenting)&&(t+=Af(l,s))}if(iI("after",l),t===0)return iI("tail",l),e=!1,cancelAnimationFrame(i)}function o(l,c=1){var u;if(!l)return n.forEach(C=>o(C.store.getState()),c);(u=l.gl.xr)!=null&&u.isPresenting||!l.internal.active||l.frameloop==="never"||(l.internal.frames=Math.min(60,l.internal.frames+c),e||(e=!0,requestAnimationFrame(r)))}function a(l,c=!0,u,C){if(c&&iI("before",l),u)Af(l,u,C);else for(const d of n.values())Af(l,d.store.getState());c&&iI("after",l)}return{loop:r,invalidate:o,advance:a}}function EL(n){const e=U.useRef(null);return Cc(()=>void(e.current=n.current.__r3f),[n]),e}function ly(){const n=U.useContext(ay);if(!n)throw new Error("R3F: Hooks can only be used within the Canvas component!");return n}function $i(n=t=>t,e){return ly()(n,e)}function _u(n,e=0){const t=ly(),i=t.getState().internal.subscribe,s=XW(n);return Cc(()=>i(s,e,t),[e,i,t]),null}function kW(n,e){return function(t,...i){const s=new t;return n&&n(s),Promise.all(i.map(r=>new Promise((o,a)=>s.load(r,l=>{l.scene&&Object.assign(l,VL(l.scene)),o(l)},e,l=>a(new Error(`Could not load ${r}: ${l.message})`))))))}}function gy(n,e,t,i){const s=Array.isArray(e)?e:[e],r=BL(kW(t,i),[n,...s],{equal:an.equ});return Array.isArray(e)?r:r[0]}gy.preload=function(n,e,t){const i=Array.isArray(e)?e:[e];return ZL(kW(t),[n,...i])};gy.clear=function(n,e){const t=Array.isArray(e)?e:[e];return wL([n,...t])};const tc=new Map,{invalidate:TZ,advance:EZ}=TL(tc),{reconciler:yu,applyProps:Ta}=SL(tc,NL),cg={objects:"shallow",strict:!1},kL=(n,e)=>{const t=typeof n=="function"?n(e):n;return EW(t)?t:new Kv({powerPreference:"high-performance",canvas:e,antialias:!0,alpha:!0,...n})};function DL(n,e){if(e)return e;if(typeof HTMLCanvasElement<"u"&&n instanceof HTMLCanvasElement&&n.parentElement){const{width:t,height:i,top:s,left:r}=n.parentElement.getBoundingClientRect();return{width:t,height:i,top:s,left:r}}else if(typeof OffscreenCanvas<"u"&&n instanceof OffscreenCanvas)return{width:n.width,height:n.height,top:0,left:0};return{width:0,height:0,top:0,left:0}}function UL(n){const e=tc.get(n),t=e?.fiber,i=e?.store;e&&console.warn("R3F.createRoot should only be called once!");const s=typeof reportError=="function"?reportError:console.error,r=i||FL(TZ,EZ),o=t||yu.createContainer(r,Vg.ConcurrentRoot,null,!1,null,"",s,null);e||tc.set(n,{fiber:o,store:r});let a,l=!1,c;return{configure(u={}){let{gl:C,size:d,scene:h,events:m,onCreated:v,shadows:y=!1,linear:A=!1,flat:b=!1,legacy:f=!1,orthographic:B=!1,frameloop:S="always",dpr:x=[1,2],performance:R,raycaster:M,camera:Z,onPointerMissed:V}=u,N=r.getState(),D=N.gl;N.gl||N.set({gl:D=kL(C,n)});let k=N.raycaster;k||N.set({raycaster:k=new ry});const{params:$,...te}=M||{};if(an.equ(te,k,cg)||Ta(k,{...te}),an.equ($,k.params,cg)||Ta(k,{params:{...k.params,...$}}),!N.camera||N.camera===c&&!an.equ(c,Z,cg)){c=Z;const ce=Z instanceof ac,se=ce?Z:B?new lc(0,0,0,0,.1,1e3):new An(75,0,.1,1e3);ce||(se.position.z=5,Z&&Ta(se,Z),!N.camera&&!(Z!=null&&Z.rotation)&&se.lookAt(0,0,0)),N.set({camera:se})}if(!N.scene){let ce;h instanceof dl?ce=h:(ce=new dl,h&&Ta(ce,h)),N.set({scene:Cg(ce)})}if(!N.xr){const ce=(re,ve)=>{const ye=r.getState();ye.frameloop!=="never"&&EZ(re,!0,ye,ve)},se=()=>{const re=r.getState();re.gl.xr.enabled=re.gl.xr.isPresenting,re.gl.xr.setAnimationLoop(re.gl.xr.isPresenting?ce:null),re.gl.xr.isPresenting||TZ(re)},ee={connect(){const re=r.getState().gl;re.xr.addEventListener("sessionstart",se),re.xr.addEventListener("sessionend",se)},disconnect(){const re=r.getState().gl;re.xr.removeEventListener("sessionstart",se),re.xr.removeEventListener("sessionend",se)}};D.xr&&ee.connect(),N.set({xr:ee})}if(D.shadowMap){const ce=D.shadowMap.enabled,se=D.shadowMap.type;if(D.shadowMap.enabled=!!y,an.boo(y))D.shadowMap.type=VI;else if(an.str(y)){var Ce;const ee={basic:HR,percentage:SA,soft:VI,variance:ir};D.shadowMap.type=(Ce=ee[y])!=null?Ce:VI}else an.obj(y)&&Object.assign(D.shadowMap,y);(ce!==D.shadowMap.enabled||se!==D.shadowMap.type)&&(D.shadowMap.needsUpdate=!0)}const le=NW();le&&("enabled"in le?le.enabled=!f:"legacyMode"in le&&(le.legacyMode=f)),Ta(D,{outputEncoding:A?3e3:3001,toneMapping:b?gr:Bv}),N.legacy!==f&&N.set(()=>({legacy:f})),N.linear!==A&&N.set(()=>({linear:A})),N.flat!==b&&N.set(()=>({flat:b})),C&&!an.fun(C)&&!EW(C)&&!an.equ(C,D,cg)&&Ta(D,C),m&&!N.events.handlers&&N.set({events:m(r)});const P=DL(n,d);return an.equ(P,N.size,cg)||N.setSize(P.width,P.height,P.updateStyle,P.top,P.left),x&&N.viewport.dpr!==KW(x)&&N.setDpr(x),N.frameloop!==S&&N.setFrameloop(S),N.onPointerMissed||N.set({onPointerMissed:V}),R&&!an.equ(R,N.performance,cg)&&N.set(ce=>({performance:{...ce.performance,...R}})),a=v,l=!0,this},render(u){return l||this.configure(),yu.updateContainer(U.createElement(PL,{store:r,children:u,onCreated:a,rootElement:n}),o,null,()=>{}),r},unmount(){DW(n)}}}function PL({store:n,children:e,onCreated:t,rootElement:i}){return Cc(()=>{const s=n.getState();s.set(r=>({internal:{...r.internal,active:!0}})),t&&t(s),n.getState().events.connected||s.events.connect==null||s.events.connect(i)},[]),U.createElement(ay.Provider,{value:n},e)}function DW(n,e){const t=tc.get(n),i=t?.fiber;if(i){const s=t?.store.getState();s&&(s.internal.active=!1),yu.updateContainer(null,i,null,()=>{s&&setTimeout(()=>{try{var r,o,a,l;s.events.disconnect==null||s.events.disconnect(),(r=s.gl)==null||(o=r.renderLists)==null||o.dispose==null||o.dispose(),(a=s.gl)==null||a.forceContextLoss==null||a.forceContextLoss(),(l=s.gl)!=null&&l.xr&&s.xr.disconnect(),ML(s),tc.delete(n),e&&e(n)}catch{}},500)})}}function _L(n,e,t){return U.createElement(JL,{key:e.uuid,children:n,container:e,state:t})}function JL({state:n={},children:e,container:t}){const{events:i,size:s,...r}=n,o=ly(),[a]=U.useState(()=>new ry),[l]=U.useState(()=>new ne),c=U.useCallback((C,d)=>{const h={...C};Object.keys(C).forEach(v=>{(YL.includes(v)||C[v]!==d[v]&&d[v])&&delete h[v]});let m;if(d&&s){const v=d.camera;m=C.viewport.getCurrentViewport(v,new H,s),v!==C.camera&&LW(v,s)}return{...h,scene:t,raycaster:a,pointer:l,mouse:l,previousRoot:o,events:{...C.events,...d?.events,...i},size:{...C.size,...s},viewport:{...C.viewport,...m},...r}},[n]),[u]=U.useState(()=>{const C=o.getState();return wW((h,m)=>({...C,scene:t,raycaster:a,pointer:l,mouse:l,previousRoot:o,events:{...C.events,...i},size:{...C.size,...s},...r,set:h,get:m,setEvents:v=>h(y=>({...y,events:{...y.events,...v}}))}))});return U.useEffect(()=>{const C=o.subscribe(d=>u.setState(h=>c(d,h)));return()=>{C(),u.destroy()}},[]),U.useEffect(()=>{u.setState(C=>c(o.getState(),C))},[c]),U.createElement(U.Fragment,null,yu.createPortal(U.createElement(ay.Provider,{value:u},e),u,null))}yu.injectIntoDevTools({bundleType:0,rendererPackageName:"@react-three/fiber",version:U.version});function lA(){return lA=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0?i=setTimeout(l,e-u):(i=null,t||(a=n.apply(r,s),r=s=null))}var c=function(){r=this,s=arguments,o=Date.now();var u=t&&!i;return i||(i=setTimeout(l,e)),u&&(a=n.apply(r,s),r=s=null),a};return c.clear=function(){i&&(clearTimeout(i),i=null)},c.flush=function(){i&&(a=n.apply(r,s),r=s=null,clearTimeout(i),i=null)},c}Ib.debounce=Ib;var OL=Ib;const kZ=Gb(OL);function QL(n){let{debounce:e,scroll:t,polyfill:i,offsetSize:s}=n===void 0?{debounce:0,scroll:!1,offsetSize:!1}:n;const r=i||(typeof window>"u"?class{}:window.ResizeObserver);if(!r)throw new Error("This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills");const[o,a]=U.useState({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),l=U.useRef({element:null,scrollContainers:null,resizeObserver:null,lastBounds:o}),c=e?typeof e=="number"?e:e.scroll:null,u=e?typeof e=="number"?e:e.resize:null,C=U.useRef(!1);U.useEffect(()=>(C.current=!0,()=>void(C.current=!1)));const[d,h,m]=U.useMemo(()=>{const b=()=>{if(!l.current.element)return;const{left:f,top:B,width:S,height:x,bottom:R,right:M,x:Z,y:V}=l.current.element.getBoundingClientRect(),N={left:f,top:B,width:S,height:x,bottom:R,right:M,x:Z,y:V};l.current.element instanceof HTMLElement&&s&&(N.height=l.current.element.offsetHeight,N.width=l.current.element.offsetWidth),Object.freeze(N),C.current&&!eT(l.current.lastBounds,N)&&a(l.current.lastBounds=N)};return[b,u?kZ(b,u):b,c?kZ(b,c):b]},[a,s,c,u]);function v(){l.current.scrollContainers&&(l.current.scrollContainers.forEach(b=>b.removeEventListener("scroll",m,!0)),l.current.scrollContainers=null),l.current.resizeObserver&&(l.current.resizeObserver.disconnect(),l.current.resizeObserver=null)}function y(){l.current.element&&(l.current.resizeObserver=new r(m),l.current.resizeObserver.observe(l.current.element),t&&l.current.scrollContainers&&l.current.scrollContainers.forEach(b=>b.addEventListener("scroll",m,{capture:!0,passive:!0})))}const A=b=>{!b||b===l.current.element||(v(),l.current.element=b,l.current.scrollContainers=UW(b),y())};return qL(m,!!t),jL(h),U.useEffect(()=>{v(),y()},[t,m,h]),U.useEffect(()=>v,[]),[A,o,d]}function jL(n){U.useEffect(()=>{const e=n;return window.addEventListener("resize",e),()=>void window.removeEventListener("resize",e)},[n])}function qL(n,e){U.useEffect(()=>{if(e){const t=n;return window.addEventListener("scroll",t,{capture:!0,passive:!0}),()=>void window.removeEventListener("scroll",t,!0)}},[n,e])}function UW(n){const e=[];if(!n||n===document.body)return e;const{overflow:t,overflowX:i,overflowY:s}=window.getComputedStyle(n);return[t,i,s].some(r=>r==="auto"||r==="scroll")&&e.push(n),[...e,...UW(n.parentElement)]}const $L=["x","y","top","bottom","left","right","width","height"],eT=(n,e)=>$L.every(t=>n[t]===e[t]);var tT=Object.defineProperty,nT=Object.defineProperties,iT=Object.getOwnPropertyDescriptors,DZ=Object.getOwnPropertySymbols,sT=Object.prototype.hasOwnProperty,rT=Object.prototype.propertyIsEnumerable,UZ=(n,e,t)=>e in n?tT(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,PZ=(n,e)=>{for(var t in e||(e={}))sT.call(e,t)&&UZ(n,t,e[t]);if(DZ)for(var t of DZ(e))rT.call(e,t)&&UZ(n,t,e[t]);return n},oT=(n,e)=>nT(n,iT(e));function PW(n,e,t){if(!n)return;if(t(n)===!0)return n;let i=e?n.return:n.child;for(;i;){const s=PW(i,e,t);if(s)return s;i=e?null:i.sibling}}function _W(n){try{return Object.defineProperties(n,{_currentRenderer:{get(){return null},set(){}},_currentRenderer2:{get(){return null},set(){}}})}catch{return n}}const cy=_W(U.createContext(null));class JW extends U.Component{render(){return U.createElement(cy.Provider,{value:this._reactInternals},this.props.children)}}const{ReactCurrentOwner:_Z,ReactCurrentDispatcher:JZ}=U.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function aT(){const n=U.useContext(cy);if(n===null)throw new Error("its-fine: useFiber must be called within a !");const e=U.useId();return U.useMemo(()=>{for(const i of[_Z?.current,n,n?.alternate]){if(!i)continue;const s=PW(i,!1,r=>{let o=r.memoizedState;for(;o;){if(o.memoizedState===e)return!0;o=o.next}});if(s)return s}},[n,e])}function lT(){var n,e;const t=aT(),[i]=U.useState(()=>new Map);i.clear();let s=t;for(;s;){const r=(n=s.type)==null?void 0:n._context;r&&r!==cy&&!i.has(r)&&i.set(r,(e=JZ?.current)==null?void 0:e.readContext(_W(r))),s=s.return}return i}function gT(){const n=lT();return U.useMemo(()=>Array.from(n.keys()).reduce((e,t)=>i=>U.createElement(e,null,U.createElement(t.Provider,oT(PZ({},i),{value:n.get(t)}))),e=>U.createElement(JW,PZ({},e))),[n])}const pf={onClick:["click",!1],onContextMenu:["contextmenu",!1],onDoubleClick:["dblclick",!1],onWheel:["wheel",!0],onPointerDown:["pointerdown",!0],onPointerUp:["pointerup",!0],onPointerLeave:["pointerleave",!0],onPointerMove:["pointermove",!0],onPointerCancel:["pointercancel",!0],onLostPointerCapture:["lostpointercapture",!0]};function cT(n){const{handlePointer:e}=XL(n);return{priority:1,enabled:!0,compute(t,i,s){i.pointer.set(t.offsetX/i.size.width*2-1,-(t.offsetY/i.size.height)*2+1),i.raycaster.setFromCamera(i.pointer,i.camera)},connected:void 0,handlers:Object.keys(pf).reduce((t,i)=>({...t,[i]:e(i)}),{}),update:()=>{var t;const{events:i,internal:s}=n.getState();(t=s.lastEvent)!=null&&t.current&&i.handlers&&i.handlers.onPointerMove(s.lastEvent.current)},connect:t=>{var i;const{set:s,events:r}=n.getState();r.disconnect==null||r.disconnect(),s(o=>({events:{...o.events,connected:t}})),Object.entries((i=r.handlers)!=null?i:[]).forEach(([o,a])=>{const[l,c]=pf[o];t.addEventListener(l,a,{passive:c})})},disconnect:()=>{const{set:t,events:i}=n.getState();if(i.connected){var s;Object.entries((s=i.handlers)!=null?s:[]).forEach(([r,o])=>{if(i&&i.connected instanceof HTMLElement){const[a]=pf[r];i.connected.removeEventListener(a,o)}}),t(r=>({events:{...r.events,connected:void 0}}))}}}}const IT=U.forwardRef(function({children:e,fallback:t,resize:i,style:s,gl:r,events:o=cT,eventSource:a,eventPrefix:l,shadows:c,linear:u,flat:C,legacy:d,orthographic:h,frameloop:m,dpr:v,performance:y,raycaster:A,camera:b,onPointerMissed:f,onCreated:B,...S},x){U.useMemo(()=>MW(mL),[]);const R=gT(),[M,Z]=QL({scroll:!0,debounce:{scroll:50,resize:0},...i}),V=U.useRef(null),N=U.useRef(null);U.useImperativeHandle(x,()=>V.current);const D=XW(f),[k,$]=U.useState(!1),[te,Ce]=U.useState(!1);if(k)throw k;if(te)throw te;const le=U.useRef(null);Cc(()=>{const J=V.current;Z.width>0&&Z.height>0&&J&&(le.current||(le.current=UL(J)),le.current.configure({gl:r,events:o,shadows:c,linear:u,flat:C,legacy:d,orthographic:h,frameloop:m,dpr:v,performance:y,raycaster:A,camera:b,size:Z,onPointerMissed:(...P)=>D.current==null?void 0:D.current(...P),onCreated:P=>{P.events.connect==null||P.events.connect(a?xL(a)?a.current:a:N.current),l&&P.setEvents({compute:(ce,se)=>{const ee=ce[l+"X"],re=ce[l+"Y"];se.pointer.set(ee/se.size.width*2-1,-(re/se.size.height)*2+1),se.raycaster.setFromCamera(se.pointer,se.camera)}}),B?.(P)}}),le.current.render(U.createElement(R,null,U.createElement(YW,{set:Ce},U.createElement(U.Suspense,{fallback:U.createElement(RL,{set:$})},e)))))}),U.useEffect(()=>{const J=V.current;if(J)return()=>DW(J)},[]);const L=a?"none":"auto";return U.createElement("div",lA({ref:N,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:L,...s}},S),U.createElement("div",{ref:M,style:{width:"100%",height:"100%"}},U.createElement("canvas",{ref:V,style:{display:"block"}},t)))}),uT=U.forwardRef(function(e,t){return U.createElement(JW,null,U.createElement(IT,lA({},e,{ref:t})))});var Iy={exports:{}},Eg=typeof Reflect=="object"?Reflect:null,OZ=Eg&&typeof Eg.apply=="function"?Eg.apply:function(e,t,i){return Function.prototype.apply.call(e,t,i)},Wh;Eg&&typeof Eg.ownKeys=="function"?Wh=Eg.ownKeys:Object.getOwnPropertySymbols?Wh=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Wh=function(e){return Object.getOwnPropertyNames(e)};function CT(n){console&&console.warn&&console.warn(n)}var OW=Number.isNaN||function(e){return e!==e};function $t(){$t.init.call(this)}Iy.exports=$t;Iy.exports.once=pT;$t.EventEmitter=$t;$t.prototype._events=void 0;$t.prototype._eventsCount=0;$t.prototype._maxListeners=void 0;var QZ=10;function OA(n){if(typeof n!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof n)}Object.defineProperty($t,"defaultMaxListeners",{enumerable:!0,get:function(){return QZ},set:function(n){if(typeof n!="number"||n<0||OW(n))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+n+".");QZ=n}});$t.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};$t.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||OW(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function QW(n){return n._maxListeners===void 0?$t.defaultMaxListeners:n._maxListeners}$t.prototype.getMaxListeners=function(){return QW(this)};$t.prototype.emit=function(e){for(var t=[],i=1;i0&&(o=t[0]),o instanceof Error)throw o;var a=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw a.context=o,a}var l=r[e];if(l===void 0)return!1;if(typeof l=="function")OZ(l,this,t);else for(var c=l.length,u=tV(l,c),i=0;i0&&o.length>s&&!o.warned){o.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=n,a.type=e,a.count=o.length,CT(a)}return n}$t.prototype.addListener=function(e,t){return jW(this,e,t,!1)};$t.prototype.on=$t.prototype.addListener;$t.prototype.prependListener=function(e,t){return jW(this,e,t,!0)};function dT(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function qW(n,e,t){var i={fired:!1,wrapFn:void 0,target:n,type:e,listener:t},s=dT.bind(i);return s.listener=t,i.wrapFn=s,s}$t.prototype.once=function(e,t){return OA(t),this.on(e,qW(this,e,t)),this};$t.prototype.prependOnceListener=function(e,t){return OA(t),this.prependListener(e,qW(this,e,t)),this};$t.prototype.removeListener=function(e,t){var i,s,r,o,a;if(OA(t),s=this._events,s===void 0)return this;if(i=s[e],i===void 0)return this;if(i===t||i.listener===t)--this._eventsCount===0?this._events=Object.create(null):(delete s[e],s.removeListener&&this.emit("removeListener",e,i.listener||t));else if(typeof i!="function"){for(r=-1,o=i.length-1;o>=0;o--)if(i[o]===t||i[o].listener===t){a=i[o].listener,r=o;break}if(r<0)return this;r===0?i.shift():hT(i,r),i.length===1&&(s[e]=i[0]),s.removeListener!==void 0&&this.emit("removeListener",e,a||t)}return this};$t.prototype.off=$t.prototype.removeListener;$t.prototype.removeAllListeners=function(e){var t,i,s;if(i=this._events,i===void 0)return this;if(i.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):i[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete i[e]),this;if(arguments.length===0){var r=Object.keys(i),o;for(s=0;s=0;s--)this.removeListener(e,t[s]);return this};function $W(n,e,t){var i=n._events;if(i===void 0)return[];var s=i[e];return s===void 0?[]:typeof s=="function"?t?[s.listener||s]:[s]:t?AT(s):tV(s,s.length)}$t.prototype.listeners=function(e){return $W(this,e,!0)};$t.prototype.rawListeners=function(e){return $W(this,e,!1)};$t.listenerCount=function(n,e){return typeof n.listenerCount=="function"?n.listenerCount(e):eV.call(n,e)};$t.prototype.listenerCount=eV;function eV(n){var e=this._events;if(e!==void 0){var t=e[n];if(typeof t=="function")return 1;if(t!==void 0)return t.length}return 0}$t.prototype.eventNames=function(){return this._eventsCount>0?Wh(this._events):[]};function tV(n,e){for(var t=new Array(e),i=0;i{if(e.data.op==="frame"){this.buffers.positions=e.data.positions,this.buffers.quaternions=e.data.quaternions,this.emit(e.data.op,e.data);return}this.emit(e.data.type,e.data)};for(const e of this.messageQueue)this.worker.postMessage(e);this.messageQueue.length=0}disableConstraint(e){let{uuid:t}=e;this.postMessage({op:"disableConstraint",uuid:t})}disableConstraintMotor(e){let{uuid:t}=e;this.postMessage({op:"disableConstraintMotor",uuid:t})}disconnect(){this.worker&&(this.worker.onmessage=null)}enableConstraint(e){let{uuid:t}=e;this.postMessage({op:"enableConstraint",uuid:t})}enableConstraintMotor(e){let{uuid:t}=e;this.postMessage({op:"enableConstraintMotor",uuid:t})}init(){const{allowSleep:e,axisIndex:t,broadphase:i,defaultContactMaterial:s,frictionGravity:r,gravity:o,iterations:a,quatNormalizeFast:l,quatNormalizeSkip:c,solver:u,tolerance:C}=this.config;this.postMessage({op:"init",props:{allowSleep:e,axisIndex:t,broadphase:i,defaultContactMaterial:s,frictionGravity:r,gravity:o,iterations:a,quatNormalizeFast:l,quatNormalizeSkip:c,solver:u,tolerance:C}})}removeBodies(e){let{uuid:t}=e;this.postMessage({op:"removeBodies",uuid:t})}removeConstraint(e){let{uuid:t}=e;this.postMessage({op:"removeConstraint",uuid:t})}removeContactMaterial(e){let{uuid:t}=e;this.postMessage({op:"removeContactMaterial",uuid:t})}removeRay(e){let{uuid:t}=e;this.postMessage({op:"removeRay",uuid:t})}removeRaycastVehicle(e){let{uuid:t}=e;this.postMessage({op:"removeRaycastVehicle",uuid:t})}removeSpring(e){let{uuid:t}=e;this.postMessage({op:"removeSpring",uuid:t})}setAllowSleep(e){let{props:t,uuid:i}=e;this.postMessage({op:"setAllowSleep",props:t,uuid:i})}setAngularDamping(e){let{props:t,uuid:i}=e;this.postMessage({op:"setAngularDamping",props:t,uuid:i})}setAngularFactor(e){let{props:t,uuid:i}=e;this.postMessage({op:"setAngularFactor",props:t,uuid:i})}setAngularVelocity(e){let{props:t,uuid:i}=e;this.postMessage({op:"setAngularVelocity",props:t,uuid:i})}setCollisionFilterGroup(e){let{props:t,uuid:i}=e;this.postMessage({op:"setCollisionFilterGroup",props:t,uuid:i})}setCollisionFilterMask(e){let{props:t,uuid:i}=e;this.postMessage({op:"setCollisionFilterMask",props:t,uuid:i})}setCollisionResponse(e){let{props:t,uuid:i}=e;this.postMessage({op:"setCollisionResponse",props:t,uuid:i})}setConstraintMotorMaxForce(e){let{props:t,uuid:i}=e;this.postMessage({op:"setConstraintMotorMaxForce",props:t,uuid:i})}setConstraintMotorSpeed(e){let{props:t,uuid:i}=e;this.postMessage({op:"setConstraintMotorSpeed",props:t,uuid:i})}setFixedRotation(e){let{props:t,uuid:i}=e;this.postMessage({op:"setFixedRotation",props:t,uuid:i})}setIsTrigger(e){let{props:t,uuid:i}=e;this.postMessage({op:"setIsTrigger",props:t,uuid:i})}setLinearDamping(e){let{props:t,uuid:i}=e;this.postMessage({op:"setLinearDamping",props:t,uuid:i})}setLinearFactor(e){let{props:t,uuid:i}=e;this.postMessage({op:"setLinearFactor",props:t,uuid:i})}setMass(e){let{props:t,uuid:i}=e;this.postMessage({op:"setMass",props:t,uuid:i})}setMaterial(e){let{props:t,uuid:i}=e;this.postMessage({op:"setMaterial",props:t,uuid:i})}setPosition(e){let{props:t,uuid:i}=e;this.postMessage({op:"setPosition",props:t,uuid:i})}setQuaternion(e){let{props:[t,i,s,r],uuid:o}=e;this.postMessage({op:"setQuaternion",props:[t,i,s,r],uuid:o})}setRaycastVehicleBrake(e){let{props:t,uuid:i}=e;this.postMessage({op:"setRaycastVehicleBrake",props:t,uuid:i})}setRaycastVehicleSteeringValue(e){let{props:t,uuid:i}=e;this.postMessage({op:"setRaycastVehicleSteeringValue",props:t,uuid:i})}setRotation(e){let{props:t,uuid:i}=e;this.postMessage({op:"setRotation",props:t,uuid:i})}setSleepSpeedLimit(e){let{props:t,uuid:i}=e;this.postMessage({op:"setSleepSpeedLimit",props:t,uuid:i})}setSleepTimeLimit(e){let{props:t,uuid:i}=e;this.postMessage({op:"setSleepTimeLimit",props:t,uuid:i})}setSpringDamping(e){let{props:t,uuid:i}=e;this.postMessage({op:"setSpringDamping",props:t,uuid:i})}setSpringRestLength(e){let{props:t,uuid:i}=e;this.postMessage({op:"setSpringRestLength",props:t,uuid:i})}setSpringStiffness(e){let{props:t,uuid:i}=e;this.postMessage({op:"setSpringStiffness",props:t,uuid:i})}setUserData(e){let{props:t,uuid:i}=e;this.postMessage({op:"setUserData",props:t,uuid:i})}setVelocity(e){let{props:t,uuid:i}=e;this.postMessage({op:"setVelocity",props:t,uuid:i})}sleep(e){let{uuid:t}=e;this.postMessage({op:"sleep",uuid:t})}step(e){var t;const{buffers:{positions:i,quaternions:s}}=this;!i.byteLength&&!s.byteLength||(t=this.worker)==null||t.postMessage({op:"step",positions:i,props:e,quaternions:s},[i.buffer,s.buffer])}subscribe(e){let{props:{id:t,target:i,type:s},uuid:r}=e;this.postMessage({op:"subscribe",props:{id:t,target:i,type:s},uuid:r})}terminate(){var e;(e=this.worker)==null||e.terminate(),this.worker=null}unsubscribe(e){let{props:t}=e;this.postMessage({op:"unsubscribe",props:t})}wakeUp(e){let{uuid:t}=e;this.postMessage({op:"wakeUp",uuid:t})}postMessage(e){if(this.worker)return this.worker.postMessage(e);this.messageQueue.push(e)}}class ao{constructor(e){e===void 0&&(e=[0,0,0,0,0,0,0,0,0]),this.elements=e}identity(){const e=this.elements;e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1}setZero(){const e=this.elements;e[0]=0,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=0,e[6]=0,e[7]=0,e[8]=0}setTrace(e){const t=this.elements;t[0]=e.x,t[4]=e.y,t[8]=e.z}getTrace(e){e===void 0&&(e=new F);const t=this.elements;return e.x=t[0],e.y=t[4],e.z=t[8],e}vmult(e,t){t===void 0&&(t=new F);const i=this.elements,s=e.x,r=e.y,o=e.z;return t.x=i[0]*s+i[1]*r+i[2]*o,t.y=i[3]*s+i[4]*r+i[5]*o,t.z=i[6]*s+i[7]*r+i[8]*o,t}smult(e){for(let t=0;t0){const r=1/s;this.x*=r,this.y*=r,this.z*=r}else this.x=0,this.y=0,this.z=0;return s}unit(e){e===void 0&&(e=new F);const t=this.x,i=this.y,s=this.z;let r=Math.sqrt(t*t+i*i+s*s);return r>0?(r=1/r,e.x=t*r,e.y=i*r,e.z=s*r):(e.x=1,e.y=0,e.z=0),e}length(){const e=this.x,t=this.y,i=this.z;return Math.sqrt(e*e+t*t+i*i)}lengthSquared(){return this.dot(this)}distanceTo(e){const t=this.x,i=this.y,s=this.z,r=e.x,o=e.y,a=e.z;return Math.sqrt((r-t)*(r-t)+(o-i)*(o-i)+(a-s)*(a-s))}distanceSquared(e){const t=this.x,i=this.y,s=this.z,r=e.x,o=e.y,a=e.z;return(r-t)*(r-t)+(o-i)*(o-i)+(a-s)*(a-s)}scale(e,t){t===void 0&&(t=new F);const i=this.x,s=this.y,r=this.z;return t.x=e*i,t.y=e*s,t.z=e*r,t}vmul(e,t){return t===void 0&&(t=new F),t.x=e.x*this.x,t.y=e.y*this.y,t.z=e.z*this.z,t}addScaledVector(e,t,i){return i===void 0&&(i=new F),i.x=this.x+e*t.x,i.y=this.y+e*t.y,i.z=this.z+e*t.z,i}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}isZero(){return this.x===0&&this.y===0&&this.z===0}negate(e){return e===void 0&&(e=new F),e.x=-this.x,e.y=-this.y,e.z=-this.z,e}tangents(e,t){const i=this.length();if(i>0){const s=wT,r=1/i;s.set(this.x*r,this.y*r,this.z*r);const o=ST;Math.abs(s.x)<.9?(o.set(1,0,0),s.cross(o,e)):(o.set(0,1,0),s.cross(o,e)),s.cross(e,t)}else e.set(1,0,0),t.set(0,1,0)}toString(){return`${this.x},${this.y},${this.z}`}toArray(){return[this.x,this.y,this.z]}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}lerp(e,t,i){const s=this.x,r=this.y,o=this.z;i.x=s+(e.x-s)*t,i.y=r+(e.y-r)*t,i.z=o+(e.z-o)*t}almostEquals(e,t){return t===void 0&&(t=1e-6),!(Math.abs(this.x-e.x)>t||Math.abs(this.y-e.y)>t||Math.abs(this.z-e.z)>t)}almostZero(e){return e===void 0&&(e=1e-6),!(Math.abs(this.x)>e||Math.abs(this.y)>e||Math.abs(this.z)>e)}isAntiparallelTo(e,t){return this.negate(jZ),jZ.almostEquals(e,t)}clone(){return new F(this.x,this.y,this.z)}}F.ZERO=new F(0,0,0);F.UNIT_X=new F(1,0,0);F.UNIT_Y=new F(0,1,0);F.UNIT_Z=new F(0,0,1);const wT=new F,ST=new F,jZ=new F;class Ls{constructor(e){e===void 0&&(e={}),this.lowerBound=new F,this.upperBound=new F,e.lowerBound&&this.lowerBound.copy(e.lowerBound),e.upperBound&&this.upperBound.copy(e.upperBound)}setFromPoints(e,t,i,s){const r=this.lowerBound,o=this.upperBound,a=i;r.copy(e[0]),a&&a.vmult(r,r),o.copy(r);for(let l=1;lo.x&&(o.x=c.x),c.xo.y&&(o.y=c.y),c.yo.z&&(o.z=c.z),c.z=r.x&&t.y<=s.y&&i.y>=r.y&&t.z<=s.z&&i.z>=r.z}getCorners(e,t,i,s,r,o,a,l){const c=this.lowerBound,u=this.upperBound;e.copy(c),t.set(u.x,c.y,c.z),i.set(u.x,u.y,c.z),s.set(c.x,u.y,u.z),r.set(u.x,c.y,u.z),o.set(c.x,u.y,c.z),a.set(c.x,c.y,u.z),l.copy(u)}toLocalFrame(e,t){const i=$Z,s=i[0],r=i[1],o=i[2],a=i[3],l=i[4],c=i[5],u=i[6],C=i[7];this.getCorners(s,r,o,a,l,c,u,C);for(let d=0;d!==8;d++){const h=i[d];e.pointToLocal(h,h)}return t.setFromPoints(i)}toWorldFrame(e,t){const i=$Z,s=i[0],r=i[1],o=i[2],a=i[3],l=i[4],c=i[5],u=i[6],C=i[7];this.getCorners(s,r,o,a,l,c,u,C);for(let d=0;d!==8;d++){const h=i[d];e.pointToWorld(h,h)}return t.setFromPoints(i)}overlapsRay(e){const{direction:t,from:i}=e,s=1/t.x,r=1/t.y,o=1/t.z,a=(this.lowerBound.x-i.x)*s,l=(this.upperBound.x-i.x)*s,c=(this.lowerBound.y-i.y)*r,u=(this.upperBound.y-i.y)*r,C=(this.lowerBound.z-i.z)*o,d=(this.upperBound.z-i.z)*o,h=Math.max(Math.max(Math.min(a,l),Math.min(c,u)),Math.min(C,d)),m=Math.min(Math.min(Math.max(a,l),Math.max(c,u)),Math.max(C,d));return!(m<0||h>m)}}const qZ=new F,$Z=[new F,new F,new F,new F,new F,new F,new F,new F];class xi{constructor(e,t,i,s){e===void 0&&(e=0),t===void 0&&(t=0),i===void 0&&(i=0),s===void 0&&(s=1),this.x=e,this.y=t,this.z=i,this.w=s}set(e,t,i,s){return this.x=e,this.y=t,this.z=i,this.w=s,this}toString(){return`${this.x},${this.y},${this.z},${this.w}`}toArray(){return[this.x,this.y,this.z,this.w]}setFromAxisAngle(e,t){const i=Math.sin(t*.5);return this.x=e.x*i,this.y=e.y*i,this.z=e.z*i,this.w=Math.cos(t*.5),this}toAxisAngle(e){e===void 0&&(e=new F),this.normalize();const t=2*Math.acos(this.w),i=Math.sqrt(1-this.w*this.w);return i<.001?(e.x=this.x,e.y=this.y,e.z=this.z):(e.x=this.x/i,e.y=this.y/i,e.z=this.z/i),[e,t]}setFromVectors(e,t){if(e.isAntiparallelTo(t)){const i=xT,s=RT;e.tangents(i,s),this.setFromAxisAngle(i,Math.PI)}else{const i=e.cross(t);this.x=i.x,this.y=i.y,this.z=i.z,this.w=Math.sqrt(e.length()**2*t.length()**2)+e.dot(t),this.normalize()}return this}mult(e,t){t===void 0&&(t=new xi);const i=this.x,s=this.y,r=this.z,o=this.w,a=e.x,l=e.y,c=e.z,u=e.w;return t.x=i*u+o*a+s*c-r*l,t.y=s*u+o*l+r*a-i*c,t.z=r*u+o*c+i*l-s*a,t.w=o*u-i*a-s*l-r*c,t}inverse(e){e===void 0&&(e=new xi);const t=this.x,i=this.y,s=this.z,r=this.w;this.conjugate(e);const o=1/(t*t+i*i+s*s+r*r);return e.x*=o,e.y*=o,e.z*=o,e.w*=o,e}conjugate(e){return e===void 0&&(e=new xi),e.x=-this.x,e.y=-this.y,e.z=-this.z,e.w=this.w,e}normalize(){let e=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);return e===0?(this.x=0,this.y=0,this.z=0,this.w=0):(e=1/e,this.x*=e,this.y*=e,this.z*=e,this.w*=e),this}normalizeFast(){const e=(3-(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w))/2;return e===0?(this.x=0,this.y=0,this.z=0,this.w=0):(this.x*=e,this.y*=e,this.z*=e,this.w*=e),this}vmult(e,t){t===void 0&&(t=new F);const i=e.x,s=e.y,r=e.z,o=this.x,a=this.y,l=this.z,c=this.w,u=c*i+a*r-l*s,C=c*s+l*i-o*r,d=c*r+o*s-a*i,h=-o*i-a*s-l*r;return t.x=u*c+h*-o+C*-l-d*-a,t.y=C*c+h*-a+d*-o-u*-l,t.z=d*c+h*-l+u*-a-C*-o,t}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w,this}toEuler(e,t){t===void 0&&(t="YZX");let i,s,r;const o=this.x,a=this.y,l=this.z,c=this.w;switch(t){case"YZX":const u=o*a+l*c;if(u>.499&&(i=2*Math.atan2(o,c),s=Math.PI/2,r=0),u<-.499&&(i=-2*Math.atan2(o,c),s=-Math.PI/2,r=0),i===void 0){const C=o*o,d=a*a,h=l*l;i=Math.atan2(2*a*c-2*o*l,1-2*d-2*h),s=Math.asin(2*u),r=Math.atan2(2*o*c-2*a*l,1-2*C-2*h)}break;default:throw new Error(`Euler order ${t} not supported yet.`)}e.y=i,e.z=s,e.x=r}setFromEuler(e,t,i,s){s===void 0&&(s="XYZ");const r=Math.cos(e/2),o=Math.cos(t/2),a=Math.cos(i/2),l=Math.sin(e/2),c=Math.sin(t/2),u=Math.sin(i/2);return s==="XYZ"?(this.x=l*o*a+r*c*u,this.y=r*c*a-l*o*u,this.z=r*o*u+l*c*a,this.w=r*o*a-l*c*u):s==="YXZ"?(this.x=l*o*a+r*c*u,this.y=r*c*a-l*o*u,this.z=r*o*u-l*c*a,this.w=r*o*a+l*c*u):s==="ZXY"?(this.x=l*o*a-r*c*u,this.y=r*c*a+l*o*u,this.z=r*o*u+l*c*a,this.w=r*o*a-l*c*u):s==="ZYX"?(this.x=l*o*a-r*c*u,this.y=r*c*a+l*o*u,this.z=r*o*u-l*c*a,this.w=r*o*a+l*c*u):s==="YZX"?(this.x=l*o*a+r*c*u,this.y=r*c*a+l*o*u,this.z=r*o*u-l*c*a,this.w=r*o*a-l*c*u):s==="XZY"&&(this.x=l*o*a-r*c*u,this.y=r*c*a-l*o*u,this.z=r*o*u+l*c*a,this.w=r*o*a+l*c*u),this}clone(){return new xi(this.x,this.y,this.z,this.w)}slerp(e,t,i){i===void 0&&(i=new xi);const s=this.x,r=this.y,o=this.z,a=this.w;let l=e.x,c=e.y,u=e.z,C=e.w,d,h,m,v,y;return h=s*l+r*c+o*u+a*C,h<0&&(h=-h,l=-l,c=-c,u=-u,C=-C),1-h>1e-6?(d=Math.acos(h),m=Math.sin(d),v=Math.sin((1-t)*d)/m,y=Math.sin(t*d)/m):(v=1-t,y=t),i.x=v*s+y*l,i.y=v*r+y*c,i.z=v*o+y*u,i.w=v*a+y*C,i}integrate(e,t,i,s){s===void 0&&(s=new xi);const r=e.x*i.x,o=e.y*i.y,a=e.z*i.z,l=this.x,c=this.y,u=this.z,C=this.w,d=t*.5;return s.x+=d*(r*C+o*u-a*c),s.y+=d*(o*C+a*l-r*u),s.z+=d*(a*C+r*c-o*l),s.w+=d*(-r*l-o*c-a*u),s}}const xT=new F,RT=new F,WT={SPHERE:1,PLANE:2,BOX:4,COMPOUND:8,CONVEXPOLYHEDRON:16,HEIGHTFIELD:32,PARTICLE:64,CYLINDER:128,TRIMESH:256};class _e{constructor(e){e===void 0&&(e={}),this.id=_e.idCounter++,this.type=e.type||0,this.boundingSphereRadius=0,this.collisionResponse=e.collisionResponse?e.collisionResponse:!0,this.collisionFilterGroup=e.collisionFilterGroup!==void 0?e.collisionFilterGroup:1,this.collisionFilterMask=e.collisionFilterMask!==void 0?e.collisionFilterMask:-1,this.material=e.material?e.material:null,this.body=null}updateBoundingSphereRadius(){throw`computeBoundingSphereRadius() not implemented for shape type ${this.type}`}volume(){throw`volume() not implemented for shape type ${this.type}`}calculateLocalInertia(e,t){throw`calculateLocalInertia() not implemented for shape type ${this.type}`}calculateWorldAABB(e,t,i,s){throw`calculateWorldAABB() not implemented for shape type ${this.type}`}}_e.idCounter=0;_e.types=WT;class Ei{constructor(e){e===void 0&&(e={}),this.position=new F,this.quaternion=new xi,e.position&&this.position.copy(e.position),e.quaternion&&this.quaternion.copy(e.quaternion)}pointToLocal(e,t){return Ei.pointToLocalFrame(this.position,this.quaternion,e,t)}pointToWorld(e,t){return Ei.pointToWorldFrame(this.position,this.quaternion,e,t)}vectorToWorldFrame(e,t){return t===void 0&&(t=new F),this.quaternion.vmult(e,t),t}static pointToLocalFrame(e,t,i,s){return s===void 0&&(s=new F),i.vsub(e,s),t.conjugate(ew),ew.vmult(s,s),s}static pointToWorldFrame(e,t,i,s){return s===void 0&&(s=new F),t.vmult(i,s),s.vadd(e,s),s}static vectorToWorldFrame(e,t,i){return i===void 0&&(i=new F),e.vmult(t,i),i}static vectorToLocalFrame(e,t,i,s){return s===void 0&&(s=new F),t.w*=-1,t.vmult(i,s),t.w*=-1,s}}const ew=new xi;new F;new F;new F;new F;new F,new F,new F,new F,new F,new F,new F,new F;new F;new xi;new Ls;new ao;new ao;new ao;new F;new F;new F;new F;new F;new F;new F;new F;new F;new F;new xi;new F;new F;new F;new F;class ub{constructor(){this.rayFromWorld=new F,this.rayToWorld=new F,this.hitNormalWorld=new F,this.hitPointWorld=new F,this.hasHit=!1,this.shape=null,this.body=null,this.hitFaceIndex=-1,this.distance=-1,this.shouldStop=!1}reset(){this.rayFromWorld.setZero(),this.rayToWorld.setZero(),this.hitNormalWorld.setZero(),this.hitPointWorld.setZero(),this.hasHit=!1,this.shape=null,this.body=null,this.hitFaceIndex=-1,this.distance=-1,this.shouldStop=!1}abort(){this.shouldStop=!0}set(e,t,i,s,r,o,a){this.rayFromWorld.copy(e),this.rayToWorld.copy(t),this.hitNormalWorld.copy(i),this.hitPointWorld.copy(s),this.shape=r,this.body=o,this.distance=a}}let iV,sV,rV,oV,aV,lV,gV;const uy={CLOSEST:1,ANY:2,ALL:4};iV=_e.types.SPHERE;sV=_e.types.PLANE;rV=_e.types.BOX;oV=_e.types.CYLINDER;aV=_e.types.CONVEXPOLYHEDRON;lV=_e.types.HEIGHTFIELD;gV=_e.types.TRIMESH;class mi{get[iV](){return this._intersectSphere}get[sV](){return this._intersectPlane}get[rV](){return this._intersectBox}get[oV](){return this._intersectConvex}get[aV](){return this._intersectConvex}get[lV](){return this._intersectHeightfield}get[gV](){return this._intersectTrimesh}constructor(e,t){e===void 0&&(e=new F),t===void 0&&(t=new F),this.from=e.clone(),this.to=t.clone(),this.direction=new F,this.precision=1e-4,this.checkCollisionResponse=!0,this.skipBackfaces=!1,this.collisionFilterMask=-1,this.collisionFilterGroup=-1,this.mode=mi.ANY,this.result=new ub,this.hasHit=!1,this.callback=i=>{}}intersectWorld(e,t){return this.mode=t.mode||mi.ANY,this.result=t.result||new ub,this.skipBackfaces=!!t.skipBackfaces,this.collisionFilterMask=typeof t.collisionFilterMask<"u"?t.collisionFilterMask:-1,this.collisionFilterGroup=typeof t.collisionFilterGroup<"u"?t.collisionFilterGroup:-1,this.checkCollisionResponse=typeof t.checkCollisionResponse<"u"?t.checkCollisionResponse:!0,t.from&&this.from.copy(t.from),t.to&&this.to.copy(t.to),this.callback=t.callback||(()=>{}),this.hasHit=!1,this.result.reset(),this.updateDirection(),this.getAABB(tw),mf.length=0,e.broadphase.aabbQuery(e,tw,mf),this.intersectBodies(mf),this.hasHit}intersectBody(e,t){t&&(this.result=t,this.updateDirection());const i=this.checkCollisionResponse;if(i&&!e.collisionResponse||!(this.collisionFilterGroup&e.collisionFilterMask)||!(e.collisionFilterGroup&this.collisionFilterMask))return;const s=VT,r=MT;for(let o=0,a=e.shapes.length;oe.boundingSphereRadius)return;const a=this[e.type];a&&a.call(this,e,t,i,s,e)}_intersectBox(e,t,i,s,r){return this._intersectConvex(e.convexPolyhedronRepresentation,t,i,s,r)}_intersectPlane(e,t,i,s,r){const o=this.from,a=this.to,l=this.direction,c=new F(0,0,1);t.vmult(c,c);const u=new F;o.vsub(i,u);const C=u.dot(c);a.vsub(i,u);const d=u.dot(c);if(C*d>0||o.distanceTo(a)=0&&v<=1&&(o.lerp(a,v,h),h.vsub(i,m),m.normalize(),this.reportIntersection(m,h,r,s,-1)),this.result.shouldStop)return;y>=0&&y<=1&&(o.lerp(a,y,h),h.vsub(i,m),m.normalize(),this.reportIntersection(m,h,r,s,-1))}}_intersectConvex(e,t,i,s,r,o){const a=FT,l=iw,c=o&&o.faceList||null,u=e.faces,C=e.vertices,d=e.faceNormals,h=this.direction,m=this.from,v=this.to,y=m.distanceTo(v),A=c?c.length:u.length,b=this.result;for(let f=0;!b.shouldStop&&fy||this.reportIntersection(a,Ki,r,s,B)}}}}_intersectTrimesh(e,t,i,s,r,o){const a=KT,l=DT,c=UT,u=iw,C=zT,d=LT,h=TT,m=kT,v=ET,y=e.indices;e.vertices;const A=this.from,b=this.to,f=this.direction;c.position.copy(i),c.quaternion.copy(t),Ei.vectorToLocalFrame(i,t,f,C),Ei.pointToLocalFrame(i,t,A,d),Ei.pointToLocalFrame(i,t,b,h),h.x*=e.scale.x,h.y*=e.scale.y,h.z*=e.scale.z,d.x*=e.scale.x,d.y*=e.scale.y,d.z*=e.scale.z,h.vsub(d,C),C.normalize();const B=d.distanceSquared(h);e.tree.rayQuery(this,c,l);for(let S=0,x=l.length;!this.result.shouldStop&&S!==x;S++){const R=l[S];e.getNormal(R,a),e.getVertex(y[R*3],$s),$s.vsub(d,u);const M=C.dot(a),Z=a.dot(u)/M;if(Z<0)continue;C.scale(Z,Ki),Ki.vadd(d,Ki),e.getVertex(y[R*3+1],Br),e.getVertex(y[R*3+2],Zr);const V=Ki.distanceSquared(d);!(mi.pointInTriangle(Ki,Br,$s,Zr)||mi.pointInTriangle(Ki,$s,Br,Zr))||V>B||(Ei.vectorToWorldFrame(t,a,v),Ei.pointToWorldFrame(i,t,Ki,m),this.reportIntersection(v,m,r,s,R))}l.length=0}reportIntersection(e,t,i,s,r){const o=this.from,a=this.to,l=o.distanceTo(t),c=this.result;if(!(this.skipBackfaces&&e.dot(this.direction)>0))switch(c.hitFaceIndex=typeof r<"u"?r:-1,this.mode){case mi.ALL:this.hasHit=!0,c.set(o,a,e,t,i,s,l),c.hasHit=!0,this.callback(c);break;case mi.CLOSEST:(l=0&&(C=r*c-o*a)>=0&&u+CDate.now()-n}new F;class lo{constructor(e){e===void 0&&(e=[0,0,0,0,0,0,0,0,0]),this.elements=e}identity(){const e=this.elements;e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1}setZero(){const e=this.elements;e[0]=0,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=0,e[6]=0,e[7]=0,e[8]=0}setTrace(e){const t=this.elements;t[0]=e.x,t[4]=e.y,t[8]=e.z}getTrace(e){e===void 0&&(e=new K);const t=this.elements;return e.x=t[0],e.y=t[4],e.z=t[8],e}vmult(e,t){t===void 0&&(t=new K);const i=this.elements,s=e.x,r=e.y,o=e.z;return t.x=i[0]*s+i[1]*r+i[2]*o,t.y=i[3]*s+i[4]*r+i[5]*o,t.z=i[6]*s+i[7]*r+i[8]*o,t}smult(e){for(let t=0;t0){const r=1/s;this.x*=r,this.y*=r,this.z*=r}else this.x=0,this.y=0,this.z=0;return s}unit(e){e===void 0&&(e=new K);const t=this.x,i=this.y,s=this.z;let r=Math.sqrt(t*t+i*i+s*s);return r>0?(r=1/r,e.x=t*r,e.y=i*r,e.z=s*r):(e.x=1,e.y=0,e.z=0),e}length(){const e=this.x,t=this.y,i=this.z;return Math.sqrt(e*e+t*t+i*i)}lengthSquared(){return this.dot(this)}distanceTo(e){const t=this.x,i=this.y,s=this.z,r=e.x,o=e.y,a=e.z;return Math.sqrt((r-t)*(r-t)+(o-i)*(o-i)+(a-s)*(a-s))}distanceSquared(e){const t=this.x,i=this.y,s=this.z,r=e.x,o=e.y,a=e.z;return(r-t)*(r-t)+(o-i)*(o-i)+(a-s)*(a-s)}scale(e,t){t===void 0&&(t=new K);const i=this.x,s=this.y,r=this.z;return t.x=e*i,t.y=e*s,t.z=e*r,t}vmul(e,t){return t===void 0&&(t=new K),t.x=e.x*this.x,t.y=e.y*this.y,t.z=e.z*this.z,t}addScaledVector(e,t,i){return i===void 0&&(i=new K),i.x=this.x+e*t.x,i.y=this.y+e*t.y,i.z=this.z+e*t.z,i}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}isZero(){return this.x===0&&this.y===0&&this.z===0}negate(e){return e===void 0&&(e=new K),e.x=-this.x,e.y=-this.y,e.z=-this.z,e}tangents(e,t){const i=this.length();if(i>0){const s=JT,r=1/i;s.set(this.x*r,this.y*r,this.z*r);const o=OT;Math.abs(s.x)<.9?(o.set(1,0,0),s.cross(o,e)):(o.set(0,1,0),s.cross(o,e)),s.cross(e,t)}else e.set(1,0,0),t.set(0,1,0)}toString(){return`${this.x},${this.y},${this.z}`}toArray(){return[this.x,this.y,this.z]}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}lerp(e,t,i){const s=this.x,r=this.y,o=this.z;i.x=s+(e.x-s)*t,i.y=r+(e.y-r)*t,i.z=o+(e.z-o)*t}almostEquals(e,t){return t===void 0&&(t=1e-6),!(Math.abs(this.x-e.x)>t||Math.abs(this.y-e.y)>t||Math.abs(this.z-e.z)>t)}almostZero(e){return e===void 0&&(e=1e-6),!(Math.abs(this.x)>e||Math.abs(this.y)>e||Math.abs(this.z)>e)}isAntiparallelTo(e,t){return this.negate(sw),sw.almostEquals(e,t)}clone(){return new K(this.x,this.y,this.z)}}K.ZERO=new K(0,0,0);K.UNIT_X=new K(1,0,0);K.UNIT_Y=new K(0,1,0);K.UNIT_Z=new K(0,0,1);const JT=new K,OT=new K,sw=new K;class Ts{constructor(e){e===void 0&&(e={}),this.lowerBound=new K,this.upperBound=new K,e.lowerBound&&this.lowerBound.copy(e.lowerBound),e.upperBound&&this.upperBound.copy(e.upperBound)}setFromPoints(e,t,i,s){const r=this.lowerBound,o=this.upperBound,a=i;r.copy(e[0]),a&&a.vmult(r,r),o.copy(r);for(let l=1;lo.x&&(o.x=c.x),c.xo.y&&(o.y=c.y),c.yo.z&&(o.z=c.z),c.z=r.x&&t.y<=s.y&&i.y>=r.y&&t.z<=s.z&&i.z>=r.z}getCorners(e,t,i,s,r,o,a,l){const c=this.lowerBound,u=this.upperBound;e.copy(c),t.set(u.x,c.y,c.z),i.set(u.x,u.y,c.z),s.set(c.x,u.y,u.z),r.set(u.x,c.y,u.z),o.set(c.x,u.y,c.z),a.set(c.x,c.y,u.z),l.copy(u)}toLocalFrame(e,t){const i=ow,s=i[0],r=i[1],o=i[2],a=i[3],l=i[4],c=i[5],u=i[6],C=i[7];this.getCorners(s,r,o,a,l,c,u,C);for(let d=0;d!==8;d++){const h=i[d];e.pointToLocal(h,h)}return t.setFromPoints(i)}toWorldFrame(e,t){const i=ow,s=i[0],r=i[1],o=i[2],a=i[3],l=i[4],c=i[5],u=i[6],C=i[7];this.getCorners(s,r,o,a,l,c,u,C);for(let d=0;d!==8;d++){const h=i[d];e.pointToWorld(h,h)}return t.setFromPoints(i)}overlapsRay(e){const{direction:t,from:i}=e,s=1/t.x,r=1/t.y,o=1/t.z,a=(this.lowerBound.x-i.x)*s,l=(this.upperBound.x-i.x)*s,c=(this.lowerBound.y-i.y)*r,u=(this.upperBound.y-i.y)*r,C=(this.lowerBound.z-i.z)*o,d=(this.upperBound.z-i.z)*o,h=Math.max(Math.max(Math.min(a,l),Math.min(c,u)),Math.min(C,d)),m=Math.min(Math.min(Math.max(a,l),Math.max(c,u)),Math.max(C,d));return!(m<0||h>m)}}const rw=new K,ow=[new K,new K,new K,new K,new K,new K,new K,new K];class Ri{constructor(e,t,i,s){e===void 0&&(e=0),t===void 0&&(t=0),i===void 0&&(i=0),s===void 0&&(s=1),this.x=e,this.y=t,this.z=i,this.w=s}set(e,t,i,s){return this.x=e,this.y=t,this.z=i,this.w=s,this}toString(){return`${this.x},${this.y},${this.z},${this.w}`}toArray(){return[this.x,this.y,this.z,this.w]}setFromAxisAngle(e,t){const i=Math.sin(t*.5);return this.x=e.x*i,this.y=e.y*i,this.z=e.z*i,this.w=Math.cos(t*.5),this}toAxisAngle(e){e===void 0&&(e=new K),this.normalize();const t=2*Math.acos(this.w),i=Math.sqrt(1-this.w*this.w);return i<.001?(e.x=this.x,e.y=this.y,e.z=this.z):(e.x=this.x/i,e.y=this.y/i,e.z=this.z/i),[e,t]}setFromVectors(e,t){if(e.isAntiparallelTo(t)){const i=QT,s=jT;e.tangents(i,s),this.setFromAxisAngle(i,Math.PI)}else{const i=e.cross(t);this.x=i.x,this.y=i.y,this.z=i.z,this.w=Math.sqrt(e.length()**2*t.length()**2)+e.dot(t),this.normalize()}return this}mult(e,t){t===void 0&&(t=new Ri);const i=this.x,s=this.y,r=this.z,o=this.w,a=e.x,l=e.y,c=e.z,u=e.w;return t.x=i*u+o*a+s*c-r*l,t.y=s*u+o*l+r*a-i*c,t.z=r*u+o*c+i*l-s*a,t.w=o*u-i*a-s*l-r*c,t}inverse(e){e===void 0&&(e=new Ri);const t=this.x,i=this.y,s=this.z,r=this.w;this.conjugate(e);const o=1/(t*t+i*i+s*s+r*r);return e.x*=o,e.y*=o,e.z*=o,e.w*=o,e}conjugate(e){return e===void 0&&(e=new Ri),e.x=-this.x,e.y=-this.y,e.z=-this.z,e.w=this.w,e}normalize(){let e=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);return e===0?(this.x=0,this.y=0,this.z=0,this.w=0):(e=1/e,this.x*=e,this.y*=e,this.z*=e,this.w*=e),this}normalizeFast(){const e=(3-(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w))/2;return e===0?(this.x=0,this.y=0,this.z=0,this.w=0):(this.x*=e,this.y*=e,this.z*=e,this.w*=e),this}vmult(e,t){t===void 0&&(t=new K);const i=e.x,s=e.y,r=e.z,o=this.x,a=this.y,l=this.z,c=this.w,u=c*i+a*r-l*s,C=c*s+l*i-o*r,d=c*r+o*s-a*i,h=-o*i-a*s-l*r;return t.x=u*c+h*-o+C*-l-d*-a,t.y=C*c+h*-a+d*-o-u*-l,t.z=d*c+h*-l+u*-a-C*-o,t}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w,this}toEuler(e,t){t===void 0&&(t="YZX");let i,s,r;const o=this.x,a=this.y,l=this.z,c=this.w;switch(t){case"YZX":const u=o*a+l*c;if(u>.499&&(i=2*Math.atan2(o,c),s=Math.PI/2,r=0),u<-.499&&(i=-2*Math.atan2(o,c),s=-Math.PI/2,r=0),i===void 0){const C=o*o,d=a*a,h=l*l;i=Math.atan2(2*a*c-2*o*l,1-2*d-2*h),s=Math.asin(2*u),r=Math.atan2(2*o*c-2*a*l,1-2*C-2*h)}break;default:throw new Error(`Euler order ${t} not supported yet.`)}e.y=i,e.z=s,e.x=r}setFromEuler(e,t,i,s){s===void 0&&(s="XYZ");const r=Math.cos(e/2),o=Math.cos(t/2),a=Math.cos(i/2),l=Math.sin(e/2),c=Math.sin(t/2),u=Math.sin(i/2);return s==="XYZ"?(this.x=l*o*a+r*c*u,this.y=r*c*a-l*o*u,this.z=r*o*u+l*c*a,this.w=r*o*a-l*c*u):s==="YXZ"?(this.x=l*o*a+r*c*u,this.y=r*c*a-l*o*u,this.z=r*o*u-l*c*a,this.w=r*o*a+l*c*u):s==="ZXY"?(this.x=l*o*a-r*c*u,this.y=r*c*a+l*o*u,this.z=r*o*u+l*c*a,this.w=r*o*a-l*c*u):s==="ZYX"?(this.x=l*o*a-r*c*u,this.y=r*c*a+l*o*u,this.z=r*o*u-l*c*a,this.w=r*o*a+l*c*u):s==="YZX"?(this.x=l*o*a+r*c*u,this.y=r*c*a+l*o*u,this.z=r*o*u-l*c*a,this.w=r*o*a-l*c*u):s==="XZY"&&(this.x=l*o*a-r*c*u,this.y=r*c*a-l*o*u,this.z=r*o*u+l*c*a,this.w=r*o*a+l*c*u),this}clone(){return new Ri(this.x,this.y,this.z,this.w)}slerp(e,t,i){i===void 0&&(i=new Ri);const s=this.x,r=this.y,o=this.z,a=this.w;let l=e.x,c=e.y,u=e.z,C=e.w,d,h,m,v,y;return h=s*l+r*c+o*u+a*C,h<0&&(h=-h,l=-l,c=-c,u=-u,C=-C),1-h>1e-6?(d=Math.acos(h),m=Math.sin(d),v=Math.sin((1-t)*d)/m,y=Math.sin(t*d)/m):(v=1-t,y=t),i.x=v*s+y*l,i.y=v*r+y*c,i.z=v*o+y*u,i.w=v*a+y*C,i}integrate(e,t,i,s){s===void 0&&(s=new Ri);const r=e.x*i.x,o=e.y*i.y,a=e.z*i.z,l=this.x,c=this.y,u=this.z,C=this.w,d=t*.5;return s.x+=d*(r*C+o*u-a*c),s.y+=d*(o*C+a*l-r*u),s.z+=d*(a*C+r*c-o*l),s.w+=d*(-r*l-o*c-a*u),s}}const QT=new K,jT=new K,qT={SPHERE:1,PLANE:2,BOX:4,COMPOUND:8,CONVEXPOLYHEDRON:16,HEIGHTFIELD:32,PARTICLE:64,CYLINDER:128,TRIMESH:256};class Je{constructor(e){e===void 0&&(e={}),this.id=Je.idCounter++,this.type=e.type||0,this.boundingSphereRadius=0,this.collisionResponse=e.collisionResponse?e.collisionResponse:!0,this.collisionFilterGroup=e.collisionFilterGroup!==void 0?e.collisionFilterGroup:1,this.collisionFilterMask=e.collisionFilterMask!==void 0?e.collisionFilterMask:-1,this.material=e.material?e.material:null,this.body=null}updateBoundingSphereRadius(){throw`computeBoundingSphereRadius() not implemented for shape type ${this.type}`}volume(){throw`volume() not implemented for shape type ${this.type}`}calculateLocalInertia(e,t){throw`calculateLocalInertia() not implemented for shape type ${this.type}`}calculateWorldAABB(e,t,i,s){throw`calculateWorldAABB() not implemented for shape type ${this.type}`}}Je.idCounter=0;Je.types=qT;class ki{constructor(e){e===void 0&&(e={}),this.position=new K,this.quaternion=new Ri,e.position&&this.position.copy(e.position),e.quaternion&&this.quaternion.copy(e.quaternion)}pointToLocal(e,t){return ki.pointToLocalFrame(this.position,this.quaternion,e,t)}pointToWorld(e,t){return ki.pointToWorldFrame(this.position,this.quaternion,e,t)}vectorToWorldFrame(e,t){return t===void 0&&(t=new K),this.quaternion.vmult(e,t),t}static pointToLocalFrame(e,t,i,s){return s===void 0&&(s=new K),i.vsub(e,s),t.conjugate(aw),aw.vmult(s,s),s}static pointToWorldFrame(e,t,i,s){return s===void 0&&(s=new K),t.vmult(i,s),s.vadd(e,s),s}static vectorToWorldFrame(e,t,i){return i===void 0&&(i=new K),e.vmult(t,i),i}static vectorToLocalFrame(e,t,i,s){return s===void 0&&(s=new K),t.w*=-1,t.vmult(i,s),t.w*=-1,s}}const aw=new Ri;new K;new K;new K;new K;new K,new K,new K,new K,new K,new K,new K,new K;new K;new Ri;new Ts;new lo;new lo;new lo;new K;new K;new K;new K;new K;new K;new K;new K;new K;new K;new Ri;new K;new K;new K;new K;class Cb{constructor(){this.rayFromWorld=new K,this.rayToWorld=new K,this.hitNormalWorld=new K,this.hitPointWorld=new K,this.hasHit=!1,this.shape=null,this.body=null,this.hitFaceIndex=-1,this.distance=-1,this.shouldStop=!1}reset(){this.rayFromWorld.setZero(),this.rayToWorld.setZero(),this.hitNormalWorld.setZero(),this.hitPointWorld.setZero(),this.hasHit=!1,this.shape=null,this.body=null,this.hitFaceIndex=-1,this.distance=-1,this.shouldStop=!1}abort(){this.shouldStop=!0}set(e,t,i,s,r,o,a){this.rayFromWorld.copy(e),this.rayToWorld.copy(t),this.hitNormalWorld.copy(i),this.hitPointWorld.copy(s),this.shape=r,this.body=o,this.distance=a}}let cV,IV,uV,CV,dV,hV,AV;const Cy={CLOSEST:1,ANY:2,ALL:4};cV=Je.types.SPHERE;IV=Je.types.PLANE;uV=Je.types.BOX;CV=Je.types.CYLINDER;dV=Je.types.CONVEXPOLYHEDRON;hV=Je.types.HEIGHTFIELD;AV=Je.types.TRIMESH;class fi{get[cV](){return this._intersectSphere}get[IV](){return this._intersectPlane}get[uV](){return this._intersectBox}get[CV](){return this._intersectConvex}get[dV](){return this._intersectConvex}get[hV](){return this._intersectHeightfield}get[AV](){return this._intersectTrimesh}constructor(e,t){e===void 0&&(e=new K),t===void 0&&(t=new K),this.from=e.clone(),this.to=t.clone(),this.direction=new K,this.precision=1e-4,this.checkCollisionResponse=!0,this.skipBackfaces=!1,this.collisionFilterMask=-1,this.collisionFilterGroup=-1,this.mode=fi.ANY,this.result=new Cb,this.hasHit=!1,this.callback=i=>{}}intersectWorld(e,t){return this.mode=t.mode||fi.ANY,this.result=t.result||new Cb,this.skipBackfaces=!!t.skipBackfaces,this.collisionFilterMask=typeof t.collisionFilterMask<"u"?t.collisionFilterMask:-1,this.collisionFilterGroup=typeof t.collisionFilterGroup<"u"?t.collisionFilterGroup:-1,this.checkCollisionResponse=typeof t.checkCollisionResponse<"u"?t.checkCollisionResponse:!0,t.from&&this.from.copy(t.from),t.to&&this.to.copy(t.to),this.callback=t.callback||(()=>{}),this.hasHit=!1,this.result.reset(),this.updateDirection(),this.getAABB(lw),bf.length=0,e.broadphase.aabbQuery(e,lw,bf),this.intersectBodies(bf),this.hasHit}intersectBody(e,t){t&&(this.result=t,this.updateDirection());const i=this.checkCollisionResponse;if(i&&!e.collisionResponse||!(this.collisionFilterGroup&e.collisionFilterMask)||!(e.collisionFilterGroup&this.collisionFilterMask))return;const s=$T,r=eE;for(let o=0,a=e.shapes.length;oe.boundingSphereRadius)return;const a=this[e.type];a&&a.call(this,e,t,i,s,e)}_intersectBox(e,t,i,s,r){return this._intersectConvex(e.convexPolyhedronRepresentation,t,i,s,r)}_intersectPlane(e,t,i,s,r){const o=this.from,a=this.to,l=this.direction,c=new K(0,0,1);t.vmult(c,c);const u=new K;o.vsub(i,u);const C=u.dot(c);a.vsub(i,u);const d=u.dot(c);if(C*d>0||o.distanceTo(a)=0&&v<=1&&(o.lerp(a,v,h),h.vsub(i,m),m.normalize(),this.reportIntersection(m,h,r,s,-1)),this.result.shouldStop)return;y>=0&&y<=1&&(o.lerp(a,y,h),h.vsub(i,m),m.normalize(),this.reportIntersection(m,h,r,s,-1))}}_intersectConvex(e,t,i,s,r,o){const a=rE,l=cw,c=o&&o.faceList||null,u=e.faces,C=e.vertices,d=e.faceNormals,h=this.direction,m=this.from,v=this.to,y=m.distanceTo(v),A=c?c.length:u.length,b=this.result;for(let f=0;!b.shouldStop&&fy||this.reportIntersection(a,zi,r,s,B)}}}}_intersectTrimesh(e,t,i,s,r,o){const a=oE,l=uE,c=CE,u=cw,C=aE,d=lE,h=gE,m=IE,v=cE,y=e.indices;e.vertices;const A=this.from,b=this.to,f=this.direction;c.position.copy(i),c.quaternion.copy(t),ki.vectorToLocalFrame(i,t,f,C),ki.pointToLocalFrame(i,t,A,d),ki.pointToLocalFrame(i,t,b,h),h.x*=e.scale.x,h.y*=e.scale.y,h.z*=e.scale.z,d.x*=e.scale.x,d.y*=e.scale.y,d.z*=e.scale.z,h.vsub(d,C),C.normalize();const B=d.distanceSquared(h);e.tree.rayQuery(this,c,l);for(let S=0,x=l.length;!this.result.shouldStop&&S!==x;S++){const R=l[S];e.getNormal(R,a),e.getVertex(y[R*3],er),er.vsub(d,u);const M=C.dot(a),Z=a.dot(u)/M;if(Z<0)continue;C.scale(Z,zi),zi.vadd(d,zi),e.getVertex(y[R*3+1],wr),e.getVertex(y[R*3+2],Sr);const V=zi.distanceSquared(d);!(fi.pointInTriangle(zi,wr,er,Sr)||fi.pointInTriangle(zi,er,wr,Sr))||V>B||(ki.vectorToWorldFrame(t,a,v),ki.pointToWorldFrame(i,t,zi,m),this.reportIntersection(v,m,r,s,R))}l.length=0}reportIntersection(e,t,i,s,r){const o=this.from,a=this.to,l=o.distanceTo(t),c=this.result;if(!(this.skipBackfaces&&e.dot(this.direction)>0))switch(c.hitFaceIndex=typeof r<"u"?r:-1,this.mode){case fi.ALL:this.hasHit=!0,c.set(o,a,e,t,i,s,l),c.hasHit=!0,this.callback(c);break;case fi.CLOSEST:(l=0&&(C=r*c-o*a)>=0&&u+CDate.now()-n}new K;const hE=U.createContext(null),AE=()=>U.useContext(hE),pV=U.createContext(null),pE=()=>{const n=U.useContext(pV);if(!n)throw new Error("Physics context not found. @react-three/cannon & components can only be used within a Physics provider");return n};new H(1,1,1);new H;new Fe;const Iw=new Xt;function mE(n){const e=U.useRef(null);return n&&typeof n!="function"?n:e}function uw(n){return n.charAt(0).toUpperCase()+n.slice(1)}function si(n,e){const t=e===void 0?"":`/${e}`;return typeof n=="function"?null:n&&n.current&&`${n.current.uuid}${t}`}const fE=new bl,bE=new xn,vE=n=>e=>n(fE.setFromQuaternion(bE.fromArray(e)).toArray());let mV=0;function yf(n,e,t,i,s,r){return r===void 0&&(r="bodies"),o=>{const a=mV++;t[a]={[i]:o};const l=si(n,s);return l&&e.subscribe({props:{id:a,target:r,type:i},uuid:l}),()=>{delete t[a],e.unsubscribe({props:a})}}}function Cw(n,e){let{position:t=[0,0,0],rotation:i=[0,0,0],userData:s={}}=e;n.userData=s,n.position.set(...t),n.rotation.set(...i),n.updateMatrix()}function dw(n,e,t){let{onCollide:i,onCollideBegin:s,onCollideEnd:r}=e;n[t]={collide:i,collideBegin:s,collideEnd:r}}function yE(n,e,t,i,s){i===void 0&&(i=null),s===void 0&&(s=[]);const r=mE(i),{events:o,refs:a,scaleOverrides:l,subscriptions:c,worker:u}=pE(),C=AE();U.useLayoutEffect(()=>{r.current||(r.current=new Xt);const h=r.current,m=u,v=h instanceof Tg?(h.instanceMatrix.setUsage(A1),h.count):1,y=h instanceof Tg?new Array(v).fill(0).map((b,f)=>`${h.uuid}/${f}`):[h.uuid],A=h instanceof Tg?y.map((b,f)=>{const B=e(f);return Cw(Iw,B),h.setMatrixAt(f,Iw.matrix),h.instanceMatrix.needsUpdate=!0,a[b]=h,C?.add(b,B,n),dw(o,B,b),{...B,args:t(B.args)}}):y.map((b,f)=>{const B=e(f);return Cw(h,B),a[b]=h,C?.add(b,B,n),dw(o,B,b),{...B,args:t(B.args)}});return m.addBodies({props:A.map(b=>{let{onCollide:f,onCollideBegin:B,onCollideEnd:S,...x}=b;return{onCollide:!!f,...x}}),type:n,uuid:y}),()=>{y.forEach(b=>{delete a[b],C?.remove(b),delete o[b]}),m.removeBodies({uuid:y})}},s);const d=U.useMemo(()=>{const h=(f,B)=>{const S=`set${uw(f)}`;return{set:x=>{const R=si(r,B);R&&u[S]({props:x,uuid:R})},subscribe:yf(r,u,c,f,B)}},m=f=>({copy:S=>{let{w:x,x:R,y:M,z:Z}=S;const V=si(r,f);V&&u.setQuaternion({props:[R,M,Z,x],uuid:V})},set:(S,x,R,M)=>{const Z=si(r,f);Z&&u.setQuaternion({props:[S,x,R,M],uuid:Z})},subscribe:yf(r,u,c,"quaternion",f)}),v=f=>({copy:B=>{let{x:S,y:x,z:R}=B;const M=si(r,f);M&&u.setRotation({props:[S,x,R],uuid:M})},set:(B,S,x)=>{const R=si(r,f);R&&u.setRotation({props:[B,S,x],uuid:R})},subscribe:B=>{const S=mV++,x="bodies",R="quaternion",M=si(r,f);return c[S]={[R]:vE(B)},M&&u.subscribe({props:{id:S,target:x,type:R},uuid:M}),()=>{delete c[S],u.unsubscribe({props:S})}}}),y=(f,B)=>{const S=`set${uw(f)}`;return{copy:x=>{let{x:R,y:M,z:Z}=x;const V=si(r,B);V&&u[S]({props:[R,M,Z],uuid:V})},set:(x,R,M)=>{const Z=si(r,B);Z&&u[S]({props:[x,R,M],uuid:Z})},subscribe:yf(r,u,c,f,B)}};function A(f){return{allowSleep:h("allowSleep",f),angularDamping:h("angularDamping",f),angularFactor:y("angularFactor",f),angularVelocity:y("angularVelocity",f),applyForce(B,S){const x=si(r,f);x&&u.applyForce({props:[B,S],uuid:x})},applyImpulse(B,S){const x=si(r,f);x&&u.applyImpulse({props:[B,S],uuid:x})},applyLocalForce(B,S){const x=si(r,f);x&&u.applyLocalForce({props:[B,S],uuid:x})},applyLocalImpulse(B,S){const x=si(r,f);x&&u.applyLocalImpulse({props:[B,S],uuid:x})},applyTorque(B){const S=si(r,f);S&&u.applyTorque({props:[B],uuid:S})},collisionFilterGroup:h("collisionFilterGroup",f),collisionFilterMask:h("collisionFilterMask",f),collisionResponse:h("collisionResponse",f),fixedRotation:h("fixedRotation",f),isTrigger:h("isTrigger",f),linearDamping:h("linearDamping",f),linearFactor:y("linearFactor",f),mass:h("mass",f),material:h("material",f),position:y("position",f),quaternion:m(f),rotation:v(f),scaleOverride(B){const S=si(r,f);S&&(l[S]=new H(...B))},sleep(){const B=si(r,f);B&&u.sleep({uuid:B})},sleepSpeedLimit:h("sleepSpeedLimit",f),sleepTimeLimit:h("sleepTimeLimit",f),userData:h("userData",f),velocity:y("velocity",f),wakeUp(){const B=si(r,f);B&&u.wakeUp({uuid:B})}}}const b={};return{...A(void 0),at:f=>b[f]||(b[f]=A(f))}},[]);return[r,d]}function fV(n,e,t){return yE("Sphere",n,function(i){if(i===void 0&&(i=[1]),!Array.isArray(i))throw new Error("useSphere args must be an array");return[i[0]]},e,t)}const GE=new H,BE=new H(1,1,1),ZE=new xn,th=new Fe;function hw(n,e,t,i,s){return i===void 0&&(i=BE),n!==void 0?(th.compose(GE.fromArray(e,n*3),ZE.fromArray(t,n*4),i),s&&(s.matrixAutoUpdate=!1,s.matrix.copy(th)),th):th.identity()}const wE=()=>{const n=[];return e=>n.includes(e)?!1:!!n.push(e)};function SE(n){let{allowSleep:e=!1,axisIndex:t=0,broadphase:i="Naive",children:s,defaultContactMaterial:r={contactEquationStiffness:1e6},frictionGravity:o=null,gravity:a=[0,-9.81,0],isPaused:l=!1,iterations:c=5,maxSubSteps:u=10,quatNormalizeFast:C=!1,quatNormalizeSkip:d=0,shouldInvalidate:h=!0,size:m=1e3,solver:v="GS",stepSize:y=1/60,tolerance:A=.001}=n;const{invalidate:b}=$i(),[{bodies:f,events:B,refs:S,scaleOverrides:x,subscriptions:R,worker:M}]=U.useState(()=>({bodies:{},events:{},refs:{},scaleOverrides:{},subscriptions:{},worker:new BT({allowSleep:e,axisIndex:t,broadphase:i,defaultContactMaterial:r,frictionGravity:o,gravity:a,iterations:c,quatNormalizeFast:C,quatNormalizeSkip:d,size:m,solver:v,tolerance:A})}));let Z=0;const V=U.useCallback((le,L)=>{l||(Z+=L,M.step({maxSubSteps:u,stepSize:y,timeSinceLastCalled:Z}),Z=0)},[l,u,y]),N=le=>{var L;let{body:J,contact:{bi:P,bj:ce,...se},target:ee,...re}=le;const ve=(L=B[ee])==null?void 0:L.collide;ve&&ve({body:S[J],contact:{bi:S[P],bj:S[ce],...se},target:S[ee],...re})},D=le=>{var L,J;let{bodyA:P,bodyB:ce}=le;const se=(L=B[P])==null?void 0:L.collideBegin;se&&se({body:S[ce],op:"event",target:S[P],type:"collideBegin"});const ee=(J=B[ce])==null?void 0:J.collideBegin;ee&&ee({body:S[P],op:"event",target:S[ce],type:"collideBegin"})},k=le=>{var L,J;let{bodyA:P,bodyB:ce}=le;const se=(L=B[P])==null?void 0:L.collideEnd;se&&se({body:S[ce],op:"event",target:S[P],type:"collideEnd"});const ee=(J=B[ce])==null?void 0:J.collideEnd;ee&&ee({body:S[P],op:"event",target:S[ce],type:"collideEnd"})},$=le=>{let{active:L,bodies:J=[],observations:P,positions:ce,quaternions:se}=le;for(let ee=0;ee{let[re,ve,ye]=ee;const nt=(R[re]||{})[ye];nt&&nt(ve)}),!!L){for(const ee of Object.values(S).filter(wE()))if(ee instanceof Tg)for(let re=0;re{var L;let{body:J,ray:{uuid:P,...ce},...se}=le;const ee=(L=B[P])==null?void 0:L.rayhit;ee&&ee({body:J?S[J]:null,ray:{uuid:P,...ce},...se})};_u(V),U.useEffect(()=>(M.connect(),M.init(),M.on("collide",N),M.on("collideBegin",D),M.on("collideEnd",k),M.on("frame",$),M.on("rayhit",te),()=>{M.terminate(),M.removeAllListeners()}),[]),U.useEffect(()=>{M.axisIndex=t},[t]),U.useEffect(()=>{M.broadphase=i},[i]),U.useEffect(()=>{M.gravity=a},[a]),U.useEffect(()=>{M.iterations=c},[c]),U.useEffect(()=>{M.tolerance=A},[A]);const Ce=U.useMemo(()=>({bodies:f,events:B,refs:S,scaleOverrides:x,subscriptions:R,worker:M}),[f,B,S,R,M]);return E.jsx(pV.Provider,{value:Ce,children:s})}/** + `)+g.join(" > ")}return null},t.getPublicRootInstance=function(g){if(g=g.current,!g.child)return null;switch(g.child.tag){case 5:return Ce(g.child.stateNode);default:return g.child.stateNode}},t.injectIntoDevTools=function(g){if(g={bundleType:g.bundleType,version:g.version,rendererPackageName:g.rendererPackageName,rendererConfig:g.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:a.ReactCurrentDispatcher,findHostInstanceByFiber:jM,findFiberByHostInstance:g.findFiberByHostInstance||qM,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.0.0-fc46dba67-20220329"},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")g=!1;else{var I=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(I.isDisabled||!I.supportsFiber)g=!0;else{try{lC=I.inject(g),hr=I}catch{}g=!!I.checkDCE}}return g},t.isAlreadyRendering=function(){return!1},t.observeVisibleRects=function(g,I,p,G){if(!ut)throw Error(o(363));g=Op(g,I);var w=Me(g,p,G).disconnect;return{disconnect:function(){w()}}},t.registerMutableSourceForHydration=function(g,I){var p=I._getVersion;p=p(I._source),g.mutableSourceEagerHydrationData==null?g.mutableSourceEagerHydrationData=[I,p]:g.mutableSourceEagerHydrationData.push(I,p)},t.runWithPriority=function(g,I){var p=Kt;try{return Kt=g,I()}finally{Kt=p}},t.shouldError=function(){return null},t.shouldSuspend=function(){return!1},t.updateContainer=function(g,I,p,G){var w=I.current,W=Zi(),z=So(w);return p=sB(p),I.context===null?I.context=p:I.pendingContext=p,I=Er(W,z),I.payload={element:g},G=G===void 0?null:G,G!==null&&(I.callback=G),Bo(w,I),g=ws(w,z,W),g!==null&&CC(g,w,z),z},t};HW.exports=WL;var VL=HW.exports;const ML=Sb(VL);function FW(n,e,t=(i,s)=>i===s){if(n===e)return!0;if(!n||!e)return!1;const i=n.length;if(e.length!==i)return!1;for(let s=0;ss.response=r).then(()=>{i.lifespan&&i.lifespan>0&&setTimeout(()=>{const r=io.indexOf(s);r!==-1&&io.splice(r,1)},i.lifespan)}).catch(r=>s.error=r)};if(io.push(s),!t)throw s.promise}const NL=(n,e,t)=>KW(n,e,!1,t),HL=(n,e,t)=>void KW(n,e,!0,t),XL=n=>{if(n===void 0||n.length===0)io.splice(0,io.length);else{const e=io.find(t=>FW(n,t.keys,t.equal));if(e){const t=io.indexOf(e);t!==-1&&io.splice(t,1)}}},cy={},zW=n=>void Object.assign(cy,n);function YL(n,e){function t(u,{args:C=[],attach:d,...h},m){let v=`${u[0].toUpperCase()}${u.slice(1)}`,y;if(u==="primitive"){if(h.object===void 0)throw new Error("R3F: Primitives without 'object' are invalid!");const A=h.object;y=Ag(A,{type:u,root:m,attach:d,primitive:!0})}else{const A=cy[v];if(!A)throw new Error(`R3F: ${v} 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`);if(!Array.isArray(C))throw new Error("R3F: The args prop must be an array!");y=Ag(new A(...C),{type:u,root:m,attach:d,memoizedProps:{args:C}})}return y.__r3f.attach===void 0&&(y instanceof ft?y.__r3f.attach="geometry":y instanceof Jn&&(y.__r3f.attach="material")),v!=="inject"&&Af(y,h),y}function i(u,C){let d=!1;if(C){var h,m;(h=C.__r3f)!=null&&h.attach?hf(u,C,C.__r3f.attach):C.isObject3D&&u.isObject3D&&(u.add(C),d=!0),d||(m=u.__r3f)==null||m.objects.push(C),C.__r3f||Ag(C,{}),C.__r3f.parent=u,db(C),pg(C)}}function s(u,C,d){let h=!1;if(C){var m,v;if((m=C.__r3f)!=null&&m.attach)hf(u,C,C.__r3f.attach);else if(C.isObject3D&&u.isObject3D){C.parent=u,C.dispatchEvent({type:"added"});const y=u.children.filter(b=>b!==C),A=y.indexOf(d);u.children=[...y.slice(0,A),C,...y.slice(A)],h=!0}h||(v=u.__r3f)==null||v.objects.push(C),C.__r3f||Ag(C,{}),C.__r3f.parent=u,db(C),pg(C)}}function r(u,C,d=!1){u&&[...u].forEach(h=>o(C,h,d))}function o(u,C,d){if(C){var h,m,v;if(C.__r3f&&(C.__r3f.parent=null),(h=u.__r3f)!=null&&h.objects&&(u.__r3f.objects=u.__r3f.objects.filter(B=>B!==C)),(m=C.__r3f)!=null&&m.attach)PZ(u,C,C.__r3f.attach);else if(C.isObject3D&&u.isObject3D){var y;u.remove(C),(y=C.__r3f)!=null&&y.root&&kL(C.__r3f.root,C)}const b=(v=C.__r3f)==null?void 0:v.primitive,f=d===void 0?C.dispose!==null&&!b:d;if(!b){var A;r((A=C.__r3f)==null?void 0:A.objects,C,f),r(C.children,C,f)}C.__r3f&&(delete C.__r3f.root,delete C.__r3f.objects,delete C.__r3f.handlers,delete C.__r3f.memoizedProps,b||delete C.__r3f),f&&C.dispose&&C.type!=="Scene"&&ub.unstable_scheduleCallback(ub.unstable_IdlePriority,()=>{try{C.dispose()}catch{}}),pg(u)}}function a(u,C,d,h){var m;const v=(m=u.__r3f)==null?void 0:m.parent;if(!v)return;const y=t(C,d,u.__r3f.root);if(u.children){for(const A of u.children)A.__r3f&&i(y,A);u.children=u.children.filter(A=>!A.__r3f)}u.__r3f.objects.forEach(A=>i(y,A)),u.__r3f.objects=[],u.__r3f.autoRemovedBeforeAppend||o(v,u),y.parent&&(y.__r3f.autoRemovedBeforeAppend=!0),i(v,y),y.raycast&&y.__r3f.eventCount&&y.__r3f.root.getState().internal.interaction.push(y),[h,h.alternate].forEach(A=>{A!==null&&(A.stateNode=y,A.ref&&(typeof A.ref=="function"?A.ref(y):A.ref.current=y))})}const l=()=>console.warn("Text is not allowed in the R3F tree! This could be stray whitespace or characters.");return{reconciler:ML({createInstance:t,removeChild:o,appendChild:i,appendInitialChild:i,insertBefore:s,supportsMutation:!0,isPrimaryRenderer:!1,supportsPersistence:!1,supportsHydration:!1,noTimeout:-1,appendChildToContainer:(u,C)=>{if(!C)return;const d=u.getState().scene;d.__r3f&&(d.__r3f.root=u,i(d,C))},removeChildFromContainer:(u,C)=>{C&&o(u.getState().scene,C)},insertInContainerBefore:(u,C,d)=>{if(!C||!d)return;const h=u.getState().scene;h.__r3f&&s(h,C,d)},getRootHostContext:()=>null,getChildHostContext:u=>u,finalizeInitialChildren(u){var C;return!!((C=u?.__r3f)!=null?C:{}).handlers},prepareUpdate(u,C,d,h){if(u.__r3f.primitive&&h.object&&h.object!==u)return[!0];{const{args:m=[],children:v,...y}=h,{args:A=[],children:b,...f}=d;if(!Array.isArray(m))throw new Error("R3F: the args prop must be an array!");if(m.some((S,x)=>S!==A[x]))return[!0];const B=PW(u,y,f,!0);return B.changes.length?[!1,B]:null}},commitUpdate(u,[C,d],h,m,v,y){C?a(u,h,v,y):Af(u,d)},commitMount(u,C,d,h){var m;const v=(m=u.__r3f)!=null?m:{};u.raycast&&v.handlers&&v.eventCount&&u.__r3f.root.getState().internal.interaction.push(u)},getPublicInstance:u=>u,prepareForCommit:()=>null,preparePortalMount:u=>Ag(u.getState().scene),resetAfterCommit:()=>{},shouldSetTextContent:()=>!1,clearContainer:()=>!1,hideInstance(u){var C;const{attach:d,parent:h}=(C=u.__r3f)!=null?C:{};d&&h&&PZ(h,u,d),u.isObject3D&&(u.visible=!1),pg(u)},unhideInstance(u,C){var d;const{attach:h,parent:m}=(d=u.__r3f)!=null?d:{};h&&m&&hf(m,u,h),(u.isObject3D&&C.visible==null||C.visible)&&(u.visible=!0),pg(u)},createTextInstance:l,hideTextInstance:l,unhideTextInstance:l,getCurrentEventPriority:()=>e?e():Hg.DefaultEventPriority,beforeActiveInstanceBlur:()=>{},afterActiveInstanceBlur:()=>{},detachDeletedInstance:()=>{},now:typeof performance<"u"&&an.fun(performance.now)?performance.now:an.fun(Date.now)?Date.now:()=>0,scheduleTimeout:an.fun(setTimeout)?setTimeout:void 0,cancelTimeout:an.fun(clearTimeout)?clearTimeout:void 0}),applyProps:Af}}var TZ,kZ;const df=n=>"colorSpace"in n||"outputColorSpace"in n,LW=()=>{var n;return(n=cy.ColorManagement)!=null?n:null},EW=n=>n&&n.isOrthographicCamera,FL=n=>n&&n.hasOwnProperty("current"),Ac=typeof window<"u"&&((TZ=window.document)!=null&&TZ.createElement||((kZ=window.navigator)==null?void 0:kZ.product)==="ReactNative")?k.useLayoutEffect:k.useEffect;function TW(n){const e=k.useRef(n);return Ac(()=>void(e.current=n),[n]),e}function KL({set:n}){return Ac(()=>(n(new Promise(()=>null)),()=>n(!1)),[n]),null}class kW extends k.Component{constructor(...e){super(...e),this.state={error:!1}}componentDidCatch(e){this.props.set(e)}render(){return this.state.error?null:this.props.children}}kW.getDerivedStateFromError=()=>({error:!0});const DW="__default",DZ=new Map,zL=n=>n&&!!n.memoized&&!!n.changes;function UW(n){var e;const t=typeof window<"u"?(e=window.devicePixelRatio)!=null?e:2:1;return Array.isArray(n)?Math.min(Math.max(n[0],t),n[1]):n}const rI=n=>{var e;return(e=n.__r3f)==null?void 0:e.root.getState()},an={obj:n=>n===Object(n)&&!an.arr(n)&&typeof n!="function",fun:n=>typeof n=="function",str:n=>typeof n=="string",num:n=>typeof n=="number",boo:n=>typeof n=="boolean",und:n=>n===void 0,arr:n=>Array.isArray(n),equ(n,e,{arrays:t="shallow",objects:i="reference",strict:s=!0}={}){if(typeof n!=typeof e||!!n!=!!e)return!1;if(an.str(n)||an.num(n))return n===e;const r=an.obj(n);if(r&&i==="reference")return n===e;const o=an.arr(n);if(o&&t==="reference")return n===e;if((o||r)&&n===e)return!0;let a;for(a in n)if(!(a in e))return!1;if(r&&t==="shallow"&&i==="shallow"){for(a in s?e:n)if(!an.equ(n[a],e[a],{strict:s,objects:"reference"}))return!1}else for(a in s?e:n)if(n[a]!==e[a])return!1;if(an.und(a)){if(o&&n.length===0&&e.length===0||r&&Object.keys(n).length===0&&Object.keys(e).length===0)return!0;if(n!==e)return!1}return!0}};function LL(n){const e={nodes:{},materials:{}};return n&&n.traverse(t=>{t.name&&(e.nodes[t.name]=t),t.material&&!e.materials[t.material.name]&&(e.materials[t.material.name]=t.material)}),e}function EL(n){n.dispose&&n.type!=="Scene"&&n.dispose();for(const e in n)e.dispose==null||e.dispose(),delete n[e]}function Ag(n,e){const t=n;return(e!=null&&e.primitive||!t.__r3f)&&(t.__r3f={type:"",root:null,previousAttach:null,memoizedProps:{},eventCount:0,handlers:{},objects:[],parent:null,...e}),n}function Cb(n,e){let t=n;if(e.includes("-")){const i=e.split("-"),s=i.pop();return t=i.reduce((r,o)=>r[o],n),{target:t,key:s}}else return{target:t,key:e}}const UZ=/-\d+$/;function hf(n,e,t){if(an.str(t)){if(UZ.test(t)){const r=t.replace(UZ,""),{target:o,key:a}=Cb(n,r);Array.isArray(o[a])||(o[a]=[])}const{target:i,key:s}=Cb(n,t);e.__r3f.previousAttach=i[s],i[s]=e}else e.__r3f.previousAttach=t(n,e)}function PZ(n,e,t){var i,s;if(an.str(t)){const{target:r,key:o}=Cb(n,t),a=e.__r3f.previousAttach;a===void 0?delete r[o]:r[o]=a}else(i=e.__r3f)==null||i.previousAttach==null||i.previousAttach(n,e);(s=e.__r3f)==null||delete s.previousAttach}function PW(n,{children:e,key:t,ref:i,...s},{children:r,key:o,ref:a,...l}={},c=!1){var u;const C=(u=n?.__r3f)!=null?u:{},d=Object.entries(s),h=[];if(c){const v=Object.keys(l);for(let y=0;y{var A;if((A=n.__r3f)!=null&&A.primitive&&v==="object"||an.equ(y,l[v]))return;if(/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/.test(v))return h.push([v,y,!0,[]]);let b=[];v.includes("-")&&(b=v.split("-")),h.push([v,y,!1,b]);for(const f in s){const B=s[f];f.startsWith(`${v}-`)&&h.push([f,B,!1,f.split("-")])}});const m={...s};return C.memoizedProps&&C.memoizedProps.args&&(m.args=C.memoizedProps.args),C.memoizedProps&&C.memoizedProps.attach&&(m.attach=C.memoizedProps.attach),{memoized:m,changes:h}}function Af(n,e){var t,i,s;const r=(t=n.__r3f)!=null?t:{},o=r.root,a=(i=o==null||o.getState==null?void 0:o.getState())!=null?i:{},{memoized:l,changes:c}=zL(e)?e:PW(n,e),u=r.eventCount;n.__r3f&&(n.__r3f.memoizedProps=l);for(let d=0;df[B],n),!(b&&b.set))){const[f,...B]=y.reverse();A=B.reverse().reduce((S,x)=>S[x],n),h=f}if(m===DW+"remove")if(A.constructor){let f=DZ.get(A.constructor);f||(f=new A.constructor,DZ.set(A.constructor,f)),m=f[h]}else m=0;if(v)m?r.handlers[h]=m:delete r.handlers[h],r.eventCount=Object.keys(r.handlers).length;else if(b&&b.set&&(b.copy||b instanceof ll)){if(Array.isArray(m))b.fromArray?b.fromArray(m):b.set(...m);else if(b.copy&&m&&m.constructor&&b.constructor===m.constructor)b.copy(m);else if(m!==void 0){const f=b instanceof Re;!f&&b.setScalar?b.setScalar(m):b instanceof ll&&m instanceof ll?b.mask=m.mask:b.set(m),!LW()&&!a.linear&&f&&b.convertSRGBToLinear()}}else if(A[h]=m,A[h]instanceof qt&&A[h].format===un&&A[h].type===rn){const f=A[h];df(f)&&df(a.gl)?f.colorSpace=a.gl.outputColorSpace:f.encoding=a.gl.outputEncoding}pg(n)}if(r.parent&&a.internal&&n.raycast&&u!==r.eventCount){const d=a.internal.interaction.indexOf(n);d>-1&&a.internal.interaction.splice(d,1),r.eventCount&&a.internal.interaction.push(n)}return!(c.length===1&&c[0][0]==="onUpdate")&&c.length&&(s=n.__r3f)!=null&&s.parent&&db(n),n}function pg(n){var e,t;const i=(e=n.__r3f)==null||(t=e.root)==null||t.getState==null?void 0:t.getState();i&&i.internal.frames===0&&i.invalidate()}function db(n){n.onUpdate==null||n.onUpdate(n)}function _W(n,e){n.manual||(EW(n)?(n.left=e.width/-2,n.right=e.width/2,n.top=e.height/2,n.bottom=e.height/-2):n.aspect=e.width/e.height,n.updateProjectionMatrix(),n.updateMatrixWorld())}function th(n){return(n.eventObject||n.object).uuid+"/"+n.index+n.instanceId}function TL(){var n;const e=typeof self<"u"&&self||typeof window<"u"&&window;if(!e)return Hg.DefaultEventPriority;switch((n=e.event)==null?void 0:n.type){case"click":case"contextmenu":case"dblclick":case"pointercancel":case"pointerdown":case"pointerup":return Hg.DiscreteEventPriority;case"pointermove":case"pointerout":case"pointerover":case"pointerenter":case"pointerleave":case"wheel":return Hg.ContinuousEventPriority;default:return Hg.DefaultEventPriority}}function JW(n,e,t,i){const s=t.get(e);s&&(t.delete(e),t.size===0&&(n.delete(i),s.target.releasePointerCapture(i)))}function kL(n,e){const{internal:t}=n.getState();t.interaction=t.interaction.filter(i=>i!==e),t.initialHits=t.initialHits.filter(i=>i!==e),t.hovered.forEach((i,s)=>{(i.eventObject===e||i.object===e)&&t.hovered.delete(s)}),t.capturedMap.forEach((i,s)=>{JW(t.capturedMap,e,i,s)})}function DL(n){function e(l){const{internal:c}=n.getState(),u=l.offsetX-c.initialClick[0],C=l.offsetY-c.initialClick[1];return Math.round(Math.sqrt(u*u+C*C))}function t(l){return l.filter(c=>["Move","Over","Enter","Out","Leave"].some(u=>{var C;return(C=c.__r3f)==null?void 0:C.handlers["onPointer"+u]}))}function i(l,c){const u=n.getState(),C=new Set,d=[],h=c?c(u.internal.interaction):u.internal.interaction;for(let A=0;A{const f=rI(A.object),B=rI(b.object);return!f||!B?A.distance-b.distance:B.events.priority-f.events.priority||A.distance-b.distance}).filter(A=>{const b=th(A);return C.has(b)?!1:(C.add(b),!0)});u.events.filter&&(v=u.events.filter(v,u));for(const A of v){let b=A.object;for(;b;){var y;(y=b.__r3f)!=null&&y.eventCount&&d.push({...A,eventObject:b}),b=b.parent}}if("pointerId"in l&&u.internal.capturedMap.has(l.pointerId))for(let A of u.internal.capturedMap.get(l.pointerId).values())C.has(th(A.intersection))||d.push(A.intersection);return d}function s(l,c,u,C){const d=n.getState();if(l.length){const h={stopped:!1};for(const m of l){const v=rI(m.object)||d,{raycaster:y,pointer:A,camera:b,internal:f}=v,B=new H(A.x,A.y,0).unproject(b),S=V=>{var N,U;return(N=(U=f.capturedMap.get(V))==null?void 0:U.has(m.eventObject))!=null?N:!1},x=V=>{const N={intersection:m,target:c.target};f.capturedMap.has(V)?f.capturedMap.get(V).set(m.eventObject,N):f.capturedMap.set(V,new Map([[m.eventObject,N]])),c.target.setPointerCapture(V)},R=V=>{const N=f.capturedMap.get(V);N&&JW(f.capturedMap,m.eventObject,N,V)};let M={};for(let V in c){let N=c[V];typeof N!="function"&&(M[V]=N)}let Z={...m,...M,pointer:A,intersections:l,stopped:h.stopped,delta:u,unprojectedPoint:B,ray:y.ray,camera:b,stopPropagation(){const V="pointerId"in c&&f.capturedMap.get(c.pointerId);if((!V||V.has(m.eventObject))&&(Z.stopped=h.stopped=!0,f.hovered.size&&Array.from(f.hovered.values()).find(N=>N.eventObject===m.eventObject))){const N=l.slice(0,l.indexOf(m));r([...N,m])}},target:{hasPointerCapture:S,setPointerCapture:x,releasePointerCapture:R},currentTarget:{hasPointerCapture:S,setPointerCapture:x,releasePointerCapture:R},nativeEvent:c};if(C(Z),h.stopped===!0)break}}return l}function r(l){const{internal:c}=n.getState();for(const u of c.hovered.values())if(!l.length||!l.find(C=>C.object===u.object&&C.index===u.index&&C.instanceId===u.instanceId)){const d=u.eventObject.__r3f,h=d?.handlers;if(c.hovered.delete(th(u)),d!=null&&d.eventCount){const m={...u,intersections:l};h.onPointerOut==null||h.onPointerOut(m),h.onPointerLeave==null||h.onPointerLeave(m)}}}function o(l,c){for(let u=0;ur([]);case"onLostPointerCapture":return c=>{const{internal:u}=n.getState();"pointerId"in c&&u.capturedMap.has(c.pointerId)&&requestAnimationFrame(()=>{u.capturedMap.has(c.pointerId)&&(u.capturedMap.delete(c.pointerId),r([]))})}}return function(u){const{onPointerMissed:C,internal:d}=n.getState();d.lastEvent.current=u;const h=l==="onPointerMove",m=l==="onClick"||l==="onContextMenu"||l==="onDoubleClick",y=i(u,h?t:void 0),A=m?e(u):0;l==="onPointerDown"&&(d.initialClick=[u.offsetX,u.offsetY],d.initialHits=y.map(f=>f.eventObject)),m&&!y.length&&A<=2&&(o(u,d.interaction),C&&C(u)),h&&r(y);function b(f){const B=f.eventObject,S=B.__r3f,x=S?.handlers;if(S!=null&&S.eventCount)if(h){if(x.onPointerOver||x.onPointerEnter||x.onPointerOut||x.onPointerLeave){const R=th(f),M=d.hovered.get(R);M?M.stopped&&f.stopPropagation():(d.hovered.set(R,f),x.onPointerOver==null||x.onPointerOver(f),x.onPointerEnter==null||x.onPointerEnter(f))}x.onPointerMove==null||x.onPointerMove(f)}else{const R=x[l];R?(!m||d.initialHits.includes(B))&&(o(u,d.interaction.filter(M=>!d.initialHits.includes(M))),R(f)):m&&d.initialHits.includes(B)&&o(u,d.interaction.filter(M=>!d.initialHits.includes(M)))}}s(y,u,A,b)}}return{handlePointer:a}}const UL=["set","get","setSize","setFrameloop","setDpr","events","invalidate","advance","size","viewport"],OW=n=>!!(n!=null&&n.render),Iy=k.createContext(null),PL=(n,e)=>{const t=NW((a,l)=>{const c=new H,u=new H,C=new H;function d(A=l().camera,b=u,f=l().size){const{width:B,height:S,top:x,left:R}=f,M=B/S;b instanceof H?C.copy(b):C.set(...b);const Z=A.getWorldPosition(c).distanceTo(C);if(EW(A))return{width:B/A.zoom,height:S/A.zoom,top:x,left:R,factor:1,distance:Z,aspect:M};{const V=A.fov*Math.PI/180,N=2*Math.tan(V/2)*Z,U=N*(B/S);return{width:U,height:N,top:x,left:R,factor:B/U,distance:Z,aspect:M}}}let h;const m=A=>a(b=>({performance:{...b.performance,current:A}})),v=new ne;return{set:a,get:l,gl:null,camera:null,raycaster:null,events:{priority:1,enabled:!0,connected:!1},xr:null,scene:null,invalidate:(A=1)=>n(l(),A),advance:(A,b)=>e(A,b,l()),legacy:!1,linear:!1,flat:!1,controls:null,clock:new oy,pointer:v,mouse:v,frameloop:"always",onPointerMissed:void 0,performance:{current:1,min:.5,max:1,debounce:200,regress:()=>{const A=l();h&&clearTimeout(h),A.performance.current!==A.performance.min&&m(A.performance.min),h=setTimeout(()=>m(l().performance.max),A.performance.debounce)}},size:{width:0,height:0,top:0,left:0,updateStyle:!1},viewport:{initialDpr:0,dpr:0,width:0,height:0,top:0,left:0,aspect:0,distance:0,factor:0,getCurrentViewport:d},setEvents:A=>a(b=>({...b,events:{...b.events,...A}})),setSize:(A,b,f,B,S)=>{const x=l().camera,R={width:A,height:b,top:B||0,left:S||0,updateStyle:f};a(M=>({size:R,viewport:{...M.viewport,...d(x,u,R)}}))},setDpr:A=>a(b=>{const f=UW(A);return{viewport:{...b.viewport,dpr:f,initialDpr:b.viewport.initialDpr||f}}}),setFrameloop:(A="always")=>{const b=l().clock;b.stop(),b.elapsedTime=0,A!=="never"&&(b.start(),b.elapsedTime=0),a(()=>({frameloop:A}))},previousRoot:void 0,internal:{active:!1,priority:0,frames:0,lastEvent:k.createRef(),interaction:[],hovered:new Map,subscribers:[],initialClick:[0,0],initialHits:[],capturedMap:new Map,subscribe:(A,b,f)=>{const B=l().internal;return B.priority=B.priority+(b>0?1:0),B.subscribers.push({ref:A,priority:b,store:f}),B.subscribers=B.subscribers.sort((S,x)=>S.priority-x.priority),()=>{const S=l().internal;S!=null&&S.subscribers&&(S.priority=S.priority-(b>0?1:0),S.subscribers=S.subscribers.filter(x=>x.ref!==A))}}}}}),i=t.getState();let s=i.size,r=i.viewport.dpr,o=i.camera;return t.subscribe(()=>{const{camera:a,size:l,viewport:c,gl:u,set:C}=t.getState();if(l!==s||c.dpr!==r){var d;s=l,r=c.dpr,_W(a,l),u.setPixelRatio(c.dpr);const h=(d=l.updateStyle)!=null?d:typeof HTMLCanvasElement<"u"&&u.domElement instanceof HTMLCanvasElement;u.setSize(l.width,l.height,h)}a!==o&&(o=a,C(h=>({viewport:{...h.viewport,...h.viewport.getCurrentViewport(a)}})))}),t.subscribe(a=>n(a)),t};let nh,_L=new Set,JL=new Set,OL=new Set;function pf(n,e){if(n.size)for(const{callback:t}of n.values())t(e)}function oI(n,e){switch(n){case"before":return pf(_L,e);case"after":return pf(JL,e);case"tail":return pf(OL,e)}}let mf,ff;function bf(n,e,t){let i=e.clock.getDelta();for(e.frameloop==="never"&&typeof n=="number"&&(i=n-e.clock.elapsedTime,e.clock.oldTime=e.clock.elapsedTime,e.clock.elapsedTime=n),mf=e.internal.subscribers,nh=0;nh0)&&!((c=s.gl.xr)!=null&&c.isPresenting)&&(t+=bf(l,s))}if(oI("after",l),t===0)return oI("tail",l),e=!1,cancelAnimationFrame(i)}function o(l,c=1){var u;if(!l)return n.forEach(C=>o(C.store.getState()),c);(u=l.gl.xr)!=null&&u.isPresenting||!l.internal.active||l.frameloop==="never"||(l.internal.frames=Math.min(60,l.internal.frames+c),e||(e=!0,requestAnimationFrame(r)))}function a(l,c=!0,u,C){if(c&&oI("before",l),u)bf(l,u,C);else for(const d of n.values())bf(l,d.store.getState());c&&oI("after",l)}return{loop:r,invalidate:o,advance:a}}function jL(n){const e=k.useRef(null);return Ac(()=>void(e.current=n.current.__r3f),[n]),e}function uy(){const n=k.useContext(Iy);if(!n)throw new Error("R3F: Hooks can only be used within the Canvas component!");return n}function es(n=t=>t,e){return uy()(n,e)}function ju(n,e=0){const t=uy(),i=t.getState().internal.subscribe,s=TW(n);return Ac(()=>i(s,e,t),[e,i,t]),null}function QW(n,e){return function(t,...i){const s=new t;return n&&n(s),Promise.all(i.map(r=>new Promise((o,a)=>s.load(r,l=>{l.scene&&Object.assign(l,LL(l.scene)),o(l)},e,l=>a(new Error(`Could not load ${r}: ${l.message})`))))))}}function Cy(n,e,t,i){const s=Array.isArray(e)?e:[e],r=NL(QW(t,i),[n,...s],{equal:an.equ});return Array.isArray(e)?r:r[0]}Cy.preload=function(n,e,t){const i=Array.isArray(e)?e:[e];return HL(QW(t),[n,...i])};Cy.clear=function(n,e){const t=Array.isArray(e)?e:[e];return XL([n,...t])};const sc=new Map,{invalidate:_Z,advance:JZ}=QL(sc),{reconciler:Zu,applyProps:ka}=YL(sc,TL),Cg={objects:"shallow",strict:!1},qL=(n,e)=>{const t=typeof n=="function"?n(e):n;return OW(t)?t:new Tv({powerPreference:"high-performance",canvas:e,antialias:!0,alpha:!0,...n})};function $L(n,e){if(e)return e;if(typeof HTMLCanvasElement<"u"&&n instanceof HTMLCanvasElement&&n.parentElement){const{width:t,height:i,top:s,left:r}=n.parentElement.getBoundingClientRect();return{width:t,height:i,top:s,left:r}}else if(typeof OffscreenCanvas<"u"&&n instanceof OffscreenCanvas)return{width:n.width,height:n.height,top:0,left:0};return{width:0,height:0,top:0,left:0}}function eE(n){const e=sc.get(n),t=e?.fiber,i=e?.store;e&&console.warn("R3F.createRoot should only be called once!");const s=typeof reportError=="function"?reportError:console.error,r=i||PL(_Z,JZ),o=t||Zu.createContainer(r,Hg.ConcurrentRoot,null,!1,null,"",s,null);e||sc.set(n,{fiber:o,store:r});let a,l=!1,c;return{configure(u={}){let{gl:C,size:d,scene:h,events:m,onCreated:v,shadows:y=!1,linear:A=!1,flat:b=!1,legacy:f=!1,orthographic:B=!1,frameloop:S="always",dpr:x=[1,2],performance:R,raycaster:M,camera:Z,onPointerMissed:V}=u,N=r.getState(),U=N.gl;N.gl||N.set({gl:U=qL(C,n)});let D=N.raycaster;D||N.set({raycaster:D=new gy});const{params:$,...te}=M||{};if(an.equ(te,D,Cg)||ka(D,{...te}),an.equ($,D.params,Cg)||ka(D,{params:{...D.params,...$}}),!N.camera||N.camera===c&&!an.equ(c,Z,Cg)){c=Z;const ce=Z instanceof cc,se=ce?Z:B?new Ic(0,0,0,0,.1,1e3):new An(75,0,.1,1e3);ce||(se.position.z=5,Z&&ka(se,Z),!N.camera&&!(Z!=null&&Z.rotation)&&se.lookAt(0,0,0)),N.set({camera:se})}if(!N.scene){let ce;h instanceof hl?ce=h:(ce=new hl,h&&ka(ce,h)),N.set({scene:Ag(ce)})}if(!N.xr){const ce=(re,ve)=>{const ye=r.getState();ye.frameloop!=="never"&&JZ(re,!0,ye,ve)},se=()=>{const re=r.getState();re.gl.xr.enabled=re.gl.xr.isPresenting,re.gl.xr.setAnimationLoop(re.gl.xr.isPresenting?ce:null),re.gl.xr.isPresenting||_Z(re)},ee={connect(){const re=r.getState().gl;re.xr.addEventListener("sessionstart",se),re.xr.addEventListener("sessionend",se)},disconnect(){const re=r.getState().gl;re.xr.removeEventListener("sessionstart",se),re.xr.removeEventListener("sessionend",se)}};U.xr&&ee.connect(),N.set({xr:ee})}if(U.shadowMap){const ce=U.shadowMap.enabled,se=U.shadowMap.type;if(U.shadowMap.enabled=!!y,an.boo(y))U.shadowMap.type=HI;else if(an.str(y)){var Ce;const ee={basic:ER,percentage:HA,soft:HI,variance:sr};U.shadowMap.type=(Ce=ee[y])!=null?Ce:HI}else an.obj(y)&&Object.assign(U.shadowMap,y);(ce!==U.shadowMap.enabled||se!==U.shadowMap.type)&&(U.shadowMap.needsUpdate=!0)}const le=LW();le&&("enabled"in le?le.enabled=!f:"legacyMode"in le&&(le.legacyMode=f)),ka(U,{outputEncoding:A?3e3:3001,toneMapping:b?cr:xv}),N.legacy!==f&&N.set(()=>({legacy:f})),N.linear!==A&&N.set(()=>({linear:A})),N.flat!==b&&N.set(()=>({flat:b})),C&&!an.fun(C)&&!OW(C)&&!an.equ(C,U,Cg)&&ka(U,C),m&&!N.events.handlers&&N.set({events:m(r)});const P=$L(n,d);return an.equ(P,N.size,Cg)||N.setSize(P.width,P.height,P.updateStyle,P.top,P.left),x&&N.viewport.dpr!==UW(x)&&N.setDpr(x),N.frameloop!==S&&N.setFrameloop(S),N.onPointerMissed||N.set({onPointerMissed:V}),R&&!an.equ(R,N.performance,Cg)&&N.set(ce=>({performance:{...ce.performance,...R}})),a=v,l=!0,this},render(u){return l||this.configure(),Zu.updateContainer(k.createElement(tE,{store:r,children:u,onCreated:a,rootElement:n}),o,null,()=>{}),r},unmount(){jW(n)}}}function tE({store:n,children:e,onCreated:t,rootElement:i}){return Ac(()=>{const s=n.getState();s.set(r=>({internal:{...r.internal,active:!0}})),t&&t(s),n.getState().events.connected||s.events.connect==null||s.events.connect(i)},[]),k.createElement(Iy.Provider,{value:n},e)}function jW(n,e){const t=sc.get(n),i=t?.fiber;if(i){const s=t?.store.getState();s&&(s.internal.active=!1),Zu.updateContainer(null,i,null,()=>{s&&setTimeout(()=>{try{var r,o,a,l;s.events.disconnect==null||s.events.disconnect(),(r=s.gl)==null||(o=r.renderLists)==null||o.dispose==null||o.dispose(),(a=s.gl)==null||a.forceContextLoss==null||a.forceContextLoss(),(l=s.gl)!=null&&l.xr&&s.xr.disconnect(),EL(s),sc.delete(n),e&&e(n)}catch{}},500)})}}function nE(n,e,t){return k.createElement(iE,{key:e.uuid,children:n,container:e,state:t})}function iE({state:n={},children:e,container:t}){const{events:i,size:s,...r}=n,o=uy(),[a]=k.useState(()=>new gy),[l]=k.useState(()=>new ne),c=k.useCallback((C,d)=>{const h={...C};Object.keys(C).forEach(v=>{(UL.includes(v)||C[v]!==d[v]&&d[v])&&delete h[v]});let m;if(d&&s){const v=d.camera;m=C.viewport.getCurrentViewport(v,new H,s),v!==C.camera&&_W(v,s)}return{...h,scene:t,raycaster:a,pointer:l,mouse:l,previousRoot:o,events:{...C.events,...d?.events,...i},size:{...C.size,...s},viewport:{...C.viewport,...m},...r}},[n]),[u]=k.useState(()=>{const C=o.getState();return NW((h,m)=>({...C,scene:t,raycaster:a,pointer:l,mouse:l,previousRoot:o,events:{...C.events,...i},size:{...C.size,...s},...r,set:h,get:m,setEvents:v=>h(y=>({...y,events:{...y.events,...v}}))}))});return k.useEffect(()=>{const C=o.subscribe(d=>u.setState(h=>c(d,h)));return()=>{C(),u.destroy()}},[]),k.useEffect(()=>{u.setState(C=>c(o.getState(),C))},[c]),k.createElement(k.Fragment,null,Zu.createPortal(k.createElement(Iy.Provider,{value:u},e),u,null))}Zu.injectIntoDevTools({bundleType:0,rendererPackageName:"@react-three/fiber",version:k.version});function dA(){return dA=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0?i=setTimeout(l,e-u):(i=null,t||(a=n.apply(r,s),r=s=null))}var c=function(){r=this,s=arguments,o=Date.now();var u=t&&!i;return i||(i=setTimeout(l,e)),u&&(a=n.apply(r,s),r=s=null),a};return c.clear=function(){i&&(clearTimeout(i),i=null)},c.flush=function(){i&&(a=n.apply(r,s),r=s=null,clearTimeout(i),i=null)},c}hb.debounce=hb;var sE=hb;const OZ=Sb(sE);function rE(n){let{debounce:e,scroll:t,polyfill:i,offsetSize:s}=n===void 0?{debounce:0,scroll:!1,offsetSize:!1}:n;const r=i||(typeof window>"u"?class{}:window.ResizeObserver);if(!r)throw new Error("This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills");const[o,a]=k.useState({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),l=k.useRef({element:null,scrollContainers:null,resizeObserver:null,lastBounds:o}),c=e?typeof e=="number"?e:e.scroll:null,u=e?typeof e=="number"?e:e.resize:null,C=k.useRef(!1);k.useEffect(()=>(C.current=!0,()=>void(C.current=!1)));const[d,h,m]=k.useMemo(()=>{const b=()=>{if(!l.current.element)return;const{left:f,top:B,width:S,height:x,bottom:R,right:M,x:Z,y:V}=l.current.element.getBoundingClientRect(),N={left:f,top:B,width:S,height:x,bottom:R,right:M,x:Z,y:V};l.current.element instanceof HTMLElement&&s&&(N.height=l.current.element.offsetHeight,N.width=l.current.element.offsetWidth),Object.freeze(N),C.current&&!gE(l.current.lastBounds,N)&&a(l.current.lastBounds=N)};return[b,u?OZ(b,u):b,c?OZ(b,c):b]},[a,s,c,u]);function v(){l.current.scrollContainers&&(l.current.scrollContainers.forEach(b=>b.removeEventListener("scroll",m,!0)),l.current.scrollContainers=null),l.current.resizeObserver&&(l.current.resizeObserver.disconnect(),l.current.resizeObserver=null)}function y(){l.current.element&&(l.current.resizeObserver=new r(m),l.current.resizeObserver.observe(l.current.element),t&&l.current.scrollContainers&&l.current.scrollContainers.forEach(b=>b.addEventListener("scroll",m,{capture:!0,passive:!0})))}const A=b=>{!b||b===l.current.element||(v(),l.current.element=b,l.current.scrollContainers=qW(b),y())};return aE(m,!!t),oE(h),k.useEffect(()=>{v(),y()},[t,m,h]),k.useEffect(()=>v,[]),[A,o,d]}function oE(n){k.useEffect(()=>{const e=n;return window.addEventListener("resize",e),()=>void window.removeEventListener("resize",e)},[n])}function aE(n,e){k.useEffect(()=>{if(e){const t=n;return window.addEventListener("scroll",t,{capture:!0,passive:!0}),()=>void window.removeEventListener("scroll",t,!0)}},[n,e])}function qW(n){const e=[];if(!n||n===document.body)return e;const{overflow:t,overflowX:i,overflowY:s}=window.getComputedStyle(n);return[t,i,s].some(r=>r==="auto"||r==="scroll")&&e.push(n),[...e,...qW(n.parentElement)]}const lE=["x","y","top","bottom","left","right","width","height"],gE=(n,e)=>lE.every(t=>n[t]===e[t]);var cE=Object.defineProperty,IE=Object.defineProperties,uE=Object.getOwnPropertyDescriptors,QZ=Object.getOwnPropertySymbols,CE=Object.prototype.hasOwnProperty,dE=Object.prototype.propertyIsEnumerable,jZ=(n,e,t)=>e in n?cE(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,qZ=(n,e)=>{for(var t in e||(e={}))CE.call(e,t)&&jZ(n,t,e[t]);if(QZ)for(var t of QZ(e))dE.call(e,t)&&jZ(n,t,e[t]);return n},hE=(n,e)=>IE(n,uE(e));function $W(n,e,t){if(!n)return;if(t(n)===!0)return n;let i=e?n.return:n.child;for(;i;){const s=$W(i,e,t);if(s)return s;i=e?null:i.sibling}}function eV(n){try{return Object.defineProperties(n,{_currentRenderer:{get(){return null},set(){}},_currentRenderer2:{get(){return null},set(){}}})}catch{return n}}const dy=eV(k.createContext(null));class tV extends k.Component{render(){return k.createElement(dy.Provider,{value:this._reactInternals},this.props.children)}}const{ReactCurrentOwner:$Z,ReactCurrentDispatcher:ew}=k.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function AE(){const n=k.useContext(dy);if(n===null)throw new Error("its-fine: useFiber must be called within a !");const e=k.useId();return k.useMemo(()=>{for(const i of[$Z?.current,n,n?.alternate]){if(!i)continue;const s=$W(i,!1,r=>{let o=r.memoizedState;for(;o;){if(o.memoizedState===e)return!0;o=o.next}});if(s)return s}},[n,e])}function pE(){var n,e;const t=AE(),[i]=k.useState(()=>new Map);i.clear();let s=t;for(;s;){const r=(n=s.type)==null?void 0:n._context;r&&r!==dy&&!i.has(r)&&i.set(r,(e=ew?.current)==null?void 0:e.readContext(eV(r))),s=s.return}return i}function mE(){const n=pE();return k.useMemo(()=>Array.from(n.keys()).reduce((e,t)=>i=>k.createElement(e,null,k.createElement(t.Provider,hE(qZ({},i),{value:n.get(t)}))),e=>k.createElement(tV,qZ({},e))),[n])}const vf={onClick:["click",!1],onContextMenu:["contextmenu",!1],onDoubleClick:["dblclick",!1],onWheel:["wheel",!0],onPointerDown:["pointerdown",!0],onPointerUp:["pointerup",!0],onPointerLeave:["pointerleave",!0],onPointerMove:["pointermove",!0],onPointerCancel:["pointercancel",!0],onLostPointerCapture:["lostpointercapture",!0]};function fE(n){const{handlePointer:e}=DL(n);return{priority:1,enabled:!0,compute(t,i,s){i.pointer.set(t.offsetX/i.size.width*2-1,-(t.offsetY/i.size.height)*2+1),i.raycaster.setFromCamera(i.pointer,i.camera)},connected:void 0,handlers:Object.keys(vf).reduce((t,i)=>({...t,[i]:e(i)}),{}),update:()=>{var t;const{events:i,internal:s}=n.getState();(t=s.lastEvent)!=null&&t.current&&i.handlers&&i.handlers.onPointerMove(s.lastEvent.current)},connect:t=>{var i;const{set:s,events:r}=n.getState();r.disconnect==null||r.disconnect(),s(o=>({events:{...o.events,connected:t}})),Object.entries((i=r.handlers)!=null?i:[]).forEach(([o,a])=>{const[l,c]=vf[o];t.addEventListener(l,a,{passive:c})})},disconnect:()=>{const{set:t,events:i}=n.getState();if(i.connected){var s;Object.entries((s=i.handlers)!=null?s:[]).forEach(([r,o])=>{if(i&&i.connected instanceof HTMLElement){const[a]=vf[r];i.connected.removeEventListener(a,o)}}),t(r=>({events:{...r.events,connected:void 0}}))}}}}const bE=k.forwardRef(function({children:e,fallback:t,resize:i,style:s,gl:r,events:o=fE,eventSource:a,eventPrefix:l,shadows:c,linear:u,flat:C,legacy:d,orthographic:h,frameloop:m,dpr:v,performance:y,raycaster:A,camera:b,onPointerMissed:f,onCreated:B,...S},x){k.useMemo(()=>zW(SL),[]);const R=mE(),[M,Z]=rE({scroll:!0,debounce:{scroll:50,resize:0},...i}),V=k.useRef(null),N=k.useRef(null);k.useImperativeHandle(x,()=>V.current);const U=TW(f),[D,$]=k.useState(!1),[te,Ce]=k.useState(!1);if(D)throw D;if(te)throw te;const le=k.useRef(null);Ac(()=>{const J=V.current;Z.width>0&&Z.height>0&&J&&(le.current||(le.current=eE(J)),le.current.configure({gl:r,events:o,shadows:c,linear:u,flat:C,legacy:d,orthographic:h,frameloop:m,dpr:v,performance:y,raycaster:A,camera:b,size:Z,onPointerMissed:(...P)=>U.current==null?void 0:U.current(...P),onCreated:P=>{P.events.connect==null||P.events.connect(a?FL(a)?a.current:a:N.current),l&&P.setEvents({compute:(ce,se)=>{const ee=ce[l+"X"],re=ce[l+"Y"];se.pointer.set(ee/se.size.width*2-1,-(re/se.size.height)*2+1),se.raycaster.setFromCamera(se.pointer,se.camera)}}),B?.(P)}}),le.current.render(k.createElement(R,null,k.createElement(kW,{set:Ce},k.createElement(k.Suspense,{fallback:k.createElement(KL,{set:$})},e)))))}),k.useEffect(()=>{const J=V.current;if(J)return()=>jW(J)},[]);const L=a?"none":"auto";return k.createElement("div",dA({ref:N,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:L,...s}},S),k.createElement("div",{ref:M,style:{width:"100%",height:"100%"}},k.createElement("canvas",{ref:V,style:{display:"block"}},t)))}),vE=k.forwardRef(function(e,t){return k.createElement(tV,null,k.createElement(bE,dA({},e,{ref:t})))});var hy={exports:{}},Ug=typeof Reflect=="object"?Reflect:null,tw=Ug&&typeof Ug.apply=="function"?Ug.apply:function(e,t,i){return Function.prototype.apply.call(e,t,i)},Yh;Ug&&typeof Ug.ownKeys=="function"?Yh=Ug.ownKeys:Object.getOwnPropertySymbols?Yh=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Yh=function(e){return Object.getOwnPropertyNames(e)};function yE(n){console&&console.warn&&console.warn(n)}var nV=Number.isNaN||function(e){return e!==e};function $t(){$t.init.call(this)}hy.exports=$t;hy.exports.once=wE;$t.EventEmitter=$t;$t.prototype._events=void 0;$t.prototype._eventsCount=0;$t.prototype._maxListeners=void 0;var nw=10;function np(n){if(typeof n!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof n)}Object.defineProperty($t,"defaultMaxListeners",{enumerable:!0,get:function(){return nw},set:function(n){if(typeof n!="number"||n<0||nV(n))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+n+".");nw=n}});$t.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};$t.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||nV(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function iV(n){return n._maxListeners===void 0?$t.defaultMaxListeners:n._maxListeners}$t.prototype.getMaxListeners=function(){return iV(this)};$t.prototype.emit=function(e){for(var t=[],i=1;i0&&(o=t[0]),o instanceof Error)throw o;var a=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw a.context=o,a}var l=r[e];if(l===void 0)return!1;if(typeof l=="function")tw(l,this,t);else for(var c=l.length,u=lV(l,c),i=0;i0&&o.length>s&&!o.warned){o.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=n,a.type=e,a.count=o.length,yE(a)}return n}$t.prototype.addListener=function(e,t){return sV(this,e,t,!1)};$t.prototype.on=$t.prototype.addListener;$t.prototype.prependListener=function(e,t){return sV(this,e,t,!0)};function GE(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function rV(n,e,t){var i={fired:!1,wrapFn:void 0,target:n,type:e,listener:t},s=GE.bind(i);return s.listener=t,i.wrapFn=s,s}$t.prototype.once=function(e,t){return np(t),this.on(e,rV(this,e,t)),this};$t.prototype.prependOnceListener=function(e,t){return np(t),this.prependListener(e,rV(this,e,t)),this};$t.prototype.removeListener=function(e,t){var i,s,r,o,a;if(np(t),s=this._events,s===void 0)return this;if(i=s[e],i===void 0)return this;if(i===t||i.listener===t)--this._eventsCount===0?this._events=Object.create(null):(delete s[e],s.removeListener&&this.emit("removeListener",e,i.listener||t));else if(typeof i!="function"){for(r=-1,o=i.length-1;o>=0;o--)if(i[o]===t||i[o].listener===t){a=i[o].listener,r=o;break}if(r<0)return this;r===0?i.shift():BE(i,r),i.length===1&&(s[e]=i[0]),s.removeListener!==void 0&&this.emit("removeListener",e,a||t)}return this};$t.prototype.off=$t.prototype.removeListener;$t.prototype.removeAllListeners=function(e){var t,i,s;if(i=this._events,i===void 0)return this;if(i.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):i[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete i[e]),this;if(arguments.length===0){var r=Object.keys(i),o;for(s=0;s=0;s--)this.removeListener(e,t[s]);return this};function oV(n,e,t){var i=n._events;if(i===void 0)return[];var s=i[e];return s===void 0?[]:typeof s=="function"?t?[s.listener||s]:[s]:t?ZE(s):lV(s,s.length)}$t.prototype.listeners=function(e){return oV(this,e,!0)};$t.prototype.rawListeners=function(e){return oV(this,e,!1)};$t.listenerCount=function(n,e){return typeof n.listenerCount=="function"?n.listenerCount(e):aV.call(n,e)};$t.prototype.listenerCount=aV;function aV(n){var e=this._events;if(e!==void 0){var t=e[n];if(typeof t=="function")return 1;if(t!==void 0)return t.length}return 0}$t.prototype.eventNames=function(){return this._eventsCount>0?Yh(this._events):[]};function lV(n,e){for(var t=new Array(e),i=0;i{if(e.data.op==="frame"){this.buffers.positions=e.data.positions,this.buffers.quaternions=e.data.quaternions,this.emit(e.data.op,e.data);return}this.emit(e.data.type,e.data)};for(const e of this.messageQueue)this.worker.postMessage(e);this.messageQueue.length=0}disableConstraint(e){let{uuid:t}=e;this.postMessage({op:"disableConstraint",uuid:t})}disableConstraintMotor(e){let{uuid:t}=e;this.postMessage({op:"disableConstraintMotor",uuid:t})}disconnect(){this.worker&&(this.worker.onmessage=null)}enableConstraint(e){let{uuid:t}=e;this.postMessage({op:"enableConstraint",uuid:t})}enableConstraintMotor(e){let{uuid:t}=e;this.postMessage({op:"enableConstraintMotor",uuid:t})}init(){const{allowSleep:e,axisIndex:t,broadphase:i,defaultContactMaterial:s,frictionGravity:r,gravity:o,iterations:a,quatNormalizeFast:l,quatNormalizeSkip:c,solver:u,tolerance:C}=this.config;this.postMessage({op:"init",props:{allowSleep:e,axisIndex:t,broadphase:i,defaultContactMaterial:s,frictionGravity:r,gravity:o,iterations:a,quatNormalizeFast:l,quatNormalizeSkip:c,solver:u,tolerance:C}})}removeBodies(e){let{uuid:t}=e;this.postMessage({op:"removeBodies",uuid:t})}removeConstraint(e){let{uuid:t}=e;this.postMessage({op:"removeConstraint",uuid:t})}removeContactMaterial(e){let{uuid:t}=e;this.postMessage({op:"removeContactMaterial",uuid:t})}removeRay(e){let{uuid:t}=e;this.postMessage({op:"removeRay",uuid:t})}removeRaycastVehicle(e){let{uuid:t}=e;this.postMessage({op:"removeRaycastVehicle",uuid:t})}removeSpring(e){let{uuid:t}=e;this.postMessage({op:"removeSpring",uuid:t})}setAllowSleep(e){let{props:t,uuid:i}=e;this.postMessage({op:"setAllowSleep",props:t,uuid:i})}setAngularDamping(e){let{props:t,uuid:i}=e;this.postMessage({op:"setAngularDamping",props:t,uuid:i})}setAngularFactor(e){let{props:t,uuid:i}=e;this.postMessage({op:"setAngularFactor",props:t,uuid:i})}setAngularVelocity(e){let{props:t,uuid:i}=e;this.postMessage({op:"setAngularVelocity",props:t,uuid:i})}setCollisionFilterGroup(e){let{props:t,uuid:i}=e;this.postMessage({op:"setCollisionFilterGroup",props:t,uuid:i})}setCollisionFilterMask(e){let{props:t,uuid:i}=e;this.postMessage({op:"setCollisionFilterMask",props:t,uuid:i})}setCollisionResponse(e){let{props:t,uuid:i}=e;this.postMessage({op:"setCollisionResponse",props:t,uuid:i})}setConstraintMotorMaxForce(e){let{props:t,uuid:i}=e;this.postMessage({op:"setConstraintMotorMaxForce",props:t,uuid:i})}setConstraintMotorSpeed(e){let{props:t,uuid:i}=e;this.postMessage({op:"setConstraintMotorSpeed",props:t,uuid:i})}setFixedRotation(e){let{props:t,uuid:i}=e;this.postMessage({op:"setFixedRotation",props:t,uuid:i})}setIsTrigger(e){let{props:t,uuid:i}=e;this.postMessage({op:"setIsTrigger",props:t,uuid:i})}setLinearDamping(e){let{props:t,uuid:i}=e;this.postMessage({op:"setLinearDamping",props:t,uuid:i})}setLinearFactor(e){let{props:t,uuid:i}=e;this.postMessage({op:"setLinearFactor",props:t,uuid:i})}setMass(e){let{props:t,uuid:i}=e;this.postMessage({op:"setMass",props:t,uuid:i})}setMaterial(e){let{props:t,uuid:i}=e;this.postMessage({op:"setMaterial",props:t,uuid:i})}setPosition(e){let{props:t,uuid:i}=e;this.postMessage({op:"setPosition",props:t,uuid:i})}setQuaternion(e){let{props:[t,i,s,r],uuid:o}=e;this.postMessage({op:"setQuaternion",props:[t,i,s,r],uuid:o})}setRaycastVehicleBrake(e){let{props:t,uuid:i}=e;this.postMessage({op:"setRaycastVehicleBrake",props:t,uuid:i})}setRaycastVehicleSteeringValue(e){let{props:t,uuid:i}=e;this.postMessage({op:"setRaycastVehicleSteeringValue",props:t,uuid:i})}setRotation(e){let{props:t,uuid:i}=e;this.postMessage({op:"setRotation",props:t,uuid:i})}setSleepSpeedLimit(e){let{props:t,uuid:i}=e;this.postMessage({op:"setSleepSpeedLimit",props:t,uuid:i})}setSleepTimeLimit(e){let{props:t,uuid:i}=e;this.postMessage({op:"setSleepTimeLimit",props:t,uuid:i})}setSpringDamping(e){let{props:t,uuid:i}=e;this.postMessage({op:"setSpringDamping",props:t,uuid:i})}setSpringRestLength(e){let{props:t,uuid:i}=e;this.postMessage({op:"setSpringRestLength",props:t,uuid:i})}setSpringStiffness(e){let{props:t,uuid:i}=e;this.postMessage({op:"setSpringStiffness",props:t,uuid:i})}setUserData(e){let{props:t,uuid:i}=e;this.postMessage({op:"setUserData",props:t,uuid:i})}setVelocity(e){let{props:t,uuid:i}=e;this.postMessage({op:"setVelocity",props:t,uuid:i})}sleep(e){let{uuid:t}=e;this.postMessage({op:"sleep",uuid:t})}step(e){var t;const{buffers:{positions:i,quaternions:s}}=this;!i.byteLength&&!s.byteLength||(t=this.worker)==null||t.postMessage({op:"step",positions:i,props:e,quaternions:s},[i.buffer,s.buffer])}subscribe(e){let{props:{id:t,target:i,type:s},uuid:r}=e;this.postMessage({op:"subscribe",props:{id:t,target:i,type:s},uuid:r})}terminate(){var e;(e=this.worker)==null||e.terminate(),this.worker=null}unsubscribe(e){let{props:t}=e;this.postMessage({op:"unsubscribe",props:t})}wakeUp(e){let{uuid:t}=e;this.postMessage({op:"wakeUp",uuid:t})}postMessage(e){if(this.worker)return this.worker.postMessage(e);this.messageQueue.push(e)}}class ao{constructor(e){e===void 0&&(e=[0,0,0,0,0,0,0,0,0]),this.elements=e}identity(){const e=this.elements;e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1}setZero(){const e=this.elements;e[0]=0,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=0,e[6]=0,e[7]=0,e[8]=0}setTrace(e){const t=this.elements;t[0]=e.x,t[4]=e.y,t[8]=e.z}getTrace(e){e===void 0&&(e=new F);const t=this.elements;return e.x=t[0],e.y=t[4],e.z=t[8],e}vmult(e,t){t===void 0&&(t=new F);const i=this.elements,s=e.x,r=e.y,o=e.z;return t.x=i[0]*s+i[1]*r+i[2]*o,t.y=i[3]*s+i[4]*r+i[5]*o,t.z=i[6]*s+i[7]*r+i[8]*o,t}smult(e){for(let t=0;t0){const r=1/s;this.x*=r,this.y*=r,this.z*=r}else this.x=0,this.y=0,this.z=0;return s}unit(e){e===void 0&&(e=new F);const t=this.x,i=this.y,s=this.z;let r=Math.sqrt(t*t+i*i+s*s);return r>0?(r=1/r,e.x=t*r,e.y=i*r,e.z=s*r):(e.x=1,e.y=0,e.z=0),e}length(){const e=this.x,t=this.y,i=this.z;return Math.sqrt(e*e+t*t+i*i)}lengthSquared(){return this.dot(this)}distanceTo(e){const t=this.x,i=this.y,s=this.z,r=e.x,o=e.y,a=e.z;return Math.sqrt((r-t)*(r-t)+(o-i)*(o-i)+(a-s)*(a-s))}distanceSquared(e){const t=this.x,i=this.y,s=this.z,r=e.x,o=e.y,a=e.z;return(r-t)*(r-t)+(o-i)*(o-i)+(a-s)*(a-s)}scale(e,t){t===void 0&&(t=new F);const i=this.x,s=this.y,r=this.z;return t.x=e*i,t.y=e*s,t.z=e*r,t}vmul(e,t){return t===void 0&&(t=new F),t.x=e.x*this.x,t.y=e.y*this.y,t.z=e.z*this.z,t}addScaledVector(e,t,i){return i===void 0&&(i=new F),i.x=this.x+e*t.x,i.y=this.y+e*t.y,i.z=this.z+e*t.z,i}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}isZero(){return this.x===0&&this.y===0&&this.z===0}negate(e){return e===void 0&&(e=new F),e.x=-this.x,e.y=-this.y,e.z=-this.z,e}tangents(e,t){const i=this.length();if(i>0){const s=XE,r=1/i;s.set(this.x*r,this.y*r,this.z*r);const o=YE;Math.abs(s.x)<.9?(o.set(1,0,0),s.cross(o,e)):(o.set(0,1,0),s.cross(o,e)),s.cross(e,t)}else e.set(1,0,0),t.set(0,1,0)}toString(){return`${this.x},${this.y},${this.z}`}toArray(){return[this.x,this.y,this.z]}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}lerp(e,t,i){const s=this.x,r=this.y,o=this.z;i.x=s+(e.x-s)*t,i.y=r+(e.y-r)*t,i.z=o+(e.z-o)*t}almostEquals(e,t){return t===void 0&&(t=1e-6),!(Math.abs(this.x-e.x)>t||Math.abs(this.y-e.y)>t||Math.abs(this.z-e.z)>t)}almostZero(e){return e===void 0&&(e=1e-6),!(Math.abs(this.x)>e||Math.abs(this.y)>e||Math.abs(this.z)>e)}isAntiparallelTo(e,t){return this.negate(iw),iw.almostEquals(e,t)}clone(){return new F(this.x,this.y,this.z)}}F.ZERO=new F(0,0,0);F.UNIT_X=new F(1,0,0);F.UNIT_Y=new F(0,1,0);F.UNIT_Z=new F(0,0,1);const XE=new F,YE=new F,iw=new F;class Es{constructor(e){e===void 0&&(e={}),this.lowerBound=new F,this.upperBound=new F,e.lowerBound&&this.lowerBound.copy(e.lowerBound),e.upperBound&&this.upperBound.copy(e.upperBound)}setFromPoints(e,t,i,s){const r=this.lowerBound,o=this.upperBound,a=i;r.copy(e[0]),a&&a.vmult(r,r),o.copy(r);for(let l=1;lo.x&&(o.x=c.x),c.xo.y&&(o.y=c.y),c.yo.z&&(o.z=c.z),c.z=r.x&&t.y<=s.y&&i.y>=r.y&&t.z<=s.z&&i.z>=r.z}getCorners(e,t,i,s,r,o,a,l){const c=this.lowerBound,u=this.upperBound;e.copy(c),t.set(u.x,c.y,c.z),i.set(u.x,u.y,c.z),s.set(c.x,u.y,u.z),r.set(u.x,c.y,u.z),o.set(c.x,u.y,c.z),a.set(c.x,c.y,u.z),l.copy(u)}toLocalFrame(e,t){const i=rw,s=i[0],r=i[1],o=i[2],a=i[3],l=i[4],c=i[5],u=i[6],C=i[7];this.getCorners(s,r,o,a,l,c,u,C);for(let d=0;d!==8;d++){const h=i[d];e.pointToLocal(h,h)}return t.setFromPoints(i)}toWorldFrame(e,t){const i=rw,s=i[0],r=i[1],o=i[2],a=i[3],l=i[4],c=i[5],u=i[6],C=i[7];this.getCorners(s,r,o,a,l,c,u,C);for(let d=0;d!==8;d++){const h=i[d];e.pointToWorld(h,h)}return t.setFromPoints(i)}overlapsRay(e){const{direction:t,from:i}=e,s=1/t.x,r=1/t.y,o=1/t.z,a=(this.lowerBound.x-i.x)*s,l=(this.upperBound.x-i.x)*s,c=(this.lowerBound.y-i.y)*r,u=(this.upperBound.y-i.y)*r,C=(this.lowerBound.z-i.z)*o,d=(this.upperBound.z-i.z)*o,h=Math.max(Math.max(Math.min(a,l),Math.min(c,u)),Math.min(C,d)),m=Math.min(Math.min(Math.max(a,l),Math.max(c,u)),Math.max(C,d));return!(m<0||h>m)}}const sw=new F,rw=[new F,new F,new F,new F,new F,new F,new F,new F];class Ri{constructor(e,t,i,s){e===void 0&&(e=0),t===void 0&&(t=0),i===void 0&&(i=0),s===void 0&&(s=1),this.x=e,this.y=t,this.z=i,this.w=s}set(e,t,i,s){return this.x=e,this.y=t,this.z=i,this.w=s,this}toString(){return`${this.x},${this.y},${this.z},${this.w}`}toArray(){return[this.x,this.y,this.z,this.w]}setFromAxisAngle(e,t){const i=Math.sin(t*.5);return this.x=e.x*i,this.y=e.y*i,this.z=e.z*i,this.w=Math.cos(t*.5),this}toAxisAngle(e){e===void 0&&(e=new F),this.normalize();const t=2*Math.acos(this.w),i=Math.sqrt(1-this.w*this.w);return i<.001?(e.x=this.x,e.y=this.y,e.z=this.z):(e.x=this.x/i,e.y=this.y/i,e.z=this.z/i),[e,t]}setFromVectors(e,t){if(e.isAntiparallelTo(t)){const i=FE,s=KE;e.tangents(i,s),this.setFromAxisAngle(i,Math.PI)}else{const i=e.cross(t);this.x=i.x,this.y=i.y,this.z=i.z,this.w=Math.sqrt(e.length()**2*t.length()**2)+e.dot(t),this.normalize()}return this}mult(e,t){t===void 0&&(t=new Ri);const i=this.x,s=this.y,r=this.z,o=this.w,a=e.x,l=e.y,c=e.z,u=e.w;return t.x=i*u+o*a+s*c-r*l,t.y=s*u+o*l+r*a-i*c,t.z=r*u+o*c+i*l-s*a,t.w=o*u-i*a-s*l-r*c,t}inverse(e){e===void 0&&(e=new Ri);const t=this.x,i=this.y,s=this.z,r=this.w;this.conjugate(e);const o=1/(t*t+i*i+s*s+r*r);return e.x*=o,e.y*=o,e.z*=o,e.w*=o,e}conjugate(e){return e===void 0&&(e=new Ri),e.x=-this.x,e.y=-this.y,e.z=-this.z,e.w=this.w,e}normalize(){let e=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);return e===0?(this.x=0,this.y=0,this.z=0,this.w=0):(e=1/e,this.x*=e,this.y*=e,this.z*=e,this.w*=e),this}normalizeFast(){const e=(3-(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w))/2;return e===0?(this.x=0,this.y=0,this.z=0,this.w=0):(this.x*=e,this.y*=e,this.z*=e,this.w*=e),this}vmult(e,t){t===void 0&&(t=new F);const i=e.x,s=e.y,r=e.z,o=this.x,a=this.y,l=this.z,c=this.w,u=c*i+a*r-l*s,C=c*s+l*i-o*r,d=c*r+o*s-a*i,h=-o*i-a*s-l*r;return t.x=u*c+h*-o+C*-l-d*-a,t.y=C*c+h*-a+d*-o-u*-l,t.z=d*c+h*-l+u*-a-C*-o,t}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w,this}toEuler(e,t){t===void 0&&(t="YZX");let i,s,r;const o=this.x,a=this.y,l=this.z,c=this.w;switch(t){case"YZX":const u=o*a+l*c;if(u>.499&&(i=2*Math.atan2(o,c),s=Math.PI/2,r=0),u<-.499&&(i=-2*Math.atan2(o,c),s=-Math.PI/2,r=0),i===void 0){const C=o*o,d=a*a,h=l*l;i=Math.atan2(2*a*c-2*o*l,1-2*d-2*h),s=Math.asin(2*u),r=Math.atan2(2*o*c-2*a*l,1-2*C-2*h)}break;default:throw new Error(`Euler order ${t} not supported yet.`)}e.y=i,e.z=s,e.x=r}setFromEuler(e,t,i,s){s===void 0&&(s="XYZ");const r=Math.cos(e/2),o=Math.cos(t/2),a=Math.cos(i/2),l=Math.sin(e/2),c=Math.sin(t/2),u=Math.sin(i/2);return s==="XYZ"?(this.x=l*o*a+r*c*u,this.y=r*c*a-l*o*u,this.z=r*o*u+l*c*a,this.w=r*o*a-l*c*u):s==="YXZ"?(this.x=l*o*a+r*c*u,this.y=r*c*a-l*o*u,this.z=r*o*u-l*c*a,this.w=r*o*a+l*c*u):s==="ZXY"?(this.x=l*o*a-r*c*u,this.y=r*c*a+l*o*u,this.z=r*o*u+l*c*a,this.w=r*o*a-l*c*u):s==="ZYX"?(this.x=l*o*a-r*c*u,this.y=r*c*a+l*o*u,this.z=r*o*u-l*c*a,this.w=r*o*a+l*c*u):s==="YZX"?(this.x=l*o*a+r*c*u,this.y=r*c*a+l*o*u,this.z=r*o*u-l*c*a,this.w=r*o*a-l*c*u):s==="XZY"&&(this.x=l*o*a-r*c*u,this.y=r*c*a-l*o*u,this.z=r*o*u+l*c*a,this.w=r*o*a+l*c*u),this}clone(){return new Ri(this.x,this.y,this.z,this.w)}slerp(e,t,i){i===void 0&&(i=new Ri);const s=this.x,r=this.y,o=this.z,a=this.w;let l=e.x,c=e.y,u=e.z,C=e.w,d,h,m,v,y;return h=s*l+r*c+o*u+a*C,h<0&&(h=-h,l=-l,c=-c,u=-u,C=-C),1-h>1e-6?(d=Math.acos(h),m=Math.sin(d),v=Math.sin((1-t)*d)/m,y=Math.sin(t*d)/m):(v=1-t,y=t),i.x=v*s+y*l,i.y=v*r+y*c,i.z=v*o+y*u,i.w=v*a+y*C,i}integrate(e,t,i,s){s===void 0&&(s=new Ri);const r=e.x*i.x,o=e.y*i.y,a=e.z*i.z,l=this.x,c=this.y,u=this.z,C=this.w,d=t*.5;return s.x+=d*(r*C+o*u-a*c),s.y+=d*(o*C+a*l-r*u),s.z+=d*(a*C+r*c-o*l),s.w+=d*(-r*l-o*c-a*u),s}}const FE=new F,KE=new F,zE={SPHERE:1,PLANE:2,BOX:4,COMPOUND:8,CONVEXPOLYHEDRON:16,HEIGHTFIELD:32,PARTICLE:64,CYLINDER:128,TRIMESH:256};class _e{constructor(e){e===void 0&&(e={}),this.id=_e.idCounter++,this.type=e.type||0,this.boundingSphereRadius=0,this.collisionResponse=e.collisionResponse?e.collisionResponse:!0,this.collisionFilterGroup=e.collisionFilterGroup!==void 0?e.collisionFilterGroup:1,this.collisionFilterMask=e.collisionFilterMask!==void 0?e.collisionFilterMask:-1,this.material=e.material?e.material:null,this.body=null}updateBoundingSphereRadius(){throw`computeBoundingSphereRadius() not implemented for shape type ${this.type}`}volume(){throw`volume() not implemented for shape type ${this.type}`}calculateLocalInertia(e,t){throw`calculateLocalInertia() not implemented for shape type ${this.type}`}calculateWorldAABB(e,t,i,s){throw`calculateWorldAABB() not implemented for shape type ${this.type}`}}_e.idCounter=0;_e.types=zE;class ki{constructor(e){e===void 0&&(e={}),this.position=new F,this.quaternion=new Ri,e.position&&this.position.copy(e.position),e.quaternion&&this.quaternion.copy(e.quaternion)}pointToLocal(e,t){return ki.pointToLocalFrame(this.position,this.quaternion,e,t)}pointToWorld(e,t){return ki.pointToWorldFrame(this.position,this.quaternion,e,t)}vectorToWorldFrame(e,t){return t===void 0&&(t=new F),this.quaternion.vmult(e,t),t}static pointToLocalFrame(e,t,i,s){return s===void 0&&(s=new F),i.vsub(e,s),t.conjugate(ow),ow.vmult(s,s),s}static pointToWorldFrame(e,t,i,s){return s===void 0&&(s=new F),t.vmult(i,s),s.vadd(e,s),s}static vectorToWorldFrame(e,t,i){return i===void 0&&(i=new F),e.vmult(t,i),i}static vectorToLocalFrame(e,t,i,s){return s===void 0&&(s=new F),t.w*=-1,t.vmult(i,s),t.w*=-1,s}}const ow=new Ri;new F;new F;new F;new F;new F,new F,new F,new F,new F,new F,new F,new F;new F;new Ri;new Es;new ao;new ao;new ao;new F;new F;new F;new F;new F;new F;new F;new F;new F;new F;new Ri;new F;new F;new F;new F;class Ab{constructor(){this.rayFromWorld=new F,this.rayToWorld=new F,this.hitNormalWorld=new F,this.hitPointWorld=new F,this.hasHit=!1,this.shape=null,this.body=null,this.hitFaceIndex=-1,this.distance=-1,this.shouldStop=!1}reset(){this.rayFromWorld.setZero(),this.rayToWorld.setZero(),this.hitNormalWorld.setZero(),this.hitPointWorld.setZero(),this.hasHit=!1,this.shape=null,this.body=null,this.hitFaceIndex=-1,this.distance=-1,this.shouldStop=!1}abort(){this.shouldStop=!0}set(e,t,i,s,r,o,a){this.rayFromWorld.copy(e),this.rayToWorld.copy(t),this.hitNormalWorld.copy(i),this.hitPointWorld.copy(s),this.shape=r,this.body=o,this.distance=a}}let cV,IV,uV,CV,dV,hV,AV;const Ay={CLOSEST:1,ANY:2,ALL:4};cV=_e.types.SPHERE;IV=_e.types.PLANE;uV=_e.types.BOX;CV=_e.types.CYLINDER;dV=_e.types.CONVEXPOLYHEDRON;hV=_e.types.HEIGHTFIELD;AV=_e.types.TRIMESH;class fi{get[cV](){return this._intersectSphere}get[IV](){return this._intersectPlane}get[uV](){return this._intersectBox}get[CV](){return this._intersectConvex}get[dV](){return this._intersectConvex}get[hV](){return this._intersectHeightfield}get[AV](){return this._intersectTrimesh}constructor(e,t){e===void 0&&(e=new F),t===void 0&&(t=new F),this.from=e.clone(),this.to=t.clone(),this.direction=new F,this.precision=1e-4,this.checkCollisionResponse=!0,this.skipBackfaces=!1,this.collisionFilterMask=-1,this.collisionFilterGroup=-1,this.mode=fi.ANY,this.result=new Ab,this.hasHit=!1,this.callback=i=>{}}intersectWorld(e,t){return this.mode=t.mode||fi.ANY,this.result=t.result||new Ab,this.skipBackfaces=!!t.skipBackfaces,this.collisionFilterMask=typeof t.collisionFilterMask<"u"?t.collisionFilterMask:-1,this.collisionFilterGroup=typeof t.collisionFilterGroup<"u"?t.collisionFilterGroup:-1,this.checkCollisionResponse=typeof t.checkCollisionResponse<"u"?t.checkCollisionResponse:!0,t.from&&this.from.copy(t.from),t.to&&this.to.copy(t.to),this.callback=t.callback||(()=>{}),this.hasHit=!1,this.result.reset(),this.updateDirection(),this.getAABB(aw),yf.length=0,e.broadphase.aabbQuery(e,aw,yf),this.intersectBodies(yf),this.hasHit}intersectBody(e,t){t&&(this.result=t,this.updateDirection());const i=this.checkCollisionResponse;if(i&&!e.collisionResponse||!(this.collisionFilterGroup&e.collisionFilterMask)||!(e.collisionFilterGroup&this.collisionFilterMask))return;const s=LE,r=EE;for(let o=0,a=e.shapes.length;oe.boundingSphereRadius)return;const a=this[e.type];a&&a.call(this,e,t,i,s,e)}_intersectBox(e,t,i,s,r){return this._intersectConvex(e.convexPolyhedronRepresentation,t,i,s,r)}_intersectPlane(e,t,i,s,r){const o=this.from,a=this.to,l=this.direction,c=new F(0,0,1);t.vmult(c,c);const u=new F;o.vsub(i,u);const C=u.dot(c);a.vsub(i,u);const d=u.dot(c);if(C*d>0||o.distanceTo(a)=0&&v<=1&&(o.lerp(a,v,h),h.vsub(i,m),m.normalize(),this.reportIntersection(m,h,r,s,-1)),this.result.shouldStop)return;y>=0&&y<=1&&(o.lerp(a,y,h),h.vsub(i,m),m.normalize(),this.reportIntersection(m,h,r,s,-1))}}_intersectConvex(e,t,i,s,r,o){const a=PE,l=gw,c=o&&o.faceList||null,u=e.faces,C=e.vertices,d=e.faceNormals,h=this.direction,m=this.from,v=this.to,y=m.distanceTo(v),A=c?c.length:u.length,b=this.result;for(let f=0;!b.shouldStop&&fy||this.reportIntersection(a,zi,r,s,B)}}}}_intersectTrimesh(e,t,i,s,r,o){const a=_E,l=$E,c=eT,u=gw,C=JE,d=OE,h=QE,m=qE,v=jE,y=e.indices;e.vertices;const A=this.from,b=this.to,f=this.direction;c.position.copy(i),c.quaternion.copy(t),ki.vectorToLocalFrame(i,t,f,C),ki.pointToLocalFrame(i,t,A,d),ki.pointToLocalFrame(i,t,b,h),h.x*=e.scale.x,h.y*=e.scale.y,h.z*=e.scale.z,d.x*=e.scale.x,d.y*=e.scale.y,d.z*=e.scale.z,h.vsub(d,C),C.normalize();const B=d.distanceSquared(h);e.tree.rayQuery(this,c,l);for(let S=0,x=l.length;!this.result.shouldStop&&S!==x;S++){const R=l[S];e.getNormal(R,a),e.getVertex(y[R*3],er),er.vsub(d,u);const M=C.dot(a),Z=a.dot(u)/M;if(Z<0)continue;C.scale(Z,zi),zi.vadd(d,zi),e.getVertex(y[R*3+1],Br),e.getVertex(y[R*3+2],Zr);const V=zi.distanceSquared(d);!(fi.pointInTriangle(zi,Br,er,Zr)||fi.pointInTriangle(zi,er,Br,Zr))||V>B||(ki.vectorToWorldFrame(t,a,v),ki.pointToWorldFrame(i,t,zi,m),this.reportIntersection(v,m,r,s,R))}l.length=0}reportIntersection(e,t,i,s,r){const o=this.from,a=this.to,l=o.distanceTo(t),c=this.result;if(!(this.skipBackfaces&&e.dot(this.direction)>0))switch(c.hitFaceIndex=typeof r<"u"?r:-1,this.mode){case fi.ALL:this.hasHit=!0,c.set(o,a,e,t,i,s,l),c.hasHit=!0,this.callback(c);break;case fi.CLOSEST:(l=0&&(C=r*c-o*a)>=0&&u+CDate.now()-n}new F;class lo{constructor(e){e===void 0&&(e=[0,0,0,0,0,0,0,0,0]),this.elements=e}identity(){const e=this.elements;e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1}setZero(){const e=this.elements;e[0]=0,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=0,e[6]=0,e[7]=0,e[8]=0}setTrace(e){const t=this.elements;t[0]=e.x,t[4]=e.y,t[8]=e.z}getTrace(e){e===void 0&&(e=new K);const t=this.elements;return e.x=t[0],e.y=t[4],e.z=t[8],e}vmult(e,t){t===void 0&&(t=new K);const i=this.elements,s=e.x,r=e.y,o=e.z;return t.x=i[0]*s+i[1]*r+i[2]*o,t.y=i[3]*s+i[4]*r+i[5]*o,t.z=i[6]*s+i[7]*r+i[8]*o,t}smult(e){for(let t=0;t0){const r=1/s;this.x*=r,this.y*=r,this.z*=r}else this.x=0,this.y=0,this.z=0;return s}unit(e){e===void 0&&(e=new K);const t=this.x,i=this.y,s=this.z;let r=Math.sqrt(t*t+i*i+s*s);return r>0?(r=1/r,e.x=t*r,e.y=i*r,e.z=s*r):(e.x=1,e.y=0,e.z=0),e}length(){const e=this.x,t=this.y,i=this.z;return Math.sqrt(e*e+t*t+i*i)}lengthSquared(){return this.dot(this)}distanceTo(e){const t=this.x,i=this.y,s=this.z,r=e.x,o=e.y,a=e.z;return Math.sqrt((r-t)*(r-t)+(o-i)*(o-i)+(a-s)*(a-s))}distanceSquared(e){const t=this.x,i=this.y,s=this.z,r=e.x,o=e.y,a=e.z;return(r-t)*(r-t)+(o-i)*(o-i)+(a-s)*(a-s)}scale(e,t){t===void 0&&(t=new K);const i=this.x,s=this.y,r=this.z;return t.x=e*i,t.y=e*s,t.z=e*r,t}vmul(e,t){return t===void 0&&(t=new K),t.x=e.x*this.x,t.y=e.y*this.y,t.z=e.z*this.z,t}addScaledVector(e,t,i){return i===void 0&&(i=new K),i.x=this.x+e*t.x,i.y=this.y+e*t.y,i.z=this.z+e*t.z,i}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}isZero(){return this.x===0&&this.y===0&&this.z===0}negate(e){return e===void 0&&(e=new K),e.x=-this.x,e.y=-this.y,e.z=-this.z,e}tangents(e,t){const i=this.length();if(i>0){const s=iT,r=1/i;s.set(this.x*r,this.y*r,this.z*r);const o=sT;Math.abs(s.x)<.9?(o.set(1,0,0),s.cross(o,e)):(o.set(0,1,0),s.cross(o,e)),s.cross(e,t)}else e.set(1,0,0),t.set(0,1,0)}toString(){return`${this.x},${this.y},${this.z}`}toArray(){return[this.x,this.y,this.z]}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}lerp(e,t,i){const s=this.x,r=this.y,o=this.z;i.x=s+(e.x-s)*t,i.y=r+(e.y-r)*t,i.z=o+(e.z-o)*t}almostEquals(e,t){return t===void 0&&(t=1e-6),!(Math.abs(this.x-e.x)>t||Math.abs(this.y-e.y)>t||Math.abs(this.z-e.z)>t)}almostZero(e){return e===void 0&&(e=1e-6),!(Math.abs(this.x)>e||Math.abs(this.y)>e||Math.abs(this.z)>e)}isAntiparallelTo(e,t){return this.negate(cw),cw.almostEquals(e,t)}clone(){return new K(this.x,this.y,this.z)}}K.ZERO=new K(0,0,0);K.UNIT_X=new K(1,0,0);K.UNIT_Y=new K(0,1,0);K.UNIT_Z=new K(0,0,1);const iT=new K,sT=new K,cw=new K;class Ts{constructor(e){e===void 0&&(e={}),this.lowerBound=new K,this.upperBound=new K,e.lowerBound&&this.lowerBound.copy(e.lowerBound),e.upperBound&&this.upperBound.copy(e.upperBound)}setFromPoints(e,t,i,s){const r=this.lowerBound,o=this.upperBound,a=i;r.copy(e[0]),a&&a.vmult(r,r),o.copy(r);for(let l=1;lo.x&&(o.x=c.x),c.xo.y&&(o.y=c.y),c.yo.z&&(o.z=c.z),c.z=r.x&&t.y<=s.y&&i.y>=r.y&&t.z<=s.z&&i.z>=r.z}getCorners(e,t,i,s,r,o,a,l){const c=this.lowerBound,u=this.upperBound;e.copy(c),t.set(u.x,c.y,c.z),i.set(u.x,u.y,c.z),s.set(c.x,u.y,u.z),r.set(u.x,c.y,u.z),o.set(c.x,u.y,c.z),a.set(c.x,c.y,u.z),l.copy(u)}toLocalFrame(e,t){const i=uw,s=i[0],r=i[1],o=i[2],a=i[3],l=i[4],c=i[5],u=i[6],C=i[7];this.getCorners(s,r,o,a,l,c,u,C);for(let d=0;d!==8;d++){const h=i[d];e.pointToLocal(h,h)}return t.setFromPoints(i)}toWorldFrame(e,t){const i=uw,s=i[0],r=i[1],o=i[2],a=i[3],l=i[4],c=i[5],u=i[6],C=i[7];this.getCorners(s,r,o,a,l,c,u,C);for(let d=0;d!==8;d++){const h=i[d];e.pointToWorld(h,h)}return t.setFromPoints(i)}overlapsRay(e){const{direction:t,from:i}=e,s=1/t.x,r=1/t.y,o=1/t.z,a=(this.lowerBound.x-i.x)*s,l=(this.upperBound.x-i.x)*s,c=(this.lowerBound.y-i.y)*r,u=(this.upperBound.y-i.y)*r,C=(this.lowerBound.z-i.z)*o,d=(this.upperBound.z-i.z)*o,h=Math.max(Math.max(Math.min(a,l),Math.min(c,u)),Math.min(C,d)),m=Math.min(Math.min(Math.max(a,l),Math.max(c,u)),Math.max(C,d));return!(m<0||h>m)}}const Iw=new K,uw=[new K,new K,new K,new K,new K,new K,new K,new K];class Wi{constructor(e,t,i,s){e===void 0&&(e=0),t===void 0&&(t=0),i===void 0&&(i=0),s===void 0&&(s=1),this.x=e,this.y=t,this.z=i,this.w=s}set(e,t,i,s){return this.x=e,this.y=t,this.z=i,this.w=s,this}toString(){return`${this.x},${this.y},${this.z},${this.w}`}toArray(){return[this.x,this.y,this.z,this.w]}setFromAxisAngle(e,t){const i=Math.sin(t*.5);return this.x=e.x*i,this.y=e.y*i,this.z=e.z*i,this.w=Math.cos(t*.5),this}toAxisAngle(e){e===void 0&&(e=new K),this.normalize();const t=2*Math.acos(this.w),i=Math.sqrt(1-this.w*this.w);return i<.001?(e.x=this.x,e.y=this.y,e.z=this.z):(e.x=this.x/i,e.y=this.y/i,e.z=this.z/i),[e,t]}setFromVectors(e,t){if(e.isAntiparallelTo(t)){const i=rT,s=oT;e.tangents(i,s),this.setFromAxisAngle(i,Math.PI)}else{const i=e.cross(t);this.x=i.x,this.y=i.y,this.z=i.z,this.w=Math.sqrt(e.length()**2*t.length()**2)+e.dot(t),this.normalize()}return this}mult(e,t){t===void 0&&(t=new Wi);const i=this.x,s=this.y,r=this.z,o=this.w,a=e.x,l=e.y,c=e.z,u=e.w;return t.x=i*u+o*a+s*c-r*l,t.y=s*u+o*l+r*a-i*c,t.z=r*u+o*c+i*l-s*a,t.w=o*u-i*a-s*l-r*c,t}inverse(e){e===void 0&&(e=new Wi);const t=this.x,i=this.y,s=this.z,r=this.w;this.conjugate(e);const o=1/(t*t+i*i+s*s+r*r);return e.x*=o,e.y*=o,e.z*=o,e.w*=o,e}conjugate(e){return e===void 0&&(e=new Wi),e.x=-this.x,e.y=-this.y,e.z=-this.z,e.w=this.w,e}normalize(){let e=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);return e===0?(this.x=0,this.y=0,this.z=0,this.w=0):(e=1/e,this.x*=e,this.y*=e,this.z*=e,this.w*=e),this}normalizeFast(){const e=(3-(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w))/2;return e===0?(this.x=0,this.y=0,this.z=0,this.w=0):(this.x*=e,this.y*=e,this.z*=e,this.w*=e),this}vmult(e,t){t===void 0&&(t=new K);const i=e.x,s=e.y,r=e.z,o=this.x,a=this.y,l=this.z,c=this.w,u=c*i+a*r-l*s,C=c*s+l*i-o*r,d=c*r+o*s-a*i,h=-o*i-a*s-l*r;return t.x=u*c+h*-o+C*-l-d*-a,t.y=C*c+h*-a+d*-o-u*-l,t.z=d*c+h*-l+u*-a-C*-o,t}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w,this}toEuler(e,t){t===void 0&&(t="YZX");let i,s,r;const o=this.x,a=this.y,l=this.z,c=this.w;switch(t){case"YZX":const u=o*a+l*c;if(u>.499&&(i=2*Math.atan2(o,c),s=Math.PI/2,r=0),u<-.499&&(i=-2*Math.atan2(o,c),s=-Math.PI/2,r=0),i===void 0){const C=o*o,d=a*a,h=l*l;i=Math.atan2(2*a*c-2*o*l,1-2*d-2*h),s=Math.asin(2*u),r=Math.atan2(2*o*c-2*a*l,1-2*C-2*h)}break;default:throw new Error(`Euler order ${t} not supported yet.`)}e.y=i,e.z=s,e.x=r}setFromEuler(e,t,i,s){s===void 0&&(s="XYZ");const r=Math.cos(e/2),o=Math.cos(t/2),a=Math.cos(i/2),l=Math.sin(e/2),c=Math.sin(t/2),u=Math.sin(i/2);return s==="XYZ"?(this.x=l*o*a+r*c*u,this.y=r*c*a-l*o*u,this.z=r*o*u+l*c*a,this.w=r*o*a-l*c*u):s==="YXZ"?(this.x=l*o*a+r*c*u,this.y=r*c*a-l*o*u,this.z=r*o*u-l*c*a,this.w=r*o*a+l*c*u):s==="ZXY"?(this.x=l*o*a-r*c*u,this.y=r*c*a+l*o*u,this.z=r*o*u+l*c*a,this.w=r*o*a-l*c*u):s==="ZYX"?(this.x=l*o*a-r*c*u,this.y=r*c*a+l*o*u,this.z=r*o*u-l*c*a,this.w=r*o*a+l*c*u):s==="YZX"?(this.x=l*o*a+r*c*u,this.y=r*c*a+l*o*u,this.z=r*o*u-l*c*a,this.w=r*o*a-l*c*u):s==="XZY"&&(this.x=l*o*a-r*c*u,this.y=r*c*a-l*o*u,this.z=r*o*u+l*c*a,this.w=r*o*a+l*c*u),this}clone(){return new Wi(this.x,this.y,this.z,this.w)}slerp(e,t,i){i===void 0&&(i=new Wi);const s=this.x,r=this.y,o=this.z,a=this.w;let l=e.x,c=e.y,u=e.z,C=e.w,d,h,m,v,y;return h=s*l+r*c+o*u+a*C,h<0&&(h=-h,l=-l,c=-c,u=-u,C=-C),1-h>1e-6?(d=Math.acos(h),m=Math.sin(d),v=Math.sin((1-t)*d)/m,y=Math.sin(t*d)/m):(v=1-t,y=t),i.x=v*s+y*l,i.y=v*r+y*c,i.z=v*o+y*u,i.w=v*a+y*C,i}integrate(e,t,i,s){s===void 0&&(s=new Wi);const r=e.x*i.x,o=e.y*i.y,a=e.z*i.z,l=this.x,c=this.y,u=this.z,C=this.w,d=t*.5;return s.x+=d*(r*C+o*u-a*c),s.y+=d*(o*C+a*l-r*u),s.z+=d*(a*C+r*c-o*l),s.w+=d*(-r*l-o*c-a*u),s}}const rT=new K,oT=new K,aT={SPHERE:1,PLANE:2,BOX:4,COMPOUND:8,CONVEXPOLYHEDRON:16,HEIGHTFIELD:32,PARTICLE:64,CYLINDER:128,TRIMESH:256};class Je{constructor(e){e===void 0&&(e={}),this.id=Je.idCounter++,this.type=e.type||0,this.boundingSphereRadius=0,this.collisionResponse=e.collisionResponse?e.collisionResponse:!0,this.collisionFilterGroup=e.collisionFilterGroup!==void 0?e.collisionFilterGroup:1,this.collisionFilterMask=e.collisionFilterMask!==void 0?e.collisionFilterMask:-1,this.material=e.material?e.material:null,this.body=null}updateBoundingSphereRadius(){throw`computeBoundingSphereRadius() not implemented for shape type ${this.type}`}volume(){throw`volume() not implemented for shape type ${this.type}`}calculateLocalInertia(e,t){throw`calculateLocalInertia() not implemented for shape type ${this.type}`}calculateWorldAABB(e,t,i,s){throw`calculateWorldAABB() not implemented for shape type ${this.type}`}}Je.idCounter=0;Je.types=aT;class Di{constructor(e){e===void 0&&(e={}),this.position=new K,this.quaternion=new Wi,e.position&&this.position.copy(e.position),e.quaternion&&this.quaternion.copy(e.quaternion)}pointToLocal(e,t){return Di.pointToLocalFrame(this.position,this.quaternion,e,t)}pointToWorld(e,t){return Di.pointToWorldFrame(this.position,this.quaternion,e,t)}vectorToWorldFrame(e,t){return t===void 0&&(t=new K),this.quaternion.vmult(e,t),t}static pointToLocalFrame(e,t,i,s){return s===void 0&&(s=new K),i.vsub(e,s),t.conjugate(Cw),Cw.vmult(s,s),s}static pointToWorldFrame(e,t,i,s){return s===void 0&&(s=new K),t.vmult(i,s),s.vadd(e,s),s}static vectorToWorldFrame(e,t,i){return i===void 0&&(i=new K),e.vmult(t,i),i}static vectorToLocalFrame(e,t,i,s){return s===void 0&&(s=new K),t.w*=-1,t.vmult(i,s),t.w*=-1,s}}const Cw=new Wi;new K;new K;new K;new K;new K,new K,new K,new K,new K,new K,new K,new K;new K;new Wi;new Ts;new lo;new lo;new lo;new K;new K;new K;new K;new K;new K;new K;new K;new K;new K;new Wi;new K;new K;new K;new K;class pb{constructor(){this.rayFromWorld=new K,this.rayToWorld=new K,this.hitNormalWorld=new K,this.hitPointWorld=new K,this.hasHit=!1,this.shape=null,this.body=null,this.hitFaceIndex=-1,this.distance=-1,this.shouldStop=!1}reset(){this.rayFromWorld.setZero(),this.rayToWorld.setZero(),this.hitNormalWorld.setZero(),this.hitPointWorld.setZero(),this.hasHit=!1,this.shape=null,this.body=null,this.hitFaceIndex=-1,this.distance=-1,this.shouldStop=!1}abort(){this.shouldStop=!0}set(e,t,i,s,r,o,a){this.rayFromWorld.copy(e),this.rayToWorld.copy(t),this.hitNormalWorld.copy(i),this.hitPointWorld.copy(s),this.shape=r,this.body=o,this.distance=a}}let pV,mV,fV,bV,vV,yV,GV;const py={CLOSEST:1,ANY:2,ALL:4};pV=Je.types.SPHERE;mV=Je.types.PLANE;fV=Je.types.BOX;bV=Je.types.CYLINDER;vV=Je.types.CONVEXPOLYHEDRON;yV=Je.types.HEIGHTFIELD;GV=Je.types.TRIMESH;class bi{get[pV](){return this._intersectSphere}get[mV](){return this._intersectPlane}get[fV](){return this._intersectBox}get[bV](){return this._intersectConvex}get[vV](){return this._intersectConvex}get[yV](){return this._intersectHeightfield}get[GV](){return this._intersectTrimesh}constructor(e,t){e===void 0&&(e=new K),t===void 0&&(t=new K),this.from=e.clone(),this.to=t.clone(),this.direction=new K,this.precision=1e-4,this.checkCollisionResponse=!0,this.skipBackfaces=!1,this.collisionFilterMask=-1,this.collisionFilterGroup=-1,this.mode=bi.ANY,this.result=new pb,this.hasHit=!1,this.callback=i=>{}}intersectWorld(e,t){return this.mode=t.mode||bi.ANY,this.result=t.result||new pb,this.skipBackfaces=!!t.skipBackfaces,this.collisionFilterMask=typeof t.collisionFilterMask<"u"?t.collisionFilterMask:-1,this.collisionFilterGroup=typeof t.collisionFilterGroup<"u"?t.collisionFilterGroup:-1,this.checkCollisionResponse=typeof t.checkCollisionResponse<"u"?t.checkCollisionResponse:!0,t.from&&this.from.copy(t.from),t.to&&this.to.copy(t.to),this.callback=t.callback||(()=>{}),this.hasHit=!1,this.result.reset(),this.updateDirection(),this.getAABB(dw),Bf.length=0,e.broadphase.aabbQuery(e,dw,Bf),this.intersectBodies(Bf),this.hasHit}intersectBody(e,t){t&&(this.result=t,this.updateDirection());const i=this.checkCollisionResponse;if(i&&!e.collisionResponse||!(this.collisionFilterGroup&e.collisionFilterMask)||!(e.collisionFilterGroup&this.collisionFilterMask))return;const s=lT,r=gT;for(let o=0,a=e.shapes.length;oe.boundingSphereRadius)return;const a=this[e.type];a&&a.call(this,e,t,i,s,e)}_intersectBox(e,t,i,s,r){return this._intersectConvex(e.convexPolyhedronRepresentation,t,i,s,r)}_intersectPlane(e,t,i,s,r){const o=this.from,a=this.to,l=this.direction,c=new K(0,0,1);t.vmult(c,c);const u=new K;o.vsub(i,u);const C=u.dot(c);a.vsub(i,u);const d=u.dot(c);if(C*d>0||o.distanceTo(a)=0&&v<=1&&(o.lerp(a,v,h),h.vsub(i,m),m.normalize(),this.reportIntersection(m,h,r,s,-1)),this.result.shouldStop)return;y>=0&&y<=1&&(o.lerp(a,y,h),h.vsub(i,m),m.normalize(),this.reportIntersection(m,h,r,s,-1))}}_intersectConvex(e,t,i,s,r,o){const a=dT,l=Aw,c=o&&o.faceList||null,u=e.faces,C=e.vertices,d=e.faceNormals,h=this.direction,m=this.from,v=this.to,y=m.distanceTo(v),A=c?c.length:u.length,b=this.result;for(let f=0;!b.shouldStop&&fy||this.reportIntersection(a,Li,r,s,B)}}}}_intersectTrimesh(e,t,i,s,r,o){const a=hT,l=vT,c=yT,u=Aw,C=AT,d=pT,h=mT,m=bT,v=fT,y=e.indices;e.vertices;const A=this.from,b=this.to,f=this.direction;c.position.copy(i),c.quaternion.copy(t),Di.vectorToLocalFrame(i,t,f,C),Di.pointToLocalFrame(i,t,A,d),Di.pointToLocalFrame(i,t,b,h),h.x*=e.scale.x,h.y*=e.scale.y,h.z*=e.scale.z,d.x*=e.scale.x,d.y*=e.scale.y,d.z*=e.scale.z,h.vsub(d,C),C.normalize();const B=d.distanceSquared(h);e.tree.rayQuery(this,c,l);for(let S=0,x=l.length;!this.result.shouldStop&&S!==x;S++){const R=l[S];e.getNormal(R,a),e.getVertex(y[R*3],tr),tr.vsub(d,u);const M=C.dot(a),Z=a.dot(u)/M;if(Z<0)continue;C.scale(Z,Li),Li.vadd(d,Li),e.getVertex(y[R*3+1],wr),e.getVertex(y[R*3+2],Sr);const V=Li.distanceSquared(d);!(bi.pointInTriangle(Li,wr,tr,Sr)||bi.pointInTriangle(Li,tr,wr,Sr))||V>B||(Di.vectorToWorldFrame(t,a,v),Di.pointToWorldFrame(i,t,Li,m),this.reportIntersection(v,m,r,s,R))}l.length=0}reportIntersection(e,t,i,s,r){const o=this.from,a=this.to,l=o.distanceTo(t),c=this.result;if(!(this.skipBackfaces&&e.dot(this.direction)>0))switch(c.hitFaceIndex=typeof r<"u"?r:-1,this.mode){case bi.ALL:this.hasHit=!0,c.set(o,a,e,t,i,s,l),c.hasHit=!0,this.callback(c);break;case bi.CLOSEST:(l=0&&(C=r*c-o*a)>=0&&u+CDate.now()-n}new K;const BT=k.createContext(null),ZT=()=>k.useContext(BT),BV=k.createContext(null),wT=()=>{const n=k.useContext(BV);if(!n)throw new Error("Physics context not found. @react-three/cannon & components can only be used within a Physics provider");return n};new H(1,1,1);new H;new Fe;const pw=new Xt;function ST(n){const e=k.useRef(null);return n&&typeof n!="function"?n:e}function mw(n){return n.charAt(0).toUpperCase()+n.slice(1)}function ri(n,e){const t=e===void 0?"":`/${e}`;return typeof n=="function"?null:n&&n.current&&`${n.current.uuid}${t}`}const xT=new vl,RT=new xn,WT=n=>e=>n(xT.setFromQuaternion(RT.fromArray(e)).toArray());let ZV=0;function wf(n,e,t,i,s,r){return r===void 0&&(r="bodies"),o=>{const a=ZV++;t[a]={[i]:o};const l=ri(n,s);return l&&e.subscribe({props:{id:a,target:r,type:i},uuid:l}),()=>{delete t[a],e.unsubscribe({props:a})}}}function fw(n,e){let{position:t=[0,0,0],rotation:i=[0,0,0],userData:s={}}=e;n.userData=s,n.position.set(...t),n.rotation.set(...i),n.updateMatrix()}function bw(n,e,t){let{onCollide:i,onCollideBegin:s,onCollideEnd:r}=e;n[t]={collide:i,collideBegin:s,collideEnd:r}}function VT(n,e,t,i,s){i===void 0&&(i=null),s===void 0&&(s=[]);const r=ST(i),{events:o,refs:a,scaleOverrides:l,subscriptions:c,worker:u}=wT(),C=ZT();k.useLayoutEffect(()=>{r.current||(r.current=new Xt);const h=r.current,m=u,v=h instanceof Dg?(h.instanceMatrix.setUsage(G1),h.count):1,y=h instanceof Dg?new Array(v).fill(0).map((b,f)=>`${h.uuid}/${f}`):[h.uuid],A=h instanceof Dg?y.map((b,f)=>{const B=e(f);return fw(pw,B),h.setMatrixAt(f,pw.matrix),h.instanceMatrix.needsUpdate=!0,a[b]=h,C?.add(b,B,n),bw(o,B,b),{...B,args:t(B.args)}}):y.map((b,f)=>{const B=e(f);return fw(h,B),a[b]=h,C?.add(b,B,n),bw(o,B,b),{...B,args:t(B.args)}});return m.addBodies({props:A.map(b=>{let{onCollide:f,onCollideBegin:B,onCollideEnd:S,...x}=b;return{onCollide:!!f,...x}}),type:n,uuid:y}),()=>{y.forEach(b=>{delete a[b],C?.remove(b),delete o[b]}),m.removeBodies({uuid:y})}},s);const d=k.useMemo(()=>{const h=(f,B)=>{const S=`set${mw(f)}`;return{set:x=>{const R=ri(r,B);R&&u[S]({props:x,uuid:R})},subscribe:wf(r,u,c,f,B)}},m=f=>({copy:S=>{let{w:x,x:R,y:M,z:Z}=S;const V=ri(r,f);V&&u.setQuaternion({props:[R,M,Z,x],uuid:V})},set:(S,x,R,M)=>{const Z=ri(r,f);Z&&u.setQuaternion({props:[S,x,R,M],uuid:Z})},subscribe:wf(r,u,c,"quaternion",f)}),v=f=>({copy:B=>{let{x:S,y:x,z:R}=B;const M=ri(r,f);M&&u.setRotation({props:[S,x,R],uuid:M})},set:(B,S,x)=>{const R=ri(r,f);R&&u.setRotation({props:[B,S,x],uuid:R})},subscribe:B=>{const S=ZV++,x="bodies",R="quaternion",M=ri(r,f);return c[S]={[R]:WT(B)},M&&u.subscribe({props:{id:S,target:x,type:R},uuid:M}),()=>{delete c[S],u.unsubscribe({props:S})}}}),y=(f,B)=>{const S=`set${mw(f)}`;return{copy:x=>{let{x:R,y:M,z:Z}=x;const V=ri(r,B);V&&u[S]({props:[R,M,Z],uuid:V})},set:(x,R,M)=>{const Z=ri(r,B);Z&&u[S]({props:[x,R,M],uuid:Z})},subscribe:wf(r,u,c,f,B)}};function A(f){return{allowSleep:h("allowSleep",f),angularDamping:h("angularDamping",f),angularFactor:y("angularFactor",f),angularVelocity:y("angularVelocity",f),applyForce(B,S){const x=ri(r,f);x&&u.applyForce({props:[B,S],uuid:x})},applyImpulse(B,S){const x=ri(r,f);x&&u.applyImpulse({props:[B,S],uuid:x})},applyLocalForce(B,S){const x=ri(r,f);x&&u.applyLocalForce({props:[B,S],uuid:x})},applyLocalImpulse(B,S){const x=ri(r,f);x&&u.applyLocalImpulse({props:[B,S],uuid:x})},applyTorque(B){const S=ri(r,f);S&&u.applyTorque({props:[B],uuid:S})},collisionFilterGroup:h("collisionFilterGroup",f),collisionFilterMask:h("collisionFilterMask",f),collisionResponse:h("collisionResponse",f),fixedRotation:h("fixedRotation",f),isTrigger:h("isTrigger",f),linearDamping:h("linearDamping",f),linearFactor:y("linearFactor",f),mass:h("mass",f),material:h("material",f),position:y("position",f),quaternion:m(f),rotation:v(f),scaleOverride(B){const S=ri(r,f);S&&(l[S]=new H(...B))},sleep(){const B=ri(r,f);B&&u.sleep({uuid:B})},sleepSpeedLimit:h("sleepSpeedLimit",f),sleepTimeLimit:h("sleepTimeLimit",f),userData:h("userData",f),velocity:y("velocity",f),wakeUp(){const B=ri(r,f);B&&u.wakeUp({uuid:B})}}}const b={};return{...A(void 0),at:f=>b[f]||(b[f]=A(f))}},[]);return[r,d]}function wV(n,e,t){return VT("Sphere",n,function(i){if(i===void 0&&(i=[1]),!Array.isArray(i))throw new Error("useSphere args must be an array");return[i[0]]},e,t)}const MT=new H,NT=new H(1,1,1),HT=new xn,ah=new Fe;function vw(n,e,t,i,s){return i===void 0&&(i=NT),n!==void 0?(ah.compose(MT.fromArray(e,n*3),HT.fromArray(t,n*4),i),s&&(s.matrixAutoUpdate=!1,s.matrix.copy(ah)),ah):ah.identity()}const XT=()=>{const n=[];return e=>n.includes(e)?!1:!!n.push(e)};function YT(n){let{allowSleep:e=!1,axisIndex:t=0,broadphase:i="Naive",children:s,defaultContactMaterial:r={contactEquationStiffness:1e6},frictionGravity:o=null,gravity:a=[0,-9.81,0],isPaused:l=!1,iterations:c=5,maxSubSteps:u=10,quatNormalizeFast:C=!1,quatNormalizeSkip:d=0,shouldInvalidate:h=!0,size:m=1e3,solver:v="GS",stepSize:y=1/60,tolerance:A=.001}=n;const{invalidate:b}=es(),[{bodies:f,events:B,refs:S,scaleOverrides:x,subscriptions:R,worker:M}]=k.useState(()=>({bodies:{},events:{},refs:{},scaleOverrides:{},subscriptions:{},worker:new NE({allowSleep:e,axisIndex:t,broadphase:i,defaultContactMaterial:r,frictionGravity:o,gravity:a,iterations:c,quatNormalizeFast:C,quatNormalizeSkip:d,size:m,solver:v,tolerance:A})}));let Z=0;const V=k.useCallback((le,L)=>{l||(Z+=L,M.step({maxSubSteps:u,stepSize:y,timeSinceLastCalled:Z}),Z=0)},[l,u,y]),N=le=>{var L;let{body:J,contact:{bi:P,bj:ce,...se},target:ee,...re}=le;const ve=(L=B[ee])==null?void 0:L.collide;ve&&ve({body:S[J],contact:{bi:S[P],bj:S[ce],...se},target:S[ee],...re})},U=le=>{var L,J;let{bodyA:P,bodyB:ce}=le;const se=(L=B[P])==null?void 0:L.collideBegin;se&&se({body:S[ce],op:"event",target:S[P],type:"collideBegin"});const ee=(J=B[ce])==null?void 0:J.collideBegin;ee&&ee({body:S[P],op:"event",target:S[ce],type:"collideBegin"})},D=le=>{var L,J;let{bodyA:P,bodyB:ce}=le;const se=(L=B[P])==null?void 0:L.collideEnd;se&&se({body:S[ce],op:"event",target:S[P],type:"collideEnd"});const ee=(J=B[ce])==null?void 0:J.collideEnd;ee&&ee({body:S[P],op:"event",target:S[ce],type:"collideEnd"})},$=le=>{let{active:L,bodies:J=[],observations:P,positions:ce,quaternions:se}=le;for(let ee=0;ee{let[re,ve,ye]=ee;const nt=(R[re]||{})[ye];nt&&nt(ve)}),!!L){for(const ee of Object.values(S).filter(XT()))if(ee instanceof Dg)for(let re=0;re{var L;let{body:J,ray:{uuid:P,...ce},...se}=le;const ee=(L=B[P])==null?void 0:L.rayhit;ee&&ee({body:J?S[J]:null,ray:{uuid:P,...ce},...se})};ju(V),k.useEffect(()=>(M.connect(),M.init(),M.on("collide",N),M.on("collideBegin",U),M.on("collideEnd",D),M.on("frame",$),M.on("rayhit",te),()=>{M.terminate(),M.removeAllListeners()}),[]),k.useEffect(()=>{M.axisIndex=t},[t]),k.useEffect(()=>{M.broadphase=i},[i]),k.useEffect(()=>{M.gravity=a},[a]),k.useEffect(()=>{M.iterations=c},[c]),k.useEffect(()=>{M.tolerance=A},[A]);const Ce=k.useMemo(()=>({bodies:f,events:B,refs:S,scaleOverrides:x,subscriptions:R,worker:M}),[f,B,S,R,M]);return E.jsx(BV.Provider,{value:Ce,children:s})}/** * postprocessing v6.31.0 build Sun May 07 2023 * https://github.com/pmndrs/postprocessing * Copyright 2015-2023 Raoul van Rüschen * @license Zlib - */var Sl="varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}",xE=`#ifdef FRAMEBUFFER_PRECISION_HIGH + */var xl="varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}",FT=`#ifdef FRAMEBUFFER_PRECISION_HIGH uniform mediump sampler2D inputBuffer; #else uniform lowp sampler2D inputBuffer; @@ -3506,7 +3506,7 @@ vec4 acc=vec4(0.0);for(int i=0;i<32;++i){vec4 kernel=kernel64[i];vec2 uv=step*ke #else vec4 maxValue=texture2D(inputBuffer,vUv);for(int i=0;i<8;++i){vec4 kernel=kernel16[i];vec2 uv=step*kernel.xy+vUv;maxValue=max(texture2D(inputBuffer,uv),maxValue);uv=step*kernel.zw+vUv;maxValue=max(texture2D(inputBuffer,uv),maxValue);}gl_FragColor=maxValue; #endif -}}`,nh=class extends Zt{constructor(n=!1,e=!1){super({name:"BokehMaterial",defines:{PASS:n?"2":"1"},uniforms:{inputBuffer:new q(null),cocBuffer:new q(null),texelSize:new q(new ne),kernel64:new q(null),kernel16:new q(null),scale:new q(1)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:xE,vertexShader:Sl}),e&&(this.defines.FOREGROUND="1"),this.generateKernel()}set inputBuffer(n){this.uniforms.inputBuffer.value=n}setInputBuffer(n){this.uniforms.inputBuffer.value=n}set cocBuffer(n){this.uniforms.cocBuffer.value=n}setCoCBuffer(n){this.uniforms.cocBuffer.value=n}get scale(){return this.uniforms.scale.value}set scale(n){this.uniforms.scale.value=n}getScale(n){return this.scale}setScale(n){this.scale=n}generateKernel(){const n=2.39996323,e=new Float64Array(128),t=new Float64Array(32);let i=0,s=0;for(let r=0,o=Math.sqrt(80);r<80;++r){const a=r*n,l=Math.sqrt(r)/o,c=l*Math.cos(a),u=l*Math.sin(a);r%5===0?(t[s++]=c,t[s++]=u):(e[i++]=c,e[i++]=u)}this.uniforms.kernel64.value=e,this.uniforms.kernel16.value=t}setTexelSize(n,e){this.uniforms.texelSize.value.set(n,e)}setSize(n,e){this.uniforms.texelSize.value.set(1/n,1/e)}},bV="",_t="srgb",nc="srgb-linear",RE=Number(da.replace(/\D+/g,"")),dy=RE>=152,vV=new Map([[Vu,nc],[Ys,_t]]),WE=new Map([[nc,Vu],[_t,Ys]]);function po(n){return n===null?null:dy?n.outputColorSpace:vV.get(n.outputEncoding)}function kn(n,e){n!==null&&(dy?n.colorSpace=e:n.encoding=WE.get(e))}function Gf(n,e){n===null||e===null||(dy?e.colorSpace=n.colorSpace:e.encoding=n.encoding)}function Mg(n,e,t){return n*(e-t)-e}function el(n,e,t){return Math.min(Math.max((n+e)/(e-t),0),1)}var VE=`#include +}}`,lh=class extends Zt{constructor(n=!1,e=!1){super({name:"BokehMaterial",defines:{PASS:n?"2":"1"},uniforms:{inputBuffer:new q(null),cocBuffer:new q(null),texelSize:new q(new ne),kernel64:new q(null),kernel16:new q(null),scale:new q(1)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:FT,vertexShader:xl}),e&&(this.defines.FOREGROUND="1"),this.generateKernel()}set inputBuffer(n){this.uniforms.inputBuffer.value=n}setInputBuffer(n){this.uniforms.inputBuffer.value=n}set cocBuffer(n){this.uniforms.cocBuffer.value=n}setCoCBuffer(n){this.uniforms.cocBuffer.value=n}get scale(){return this.uniforms.scale.value}set scale(n){this.uniforms.scale.value=n}getScale(n){return this.scale}setScale(n){this.scale=n}generateKernel(){const n=2.39996323,e=new Float64Array(128),t=new Float64Array(32);let i=0,s=0;for(let r=0,o=Math.sqrt(80);r<80;++r){const a=r*n,l=Math.sqrt(r)/o,c=l*Math.cos(a),u=l*Math.sin(a);r%5===0?(t[s++]=c,t[s++]=u):(e[i++]=c,e[i++]=u)}this.uniforms.kernel64.value=e,this.uniforms.kernel16.value=t}setTexelSize(n,e){this.uniforms.texelSize.value.set(n,e)}setSize(n,e){this.uniforms.texelSize.value.set(1/n,1/e)}},SV="",_t="srgb",rc="srgb-linear",KT=Number(Aa.replace(/\D+/g,"")),my=KT>=152,xV=new Map([[Xu,rc],[Fs,_t]]),zT=new Map([[rc,Xu],[_t,Fs]]);function po(n){return n===null?null:my?n.outputColorSpace:xV.get(n.outputEncoding)}function Dn(n,e){n!==null&&(my?n.colorSpace=e:n.encoding=zT.get(e))}function Sf(n,e){n===null||e===null||(my?e.colorSpace=n.colorSpace:e.encoding=n.encoding)}function Xg(n,e,t){return n*(e-t)-e}function nl(n,e,t){return Math.min(Math.max((n+e)/(e-t),0),1)}var LT=`#include #include #ifdef GL_FRAGMENT_PRECISION_HIGH uniform highp sampler2D depthBuffer; @@ -3525,14 +3525,14 @@ float viewZ=perspectiveDepthToViewZ(depth,cameraNear,cameraFar);float linearDept #else float linearDepth=depth; #endif -float signedDistance=linearDepth-focusDistance;float magnitude=smoothstep(0.0,focusRange,abs(signedDistance));gl_FragColor.rg=magnitude*vec2(step(signedDistance,0.0),step(0.0,signedDistance));}`,ME=class extends Zt{constructor(n){super({name:"CircleOfConfusionMaterial",defines:{DEPTH_PACKING:"0"},uniforms:{depthBuffer:new q(null),focusDistance:new q(0),focusRange:new q(0),cameraNear:new q(.3),cameraFar:new q(1e3)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:VE,vertexShader:Sl}),this.uniforms.focalLength=this.uniforms.focusRange,this.copyCameraSettings(n)}get near(){return this.uniforms.cameraNear.value}get far(){return this.uniforms.cameraFar.value}set depthBuffer(n){this.uniforms.depthBuffer.value=n}set depthPacking(n){this.defines.DEPTH_PACKING=n.toFixed(0),this.needsUpdate=!0}setDepthBuffer(n,e=Yn){this.depthBuffer=n,this.depthPacking=e}get focusDistance(){return this.uniforms.focusDistance.value}set focusDistance(n){this.uniforms.focusDistance.value=n}get worldFocusDistance(){return-Mg(this.focusDistance,this.near,this.far)}set worldFocusDistance(n){this.focusDistance=el(-n,this.near,this.far)}getFocusDistance(n){this.uniforms.focusDistance.value=n}setFocusDistance(n){this.uniforms.focusDistance.value=n}get focalLength(){return this.focusRange}set focalLength(n){this.focusRange=n}get focusRange(){return this.uniforms.focusRange.value}set focusRange(n){this.uniforms.focusRange.value=n}get worldFocusRange(){return-Mg(this.focusRange,this.near,this.far)}set worldFocusRange(n){this.focusRange=el(-n,this.near,this.far)}getFocalLength(n){return this.focusRange}setFocalLength(n){this.focusRange=n}adoptCameraSettings(n){this.copyCameraSettings(n)}copyCameraSettings(n){n&&(this.uniforms.cameraNear.value=n.near,this.uniforms.cameraFar.value=n.far,n instanceof An?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}},It={SKIP:9,SET:30,ADD:0,ALPHA:1,AVERAGE:2,COLOR:3,COLOR_BURN:4,COLOR_DODGE:5,DARKEN:6,DIFFERENCE:7,DIVIDE:8,DST:9,EXCLUSION:10,HARD_LIGHT:11,HARD_MIX:12,HUE:13,INVERT:14,INVERT_RGB:15,LIGHTEN:16,LINEAR_BURN:17,LINEAR_DODGE:18,LINEAR_LIGHT:19,LUMINOSITY:20,MULTIPLY:21,NEGATION:22,NORMAL:23,OVERLAY:24,PIN_LIGHT:25,REFLECT:26,SATURATION:27,SCREEN:28,SOFT_LIGHT:29,SRC:30,SUBTRACT:31,VIVID_LIGHT:32},Ng={RED:0,GREEN:1,BLUE:2,ALPHA:3},bI={FULL:0,SINGLE:1},FI={DEFAULT:0,KEEP_MAX_DEPTH:1,DISCARD_MAX_DEPTH:2},yV={DEPTH:0,LUMA:1,COLOR:2},qi={NONE:0,DEPTH:1,CONVOLUTION:2},Tt={FRAGMENT_HEAD:"FRAGMENT_HEAD",FRAGMENT_MAIN_UV:"FRAGMENT_MAIN_UV",FRAGMENT_MAIN_IMAGE:"FRAGMENT_MAIN_IMAGE",VERTEX_HEAD:"VERTEX_HEAD",VERTEX_MAIN_SUPPORT:"VERTEX_MAIN_SUPPORT"},Pa={DISABLED:0,SPORADIC:1,CONSTANT_MILD:2,CONSTANT_WILD:3},dc={VERY_SMALL:0,SMALL:1,MEDIUM:2,LARGE:3,VERY_LARGE:4,HUGE:5},NE={SCALE_UP:"lut.scaleup"},KI={DISCARD:0,MULTIPLY:1,MULTIPLY_RGB_SET_ALPHA:2},HE={DISABLED:0,DEPTH:1,CUSTOM:2},lI={LOW:0,MEDIUM:1,HIGH:2,ULTRA:3},XE=`#ifdef FRAMEBUFFER_PRECISION_HIGH +float signedDistance=linearDepth-focusDistance;float magnitude=smoothstep(0.0,focusRange,abs(signedDistance));gl_FragColor.rg=magnitude*vec2(step(signedDistance,0.0),step(0.0,signedDistance));}`,ET=class extends Zt{constructor(n){super({name:"CircleOfConfusionMaterial",defines:{DEPTH_PACKING:"0"},uniforms:{depthBuffer:new q(null),focusDistance:new q(0),focusRange:new q(0),cameraNear:new q(.3),cameraFar:new q(1e3)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:LT,vertexShader:xl}),this.uniforms.focalLength=this.uniforms.focusRange,this.copyCameraSettings(n)}get near(){return this.uniforms.cameraNear.value}get far(){return this.uniforms.cameraFar.value}set depthBuffer(n){this.uniforms.depthBuffer.value=n}set depthPacking(n){this.defines.DEPTH_PACKING=n.toFixed(0),this.needsUpdate=!0}setDepthBuffer(n,e=Fn){this.depthBuffer=n,this.depthPacking=e}get focusDistance(){return this.uniforms.focusDistance.value}set focusDistance(n){this.uniforms.focusDistance.value=n}get worldFocusDistance(){return-Xg(this.focusDistance,this.near,this.far)}set worldFocusDistance(n){this.focusDistance=nl(-n,this.near,this.far)}getFocusDistance(n){this.uniforms.focusDistance.value=n}setFocusDistance(n){this.uniforms.focusDistance.value=n}get focalLength(){return this.focusRange}set focalLength(n){this.focusRange=n}get focusRange(){return this.uniforms.focusRange.value}set focusRange(n){this.uniforms.focusRange.value=n}get worldFocusRange(){return-Xg(this.focusRange,this.near,this.far)}set worldFocusRange(n){this.focusRange=nl(-n,this.near,this.far)}getFocalLength(n){return this.focusRange}setFocalLength(n){this.focusRange=n}adoptCameraSettings(n){this.copyCameraSettings(n)}copyCameraSettings(n){n&&(this.uniforms.cameraNear.value=n.near,this.uniforms.cameraFar.value=n.far,n instanceof An?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}},It={SKIP:9,SET:30,ADD:0,ALPHA:1,AVERAGE:2,COLOR:3,COLOR_BURN:4,COLOR_DODGE:5,DARKEN:6,DIFFERENCE:7,DIVIDE:8,DST:9,EXCLUSION:10,HARD_LIGHT:11,HARD_MIX:12,HUE:13,INVERT:14,INVERT_RGB:15,LIGHTEN:16,LINEAR_BURN:17,LINEAR_DODGE:18,LINEAR_LIGHT:19,LUMINOSITY:20,MULTIPLY:21,NEGATION:22,NORMAL:23,OVERLAY:24,PIN_LIGHT:25,REFLECT:26,SATURATION:27,SCREEN:28,SOFT_LIGHT:29,SRC:30,SUBTRACT:31,VIVID_LIGHT:32},Yg={RED:0,GREEN:1,BLUE:2,ALPHA:3},GI={FULL:0,SINGLE:1},LI={DEFAULT:0,KEEP_MAX_DEPTH:1,DISCARD_MAX_DEPTH:2},RV={DEPTH:0,LUMA:1,COLOR:2},$i={NONE:0,DEPTH:1,CONVOLUTION:2},Et={FRAGMENT_HEAD:"FRAGMENT_HEAD",FRAGMENT_MAIN_UV:"FRAGMENT_MAIN_UV",FRAGMENT_MAIN_IMAGE:"FRAGMENT_MAIN_IMAGE",VERTEX_HEAD:"VERTEX_HEAD",VERTEX_MAIN_SUPPORT:"VERTEX_MAIN_SUPPORT"},Ja={DISABLED:0,SPORADIC:1,CONSTANT_MILD:2,CONSTANT_WILD:3},pc={VERY_SMALL:0,SMALL:1,MEDIUM:2,LARGE:3,VERY_LARGE:4,HUGE:5},TT={SCALE_UP:"lut.scaleup"},EI={DISCARD:0,MULTIPLY:1,MULTIPLY_RGB_SET_ALPHA:2},kT={DISABLED:0,DEPTH:1,CUSTOM:2},II={LOW:0,MEDIUM:1,HIGH:2,ULTRA:3},DT=`#ifdef FRAMEBUFFER_PRECISION_HIGH uniform mediump sampler2D inputBuffer; #else uniform lowp sampler2D inputBuffer; #endif varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec4 sum=texture2D(inputBuffer,vUv0);sum+=texture2D(inputBuffer,vUv1);sum+=texture2D(inputBuffer,vUv2);sum+=texture2D(inputBuffer,vUv3);gl_FragColor=sum*0.25; #include -}`,YE="uniform vec4 texelSize;uniform float kernel;uniform float scale;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vec2 dUv=(texelSize.xy*vec2(kernel)+texelSize.zw)*scale;vUv0=vec2(uv.x-dUv.x,uv.y+dUv.y);vUv1=vec2(uv.x+dUv.x,uv.y+dUv.y);vUv2=vec2(uv.x+dUv.x,uv.y-dUv.y);vUv3=vec2(uv.x-dUv.x,uv.y-dUv.y);gl_Position=vec4(position.xy,1.0,1.0);}",FE=[new Float32Array([0,0]),new Float32Array([0,1,1]),new Float32Array([0,1,1,2]),new Float32Array([0,1,2,2,3]),new Float32Array([0,1,2,3,4,4,5]),new Float32Array([0,1,2,3,4,5,7,8,9,10])],KE=class extends Zt{constructor(n=new Vt){super({name:"KawaseBlurMaterial",uniforms:{inputBuffer:new q(null),texelSize:new q(new Vt),scale:new q(1),kernel:new q(0)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:XE,vertexShader:YE}),this.setTexelSize(n.x,n.y),this.kernelSize=dc.MEDIUM}set inputBuffer(n){this.uniforms.inputBuffer.value=n}setInputBuffer(n){this.inputBuffer=n}get kernelSequence(){return FE[this.kernelSize]}get scale(){return this.uniforms.scale.value}set scale(n){this.uniforms.scale.value=n}getScale(){return this.uniforms.scale.value}setScale(n){this.uniforms.scale.value=n}getKernel(){return null}get kernel(){return this.uniforms.kernel.value}set kernel(n){this.uniforms.kernel.value=n}setKernel(n){this.kernel=n}setTexelSize(n,e){this.uniforms.texelSize.value.set(n,e,n*.5,e*.5)}setSize(n,e){const t=1/n,i=1/e;this.uniforms.texelSize.value.set(t,i,t*.5,i*.5)}},zE=`#include +}`,UT="uniform vec4 texelSize;uniform float kernel;uniform float scale;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vec2 dUv=(texelSize.xy*vec2(kernel)+texelSize.zw)*scale;vUv0=vec2(uv.x-dUv.x,uv.y+dUv.y);vUv1=vec2(uv.x+dUv.x,uv.y+dUv.y);vUv2=vec2(uv.x+dUv.x,uv.y-dUv.y);vUv3=vec2(uv.x-dUv.x,uv.y-dUv.y);gl_Position=vec4(position.xy,1.0,1.0);}",PT=[new Float32Array([0,0]),new Float32Array([0,1,1]),new Float32Array([0,1,1,2]),new Float32Array([0,1,2,2,3]),new Float32Array([0,1,2,3,4,4,5]),new Float32Array([0,1,2,3,4,5,7,8,9,10])],_T=class extends Zt{constructor(n=new Mt){super({name:"KawaseBlurMaterial",uniforms:{inputBuffer:new q(null),texelSize:new q(new Mt),scale:new q(1),kernel:new q(0)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:DT,vertexShader:UT}),this.setTexelSize(n.x,n.y),this.kernelSize=pc.MEDIUM}set inputBuffer(n){this.uniforms.inputBuffer.value=n}setInputBuffer(n){this.inputBuffer=n}get kernelSequence(){return PT[this.kernelSize]}get scale(){return this.uniforms.scale.value}set scale(n){this.uniforms.scale.value=n}getScale(){return this.uniforms.scale.value}setScale(n){this.uniforms.scale.value=n}getKernel(){return null}get kernel(){return this.uniforms.kernel.value}set kernel(n){this.uniforms.kernel.value=n}setKernel(n){this.kernel=n}setTexelSize(n,e){this.uniforms.texelSize.value.set(n,e,n*.5,e*.5)}setSize(n,e){const t=1/n,i=1/e;this.uniforms.texelSize.value.set(t,i,t*.5,i*.5)}},JT=`#include #include #ifdef FRAMEBUFFER_PRECISION_HIGH uniform mediump sampler2D inputBuffer; @@ -3542,7 +3542,7 @@ uniform lowp sampler2D inputBuffer; uniform float opacity;varying vec2 vUv;void main(){vec4 texel=texture2D(inputBuffer,vUv);gl_FragColor=opacity*texel; #include #include -}`,GV=class extends Zt{constructor(){super({name:"CopyMaterial",uniforms:{inputBuffer:new q(null),opacity:new q(1)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:zE,vertexShader:Sl})}set inputBuffer(n){this.uniforms.inputBuffer.value=n}setInputBuffer(n){this.uniforms.inputBuffer.value=n}getOpacity(n){return this.uniforms.opacity.value}setOpacity(n){this.uniforms.opacity.value=n}},LE=`#include +}`,WV=class extends Zt{constructor(){super({name:"CopyMaterial",uniforms:{inputBuffer:new q(null),opacity:new q(1)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:JT,vertexShader:xl})}set inputBuffer(n){this.uniforms.inputBuffer.value=n}setInputBuffer(n){this.uniforms.inputBuffer.value=n}getOpacity(n){return this.uniforms.opacity.value}setOpacity(n){this.uniforms.opacity.value=n}},OT=`#include #include #ifdef GL_FRAGMENT_PRECISION_HIGH uniform highp sampler2D depthBuffer; @@ -3562,7 +3562,7 @@ float viewZ=perspectiveDepthToViewZ(fragCoordZ,cameraNear,cameraFar); #else float viewZ=orthographicDepthToViewZ(fragCoordZ,cameraNear,cameraFar); #endif -float depthTest=(-vViewZ>-viewZ)?1.0:0.0;gl_FragColor.rg=vec2(0.0,depthTest);}`,TE=`#include +float depthTest=(-vViewZ>-viewZ)?1.0:0.0;gl_FragColor.rg=vec2(0.0,depthTest);}`,QT=`#include #include #include #include @@ -3574,7 +3574,7 @@ varying float vViewZ;varying vec4 vProjTexCoord;void main(){ #include vViewZ=mvPosition.z;vProjTexCoord=gl_Position; #include -}`,EE=class extends Zt{constructor(n=null,e){super({name:"DepthComparisonMaterial",defines:{DEPTH_PACKING:"0"},uniforms:{depthBuffer:new q(null),cameraNear:new q(.3),cameraFar:new q(1e3)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:LE,vertexShader:TE}),this.depthBuffer=n,this.depthPacking=Xr,this.copyCameraSettings(e)}set depthBuffer(n){this.uniforms.depthBuffer.value=n}set depthPacking(n){this.defines.DEPTH_PACKING=n.toFixed(0),this.needsUpdate=!0}setDepthBuffer(n,e=Xr){this.depthBuffer=n,this.depthPacking=e}adoptCameraSettings(n){this.copyCameraSettings(n)}copyCameraSettings(n){n&&(this.uniforms.cameraNear.value=n.near,this.uniforms.cameraFar.value=n.far,n instanceof An?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}},kE=`#include +}`,jT=class extends Zt{constructor(n=null,e){super({name:"DepthComparisonMaterial",defines:{DEPTH_PACKING:"0"},uniforms:{depthBuffer:new q(null),cameraNear:new q(.3),cameraFar:new q(1e3)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:OT,vertexShader:QT}),this.depthBuffer=n,this.depthPacking=Xr,this.copyCameraSettings(e)}set depthBuffer(n){this.uniforms.depthBuffer.value=n}set depthPacking(n){this.defines.DEPTH_PACKING=n.toFixed(0),this.needsUpdate=!0}setDepthBuffer(n,e=Xr){this.depthBuffer=n,this.depthPacking=e}adoptCameraSettings(n){this.copyCameraSettings(n)}copyCameraSettings(n){n&&(this.uniforms.cameraNear.value=n.near,this.uniforms.cameraFar.value=n.far,n instanceof An?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}},qT=`#include varying vec2 vUv; #ifdef NORMAL_DEPTH #ifdef GL_FRAGMENT_PRECISION_HIGH @@ -3610,7 +3610,7 @@ gl_FragColor=(depth==1.0)?vec4(1.0):packDepthToRGBA(depth); gl_FragColor=vec4(vec3(depth),1.0); #endif #endif -}`,DE=`varying vec2 vUv; +}`,$T=`varying vec2 vUv; #if DEPTH_COPY_MODE == 1 uniform vec2 texelPosition; #endif @@ -3620,7 +3620,7 @@ vUv=texelPosition; #else vUv=position.xy*0.5+0.5; #endif -gl_Position=vec4(position.xy,1.0,1.0);}`,UE=class extends Zt{constructor(){super({name:"DepthCopyMaterial",defines:{INPUT_DEPTH_PACKING:"0",OUTPUT_DEPTH_PACKING:"0",DEPTH_COPY_MODE:"0"},uniforms:{depthBuffer:new q(null),texelPosition:new q(new ne)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:kE,vertexShader:DE}),this.depthCopyMode=bI.FULL}get depthBuffer(){return this.uniforms.depthBuffer.value}set depthBuffer(n){this.uniforms.depthBuffer.value=n}set inputDepthPacking(n){this.defines.INPUT_DEPTH_PACKING=n.toFixed(0),this.needsUpdate=!0}get outputDepthPacking(){return Number(this.defines.OUTPUT_DEPTH_PACKING)}set outputDepthPacking(n){this.defines.OUTPUT_DEPTH_PACKING=n.toFixed(0),this.needsUpdate=!0}setDepthBuffer(n,e=Yn){this.depthBuffer=n,this.inputDepthPacking=e}getInputDepthPacking(){return Number(this.defines.INPUT_DEPTH_PACKING)}setInputDepthPacking(n){this.defines.INPUT_DEPTH_PACKING=n.toFixed(0),this.needsUpdate=!0}getOutputDepthPacking(){return Number(this.defines.OUTPUT_DEPTH_PACKING)}setOutputDepthPacking(n){this.defines.OUTPUT_DEPTH_PACKING=n.toFixed(0),this.needsUpdate=!0}get texelPosition(){return this.uniforms.texelPosition.value}getTexelPosition(){return this.uniforms.texelPosition.value}setTexelPosition(n){this.uniforms.texelPosition.value=n}get mode(){return this.depthCopyMode}set mode(n){this.depthCopyMode=n,this.defines.DEPTH_COPY_MODE=n.toFixed(0),this.needsUpdate=!0}getMode(){return this.mode}setMode(n){this.mode=n}},PE=`#include +gl_Position=vec4(position.xy,1.0,1.0);}`,ek=class extends Zt{constructor(){super({name:"DepthCopyMaterial",defines:{INPUT_DEPTH_PACKING:"0",OUTPUT_DEPTH_PACKING:"0",DEPTH_COPY_MODE:"0"},uniforms:{depthBuffer:new q(null),texelPosition:new q(new ne)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:qT,vertexShader:$T}),this.depthCopyMode=GI.FULL}get depthBuffer(){return this.uniforms.depthBuffer.value}set depthBuffer(n){this.uniforms.depthBuffer.value=n}set inputDepthPacking(n){this.defines.INPUT_DEPTH_PACKING=n.toFixed(0),this.needsUpdate=!0}get outputDepthPacking(){return Number(this.defines.OUTPUT_DEPTH_PACKING)}set outputDepthPacking(n){this.defines.OUTPUT_DEPTH_PACKING=n.toFixed(0),this.needsUpdate=!0}setDepthBuffer(n,e=Fn){this.depthBuffer=n,this.inputDepthPacking=e}getInputDepthPacking(){return Number(this.defines.INPUT_DEPTH_PACKING)}setInputDepthPacking(n){this.defines.INPUT_DEPTH_PACKING=n.toFixed(0),this.needsUpdate=!0}getOutputDepthPacking(){return Number(this.defines.OUTPUT_DEPTH_PACKING)}setOutputDepthPacking(n){this.defines.OUTPUT_DEPTH_PACKING=n.toFixed(0),this.needsUpdate=!0}get texelPosition(){return this.uniforms.texelPosition.value}getTexelPosition(){return this.uniforms.texelPosition.value}setTexelPosition(n){this.uniforms.texelPosition.value=n}get mode(){return this.depthCopyMode}set mode(n){this.depthCopyMode=n,this.defines.DEPTH_COPY_MODE=n.toFixed(0),this.needsUpdate=!0}getMode(){return this.mode}setMode(n){this.mode=n}},tk=`#include #ifdef GL_FRAGMENT_PRECISION_HIGH uniform highp sampler2D depthBuffer; #else @@ -3641,7 +3641,7 @@ vec3 n[]=vec3[4](texture2D(normalBuffer,vUv0).rgb,texture2D(normalBuffer,vUv1).r #else vec3 n[]=vec3[4](vec3(0.0),vec3(0.0),vec3(0.0),vec3(0.0)); #endif -gl_FragColor=vec4(n[index],d[index]);}`,_E="uniform vec2 texelSize;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vUv0=uv;vUv1=vec2(uv.x,uv.y+texelSize.y);vUv2=vec2(uv.x+texelSize.x,uv.y);vUv3=uv+texelSize;gl_Position=vec4(position.xy,1.0,1.0);}",JE=class extends Zt{constructor(){super({name:"DepthDownsamplingMaterial",defines:{DEPTH_PACKING:"0"},uniforms:{depthBuffer:new q(null),normalBuffer:new q(null),texelSize:new q(new ne)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:PE,vertexShader:_E})}set depthBuffer(n){this.uniforms.depthBuffer.value=n}set depthPacking(n){this.defines.DEPTH_PACKING=n.toFixed(0),this.needsUpdate=!0}setDepthBuffer(n,e=Yn){this.depthBuffer=n,this.depthPacking=e}set normalBuffer(n){this.uniforms.normalBuffer.value=n,n!==null?this.defines.DOWNSAMPLE_NORMALS="1":delete this.defines.DOWNSAMPLE_NORMALS,this.needsUpdate=!0}setNormalBuffer(n){this.normalBuffer=n}setTexelSize(n,e){this.uniforms.texelSize.value.set(n,e)}setSize(n,e){this.uniforms.texelSize.value.set(1/n,1/e)}},OE=`#include +gl_FragColor=vec4(n[index],d[index]);}`,nk="uniform vec2 texelSize;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vUv0=uv;vUv1=vec2(uv.x,uv.y+texelSize.y);vUv2=vec2(uv.x+texelSize.x,uv.y);vUv3=uv+texelSize;gl_Position=vec4(position.xy,1.0,1.0);}",ik=class extends Zt{constructor(){super({name:"DepthDownsamplingMaterial",defines:{DEPTH_PACKING:"0"},uniforms:{depthBuffer:new q(null),normalBuffer:new q(null),texelSize:new q(new ne)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:tk,vertexShader:nk})}set depthBuffer(n){this.uniforms.depthBuffer.value=n}set depthPacking(n){this.defines.DEPTH_PACKING=n.toFixed(0),this.needsUpdate=!0}setDepthBuffer(n,e=Fn){this.depthBuffer=n,this.depthPacking=e}set normalBuffer(n){this.uniforms.normalBuffer.value=n,n!==null?this.defines.DOWNSAMPLE_NORMALS="1":delete this.defines.DOWNSAMPLE_NORMALS,this.needsUpdate=!0}setNormalBuffer(n){this.normalBuffer=n}setTexelSize(n,e){this.uniforms.texelSize.value.set(n,e)}setSize(n,e){this.uniforms.texelSize.value.set(1/n,1/e)}},sk=`#include #include #ifdef GL_FRAGMENT_PRECISION_HIGH uniform highp sampler2D depthBuffer0;uniform highp sampler2D depthBuffer1; @@ -3676,7 +3676,7 @@ bool keep=isMaxDepth||depthTest(depth.x,depth.y); #else bool keep=!isMaxDepth&&depthTest(depth.x,depth.y); #endif -if(keep){gl_FragColor=texture2D(inputBuffer,vUv);}else{discard;}}`,BV=class extends Zt{constructor(){super({name:"DepthMaskMaterial",defines:{DEPTH_EPSILON:"0.0001",DEPTH_PACKING_0:"0",DEPTH_PACKING_1:"0",DEPTH_TEST_STRATEGY:FI.KEEP_MAX_DEPTH},uniforms:{inputBuffer:new q(null),depthBuffer0:new q(null),depthBuffer1:new q(null),cameraNearFar:new q(new ne(1,1))},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:OE,vertexShader:Sl}),this.depthMode=iA}set depthBuffer0(n){this.uniforms.depthBuffer0.value=n}set depthPacking0(n){this.defines.DEPTH_PACKING_0=n.toFixed(0),this.needsUpdate=!0}setDepthBuffer0(n,e=Yn){this.depthBuffer0=n,this.depthPacking0=e}set depthBuffer1(n){this.uniforms.depthBuffer1.value=n}set depthPacking1(n){this.defines.DEPTH_PACKING_1=n.toFixed(0),this.needsUpdate=!0}setDepthBuffer1(n,e=Yn){this.depthBuffer1=n,this.depthPacking1=e}get maxDepthStrategy(){return Number(this.defines.DEPTH_TEST_STRATEGY)}set maxDepthStrategy(n){this.defines.DEPTH_TEST_STRATEGY=n.toFixed(0),this.needsUpdate=!0}get keepFar(){return this.maxDepthStrategy}set keepFar(n){this.maxDepthStrategy=n?FI.KEEP_MAX_DEPTH:FI.DISCARD_MAX_DEPTH}getMaxDepthStrategy(){return this.maxDepthStrategy}setMaxDepthStrategy(n){this.maxDepthStrategy=n}get epsilon(){return Number(this.defines.DEPTH_EPSILON)}set epsilon(n){this.defines.DEPTH_EPSILON=n.toFixed(16),this.needsUpdate=!0}getEpsilon(){return this.epsilon}setEpsilon(n){this.epsilon=n}get depthMode(){return Number(this.defines.DEPTH_MODE)}set depthMode(n){let e;switch(n){case bv:e="false";break;case vv:e="true";break;case ru:e="abs(d1 - d0) <= DEPTH_EPSILON";break;case xA:e="abs(d1 - d0) > DEPTH_EPSILON";break;case iA:e="d0 > d1";break;case su:e="d0 >= d1";break;case yv:e="d0 <= d1";break;case Gv:default:e="d0 < d1";break}this.defines.DEPTH_MODE=n.toFixed(0),this.defines["depthTest(d0, d1)"]=e,this.needsUpdate=!0}getDepthMode(){return this.depthMode}setDepthMode(n){this.depthMode=n}adoptCameraSettings(n){this.copyCameraSettings(n)}copyCameraSettings(n){n&&(this.uniforms.cameraNearFar.value.set(n.near,n.far),n instanceof An?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}},QE=`#ifdef FRAMEBUFFER_PRECISION_HIGH +if(keep){gl_FragColor=texture2D(inputBuffer,vUv);}else{discard;}}`,VV=class extends Zt{constructor(){super({name:"DepthMaskMaterial",defines:{DEPTH_EPSILON:"0.0001",DEPTH_PACKING_0:"0",DEPTH_PACKING_1:"0",DEPTH_TEST_STRATEGY:LI.KEEP_MAX_DEPTH},uniforms:{inputBuffer:new q(null),depthBuffer0:new q(null),depthBuffer1:new q(null),cameraNearFar:new q(new ne(1,1))},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:sk,vertexShader:xl}),this.depthMode=gA}set depthBuffer0(n){this.uniforms.depthBuffer0.value=n}set depthPacking0(n){this.defines.DEPTH_PACKING_0=n.toFixed(0),this.needsUpdate=!0}setDepthBuffer0(n,e=Fn){this.depthBuffer0=n,this.depthPacking0=e}set depthBuffer1(n){this.uniforms.depthBuffer1.value=n}set depthPacking1(n){this.defines.DEPTH_PACKING_1=n.toFixed(0),this.needsUpdate=!0}setDepthBuffer1(n,e=Fn){this.depthBuffer1=n,this.depthPacking1=e}get maxDepthStrategy(){return Number(this.defines.DEPTH_TEST_STRATEGY)}set maxDepthStrategy(n){this.defines.DEPTH_TEST_STRATEGY=n.toFixed(0),this.needsUpdate=!0}get keepFar(){return this.maxDepthStrategy}set keepFar(n){this.maxDepthStrategy=n?LI.KEEP_MAX_DEPTH:LI.DISCARD_MAX_DEPTH}getMaxDepthStrategy(){return this.maxDepthStrategy}setMaxDepthStrategy(n){this.maxDepthStrategy=n}get epsilon(){return Number(this.defines.DEPTH_EPSILON)}set epsilon(n){this.defines.DEPTH_EPSILON=n.toFixed(16),this.needsUpdate=!0}getEpsilon(){return this.epsilon}setEpsilon(n){this.epsilon=n}get depthMode(){return Number(this.defines.DEPTH_MODE)}set depthMode(n){let e;switch(n){case Bv:e="false";break;case Zv:e="true";break;case lu:e="abs(d1 - d0) <= DEPTH_EPSILON";break;case XA:e="abs(d1 - d0) > DEPTH_EPSILON";break;case gA:e="d0 > d1";break;case au:e="d0 >= d1";break;case wv:e="d0 <= d1";break;case Sv:default:e="d0 < d1";break}this.defines.DEPTH_MODE=n.toFixed(0),this.defines["depthTest(d0, d1)"]=e,this.needsUpdate=!0}getDepthMode(){return this.depthMode}setDepthMode(n){this.depthMode=n}adoptCameraSettings(n){this.copyCameraSettings(n)}copyCameraSettings(n){n&&(this.uniforms.cameraNearFar.value.set(n.near,n.far),n instanceof An?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}},rk=`#ifdef FRAMEBUFFER_PRECISION_HIGH uniform mediump sampler2D inputBuffer; #else uniform lowp sampler2D inputBuffer; @@ -3685,7 +3685,7 @@ uniform lowp sampler2D inputBuffer; #define WEIGHT_OUTER 0.0555555 varying vec2 vUv;varying vec2 vUv00;varying vec2 vUv01;varying vec2 vUv02;varying vec2 vUv03;varying vec2 vUv04;varying vec2 vUv05;varying vec2 vUv06;varying vec2 vUv07;varying vec2 vUv08;varying vec2 vUv09;varying vec2 vUv10;varying vec2 vUv11;float clampToBorder(const in vec2 uv){return float(uv.s>=0.0&&uv.s<=1.0&&uv.t>=0.0&&uv.t<=1.0);}void main(){vec4 c=vec4(0.0);vec4 w=WEIGHT_INNER*vec4(clampToBorder(vUv00),clampToBorder(vUv01),clampToBorder(vUv02),clampToBorder(vUv03));c+=w.x*texture2D(inputBuffer,vUv00);c+=w.y*texture2D(inputBuffer,vUv01);c+=w.z*texture2D(inputBuffer,vUv02);c+=w.w*texture2D(inputBuffer,vUv03);w=WEIGHT_OUTER*vec4(clampToBorder(vUv04),clampToBorder(vUv05),clampToBorder(vUv06),clampToBorder(vUv07));c+=w.x*texture2D(inputBuffer,vUv04);c+=w.y*texture2D(inputBuffer,vUv05);c+=w.z*texture2D(inputBuffer,vUv06);c+=w.w*texture2D(inputBuffer,vUv07);w=WEIGHT_OUTER*vec4(clampToBorder(vUv08),clampToBorder(vUv09),clampToBorder(vUv10),clampToBorder(vUv11));c+=w.x*texture2D(inputBuffer,vUv08);c+=w.y*texture2D(inputBuffer,vUv09);c+=w.z*texture2D(inputBuffer,vUv10);c+=w.w*texture2D(inputBuffer,vUv11);c+=WEIGHT_OUTER*texture2D(inputBuffer,vUv);gl_FragColor=c; #include -}`,jE="uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv00;varying vec2 vUv01;varying vec2 vUv02;varying vec2 vUv03;varying vec2 vUv04;varying vec2 vUv05;varying vec2 vUv06;varying vec2 vUv07;varying vec2 vUv08;varying vec2 vUv09;varying vec2 vUv10;varying vec2 vUv11;void main(){vUv=position.xy*0.5+0.5;vUv00=vUv+texelSize*vec2(-1.0,1.0);vUv01=vUv+texelSize*vec2(1.0,1.0);vUv02=vUv+texelSize*vec2(-1.0,-1.0);vUv03=vUv+texelSize*vec2(1.0,-1.0);vUv04=vUv+texelSize*vec2(-2.0,2.0);vUv05=vUv+texelSize*vec2(0.0,2.0);vUv06=vUv+texelSize*vec2(2.0,2.0);vUv07=vUv+texelSize*vec2(-2.0,0.0);vUv08=vUv+texelSize*vec2(2.0,0.0);vUv09=vUv+texelSize*vec2(-2.0,-2.0);vUv10=vUv+texelSize*vec2(0.0,-2.0);vUv11=vUv+texelSize*vec2(2.0,-2.0);gl_Position=vec4(position.xy,1.0,1.0);}",qE=class extends Zt{constructor(){super({name:"DownsamplingMaterial",uniforms:{inputBuffer:new q(null),texelSize:new q(new ne)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:QE,vertexShader:jE})}set inputBuffer(n){this.uniforms.inputBuffer.value=n}setSize(n,e){this.uniforms.texelSize.value.set(1/n,1/e)}},$E=`varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1; +}`,ok="uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv00;varying vec2 vUv01;varying vec2 vUv02;varying vec2 vUv03;varying vec2 vUv04;varying vec2 vUv05;varying vec2 vUv06;varying vec2 vUv07;varying vec2 vUv08;varying vec2 vUv09;varying vec2 vUv10;varying vec2 vUv11;void main(){vUv=position.xy*0.5+0.5;vUv00=vUv+texelSize*vec2(-1.0,1.0);vUv01=vUv+texelSize*vec2(1.0,1.0);vUv02=vUv+texelSize*vec2(-1.0,-1.0);vUv03=vUv+texelSize*vec2(1.0,-1.0);vUv04=vUv+texelSize*vec2(-2.0,2.0);vUv05=vUv+texelSize*vec2(0.0,2.0);vUv06=vUv+texelSize*vec2(2.0,2.0);vUv07=vUv+texelSize*vec2(-2.0,0.0);vUv08=vUv+texelSize*vec2(2.0,0.0);vUv09=vUv+texelSize*vec2(-2.0,-2.0);vUv10=vUv+texelSize*vec2(0.0,-2.0);vUv11=vUv+texelSize*vec2(2.0,-2.0);gl_Position=vec4(position.xy,1.0,1.0);}",ak=class extends Zt{constructor(){super({name:"DownsamplingMaterial",uniforms:{inputBuffer:new q(null),texelSize:new q(new ne)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:rk,vertexShader:ok})}set inputBuffer(n){this.uniforms.inputBuffer.value=n}setSize(n,e){this.uniforms.texelSize.value.set(1/n,1/e)}},lk=`varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1; #if THREE_REVISION < 143 #define luminance(v) linearToRelativeLuminance(v) #endif @@ -3732,7 +3732,7 @@ float l=luminance(texture2D(inputBuffer,vUv).rgb);float lLeft=luminance(texture2 #elif EDGE_DETECTION_MODE == 2 vec4 delta;vec3 c=texture2D(inputBuffer,vUv).rgb;vec3 cLeft=texture2D(inputBuffer,vUv0).rgb;vec3 t=abs(c-cLeft);delta.x=max(max(t.r,t.g),t.b);vec3 cTop=texture2D(inputBuffer,vUv1).rgb;t=abs(c-cTop);delta.y=max(max(t.r,t.g),t.b);vec2 edges=step(threshold,delta.xy);if(dot(edges,vec2(1.0))==0.0){discard;}vec3 cRight=texture2D(inputBuffer,vUv2).rgb;t=abs(c-cRight);delta.z=max(max(t.r,t.g),t.b);vec3 cBottom=texture2D(inputBuffer,vUv3).rgb;t=abs(c-cBottom);delta.w=max(max(t.r,t.g),t.b);vec2 maxDelta=max(delta.xy,delta.zw);vec3 cLeftLeft=texture2D(inputBuffer,vUv4).rgb;t=abs(c-cLeftLeft);delta.z=max(max(t.r,t.g),t.b);vec3 cTopTop=texture2D(inputBuffer,vUv5).rgb;t=abs(c-cTopTop);delta.w=max(max(t.r,t.g),t.b);maxDelta=max(maxDelta.xy,delta.zw);float finalDelta=max(maxDelta.x,maxDelta.y);edges*=step(finalDelta,LOCAL_CONTRAST_ADAPTATION_FACTOR*delta.xy);gl_FragColor=vec4(edges,0.0,1.0); #endif -}`,ek=`uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1; +}`,gk=`uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1; #if EDGE_DETECTION_MODE != 0 varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5; #endif @@ -3740,7 +3740,7 @@ void main(){vUv=position.xy*0.5+0.5;vUv0=vUv+texelSize*vec2(-1.0,0.0);vUv1=vUv+t #if EDGE_DETECTION_MODE != 0 vUv2=vUv+texelSize*vec2(1.0,0.0);vUv3=vUv+texelSize*vec2(0.0,1.0);vUv4=vUv+texelSize*vec2(-2.0,0.0);vUv5=vUv+texelSize*vec2(0.0,-2.0); #endif -gl_Position=vec4(position.xy,1.0,1.0);}`,tk=class extends Zt{constructor(n=new ne,e=yV.COLOR){super({name:"EdgeDetectionMaterial",defines:{THREE_REVISION:da.replace(/\D+/g,""),LOCAL_CONTRAST_ADAPTATION_FACTOR:"2.0",EDGE_THRESHOLD:"0.1",DEPTH_THRESHOLD:"0.01",PREDICATION_MODE:"0",PREDICATION_THRESHOLD:"0.01",PREDICATION_SCALE:"2.0",PREDICATION_STRENGTH:"1.0",DEPTH_PACKING:"0"},uniforms:{inputBuffer:new q(null),depthBuffer:new q(null),predicationBuffer:new q(null),texelSize:new q(n)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:$E,vertexShader:ek}),this.edgeDetectionMode=e}set depthBuffer(n){this.uniforms.depthBuffer.value=n}set depthPacking(n){this.defines.DEPTH_PACKING=n.toFixed(0),this.needsUpdate=!0}setDepthBuffer(n,e=Yn){this.depthBuffer=n,this.depthPacking=e}get edgeDetectionMode(){return Number(this.defines.EDGE_DETECTION_MODE)}set edgeDetectionMode(n){this.defines.EDGE_DETECTION_MODE=n.toFixed(0),this.needsUpdate=!0}getEdgeDetectionMode(){return this.edgeDetectionMode}setEdgeDetectionMode(n){this.edgeDetectionMode=n}get localContrastAdaptationFactor(){return Number(this.defines.LOCAL_CONTRAST_ADAPTATION_FACTOR)}set localContrastAdaptationFactor(n){this.defines.LOCAL_CONTRAST_ADAPTATION_FACTOR=n.toFixed("6"),this.needsUpdate=!0}getLocalContrastAdaptationFactor(){return this.localContrastAdaptationFactor}setLocalContrastAdaptationFactor(n){this.localContrastAdaptationFactor=n}get edgeDetectionThreshold(){return Number(this.defines.EDGE_THRESHOLD)}set edgeDetectionThreshold(n){this.defines.EDGE_THRESHOLD=n.toFixed("6"),this.defines.DEPTH_THRESHOLD=(n*.1).toFixed("6"),this.needsUpdate=!0}getEdgeDetectionThreshold(){return this.edgeDetectionThreshold}setEdgeDetectionThreshold(n){this.edgeDetectionThreshold=n}get predicationMode(){return Number(this.defines.PREDICATION_MODE)}set predicationMode(n){this.defines.PREDICATION_MODE=n.toFixed(0),this.needsUpdate=!0}getPredicationMode(){return this.predicationMode}setPredicationMode(n){this.predicationMode=n}set predicationBuffer(n){this.uniforms.predicationBuffer.value=n}setPredicationBuffer(n){this.uniforms.predicationBuffer.value=n}get predicationThreshold(){return Number(this.defines.PREDICATION_THRESHOLD)}set predicationThreshold(n){this.defines.PREDICATION_THRESHOLD=n.toFixed("6"),this.needsUpdate=!0}getPredicationThreshold(){return this.predicationThreshold}setPredicationThreshold(n){this.predicationThreshold=n}get predicationScale(){return Number(this.defines.PREDICATION_SCALE)}set predicationScale(n){this.defines.PREDICATION_SCALE=n.toFixed("6"),this.needsUpdate=!0}getPredicationScale(){return this.predicationScale}setPredicationScale(n){this.predicationScale=n}get predicationStrength(){return Number(this.defines.PREDICATION_STRENGTH)}set predicationStrength(n){this.defines.PREDICATION_STRENGTH=n.toFixed("6"),this.needsUpdate=!0}getPredicationStrength(){return this.predicationStrength}setPredicationStrength(n){this.predicationStrength=n}setSize(n,e){this.uniforms.texelSize.value.set(1/n,1/e)}},nk=`#include +gl_Position=vec4(position.xy,1.0,1.0);}`,ck=class extends Zt{constructor(n=new ne,e=RV.COLOR){super({name:"EdgeDetectionMaterial",defines:{THREE_REVISION:Aa.replace(/\D+/g,""),LOCAL_CONTRAST_ADAPTATION_FACTOR:"2.0",EDGE_THRESHOLD:"0.1",DEPTH_THRESHOLD:"0.01",PREDICATION_MODE:"0",PREDICATION_THRESHOLD:"0.01",PREDICATION_SCALE:"2.0",PREDICATION_STRENGTH:"1.0",DEPTH_PACKING:"0"},uniforms:{inputBuffer:new q(null),depthBuffer:new q(null),predicationBuffer:new q(null),texelSize:new q(n)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:lk,vertexShader:gk}),this.edgeDetectionMode=e}set depthBuffer(n){this.uniforms.depthBuffer.value=n}set depthPacking(n){this.defines.DEPTH_PACKING=n.toFixed(0),this.needsUpdate=!0}setDepthBuffer(n,e=Fn){this.depthBuffer=n,this.depthPacking=e}get edgeDetectionMode(){return Number(this.defines.EDGE_DETECTION_MODE)}set edgeDetectionMode(n){this.defines.EDGE_DETECTION_MODE=n.toFixed(0),this.needsUpdate=!0}getEdgeDetectionMode(){return this.edgeDetectionMode}setEdgeDetectionMode(n){this.edgeDetectionMode=n}get localContrastAdaptationFactor(){return Number(this.defines.LOCAL_CONTRAST_ADAPTATION_FACTOR)}set localContrastAdaptationFactor(n){this.defines.LOCAL_CONTRAST_ADAPTATION_FACTOR=n.toFixed("6"),this.needsUpdate=!0}getLocalContrastAdaptationFactor(){return this.localContrastAdaptationFactor}setLocalContrastAdaptationFactor(n){this.localContrastAdaptationFactor=n}get edgeDetectionThreshold(){return Number(this.defines.EDGE_THRESHOLD)}set edgeDetectionThreshold(n){this.defines.EDGE_THRESHOLD=n.toFixed("6"),this.defines.DEPTH_THRESHOLD=(n*.1).toFixed("6"),this.needsUpdate=!0}getEdgeDetectionThreshold(){return this.edgeDetectionThreshold}setEdgeDetectionThreshold(n){this.edgeDetectionThreshold=n}get predicationMode(){return Number(this.defines.PREDICATION_MODE)}set predicationMode(n){this.defines.PREDICATION_MODE=n.toFixed(0),this.needsUpdate=!0}getPredicationMode(){return this.predicationMode}setPredicationMode(n){this.predicationMode=n}set predicationBuffer(n){this.uniforms.predicationBuffer.value=n}setPredicationBuffer(n){this.uniforms.predicationBuffer.value=n}get predicationThreshold(){return Number(this.defines.PREDICATION_THRESHOLD)}set predicationThreshold(n){this.defines.PREDICATION_THRESHOLD=n.toFixed("6"),this.needsUpdate=!0}getPredicationThreshold(){return this.predicationThreshold}setPredicationThreshold(n){this.predicationThreshold=n}get predicationScale(){return Number(this.defines.PREDICATION_SCALE)}set predicationScale(n){this.defines.PREDICATION_SCALE=n.toFixed("6"),this.needsUpdate=!0}getPredicationScale(){return this.predicationScale}setPredicationScale(n){this.predicationScale=n}get predicationStrength(){return Number(this.defines.PREDICATION_STRENGTH)}set predicationStrength(n){this.defines.PREDICATION_STRENGTH=n.toFixed("6"),this.needsUpdate=!0}getPredicationStrength(){return this.predicationStrength}setPredicationStrength(n){this.predicationStrength=n}setSize(n,e){this.uniforms.texelSize.value.set(1/n,1/e)}},Ik=`#include #include #include #define packFloatToRGBA(v) packDepthToRGBA(v) @@ -3781,7 +3781,7 @@ return orthographicDepthToViewZ(depth,cameraNear,cameraFar); #include #endif #include -}`,ik="uniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;VERTEX_HEAD void main(){vUv=position.xy*0.5+0.5;VERTEX_MAIN_SUPPORT gl_Position=vec4(position.xy,1.0,1.0);}",sk=class extends Zt{constructor(n,e,t,i,s=!1){super({name:"EffectMaterial",defines:{THREE_REVISION:da.replace(/\D+/g,""),DEPTH_PACKING:"0",ENCODE_OUTPUT:"1"},uniforms:{inputBuffer:new q(null),depthBuffer:new q(null),resolution:new q(new ne),texelSize:new q(new ne),cameraNear:new q(.3),cameraFar:new q(1e3),aspect:new q(1),time:new q(0)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,dithering:s}),n&&this.setShaderParts(n),e&&this.setDefines(e),t&&this.setUniforms(t),this.copyCameraSettings(i)}set inputBuffer(n){this.uniforms.inputBuffer.value=n}setInputBuffer(n){this.uniforms.inputBuffer.value=n}get depthBuffer(){return this.uniforms.depthBuffer.value}set depthBuffer(n){this.uniforms.depthBuffer.value=n}get depthPacking(){return Number(this.defines.DEPTH_PACKING)}set depthPacking(n){this.defines.DEPTH_PACKING=n.toFixed(0),this.needsUpdate=!0}setDepthBuffer(n,e=Yn){this.depthBuffer=n,this.depthPacking=e}setShaderData(n){this.setShaderParts(n.shaderParts),this.setDefines(n.defines),this.setUniforms(n.uniforms),this.setExtensions(n.extensions)}setShaderParts(n){return this.fragmentShader=nk.replace(Tt.FRAGMENT_HEAD,n.get(Tt.FRAGMENT_HEAD)||"").replace(Tt.FRAGMENT_MAIN_UV,n.get(Tt.FRAGMENT_MAIN_UV)||"").replace(Tt.FRAGMENT_MAIN_IMAGE,n.get(Tt.FRAGMENT_MAIN_IMAGE)||""),this.vertexShader=ik.replace(Tt.VERTEX_HEAD,n.get(Tt.VERTEX_HEAD)||"").replace(Tt.VERTEX_MAIN_SUPPORT,n.get(Tt.VERTEX_MAIN_SUPPORT)||""),this.needsUpdate=!0,this}setDefines(n){for(const e of n.entries())this.defines[e[0]]=e[1];return this.needsUpdate=!0,this}setUniforms(n){for(const e of n.entries())this.uniforms[e[0]]=e[1];return this}setExtensions(n){this.extensions={};for(const e of n)this.extensions[e]=!0;return this}get encodeOutput(){return this.defines.ENCODE_OUTPUT!==void 0}set encodeOutput(n){this.encodeOutput!==n&&(n?this.defines.ENCODE_OUTPUT="1":delete this.defines.ENCODE_OUTPUT,this.needsUpdate=!0)}isOutputEncodingEnabled(n){return this.encodeOutput}setOutputEncodingEnabled(n){this.encodeOutput=n}get time(){return this.uniforms.time.value}set time(n){this.uniforms.time.value=n}setDeltaTime(n){this.uniforms.time.value+=n}adoptCameraSettings(n){this.copyCameraSettings(n)}copyCameraSettings(n){n&&(this.uniforms.cameraNear.value=n.near,this.uniforms.cameraFar.value=n.far,n instanceof An?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}setSize(n,e){const t=this.uniforms;t.resolution.value.set(n,e),t.texelSize.value.set(1/n,1/e),t.aspect.value=n/e}static get Section(){return Tt}},rk=`#include +}`,uk="uniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;VERTEX_HEAD void main(){vUv=position.xy*0.5+0.5;VERTEX_MAIN_SUPPORT gl_Position=vec4(position.xy,1.0,1.0);}",Ck=class extends Zt{constructor(n,e,t,i,s=!1){super({name:"EffectMaterial",defines:{THREE_REVISION:Aa.replace(/\D+/g,""),DEPTH_PACKING:"0",ENCODE_OUTPUT:"1"},uniforms:{inputBuffer:new q(null),depthBuffer:new q(null),resolution:new q(new ne),texelSize:new q(new ne),cameraNear:new q(.3),cameraFar:new q(1e3),aspect:new q(1),time:new q(0)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,dithering:s}),n&&this.setShaderParts(n),e&&this.setDefines(e),t&&this.setUniforms(t),this.copyCameraSettings(i)}set inputBuffer(n){this.uniforms.inputBuffer.value=n}setInputBuffer(n){this.uniforms.inputBuffer.value=n}get depthBuffer(){return this.uniforms.depthBuffer.value}set depthBuffer(n){this.uniforms.depthBuffer.value=n}get depthPacking(){return Number(this.defines.DEPTH_PACKING)}set depthPacking(n){this.defines.DEPTH_PACKING=n.toFixed(0),this.needsUpdate=!0}setDepthBuffer(n,e=Fn){this.depthBuffer=n,this.depthPacking=e}setShaderData(n){this.setShaderParts(n.shaderParts),this.setDefines(n.defines),this.setUniforms(n.uniforms),this.setExtensions(n.extensions)}setShaderParts(n){return this.fragmentShader=Ik.replace(Et.FRAGMENT_HEAD,n.get(Et.FRAGMENT_HEAD)||"").replace(Et.FRAGMENT_MAIN_UV,n.get(Et.FRAGMENT_MAIN_UV)||"").replace(Et.FRAGMENT_MAIN_IMAGE,n.get(Et.FRAGMENT_MAIN_IMAGE)||""),this.vertexShader=uk.replace(Et.VERTEX_HEAD,n.get(Et.VERTEX_HEAD)||"").replace(Et.VERTEX_MAIN_SUPPORT,n.get(Et.VERTEX_MAIN_SUPPORT)||""),this.needsUpdate=!0,this}setDefines(n){for(const e of n.entries())this.defines[e[0]]=e[1];return this.needsUpdate=!0,this}setUniforms(n){for(const e of n.entries())this.uniforms[e[0]]=e[1];return this}setExtensions(n){this.extensions={};for(const e of n)this.extensions[e]=!0;return this}get encodeOutput(){return this.defines.ENCODE_OUTPUT!==void 0}set encodeOutput(n){this.encodeOutput!==n&&(n?this.defines.ENCODE_OUTPUT="1":delete this.defines.ENCODE_OUTPUT,this.needsUpdate=!0)}isOutputEncodingEnabled(n){return this.encodeOutput}setOutputEncodingEnabled(n){this.encodeOutput=n}get time(){return this.uniforms.time.value}set time(n){this.uniforms.time.value=n}setDeltaTime(n){this.uniforms.time.value+=n}adoptCameraSettings(n){this.copyCameraSettings(n)}copyCameraSettings(n){n&&(this.uniforms.cameraNear.value=n.near,this.uniforms.cameraFar.value=n.far,n instanceof An?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}setSize(n,e){const t=this.uniforms;t.resolution.value.set(n,e),t.texelSize.value.set(1/n,1/e),t.aspect.value=n/e}static get Section(){return Et}},dk=`#include #include #ifdef FRAMEBUFFER_PRECISION_HIGH uniform mediump sampler2D inputBuffer; @@ -3790,7 +3790,7 @@ uniform lowp sampler2D inputBuffer; #endif uniform vec2 lightPosition;uniform float exposure;uniform float decay;uniform float density;uniform float weight;uniform float clampMax;varying vec2 vUv;void main(){vec2 coord=vUv;vec2 delta=lightPosition-coord;delta*=1.0/SAMPLES_FLOAT*density;float illuminationDecay=1.0;vec4 color=vec4(0.0);for(int i=0;i -}`,ok=class extends Zt{constructor(n){super({name:"GodRaysMaterial",defines:{SAMPLES_INT:"60",SAMPLES_FLOAT:"60.0"},uniforms:{inputBuffer:new q(null),lightPosition:new q(n),density:new q(1),decay:new q(1),weight:new q(1),exposure:new q(1),clampMax:new q(1)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:rk,vertexShader:Sl})}set inputBuffer(n){this.uniforms.inputBuffer.value=n}setInputBuffer(n){this.uniforms.inputBuffer.value=n}get lightPosition(){return this.uniforms.lightPosition.value}getLightPosition(){return this.uniforms.lightPosition.value}setLightPosition(n){this.uniforms.lightPosition.value=n}get density(){return this.uniforms.density.value}set density(n){this.uniforms.density.value=n}getDensity(){return this.uniforms.density.value}setDensity(n){this.uniforms.density.value=n}get decay(){return this.uniforms.decay.value}set decay(n){this.uniforms.decay.value=n}getDecay(){return this.uniforms.decay.value}setDecay(n){this.uniforms.decay.value=n}get weight(){return this.uniforms.weight.value}set weight(n){this.uniforms.weight.value=n}getWeight(){return this.uniforms.weight.value}setWeight(n){this.uniforms.weight.value=n}get exposure(){return this.uniforms.exposure.value}set exposure(n){this.uniforms.exposure.value=n}getExposure(){return this.uniforms.exposure.value}setExposure(n){this.uniforms.exposure.value=n}get maxIntensity(){return this.uniforms.clampMax.value}set maxIntensity(n){this.uniforms.clampMax.value=n}getMaxIntensity(){return this.uniforms.clampMax.value}setMaxIntensity(n){this.uniforms.clampMax.value=n}get samples(){return Number(this.defines.SAMPLES_INT)}set samples(n){const e=Math.floor(n);this.defines.SAMPLES_INT=e.toFixed(0),this.defines.SAMPLES_FLOAT=e.toFixed(1),this.needsUpdate=!0}getSamples(){return this.samples}setSamples(n){this.samples=n}},ak=`#include +}`,hk=class extends Zt{constructor(n){super({name:"GodRaysMaterial",defines:{SAMPLES_INT:"60",SAMPLES_FLOAT:"60.0"},uniforms:{inputBuffer:new q(null),lightPosition:new q(n),density:new q(1),decay:new q(1),weight:new q(1),exposure:new q(1),clampMax:new q(1)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:dk,vertexShader:xl})}set inputBuffer(n){this.uniforms.inputBuffer.value=n}setInputBuffer(n){this.uniforms.inputBuffer.value=n}get lightPosition(){return this.uniforms.lightPosition.value}getLightPosition(){return this.uniforms.lightPosition.value}setLightPosition(n){this.uniforms.lightPosition.value=n}get density(){return this.uniforms.density.value}set density(n){this.uniforms.density.value=n}getDensity(){return this.uniforms.density.value}setDensity(n){this.uniforms.density.value=n}get decay(){return this.uniforms.decay.value}set decay(n){this.uniforms.decay.value=n}getDecay(){return this.uniforms.decay.value}setDecay(n){this.uniforms.decay.value=n}get weight(){return this.uniforms.weight.value}set weight(n){this.uniforms.weight.value=n}getWeight(){return this.uniforms.weight.value}setWeight(n){this.uniforms.weight.value=n}get exposure(){return this.uniforms.exposure.value}set exposure(n){this.uniforms.exposure.value=n}getExposure(){return this.uniforms.exposure.value}setExposure(n){this.uniforms.exposure.value=n}get maxIntensity(){return this.uniforms.clampMax.value}set maxIntensity(n){this.uniforms.clampMax.value=n}getMaxIntensity(){return this.uniforms.clampMax.value}setMaxIntensity(n){this.uniforms.clampMax.value=n}get samples(){return Number(this.defines.SAMPLES_INT)}set samples(n){const e=Math.floor(n);this.defines.SAMPLES_INT=e.toFixed(0),this.defines.SAMPLES_FLOAT=e.toFixed(1),this.needsUpdate=!0}getSamples(){return this.samples}setSamples(n){this.samples=n}},Ak=`#include #if THREE_REVISION < 143 #define luminance(v) linearToRelativeLuminance(v) #endif @@ -3815,7 +3815,7 @@ gl_FragColor=vec4(texel.rgb*l,l); #else gl_FragColor=vec4(l); #endif -}`,lk=class extends Zt{constructor(n=!1,e=null){super({name:"LuminanceMaterial",defines:{THREE_REVISION:da.replace(/\D+/g,"")},uniforms:{inputBuffer:new q(null),threshold:new q(0),smoothing:new q(1),range:new q(null)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:ak,vertexShader:Sl}),this.colorOutput=n,this.luminanceRange=e}set inputBuffer(n){this.uniforms.inputBuffer.value=n}setInputBuffer(n){this.uniforms.inputBuffer.value=n}get threshold(){return this.uniforms.threshold.value}set threshold(n){this.smoothing>0||n>0?this.defines.THRESHOLD="1":delete this.defines.THRESHOLD,this.uniforms.threshold.value=n}getThreshold(){return this.threshold}setThreshold(n){this.threshold=n}get smoothing(){return this.uniforms.smoothing.value}set smoothing(n){this.threshold>0||n>0?this.defines.THRESHOLD="1":delete this.defines.THRESHOLD,this.uniforms.smoothing.value=n}getSmoothingFactor(){return this.smoothing}setSmoothingFactor(n){this.smoothing=n}get useThreshold(){return this.threshold>0||this.smoothing>0}set useThreshold(n){}get colorOutput(){return this.defines.COLOR!==void 0}set colorOutput(n){n?this.defines.COLOR="1":delete this.defines.COLOR,this.needsUpdate=!0}isColorOutputEnabled(n){return this.colorOutput}setColorOutputEnabled(n){this.colorOutput=n}get useRange(){return this.luminanceRange!==null}set useRange(n){this.luminanceRange=null}get luminanceRange(){return this.uniforms.range.value}set luminanceRange(n){n!==null?this.defines.RANGE="1":delete this.defines.RANGE,this.uniforms.range.value=n,this.needsUpdate=!0}getLuminanceRange(){return this.luminanceRange}setLuminanceRange(n){this.luminanceRange=n}},gk=`#ifdef FRAMEBUFFER_PRECISION_HIGH +}`,pk=class extends Zt{constructor(n=!1,e=null){super({name:"LuminanceMaterial",defines:{THREE_REVISION:Aa.replace(/\D+/g,"")},uniforms:{inputBuffer:new q(null),threshold:new q(0),smoothing:new q(1),range:new q(null)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Ak,vertexShader:xl}),this.colorOutput=n,this.luminanceRange=e}set inputBuffer(n){this.uniforms.inputBuffer.value=n}setInputBuffer(n){this.uniforms.inputBuffer.value=n}get threshold(){return this.uniforms.threshold.value}set threshold(n){this.smoothing>0||n>0?this.defines.THRESHOLD="1":delete this.defines.THRESHOLD,this.uniforms.threshold.value=n}getThreshold(){return this.threshold}setThreshold(n){this.threshold=n}get smoothing(){return this.uniforms.smoothing.value}set smoothing(n){this.threshold>0||n>0?this.defines.THRESHOLD="1":delete this.defines.THRESHOLD,this.uniforms.smoothing.value=n}getSmoothingFactor(){return this.smoothing}setSmoothingFactor(n){this.smoothing=n}get useThreshold(){return this.threshold>0||this.smoothing>0}set useThreshold(n){}get colorOutput(){return this.defines.COLOR!==void 0}set colorOutput(n){n?this.defines.COLOR="1":delete this.defines.COLOR,this.needsUpdate=!0}isColorOutputEnabled(n){return this.colorOutput}setColorOutputEnabled(n){this.colorOutput=n}get useRange(){return this.luminanceRange!==null}set useRange(n){this.luminanceRange=null}get luminanceRange(){return this.uniforms.range.value}set luminanceRange(n){n!==null?this.defines.RANGE="1":delete this.defines.RANGE,this.uniforms.range.value=n,this.needsUpdate=!0}getLuminanceRange(){return this.luminanceRange}setLuminanceRange(n){this.luminanceRange=n}},mk=`#ifdef FRAMEBUFFER_PRECISION_HIGH uniform mediump sampler2D inputBuffer; #else uniform lowp sampler2D inputBuffer; @@ -3855,7 +3855,7 @@ gl_FragColor=vec4(mask*texture2D(inputBuffer,vUv).rgb,mask); #else gl_FragColor=mask*texture2D(inputBuffer,vUv); #endif -}`,ck=class extends Zt{constructor(n=null){super({name:"MaskMaterial",uniforms:{maskTexture:new q(n),inputBuffer:new q(null),strength:new q(1)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:gk,vertexShader:Sl}),this.colorChannel=Ng.RED,this.maskFunction=KI.DISCARD}set inputBuffer(n){this.uniforms.inputBuffer.value=n}setInputBuffer(n){this.uniforms.inputBuffer.value=n}set maskTexture(n){this.uniforms.maskTexture.value=n,delete this.defines.MASK_PRECISION_HIGH,n.type!==rn&&(this.defines.MASK_PRECISION_HIGH="1"),this.needsUpdate=!0}setMaskTexture(n){this.maskTexture=n}set colorChannel(n){this.defines.COLOR_CHANNEL=n.toFixed(0),this.needsUpdate=!0}setColorChannel(n){this.colorChannel=n}set maskFunction(n){this.defines.MASK_FUNCTION=n.toFixed(0),this.needsUpdate=!0}setMaskFunction(n){this.maskFunction=n}get inverted(){return this.defines.INVERTED!==void 0}set inverted(n){this.inverted&&!n?delete this.defines.INVERTED:n&&(this.defines.INVERTED="1"),this.needsUpdate=!0}isInverted(){return this.inverted}setInverted(n){this.inverted=n}get strength(){return this.uniforms.strength.value}set strength(n){this.uniforms.strength.value=n}getStrength(){return this.strength}setStrength(n){this.strength=n}},Ik="uniform lowp sampler2D inputBuffer;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 c0=texture2D(inputBuffer,vUv0).rg;vec2 c1=texture2D(inputBuffer,vUv1).rg;vec2 c2=texture2D(inputBuffer,vUv2).rg;vec2 c3=texture2D(inputBuffer,vUv3).rg;float d0=(c0.x-c1.x)*0.5;float d1=(c2.x-c3.x)*0.5;float d=length(vec2(d0,d1));float a0=min(c0.y,c1.y);float a1=min(c2.y,c3.y);float visibilityFactor=min(a0,a1);gl_FragColor.rg=(1.0-visibilityFactor>0.001)?vec2(d,0.0):vec2(0.0,d);}",uk="uniform vec2 texelSize;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vUv0=vec2(uv.x+texelSize.x,uv.y);vUv1=vec2(uv.x-texelSize.x,uv.y);vUv2=vec2(uv.x,uv.y+texelSize.y);vUv3=vec2(uv.x,uv.y-texelSize.y);gl_Position=vec4(position.xy,1.0,1.0);}",Ck=class extends Zt{constructor(n=new ne){super({name:"OutlineMaterial",uniforms:{inputBuffer:new q(null),texelSize:new q(new ne)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Ik,vertexShader:uk}),this.uniforms.texelSize.value.set(n.x,n.y),this.uniforms.maskTexture=this.uniforms.inputBuffer}set inputBuffer(n){this.uniforms.inputBuffer.value=n}setInputBuffer(n){this.uniforms.inputBuffer.value=n}setTexelSize(n,e){this.uniforms.texelSize.value.set(n,e)}setSize(n,e){this.uniforms.texelSize.value.set(1/n,1/e)}},dk=`#define sampleLevelZeroOffset(t, coord, offset) texture2D(t, coord + offset * texelSize) +}`,fk=class extends Zt{constructor(n=null){super({name:"MaskMaterial",uniforms:{maskTexture:new q(n),inputBuffer:new q(null),strength:new q(1)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:mk,vertexShader:xl}),this.colorChannel=Yg.RED,this.maskFunction=EI.DISCARD}set inputBuffer(n){this.uniforms.inputBuffer.value=n}setInputBuffer(n){this.uniforms.inputBuffer.value=n}set maskTexture(n){this.uniforms.maskTexture.value=n,delete this.defines.MASK_PRECISION_HIGH,n.type!==rn&&(this.defines.MASK_PRECISION_HIGH="1"),this.needsUpdate=!0}setMaskTexture(n){this.maskTexture=n}set colorChannel(n){this.defines.COLOR_CHANNEL=n.toFixed(0),this.needsUpdate=!0}setColorChannel(n){this.colorChannel=n}set maskFunction(n){this.defines.MASK_FUNCTION=n.toFixed(0),this.needsUpdate=!0}setMaskFunction(n){this.maskFunction=n}get inverted(){return this.defines.INVERTED!==void 0}set inverted(n){this.inverted&&!n?delete this.defines.INVERTED:n&&(this.defines.INVERTED="1"),this.needsUpdate=!0}isInverted(){return this.inverted}setInverted(n){this.inverted=n}get strength(){return this.uniforms.strength.value}set strength(n){this.uniforms.strength.value=n}getStrength(){return this.strength}setStrength(n){this.strength=n}},bk="uniform lowp sampler2D inputBuffer;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 c0=texture2D(inputBuffer,vUv0).rg;vec2 c1=texture2D(inputBuffer,vUv1).rg;vec2 c2=texture2D(inputBuffer,vUv2).rg;vec2 c3=texture2D(inputBuffer,vUv3).rg;float d0=(c0.x-c1.x)*0.5;float d1=(c2.x-c3.x)*0.5;float d=length(vec2(d0,d1));float a0=min(c0.y,c1.y);float a1=min(c2.y,c3.y);float visibilityFactor=min(a0,a1);gl_FragColor.rg=(1.0-visibilityFactor>0.001)?vec2(d,0.0):vec2(0.0,d);}",vk="uniform vec2 texelSize;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vUv0=vec2(uv.x+texelSize.x,uv.y);vUv1=vec2(uv.x-texelSize.x,uv.y);vUv2=vec2(uv.x,uv.y+texelSize.y);vUv3=vec2(uv.x,uv.y-texelSize.y);gl_Position=vec4(position.xy,1.0,1.0);}",yk=class extends Zt{constructor(n=new ne){super({name:"OutlineMaterial",uniforms:{inputBuffer:new q(null),texelSize:new q(new ne)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:bk,vertexShader:vk}),this.uniforms.texelSize.value.set(n.x,n.y),this.uniforms.maskTexture=this.uniforms.inputBuffer}set inputBuffer(n){this.uniforms.inputBuffer.value=n}setInputBuffer(n){this.uniforms.inputBuffer.value=n}setTexelSize(n,e){this.uniforms.texelSize.value.set(n,e)}setSize(n,e){this.uniforms.texelSize.value.set(1/n,1/e)}},Gk=`#define sampleLevelZeroOffset(t, coord, offset) texture2D(t, coord + offset * texelSize) #if __VERSION__ < 300 #define round(v) floor(v + 0.5) #endif @@ -3880,7 +3880,7 @@ vec2 d;vec3 coords;coords.x=searchXLeft(vOffset[0].xy,vOffset[2].x);coords.y=vOf #if !defined(DISABLE_DIAG_DETECTION) }else{e.r=0.0;} #endif -}if(e.r>0.0){vec2 d;vec3 coords;coords.y=searchYUp(vOffset[1].xy,vOffset[2].z);coords.x=vOffset[0].x;d.x=coords.y;float e1=texture2D(inputBuffer,coords.xy).g;coords.z=searchYDown(vOffset[1].zw,vOffset[2].w);d.y=coords.z;d=round(resolution.yy*d-vPixCoord.yy);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.xz,vec2(0,1)).g;weights.ba=area(sqrtD,e1,e2,subsampleIndices.x);coords.x=vUv.x;detectVerticalCornerPattern(weights.ba,coords.xyxz,d);}gl_FragColor=weights;}`,hk="uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;void main(){vUv=position.xy*0.5+0.5;vPixCoord=vUv*resolution;vOffset[0]=vUv.xyxy+texelSize.xyxy*vec4(-0.25,-0.125,1.25,-0.125);vOffset[1]=vUv.xyxy+texelSize.xyxy*vec4(-0.125,-0.25,-0.125,1.25);vOffset[2]=vec4(vOffset[0].xz,vOffset[1].yw)+vec4(-2.0,2.0,-2.0,2.0)*texelSize.xxyy*MAX_SEARCH_STEPS_FLOAT;gl_Position=vec4(position.xy,1.0,1.0);}",Ak=class extends Zt{constructor(n=new ne,e=new ne){super({name:"SMAAWeightsMaterial",defines:{MAX_SEARCH_STEPS_INT:"16",MAX_SEARCH_STEPS_FLOAT:"16.0",MAX_SEARCH_STEPS_DIAG_INT:"8",MAX_SEARCH_STEPS_DIAG_FLOAT:"8.0",CORNER_ROUNDING:"25",CORNER_ROUNDING_NORM:"0.25",AREATEX_MAX_DISTANCE:"16.0",AREATEX_MAX_DISTANCE_DIAG:"20.0",AREATEX_PIXEL_SIZE:"(1.0 / vec2(160.0, 560.0))",AREATEX_SUBTEX_SIZE:"(1.0 / 7.0)",SEARCHTEX_SIZE:"vec2(66.0, 33.0)",SEARCHTEX_PACKED_SIZE:"vec2(64.0, 16.0)"},uniforms:{inputBuffer:new q(null),searchTexture:new q(null),areaTexture:new q(null),resolution:new q(e),texelSize:new q(n)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:dk,vertexShader:hk})}set inputBuffer(n){this.uniforms.inputBuffer.value=n}setInputBuffer(n){this.uniforms.inputBuffer.value=n}get searchTexture(){return this.uniforms.searchTexture.value}set searchTexture(n){this.uniforms.searchTexture.value=n}get areaTexture(){return this.uniforms.areaTexture.value}set areaTexture(n){this.uniforms.areaTexture.value=n}setLookupTextures(n,e){this.searchTexture=n,this.areaTexture=e}get orthogonalSearchSteps(){return Number(this.defines.MAX_SEARCH_STEPS_INT)}set orthogonalSearchSteps(n){const e=Math.min(Math.max(n,0),112);this.defines.MAX_SEARCH_STEPS_INT=e.toFixed("0"),this.defines.MAX_SEARCH_STEPS_FLOAT=e.toFixed("1"),this.needsUpdate=!0}setOrthogonalSearchSteps(n){this.orthogonalSearchSteps=n}get diagonalSearchSteps(){return Number(this.defines.MAX_SEARCH_STEPS_DIAG_INT)}set diagonalSearchSteps(n){const e=Math.min(Math.max(n,0),20);this.defines.MAX_SEARCH_STEPS_DIAG_INT=e.toFixed("0"),this.defines.MAX_SEARCH_STEPS_DIAG_FLOAT=e.toFixed("1"),this.needsUpdate=!0}setDiagonalSearchSteps(n){this.diagonalSearchSteps=n}get diagonalDetection(){return this.defines.DISABLE_DIAG_DETECTION===void 0}set diagonalDetection(n){n?delete this.defines.DISABLE_DIAG_DETECTION:this.defines.DISABLE_DIAG_DETECTION="1",this.needsUpdate=!0}isDiagonalDetectionEnabled(){return this.diagonalDetection}setDiagonalDetectionEnabled(n){this.diagonalDetection=n}get cornerRounding(){return Number(this.defines.CORNER_ROUNDING)}set cornerRounding(n){const e=Math.min(Math.max(n,0),100);this.defines.CORNER_ROUNDING=e.toFixed("4"),this.defines.CORNER_ROUNDING_NORM=(e/100).toFixed("4"),this.needsUpdate=!0}setCornerRounding(n){this.cornerRounding=n}get cornerDetection(){return this.defines.DISABLE_CORNER_DETECTION===void 0}set cornerDetection(n){n?delete this.defines.DISABLE_CORNER_DETECTION:this.defines.DISABLE_CORNER_DETECTION="1",this.needsUpdate=!0}isCornerRoundingEnabled(){return this.cornerDetection}setCornerRoundingEnabled(n){this.cornerDetection=n}setSize(n,e){const t=this.uniforms;t.texelSize.value.set(1/n,1/e),t.resolution.value.set(n,e)}},pk=`#include +}if(e.r>0.0){vec2 d;vec3 coords;coords.y=searchYUp(vOffset[1].xy,vOffset[2].z);coords.x=vOffset[0].x;d.x=coords.y;float e1=texture2D(inputBuffer,coords.xy).g;coords.z=searchYDown(vOffset[1].zw,vOffset[2].w);d.y=coords.z;d=round(resolution.yy*d-vPixCoord.yy);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.xz,vec2(0,1)).g;weights.ba=area(sqrtD,e1,e2,subsampleIndices.x);coords.x=vUv.x;detectVerticalCornerPattern(weights.ba,coords.xyxz,d);}gl_FragColor=weights;}`,Bk="uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;void main(){vUv=position.xy*0.5+0.5;vPixCoord=vUv*resolution;vOffset[0]=vUv.xyxy+texelSize.xyxy*vec4(-0.25,-0.125,1.25,-0.125);vOffset[1]=vUv.xyxy+texelSize.xyxy*vec4(-0.125,-0.25,-0.125,1.25);vOffset[2]=vec4(vOffset[0].xz,vOffset[1].yw)+vec4(-2.0,2.0,-2.0,2.0)*texelSize.xxyy*MAX_SEARCH_STEPS_FLOAT;gl_Position=vec4(position.xy,1.0,1.0);}",Zk=class extends Zt{constructor(n=new ne,e=new ne){super({name:"SMAAWeightsMaterial",defines:{MAX_SEARCH_STEPS_INT:"16",MAX_SEARCH_STEPS_FLOAT:"16.0",MAX_SEARCH_STEPS_DIAG_INT:"8",MAX_SEARCH_STEPS_DIAG_FLOAT:"8.0",CORNER_ROUNDING:"25",CORNER_ROUNDING_NORM:"0.25",AREATEX_MAX_DISTANCE:"16.0",AREATEX_MAX_DISTANCE_DIAG:"20.0",AREATEX_PIXEL_SIZE:"(1.0 / vec2(160.0, 560.0))",AREATEX_SUBTEX_SIZE:"(1.0 / 7.0)",SEARCHTEX_SIZE:"vec2(66.0, 33.0)",SEARCHTEX_PACKED_SIZE:"vec2(64.0, 16.0)"},uniforms:{inputBuffer:new q(null),searchTexture:new q(null),areaTexture:new q(null),resolution:new q(e),texelSize:new q(n)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Gk,vertexShader:Bk})}set inputBuffer(n){this.uniforms.inputBuffer.value=n}setInputBuffer(n){this.uniforms.inputBuffer.value=n}get searchTexture(){return this.uniforms.searchTexture.value}set searchTexture(n){this.uniforms.searchTexture.value=n}get areaTexture(){return this.uniforms.areaTexture.value}set areaTexture(n){this.uniforms.areaTexture.value=n}setLookupTextures(n,e){this.searchTexture=n,this.areaTexture=e}get orthogonalSearchSteps(){return Number(this.defines.MAX_SEARCH_STEPS_INT)}set orthogonalSearchSteps(n){const e=Math.min(Math.max(n,0),112);this.defines.MAX_SEARCH_STEPS_INT=e.toFixed("0"),this.defines.MAX_SEARCH_STEPS_FLOAT=e.toFixed("1"),this.needsUpdate=!0}setOrthogonalSearchSteps(n){this.orthogonalSearchSteps=n}get diagonalSearchSteps(){return Number(this.defines.MAX_SEARCH_STEPS_DIAG_INT)}set diagonalSearchSteps(n){const e=Math.min(Math.max(n,0),20);this.defines.MAX_SEARCH_STEPS_DIAG_INT=e.toFixed("0"),this.defines.MAX_SEARCH_STEPS_DIAG_FLOAT=e.toFixed("1"),this.needsUpdate=!0}setDiagonalSearchSteps(n){this.diagonalSearchSteps=n}get diagonalDetection(){return this.defines.DISABLE_DIAG_DETECTION===void 0}set diagonalDetection(n){n?delete this.defines.DISABLE_DIAG_DETECTION:this.defines.DISABLE_DIAG_DETECTION="1",this.needsUpdate=!0}isDiagonalDetectionEnabled(){return this.diagonalDetection}setDiagonalDetectionEnabled(n){this.diagonalDetection=n}get cornerRounding(){return Number(this.defines.CORNER_ROUNDING)}set cornerRounding(n){const e=Math.min(Math.max(n,0),100);this.defines.CORNER_ROUNDING=e.toFixed("4"),this.defines.CORNER_ROUNDING_NORM=(e/100).toFixed("4"),this.needsUpdate=!0}setCornerRounding(n){this.cornerRounding=n}get cornerDetection(){return this.defines.DISABLE_CORNER_DETECTION===void 0}set cornerDetection(n){n?delete this.defines.DISABLE_CORNER_DETECTION:this.defines.DISABLE_CORNER_DETECTION="1",this.needsUpdate=!0}isCornerRoundingEnabled(){return this.cornerDetection}setCornerRoundingEnabled(n){this.cornerDetection=n}setSize(n,e){const t=this.uniforms;t.texelSize.value.set(1/n,1/e),t.resolution.value.set(n,e)}},wk=`#include #include #ifdef NORMAL_DEPTH #ifdef GL_FRAGMENT_PRECISION_HIGH @@ -3934,37 +3934,37 @@ if(linearDepth -}`,vk="uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;varying vec2 vUv6;varying vec2 vUv7;void main(){vUv=position.xy*0.5+0.5;vUv0=vUv+texelSize*vec2(-1.0,1.0);vUv1=vUv+texelSize*vec2(0.0,1.0);vUv2=vUv+texelSize*vec2(1.0,1.0);vUv3=vUv+texelSize*vec2(-1.0,0.0);vUv4=vUv+texelSize*vec2(1.0,0.0);vUv5=vUv+texelSize*vec2(-1.0,-1.0);vUv6=vUv+texelSize*vec2(0.0,-1.0);vUv7=vUv+texelSize*vec2(1.0,-1.0);gl_Position=vec4(position.xy,1.0,1.0);}",yk=class extends Zt{constructor(){super({name:"UpsamplingMaterial",uniforms:{inputBuffer:new q(null),supportBuffer:new q(null),texelSize:new q(new ne),radius:new q(.85)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:bk,vertexShader:vk})}set inputBuffer(n){this.uniforms.inputBuffer.value=n}set supportBuffer(n){this.uniforms.supportBuffer.value=n}get radius(){return this.uniforms.radius.value}set radius(n){this.uniforms.radius.value=n}setSize(n,e){this.uniforms.texelSize.value.set(1/n,1/e)}},Gk=new ac,Fo=null;function Bk(){if(Fo===null){const n=new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),e=new Float32Array([0,0,2,0,0,2]);Fo=new ft,Fo.setAttribute!==void 0?(Fo.setAttribute("position",new kt(n,3)),Fo.setAttribute("uv",new kt(e,2))):(Fo.addAttribute("position",new kt(n,3)),Fo.addAttribute("uv",new kt(e,2)))}return Fo}var Rn=class{constructor(n="Pass",e=new dl,t=Gk){this.name=n,this.renderer=null,this.scene=e,this.camera=t,this.screen=null,this.rtt=!0,this.needsSwap=!0,this.needsDepthTexture=!1,this.enabled=!0}get renderToScreen(){return!this.rtt}set renderToScreen(n){if(this.rtt===n){const e=this.fullscreenMaterial;e!==null&&(e.needsUpdate=!0),this.rtt=!n}}set mainScene(n){}set mainCamera(n){}setRenderer(n){this.renderer=n}isEnabled(){return this.enabled}setEnabled(n){this.enabled=n}get fullscreenMaterial(){return this.screen!==null?this.screen.material:null}set fullscreenMaterial(n){let e=this.screen;e!==null?e.material=n:(e=new En(Bk(),n),e.frustumCulled=!1,this.scene===null&&(this.scene=new dl),this.scene.add(e),this.screen=e)}getFullscreenMaterial(){return this.fullscreenMaterial}setFullscreenMaterial(n){this.fullscreenMaterial=n}getDepthTexture(){return null}setDepthTexture(n,e=Yn){}render(n,e,t,i,s){throw new Error("Render method not implemented!")}setSize(n,e){}initialize(n,e,t){}dispose(){for(const n of Object.keys(this)){const e=this[n];(e instanceof Rt||e instanceof _n||e instanceof qt||e instanceof Rn)&&this[n].dispose()}}},ZV=class extends Rn{constructor(n,e=!0){super("CopyPass"),this.fullscreenMaterial=new GV,this.needsSwap=!1,this.renderTarget=n,n===void 0&&(this.renderTarget=new Rt(1,1,{minFilter:je,magFilter:je,stencilBuffer:!1,depthBuffer:!1}),this.renderTarget.texture.name="CopyPass.Target"),this.autoResize=e}get resize(){return this.autoResize}set resize(n){this.autoResize=n}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}setAutoResizeEnabled(n){this.autoResize=n}render(n,e,t,i,s){this.fullscreenMaterial.inputBuffer=e.texture,n.setRenderTarget(this.renderToScreen?null:this.renderTarget),n.render(this.scene,this.camera)}setSize(n,e){this.autoResize&&this.renderTarget.setSize(n,e)}initialize(n,e,t){t!==void 0&&(this.renderTarget.texture.type=t,t!==rn?this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1":po(n)===_t&&kn(this.renderTarget.texture,_t))}},Zk=class extends Rn{constructor(){super("ClearMaskPass",null,null),this.needsSwap=!1}render(n,e,t,i,s){const r=n.state.buffers.stencil;r.setLocked(!1),r.setTest(!1)}},Aw=new Re,hc=class extends Rn{constructor(n=!0,e=!0,t=!1){super("ClearPass",null,null),this.needsSwap=!1,this.color=n,this.depth=e,this.stencil=t,this.overrideClearColor=null,this.overrideClearAlpha=-1}setClearFlags(n,e,t){this.color=n,this.depth=e,this.stencil=t}getOverrideClearColor(){return this.overrideClearColor}setOverrideClearColor(n){this.overrideClearColor=n}getOverrideClearAlpha(){return this.overrideClearAlpha}setOverrideClearAlpha(n){this.overrideClearAlpha=n}render(n,e,t,i,s){const r=this.overrideClearColor,o=this.overrideClearAlpha,a=n.getClearAlpha(),l=r!==null,c=o>=0;l?(n.getClearColor(Aw),n.setClearColor(r,c?o:a)):c&&n.setClearAlpha(o),n.setRenderTarget(this.renderToScreen?null:e),n.clear(this.color,this.depth,this.stencil),l?n.setClearColor(Aw,a):c&&n.setClearAlpha(a)}},Ko=-1,Jt=class extends zs{constructor(n,e=Ko,t=Ko,i=1){super(),this.resizable=n,this.baseSize=new ne(1,1),this.preferredSize=new ne(e,t),this.target=this.preferredSize,this.s=i,this.effectiveSize=new ne,this.addEventListener("change",()=>this.updateEffectiveSize()),this.updateEffectiveSize()}updateEffectiveSize(){const n=this.baseSize,e=this.preferredSize,t=this.effectiveSize,i=this.scale;e.width!==Ko?t.width=e.width:e.height!==Ko?t.width=Math.round(e.height*(n.width/Math.max(n.height,1))):t.width=Math.round(n.width*i),e.height!==Ko?t.height=e.height:e.width!==Ko?t.height=Math.round(e.width/Math.max(n.width/Math.max(n.height,1),1)):t.height=Math.round(n.height*i)}get width(){return this.effectiveSize.width}set width(n){this.preferredWidth=n}get height(){return this.effectiveSize.height}set height(n){this.preferredHeight=n}getWidth(){return this.width}getHeight(){return this.height}get scale(){return this.s}set scale(n){this.s!==n&&(this.s=n,this.preferredSize.setScalar(Ko),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getScale(){return this.scale}setScale(n){this.scale=n}get baseWidth(){return this.baseSize.width}set baseWidth(n){this.baseSize.width!==n&&(this.baseSize.width=n,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getBaseWidth(){return this.baseWidth}setBaseWidth(n){this.baseWidth=n}get baseHeight(){return this.baseSize.height}set baseHeight(n){this.baseSize.height!==n&&(this.baseSize.height=n,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getBaseHeight(){return this.baseHeight}setBaseHeight(n){this.baseHeight=n}setBaseSize(n,e){(this.baseSize.width!==n||this.baseSize.height!==e)&&(this.baseSize.set(n,e),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}get preferredWidth(){return this.preferredSize.width}set preferredWidth(n){this.preferredSize.width!==n&&(this.preferredSize.width=n,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getPreferredWidth(){return this.preferredWidth}setPreferredWidth(n){this.preferredWidth=n}get preferredHeight(){return this.preferredSize.height}set preferredHeight(n){this.preferredSize.height!==n&&(this.preferredSize.height=n,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getPreferredHeight(){return this.preferredHeight}setPreferredHeight(n){this.preferredHeight=n}setPreferredSize(n,e){(this.preferredSize.width!==n||this.preferredSize.height!==e)&&(this.preferredSize.set(n,e),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}copy(n){this.s=n.scale,this.baseSize.set(n.baseWidth,n.baseHeight),this.preferredSize.set(n.preferredWidth,n.preferredHeight),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height)}static get AUTO_SIZE(){return Ko}},Bf=!1,pw=class{constructor(n=null){this.originalMaterials=new Map,this.material=null,this.materials=null,this.materialsBackSide=null,this.materialsDoubleSide=null,this.materialsFlatShaded=null,this.materialsFlatShadedBackSide=null,this.materialsFlatShadedDoubleSide=null,this.setMaterial(n),this.meshCount=0,this.replaceMaterial=e=>{if(e.isMesh){let t;if(e.material.flatShading)switch(e.material.side){case Pi:t=this.materialsFlatShadedDoubleSide;break;case Tn:t=this.materialsFlatShadedBackSide;break;default:t=this.materialsFlatShaded;break}else switch(e.material.side){case Pi:t=this.materialsDoubleSide;break;case Tn:t=this.materialsBackSide;break;default:t=this.materials;break}this.originalMaterials.set(e,e.material),e.isSkinnedMesh?e.material=t[2]:e.isInstancedMesh?e.material=t[1]:e.material=t[0],++this.meshCount}}}cloneMaterial(n){if(!(n instanceof Zt))return n.clone();const e=n.uniforms,t=new Map;for(const s in e){const r=e[s].value;r.isRenderTargetTexture&&(e[s].value=null,t.set(s,r))}const i=n.clone();for(const s of t)e[s[0]].value=s[1],i.uniforms[s[0]].value=s[1];return i}setMaterial(n){if(this.disposeMaterials(),this.material=n,n!==null){const e=this.materials=[this.cloneMaterial(n),this.cloneMaterial(n),this.cloneMaterial(n)];for(const t of e)t.uniforms=Object.assign({},n.uniforms),t.side=Hr;e[2].skinning=!0,this.materialsBackSide=e.map(t=>{const i=this.cloneMaterial(t);return i.uniforms=Object.assign({},n.uniforms),i.side=Tn,i}),this.materialsDoubleSide=e.map(t=>{const i=this.cloneMaterial(t);return i.uniforms=Object.assign({},n.uniforms),i.side=Pi,i}),this.materialsFlatShaded=e.map(t=>{const i=this.cloneMaterial(t);return i.uniforms=Object.assign({},n.uniforms),i.flatShading=!0,i}),this.materialsFlatShadedBackSide=e.map(t=>{const i=this.cloneMaterial(t);return i.uniforms=Object.assign({},n.uniforms),i.flatShading=!0,i.side=Tn,i}),this.materialsFlatShadedDoubleSide=e.map(t=>{const i=this.cloneMaterial(t);return i.uniforms=Object.assign({},n.uniforms),i.flatShading=!0,i.side=Pi,i})}}render(n,e,t){const i=n.shadowMap.enabled;if(n.shadowMap.enabled=!1,Bf){const s=this.originalMaterials;this.meshCount=0,e.traverse(this.replaceMaterial),n.render(e,t);for(const r of s)r[0].material=r[1];this.meshCount!==s.size&&s.clear()}else{const s=e.overrideMaterial;e.overrideMaterial=this.material,n.render(e,t),e.overrideMaterial=s}n.shadowMap.enabled=i}disposeMaterials(){if(this.material!==null){const n=this.materials.concat(this.materialsBackSide).concat(this.materialsDoubleSide).concat(this.materialsFlatShaded).concat(this.materialsFlatShadedBackSide).concat(this.materialsFlatShadedDoubleSide);for(const e of n)e.dispose()}}dispose(){this.originalMaterials.clear(),this.disposeMaterials()}static get workaroundEnabled(){return Bf}static set workaroundEnabled(n){Bf=n}},Ac=class extends Rn{constructor(n,e,t=null){super("RenderPass",n,e),this.needsSwap=!1,this.clearPass=new hc,this.overrideMaterialManager=t===null?null:new pw(t),this.ignoreBackground=!1,this.skipShadowMapUpdate=!1,this.selection=null}set mainScene(n){this.scene=n}set mainCamera(n){this.camera=n}get renderToScreen(){return super.renderToScreen}set renderToScreen(n){super.renderToScreen=n,this.clearPass.renderToScreen=n}get overrideMaterial(){const n=this.overrideMaterialManager;return n!==null?n.material:null}set overrideMaterial(n){const e=this.overrideMaterialManager;n!==null?e!==null?e.setMaterial(n):this.overrideMaterialManager=new pw(n):e!==null&&(e.dispose(),this.overrideMaterialManager=null)}getOverrideMaterial(){return this.overrideMaterial}setOverrideMaterial(n){this.overrideMaterial=n}get clear(){return this.clearPass.enabled}set clear(n){this.clearPass.enabled=n}getSelection(){return this.selection}setSelection(n){this.selection=n}isBackgroundDisabled(){return this.ignoreBackground}setBackgroundDisabled(n){this.ignoreBackground=n}isShadowMapDisabled(){return this.skipShadowMapUpdate}setShadowMapDisabled(n){this.skipShadowMapUpdate=n}getClearPass(){return this.clearPass}render(n,e,t,i,s){const r=this.scene,o=this.camera,a=this.selection,l=o.layers.mask,c=r.background,u=n.shadowMap.autoUpdate,C=this.renderToScreen?null:e;a!==null&&o.layers.set(a.getLayer()),this.skipShadowMapUpdate&&(n.shadowMap.autoUpdate=!1),(this.ignoreBackground||this.clearPass.overrideClearColor!==null)&&(r.background=null),this.clearPass.enabled&&this.clearPass.render(n,e),n.setRenderTarget(C),this.overrideMaterialManager!==null?this.overrideMaterialManager.render(n,r,o):n.render(r,o),o.layers.mask=l,r.background=c,n.shadowMap.autoUpdate=u}},hy=class extends Rn{constructor(n,e,{renderTarget:t,resolutionScale:i=1,width:s=Jt.AUTO_SIZE,height:r=Jt.AUTO_SIZE,resolutionX:o=s,resolutionY:a=r}={}){super("DepthPass"),this.needsSwap=!1,this.renderPass=new Ac(n,e,new YA({depthPacking:Xr}));const l=this.renderPass;l.skipShadowMapUpdate=!0,l.ignoreBackground=!0;const c=l.getClearPass();c.overrideClearColor=new Re(16777215),c.overrideClearAlpha=1,this.renderTarget=t,this.renderTarget===void 0&&(this.renderTarget=new Rt(1,1,{minFilter:pt,magFilter:pt}),this.renderTarget.texture.name="DepthPass.Target");const u=this.resolution=new Jt(this,o,a,i);u.addEventListener("change",C=>this.setSize(u.baseWidth,u.baseHeight))}set mainScene(n){this.renderPass.mainScene=n}set mainCamera(n){this.renderPass.mainCamera=n}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}getResolutionScale(){return this.resolution.scale}setResolutionScale(n){this.resolution.scale=n}render(n,e,t,i,s){const r=this.renderToScreen?null:this.renderTarget;this.renderPass.render(n,r)}setSize(n,e){const t=this.resolution;t.setBaseSize(n,e),this.renderTarget.setSize(t.width,t.height)}},wV=class extends Rn{constructor({normalBuffer:n=null,resolutionScale:e=.5,width:t=Jt.AUTO_SIZE,height:i=Jt.AUTO_SIZE,resolutionX:s=t,resolutionY:r=i}={}){super("DepthDownsamplingPass");const o=new JE;o.normalBuffer=n,this.fullscreenMaterial=o,this.needsDepthTexture=!0,this.needsSwap=!1,this.renderTarget=new Rt(1,1,{minFilter:pt,magFilter:pt,depthBuffer:!1,type:wn}),this.renderTarget.texture.name="DepthDownsamplingPass.Target",this.renderTarget.texture.generateMipmaps=!1;const a=this.resolution=new Jt(this,s,r,e);a.addEventListener("change",l=>this.setSize(a.baseWidth,a.baseHeight))}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}setDepthTexture(n,e=Yn){this.fullscreenMaterial.depthBuffer=n,this.fullscreenMaterial.depthPacking=e}render(n,e,t,i,s){n.setRenderTarget(this.renderToScreen?null:this.renderTarget),n.render(this.scene,this.camera)}setSize(n,e){const t=this.resolution;t.setBaseSize(n,e),this.renderTarget.setSize(t.width,t.height),this.fullscreenMaterial.setSize(n,e)}initialize(n,e,t){const i=n.getContext();if(!(i.getExtension("EXT_color_buffer_float")||i.getExtension("EXT_color_buffer_half_float")))throw new Error("Rendering to float texture is not supported.")}},wk=class extends Rn{constructor({depthPacking:n=Xr}={}){super("DepthCopyPass");const e=new UE;e.outputDepthPacking=n,this.fullscreenMaterial=e,this.needsDepthTexture=!0,this.needsSwap=!1,this.renderTarget=new Rt(1,1,{type:n===Xr?rn:wn,minFilter:pt,magFilter:pt,depthBuffer:!1}),this.renderTarget.texture.name="DepthCopyPass.Target"}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}get depthPacking(){return this.fullscreenMaterial.outputDepthPacking}getDepthPacking(){return this.fullscreenMaterial.outputDepthPacking}setDepthTexture(n,e=Yn){this.fullscreenMaterial.depthBuffer=n,this.fullscreenMaterial.inputDepthPacking=e}render(n,e,t,i,s){n.setRenderTarget(this.renderToScreen?null:this.renderTarget),n.render(this.scene,this.camera)}setSize(n,e){this.renderTarget.setSize(n,e)}},ih=new Float32Array([255/256/256**3,255/256/256**2,255/256/256,255/256]);function Sk(n){return(n[0]*ih[0]+n[1]*ih[1]+n[2]*ih[2]+n[3]*ih[3])/255}var xk=class extends wk{constructor({depthPacking:n=Xr,mode:e=bI.SINGLE}={}){super({depthPacking:n}),this.name="DepthPickingPass",this.fullscreenMaterial.mode=e,this.pixelBuffer=n===Xr?new Uint8Array(4):new Float32Array(4),this.callback=null}readDepth(n){return this.fullscreenMaterial.texelPosition.set(n.x*.5+.5,n.y*.5+.5),new Promise(e=>{this.callback=e})}render(n,e,t,i,s){const r=this.fullscreenMaterial,o=r.mode;if(o===bI.FULL&&super.render(n),this.callback!==null){const a=this.renderTarget,l=this.pixelBuffer,c=a.texture.type!==wn;let u=0,C=0;if(o===bI.SINGLE)super.render(n);else{const d=r.texelPosition;u=Math.round(d.x*a.width),C=Math.round(d.y*a.height)}n.readRenderTargetPixels(a,u,C,1,1,l),this.callback(c?Sk(l):l[0]),this.callback=null}}setSize(n,e){this.fullscreenMaterial.mode===bI.FULL&&super.setSize(n,e)}};function mw(n,e,t){for(const i of e){const s="$1"+n+i.charAt(0).toUpperCase()+i.slice(1),r=new RegExp("([^\\.])(\\b"+i+"\\b)","g");for(const o of t.entries())o[1]!==null&&t.set(o[0],o[1].replace(r,s))}}function Rk(n,e,t){let i=e.getFragmentShader(),s=e.getVertexShader();const r=i!==void 0&&/mainImage/.test(i),o=i!==void 0&&/mainUv/.test(i);if(t.attributes|=e.getAttributes(),i===void 0)throw new Error(`Missing fragment shader (${e.name})`);if(o&&t.attributes&qi.CONVOLUTION)throw new Error(`Effects that transform UVs are incompatible with convolution effects (${e.name})`);if(!r&&!o)throw new Error(`Could not find mainImage or mainUv function (${e.name})`);{const a=/\w+\s+(\w+)\([\w\s,]*\)\s*{/g,l=t.shaderParts;let c=l.get(Tt.FRAGMENT_HEAD)||"",u=l.get(Tt.FRAGMENT_MAIN_UV)||"",C=l.get(Tt.FRAGMENT_MAIN_IMAGE)||"",d=l.get(Tt.VERTEX_HEAD)||"",h=l.get(Tt.VERTEX_MAIN_SUPPORT)||"";const m=new Set,v=new Set;if(o&&(u+=` ${n}MainUv(UV); +}`,Wk="uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;varying vec2 vUv6;varying vec2 vUv7;void main(){vUv=position.xy*0.5+0.5;vUv0=vUv+texelSize*vec2(-1.0,1.0);vUv1=vUv+texelSize*vec2(0.0,1.0);vUv2=vUv+texelSize*vec2(1.0,1.0);vUv3=vUv+texelSize*vec2(-1.0,0.0);vUv4=vUv+texelSize*vec2(1.0,0.0);vUv5=vUv+texelSize*vec2(-1.0,-1.0);vUv6=vUv+texelSize*vec2(0.0,-1.0);vUv7=vUv+texelSize*vec2(1.0,-1.0);gl_Position=vec4(position.xy,1.0,1.0);}",Vk=class extends Zt{constructor(){super({name:"UpsamplingMaterial",uniforms:{inputBuffer:new q(null),supportBuffer:new q(null),texelSize:new q(new ne),radius:new q(.85)},blending:tn,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Rk,vertexShader:Wk})}set inputBuffer(n){this.uniforms.inputBuffer.value=n}set supportBuffer(n){this.uniforms.supportBuffer.value=n}get radius(){return this.uniforms.radius.value}set radius(n){this.uniforms.radius.value=n}setSize(n,e){this.uniforms.texelSize.value.set(1/n,1/e)}},Mk=new cc,Fo=null;function Nk(){if(Fo===null){const n=new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),e=new Float32Array([0,0,2,0,0,2]);Fo=new ft,Fo.setAttribute!==void 0?(Fo.setAttribute("position",new kt(n,3)),Fo.setAttribute("uv",new kt(e,2))):(Fo.addAttribute("position",new kt(n,3)),Fo.addAttribute("uv",new kt(e,2)))}return Fo}var Rn=class{constructor(n="Pass",e=new hl,t=Mk){this.name=n,this.renderer=null,this.scene=e,this.camera=t,this.screen=null,this.rtt=!0,this.needsSwap=!0,this.needsDepthTexture=!1,this.enabled=!0}get renderToScreen(){return!this.rtt}set renderToScreen(n){if(this.rtt===n){const e=this.fullscreenMaterial;e!==null&&(e.needsUpdate=!0),this.rtt=!n}}set mainScene(n){}set mainCamera(n){}setRenderer(n){this.renderer=n}isEnabled(){return this.enabled}setEnabled(n){this.enabled=n}get fullscreenMaterial(){return this.screen!==null?this.screen.material:null}set fullscreenMaterial(n){let e=this.screen;e!==null?e.material=n:(e=new kn(Nk(),n),e.frustumCulled=!1,this.scene===null&&(this.scene=new hl),this.scene.add(e),this.screen=e)}getFullscreenMaterial(){return this.fullscreenMaterial}setFullscreenMaterial(n){this.fullscreenMaterial=n}getDepthTexture(){return null}setDepthTexture(n,e=Fn){}render(n,e,t,i,s){throw new Error("Render method not implemented!")}setSize(n,e){}initialize(n,e,t){}dispose(){for(const n of Object.keys(this)){const e=this[n];(e instanceof Wt||e instanceof Jn||e instanceof qt||e instanceof Rn)&&this[n].dispose()}}},MV=class extends Rn{constructor(n,e=!0){super("CopyPass"),this.fullscreenMaterial=new WV,this.needsSwap=!1,this.renderTarget=n,n===void 0&&(this.renderTarget=new Wt(1,1,{minFilter:je,magFilter:je,stencilBuffer:!1,depthBuffer:!1}),this.renderTarget.texture.name="CopyPass.Target"),this.autoResize=e}get resize(){return this.autoResize}set resize(n){this.autoResize=n}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}setAutoResizeEnabled(n){this.autoResize=n}render(n,e,t,i,s){this.fullscreenMaterial.inputBuffer=e.texture,n.setRenderTarget(this.renderToScreen?null:this.renderTarget),n.render(this.scene,this.camera)}setSize(n,e){this.autoResize&&this.renderTarget.setSize(n,e)}initialize(n,e,t){t!==void 0&&(this.renderTarget.texture.type=t,t!==rn?this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1":po(n)===_t&&Dn(this.renderTarget.texture,_t))}},Hk=class extends Rn{constructor(){super("ClearMaskPass",null,null),this.needsSwap=!1}render(n,e,t,i,s){const r=n.state.buffers.stencil;r.setLocked(!1),r.setTest(!1)}},yw=new Re,mc=class extends Rn{constructor(n=!0,e=!0,t=!1){super("ClearPass",null,null),this.needsSwap=!1,this.color=n,this.depth=e,this.stencil=t,this.overrideClearColor=null,this.overrideClearAlpha=-1}setClearFlags(n,e,t){this.color=n,this.depth=e,this.stencil=t}getOverrideClearColor(){return this.overrideClearColor}setOverrideClearColor(n){this.overrideClearColor=n}getOverrideClearAlpha(){return this.overrideClearAlpha}setOverrideClearAlpha(n){this.overrideClearAlpha=n}render(n,e,t,i,s){const r=this.overrideClearColor,o=this.overrideClearAlpha,a=n.getClearAlpha(),l=r!==null,c=o>=0;l?(n.getClearColor(yw),n.setClearColor(r,c?o:a)):c&&n.setClearAlpha(o),n.setRenderTarget(this.renderToScreen?null:e),n.clear(this.color,this.depth,this.stencil),l?n.setClearColor(yw,a):c&&n.setClearAlpha(a)}},Ko=-1,Jt=class extends Ls{constructor(n,e=Ko,t=Ko,i=1){super(),this.resizable=n,this.baseSize=new ne(1,1),this.preferredSize=new ne(e,t),this.target=this.preferredSize,this.s=i,this.effectiveSize=new ne,this.addEventListener("change",()=>this.updateEffectiveSize()),this.updateEffectiveSize()}updateEffectiveSize(){const n=this.baseSize,e=this.preferredSize,t=this.effectiveSize,i=this.scale;e.width!==Ko?t.width=e.width:e.height!==Ko?t.width=Math.round(e.height*(n.width/Math.max(n.height,1))):t.width=Math.round(n.width*i),e.height!==Ko?t.height=e.height:e.width!==Ko?t.height=Math.round(e.width/Math.max(n.width/Math.max(n.height,1),1)):t.height=Math.round(n.height*i)}get width(){return this.effectiveSize.width}set width(n){this.preferredWidth=n}get height(){return this.effectiveSize.height}set height(n){this.preferredHeight=n}getWidth(){return this.width}getHeight(){return this.height}get scale(){return this.s}set scale(n){this.s!==n&&(this.s=n,this.preferredSize.setScalar(Ko),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getScale(){return this.scale}setScale(n){this.scale=n}get baseWidth(){return this.baseSize.width}set baseWidth(n){this.baseSize.width!==n&&(this.baseSize.width=n,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getBaseWidth(){return this.baseWidth}setBaseWidth(n){this.baseWidth=n}get baseHeight(){return this.baseSize.height}set baseHeight(n){this.baseSize.height!==n&&(this.baseSize.height=n,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getBaseHeight(){return this.baseHeight}setBaseHeight(n){this.baseHeight=n}setBaseSize(n,e){(this.baseSize.width!==n||this.baseSize.height!==e)&&(this.baseSize.set(n,e),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}get preferredWidth(){return this.preferredSize.width}set preferredWidth(n){this.preferredSize.width!==n&&(this.preferredSize.width=n,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getPreferredWidth(){return this.preferredWidth}setPreferredWidth(n){this.preferredWidth=n}get preferredHeight(){return this.preferredSize.height}set preferredHeight(n){this.preferredSize.height!==n&&(this.preferredSize.height=n,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getPreferredHeight(){return this.preferredHeight}setPreferredHeight(n){this.preferredHeight=n}setPreferredSize(n,e){(this.preferredSize.width!==n||this.preferredSize.height!==e)&&(this.preferredSize.set(n,e),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}copy(n){this.s=n.scale,this.baseSize.set(n.baseWidth,n.baseHeight),this.preferredSize.set(n.preferredWidth,n.preferredHeight),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height)}static get AUTO_SIZE(){return Ko}},xf=!1,Gw=class{constructor(n=null){this.originalMaterials=new Map,this.material=null,this.materials=null,this.materialsBackSide=null,this.materialsDoubleSide=null,this.materialsFlatShaded=null,this.materialsFlatShadedBackSide=null,this.materialsFlatShadedDoubleSide=null,this.setMaterial(n),this.meshCount=0,this.replaceMaterial=e=>{if(e.isMesh){let t;if(e.material.flatShading)switch(e.material.side){case _i:t=this.materialsFlatShadedDoubleSide;break;case Tn:t=this.materialsFlatShadedBackSide;break;default:t=this.materialsFlatShaded;break}else switch(e.material.side){case _i:t=this.materialsDoubleSide;break;case Tn:t=this.materialsBackSide;break;default:t=this.materials;break}this.originalMaterials.set(e,e.material),e.isSkinnedMesh?e.material=t[2]:e.isInstancedMesh?e.material=t[1]:e.material=t[0],++this.meshCount}}}cloneMaterial(n){if(!(n instanceof Zt))return n.clone();const e=n.uniforms,t=new Map;for(const s in e){const r=e[s].value;r.isRenderTargetTexture&&(e[s].value=null,t.set(s,r))}const i=n.clone();for(const s of t)e[s[0]].value=s[1],i.uniforms[s[0]].value=s[1];return i}setMaterial(n){if(this.disposeMaterials(),this.material=n,n!==null){const e=this.materials=[this.cloneMaterial(n),this.cloneMaterial(n),this.cloneMaterial(n)];for(const t of e)t.uniforms=Object.assign({},n.uniforms),t.side=Hr;e[2].skinning=!0,this.materialsBackSide=e.map(t=>{const i=this.cloneMaterial(t);return i.uniforms=Object.assign({},n.uniforms),i.side=Tn,i}),this.materialsDoubleSide=e.map(t=>{const i=this.cloneMaterial(t);return i.uniforms=Object.assign({},n.uniforms),i.side=_i,i}),this.materialsFlatShaded=e.map(t=>{const i=this.cloneMaterial(t);return i.uniforms=Object.assign({},n.uniforms),i.flatShading=!0,i}),this.materialsFlatShadedBackSide=e.map(t=>{const i=this.cloneMaterial(t);return i.uniforms=Object.assign({},n.uniforms),i.flatShading=!0,i.side=Tn,i}),this.materialsFlatShadedDoubleSide=e.map(t=>{const i=this.cloneMaterial(t);return i.uniforms=Object.assign({},n.uniforms),i.flatShading=!0,i.side=_i,i})}}render(n,e,t){const i=n.shadowMap.enabled;if(n.shadowMap.enabled=!1,xf){const s=this.originalMaterials;this.meshCount=0,e.traverse(this.replaceMaterial),n.render(e,t);for(const r of s)r[0].material=r[1];this.meshCount!==s.size&&s.clear()}else{const s=e.overrideMaterial;e.overrideMaterial=this.material,n.render(e,t),e.overrideMaterial=s}n.shadowMap.enabled=i}disposeMaterials(){if(this.material!==null){const n=this.materials.concat(this.materialsBackSide).concat(this.materialsDoubleSide).concat(this.materialsFlatShaded).concat(this.materialsFlatShadedBackSide).concat(this.materialsFlatShadedDoubleSide);for(const e of n)e.dispose()}}dispose(){this.originalMaterials.clear(),this.disposeMaterials()}static get workaroundEnabled(){return xf}static set workaroundEnabled(n){xf=n}},fc=class extends Rn{constructor(n,e,t=null){super("RenderPass",n,e),this.needsSwap=!1,this.clearPass=new mc,this.overrideMaterialManager=t===null?null:new Gw(t),this.ignoreBackground=!1,this.skipShadowMapUpdate=!1,this.selection=null}set mainScene(n){this.scene=n}set mainCamera(n){this.camera=n}get renderToScreen(){return super.renderToScreen}set renderToScreen(n){super.renderToScreen=n,this.clearPass.renderToScreen=n}get overrideMaterial(){const n=this.overrideMaterialManager;return n!==null?n.material:null}set overrideMaterial(n){const e=this.overrideMaterialManager;n!==null?e!==null?e.setMaterial(n):this.overrideMaterialManager=new Gw(n):e!==null&&(e.dispose(),this.overrideMaterialManager=null)}getOverrideMaterial(){return this.overrideMaterial}setOverrideMaterial(n){this.overrideMaterial=n}get clear(){return this.clearPass.enabled}set clear(n){this.clearPass.enabled=n}getSelection(){return this.selection}setSelection(n){this.selection=n}isBackgroundDisabled(){return this.ignoreBackground}setBackgroundDisabled(n){this.ignoreBackground=n}isShadowMapDisabled(){return this.skipShadowMapUpdate}setShadowMapDisabled(n){this.skipShadowMapUpdate=n}getClearPass(){return this.clearPass}render(n,e,t,i,s){const r=this.scene,o=this.camera,a=this.selection,l=o.layers.mask,c=r.background,u=n.shadowMap.autoUpdate,C=this.renderToScreen?null:e;a!==null&&o.layers.set(a.getLayer()),this.skipShadowMapUpdate&&(n.shadowMap.autoUpdate=!1),(this.ignoreBackground||this.clearPass.overrideClearColor!==null)&&(r.background=null),this.clearPass.enabled&&this.clearPass.render(n,e),n.setRenderTarget(C),this.overrideMaterialManager!==null?this.overrideMaterialManager.render(n,r,o):n.render(r,o),o.layers.mask=l,r.background=c,n.shadowMap.autoUpdate=u}},fy=class extends Rn{constructor(n,e,{renderTarget:t,resolutionScale:i=1,width:s=Jt.AUTO_SIZE,height:r=Jt.AUTO_SIZE,resolutionX:o=s,resolutionY:a=r}={}){super("DepthPass"),this.needsSwap=!1,this.renderPass=new fc(n,e,new kA({depthPacking:Xr}));const l=this.renderPass;l.skipShadowMapUpdate=!0,l.ignoreBackground=!0;const c=l.getClearPass();c.overrideClearColor=new Re(16777215),c.overrideClearAlpha=1,this.renderTarget=t,this.renderTarget===void 0&&(this.renderTarget=new Wt(1,1,{minFilter:pt,magFilter:pt}),this.renderTarget.texture.name="DepthPass.Target");const u=this.resolution=new Jt(this,o,a,i);u.addEventListener("change",C=>this.setSize(u.baseWidth,u.baseHeight))}set mainScene(n){this.renderPass.mainScene=n}set mainCamera(n){this.renderPass.mainCamera=n}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}getResolutionScale(){return this.resolution.scale}setResolutionScale(n){this.resolution.scale=n}render(n,e,t,i,s){const r=this.renderToScreen?null:this.renderTarget;this.renderPass.render(n,r)}setSize(n,e){const t=this.resolution;t.setBaseSize(n,e),this.renderTarget.setSize(t.width,t.height)}},NV=class extends Rn{constructor({normalBuffer:n=null,resolutionScale:e=.5,width:t=Jt.AUTO_SIZE,height:i=Jt.AUTO_SIZE,resolutionX:s=t,resolutionY:r=i}={}){super("DepthDownsamplingPass");const o=new ik;o.normalBuffer=n,this.fullscreenMaterial=o,this.needsDepthTexture=!0,this.needsSwap=!1,this.renderTarget=new Wt(1,1,{minFilter:pt,magFilter:pt,depthBuffer:!1,type:wn}),this.renderTarget.texture.name="DepthDownsamplingPass.Target",this.renderTarget.texture.generateMipmaps=!1;const a=this.resolution=new Jt(this,s,r,e);a.addEventListener("change",l=>this.setSize(a.baseWidth,a.baseHeight))}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}setDepthTexture(n,e=Fn){this.fullscreenMaterial.depthBuffer=n,this.fullscreenMaterial.depthPacking=e}render(n,e,t,i,s){n.setRenderTarget(this.renderToScreen?null:this.renderTarget),n.render(this.scene,this.camera)}setSize(n,e){const t=this.resolution;t.setBaseSize(n,e),this.renderTarget.setSize(t.width,t.height),this.fullscreenMaterial.setSize(n,e)}initialize(n,e,t){const i=n.getContext();if(!(i.getExtension("EXT_color_buffer_float")||i.getExtension("EXT_color_buffer_half_float")))throw new Error("Rendering to float texture is not supported.")}},Xk=class extends Rn{constructor({depthPacking:n=Xr}={}){super("DepthCopyPass");const e=new ek;e.outputDepthPacking=n,this.fullscreenMaterial=e,this.needsDepthTexture=!0,this.needsSwap=!1,this.renderTarget=new Wt(1,1,{type:n===Xr?rn:wn,minFilter:pt,magFilter:pt,depthBuffer:!1}),this.renderTarget.texture.name="DepthCopyPass.Target"}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}get depthPacking(){return this.fullscreenMaterial.outputDepthPacking}getDepthPacking(){return this.fullscreenMaterial.outputDepthPacking}setDepthTexture(n,e=Fn){this.fullscreenMaterial.depthBuffer=n,this.fullscreenMaterial.inputDepthPacking=e}render(n,e,t,i,s){n.setRenderTarget(this.renderToScreen?null:this.renderTarget),n.render(this.scene,this.camera)}setSize(n,e){this.renderTarget.setSize(n,e)}},gh=new Float32Array([255/256/256**3,255/256/256**2,255/256/256,255/256]);function Yk(n){return(n[0]*gh[0]+n[1]*gh[1]+n[2]*gh[2]+n[3]*gh[3])/255}var Fk=class extends Xk{constructor({depthPacking:n=Xr,mode:e=GI.SINGLE}={}){super({depthPacking:n}),this.name="DepthPickingPass",this.fullscreenMaterial.mode=e,this.pixelBuffer=n===Xr?new Uint8Array(4):new Float32Array(4),this.callback=null}readDepth(n){return this.fullscreenMaterial.texelPosition.set(n.x*.5+.5,n.y*.5+.5),new Promise(e=>{this.callback=e})}render(n,e,t,i,s){const r=this.fullscreenMaterial,o=r.mode;if(o===GI.FULL&&super.render(n),this.callback!==null){const a=this.renderTarget,l=this.pixelBuffer,c=a.texture.type!==wn;let u=0,C=0;if(o===GI.SINGLE)super.render(n);else{const d=r.texelPosition;u=Math.round(d.x*a.width),C=Math.round(d.y*a.height)}n.readRenderTargetPixels(a,u,C,1,1,l),this.callback(c?Yk(l):l[0]),this.callback=null}}setSize(n,e){this.fullscreenMaterial.mode===GI.FULL&&super.setSize(n,e)}};function Bw(n,e,t){for(const i of e){const s="$1"+n+i.charAt(0).toUpperCase()+i.slice(1),r=new RegExp("([^\\.])(\\b"+i+"\\b)","g");for(const o of t.entries())o[1]!==null&&t.set(o[0],o[1].replace(r,s))}}function Kk(n,e,t){let i=e.getFragmentShader(),s=e.getVertexShader();const r=i!==void 0&&/mainImage/.test(i),o=i!==void 0&&/mainUv/.test(i);if(t.attributes|=e.getAttributes(),i===void 0)throw new Error(`Missing fragment shader (${e.name})`);if(o&&t.attributes&$i.CONVOLUTION)throw new Error(`Effects that transform UVs are incompatible with convolution effects (${e.name})`);if(!r&&!o)throw new Error(`Could not find mainImage or mainUv function (${e.name})`);{const a=/\w+\s+(\w+)\([\w\s,]*\)\s*{/g,l=t.shaderParts;let c=l.get(Et.FRAGMENT_HEAD)||"",u=l.get(Et.FRAGMENT_MAIN_UV)||"",C=l.get(Et.FRAGMENT_MAIN_IMAGE)||"",d=l.get(Et.VERTEX_HEAD)||"",h=l.get(Et.VERTEX_MAIN_SUPPORT)||"";const m=new Set,v=new Set;if(o&&(u+=` ${n}MainUv(UV); `,t.uvTransformation=!0),s!==null&&/mainSupport/.test(s)){const b=/mainSupport *\([\w\s]*?uv\s*?\)/.test(s);h+=` ${n}MainSupport(`,h+=b?`vUv); `:`); -`;for(const f of s.matchAll(/(?:varying\s+\w+\s+([\S\s]*?);)/g))for(const B of f[1].split(/\s*,\s*/))t.varyings.add(B),m.add(B),v.add(B);for(const f of s.matchAll(a))v.add(f[1])}for(const b of i.matchAll(a))v.add(b[1]);for(const b of e.defines.keys())v.add(b.replace(/\([\w\s,]*\)/g,""));for(const b of e.uniforms.keys())v.add(b);v.delete("while"),v.delete("for"),v.delete("if"),e.uniforms.forEach((b,f)=>t.uniforms.set(n+f.charAt(0).toUpperCase()+f.slice(1),b)),e.defines.forEach((b,f)=>t.defines.set(n+f.charAt(0).toUpperCase()+f.slice(1),b));const y=new Map([["fragment",i],["vertex",s]]);mw(n,v,t.defines),mw(n,v,y),i=y.get("fragment"),s=y.get("vertex");const A=e.blendMode;if(t.blendModes.set(A.blendFunction,A),r){e.inputColorSpace!==null&&e.inputColorSpace!==t.colorSpace&&(C+=e.inputColorSpace===_t?`color0 = LinearTosRGB(color0); +`;for(const f of s.matchAll(/(?:varying\s+\w+\s+([\S\s]*?);)/g))for(const B of f[1].split(/\s*,\s*/))t.varyings.add(B),m.add(B),v.add(B);for(const f of s.matchAll(a))v.add(f[1])}for(const b of i.matchAll(a))v.add(b[1]);for(const b of e.defines.keys())v.add(b.replace(/\([\w\s,]*\)/g,""));for(const b of e.uniforms.keys())v.add(b);v.delete("while"),v.delete("for"),v.delete("if"),e.uniforms.forEach((b,f)=>t.uniforms.set(n+f.charAt(0).toUpperCase()+f.slice(1),b)),e.defines.forEach((b,f)=>t.defines.set(n+f.charAt(0).toUpperCase()+f.slice(1),b));const y=new Map([["fragment",i],["vertex",s]]);Bw(n,v,t.defines),Bw(n,v,y),i=y.get("fragment"),s=y.get("vertex");const A=e.blendMode;if(t.blendModes.set(A.blendFunction,A),r){e.inputColorSpace!==null&&e.inputColorSpace!==t.colorSpace&&(C+=e.inputColorSpace===_t?`color0 = LinearTosRGB(color0); `:`color0 = sRGBToLinear(color0); - `),e.outputColorSpace!==bV?t.colorSpace=e.outputColorSpace:e.inputColorSpace!==null&&(t.colorSpace=e.inputColorSpace);const b=/MainImage *\([\w\s,]*?depth[\w\s,]*?\)/;C+=`${n}MainImage(color0, UV, `,t.attributes&qi.DEPTH&&b.test(i)&&(C+="depth, ",t.readDepth=!0),C+=`color1); + `),e.outputColorSpace!==SV?t.colorSpace=e.outputColorSpace:e.inputColorSpace!==null&&(t.colorSpace=e.inputColorSpace);const b=/MainImage *\([\w\s,]*?depth[\w\s,]*?\)/;C+=`${n}MainImage(color0, UV, `,t.attributes&$i.DEPTH&&b.test(i)&&(C+="depth, ",t.readDepth=!0),C+=`color1); `;const f=n+"BlendOpacity";t.uniforms.set(f,A.opacity),C+=`color0 = blend${A.blendFunction}(color0, color1, ${f}); `,c+=`uniform float ${f}; `}if(c+=i+` `,s!==null&&(d+=s+` -`),l.set(Tt.FRAGMENT_HEAD,c),l.set(Tt.FRAGMENT_MAIN_UV,u),l.set(Tt.FRAGMENT_MAIN_IMAGE,C),l.set(Tt.VERTEX_HEAD,d),l.set(Tt.VERTEX_MAIN_SUPPORT,h),e.extensions!==null)for(const b of e.extensions)t.extensions.add(b)}}var Wk=class extends Rn{constructor(n,...e){super("EffectPass"),this.fullscreenMaterial=new sk(null,null,null,n),this.listener=t=>this.handleEvent(t),this.effects=[],this.setEffects(e),this.skipRendering=!1,this.minTime=1,this.maxTime=Number.POSITIVE_INFINITY,this.timeScale=1}set mainScene(n){for(const e of this.effects)e.mainScene=n}set mainCamera(n){this.fullscreenMaterial.copyCameraSettings(n);for(const e of this.effects)e.mainCamera=n}get encodeOutput(){return this.fullscreenMaterial.encodeOutput}set encodeOutput(n){this.fullscreenMaterial.encodeOutput=n}get dithering(){return this.fullscreenMaterial.dithering}set dithering(n){const e=this.fullscreenMaterial;e.dithering=n,e.needsUpdate=!0}setEffects(n){for(const e of this.effects)e.removeEventListener("change",this.listener);this.effects=n.sort((e,t)=>t.attributes-e.attributes);for(const e of this.effects)e.addEventListener("change",this.listener)}updateMaterial(){const n=new Kk;let e=0;for(const o of this.effects)if(o.blendMode.blendFunction===It.DST)n.attributes|=o.getAttributes()&qi.DEPTH;else{if(n.attributes&o.getAttributes()&qi.CONVOLUTION)throw new Error(`Convolution effects cannot be merged (${o.name})`);Rk("e"+e++,o,n)}let t=n.shaderParts.get(Tt.FRAGMENT_HEAD),i=n.shaderParts.get(Tt.FRAGMENT_MAIN_IMAGE),s=n.shaderParts.get(Tt.FRAGMENT_MAIN_UV);const r=/\bblend\b/g;for(const o of n.blendModes.values())t+=o.getShaderCode().replace(r,`blend${o.blendFunction}`)+` -`;n.attributes&qi.DEPTH?(n.readDepth&&(i=`float depth = readDepth(UV); +`),l.set(Et.FRAGMENT_HEAD,c),l.set(Et.FRAGMENT_MAIN_UV,u),l.set(Et.FRAGMENT_MAIN_IMAGE,C),l.set(Et.VERTEX_HEAD,d),l.set(Et.VERTEX_MAIN_SUPPORT,h),e.extensions!==null)for(const b of e.extensions)t.extensions.add(b)}}var zk=class extends Rn{constructor(n,...e){super("EffectPass"),this.fullscreenMaterial=new Ck(null,null,null,n),this.listener=t=>this.handleEvent(t),this.effects=[],this.setEffects(e),this.skipRendering=!1,this.minTime=1,this.maxTime=Number.POSITIVE_INFINITY,this.timeScale=1}set mainScene(n){for(const e of this.effects)e.mainScene=n}set mainCamera(n){this.fullscreenMaterial.copyCameraSettings(n);for(const e of this.effects)e.mainCamera=n}get encodeOutput(){return this.fullscreenMaterial.encodeOutput}set encodeOutput(n){this.fullscreenMaterial.encodeOutput=n}get dithering(){return this.fullscreenMaterial.dithering}set dithering(n){const e=this.fullscreenMaterial;e.dithering=n,e.needsUpdate=!0}setEffects(n){for(const e of this.effects)e.removeEventListener("change",this.listener);this.effects=n.sort((e,t)=>t.attributes-e.attributes);for(const e of this.effects)e.addEventListener("change",this.listener)}updateMaterial(){const n=new _k;let e=0;for(const o of this.effects)if(o.blendMode.blendFunction===It.DST)n.attributes|=o.getAttributes()&$i.DEPTH;else{if(n.attributes&o.getAttributes()&$i.CONVOLUTION)throw new Error(`Convolution effects cannot be merged (${o.name})`);Kk("e"+e++,o,n)}let t=n.shaderParts.get(Et.FRAGMENT_HEAD),i=n.shaderParts.get(Et.FRAGMENT_MAIN_IMAGE),s=n.shaderParts.get(Et.FRAGMENT_MAIN_UV);const r=/\bblend\b/g;for(const o of n.blendModes.values())t+=o.getShaderCode().replace(r,`blend${o.blendFunction}`)+` +`;n.attributes&$i.DEPTH?(n.readDepth&&(i=`float depth = readDepth(UV); `+i),this.needsDepthTexture=this.getDepthTexture()===null):this.needsDepthTexture=!1,n.colorSpace===_t&&(i+=`color0 = sRGBToLinear(color0); `),n.uvTransformation?(s=`vec2 transformedUv = vUv; -`+s,n.defines.set("UV","transformedUv")):n.defines.set("UV","vUv"),n.shaderParts.set(Tt.FRAGMENT_HEAD,t),n.shaderParts.set(Tt.FRAGMENT_MAIN_IMAGE,i),n.shaderParts.set(Tt.FRAGMENT_MAIN_UV,s);for(const[o,a]of n.shaderParts)a!==null&&n.shaderParts.set(o,a.trim().replace(/^#/,` -#`));this.skipRendering=e===0,this.needsSwap=!this.skipRendering,this.fullscreenMaterial.setShaderData(n)}recompile(){this.updateMaterial()}getDepthTexture(){return this.fullscreenMaterial.depthBuffer}setDepthTexture(n,e=Yn){this.fullscreenMaterial.depthBuffer=n,this.fullscreenMaterial.depthPacking=e;for(const t of this.effects)t.setDepthTexture(n,e)}render(n,e,t,i,s){for(const r of this.effects)r.update(n,e,i);if(!this.skipRendering||this.renderToScreen){const r=this.fullscreenMaterial;r.inputBuffer=e.texture,r.time+=i*this.timeScale,n.setRenderTarget(this.renderToScreen?null:t),n.render(this.scene,this.camera)}}setSize(n,e){this.fullscreenMaterial.setSize(n,e);for(const t of this.effects)t.setSize(n,e)}initialize(n,e,t){this.renderer=n;for(const i of this.effects)i.initialize(n,e,t);this.updateMaterial(),t!==void 0&&t!==rn&&(this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1")}dispose(){super.dispose();for(const n of this.effects)n.removeEventListener("change",this.listener),n.dispose()}handleEvent(n){switch(n.type){case"change":this.recompile();break}}},QA=class extends Rn{constructor({kernelSize:n=dc.MEDIUM,resolutionScale:e=.5,width:t=Jt.AUTO_SIZE,height:i=Jt.AUTO_SIZE,resolutionX:s=t,resolutionY:r=i}={}){super("KawaseBlurPass"),this.renderTargetA=new Rt(1,1,{depthBuffer:!1}),this.renderTargetA.texture.name="Blur.Target.A",this.renderTargetB=this.renderTargetA.clone(),this.renderTargetB.texture.name="Blur.Target.B";const o=this.resolution=new Jt(this,s,r,e);o.addEventListener("change",a=>this.setSize(o.baseWidth,o.baseHeight)),this._blurMaterial=new KE,this._blurMaterial.kernelSize=n,this.copyMaterial=new GV}getResolution(){return this.resolution}get blurMaterial(){return this._blurMaterial}set blurMaterial(n){this._blurMaterial=n}get dithering(){return this.copyMaterial.dithering}set dithering(n){this.copyMaterial.dithering=n}get kernelSize(){return this.blurMaterial.kernelSize}set kernelSize(n){this.blurMaterial.kernelSize=n}get width(){return this.resolution.width}set width(n){this.resolution.preferredWidth=n}get height(){return this.resolution.height}set height(n){this.resolution.preferredHeight=n}get scale(){return this.blurMaterial.scale}set scale(n){this.blurMaterial.scale=n}getScale(){return this.blurMaterial.scale}setScale(n){this.blurMaterial.scale=n}getKernelSize(){return this.kernelSize}setKernelSize(n){this.kernelSize=n}getResolutionScale(){return this.resolution.scale}setResolutionScale(n){this.resolution.scale=n}render(n,e,t,i,s){const r=this.scene,o=this.camera,a=this.renderTargetA,l=this.renderTargetB,c=this.blurMaterial,u=c.kernelSequence;let C=e;this.fullscreenMaterial=c;for(let d=0,h=u.length;dthis.setSize(l.baseWidth,l.baseHeight))}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}render(n,e,t,i,s){const r=this.fullscreenMaterial;r.inputBuffer=e.texture,n.setRenderTarget(this.renderToScreen?null:this.renderTarget),n.render(this.scene,this.camera)}setSize(n,e){const t=this.resolution;t.setBaseSize(n,e),this.renderTarget.setSize(t.width,t.height)}initialize(n,e,t){t!==void 0&&t!==rn&&(this.renderTarget.texture.type=t,this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1")}},Mk=class extends Rn{constructor(n,e){super("MaskPass",n,e),this.needsSwap=!1,this.clearPass=new hc(!1,!1,!0),this.inverse=!1}set mainScene(n){this.scene=n}set mainCamera(n){this.camera=n}get inverted(){return this.inverse}set inverted(n){this.inverse=n}get clear(){return this.clearPass.enabled}set clear(n){this.clearPass.enabled=n}getClearPass(){return this.clearPass}isInverted(){return this.inverted}setInverted(n){this.inverted=n}render(n,e,t,i,s){const r=n.getContext(),o=n.state.buffers,a=this.scene,l=this.camera,c=this.clearPass,u=this.inverted?0:1,C=1-u;o.color.setMask(!1),o.depth.setMask(!1),o.color.setLocked(!0),o.depth.setLocked(!0),o.stencil.setTest(!0),o.stencil.setOp(r.REPLACE,r.REPLACE,r.REPLACE),o.stencil.setFunc(r.ALWAYS,u,4294967295),o.stencil.setClear(C),o.stencil.setLocked(!0),this.clearPass.enabled&&(this.renderToScreen?c.render(n,null):(c.render(n,e),c.render(n,t))),this.renderToScreen?(n.setRenderTarget(null),n.render(a,l)):(n.setRenderTarget(e),n.render(a,l),n.setRenderTarget(t),n.render(a,l)),o.color.setLocked(!1),o.depth.setLocked(!1),o.stencil.setLocked(!1),o.stencil.setFunc(r.EQUAL,1,4294967295),o.stencil.setOp(r.KEEP,r.KEEP,r.KEEP),o.stencil.setLocked(!0)}},Nk=class extends Rn{constructor(){super("MipmapBlurPass"),this.needsSwap=!1,this.renderTarget=new Rt(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="Upsampling.Mipmap0",this.downsamplingMipmaps=[],this.upsamplingMipmaps=[],this.downsamplingMaterial=new qE,this.upsamplingMaterial=new yk,this.resolution=new ne}get texture(){return this.renderTarget.texture}get levels(){return this.downsamplingMipmaps.length}set levels(n){if(this.levels!==n){const e=this.renderTarget;this.dispose(),this.downsamplingMipmaps=[],this.upsamplingMipmaps=[];for(let t=0;t=0;--d){const h=u[d];l.setSize(C.width,C.height),l.inputBuffer=C.texture,l.supportBuffer=c[d].texture,n.setRenderTarget(h),n.render(r,o),C=h}}setSize(n,e){const t=this.resolution;t.set(n,e);let i=t.width,s=t.height;for(let r=0,o=this.downsamplingMipmaps.length;rthis.setSize(u.baseWidth,u.baseHeight))}set mainScene(n){this.renderPass.mainScene=n}set mainCamera(n){this.renderPass.mainCamera=n}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}getResolutionScale(){return this.resolution.scale}setResolutionScale(n){this.resolution.scale=n}render(n,e,t,i,s){const r=this.renderToScreen?null:this.renderTarget;this.renderPass.render(n,r,r)}setSize(n,e){const t=this.resolution;t.setBaseSize(n,e),this.renderTarget.setSize(t.width,t.height)}},ls=class extends Rn{constructor(n,e="inputBuffer"){super("ShaderPass"),this.fullscreenMaterial=n,this.input=e}setInput(n){this.input=n}render(n,e,t,i,s){const r=this.fullscreenMaterial.uniforms;e!==null&&r!==void 0&&r[this.input]!==void 0&&(r[this.input].value=e.texture),n.setRenderTarget(this.renderToScreen?null:t),n.render(this.scene,this.camera)}initialize(n,e,t){t!==void 0&&t!==rn&&(this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1")}},Zf=1/1e3,Xk=1e3,Yk=class{constructor(){this.startTime=performance.now(),this.previousTime=0,this.currentTime=0,this._delta=0,this._elapsed=0,this._fixedDelta=1e3/60,this.timescale=1,this.useFixedDelta=!1,this._autoReset=!1}get autoReset(){return this._autoReset}set autoReset(n){typeof document<"u"&&document.hidden!==void 0&&(n?document.addEventListener("visibilitychange",this):document.removeEventListener("visibilitychange",this),this._autoReset=n)}get delta(){return this._delta*Zf}get fixedDelta(){return this._fixedDelta*Zf}set fixedDelta(n){this._fixedDelta=n*Xk}get elapsed(){return this._elapsed*Zf}update(n){this.useFixedDelta?this._delta=this.fixedDelta:(this.previousTime=this.currentTime,this.currentTime=(n!==void 0?n:performance.now())-this.startTime,this._delta=this.currentTime-this.previousTime),this._delta*=this.timescale,this._elapsed+=this._delta}reset(){this._delta=0,this._elapsed=0,this.currentTime=performance.now()-this.startTime}handleEvent(n){document.hidden||(this.currentTime=performance.now()-this.startTime)}dispose(){this.autoReset=!1}},Fk=class{constructor(e=null,{depthBuffer:t=!0,stencilBuffer:i=!1,multisampling:s=0,frameBufferType:r}={}){this.renderer=null,this.inputBuffer=this.createBuffer(t,i,r,s),this.outputBuffer=this.inputBuffer.clone(),this.copyPass=new ZV,this.depthTexture=null,this.passes=[],this.timer=new Yk,this.autoRenderToScreen=!0,this.setRenderer(e)}get multisampling(){return this.inputBuffer.samples||0}set multisampling(e){const t=this.inputBuffer,i=this.multisampling;i>0&&e>0?(this.inputBuffer.samples=e,this.outputBuffer.samples=e,this.inputBuffer.dispose(),this.outputBuffer.dispose()):i!==e&&(this.inputBuffer.dispose(),this.outputBuffer.dispose(),this.inputBuffer=this.createBuffer(t.depthBuffer,t.stencilBuffer,t.texture.type,e),this.inputBuffer.depthTexture=this.depthTexture,this.outputBuffer=this.inputBuffer.clone())}getTimer(){return this.timer}getRenderer(){return this.renderer}setRenderer(e){if(this.renderer=e,e!==null){const t=e.getSize(new ne),i=e.getContext().getContextAttributes().alpha,s=this.inputBuffer.texture.type;s===rn&&po(e)===_t&&(kn(this.inputBuffer.texture,_t),kn(this.outputBuffer.texture,_t),this.inputBuffer.dispose(),this.outputBuffer.dispose()),e.autoClear=!1,this.setSize(t.width,t.height);for(const r of this.passes)r.initialize(e,i,s)}}replaceRenderer(e,t=!0){const i=this.renderer,s=i.domElement.parentNode;return this.setRenderer(e),t&&s!==null&&(s.removeChild(i.domElement),s.appendChild(e.domElement)),i}createDepthTexture(){const e=this.depthTexture=new FA;return this.inputBuffer.depthTexture=e,this.inputBuffer.dispose(),this.inputBuffer.stencilBuffer?(e.format=ga,e.type=ta):e.type=oo,e}deleteDepthTexture(){if(this.depthTexture!==null){this.depthTexture.dispose(),this.depthTexture=null,this.inputBuffer.depthTexture=null,this.inputBuffer.dispose();for(const e of this.passes)e.setDepthTexture(null)}}createBuffer(e,t,i,s){const r=this.renderer,o=r===null?new ne:r.getDrawingBufferSize(new ne),a={minFilter:je,magFilter:je,stencilBuffer:t,depthBuffer:e,type:i},l=new Rt(o.width,o.height,a);return s>0&&(l.ignoreDepthForMultisampleCopy=!1,l.samples=s),i===rn&&po(r)===_t&&kn(l.texture,_t),l.texture.name="EffectComposer.Buffer",l.texture.generateMipmaps=!1,l}setMainScene(e){for(const t of this.passes)t.mainScene=e}setMainCamera(e){for(const t of this.passes)t.mainCamera=e}addPass(e,t){const i=this.passes,s=this.renderer,r=s.getDrawingBufferSize(new ne),o=s.getContext().getContextAttributes().alpha,a=this.inputBuffer.texture.type;if(e.setRenderer(s),e.setSize(r.width,r.height),e.initialize(s,o,a),this.autoRenderToScreen&&(i.length>0&&(i[i.length-1].renderToScreen=!1),e.renderToScreen&&(this.autoRenderToScreen=!1)),t!==void 0?i.splice(t,0,e):i.push(e),this.autoRenderToScreen&&(i[i.length-1].renderToScreen=!0),e.needsDepthTexture||this.depthTexture!==null)if(this.depthTexture===null){const l=this.createDepthTexture();for(e of i)e.setDepthTexture(l)}else e.setDepthTexture(this.depthTexture)}removePass(e){const t=this.passes,i=t.indexOf(e);if(i!==-1&&t.splice(i,1).length>0){if(this.depthTexture!==null){const o=(l,c)=>l||c.needsDepthTexture;t.reduce(o,!1)||(e.getDepthTexture()===this.depthTexture&&e.setDepthTexture(null),this.deleteDepthTexture())}this.autoRenderToScreen&&i===t.length&&(e.renderToScreen=!1,t.length>0&&(t[t.length-1].renderToScreen=!0))}}removeAllPasses(){const e=this.passes;this.deleteDepthTexture(),e.length>0&&(this.autoRenderToScreen&&(e[e.length-1].renderToScreen=!1),this.passes=[])}render(e){const t=this.renderer,i=this.copyPass;let s=this.inputBuffer,r=this.outputBuffer,o=!1,a,l,c;e===void 0&&(this.timer.update(),e=this.timer.delta);for(const u of this.passes)u.enabled&&(u.render(t,s,r,e,o),u.needsSwap&&(o&&(i.renderToScreen=u.renderToScreen,a=t.getContext(),l=t.state.buffers.stencil,l.setFunc(a.NOTEQUAL,1,4294967295),i.render(t,s,r,e,o),l.setFunc(a.EQUAL,1,4294967295)),c=s,s=r,r=c),u instanceof Mk?o=!0:u instanceof Zk&&(o=!1))}setSize(e,t,i){const s=this.renderer,r=s.getSize(new ne);(e===void 0||t===void 0)&&(e=r.width,t=r.height),(r.width!==e||r.height!==t)&&s.setSize(e,t,i);const o=s.getDrawingBufferSize(new ne);this.inputBuffer.setSize(o.width,o.height),this.outputBuffer.setSize(o.width,o.height);for(const a of this.passes)a.setSize(o.width,o.height)}reset(){const e=this.timer.autoReset;this.dispose(),this.autoRenderToScreen=!0,this.timer.autoReset=e}dispose(){for(const e of this.passes)e.dispose();this.passes=[],this.inputBuffer!==null&&this.inputBuffer.dispose(),this.outputBuffer!==null&&this.outputBuffer.dispose(),this.deleteDepthTexture(),this.copyPass.dispose(),this.timer.dispose()}},Kk=class{constructor(){this.shaderParts=new Map([[Tt.FRAGMENT_HEAD,null],[Tt.FRAGMENT_MAIN_UV,null],[Tt.FRAGMENT_MAIN_IMAGE,null],[Tt.VERTEX_HEAD,null],[Tt.VERTEX_MAIN_SUPPORT,null]]),this.defines=new Map,this.uniforms=new Map,this.blendModes=new Map,this.extensions=new Set,this.attributes=qi.NONE,this.varyings=new Set,this.uvTransformation=!1,this.readDepth=!1,this.colorSpace=nc}},Ay=class extends Set{constructor(n,e=10){super(),this.l=e,this.exclusive=!1,n!==void 0&&this.set(n)}get layer(){return this.l}set layer(n){const e=this.l;for(const t of this)t.layers.disable(e),t.layers.enable(n);this.l=n}getLayer(){return this.layer}setLayer(n){this.layer=n}isExclusive(){return this.exclusive}setExclusive(n){this.exclusive=n}clear(){const n=this.layer;for(const e of this)e.layers.disable(n);return super.clear()}set(n){this.clear();for(const e of n)this.add(e);return this}indexOf(n){return this.has(n)?0:-1}add(n){return this.exclusive?n.layers.set(this.layer):n.layers.enable(this.layer),super.add(n)}delete(n){return this.has(n)&&n.layers.disable(this.layer),super.delete(n)}toggle(n){let e;return this.has(n)?(this.delete(n),e=!1):(this.add(n),e=!0),e}setVisible(n){for(const e of this)n?e.layers.enable(0):e.layers.disable(0);return this}},zk="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,x+y,opacity);}",Lk="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,y,min(y.a,opacity));}",Tk="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,(x+y)*0.5,opacity);}",Ek="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(yHSL.rg,xHSL.b));return vec4(mix(x.rgb,z,opacity),y.a);}",kk="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=mix(step(0.0,y)*(1.0-min(vec4(1.0),(1.0-x)/y)),vec4(1.0),step(1.0,x));return mix(x,z,opacity);}",Dk="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=step(0.0,x)*mix(min(vec4(1.0),x/max(1.0-y,1e-9)),vec4(1.0),step(1.0,y));return mix(x,z,opacity);}",Uk="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,min(x,y),opacity);}",Pk="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,abs(x-y),opacity);}",_k="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,x/max(y,1e-12),opacity);}",Jk="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,(x+y-2.0*x*y),opacity);}",Ok="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 a=min(x,1.0),b=min(y,1.0);vec4 z=mix(2.0*a*b,1.0-2.0*(1.0-a)*(1.0-b),step(0.5,y));return mix(x,z,opacity);}",Qk="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,step(1.0,x+y),opacity);}",jk="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(yHSL.r,xHSL.gb));return vec4(mix(x.rgb,z,opacity),y.a);}",qk="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,1.0-y,opacity);}",$k="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,y*(1.0-x),opacity);}",eD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,max(x,y),opacity);}",tD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,clamp(y+x-1.0,0.0,1.0),opacity);}",nD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,min(x+y,1.0),opacity);}",iD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,clamp(2.0*y+x-1.0,0.0,1.0),opacity);}",sD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(xHSL.rg,yHSL.b));return vec4(mix(x.rgb,z,opacity),y.a);}",rD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,x*y,opacity);}",oD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,1.0-abs(1.0-x-y),opacity);}",aD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,y,opacity);}",lD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=mix(2.0*y*x,1.0-2.0*(1.0-y)*(1.0-x),step(0.5,x));return mix(x,z,opacity);}",gD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 y2=2.0*y;vec4 z=mix(mix(y2,x,step(0.5*x,y)),max(vec4(0.0),y2-1.0),step(x,(y2-1.0)));return mix(x,z,opacity);}",cD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=mix(min(x*x/max(1.0-y,1e-12),1.0),y,step(1.0,y));return mix(x,z,opacity);}",ID="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(xHSL.r,yHSL.g,xHSL.b));return vec4(mix(x.rgb,z,opacity),y.a);}",uD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,x+y-min(x*y,1.0),opacity);}",CD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 y2=2.0*y;vec4 w=step(0.5,y);vec4 z=mix(x-(1.0-y2)*x*(1.0-x),mix(x+(y2-1.0)*(sqrt(x)-x),x+(y2-1.0)*x*((16.0*x-12.0)*x+3.0),w*(1.0-step(0.25,x))),w);return mix(x,z,opacity);}",dD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return y;}",hD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,max(x+y-1.0,0.0),opacity);}",AD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=mix(max(1.0-min((1.0-x)/(2.0*y),1.0),0.0),min(x/(2.0*(1.0-y)),1.0),step(0.5,y));return mix(x,z,opacity);}",pD=new Map([[It.ADD,zk],[It.ALPHA,Lk],[It.AVERAGE,Tk],[It.COLOR,Ek],[It.COLOR_BURN,kk],[It.COLOR_DODGE,Dk],[It.DARKEN,Uk],[It.DIFFERENCE,Pk],[It.DIVIDE,_k],[It.DST,null],[It.EXCLUSION,Jk],[It.HARD_LIGHT,Ok],[It.HARD_MIX,Qk],[It.HUE,jk],[It.INVERT,qk],[It.INVERT_RGB,$k],[It.LIGHTEN,eD],[It.LINEAR_BURN,tD],[It.LINEAR_DODGE,nD],[It.LINEAR_LIGHT,iD],[It.LUMINOSITY,sD],[It.MULTIPLY,rD],[It.NEGATION,oD],[It.NORMAL,aD],[It.OVERLAY,lD],[It.PIN_LIGHT,gD],[It.REFLECT,cD],[It.SATURATION,ID],[It.SCREEN,uD],[It.SOFT_LIGHT,CD],[It.SRC,dD],[It.SUBTRACT,hD],[It.VIVID_LIGHT,AD]]),mD=class extends zs{constructor(n,e=1){super(),this._blendFunction=n,this.opacity=new q(e)}getOpacity(){return this.opacity.value}setOpacity(n){this.opacity.value=n}get blendFunction(){return this._blendFunction}set blendFunction(n){this._blendFunction=n,this.dispatchEvent({type:"change"})}getBlendFunction(){return this.blendFunction}setBlendFunction(n){this.blendFunction=n}getShaderCode(){return pD.get(this.blendFunction)}},li=class extends zs{constructor(n,e,{attributes:t=qi.NONE,blendFunction:i=It.NORMAL,defines:s=new Map,uniforms:r=new Map,extensions:o=null,vertexShader:a=null}={}){super(),this.name=n,this.renderer=null,this.attributes=t,this.fragmentShader=e,this.vertexShader=a,this.defines=s,this.uniforms=r,this.extensions=o,this.blendMode=new mD(i),this.blendMode.addEventListener("change",l=>this.setChanged()),this._inputColorSpace=nc,this._outputColorSpace=bV}get inputColorSpace(){return this._inputColorSpace}set inputColorSpace(n){this._inputColorSpace=n,this.setChanged()}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(n){this._outputColorSpace=n,this.setChanged()}set mainScene(n){}set mainCamera(n){}getName(){return this.name}setRenderer(n){this.renderer=n}getDefines(){return this.defines}getUniforms(){return this.uniforms}getExtensions(){return this.extensions}getBlendMode(){return this.blendMode}getAttributes(){return this.attributes}setAttributes(n){this.attributes=n,this.setChanged()}getFragmentShader(){return this.fragmentShader}setFragmentShader(n){this.fragmentShader=n,this.setChanged()}getVertexShader(){return this.vertexShader}setVertexShader(n){this.vertexShader=n,this.setChanged()}setChanged(){this.dispatchEvent({type:"change"})}setDepthTexture(n,e=Yn){}update(n,e,t){}setSize(n,e){}initialize(n,e,t){}dispose(){for(const n of Object.keys(this)){const e=this[n];(e instanceof Rt||e instanceof _n||e instanceof qt||e instanceof Rn)&&this[n].dispose()}}},fD=`#ifdef FRAMEBUFFER_PRECISION_HIGH +`+s,n.defines.set("UV","transformedUv")):n.defines.set("UV","vUv"),n.shaderParts.set(Et.FRAGMENT_HEAD,t),n.shaderParts.set(Et.FRAGMENT_MAIN_IMAGE,i),n.shaderParts.set(Et.FRAGMENT_MAIN_UV,s);for(const[o,a]of n.shaderParts)a!==null&&n.shaderParts.set(o,a.trim().replace(/^#/,` +#`));this.skipRendering=e===0,this.needsSwap=!this.skipRendering,this.fullscreenMaterial.setShaderData(n)}recompile(){this.updateMaterial()}getDepthTexture(){return this.fullscreenMaterial.depthBuffer}setDepthTexture(n,e=Fn){this.fullscreenMaterial.depthBuffer=n,this.fullscreenMaterial.depthPacking=e;for(const t of this.effects)t.setDepthTexture(n,e)}render(n,e,t,i,s){for(const r of this.effects)r.update(n,e,i);if(!this.skipRendering||this.renderToScreen){const r=this.fullscreenMaterial;r.inputBuffer=e.texture,r.time+=i*this.timeScale,n.setRenderTarget(this.renderToScreen?null:t),n.render(this.scene,this.camera)}}setSize(n,e){this.fullscreenMaterial.setSize(n,e);for(const t of this.effects)t.setSize(n,e)}initialize(n,e,t){this.renderer=n;for(const i of this.effects)i.initialize(n,e,t);this.updateMaterial(),t!==void 0&&t!==rn&&(this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1")}dispose(){super.dispose();for(const n of this.effects)n.removeEventListener("change",this.listener),n.dispose()}handleEvent(n){switch(n.type){case"change":this.recompile();break}}},ip=class extends Rn{constructor({kernelSize:n=pc.MEDIUM,resolutionScale:e=.5,width:t=Jt.AUTO_SIZE,height:i=Jt.AUTO_SIZE,resolutionX:s=t,resolutionY:r=i}={}){super("KawaseBlurPass"),this.renderTargetA=new Wt(1,1,{depthBuffer:!1}),this.renderTargetA.texture.name="Blur.Target.A",this.renderTargetB=this.renderTargetA.clone(),this.renderTargetB.texture.name="Blur.Target.B";const o=this.resolution=new Jt(this,s,r,e);o.addEventListener("change",a=>this.setSize(o.baseWidth,o.baseHeight)),this._blurMaterial=new _T,this._blurMaterial.kernelSize=n,this.copyMaterial=new WV}getResolution(){return this.resolution}get blurMaterial(){return this._blurMaterial}set blurMaterial(n){this._blurMaterial=n}get dithering(){return this.copyMaterial.dithering}set dithering(n){this.copyMaterial.dithering=n}get kernelSize(){return this.blurMaterial.kernelSize}set kernelSize(n){this.blurMaterial.kernelSize=n}get width(){return this.resolution.width}set width(n){this.resolution.preferredWidth=n}get height(){return this.resolution.height}set height(n){this.resolution.preferredHeight=n}get scale(){return this.blurMaterial.scale}set scale(n){this.blurMaterial.scale=n}getScale(){return this.blurMaterial.scale}setScale(n){this.blurMaterial.scale=n}getKernelSize(){return this.kernelSize}setKernelSize(n){this.kernelSize=n}getResolutionScale(){return this.resolution.scale}setResolutionScale(n){this.resolution.scale=n}render(n,e,t,i,s){const r=this.scene,o=this.camera,a=this.renderTargetA,l=this.renderTargetB,c=this.blurMaterial,u=c.kernelSequence;let C=e;this.fullscreenMaterial=c;for(let d=0,h=u.length;dthis.setSize(l.baseWidth,l.baseHeight))}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}render(n,e,t,i,s){const r=this.fullscreenMaterial;r.inputBuffer=e.texture,n.setRenderTarget(this.renderToScreen?null:this.renderTarget),n.render(this.scene,this.camera)}setSize(n,e){const t=this.resolution;t.setBaseSize(n,e),this.renderTarget.setSize(t.width,t.height)}initialize(n,e,t){t!==void 0&&t!==rn&&(this.renderTarget.texture.type=t,this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1")}},Ek=class extends Rn{constructor(n,e){super("MaskPass",n,e),this.needsSwap=!1,this.clearPass=new mc(!1,!1,!0),this.inverse=!1}set mainScene(n){this.scene=n}set mainCamera(n){this.camera=n}get inverted(){return this.inverse}set inverted(n){this.inverse=n}get clear(){return this.clearPass.enabled}set clear(n){this.clearPass.enabled=n}getClearPass(){return this.clearPass}isInverted(){return this.inverted}setInverted(n){this.inverted=n}render(n,e,t,i,s){const r=n.getContext(),o=n.state.buffers,a=this.scene,l=this.camera,c=this.clearPass,u=this.inverted?0:1,C=1-u;o.color.setMask(!1),o.depth.setMask(!1),o.color.setLocked(!0),o.depth.setLocked(!0),o.stencil.setTest(!0),o.stencil.setOp(r.REPLACE,r.REPLACE,r.REPLACE),o.stencil.setFunc(r.ALWAYS,u,4294967295),o.stencil.setClear(C),o.stencil.setLocked(!0),this.clearPass.enabled&&(this.renderToScreen?c.render(n,null):(c.render(n,e),c.render(n,t))),this.renderToScreen?(n.setRenderTarget(null),n.render(a,l)):(n.setRenderTarget(e),n.render(a,l),n.setRenderTarget(t),n.render(a,l)),o.color.setLocked(!1),o.depth.setLocked(!1),o.stencil.setLocked(!1),o.stencil.setFunc(r.EQUAL,1,4294967295),o.stencil.setOp(r.KEEP,r.KEEP,r.KEEP),o.stencil.setLocked(!0)}},Tk=class extends Rn{constructor(){super("MipmapBlurPass"),this.needsSwap=!1,this.renderTarget=new Wt(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="Upsampling.Mipmap0",this.downsamplingMipmaps=[],this.upsamplingMipmaps=[],this.downsamplingMaterial=new ak,this.upsamplingMaterial=new Vk,this.resolution=new ne}get texture(){return this.renderTarget.texture}get levels(){return this.downsamplingMipmaps.length}set levels(n){if(this.levels!==n){const e=this.renderTarget;this.dispose(),this.downsamplingMipmaps=[],this.upsamplingMipmaps=[];for(let t=0;t=0;--d){const h=u[d];l.setSize(C.width,C.height),l.inputBuffer=C.texture,l.supportBuffer=c[d].texture,n.setRenderTarget(h),n.render(r,o),C=h}}setSize(n,e){const t=this.resolution;t.set(n,e);let i=t.width,s=t.height;for(let r=0,o=this.downsamplingMipmaps.length;rthis.setSize(u.baseWidth,u.baseHeight))}set mainScene(n){this.renderPass.mainScene=n}set mainCamera(n){this.renderPass.mainCamera=n}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}getResolutionScale(){return this.resolution.scale}setResolutionScale(n){this.resolution.scale=n}render(n,e,t,i,s){const r=this.renderToScreen?null:this.renderTarget;this.renderPass.render(n,r,r)}setSize(n,e){const t=this.resolution;t.setBaseSize(n,e),this.renderTarget.setSize(t.width,t.height)}},gs=class extends Rn{constructor(n,e="inputBuffer"){super("ShaderPass"),this.fullscreenMaterial=n,this.input=e}setInput(n){this.input=n}render(n,e,t,i,s){const r=this.fullscreenMaterial.uniforms;e!==null&&r!==void 0&&r[this.input]!==void 0&&(r[this.input].value=e.texture),n.setRenderTarget(this.renderToScreen?null:t),n.render(this.scene,this.camera)}initialize(n,e,t){t!==void 0&&t!==rn&&(this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1")}},Rf=1/1e3,Dk=1e3,Uk=class{constructor(){this.startTime=performance.now(),this.previousTime=0,this.currentTime=0,this._delta=0,this._elapsed=0,this._fixedDelta=1e3/60,this.timescale=1,this.useFixedDelta=!1,this._autoReset=!1}get autoReset(){return this._autoReset}set autoReset(n){typeof document<"u"&&document.hidden!==void 0&&(n?document.addEventListener("visibilitychange",this):document.removeEventListener("visibilitychange",this),this._autoReset=n)}get delta(){return this._delta*Rf}get fixedDelta(){return this._fixedDelta*Rf}set fixedDelta(n){this._fixedDelta=n*Dk}get elapsed(){return this._elapsed*Rf}update(n){this.useFixedDelta?this._delta=this.fixedDelta:(this.previousTime=this.currentTime,this.currentTime=(n!==void 0?n:performance.now())-this.startTime,this._delta=this.currentTime-this.previousTime),this._delta*=this.timescale,this._elapsed+=this._delta}reset(){this._delta=0,this._elapsed=0,this.currentTime=performance.now()-this.startTime}handleEvent(n){document.hidden||(this.currentTime=performance.now()-this.startTime)}dispose(){this.autoReset=!1}},Pk=class{constructor(e=null,{depthBuffer:t=!0,stencilBuffer:i=!1,multisampling:s=0,frameBufferType:r}={}){this.renderer=null,this.inputBuffer=this.createBuffer(t,i,r,s),this.outputBuffer=this.inputBuffer.clone(),this.copyPass=new MV,this.depthTexture=null,this.passes=[],this.timer=new Uk,this.autoRenderToScreen=!0,this.setRenderer(e)}get multisampling(){return this.inputBuffer.samples||0}set multisampling(e){const t=this.inputBuffer,i=this.multisampling;i>0&&e>0?(this.inputBuffer.samples=e,this.outputBuffer.samples=e,this.inputBuffer.dispose(),this.outputBuffer.dispose()):i!==e&&(this.inputBuffer.dispose(),this.outputBuffer.dispose(),this.inputBuffer=this.createBuffer(t.depthBuffer,t.stencilBuffer,t.texture.type,e),this.inputBuffer.depthTexture=this.depthTexture,this.outputBuffer=this.inputBuffer.clone())}getTimer(){return this.timer}getRenderer(){return this.renderer}setRenderer(e){if(this.renderer=e,e!==null){const t=e.getSize(new ne),i=e.getContext().getContextAttributes().alpha,s=this.inputBuffer.texture.type;s===rn&&po(e)===_t&&(Dn(this.inputBuffer.texture,_t),Dn(this.outputBuffer.texture,_t),this.inputBuffer.dispose(),this.outputBuffer.dispose()),e.autoClear=!1,this.setSize(t.width,t.height);for(const r of this.passes)r.initialize(e,i,s)}}replaceRenderer(e,t=!0){const i=this.renderer,s=i.domElement.parentNode;return this.setRenderer(e),t&&s!==null&&(s.removeChild(i.domElement),s.appendChild(e.domElement)),i}createDepthTexture(){const e=this.depthTexture=new DA;return this.inputBuffer.depthTexture=e,this.inputBuffer.dispose(),this.inputBuffer.stencilBuffer?(e.format=Ia,e.type=na):e.type=oo,e}deleteDepthTexture(){if(this.depthTexture!==null){this.depthTexture.dispose(),this.depthTexture=null,this.inputBuffer.depthTexture=null,this.inputBuffer.dispose();for(const e of this.passes)e.setDepthTexture(null)}}createBuffer(e,t,i,s){const r=this.renderer,o=r===null?new ne:r.getDrawingBufferSize(new ne),a={minFilter:je,magFilter:je,stencilBuffer:t,depthBuffer:e,type:i},l=new Wt(o.width,o.height,a);return s>0&&(l.ignoreDepthForMultisampleCopy=!1,l.samples=s),i===rn&&po(r)===_t&&Dn(l.texture,_t),l.texture.name="EffectComposer.Buffer",l.texture.generateMipmaps=!1,l}setMainScene(e){for(const t of this.passes)t.mainScene=e}setMainCamera(e){for(const t of this.passes)t.mainCamera=e}addPass(e,t){const i=this.passes,s=this.renderer,r=s.getDrawingBufferSize(new ne),o=s.getContext().getContextAttributes().alpha,a=this.inputBuffer.texture.type;if(e.setRenderer(s),e.setSize(r.width,r.height),e.initialize(s,o,a),this.autoRenderToScreen&&(i.length>0&&(i[i.length-1].renderToScreen=!1),e.renderToScreen&&(this.autoRenderToScreen=!1)),t!==void 0?i.splice(t,0,e):i.push(e),this.autoRenderToScreen&&(i[i.length-1].renderToScreen=!0),e.needsDepthTexture||this.depthTexture!==null)if(this.depthTexture===null){const l=this.createDepthTexture();for(e of i)e.setDepthTexture(l)}else e.setDepthTexture(this.depthTexture)}removePass(e){const t=this.passes,i=t.indexOf(e);if(i!==-1&&t.splice(i,1).length>0){if(this.depthTexture!==null){const o=(l,c)=>l||c.needsDepthTexture;t.reduce(o,!1)||(e.getDepthTexture()===this.depthTexture&&e.setDepthTexture(null),this.deleteDepthTexture())}this.autoRenderToScreen&&i===t.length&&(e.renderToScreen=!1,t.length>0&&(t[t.length-1].renderToScreen=!0))}}removeAllPasses(){const e=this.passes;this.deleteDepthTexture(),e.length>0&&(this.autoRenderToScreen&&(e[e.length-1].renderToScreen=!1),this.passes=[])}render(e){const t=this.renderer,i=this.copyPass;let s=this.inputBuffer,r=this.outputBuffer,o=!1,a,l,c;e===void 0&&(this.timer.update(),e=this.timer.delta);for(const u of this.passes)u.enabled&&(u.render(t,s,r,e,o),u.needsSwap&&(o&&(i.renderToScreen=u.renderToScreen,a=t.getContext(),l=t.state.buffers.stencil,l.setFunc(a.NOTEQUAL,1,4294967295),i.render(t,s,r,e,o),l.setFunc(a.EQUAL,1,4294967295)),c=s,s=r,r=c),u instanceof Ek?o=!0:u instanceof Hk&&(o=!1))}setSize(e,t,i){const s=this.renderer,r=s.getSize(new ne);(e===void 0||t===void 0)&&(e=r.width,t=r.height),(r.width!==e||r.height!==t)&&s.setSize(e,t,i);const o=s.getDrawingBufferSize(new ne);this.inputBuffer.setSize(o.width,o.height),this.outputBuffer.setSize(o.width,o.height);for(const a of this.passes)a.setSize(o.width,o.height)}reset(){const e=this.timer.autoReset;this.dispose(),this.autoRenderToScreen=!0,this.timer.autoReset=e}dispose(){for(const e of this.passes)e.dispose();this.passes=[],this.inputBuffer!==null&&this.inputBuffer.dispose(),this.outputBuffer!==null&&this.outputBuffer.dispose(),this.deleteDepthTexture(),this.copyPass.dispose(),this.timer.dispose()}},_k=class{constructor(){this.shaderParts=new Map([[Et.FRAGMENT_HEAD,null],[Et.FRAGMENT_MAIN_UV,null],[Et.FRAGMENT_MAIN_IMAGE,null],[Et.VERTEX_HEAD,null],[Et.VERTEX_MAIN_SUPPORT,null]]),this.defines=new Map,this.uniforms=new Map,this.blendModes=new Map,this.extensions=new Set,this.attributes=$i.NONE,this.varyings=new Set,this.uvTransformation=!1,this.readDepth=!1,this.colorSpace=rc}},by=class extends Set{constructor(n,e=10){super(),this.l=e,this.exclusive=!1,n!==void 0&&this.set(n)}get layer(){return this.l}set layer(n){const e=this.l;for(const t of this)t.layers.disable(e),t.layers.enable(n);this.l=n}getLayer(){return this.layer}setLayer(n){this.layer=n}isExclusive(){return this.exclusive}setExclusive(n){this.exclusive=n}clear(){const n=this.layer;for(const e of this)e.layers.disable(n);return super.clear()}set(n){this.clear();for(const e of n)this.add(e);return this}indexOf(n){return this.has(n)?0:-1}add(n){return this.exclusive?n.layers.set(this.layer):n.layers.enable(this.layer),super.add(n)}delete(n){return this.has(n)&&n.layers.disable(this.layer),super.delete(n)}toggle(n){let e;return this.has(n)?(this.delete(n),e=!1):(this.add(n),e=!0),e}setVisible(n){for(const e of this)n?e.layers.enable(0):e.layers.disable(0);return this}},Jk="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,x+y,opacity);}",Ok="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,y,min(y.a,opacity));}",Qk="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,(x+y)*0.5,opacity);}",jk="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(yHSL.rg,xHSL.b));return vec4(mix(x.rgb,z,opacity),y.a);}",qk="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=mix(step(0.0,y)*(1.0-min(vec4(1.0),(1.0-x)/y)),vec4(1.0),step(1.0,x));return mix(x,z,opacity);}",$k="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=step(0.0,x)*mix(min(vec4(1.0),x/max(1.0-y,1e-9)),vec4(1.0),step(1.0,y));return mix(x,z,opacity);}",eD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,min(x,y),opacity);}",tD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,abs(x-y),opacity);}",nD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,x/max(y,1e-12),opacity);}",iD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,(x+y-2.0*x*y),opacity);}",sD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 a=min(x,1.0),b=min(y,1.0);vec4 z=mix(2.0*a*b,1.0-2.0*(1.0-a)*(1.0-b),step(0.5,y));return mix(x,z,opacity);}",rD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,step(1.0,x+y),opacity);}",oD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(yHSL.r,xHSL.gb));return vec4(mix(x.rgb,z,opacity),y.a);}",aD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,1.0-y,opacity);}",lD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,y*(1.0-x),opacity);}",gD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,max(x,y),opacity);}",cD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,clamp(y+x-1.0,0.0,1.0),opacity);}",ID="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,min(x+y,1.0),opacity);}",uD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,clamp(2.0*y+x-1.0,0.0,1.0),opacity);}",CD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(xHSL.rg,yHSL.b));return vec4(mix(x.rgb,z,opacity),y.a);}",dD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,x*y,opacity);}",hD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,1.0-abs(1.0-x-y),opacity);}",AD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,y,opacity);}",pD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=mix(2.0*y*x,1.0-2.0*(1.0-y)*(1.0-x),step(0.5,x));return mix(x,z,opacity);}",mD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 y2=2.0*y;vec4 z=mix(mix(y2,x,step(0.5*x,y)),max(vec4(0.0),y2-1.0),step(x,(y2-1.0)));return mix(x,z,opacity);}",fD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=mix(min(x*x/max(1.0-y,1e-12),1.0),y,step(1.0,y));return mix(x,z,opacity);}",bD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(xHSL.r,yHSL.g,xHSL.b));return vec4(mix(x.rgb,z,opacity),y.a);}",vD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,x+y-min(x*y,1.0),opacity);}",yD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 y2=2.0*y;vec4 w=step(0.5,y);vec4 z=mix(x-(1.0-y2)*x*(1.0-x),mix(x+(y2-1.0)*(sqrt(x)-x),x+(y2-1.0)*x*((16.0*x-12.0)*x+3.0),w*(1.0-step(0.25,x))),w);return mix(x,z,opacity);}",GD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return y;}",BD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,max(x+y-1.0,0.0),opacity);}",ZD="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=mix(max(1.0-min((1.0-x)/(2.0*y),1.0),0.0),min(x/(2.0*(1.0-y)),1.0),step(0.5,y));return mix(x,z,opacity);}",wD=new Map([[It.ADD,Jk],[It.ALPHA,Ok],[It.AVERAGE,Qk],[It.COLOR,jk],[It.COLOR_BURN,qk],[It.COLOR_DODGE,$k],[It.DARKEN,eD],[It.DIFFERENCE,tD],[It.DIVIDE,nD],[It.DST,null],[It.EXCLUSION,iD],[It.HARD_LIGHT,sD],[It.HARD_MIX,rD],[It.HUE,oD],[It.INVERT,aD],[It.INVERT_RGB,lD],[It.LIGHTEN,gD],[It.LINEAR_BURN,cD],[It.LINEAR_DODGE,ID],[It.LINEAR_LIGHT,uD],[It.LUMINOSITY,CD],[It.MULTIPLY,dD],[It.NEGATION,hD],[It.NORMAL,AD],[It.OVERLAY,pD],[It.PIN_LIGHT,mD],[It.REFLECT,fD],[It.SATURATION,bD],[It.SCREEN,vD],[It.SOFT_LIGHT,yD],[It.SRC,GD],[It.SUBTRACT,BD],[It.VIVID_LIGHT,ZD]]),SD=class extends Ls{constructor(n,e=1){super(),this._blendFunction=n,this.opacity=new q(e)}getOpacity(){return this.opacity.value}setOpacity(n){this.opacity.value=n}get blendFunction(){return this._blendFunction}set blendFunction(n){this._blendFunction=n,this.dispatchEvent({type:"change"})}getBlendFunction(){return this.blendFunction}setBlendFunction(n){this.blendFunction=n}getShaderCode(){return wD.get(this.blendFunction)}},gi=class extends Ls{constructor(n,e,{attributes:t=$i.NONE,blendFunction:i=It.NORMAL,defines:s=new Map,uniforms:r=new Map,extensions:o=null,vertexShader:a=null}={}){super(),this.name=n,this.renderer=null,this.attributes=t,this.fragmentShader=e,this.vertexShader=a,this.defines=s,this.uniforms=r,this.extensions=o,this.blendMode=new SD(i),this.blendMode.addEventListener("change",l=>this.setChanged()),this._inputColorSpace=rc,this._outputColorSpace=SV}get inputColorSpace(){return this._inputColorSpace}set inputColorSpace(n){this._inputColorSpace=n,this.setChanged()}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(n){this._outputColorSpace=n,this.setChanged()}set mainScene(n){}set mainCamera(n){}getName(){return this.name}setRenderer(n){this.renderer=n}getDefines(){return this.defines}getUniforms(){return this.uniforms}getExtensions(){return this.extensions}getBlendMode(){return this.blendMode}getAttributes(){return this.attributes}setAttributes(n){this.attributes=n,this.setChanged()}getFragmentShader(){return this.fragmentShader}setFragmentShader(n){this.fragmentShader=n,this.setChanged()}getVertexShader(){return this.vertexShader}setVertexShader(n){this.vertexShader=n,this.setChanged()}setChanged(){this.dispatchEvent({type:"change"})}setDepthTexture(n,e=Fn){}update(n,e,t){}setSize(n,e){}initialize(n,e,t){}dispose(){for(const n of Object.keys(this)){const e=this[n];(e instanceof Wt||e instanceof Jn||e instanceof qt||e instanceof Rn)&&this[n].dispose()}}},xD=`#ifdef FRAMEBUFFER_PRECISION_HIGH uniform mediump sampler2D map; #else uniform lowp sampler2D map; #endif -uniform float intensity;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=texture2D(map,uv)*intensity;}`,bD=class extends li{constructor({blendFunction:n=It.SCREEN,luminanceThreshold:e=.9,luminanceSmoothing:t=.025,mipmapBlur:i=!1,intensity:s=1,radius:r=.85,levels:o=8,kernelSize:a=dc.LARGE,resolutionScale:l=.5,width:c=Jt.AUTO_SIZE,height:u=Jt.AUTO_SIZE,resolutionX:C=c,resolutionY:d=u}={}){super("BloomEffect",fD,{blendFunction:n,uniforms:new Map([["map",new q(null)],["intensity",new q(s)]])}),this.renderTarget=new Rt(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="Bloom.Target",this.blurPass=new QA({kernelSize:a}),this.luminancePass=new Vk({colorOutput:!0}),this.luminanceMaterial.threshold=e,this.luminanceMaterial.smoothing=t,this.mipmapBlurPass=new Nk,this.mipmapBlurPass.enabled=i,this.mipmapBlurPass.radius=r,this.mipmapBlurPass.levels=o,this.uniforms.get("map").value=i?this.mipmapBlurPass.texture:this.renderTarget.texture;const h=this.resolution=new Jt(this,C,d,l);h.addEventListener("change",m=>this.setSize(h.baseWidth,h.baseHeight))}get texture(){return this.mipmapBlurPass.enabled?this.mipmapBlurPass.texture:this.renderTarget.texture}getTexture(){return this.texture}getResolution(){return this.resolution}getBlurPass(){return this.blurPass}getLuminancePass(){return this.luminancePass}get luminanceMaterial(){return this.luminancePass.fullscreenMaterial}getLuminanceMaterial(){return this.luminancePass.fullscreenMaterial}get width(){return this.resolution.width}set width(n){this.resolution.preferredWidth=n}get height(){return this.resolution.height}set height(n){this.resolution.preferredHeight=n}get dithering(){return this.blurPass.dithering}set dithering(n){this.blurPass.dithering=n}get kernelSize(){return this.blurPass.kernelSize}set kernelSize(n){this.blurPass.kernelSize=n}get distinction(){return console.warn(this.name,"distinction was removed"),1}set distinction(n){console.warn(this.name,"distinction was removed")}get intensity(){return this.uniforms.get("intensity").value}set intensity(n){this.uniforms.get("intensity").value=n}getIntensity(){return this.intensity}setIntensity(n){this.intensity=n}getResolutionScale(){return this.resolution.scale}setResolutionScale(n){this.resolution.scale=n}update(n,e,t){const i=this.renderTarget,s=this.luminancePass;s.enabled?(s.render(n,e),this.mipmapBlurPass.enabled?this.mipmapBlurPass.render(n,s.renderTarget):this.blurPass.render(n,s.renderTarget,i)):this.mipmapBlurPass.enabled?this.mipmapBlurPass.render(n,e):this.blurPass.render(n,e,i)}setSize(n,e){const t=this.resolution;t.setBaseSize(n,e),this.renderTarget.setSize(t.width,t.height),this.blurPass.resolution.copy(t),this.luminancePass.setSize(n,e),this.mipmapBlurPass.setSize(n,e)}initialize(n,e,t){this.blurPass.initialize(n,e,t),this.luminancePass.initialize(n,e,t),this.mipmapBlurPass.initialize(n,e,t),t!==void 0&&(this.renderTarget.texture.type=t,po(n)===_t&&kn(this.renderTarget.texture,_t))}},vD="void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=vec4(vec3(average(inputColor.rgb)),inputColor.a);}",yD=class extends li{constructor(n){super("ColorAverageEffect",vD,{blendFunction:n})}},GD=`#ifdef RADIAL_MODULATION +uniform float intensity;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=texture2D(map,uv)*intensity;}`,RD=class extends gi{constructor({blendFunction:n=It.SCREEN,luminanceThreshold:e=.9,luminanceSmoothing:t=.025,mipmapBlur:i=!1,intensity:s=1,radius:r=.85,levels:o=8,kernelSize:a=pc.LARGE,resolutionScale:l=.5,width:c=Jt.AUTO_SIZE,height:u=Jt.AUTO_SIZE,resolutionX:C=c,resolutionY:d=u}={}){super("BloomEffect",xD,{blendFunction:n,uniforms:new Map([["map",new q(null)],["intensity",new q(s)]])}),this.renderTarget=new Wt(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="Bloom.Target",this.blurPass=new ip({kernelSize:a}),this.luminancePass=new Lk({colorOutput:!0}),this.luminanceMaterial.threshold=e,this.luminanceMaterial.smoothing=t,this.mipmapBlurPass=new Tk,this.mipmapBlurPass.enabled=i,this.mipmapBlurPass.radius=r,this.mipmapBlurPass.levels=o,this.uniforms.get("map").value=i?this.mipmapBlurPass.texture:this.renderTarget.texture;const h=this.resolution=new Jt(this,C,d,l);h.addEventListener("change",m=>this.setSize(h.baseWidth,h.baseHeight))}get texture(){return this.mipmapBlurPass.enabled?this.mipmapBlurPass.texture:this.renderTarget.texture}getTexture(){return this.texture}getResolution(){return this.resolution}getBlurPass(){return this.blurPass}getLuminancePass(){return this.luminancePass}get luminanceMaterial(){return this.luminancePass.fullscreenMaterial}getLuminanceMaterial(){return this.luminancePass.fullscreenMaterial}get width(){return this.resolution.width}set width(n){this.resolution.preferredWidth=n}get height(){return this.resolution.height}set height(n){this.resolution.preferredHeight=n}get dithering(){return this.blurPass.dithering}set dithering(n){this.blurPass.dithering=n}get kernelSize(){return this.blurPass.kernelSize}set kernelSize(n){this.blurPass.kernelSize=n}get distinction(){return console.warn(this.name,"distinction was removed"),1}set distinction(n){console.warn(this.name,"distinction was removed")}get intensity(){return this.uniforms.get("intensity").value}set intensity(n){this.uniforms.get("intensity").value=n}getIntensity(){return this.intensity}setIntensity(n){this.intensity=n}getResolutionScale(){return this.resolution.scale}setResolutionScale(n){this.resolution.scale=n}update(n,e,t){const i=this.renderTarget,s=this.luminancePass;s.enabled?(s.render(n,e),this.mipmapBlurPass.enabled?this.mipmapBlurPass.render(n,s.renderTarget):this.blurPass.render(n,s.renderTarget,i)):this.mipmapBlurPass.enabled?this.mipmapBlurPass.render(n,e):this.blurPass.render(n,e,i)}setSize(n,e){const t=this.resolution;t.setBaseSize(n,e),this.renderTarget.setSize(t.width,t.height),this.blurPass.resolution.copy(t),this.luminancePass.setSize(n,e),this.mipmapBlurPass.setSize(n,e)}initialize(n,e,t){this.blurPass.initialize(n,e,t),this.luminancePass.initialize(n,e,t),this.mipmapBlurPass.initialize(n,e,t),t!==void 0&&(this.renderTarget.texture.type=t,po(n)===_t&&Dn(this.renderTarget.texture,_t))}},WD="void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=vec4(vec3(average(inputColor.rgb)),inputColor.a);}",VD=class extends gi{constructor(n){super("ColorAverageEffect",WD,{blendFunction:n})}},MD=`#ifdef RADIAL_MODULATION uniform float modulationOffset; #endif varying float vActive;varying vec2 vUvR;varying vec2 vUvB;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec2 ra=inputColor.ra;vec2 ba=inputColor.ba; @@ -3973,18 +3973,18 @@ const vec2 center=vec2(0.5);float d=distance(uv,center)*2.0;d=max(d-modulationOf #else if(vActive>0.0){ra=texture2D(inputBuffer,vUvR).ra;ba=texture2D(inputBuffer,vUvB).ba;} #endif -outputColor=vec4(ra.x,inputColor.g,ba.x,max(max(ra.y,ba.y),inputColor.a));}`,BD="uniform vec2 offset;varying float vActive;varying vec2 vUvR;varying vec2 vUvB;void mainSupport(const in vec2 uv){vec2 shift=offset*vec2(1.0,aspect);vActive=(shift.x!=0.0||shift.y!=0.0)?1.0:0.0;vUvR=uv+shift;vUvB=uv-shift;}",ZD=class extends li{constructor({offset:n=new ne(.001,5e-4),radialModulation:e=!1,modulationOffset:t=.15}={}){super("ChromaticAberrationEffect",GD,{vertexShader:BD,attributes:qi.CONVOLUTION,uniforms:new Map([["offset",new q(n)],["modulationOffset",new q(t)]])}),this.radialModulation=e}get offset(){return this.uniforms.get("offset").value}set offset(n){this.uniforms.get("offset").value=n}get radialModulation(){return this.defines.has("RADIAL_MODULATION")}set radialModulation(n){n?this.defines.set("RADIAL_MODULATION","1"):this.defines.delete("RADIAL_MODULATION"),this.setChanged()}get modulationOffset(){return this.uniforms.get("modulationOffset").value}set modulationOffset(n){this.uniforms.get("modulationOffset").value=n}getOffset(){return this.offset}setOffset(n){this.offset=n}},wD=`#ifdef FRAMEBUFFER_PRECISION_HIGH +outputColor=vec4(ra.x,inputColor.g,ba.x,max(max(ra.y,ba.y),inputColor.a));}`,ND="uniform vec2 offset;varying float vActive;varying vec2 vUvR;varying vec2 vUvB;void mainSupport(const in vec2 uv){vec2 shift=offset*vec2(1.0,aspect);vActive=(shift.x!=0.0||shift.y!=0.0)?1.0:0.0;vUvR=uv+shift;vUvB=uv-shift;}",HD=class extends gi{constructor({offset:n=new ne(.001,5e-4),radialModulation:e=!1,modulationOffset:t=.15}={}){super("ChromaticAberrationEffect",MD,{vertexShader:ND,attributes:$i.CONVOLUTION,uniforms:new Map([["offset",new q(n)],["modulationOffset",new q(t)]])}),this.radialModulation=e}get offset(){return this.uniforms.get("offset").value}set offset(n){this.uniforms.get("offset").value=n}get radialModulation(){return this.defines.has("RADIAL_MODULATION")}set radialModulation(n){n?this.defines.set("RADIAL_MODULATION","1"):this.defines.delete("RADIAL_MODULATION"),this.setChanged()}get modulationOffset(){return this.uniforms.get("modulationOffset").value}set modulationOffset(n){this.uniforms.get("modulationOffset").value=n}getOffset(){return this.offset}setOffset(n){this.offset=n}},XD=`#ifdef FRAMEBUFFER_PRECISION_HIGH uniform mediump sampler2D nearColorBuffer;uniform mediump sampler2D farColorBuffer; #else uniform lowp sampler2D nearColorBuffer;uniform lowp sampler2D farColorBuffer; #endif -uniform lowp sampler2D nearCoCBuffer;uniform float scale;void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){vec4 colorNear=texture2D(nearColorBuffer,uv);vec4 colorFar=texture2D(farColorBuffer,uv);float cocNear=texture2D(nearCoCBuffer,uv).r;cocNear=min(cocNear*scale,1.0);vec4 result=inputColor*(1.0-colorFar.a)+colorFar;result=mix(result,colorNear,cocNear);outputColor=result;}`,SD=class extends li{constructor(n,{blendFunction:e,worldFocusDistance:t,worldFocusRange:i,focusDistance:s=0,focalLength:r=.1,focusRange:o=r,bokehScale:a=1,resolutionScale:l=1,width:c=Jt.AUTO_SIZE,height:u=Jt.AUTO_SIZE,resolutionX:C=c,resolutionY:d=u}={}){super("DepthOfFieldEffect",wD,{blendFunction:e,attributes:qi.DEPTH,uniforms:new Map([["nearColorBuffer",new q(null)],["farColorBuffer",new q(null)],["nearCoCBuffer",new q(null)],["scale",new q(1)]])}),this.camera=n,this.renderTarget=new Rt(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="DoF.Intermediate",this.renderTargetMasked=this.renderTarget.clone(),this.renderTargetMasked.texture.name="DoF.Masked.Far",this.renderTargetNear=this.renderTarget.clone(),this.renderTargetNear.texture.name="DoF.Bokeh.Near",this.uniforms.get("nearColorBuffer").value=this.renderTargetNear.texture,this.renderTargetFar=this.renderTarget.clone(),this.renderTargetFar.texture.name="DoF.Bokeh.Far",this.uniforms.get("farColorBuffer").value=this.renderTargetFar.texture,this.renderTargetCoC=this.renderTarget.clone(),this.renderTargetCoC.texture.name="DoF.CoC",this.renderTargetCoCBlurred=this.renderTargetCoC.clone(),this.renderTargetCoCBlurred.texture.name="DoF.CoC.Blurred",this.uniforms.get("nearCoCBuffer").value=this.renderTargetCoCBlurred.texture,this.cocPass=new ls(new ME(n));const h=this.cocMaterial;h.focusDistance=s,h.focusRange=o,t!==void 0&&(h.worldFocusDistance=t),i!==void 0&&(h.worldFocusRange=i),this.blurPass=new QA({resolutionScale:l,resolutionX:C,resolutionY:d,kernelSize:dc.MEDIUM}),this.maskPass=new ls(new ck(this.renderTargetCoC.texture));const m=this.maskPass.fullscreenMaterial;m.maskFunction=KI.MULTIPLY,m.colorChannel=Ng.GREEN,this.bokehNearBasePass=new ls(new nh(!1,!0)),this.bokehNearBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehNearFillPass=new ls(new nh(!0,!0)),this.bokehNearFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehFarBasePass=new ls(new nh(!1,!1)),this.bokehFarBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.bokehFarFillPass=new ls(new nh(!0,!1)),this.bokehFarFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.target=null;const v=this.resolution=new Jt(this,C,d,l);v.addEventListener("change",y=>this.setSize(v.baseWidth,v.baseHeight)),this.bokehScale=a}set mainCamera(n){this.camera=n,this.cocMaterial.copyCameraSettings(n)}get cocTexture(){return this.renderTargetCoC.texture}get cocMaterial(){return this.cocPass.fullscreenMaterial}get circleOfConfusionMaterial(){return this.cocMaterial}getCircleOfConfusionMaterial(){return this.circleOfConfusionMaterial}getBlurPass(){return this.blurPass}getResolution(){return this.resolution}get bokehScale(){return this.uniforms.get("scale").value}set bokehScale(n){this.bokehNearBasePass.fullscreenMaterial.scale=n,this.bokehNearFillPass.fullscreenMaterial.scale=n,this.bokehFarBasePass.fullscreenMaterial.scale=n,this.bokehFarFillPass.fullscreenMaterial.scale=n,this.maskPass.fullscreenMaterial.strength=n,this.uniforms.get("scale").value=n}getBokehScale(){return this.bokehScale}setBokehScale(n){this.bokehScale=n}getTarget(){return this.target}setTarget(n){this.target=n}calculateFocusDistance(n){const e=this.camera,t=e.position.distanceTo(n);return el(-t,e.near,e.far)}setDepthTexture(n,e=Yn){this.circleOfConfusionMaterial.depthBuffer=n,this.circleOfConfusionMaterial.depthPacking=e}update(n,e,t){const i=this.renderTarget,s=this.renderTargetCoC,r=this.renderTargetCoCBlurred,o=this.renderTargetMasked;if(this.target!==null){const a=this.calculateFocusDistance(this.target);this.cocMaterial.focusDistance=a}this.cocPass.render(n,null,s),this.blurPass.render(n,s,r),this.maskPass.render(n,e,o),this.bokehFarBasePass.render(n,o,i),this.bokehFarFillPass.render(n,i,this.renderTargetFar),this.bokehNearBasePass.render(n,e,i),this.bokehNearFillPass.render(n,i,this.renderTargetNear)}setSize(n,e){const t=this.resolution;t.setBaseSize(n,e);const i=t.width,s=t.height;this.cocPass.setSize(n,e),this.blurPass.setSize(n,e),this.maskPass.setSize(n,e),this.renderTargetCoC.setSize(n,e),this.renderTargetMasked.setSize(n,e),this.renderTarget.setSize(i,s),this.renderTargetNear.setSize(i,s),this.renderTargetFar.setSize(i,s),this.renderTargetCoCBlurred.setSize(i,s),this.bokehNearBasePass.fullscreenMaterial.setSize(n,e),this.bokehNearFillPass.fullscreenMaterial.setSize(n,e),this.bokehFarBasePass.fullscreenMaterial.setSize(n,e),this.bokehFarFillPass.fullscreenMaterial.setSize(n,e)}initialize(n,e,t){this.cocPass.initialize(n,e,t),this.maskPass.initialize(n,e,t),this.bokehNearBasePass.initialize(n,e,t),this.bokehNearFillPass.initialize(n,e,t),this.bokehFarBasePass.initialize(n,e,t),this.bokehFarFillPass.initialize(n,e,t),this.blurPass.initialize(n,e,rn);const i=this.maskPass.fullscreenMaterial;i.maskFunction=e?KI.MULTIPLY:KI.MULTIPLY_RGB_SET_ALPHA,t!==void 0&&(this.renderTarget.texture.type=t,this.renderTargetNear.texture.type=t,this.renderTargetFar.texture.type=t,this.renderTargetMasked.texture.type=t,po(n)===_t&&(kn(this.renderTarget.texture,_t),kn(this.renderTargetNear.texture,_t),kn(this.renderTargetFar.texture,_t),kn(this.renderTargetMasked.texture,_t)))}};function xD(n,e,t){const i=new Map([[WA,1],[Sv,1],[xv,2],[un,4]]);let s;if(i.has(e)||console.error("Invalid noise texture format"),t===rn){s=new Uint8Array(n*i.get(e));for(let r=0,o=s.length;rdistortion.x-columns*random){float sx=clamp(ceil(seeds.x),0.0,1.0);uv.y=sx*(1.0-(uv.y+distortion.y))+(1.0-sx)*distortion.y;}if(uv.xdistortion.y-columns*random){float sy=clamp(ceil(seeds.y),0.0,1.0);uv.x=sy*distortion.x+(1.0-sy)*(1.0-(uv.x+distortion.x));}vec2 normal=texture2D(perturbationMap,uv*random*random).rg;uv+=normal*seeds*(random*0.2);}}",sh="Glitch.Generated";function Li(n,e){return n+Math.random()*(e-n)}var WD=class extends li{constructor({chromaticAberrationOffset:n=null,delay:e=new ne(1.5,3.5),duration:t=new ne(.6,1),strength:i=new ne(.3,1),columns:s=.05,ratio:r=.85,perturbationMap:o=null,dtSize:a=64}={}){if(super("GlitchEffect",RD,{uniforms:new Map([["perturbationMap",new q(null)],["columns",new q(s)],["active",new q(!1)],["random",new q(1)],["seeds",new q(new ne)],["distortion",new q(new ne)]])}),o===null){const l=new db(a,a,un);l.name=sh,this.perturbationMap=l}else this.perturbationMap=o;this.time=0,this.distortion=this.uniforms.get("distortion").value,this.delay=e,this.duration=t,this.breakPoint=new ne(Li(this.delay.x,this.delay.y),Li(this.duration.x,this.duration.y)),this.strength=i,this.mode=Pa.SPORADIC,this.ratio=r,this.chromaticAberrationOffset=n}get seeds(){return this.uniforms.get("seeds").value}get active(){return this.uniforms.get("active").value}isActive(){return this.active}get minDelay(){return this.delay.x}set minDelay(n){this.delay.x=n}getMinDelay(){return this.delay.x}setMinDelay(n){this.delay.x=n}get maxDelay(){return this.delay.y}set maxDelay(n){this.delay.y=n}getMaxDelay(){return this.delay.y}setMaxDelay(n){this.delay.y=n}get minDuration(){return this.duration.x}set minDuration(n){this.duration.x=n}getMinDuration(){return this.duration.x}setMinDuration(n){this.duration.x=n}get maxDuration(){return this.duration.y}set maxDuration(n){this.duration.y=n}getMaxDuration(){return this.duration.y}setMaxDuration(n){this.duration.y=n}get minStrength(){return this.strength.x}set minStrength(n){this.strength.x=n}getMinStrength(){return this.strength.x}setMinStrength(n){this.strength.x=n}get maxStrength(){return this.strength.y}set maxStrength(n){this.strength.y=n}getMaxStrength(){return this.strength.y}setMaxStrength(n){this.strength.y=n}getMode(){return this.mode}setMode(n){this.mode=n}getGlitchRatio(){return 1-this.ratio}setGlitchRatio(n){this.ratio=Math.min(Math.max(1-n,0),1)}get columns(){return this.uniforms.get("columns").value}set columns(n){this.uniforms.get("columns").value=n}getGlitchColumns(){return this.columns}setGlitchColumns(n){this.columns=n}getChromaticAberrationOffset(){return this.chromaticAberrationOffset}setChromaticAberrationOffset(n){this.chromaticAberrationOffset=n}get perturbationMap(){return this.uniforms.get("perturbationMap").value}set perturbationMap(n){const e=this.perturbationMap;e!==null&&e.name===sh&&e.dispose(),n.minFilter=n.magFilter=pt,n.wrapS=n.wrapT=hs,n.generateMipmaps=!1,this.uniforms.get("perturbationMap").value=n}getPerturbationMap(){return this.perturbationMap}setPerturbationMap(n){this.perturbationMap=n}generatePerturbationMap(n=64){const e=new db(n,n,un);return e.name=sh,e}update(n,e,t){const i=this.mode,s=this.breakPoint,r=this.chromaticAberrationOffset,o=this.strength;let a=this.time,l=!1,c=0,u=0,C;i!==Pa.DISABLED&&(i===Pa.SPORADIC&&(a+=t,C=a>s.x,a>=s.x+s.y&&(s.set(Li(this.delay.x,this.delay.y),Li(this.duration.x,this.duration.y)),a=0)),c=Math.random(),this.uniforms.get("random").value=c,C&&c>this.ratio||i===Pa.CONSTANT_WILD?(l=!0,c*=o.y*.03,u=Li(-Math.PI,Math.PI),this.seeds.set(Li(-o.y,o.y),Li(-o.y,o.y)),this.distortion.set(Li(0,1),Li(0,1))):(C||i===Pa.CONSTANT_MILD)&&(l=!0,c*=o.x*.03,u=Li(-Math.PI,Math.PI),this.seeds.set(Li(-o.x,o.x),Li(-o.x,o.x)),this.distortion.set(Li(0,1),Li(0,1))),this.time=a),r!==null&&(l?r.set(Math.cos(u),Math.sin(u)).multiplyScalar(c):r.set(0,0)),this.uniforms.get("active").value=l}dispose(){const n=this.perturbationMap;n!==null&&n.name===sh&&n.dispose()}},VD=`#ifdef FRAMEBUFFER_PRECISION_HIGH +uniform lowp sampler2D nearCoCBuffer;uniform float scale;void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){vec4 colorNear=texture2D(nearColorBuffer,uv);vec4 colorFar=texture2D(farColorBuffer,uv);float cocNear=texture2D(nearCoCBuffer,uv).r;cocNear=min(cocNear*scale,1.0);vec4 result=inputColor*(1.0-colorFar.a)+colorFar;result=mix(result,colorNear,cocNear);outputColor=result;}`,YD=class extends gi{constructor(n,{blendFunction:e,worldFocusDistance:t,worldFocusRange:i,focusDistance:s=0,focalLength:r=.1,focusRange:o=r,bokehScale:a=1,resolutionScale:l=1,width:c=Jt.AUTO_SIZE,height:u=Jt.AUTO_SIZE,resolutionX:C=c,resolutionY:d=u}={}){super("DepthOfFieldEffect",XD,{blendFunction:e,attributes:$i.DEPTH,uniforms:new Map([["nearColorBuffer",new q(null)],["farColorBuffer",new q(null)],["nearCoCBuffer",new q(null)],["scale",new q(1)]])}),this.camera=n,this.renderTarget=new Wt(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="DoF.Intermediate",this.renderTargetMasked=this.renderTarget.clone(),this.renderTargetMasked.texture.name="DoF.Masked.Far",this.renderTargetNear=this.renderTarget.clone(),this.renderTargetNear.texture.name="DoF.Bokeh.Near",this.uniforms.get("nearColorBuffer").value=this.renderTargetNear.texture,this.renderTargetFar=this.renderTarget.clone(),this.renderTargetFar.texture.name="DoF.Bokeh.Far",this.uniforms.get("farColorBuffer").value=this.renderTargetFar.texture,this.renderTargetCoC=this.renderTarget.clone(),this.renderTargetCoC.texture.name="DoF.CoC",this.renderTargetCoCBlurred=this.renderTargetCoC.clone(),this.renderTargetCoCBlurred.texture.name="DoF.CoC.Blurred",this.uniforms.get("nearCoCBuffer").value=this.renderTargetCoCBlurred.texture,this.cocPass=new gs(new ET(n));const h=this.cocMaterial;h.focusDistance=s,h.focusRange=o,t!==void 0&&(h.worldFocusDistance=t),i!==void 0&&(h.worldFocusRange=i),this.blurPass=new ip({resolutionScale:l,resolutionX:C,resolutionY:d,kernelSize:pc.MEDIUM}),this.maskPass=new gs(new fk(this.renderTargetCoC.texture));const m=this.maskPass.fullscreenMaterial;m.maskFunction=EI.MULTIPLY,m.colorChannel=Yg.GREEN,this.bokehNearBasePass=new gs(new lh(!1,!0)),this.bokehNearBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehNearFillPass=new gs(new lh(!0,!0)),this.bokehNearFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehFarBasePass=new gs(new lh(!1,!1)),this.bokehFarBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.bokehFarFillPass=new gs(new lh(!0,!1)),this.bokehFarFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.target=null;const v=this.resolution=new Jt(this,C,d,l);v.addEventListener("change",y=>this.setSize(v.baseWidth,v.baseHeight)),this.bokehScale=a}set mainCamera(n){this.camera=n,this.cocMaterial.copyCameraSettings(n)}get cocTexture(){return this.renderTargetCoC.texture}get cocMaterial(){return this.cocPass.fullscreenMaterial}get circleOfConfusionMaterial(){return this.cocMaterial}getCircleOfConfusionMaterial(){return this.circleOfConfusionMaterial}getBlurPass(){return this.blurPass}getResolution(){return this.resolution}get bokehScale(){return this.uniforms.get("scale").value}set bokehScale(n){this.bokehNearBasePass.fullscreenMaterial.scale=n,this.bokehNearFillPass.fullscreenMaterial.scale=n,this.bokehFarBasePass.fullscreenMaterial.scale=n,this.bokehFarFillPass.fullscreenMaterial.scale=n,this.maskPass.fullscreenMaterial.strength=n,this.uniforms.get("scale").value=n}getBokehScale(){return this.bokehScale}setBokehScale(n){this.bokehScale=n}getTarget(){return this.target}setTarget(n){this.target=n}calculateFocusDistance(n){const e=this.camera,t=e.position.distanceTo(n);return nl(-t,e.near,e.far)}setDepthTexture(n,e=Fn){this.circleOfConfusionMaterial.depthBuffer=n,this.circleOfConfusionMaterial.depthPacking=e}update(n,e,t){const i=this.renderTarget,s=this.renderTargetCoC,r=this.renderTargetCoCBlurred,o=this.renderTargetMasked;if(this.target!==null){const a=this.calculateFocusDistance(this.target);this.cocMaterial.focusDistance=a}this.cocPass.render(n,null,s),this.blurPass.render(n,s,r),this.maskPass.render(n,e,o),this.bokehFarBasePass.render(n,o,i),this.bokehFarFillPass.render(n,i,this.renderTargetFar),this.bokehNearBasePass.render(n,e,i),this.bokehNearFillPass.render(n,i,this.renderTargetNear)}setSize(n,e){const t=this.resolution;t.setBaseSize(n,e);const i=t.width,s=t.height;this.cocPass.setSize(n,e),this.blurPass.setSize(n,e),this.maskPass.setSize(n,e),this.renderTargetCoC.setSize(n,e),this.renderTargetMasked.setSize(n,e),this.renderTarget.setSize(i,s),this.renderTargetNear.setSize(i,s),this.renderTargetFar.setSize(i,s),this.renderTargetCoCBlurred.setSize(i,s),this.bokehNearBasePass.fullscreenMaterial.setSize(n,e),this.bokehNearFillPass.fullscreenMaterial.setSize(n,e),this.bokehFarBasePass.fullscreenMaterial.setSize(n,e),this.bokehFarFillPass.fullscreenMaterial.setSize(n,e)}initialize(n,e,t){this.cocPass.initialize(n,e,t),this.maskPass.initialize(n,e,t),this.bokehNearBasePass.initialize(n,e,t),this.bokehNearFillPass.initialize(n,e,t),this.bokehFarBasePass.initialize(n,e,t),this.bokehFarFillPass.initialize(n,e,t),this.blurPass.initialize(n,e,rn);const i=this.maskPass.fullscreenMaterial;i.maskFunction=e?EI.MULTIPLY:EI.MULTIPLY_RGB_SET_ALPHA,t!==void 0&&(this.renderTarget.texture.type=t,this.renderTargetNear.texture.type=t,this.renderTargetFar.texture.type=t,this.renderTargetMasked.texture.type=t,po(n)===_t&&(Dn(this.renderTarget.texture,_t),Dn(this.renderTargetNear.texture,_t),Dn(this.renderTargetFar.texture,_t),Dn(this.renderTargetMasked.texture,_t)))}};function FD(n,e,t){const i=new Map([[FA,1],[Vv,1],[Mv,2],[un,4]]);let s;if(i.has(e)||console.error("Invalid noise texture format"),t===rn){s=new Uint8Array(n*i.get(e));for(let r=0,o=s.length;rdistortion.x-columns*random){float sx=clamp(ceil(seeds.x),0.0,1.0);uv.y=sx*(1.0-(uv.y+distortion.y))+(1.0-sx)*distortion.y;}if(uv.xdistortion.y-columns*random){float sy=clamp(ceil(seeds.y),0.0,1.0);uv.x=sy*distortion.x+(1.0-sy)*(1.0-(uv.x+distortion.x));}vec2 normal=texture2D(perturbationMap,uv*random*random).rg;uv+=normal*seeds*(random*0.2);}}",ch="Glitch.Generated";function Ei(n,e){return n+Math.random()*(e-n)}var zD=class extends gi{constructor({chromaticAberrationOffset:n=null,delay:e=new ne(1.5,3.5),duration:t=new ne(.6,1),strength:i=new ne(.3,1),columns:s=.05,ratio:r=.85,perturbationMap:o=null,dtSize:a=64}={}){if(super("GlitchEffect",KD,{uniforms:new Map([["perturbationMap",new q(null)],["columns",new q(s)],["active",new q(!1)],["random",new q(1)],["seeds",new q(new ne)],["distortion",new q(new ne)]])}),o===null){const l=new mb(a,a,un);l.name=ch,this.perturbationMap=l}else this.perturbationMap=o;this.time=0,this.distortion=this.uniforms.get("distortion").value,this.delay=e,this.duration=t,this.breakPoint=new ne(Ei(this.delay.x,this.delay.y),Ei(this.duration.x,this.duration.y)),this.strength=i,this.mode=Ja.SPORADIC,this.ratio=r,this.chromaticAberrationOffset=n}get seeds(){return this.uniforms.get("seeds").value}get active(){return this.uniforms.get("active").value}isActive(){return this.active}get minDelay(){return this.delay.x}set minDelay(n){this.delay.x=n}getMinDelay(){return this.delay.x}setMinDelay(n){this.delay.x=n}get maxDelay(){return this.delay.y}set maxDelay(n){this.delay.y=n}getMaxDelay(){return this.delay.y}setMaxDelay(n){this.delay.y=n}get minDuration(){return this.duration.x}set minDuration(n){this.duration.x=n}getMinDuration(){return this.duration.x}setMinDuration(n){this.duration.x=n}get maxDuration(){return this.duration.y}set maxDuration(n){this.duration.y=n}getMaxDuration(){return this.duration.y}setMaxDuration(n){this.duration.y=n}get minStrength(){return this.strength.x}set minStrength(n){this.strength.x=n}getMinStrength(){return this.strength.x}setMinStrength(n){this.strength.x=n}get maxStrength(){return this.strength.y}set maxStrength(n){this.strength.y=n}getMaxStrength(){return this.strength.y}setMaxStrength(n){this.strength.y=n}getMode(){return this.mode}setMode(n){this.mode=n}getGlitchRatio(){return 1-this.ratio}setGlitchRatio(n){this.ratio=Math.min(Math.max(1-n,0),1)}get columns(){return this.uniforms.get("columns").value}set columns(n){this.uniforms.get("columns").value=n}getGlitchColumns(){return this.columns}setGlitchColumns(n){this.columns=n}getChromaticAberrationOffset(){return this.chromaticAberrationOffset}setChromaticAberrationOffset(n){this.chromaticAberrationOffset=n}get perturbationMap(){return this.uniforms.get("perturbationMap").value}set perturbationMap(n){const e=this.perturbationMap;e!==null&&e.name===ch&&e.dispose(),n.minFilter=n.magFilter=pt,n.wrapS=n.wrapT=As,n.generateMipmaps=!1,this.uniforms.get("perturbationMap").value=n}getPerturbationMap(){return this.perturbationMap}setPerturbationMap(n){this.perturbationMap=n}generatePerturbationMap(n=64){const e=new mb(n,n,un);return e.name=ch,e}update(n,e,t){const i=this.mode,s=this.breakPoint,r=this.chromaticAberrationOffset,o=this.strength;let a=this.time,l=!1,c=0,u=0,C;i!==Ja.DISABLED&&(i===Ja.SPORADIC&&(a+=t,C=a>s.x,a>=s.x+s.y&&(s.set(Ei(this.delay.x,this.delay.y),Ei(this.duration.x,this.duration.y)),a=0)),c=Math.random(),this.uniforms.get("random").value=c,C&&c>this.ratio||i===Ja.CONSTANT_WILD?(l=!0,c*=o.y*.03,u=Ei(-Math.PI,Math.PI),this.seeds.set(Ei(-o.y,o.y),Ei(-o.y,o.y)),this.distortion.set(Ei(0,1),Ei(0,1))):(C||i===Ja.CONSTANT_MILD)&&(l=!0,c*=o.x*.03,u=Ei(-Math.PI,Math.PI),this.seeds.set(Ei(-o.x,o.x),Ei(-o.x,o.x)),this.distortion.set(Ei(0,1),Ei(0,1))),this.time=a),r!==null&&(l?r.set(Math.cos(u),Math.sin(u)).multiplyScalar(c):r.set(0,0)),this.uniforms.get("active").value=l}dispose(){const n=this.perturbationMap;n!==null&&n.name===ch&&n.dispose()}},LD=`#ifdef FRAMEBUFFER_PRECISION_HIGH uniform mediump sampler2D map; #else uniform lowp sampler2D map; #endif -void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=texture2D(map,uv);}`,wf=new H,fw=new Fe,MD=class extends li{constructor(n,e,{blendFunction:t=It.SCREEN,samples:i=60,density:s=.96,decay:r=.9,weight:o=.4,exposure:a=.6,clampMax:l=1,blur:c=!0,kernelSize:u=dc.SMALL,resolutionScale:C=.5,width:d=Jt.AUTO_SIZE,height:h=Jt.AUTO_SIZE,resolutionX:m=d,resolutionY:v=h}={}){super("GodRaysEffect",VD,{blendFunction:t,attributes:qi.DEPTH,uniforms:new Map([["map",new q(null)]])}),this.camera=n,this._lightSource=e,this.lightSource=e,this.lightScene=new dl,this.screenPosition=new ne,this.renderTargetA=new Rt(1,1,{depthBuffer:!1}),this.renderTargetA.texture.name="GodRays.Target.A",this.renderTargetB=this.renderTargetA.clone(),this.renderTargetB.texture.name="GodRays.Target.B",this.uniforms.get("map").value=this.renderTargetB.texture,this.renderTargetLight=new Rt(1,1),this.renderTargetLight.texture.name="GodRays.Light",this.renderTargetLight.depthTexture=new FA,this.renderPassLight=new Ac(this.lightScene,n),this.renderPassLight.clearPass.overrideClearColor=new Re(0),this.clearPass=new hc(!0,!1,!1),this.clearPass.overrideClearColor=new Re(0),this.blurPass=new QA({kernelSize:u}),this.blurPass.enabled=c,this.depthMaskPass=new ls(new BV);const y=this.depthMaskMaterial;y.depthBuffer1=this.renderTargetLight.depthTexture,y.copyCameraSettings(n),this.godRaysPass=new ls(new ok(this.screenPosition));const A=this.godRaysMaterial;A.density=s,A.decay=r,A.weight=o,A.exposure=a,A.maxIntensity=l,A.samples=i;const b=this.resolution=new Jt(this,m,v,C);b.addEventListener("change",f=>this.setSize(b.baseWidth,b.baseHeight))}set mainCamera(n){this.camera=n,this.renderPassLight.mainCamera=n,this.depthMaskMaterial.copyCameraSettings(n)}get lightSource(){return this._lightSource}set lightSource(n){this._lightSource=n,n!==null&&(n.material.depthWrite=!1,n.material.transparent=!0)}getBlurPass(){return this.blurPass}get texture(){return this.renderTargetB.texture}getTexture(){return this.texture}get depthMaskMaterial(){return this.depthMaskPass.fullscreenMaterial}get godRaysMaterial(){return this.godRaysPass.fullscreenMaterial}getGodRaysMaterial(){return this.godRaysMaterial}getResolution(){return this.resolution}get width(){return this.resolution.width}set width(n){this.resolution.preferredWidth=n}get height(){return this.resolution.height}set height(n){this.resolution.preferredHeight=n}get dithering(){return this.godRaysMaterial.dithering}set dithering(n){const e=this.godRaysMaterial;e.dithering=n,e.needsUpdate=!0}get blur(){return this.blurPass.enabled}set blur(n){this.blurPass.enabled=n}get kernelSize(){return this.blurPass.kernelSize}set kernelSize(n){this.blurPass.kernelSize=n}getResolutionScale(){return this.resolution.scale}setResolutionScale(n){this.resolution.scale=n}get samples(){return this.godRaysMaterial.samples}set samples(n){this.godRaysMaterial.samples=n}setDepthTexture(n,e=Yn){this.depthMaskPass.fullscreenMaterial.depthBuffer0=n,this.depthMaskPass.fullscreenMaterial.depthPacking0=e}update(n,e,t){const i=this.lightSource,s=i.parent,r=i.matrixAutoUpdate,o=this.renderTargetA,a=this.renderTargetLight;i.material.depthWrite=!0,i.matrixAutoUpdate=!1,i.updateWorldMatrix(!0,!1),s!==null&&(r||fw.copy(i.matrix),i.matrix.copy(i.matrixWorld)),this.lightScene.add(i),this.renderPassLight.render(n,a),this.clearPass.render(n,o),this.depthMaskPass.render(n,a,o),i.material.depthWrite=!1,i.matrixAutoUpdate=r,s!==null&&(r||i.matrix.copy(fw),s.add(i)),wf.setFromMatrixPosition(i.matrixWorld).project(this.camera),this.screenPosition.set(Math.min(Math.max((wf.x+1)*.5,-1),2),Math.min(Math.max((wf.y+1)*.5,-1),2)),this.blurPass.enabled&&this.blurPass.render(n,o,o),this.godRaysPass.render(n,o,this.renderTargetB)}setSize(n,e){const t=this.resolution;t.setBaseSize(n,e);const i=t.width,s=t.height;this.renderTargetA.setSize(i,s),this.renderTargetB.setSize(i,s),this.renderTargetLight.setSize(i,s),this.blurPass.resolution.copy(t)}initialize(n,e,t){this.blurPass.initialize(n,e,t),this.renderPassLight.initialize(n,e,t),this.depthMaskPass.initialize(n,e,t),this.godRaysPass.initialize(n,e,t),t!==void 0&&(this.renderTargetA.texture.type=t,this.renderTargetB.texture.type=t,this.renderTargetLight.texture.type=t,po(n)===_t&&(kn(this.renderTargetA.texture,_t),kn(this.renderTargetB.texture,_t),kn(this.renderTargetLight.texture,_t)))}},ND="uniform vec2 scale;uniform float lineWidth;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){float grid=0.5-max(abs(mod(uv.x*scale.x,1.0)-0.5),abs(mod(uv.y*scale.y,1.0)-0.5));outputColor=vec4(vec3(smoothstep(0.0,lineWidth,grid)),inputColor.a);}",HD=class extends li{constructor({blendFunction:n=It.OVERLAY,scale:e=1,lineWidth:t=0}={}){super("GridEffect",ND,{blendFunction:n,uniforms:new Map([["scale",new q(new ne)],["lineWidth",new q(t)]])}),this.resolution=new ne,this.s=0,this.scale=e,this.l=0,this.lineWidth=t}get scale(){return this.s}set scale(n){this.s=Math.max(n,1e-6),this.setSize(this.resolution.width,this.resolution.height)}getScale(){return this.scale}setScale(n){this.scale=n}get lineWidth(){return this.l}set lineWidth(n){this.l=n,this.setSize(this.resolution.width,this.resolution.height)}getLineWidth(){return this.lineWidth}setLineWidth(n){this.lineWidth=n}setSize(n,e){this.resolution.set(n,e);const t=n/e,i=this.scale*(e*.125);this.uniforms.get("scale").value.set(t*i,i),this.uniforms.get("lineWidth").value=i/e+this.lineWidth}};function bw(n,e,t){const i=document.createElement("canvas"),s=i.getContext("2d");if(i.width=n,i.height=e,t instanceof Image)s.drawImage(t,0,0);else{const r=s.createImageData(n,e);r.data.set(t),s.putImageData(r,0,0)}return i}var SV=class{constructor(n=0,e=0,t=null){this.width=n,this.height=e,this.data=t}toCanvas(){return typeof document>"u"?null:bw(this.width,this.height,this.data)}static from(n){const{width:e,height:t}=n;let i;if(n instanceof Image){const s=bw(e,t,n);s!==null&&(i=s.getContext("2d").getImageData(0,0,e,t).data)}else i=n.data;return new SV(e,t,i)}},XD=`"use strict";(()=>{var O=Math.pow;var _={SCALE_UP:"lut.scaleup"};var k=[new Float32Array(3),new Float32Array(3)],n=[new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3)],Z=[[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1])]];function d(a,t,r,m){let i=r[0]-t[0],e=r[1]-t[1],y=r[2]-t[2],h=a[0]-t[0],A=a[1]-t[1],w=a[2]-t[2],c=e*w-y*A,l=y*h-i*w,x=i*A-e*h,u=Math.sqrt(c*c+l*l+x*x),b=u*.5,s=c/u,F=l/u,f=x/u,p=-(a[0]*s+a[1]*F+a[2]*f),M=m[0]*s+m[1]*F+m[2]*f;return Math.abs(M+p)*b/3}function V(a,t,r,m,i,e){let y=(r+m*t+i*t*t)*4;e[0]=a[y+0],e[1]=a[y+1],e[2]=a[y+2]}function j(a,t,r,m,i,e){let y=r*(t-1),h=m*(t-1),A=i*(t-1),w=Math.floor(y),c=Math.floor(h),l=Math.floor(A),x=Math.ceil(y),u=Math.ceil(h),b=Math.ceil(A),s=y-w,F=h-c,f=A-l;if(w===y&&c===h&&l===A)V(a,t,y,h,A,e);else{let p;s>=F&&F>=f?p=Z[0]:s>=f&&f>=F?p=Z[1]:f>=s&&s>=F?p=Z[2]:F>=s&&s>=f?p=Z[3]:F>=f&&f>=s?p=Z[4]:f>=F&&F>=s&&(p=Z[5]);let[M,g,X,Y]=p,P=k[0];P[0]=s,P[1]=F,P[2]=f;let o=k[1],L=x-w,S=u-c,U=b-l;o[0]=L*M[0]+w,o[1]=S*M[1]+c,o[2]=U*M[2]+l,V(a,t,o[0],o[1],o[2],n[0]),o[0]=L*g[0]+w,o[1]=S*g[1]+c,o[2]=U*g[2]+l,V(a,t,o[0],o[1],o[2],n[1]),o[0]=L*X[0]+w,o[1]=S*X[1]+c,o[2]=U*X[2]+l,V(a,t,o[0],o[1],o[2],n[2]),o[0]=L*Y[0]+w,o[1]=S*Y[1]+c,o[2]=U*Y[2]+l,V(a,t,o[0],o[1],o[2],n[3]);let T=d(g,X,Y,P)*6,q=d(M,X,Y,P)*6,C=d(M,g,Y,P)*6,E=d(M,g,X,P)*6;n[0][0]*=T,n[0][1]*=T,n[0][2]*=T,n[1][0]*=q,n[1][1]*=q,n[1][2]*=q,n[2][0]*=C,n[2][1]*=C,n[2][2]*=C,n[3][0]*=E,n[3][1]*=E,n[3][2]*=E,e[0]=n[0][0]+n[1][0]+n[2][0]+n[3][0],e[1]=n[0][1]+n[1][1]+n[2][1]+n[3][1],e[2]=n[0][2]+n[1][2]+n[2][2]+n[3][2]}}var v=class{static expand(t,r){let m=Math.cbrt(t.length/4),i=new Float32Array(3),e=new t.constructor(O(r,3)*4),y=t instanceof Uint8Array?255:1,h=O(r,2),A=1/(r-1);for(let w=0;w{let t=a.data,r=t.data;switch(t.operation){case _.SCALE_UP:r=v.expand(r,t.size);break}postMessage(r,[r.buffer]),close()});})(); -`,vw=new Re,Vh=class extends ol{constructor(n,e){super(n,e,e,e),this.type=wn,this.format=un,this.minFilter=je,this.magFilter=je,this.wrapS=zn,this.wrapT=zn,this.wrapR=zn,this.unpackAlignment=1,this.needsUpdate=!0,kn(this,nc),this.domainMin=new H(0,0,0),this.domainMax=new H(1,1,1)}get isLookupTexture3D(){return!0}scaleUp(n,e=!0){const t=this.image;let i;return n<=t.width?i=Promise.reject(new Error("The target size must be greater than the current size")):i=new Promise((s,r)=>{const o=URL.createObjectURL(new Blob([XD],{type:"text/javascript"})),a=new Worker(o);a.addEventListener("error",c=>r(c.error)),a.addEventListener("message",c=>{const u=new Vh(c.data,n);Gf(this,u),u.type=this.type,u.name=this.name,URL.revokeObjectURL(o),s(u)});const l=e?[t.data.buffer]:[];a.postMessage({operation:NE.SCALE_UP,data:t.data,size:n},l)}),i}applyLUT(n){const e=this.image,t=n.image,i=Math.min(e.width,e.height,e.depth),s=Math.min(t.width,t.height,t.depth);if(i!==s)console.error("Size mismatch");else if(n.type!==wn||this.type!==wn)console.error("Both LUTs must be FloatType textures");else if(n.format!==un||this.format!==un)console.error("Both LUTs must be RGBA textures");else{const r=e.data,o=t.data,a=i,l=a**2,c=a-1;for(let u=0,C=a**3;ui){r=new Uint8Array(l.length);for(let c=0;cthis.setSize(b.baseWidth,b.baseHeight))}set mainCamera(n){this.camera=n,this.renderPassLight.mainCamera=n,this.depthMaskMaterial.copyCameraSettings(n)}get lightSource(){return this._lightSource}set lightSource(n){this._lightSource=n,n!==null&&(n.material.depthWrite=!1,n.material.transparent=!0)}getBlurPass(){return this.blurPass}get texture(){return this.renderTargetB.texture}getTexture(){return this.texture}get depthMaskMaterial(){return this.depthMaskPass.fullscreenMaterial}get godRaysMaterial(){return this.godRaysPass.fullscreenMaterial}getGodRaysMaterial(){return this.godRaysMaterial}getResolution(){return this.resolution}get width(){return this.resolution.width}set width(n){this.resolution.preferredWidth=n}get height(){return this.resolution.height}set height(n){this.resolution.preferredHeight=n}get dithering(){return this.godRaysMaterial.dithering}set dithering(n){const e=this.godRaysMaterial;e.dithering=n,e.needsUpdate=!0}get blur(){return this.blurPass.enabled}set blur(n){this.blurPass.enabled=n}get kernelSize(){return this.blurPass.kernelSize}set kernelSize(n){this.blurPass.kernelSize=n}getResolutionScale(){return this.resolution.scale}setResolutionScale(n){this.resolution.scale=n}get samples(){return this.godRaysMaterial.samples}set samples(n){this.godRaysMaterial.samples=n}setDepthTexture(n,e=Fn){this.depthMaskPass.fullscreenMaterial.depthBuffer0=n,this.depthMaskPass.fullscreenMaterial.depthPacking0=e}update(n,e,t){const i=this.lightSource,s=i.parent,r=i.matrixAutoUpdate,o=this.renderTargetA,a=this.renderTargetLight;i.material.depthWrite=!0,i.matrixAutoUpdate=!1,i.updateWorldMatrix(!0,!1),s!==null&&(r||Zw.copy(i.matrix),i.matrix.copy(i.matrixWorld)),this.lightScene.add(i),this.renderPassLight.render(n,a),this.clearPass.render(n,o),this.depthMaskPass.render(n,a,o),i.material.depthWrite=!1,i.matrixAutoUpdate=r,s!==null&&(r||i.matrix.copy(Zw),s.add(i)),Wf.setFromMatrixPosition(i.matrixWorld).project(this.camera),this.screenPosition.set(Math.min(Math.max((Wf.x+1)*.5,-1),2),Math.min(Math.max((Wf.y+1)*.5,-1),2)),this.blurPass.enabled&&this.blurPass.render(n,o,o),this.godRaysPass.render(n,o,this.renderTargetB)}setSize(n,e){const t=this.resolution;t.setBaseSize(n,e);const i=t.width,s=t.height;this.renderTargetA.setSize(i,s),this.renderTargetB.setSize(i,s),this.renderTargetLight.setSize(i,s),this.blurPass.resolution.copy(t)}initialize(n,e,t){this.blurPass.initialize(n,e,t),this.renderPassLight.initialize(n,e,t),this.depthMaskPass.initialize(n,e,t),this.godRaysPass.initialize(n,e,t),t!==void 0&&(this.renderTargetA.texture.type=t,this.renderTargetB.texture.type=t,this.renderTargetLight.texture.type=t,po(n)===_t&&(Dn(this.renderTargetA.texture,_t),Dn(this.renderTargetB.texture,_t),Dn(this.renderTargetLight.texture,_t)))}},TD="uniform vec2 scale;uniform float lineWidth;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){float grid=0.5-max(abs(mod(uv.x*scale.x,1.0)-0.5),abs(mod(uv.y*scale.y,1.0)-0.5));outputColor=vec4(vec3(smoothstep(0.0,lineWidth,grid)),inputColor.a);}",kD=class extends gi{constructor({blendFunction:n=It.OVERLAY,scale:e=1,lineWidth:t=0}={}){super("GridEffect",TD,{blendFunction:n,uniforms:new Map([["scale",new q(new ne)],["lineWidth",new q(t)]])}),this.resolution=new ne,this.s=0,this.scale=e,this.l=0,this.lineWidth=t}get scale(){return this.s}set scale(n){this.s=Math.max(n,1e-6),this.setSize(this.resolution.width,this.resolution.height)}getScale(){return this.scale}setScale(n){this.scale=n}get lineWidth(){return this.l}set lineWidth(n){this.l=n,this.setSize(this.resolution.width,this.resolution.height)}getLineWidth(){return this.lineWidth}setLineWidth(n){this.lineWidth=n}setSize(n,e){this.resolution.set(n,e);const t=n/e,i=this.scale*(e*.125);this.uniforms.get("scale").value.set(t*i,i),this.uniforms.get("lineWidth").value=i/e+this.lineWidth}};function ww(n,e,t){const i=document.createElement("canvas"),s=i.getContext("2d");if(i.width=n,i.height=e,t instanceof Image)s.drawImage(t,0,0);else{const r=s.createImageData(n,e);r.data.set(t),s.putImageData(r,0,0)}return i}var HV=class{constructor(n=0,e=0,t=null){this.width=n,this.height=e,this.data=t}toCanvas(){return typeof document>"u"?null:ww(this.width,this.height,this.data)}static from(n){const{width:e,height:t}=n;let i;if(n instanceof Image){const s=ww(e,t,n);s!==null&&(i=s.getContext("2d").getImageData(0,0,e,t).data)}else i=n.data;return new HV(e,t,i)}},DD=`"use strict";(()=>{var O=Math.pow;var _={SCALE_UP:"lut.scaleup"};var k=[new Float32Array(3),new Float32Array(3)],n=[new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3)],Z=[[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1])]];function d(a,t,r,m){let i=r[0]-t[0],e=r[1]-t[1],y=r[2]-t[2],h=a[0]-t[0],A=a[1]-t[1],w=a[2]-t[2],c=e*w-y*A,l=y*h-i*w,x=i*A-e*h,u=Math.sqrt(c*c+l*l+x*x),b=u*.5,s=c/u,F=l/u,f=x/u,p=-(a[0]*s+a[1]*F+a[2]*f),M=m[0]*s+m[1]*F+m[2]*f;return Math.abs(M+p)*b/3}function V(a,t,r,m,i,e){let y=(r+m*t+i*t*t)*4;e[0]=a[y+0],e[1]=a[y+1],e[2]=a[y+2]}function j(a,t,r,m,i,e){let y=r*(t-1),h=m*(t-1),A=i*(t-1),w=Math.floor(y),c=Math.floor(h),l=Math.floor(A),x=Math.ceil(y),u=Math.ceil(h),b=Math.ceil(A),s=y-w,F=h-c,f=A-l;if(w===y&&c===h&&l===A)V(a,t,y,h,A,e);else{let p;s>=F&&F>=f?p=Z[0]:s>=f&&f>=F?p=Z[1]:f>=s&&s>=F?p=Z[2]:F>=s&&s>=f?p=Z[3]:F>=f&&f>=s?p=Z[4]:f>=F&&F>=s&&(p=Z[5]);let[M,g,X,Y]=p,P=k[0];P[0]=s,P[1]=F,P[2]=f;let o=k[1],L=x-w,S=u-c,U=b-l;o[0]=L*M[0]+w,o[1]=S*M[1]+c,o[2]=U*M[2]+l,V(a,t,o[0],o[1],o[2],n[0]),o[0]=L*g[0]+w,o[1]=S*g[1]+c,o[2]=U*g[2]+l,V(a,t,o[0],o[1],o[2],n[1]),o[0]=L*X[0]+w,o[1]=S*X[1]+c,o[2]=U*X[2]+l,V(a,t,o[0],o[1],o[2],n[2]),o[0]=L*Y[0]+w,o[1]=S*Y[1]+c,o[2]=U*Y[2]+l,V(a,t,o[0],o[1],o[2],n[3]);let T=d(g,X,Y,P)*6,q=d(M,X,Y,P)*6,C=d(M,g,Y,P)*6,E=d(M,g,X,P)*6;n[0][0]*=T,n[0][1]*=T,n[0][2]*=T,n[1][0]*=q,n[1][1]*=q,n[1][2]*=q,n[2][0]*=C,n[2][1]*=C,n[2][2]*=C,n[3][0]*=E,n[3][1]*=E,n[3][2]*=E,e[0]=n[0][0]+n[1][0]+n[2][0]+n[3][0],e[1]=n[0][1]+n[1][1]+n[2][1]+n[3][1],e[2]=n[0][2]+n[1][2]+n[2][2]+n[3][2]}}var v=class{static expand(t,r){let m=Math.cbrt(t.length/4),i=new Float32Array(3),e=new t.constructor(O(r,3)*4),y=t instanceof Uint8Array?255:1,h=O(r,2),A=1/(r-1);for(let w=0;w{let t=a.data,r=t.data;switch(t.operation){case _.SCALE_UP:r=v.expand(r,t.size);break}postMessage(r,[r.buffer]),close()});})(); +`,Sw=new Re,Fh=class extends al{constructor(n,e){super(n,e,e,e),this.type=wn,this.format=un,this.minFilter=je,this.magFilter=je,this.wrapS=Ln,this.wrapT=Ln,this.wrapR=Ln,this.unpackAlignment=1,this.needsUpdate=!0,Dn(this,rc),this.domainMin=new H(0,0,0),this.domainMax=new H(1,1,1)}get isLookupTexture3D(){return!0}scaleUp(n,e=!0){const t=this.image;let i;return n<=t.width?i=Promise.reject(new Error("The target size must be greater than the current size")):i=new Promise((s,r)=>{const o=URL.createObjectURL(new Blob([DD],{type:"text/javascript"})),a=new Worker(o);a.addEventListener("error",c=>r(c.error)),a.addEventListener("message",c=>{const u=new Fh(c.data,n);Sf(this,u),u.type=this.type,u.name=this.name,URL.revokeObjectURL(o),s(u)});const l=e?[t.data.buffer]:[];a.postMessage({operation:TT.SCALE_UP,data:t.data,size:n},l)}),i}applyLUT(n){const e=this.image,t=n.image,i=Math.min(e.width,e.height,e.depth),s=Math.min(t.width,t.height,t.depth);if(i!==s)console.error("Size mismatch");else if(n.type!==wn||this.type!==wn)console.error("Both LUTs must be FloatType textures");else if(n.format!==un||this.format!==un)console.error("Both LUTs must be RGBA textures");else{const r=e.data,o=t.data,a=i,l=a**2,c=a-1;for(let u=0,C=a**3;ui){r=new Uint8Array(l.length);for(let c=0;ci.height?e.set("LUT_STRIP_HORIZONTAL","1"):n instanceof ol&&e.set("LUT_3D","1"),n instanceof Vh){const r=n.domainMin,o=n.domainMax;(r.x!==0||r.y!==0||r.z!==0||o.x!==1||o.y!==1||o.z!==1)&&(e.set("CUSTOM_INPUT_DOMAIN","1"),t.get("domainMin").value=r.clone(),t.get("domainMax").value=o.clone())}this.tetrahedralInterpolation=s}}getLUT(){return this.lut}setLUT(n){this.lut=n}updateScaleOffset(){const n=this.lut;if(n!==null){const e=Math.min(n.image.width,n.image.height),t=this.uniforms.get("scale").value,i=this.uniforms.get("offset").value;if(this.tetrahedralInterpolation&&n instanceof ol)if(this.defines.has("CUSTOM_INPUT_DOMAIN")){const s=n.domainMax.clone().sub(n.domainMin);t.setScalar(e-1).divide(s),i.copy(n.domainMin).negate().multiply(t)}else t.setScalar(e-1),i.setScalar(0);else if(this.defines.has("CUSTOM_INPUT_DOMAIN")){const s=n.domainMax.clone().sub(n.domainMin).multiplyScalar(e);t.setScalar(e-1).divide(s),i.copy(n.domainMin).negate().multiply(t).addScalar(1/(2*e))}else t.setScalar((e-1)/e),i.setScalar(1/(2*e))}}configureTetrahedralInterpolation(){const n=this.lut;n!==null&&(n.minFilter=je,n.magFilter=je,this.tetrahedralInterpolation&&(n instanceof ol?(n.minFilter=pt,n.magFilter=pt):console.warn("Tetrahedral interpolation requires a 3D texture")),n.source===void 0&&(n.needsUpdate=!0))}get tetrahedralInterpolation(){return this.defines.has("TETRAHEDRAL_INTERPOLATION")}set tetrahedralInterpolation(n){n?this.defines.set("TETRAHEDRAL_INTERPOLATION","1"):this.defines.delete("TETRAHEDRAL_INTERPOLATION"),this.configureTetrahedralInterpolation(),this.updateScaleOffset(),this.setChanged()}setTetrahedralInterpolationEnabled(n){this.tetrahedralInterpolation=n}},KD=`uniform lowp sampler2D edgeTexture;uniform lowp sampler2D maskTexture;uniform vec3 visibleEdgeColor;uniform vec3 hiddenEdgeColor;uniform float pulse;uniform float edgeStrength; +outputColor=vec4(c,inputColor.a);}`,PD=class extends gi{constructor(n,{blendFunction:e=It.SRC,tetrahedralInterpolation:t=!1,inputEncoding:i=Fs,inputColorSpace:s}={}){super("LUT3DEffect",UD,{blendFunction:e,uniforms:new Map([["lut",new q(null)],["scale",new q(new H)],["offset",new q(new H)],["domainMin",new q(null)],["domainMax",new q(null)]])}),this.tetrahedralInterpolation=t,this.inputColorSpace=s||xV.get(i),this.lut=n}get inputEncoding(){return this.inputColorSpace}set inputEncoding(n){this.inputColorSpace=n}getInputEncoding(){return this.inputColorSpace}setInputEncoding(n){this.inputColorSpace=n}getOutputEncoding(){return this.outputColorSpace}get lut(){return this.uniforms.get("lut").value}set lut(n){const e=this.defines,t=this.uniforms;if(this.lut!==n&&(t.get("lut").value=n,n!==null)){const i=n.image,s=this.tetrahedralInterpolation;if(e.clear(),e.set("LUT_SIZE",Math.min(i.width,i.height).toFixed(16)),e.set("LUT_TEXEL_WIDTH",(1/i.width).toFixed(16)),e.set("LUT_TEXEL_HEIGHT",(1/i.height).toFixed(16)),t.get("domainMin").value=null,t.get("domainMax").value=null,(n.type===wn||n.type===Cs)&&e.set("LUT_PRECISION_HIGH","1"),i.width>i.height?e.set("LUT_STRIP_HORIZONTAL","1"):n instanceof al&&e.set("LUT_3D","1"),n instanceof Fh){const r=n.domainMin,o=n.domainMax;(r.x!==0||r.y!==0||r.z!==0||o.x!==1||o.y!==1||o.z!==1)&&(e.set("CUSTOM_INPUT_DOMAIN","1"),t.get("domainMin").value=r.clone(),t.get("domainMax").value=o.clone())}this.tetrahedralInterpolation=s}}getLUT(){return this.lut}setLUT(n){this.lut=n}updateScaleOffset(){const n=this.lut;if(n!==null){const e=Math.min(n.image.width,n.image.height),t=this.uniforms.get("scale").value,i=this.uniforms.get("offset").value;if(this.tetrahedralInterpolation&&n instanceof al)if(this.defines.has("CUSTOM_INPUT_DOMAIN")){const s=n.domainMax.clone().sub(n.domainMin);t.setScalar(e-1).divide(s),i.copy(n.domainMin).negate().multiply(t)}else t.setScalar(e-1),i.setScalar(0);else if(this.defines.has("CUSTOM_INPUT_DOMAIN")){const s=n.domainMax.clone().sub(n.domainMin).multiplyScalar(e);t.setScalar(e-1).divide(s),i.copy(n.domainMin).negate().multiply(t).addScalar(1/(2*e))}else t.setScalar((e-1)/e),i.setScalar(1/(2*e))}}configureTetrahedralInterpolation(){const n=this.lut;n!==null&&(n.minFilter=je,n.magFilter=je,this.tetrahedralInterpolation&&(n instanceof al?(n.minFilter=pt,n.magFilter=pt):console.warn("Tetrahedral interpolation requires a 3D texture")),n.source===void 0&&(n.needsUpdate=!0))}get tetrahedralInterpolation(){return this.defines.has("TETRAHEDRAL_INTERPOLATION")}set tetrahedralInterpolation(n){n?this.defines.set("TETRAHEDRAL_INTERPOLATION","1"):this.defines.delete("TETRAHEDRAL_INTERPOLATION"),this.configureTetrahedralInterpolation(),this.updateScaleOffset(),this.setChanged()}setTetrahedralInterpolationEnabled(n){this.tetrahedralInterpolation=n}},_D=`uniform lowp sampler2D edgeTexture;uniform lowp sampler2D maskTexture;uniform vec3 visibleEdgeColor;uniform vec3 hiddenEdgeColor;uniform float pulse;uniform float edgeStrength; #ifdef USE_PATTERN uniform lowp sampler2D patternTexture;varying vec2 vUvPattern; #endif @@ -4056,7 +4056,7 @@ outputColor=vec4(color,alpha); #else outputColor=vec4(color,max(alpha,inputColor.a)); #endif -}`,zD="uniform float patternScale;varying vec2 vUvPattern;void mainSupport(const in vec2 uv){vUvPattern=uv*vec2(aspect,1.0)*patternScale;}",LD=class extends li{constructor(n,e,{blendFunction:t=It.SCREEN,patternTexture:i=null,patternScale:s=1,edgeStrength:r=1,pulseSpeed:o=0,visibleEdgeColor:a=16777215,hiddenEdgeColor:l=2230538,kernelSize:c=dc.VERY_SMALL,blur:u=!1,xRay:C=!0,multisampling:d=0,resolutionScale:h=.5,width:m=Jt.AUTO_SIZE,height:v=Jt.AUTO_SIZE,resolutionX:y=m,resolutionY:A=v}={}){super("OutlineEffect",KD,{uniforms:new Map([["maskTexture",new q(null)],["edgeTexture",new q(null)],["edgeStrength",new q(r)],["visibleEdgeColor",new q(new Re(a))],["hiddenEdgeColor",new q(new Re(l))],["pulse",new q(1)],["patternScale",new q(s)],["patternTexture",new q(null)]])}),this.blendMode.addEventListener("change",S=>{this.blendMode.blendFunction===It.ALPHA?this.defines.set("ALPHA","1"):this.defines.delete("ALPHA"),this.setChanged()}),this.blendMode.blendFunction=t,this.patternTexture=i,this.xRay=C,this.scene=n,this.camera=e,this.renderTargetMask=new Rt(1,1),this.renderTargetMask.samples=d,this.renderTargetMask.texture.name="Outline.Mask",this.uniforms.get("maskTexture").value=this.renderTargetMask.texture,this.renderTargetOutline=new Rt(1,1,{depthBuffer:!1}),this.renderTargetOutline.texture.name="Outline.Edges",this.uniforms.get("edgeTexture").value=this.renderTargetOutline.texture,this.clearPass=new hc,this.clearPass.overrideClearColor=new Re(0),this.clearPass.overrideClearAlpha=1,this.depthPass=new hy(n,e),this.maskPass=new Ac(n,e,new EE(this.depthPass.texture,e));const b=this.maskPass.clearPass;b.overrideClearColor=new Re(16777215),b.overrideClearAlpha=1,this.blurPass=new QA({resolutionScale:h,resolutionX:y,resolutionY:A,kernelSize:c}),this.blurPass.enabled=u;const f=this.blurPass.resolution;f.addEventListener("change",S=>this.setSize(f.baseWidth,f.baseHeight)),this.outlinePass=new ls(new Ck);const B=this.outlinePass.fullscreenMaterial;B.inputBuffer=this.renderTargetMask.texture,this.time=0,this.active=!1,this.selection=new Ay,this.selection.layer=10,this.pulseSpeed=o}set mainScene(n){this.scene=n,this.depthPass.mainScene=n,this.maskPass.mainScene=n}set mainCamera(n){this.camera=n,this.depthPass.mainCamera=n,this.maskPass.mainCamera=n,this.maskPass.overrideMaterial.copyCameraSettings(n)}get resolution(){return this.blurPass.resolution}getResolution(){return this.blurPass.getResolution()}get multisampling(){return this.renderTargetMask.samples}set multisampling(n){this.renderTargetMask.samples=n,this.renderTargetMask.dispose()}get patternScale(){return this.uniforms.get("patternScale").value}set patternScale(n){this.uniforms.get("patternScale").value=n}get edgeStrength(){return this.uniforms.get("edgeStrength").value}set edgeStrength(n){this.uniforms.get("edgeStrength").value=n}get visibleEdgeColor(){return this.uniforms.get("visibleEdgeColor").value}set visibleEdgeColor(n){this.uniforms.get("visibleEdgeColor").value=n}get hiddenEdgeColor(){return this.uniforms.get("hiddenEdgeColor").value}set hiddenEdgeColor(n){this.uniforms.get("hiddenEdgeColor").value=n}getBlurPass(){return this.blurPass}getSelection(){return this.selection}getPulseSpeed(){return this.pulseSpeed}setPulseSpeed(n){this.pulseSpeed=n}get width(){return this.resolution.width}set width(n){this.resolution.preferredWidth=n}get height(){return this.resolution.height}set height(n){this.resolution.preferredHeight=n}get selectionLayer(){return this.selection.layer}set selectionLayer(n){this.selection.layer=n}get dithering(){return this.blurPass.dithering}set dithering(n){this.blurPass.dithering=n}get kernelSize(){return this.blurPass.kernelSize}set kernelSize(n){this.blurPass.kernelSize=n}get blur(){return this.blurPass.enabled}set blur(n){this.blurPass.enabled=n}get xRay(){return this.defines.has("X_RAY")}set xRay(n){this.xRay!==n&&(n?this.defines.set("X_RAY","1"):this.defines.delete("X_RAY"),this.setChanged())}isXRayEnabled(){return this.xRay}setXRayEnabled(n){this.xRay=n}get patternTexture(){return this.uniforms.get("patternTexture").value}set patternTexture(n){n!==null?(n.wrapS=n.wrapT=hs,this.defines.set("USE_PATTERN","1"),this.setVertexShader(zD)):(this.defines.delete("USE_PATTERN"),this.setVertexShader(null)),this.uniforms.get("patternTexture").value=n,this.setChanged()}setPatternTexture(n){this.patternTexture=n}getResolutionScale(){return this.resolution.scale}setResolutionScale(n){this.resolution.scale=n}setSelection(n){return this.selection.set(n),this}clearSelection(){return this.selection.clear(),this}selectObject(n){return this.selection.add(n),this}deselectObject(n){return this.selection.delete(n),this}update(n,e,t){const i=this.scene,s=this.camera,r=this.selection,a=this.uniforms.get("pulse"),l=i.background,c=s.layers.mask;r.size>0?(i.background=null,a.value=1,this.pulseSpeed>0&&(a.value=Math.cos(this.time*this.pulseSpeed*10)*.375+.625),this.active=!0,this.time+=t,r.setVisible(!1),this.depthPass.render(n),r.setVisible(!0),s.layers.set(r.layer),this.maskPass.render(n,this.renderTargetMask),s.layers.mask=c,i.background=l,this.outlinePass.render(n,null,this.renderTargetOutline),this.blurPass.enabled&&this.blurPass.render(n,this.renderTargetOutline,this.renderTargetOutline)):this.active&&(this.clearPass.render(n,this.renderTargetOutline),this.active=!1)}setSize(n,e){this.blurPass.setSize(n,e),this.renderTargetMask.setSize(n,e);const t=this.resolution;t.setBaseSize(n,e);const i=t.width,s=t.height;this.depthPass.setSize(i,s),this.renderTargetOutline.setSize(i,s),this.outlinePass.fullscreenMaterial.setSize(i,s)}initialize(n,e,t){this.blurPass.initialize(n,e,rn),t!==void 0&&(this.depthPass.initialize(n,e,t),this.maskPass.initialize(n,e,t),this.outlinePass.initialize(n,e,t))}},TD="uniform bool active;uniform vec4 d;void mainUv(inout vec2 uv){if(active){uv=d.xy*(floor(uv*d.zw)+0.5);}}",ED=class extends li{constructor(n=30){super("PixelationEffect",TD,{uniforms:new Map([["active",new q(!1)],["d",new q(new Vt)]])}),this.resolution=new ne,this._granularity=0,this.granularity=n}get granularity(){return this._granularity}set granularity(n){let e=Math.floor(n);e%2>0&&(e+=1),this._granularity=e,this.uniforms.get("active").value=e>0,this.setSize(this.resolution.width,this.resolution.height)}getGranularity(){return this.granularity}setGranularity(n){this.granularity=n}setSize(n,e){const t=this.resolution;t.set(n,e);const i=this.granularity,s=i/t.x,r=i/t.y;this.uniforms.get("d").value.set(s,r,1/s,1/r)}};new H;new H;var kD=class extends bD{constructor(n,e,t){super(t),this.setAttributes(this.getAttributes()|qi.DEPTH),this.camera=e,this.depthPass=new hy(n,e),this.clearPass=new hc(!0,!1,!1),this.clearPass.overrideClearColor=new Re(0),this.depthMaskPass=new ls(new BV);const i=this.depthMaskMaterial;i.copyCameraSettings(e),i.depthBuffer1=this.depthPass.texture,i.depthPacking1=Xr,i.depthMode=ru,this.renderTargetMasked=new Rt(1,1,{depthBuffer:!1}),this.renderTargetMasked.texture.name="Bloom.Masked",this.selection=new Ay,this.selection.layer=11,this._inverted=!1,this._ignoreBackground=!1}set mainScene(n){this.depthPass.mainScene=n}set mainCamera(n){this.camera=n,this.depthPass.mainCamera=n,this.depthMaskMaterial.copyCameraSettings(n)}getSelection(){return this.selection}get depthMaskMaterial(){return this.depthMaskPass.fullscreenMaterial}get inverted(){return this._inverted}set inverted(n){this._inverted=n,this.depthMaskMaterial.depthMode=n?xA:ru}isInverted(){return this.inverted}setInverted(n){this.inverted=n}get ignoreBackground(){return this._ignoreBackground}set ignoreBackground(n){this._ignoreBackground=n,this.depthMaskMaterial.maxDepthStrategy=n?FI.DISCARD_MAX_DEPTH:FI.KEEP_MAX_DEPTH}isBackgroundDisabled(){return this.ignoreBackground}setBackgroundDisabled(n){this.ignoreBackground=n}setDepthTexture(n,e=Yn){this.depthMaskMaterial.depthBuffer0=n,this.depthMaskMaterial.depthPacking0=e}update(n,e,t){const i=this.camera,s=this.selection,r=this.inverted;let o=e;if(this.ignoreBackground||!r||s.size>0){const a=i.layers.mask;i.layers.set(s.layer),this.depthPass.render(n),i.layers.mask=a,o=this.renderTargetMasked,this.clearPass.render(n,o),this.depthMaskPass.render(n,e,o)}super.update(n,o,t)}setSize(n,e){super.setSize(n,e),this.renderTargetMasked.setSize(n,e),this.depthPass.setSize(n,e)}initialize(n,e,t){super.initialize(n,e,t),this.clearPass.initialize(n,e,t),this.depthPass.initialize(n,e,t),this.depthMaskPass.initialize(n,e,t),t!==void 0&&(this.renderTargetMasked.texture.type=t,po(n)===_t&&kn(this.renderTargetMasked.texture,_t))}},yw="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAQCAYAAACm53kpAAAAeElEQVRYR+2XSwqAMAxEJ168ePEqwRSKhIIiuHjJqiU0gWE+1CQdApcVAMUAuARaMGCX1MIL/Ow13++9lW2s3mW9MWvsnWc/2fvGygwPAN4E8QzAA4CXAB6AHjG4JTHYI1ey3pcx6FHnEfhLDOIBKAmUBK6/ANUDTlROXAHd9EC1AAAAAElFTkSuQmCC",Gw="data:image/png;base64,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",DD="uniform sampler2D weightMap;varying vec2 vOffset0;varying vec2 vOffset1;void movec(const in bvec2 c,inout vec2 variable,const in vec2 value){if(c.x){variable.x=value.x;}if(c.y){variable.y=value.y;}}void movec(const in bvec4 c,inout vec4 variable,const in vec4 value){movec(c.xy,variable.xy,value.xy);movec(c.zw,variable.zw,value.zw);}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec4 a;a.x=texture2D(weightMap,vOffset0).a;a.y=texture2D(weightMap,vOffset1).g;a.wz=texture2D(weightMap,uv).rb;vec4 color=inputColor;if(dot(a,vec4(1.0))>=1e-5){bool h=max(a.x,a.z)>max(a.y,a.w);vec4 blendingOffset=vec4(0.0,a.y,0.0,a.w);vec2 blendingWeight=a.yw;movec(bvec4(h),blendingOffset,vec4(a.x,0.0,a.z,0.0));movec(bvec2(h),blendingWeight,a.xz);blendingWeight/=dot(blendingWeight,vec2(1.0));vec4 blendingCoord=blendingOffset*vec4(texelSize,-texelSize)+uv.xyxy;color=blendingWeight.x*texture2D(inputBuffer,blendingCoord.xy);color+=blendingWeight.y*texture2D(inputBuffer,blendingCoord.zw);}outputColor=color;}",UD="varying vec2 vOffset0;varying vec2 vOffset1;void mainSupport(const in vec2 uv){vOffset0=uv+texelSize*vec2(1.0,0.0);vOffset1=uv+texelSize*vec2(0.0,1.0);}",PD=class extends li{constructor({blendFunction:n=It.SRC,preset:e=lI.MEDIUM,edgeDetectionMode:t=yV.COLOR,predicationMode:i=HE.DISABLED}={}){super("SMAAEffect",DD,{vertexShader:UD,blendFunction:n,attributes:qi.CONVOLUTION|qi.DEPTH,uniforms:new Map([["weightMap",new q(null)]])});let s,r;arguments.length>1&&(s=arguments[0],r=arguments[1],arguments.length>2&&(e=arguments[2]),arguments.length>3&&(t=arguments[3])),this.renderTargetEdges=new Rt(1,1,{depthBuffer:!1}),this.renderTargetEdges.texture.name="SMAA.Edges",this.renderTargetWeights=this.renderTargetEdges.clone(),this.renderTargetWeights.texture.name="SMAA.Weights",this.uniforms.get("weightMap").value=this.renderTargetWeights.texture,this.clearPass=new hc(!0,!1,!1),this.clearPass.overrideClearColor=new Re(0),this.clearPass.overrideClearAlpha=1,this.edgeDetectionPass=new ls(new tk),this.edgeDetectionMaterial.edgeDetectionMode=t,this.edgeDetectionMaterial.predicationMode=i,this.weightsPass=new ls(new Ak);const o=new PA;o.onLoad=()=>{const a=new qt(s);a.name="SMAA.Search",a.magFilter=pt,a.minFilter=pt,a.generateMipmaps=!1,a.needsUpdate=!0,a.flipY=!0,this.weightsMaterial.searchTexture=a;const l=new qt(r);l.name="SMAA.Area",l.magFilter=je,l.minFilter=je,l.generateMipmaps=!1,l.needsUpdate=!0,l.flipY=!1,this.weightsMaterial.areaTexture=l,this.dispatchEvent({type:"load"})},o.itemStart("search"),o.itemStart("area"),s!==void 0&&r!==void 0?(o.itemEnd("search"),o.itemEnd("area")):typeof Image<"u"&&(s=new Image,r=new Image,s.addEventListener("load",()=>o.itemEnd("search")),r.addEventListener("load",()=>o.itemEnd("area")),s.src=yw,r.src=Gw),this.applyPreset(e)}get edgesTexture(){return this.renderTargetEdges.texture}getEdgesTexture(){return this.edgesTexture}get weightsTexture(){return this.renderTargetWeights.texture}getWeightsTexture(){return this.weightsTexture}get edgeDetectionMaterial(){return this.edgeDetectionPass.fullscreenMaterial}get colorEdgesMaterial(){return this.edgeDetectionMaterial}getEdgeDetectionMaterial(){return this.edgeDetectionMaterial}get weightsMaterial(){return this.weightsPass.fullscreenMaterial}getWeightsMaterial(){return this.weightsMaterial}setEdgeDetectionThreshold(n){this.edgeDetectionMaterial.edgeDetectionThreshold=n}setOrthogonalSearchSteps(n){this.weightsMaterial.orthogonalSearchSteps=n}applyPreset(n){const e=this.edgeDetectionMaterial,t=this.weightsMaterial;switch(n){case lI.LOW:e.edgeDetectionThreshold=.15,t.orthogonalSearchSteps=4,t.diagonalDetection=!1,t.cornerDetection=!1;break;case lI.MEDIUM:e.edgeDetectionThreshold=.1,t.orthogonalSearchSteps=8,t.diagonalDetection=!1,t.cornerDetection=!1;break;case lI.HIGH:e.edgeDetectionThreshold=.1,t.orthogonalSearchSteps=16,t.diagonalSearchSteps=8,t.cornerRounding=25,t.diagonalDetection=!0,t.cornerDetection=!0;break;case lI.ULTRA:e.edgeDetectionThreshold=.05,t.orthogonalSearchSteps=32,t.diagonalSearchSteps=16,t.cornerRounding=25,t.diagonalDetection=!0,t.cornerDetection=!0;break}}setDepthTexture(n,e=Yn){this.edgeDetectionMaterial.depthBuffer=n,this.edgeDetectionMaterial.depthPacking=e}update(n,e,t){this.clearPass.render(n,this.renderTargetEdges),this.edgeDetectionPass.render(n,e,this.renderTargetEdges),this.weightsPass.render(n,this.renderTargetEdges,this.renderTargetWeights)}setSize(n,e){this.edgeDetectionMaterial.setSize(n,e),this.weightsMaterial.setSize(n,e),this.renderTargetEdges.setSize(n,e),this.renderTargetWeights.setSize(n,e)}dispose(){const{searchTexture:n,areaTexture:e}=this.weightsMaterial;n!==null&&e!==null&&(n.dispose(),e.dispose()),super.dispose()}static get searchImageDataURL(){return yw}static get areaImageDataURL(){return Gw}},_D=`uniform lowp sampler2D aoBuffer;uniform float luminanceInfluence;uniform float intensity; +}`,JD="uniform float patternScale;varying vec2 vUvPattern;void mainSupport(const in vec2 uv){vUvPattern=uv*vec2(aspect,1.0)*patternScale;}",OD=class extends gi{constructor(n,e,{blendFunction:t=It.SCREEN,patternTexture:i=null,patternScale:s=1,edgeStrength:r=1,pulseSpeed:o=0,visibleEdgeColor:a=16777215,hiddenEdgeColor:l=2230538,kernelSize:c=pc.VERY_SMALL,blur:u=!1,xRay:C=!0,multisampling:d=0,resolutionScale:h=.5,width:m=Jt.AUTO_SIZE,height:v=Jt.AUTO_SIZE,resolutionX:y=m,resolutionY:A=v}={}){super("OutlineEffect",_D,{uniforms:new Map([["maskTexture",new q(null)],["edgeTexture",new q(null)],["edgeStrength",new q(r)],["visibleEdgeColor",new q(new Re(a))],["hiddenEdgeColor",new q(new Re(l))],["pulse",new q(1)],["patternScale",new q(s)],["patternTexture",new q(null)]])}),this.blendMode.addEventListener("change",S=>{this.blendMode.blendFunction===It.ALPHA?this.defines.set("ALPHA","1"):this.defines.delete("ALPHA"),this.setChanged()}),this.blendMode.blendFunction=t,this.patternTexture=i,this.xRay=C,this.scene=n,this.camera=e,this.renderTargetMask=new Wt(1,1),this.renderTargetMask.samples=d,this.renderTargetMask.texture.name="Outline.Mask",this.uniforms.get("maskTexture").value=this.renderTargetMask.texture,this.renderTargetOutline=new Wt(1,1,{depthBuffer:!1}),this.renderTargetOutline.texture.name="Outline.Edges",this.uniforms.get("edgeTexture").value=this.renderTargetOutline.texture,this.clearPass=new mc,this.clearPass.overrideClearColor=new Re(0),this.clearPass.overrideClearAlpha=1,this.depthPass=new fy(n,e),this.maskPass=new fc(n,e,new jT(this.depthPass.texture,e));const b=this.maskPass.clearPass;b.overrideClearColor=new Re(16777215),b.overrideClearAlpha=1,this.blurPass=new ip({resolutionScale:h,resolutionX:y,resolutionY:A,kernelSize:c}),this.blurPass.enabled=u;const f=this.blurPass.resolution;f.addEventListener("change",S=>this.setSize(f.baseWidth,f.baseHeight)),this.outlinePass=new gs(new yk);const B=this.outlinePass.fullscreenMaterial;B.inputBuffer=this.renderTargetMask.texture,this.time=0,this.active=!1,this.selection=new by,this.selection.layer=10,this.pulseSpeed=o}set mainScene(n){this.scene=n,this.depthPass.mainScene=n,this.maskPass.mainScene=n}set mainCamera(n){this.camera=n,this.depthPass.mainCamera=n,this.maskPass.mainCamera=n,this.maskPass.overrideMaterial.copyCameraSettings(n)}get resolution(){return this.blurPass.resolution}getResolution(){return this.blurPass.getResolution()}get multisampling(){return this.renderTargetMask.samples}set multisampling(n){this.renderTargetMask.samples=n,this.renderTargetMask.dispose()}get patternScale(){return this.uniforms.get("patternScale").value}set patternScale(n){this.uniforms.get("patternScale").value=n}get edgeStrength(){return this.uniforms.get("edgeStrength").value}set edgeStrength(n){this.uniforms.get("edgeStrength").value=n}get visibleEdgeColor(){return this.uniforms.get("visibleEdgeColor").value}set visibleEdgeColor(n){this.uniforms.get("visibleEdgeColor").value=n}get hiddenEdgeColor(){return this.uniforms.get("hiddenEdgeColor").value}set hiddenEdgeColor(n){this.uniforms.get("hiddenEdgeColor").value=n}getBlurPass(){return this.blurPass}getSelection(){return this.selection}getPulseSpeed(){return this.pulseSpeed}setPulseSpeed(n){this.pulseSpeed=n}get width(){return this.resolution.width}set width(n){this.resolution.preferredWidth=n}get height(){return this.resolution.height}set height(n){this.resolution.preferredHeight=n}get selectionLayer(){return this.selection.layer}set selectionLayer(n){this.selection.layer=n}get dithering(){return this.blurPass.dithering}set dithering(n){this.blurPass.dithering=n}get kernelSize(){return this.blurPass.kernelSize}set kernelSize(n){this.blurPass.kernelSize=n}get blur(){return this.blurPass.enabled}set blur(n){this.blurPass.enabled=n}get xRay(){return this.defines.has("X_RAY")}set xRay(n){this.xRay!==n&&(n?this.defines.set("X_RAY","1"):this.defines.delete("X_RAY"),this.setChanged())}isXRayEnabled(){return this.xRay}setXRayEnabled(n){this.xRay=n}get patternTexture(){return this.uniforms.get("patternTexture").value}set patternTexture(n){n!==null?(n.wrapS=n.wrapT=As,this.defines.set("USE_PATTERN","1"),this.setVertexShader(JD)):(this.defines.delete("USE_PATTERN"),this.setVertexShader(null)),this.uniforms.get("patternTexture").value=n,this.setChanged()}setPatternTexture(n){this.patternTexture=n}getResolutionScale(){return this.resolution.scale}setResolutionScale(n){this.resolution.scale=n}setSelection(n){return this.selection.set(n),this}clearSelection(){return this.selection.clear(),this}selectObject(n){return this.selection.add(n),this}deselectObject(n){return this.selection.delete(n),this}update(n,e,t){const i=this.scene,s=this.camera,r=this.selection,a=this.uniforms.get("pulse"),l=i.background,c=s.layers.mask;r.size>0?(i.background=null,a.value=1,this.pulseSpeed>0&&(a.value=Math.cos(this.time*this.pulseSpeed*10)*.375+.625),this.active=!0,this.time+=t,r.setVisible(!1),this.depthPass.render(n),r.setVisible(!0),s.layers.set(r.layer),this.maskPass.render(n,this.renderTargetMask),s.layers.mask=c,i.background=l,this.outlinePass.render(n,null,this.renderTargetOutline),this.blurPass.enabled&&this.blurPass.render(n,this.renderTargetOutline,this.renderTargetOutline)):this.active&&(this.clearPass.render(n,this.renderTargetOutline),this.active=!1)}setSize(n,e){this.blurPass.setSize(n,e),this.renderTargetMask.setSize(n,e);const t=this.resolution;t.setBaseSize(n,e);const i=t.width,s=t.height;this.depthPass.setSize(i,s),this.renderTargetOutline.setSize(i,s),this.outlinePass.fullscreenMaterial.setSize(i,s)}initialize(n,e,t){this.blurPass.initialize(n,e,rn),t!==void 0&&(this.depthPass.initialize(n,e,t),this.maskPass.initialize(n,e,t),this.outlinePass.initialize(n,e,t))}},QD="uniform bool active;uniform vec4 d;void mainUv(inout vec2 uv){if(active){uv=d.xy*(floor(uv*d.zw)+0.5);}}",jD=class extends gi{constructor(n=30){super("PixelationEffect",QD,{uniforms:new Map([["active",new q(!1)],["d",new q(new Mt)]])}),this.resolution=new ne,this._granularity=0,this.granularity=n}get granularity(){return this._granularity}set granularity(n){let e=Math.floor(n);e%2>0&&(e+=1),this._granularity=e,this.uniforms.get("active").value=e>0,this.setSize(this.resolution.width,this.resolution.height)}getGranularity(){return this.granularity}setGranularity(n){this.granularity=n}setSize(n,e){const t=this.resolution;t.set(n,e);const i=this.granularity,s=i/t.x,r=i/t.y;this.uniforms.get("d").value.set(s,r,1/s,1/r)}};new H;new H;var qD=class extends RD{constructor(n,e,t){super(t),this.setAttributes(this.getAttributes()|$i.DEPTH),this.camera=e,this.depthPass=new fy(n,e),this.clearPass=new mc(!0,!1,!1),this.clearPass.overrideClearColor=new Re(0),this.depthMaskPass=new gs(new VV);const i=this.depthMaskMaterial;i.copyCameraSettings(e),i.depthBuffer1=this.depthPass.texture,i.depthPacking1=Xr,i.depthMode=lu,this.renderTargetMasked=new Wt(1,1,{depthBuffer:!1}),this.renderTargetMasked.texture.name="Bloom.Masked",this.selection=new by,this.selection.layer=11,this._inverted=!1,this._ignoreBackground=!1}set mainScene(n){this.depthPass.mainScene=n}set mainCamera(n){this.camera=n,this.depthPass.mainCamera=n,this.depthMaskMaterial.copyCameraSettings(n)}getSelection(){return this.selection}get depthMaskMaterial(){return this.depthMaskPass.fullscreenMaterial}get inverted(){return this._inverted}set inverted(n){this._inverted=n,this.depthMaskMaterial.depthMode=n?XA:lu}isInverted(){return this.inverted}setInverted(n){this.inverted=n}get ignoreBackground(){return this._ignoreBackground}set ignoreBackground(n){this._ignoreBackground=n,this.depthMaskMaterial.maxDepthStrategy=n?LI.DISCARD_MAX_DEPTH:LI.KEEP_MAX_DEPTH}isBackgroundDisabled(){return this.ignoreBackground}setBackgroundDisabled(n){this.ignoreBackground=n}setDepthTexture(n,e=Fn){this.depthMaskMaterial.depthBuffer0=n,this.depthMaskMaterial.depthPacking0=e}update(n,e,t){const i=this.camera,s=this.selection,r=this.inverted;let o=e;if(this.ignoreBackground||!r||s.size>0){const a=i.layers.mask;i.layers.set(s.layer),this.depthPass.render(n),i.layers.mask=a,o=this.renderTargetMasked,this.clearPass.render(n,o),this.depthMaskPass.render(n,e,o)}super.update(n,o,t)}setSize(n,e){super.setSize(n,e),this.renderTargetMasked.setSize(n,e),this.depthPass.setSize(n,e)}initialize(n,e,t){super.initialize(n,e,t),this.clearPass.initialize(n,e,t),this.depthPass.initialize(n,e,t),this.depthMaskPass.initialize(n,e,t),t!==void 0&&(this.renderTargetMasked.texture.type=t,po(n)===_t&&Dn(this.renderTargetMasked.texture,_t))}},xw="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAQCAYAAACm53kpAAAAeElEQVRYR+2XSwqAMAxEJ168ePEqwRSKhIIiuHjJqiU0gWE+1CQdApcVAMUAuARaMGCX1MIL/Ow13++9lW2s3mW9MWvsnWc/2fvGygwPAN4E8QzAA4CXAB6AHjG4JTHYI1ey3pcx6FHnEfhLDOIBKAmUBK6/ANUDTlROXAHd9EC1AAAAAElFTkSuQmCC",Rw="data:image/png;base64,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",$D="uniform sampler2D weightMap;varying vec2 vOffset0;varying vec2 vOffset1;void movec(const in bvec2 c,inout vec2 variable,const in vec2 value){if(c.x){variable.x=value.x;}if(c.y){variable.y=value.y;}}void movec(const in bvec4 c,inout vec4 variable,const in vec4 value){movec(c.xy,variable.xy,value.xy);movec(c.zw,variable.zw,value.zw);}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec4 a;a.x=texture2D(weightMap,vOffset0).a;a.y=texture2D(weightMap,vOffset1).g;a.wz=texture2D(weightMap,uv).rb;vec4 color=inputColor;if(dot(a,vec4(1.0))>=1e-5){bool h=max(a.x,a.z)>max(a.y,a.w);vec4 blendingOffset=vec4(0.0,a.y,0.0,a.w);vec2 blendingWeight=a.yw;movec(bvec4(h),blendingOffset,vec4(a.x,0.0,a.z,0.0));movec(bvec2(h),blendingWeight,a.xz);blendingWeight/=dot(blendingWeight,vec2(1.0));vec4 blendingCoord=blendingOffset*vec4(texelSize,-texelSize)+uv.xyxy;color=blendingWeight.x*texture2D(inputBuffer,blendingCoord.xy);color+=blendingWeight.y*texture2D(inputBuffer,blendingCoord.zw);}outputColor=color;}",eU="varying vec2 vOffset0;varying vec2 vOffset1;void mainSupport(const in vec2 uv){vOffset0=uv+texelSize*vec2(1.0,0.0);vOffset1=uv+texelSize*vec2(0.0,1.0);}",tU=class extends gi{constructor({blendFunction:n=It.SRC,preset:e=II.MEDIUM,edgeDetectionMode:t=RV.COLOR,predicationMode:i=kT.DISABLED}={}){super("SMAAEffect",$D,{vertexShader:eU,blendFunction:n,attributes:$i.CONVOLUTION|$i.DEPTH,uniforms:new Map([["weightMap",new q(null)]])});let s,r;arguments.length>1&&(s=arguments[0],r=arguments[1],arguments.length>2&&(e=arguments[2]),arguments.length>3&&(t=arguments[3])),this.renderTargetEdges=new Wt(1,1,{depthBuffer:!1}),this.renderTargetEdges.texture.name="SMAA.Edges",this.renderTargetWeights=this.renderTargetEdges.clone(),this.renderTargetWeights.texture.name="SMAA.Weights",this.uniforms.get("weightMap").value=this.renderTargetWeights.texture,this.clearPass=new mc(!0,!1,!1),this.clearPass.overrideClearColor=new Re(0),this.clearPass.overrideClearAlpha=1,this.edgeDetectionPass=new gs(new ck),this.edgeDetectionMaterial.edgeDetectionMode=t,this.edgeDetectionMaterial.predicationMode=i,this.weightsPass=new gs(new Zk);const o=new $A;o.onLoad=()=>{const a=new qt(s);a.name="SMAA.Search",a.magFilter=pt,a.minFilter=pt,a.generateMipmaps=!1,a.needsUpdate=!0,a.flipY=!0,this.weightsMaterial.searchTexture=a;const l=new qt(r);l.name="SMAA.Area",l.magFilter=je,l.minFilter=je,l.generateMipmaps=!1,l.needsUpdate=!0,l.flipY=!1,this.weightsMaterial.areaTexture=l,this.dispatchEvent({type:"load"})},o.itemStart("search"),o.itemStart("area"),s!==void 0&&r!==void 0?(o.itemEnd("search"),o.itemEnd("area")):typeof Image<"u"&&(s=new Image,r=new Image,s.addEventListener("load",()=>o.itemEnd("search")),r.addEventListener("load",()=>o.itemEnd("area")),s.src=xw,r.src=Rw),this.applyPreset(e)}get edgesTexture(){return this.renderTargetEdges.texture}getEdgesTexture(){return this.edgesTexture}get weightsTexture(){return this.renderTargetWeights.texture}getWeightsTexture(){return this.weightsTexture}get edgeDetectionMaterial(){return this.edgeDetectionPass.fullscreenMaterial}get colorEdgesMaterial(){return this.edgeDetectionMaterial}getEdgeDetectionMaterial(){return this.edgeDetectionMaterial}get weightsMaterial(){return this.weightsPass.fullscreenMaterial}getWeightsMaterial(){return this.weightsMaterial}setEdgeDetectionThreshold(n){this.edgeDetectionMaterial.edgeDetectionThreshold=n}setOrthogonalSearchSteps(n){this.weightsMaterial.orthogonalSearchSteps=n}applyPreset(n){const e=this.edgeDetectionMaterial,t=this.weightsMaterial;switch(n){case II.LOW:e.edgeDetectionThreshold=.15,t.orthogonalSearchSteps=4,t.diagonalDetection=!1,t.cornerDetection=!1;break;case II.MEDIUM:e.edgeDetectionThreshold=.1,t.orthogonalSearchSteps=8,t.diagonalDetection=!1,t.cornerDetection=!1;break;case II.HIGH:e.edgeDetectionThreshold=.1,t.orthogonalSearchSteps=16,t.diagonalSearchSteps=8,t.cornerRounding=25,t.diagonalDetection=!0,t.cornerDetection=!0;break;case II.ULTRA:e.edgeDetectionThreshold=.05,t.orthogonalSearchSteps=32,t.diagonalSearchSteps=16,t.cornerRounding=25,t.diagonalDetection=!0,t.cornerDetection=!0;break}}setDepthTexture(n,e=Fn){this.edgeDetectionMaterial.depthBuffer=n,this.edgeDetectionMaterial.depthPacking=e}update(n,e,t){this.clearPass.render(n,this.renderTargetEdges),this.edgeDetectionPass.render(n,e,this.renderTargetEdges),this.weightsPass.render(n,this.renderTargetEdges,this.renderTargetWeights)}setSize(n,e){this.edgeDetectionMaterial.setSize(n,e),this.weightsMaterial.setSize(n,e),this.renderTargetEdges.setSize(n,e),this.renderTargetWeights.setSize(n,e)}dispose(){const{searchTexture:n,areaTexture:e}=this.weightsMaterial;n!==null&&e!==null&&(n.dispose(),e.dispose()),super.dispose()}static get searchImageDataURL(){return xw}static get areaImageDataURL(){return Rw}},nU=`uniform lowp sampler2D aoBuffer;uniform float luminanceInfluence;uniform float intensity; #if THREE_REVISION < 143 #define luminance(v) linearToRelativeLuminance(v) #endif @@ -4082,7 +4082,7 @@ outputColor=vec4(1.0-ao*(1.0-color),inputColor.a); #else outputColor=vec4(vec3(1.0-ao),inputColor.a); #endif -}`,Bw=64,JD=class extends li{constructor(n,e,{blendFunction:t=It.MULTIPLY,samples:i=9,rings:s=7,normalDepthBuffer:r=null,depthAwareUpsampling:o=!0,worldDistanceThreshold:a,worldDistanceFalloff:l,worldProximityThreshold:c,worldProximityFalloff:u,distanceThreshold:C=.97,distanceFalloff:d=.03,rangeThreshold:h=5e-4,rangeFalloff:m=.001,minRadiusScale:v=.1,luminanceInfluence:y=.7,radius:A=.1825,intensity:b=1,bias:f=.025,fade:B=.01,color:S=null,resolutionScale:x=1,width:R=Jt.AUTO_SIZE,height:M=Jt.AUTO_SIZE,resolutionX:Z=R,resolutionY:V=M}={}){super("SSAOEffect",_D,{blendFunction:t,attributes:qi.DEPTH,defines:new Map([["THRESHOLD","0.997"]]),uniforms:new Map([["aoBuffer",new q(null)],["normalDepthBuffer",new q(r)],["luminanceInfluence",new q(y)],["color",new q(null)],["intensity",new q(b)],["scale",new q(0)]])}),this.renderTarget=new Rt(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="AO.Target",this.uniforms.get("aoBuffer").value=this.renderTarget.texture;const N=this.resolution=new Jt(this,Z,V,x);N.addEventListener("change",$=>this.setSize(N.baseWidth,N.baseHeight)),this.camera=n,this.depthDownsamplingPass=new wV({normalBuffer:e,resolutionScale:x}),this.depthDownsamplingPass.enabled=r===null,this.ssaoPass=new ls(new fk(n));const D=new db(Bw,Bw,un);D.wrapS=D.wrapT=hs;const k=this.ssaoMaterial;k.normalBuffer=e,k.noiseTexture=D,k.minRadiusScale=v,k.samples=i,k.radius=A,k.rings=s,k.fade=B,k.bias=f,k.distanceThreshold=C,k.distanceFalloff=d,k.proximityThreshold=h,k.proximityFalloff=m,a!==void 0&&(k.worldDistanceThreshold=a),l!==void 0&&(k.worldDistanceFalloff=l),c!==void 0&&(k.worldProximityThreshold=c),u!==void 0&&(k.worldProximityFalloff=u),r!==null&&(this.ssaoMaterial.normalDepthBuffer=r,this.defines.set("NORMAL_DEPTH","1")),this.depthAwareUpsampling=o,this.color=S}set mainCamera(n){this.camera=n,this.ssaoMaterial.copyCameraSettings(n)}get normalBuffer(){return this.ssaoMaterial.normalBuffer}set normalBuffer(n){this.ssaoMaterial.normalBuffer=n,this.depthDownsamplingPass.fullscreenMaterial.normalBuffer=n}getResolution(){return this.resolution}get ssaoMaterial(){return this.ssaoPass.fullscreenMaterial}getSSAOMaterial(){return this.ssaoMaterial}get samples(){return this.ssaoMaterial.samples}set samples(n){this.ssaoMaterial.samples=n}get rings(){return this.ssaoMaterial.rings}set rings(n){this.ssaoMaterial.rings=n}get radius(){return this.ssaoMaterial.radius}set radius(n){this.ssaoMaterial.radius=n}get depthAwareUpsampling(){return this.defines.has("DEPTH_AWARE_UPSAMPLING")}set depthAwareUpsampling(n){this.depthAwareUpsampling!==n&&(n?this.defines.set("DEPTH_AWARE_UPSAMPLING","1"):this.defines.delete("DEPTH_AWARE_UPSAMPLING"),this.setChanged())}isDepthAwareUpsamplingEnabled(){return this.depthAwareUpsampling}setDepthAwareUpsamplingEnabled(n){this.depthAwareUpsampling=n}get distanceScaling(){return!0}set distanceScaling(n){}get color(){return this.uniforms.get("color").value}set color(n){const e=this.uniforms,t=this.defines;n!==null?t.has("COLORIZE")?e.get("color").value.set(n):(t.set("COLORIZE","1"),e.get("color").value=new Re(n),this.setChanged()):t.has("COLORIZE")&&(t.delete("COLORIZE"),e.get("color").value=null,this.setChanged())}get luminanceInfluence(){return this.uniforms.get("luminanceInfluence").value}set luminanceInfluence(n){this.uniforms.get("luminanceInfluence").value=n}get intensity(){return this.uniforms.get("intensity").value}set intensity(n){this.uniforms.get("intensity").value=n}getColor(){return this.color}setColor(n){this.color=n}setDistanceCutoff(n,e){this.ssaoMaterial.distanceThreshold=n,this.ssaoMaterial.distanceFalloff=e}setProximityCutoff(n,e){this.ssaoMaterial.proximityThreshold=n,this.ssaoMaterial.proximityFalloff=e}setDepthTexture(n,e=Yn){this.depthDownsamplingPass.setDepthTexture(n,e),this.ssaoMaterial.depthBuffer=n,this.ssaoMaterial.depthPacking=e}update(n,e,t){const i=this.renderTarget;this.depthDownsamplingPass.enabled&&this.depthDownsamplingPass.render(n),this.ssaoPass.render(n,null,i)}setSize(n,e){const t=this.resolution;t.setBaseSize(n,e);const i=t.width,s=t.height;this.ssaoMaterial.copyCameraSettings(this.camera),this.ssaoMaterial.setSize(i,s),this.renderTarget.setSize(i,s),this.depthDownsamplingPass.resolution.scale=t.scale,this.depthDownsamplingPass.setSize(n,e)}initialize(n,e,t){try{let i=this.uniforms.get("normalDepthBuffer").value;i===null&&(this.depthDownsamplingPass.initialize(n,e,t),i=this.depthDownsamplingPass.texture,this.uniforms.get("normalDepthBuffer").value=i,this.ssaoMaterial.normalDepthBuffer=i,this.defines.set("NORMAL_DEPTH","1"))}catch{this.depthDownsamplingPass.enabled=!1}}},OD=`#ifdef TEXTURE_PRECISION_HIGH +}`,Ww=64,iU=class extends gi{constructor(n,e,{blendFunction:t=It.MULTIPLY,samples:i=9,rings:s=7,normalDepthBuffer:r=null,depthAwareUpsampling:o=!0,worldDistanceThreshold:a,worldDistanceFalloff:l,worldProximityThreshold:c,worldProximityFalloff:u,distanceThreshold:C=.97,distanceFalloff:d=.03,rangeThreshold:h=5e-4,rangeFalloff:m=.001,minRadiusScale:v=.1,luminanceInfluence:y=.7,radius:A=.1825,intensity:b=1,bias:f=.025,fade:B=.01,color:S=null,resolutionScale:x=1,width:R=Jt.AUTO_SIZE,height:M=Jt.AUTO_SIZE,resolutionX:Z=R,resolutionY:V=M}={}){super("SSAOEffect",nU,{blendFunction:t,attributes:$i.DEPTH,defines:new Map([["THRESHOLD","0.997"]]),uniforms:new Map([["aoBuffer",new q(null)],["normalDepthBuffer",new q(r)],["luminanceInfluence",new q(y)],["color",new q(null)],["intensity",new q(b)],["scale",new q(0)]])}),this.renderTarget=new Wt(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="AO.Target",this.uniforms.get("aoBuffer").value=this.renderTarget.texture;const N=this.resolution=new Jt(this,Z,V,x);N.addEventListener("change",$=>this.setSize(N.baseWidth,N.baseHeight)),this.camera=n,this.depthDownsamplingPass=new NV({normalBuffer:e,resolutionScale:x}),this.depthDownsamplingPass.enabled=r===null,this.ssaoPass=new gs(new xk(n));const U=new mb(Ww,Ww,un);U.wrapS=U.wrapT=As;const D=this.ssaoMaterial;D.normalBuffer=e,D.noiseTexture=U,D.minRadiusScale=v,D.samples=i,D.radius=A,D.rings=s,D.fade=B,D.bias=f,D.distanceThreshold=C,D.distanceFalloff=d,D.proximityThreshold=h,D.proximityFalloff=m,a!==void 0&&(D.worldDistanceThreshold=a),l!==void 0&&(D.worldDistanceFalloff=l),c!==void 0&&(D.worldProximityThreshold=c),u!==void 0&&(D.worldProximityFalloff=u),r!==null&&(this.ssaoMaterial.normalDepthBuffer=r,this.defines.set("NORMAL_DEPTH","1")),this.depthAwareUpsampling=o,this.color=S}set mainCamera(n){this.camera=n,this.ssaoMaterial.copyCameraSettings(n)}get normalBuffer(){return this.ssaoMaterial.normalBuffer}set normalBuffer(n){this.ssaoMaterial.normalBuffer=n,this.depthDownsamplingPass.fullscreenMaterial.normalBuffer=n}getResolution(){return this.resolution}get ssaoMaterial(){return this.ssaoPass.fullscreenMaterial}getSSAOMaterial(){return this.ssaoMaterial}get samples(){return this.ssaoMaterial.samples}set samples(n){this.ssaoMaterial.samples=n}get rings(){return this.ssaoMaterial.rings}set rings(n){this.ssaoMaterial.rings=n}get radius(){return this.ssaoMaterial.radius}set radius(n){this.ssaoMaterial.radius=n}get depthAwareUpsampling(){return this.defines.has("DEPTH_AWARE_UPSAMPLING")}set depthAwareUpsampling(n){this.depthAwareUpsampling!==n&&(n?this.defines.set("DEPTH_AWARE_UPSAMPLING","1"):this.defines.delete("DEPTH_AWARE_UPSAMPLING"),this.setChanged())}isDepthAwareUpsamplingEnabled(){return this.depthAwareUpsampling}setDepthAwareUpsamplingEnabled(n){this.depthAwareUpsampling=n}get distanceScaling(){return!0}set distanceScaling(n){}get color(){return this.uniforms.get("color").value}set color(n){const e=this.uniforms,t=this.defines;n!==null?t.has("COLORIZE")?e.get("color").value.set(n):(t.set("COLORIZE","1"),e.get("color").value=new Re(n),this.setChanged()):t.has("COLORIZE")&&(t.delete("COLORIZE"),e.get("color").value=null,this.setChanged())}get luminanceInfluence(){return this.uniforms.get("luminanceInfluence").value}set luminanceInfluence(n){this.uniforms.get("luminanceInfluence").value=n}get intensity(){return this.uniforms.get("intensity").value}set intensity(n){this.uniforms.get("intensity").value=n}getColor(){return this.color}setColor(n){this.color=n}setDistanceCutoff(n,e){this.ssaoMaterial.distanceThreshold=n,this.ssaoMaterial.distanceFalloff=e}setProximityCutoff(n,e){this.ssaoMaterial.proximityThreshold=n,this.ssaoMaterial.proximityFalloff=e}setDepthTexture(n,e=Fn){this.depthDownsamplingPass.setDepthTexture(n,e),this.ssaoMaterial.depthBuffer=n,this.ssaoMaterial.depthPacking=e}update(n,e,t){const i=this.renderTarget;this.depthDownsamplingPass.enabled&&this.depthDownsamplingPass.render(n),this.ssaoPass.render(n,null,i)}setSize(n,e){const t=this.resolution;t.setBaseSize(n,e);const i=t.width,s=t.height;this.ssaoMaterial.copyCameraSettings(this.camera),this.ssaoMaterial.setSize(i,s),this.renderTarget.setSize(i,s),this.depthDownsamplingPass.resolution.scale=t.scale,this.depthDownsamplingPass.setSize(n,e)}initialize(n,e,t){try{let i=this.uniforms.get("normalDepthBuffer").value;i===null&&(this.depthDownsamplingPass.initialize(n,e,t),i=this.depthDownsamplingPass.texture,this.uniforms.get("normalDepthBuffer").value=i,this.ssaoMaterial.normalDepthBuffer=i,this.defines.set("NORMAL_DEPTH","1"))}catch{this.depthDownsamplingPass.enabled=!1}}},sU=`#ifdef TEXTURE_PRECISION_HIGH uniform mediump sampler2D map; #else uniform lowp sampler2D map; @@ -4093,7 +4093,7 @@ vec4 texel=texture2D(map,vUv2); #else vec4 texel=texture2D(map,uv); #endif -outputColor=TEXEL;}`,QD=`#ifdef ASPECT_CORRECTION +outputColor=TEXEL;}`,rU=`#ifdef ASPECT_CORRECTION uniform float scale; #else uniform mat3 uvTransform; @@ -4104,9 +4104,9 @@ vUv2=uv*vec2(aspect,1.0)*scale; #else vUv2=(uvTransform*vec3(uv,1.0)).xy; #endif -}`,jD=class extends li{constructor({blendFunction:n,texture:e=null,aspectCorrection:t=!1}={}){super("TextureEffect",OD,{blendFunction:n,defines:new Map([["TEXEL","texel"]]),uniforms:new Map([["map",new q(null)],["scale",new q(1)],["uvTransform",new q(null)]])}),this.texture=e,this.aspectCorrection=t}get texture(){return this.uniforms.get("map").value}set texture(n){const e=this.texture,t=this.uniforms,i=this.defines;e!==n&&(t.get("map").value=n,t.get("uvTransform").value=n.matrix,i.delete("TEXTURE_PRECISION_HIGH"),n!==null&&(n.matrixAutoUpdate?(i.set("UV_TRANSFORM","1"),this.setVertexShader(QD)):(i.delete("UV_TRANSFORM"),this.setVertexShader(null)),n.type!==rn&&i.set("TEXTURE_PRECISION_HIGH","1"),(e===null||e.type!==n.type||e.encoding!==n.encoding)&&this.setChanged()))}getTexture(){return this.texture}setTexture(n){this.texture=n}get aspectCorrection(){return this.defines.has("ASPECT_CORRECTION")}set aspectCorrection(n){this.aspectCorrection!==n&&(n?this.defines.set("ASPECT_CORRECTION","1"):this.defines.delete("ASPECT_CORRECTION"),this.setChanged())}get uvTransform(){const n=this.texture;return n!==null&&n.matrixAutoUpdate}set uvTransform(n){const e=this.texture;e!==null&&(e.matrixAutoUpdate=n)}setTextureSwizzleRGBA(n,e=n,t=n,i=n){const s="rgba";let r="";(n!==Ng.RED||e!==Ng.GREEN||t!==Ng.BLUE||i!==Ng.ALPHA)&&(r=[".",s[n],s[e],s[t],s[i]].join("")),this.defines.set("TEXEL","texel"+r),this.setChanged()}update(n,e,t){this.texture.matrixAutoUpdate&&this.texture.updateMatrix()}};let gI;function qD(){var n;if(gI!==void 0)return gI;try{let e;const t=document.createElement("canvas");return gI=!!(window.WebGL2RenderingContext&&(e=t.getContext("webgl2"))),e&&((n=e.getExtension("WEBGL_lose_context"))==null||n.loseContext()),gI}catch{return gI=!1}}var $D=Object.defineProperty,eU=(n,e,t)=>e in n?$D(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,Sf=(n,e,t)=>(eU(n,typeof e!="symbol"?e+"":e,t),t);class rh{constructor(e){Sf(this,"camera",new lc(-1,1,1,-1,0,1)),Sf(this,"geometry",new vl(2,2)),Sf(this,"mesh"),this.mesh=new En(this.geometry,e)}get material(){return this.mesh.material}set material(e){this.mesh.material=e}dispose(){this.mesh.geometry.dispose()}render(e){e.render(this.mesh,this.camera)}}function zI(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function hb(n,e){(e==null||e>n.length)&&(e=n.length);for(var t=0,i=new Array(e);tMath.PI&&(t-=Math.PI*2),t}function xV(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}var Rs=function n(e,t,i){var s=this;xV(this,n),zI(this,"dot2",function(r,o){return s.x*r+s.y*o}),zI(this,"dot3",function(r,o,a){return s.x*r+s.y*o+s.z*a}),this.x=e,this.y=t,this.z=i},gU=[new Rs(1,1,0),new Rs(-1,1,0),new Rs(1,-1,0),new Rs(-1,-1,0),new Rs(1,0,1),new Rs(-1,0,1),new Rs(1,0,-1),new Rs(-1,0,-1),new Rs(0,1,1),new Rs(0,-1,1),new Rs(0,1,-1),new Rs(0,-1,-1)],Zw=[151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208,89,18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180],ww=new Array(512),Sw=new Array(512),cU=function(e){e>0&&e<1&&(e*=65536),e=Math.floor(e),e<256&&(e|=e<<8);for(var t=0;t<256;t++){var i;t&1?i=Zw[t]^e&255:i=Zw[t]^e>>8&255,ww[t]=ww[t+256]=i,Sw[t]=Sw[t+256]=gU[i%12]}};cU(0);function IU(n){if(typeof n=="number")n=Math.abs(n);else if(typeof n=="string"){var e=n;n=0;for(var t=0;t1&&arguments[1]!==void 0?arguments[1]:.01,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1/(2*Math.PI);return i/Math.atan(1/t)*Math.atan(Math.sin(2*Math.PI*e*s)/t)},RV=function(e){return 1/(1+e+.48*e*e+.235*e*e*e)};function Dn(n,e,t){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:.25,s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:.01,r=arguments.length>5&&arguments[5]!==void 0?arguments[5]:1/0,o=arguments.length>6&&arguments[6]!==void 0?arguments[6]:RV,a=arguments.length>7&&arguments[7]!==void 0?arguments[7]:.001,l="velocity_"+e;if(n.__damp===void 0&&(n.__damp={}),n.__damp[l]===void 0&&(n.__damp[l]=0),Math.abs(n[e]-t)<=a)return n[e]=t,!1;i=Math.max(1e-4,i);var c=2/i,u=o(c*s),C=n[e]-t,d=t,h=r*i;C=Math.min(Math.max(C,-h),h),t=n[e]-C;var m=(n.__damp[l]+c*C)*s;n.__damp[l]=(n.__damp[l]-c*m)*u;var v=t+(C+m)*u;return d-n[e]>0==v>d&&(v=d,n.__damp[l]=(v-d)/s),n[e]=v,!0}function kg(n,e,t,i,s,r,o,a){return Dn(n,e,n[e]+lU(n[e],t),i,s,r,o,a)}var cI=new ne,Rw,Ww;function dU(n,e,t,i,s,r,o){return typeof e=="number"?cI.setScalar(e):Array.isArray(e)?cI.set(e[0],e[1]):cI.copy(e),Rw=Dn(n,"x",cI.x,t,i,s,r,o),Ww=Dn(n,"y",cI.y,t,i,s,r,o),Rw||Ww}var Ig=new H,Vw,Mw,Nw;function Ab(n,e,t,i,s,r,o){return typeof e=="number"?Ig.setScalar(e):Array.isArray(e)?Ig.set(e[0],e[1],e[2]):Ig.copy(e),Vw=Dn(n,"x",Ig.x,t,i,s,r,o),Mw=Dn(n,"y",Ig.y,t,i,s,r,o),Nw=Dn(n,"z",Ig.z,t,i,s,r,o),Vw||Mw||Nw}var Fa=new Vt,Hw,Xw,Yw,Fw;function hU(n,e,t,i,s,r,o){return typeof e=="number"?Fa.setScalar(e):Array.isArray(e)?Fa.set(e[0],e[1],e[2],e[3]):Fa.copy(e),Hw=Dn(n,"x",Fa.x,t,i,s,r,o),Xw=Dn(n,"y",Fa.y,t,i,s,r,o),Yw=Dn(n,"z",Fa.z,t,i,s,r,o),Fw=Dn(n,"w",Fa.w,t,i,s,r,o),Hw||Xw||Yw||Fw}var II=new bl,Kw,zw,Lw;function AU(n,e,t,i,s,r,o){return Array.isArray(e)?II.set(e[0],e[1],e[2],e[3]):II.copy(e),Kw=kg(n,"x",II.x,t,i,s,r,o),zw=kg(n,"y",II.y,t,i,s,r,o),Lw=kg(n,"z",II.z,t,i,s,r,o),Kw||zw||Lw}var ug=new Re,Tw,Ew,kw;function pU(n,e,t,i,s,r,o){return e instanceof Re?ug.copy(e):Array.isArray(e)?ug.setRGB(e[0],e[1],e[2]):ug.set(e),Tw=Dn(n,"r",ug.r,t,i,s,r,o),Ew=Dn(n,"g",ug.g,t,i,s,r,o),kw=Dn(n,"b",ug.b,t,i,s,r,o),Tw||Ew||kw}var tr=new xn,$r=new Vt,Dw=new Vt,uI=new Vt,Uw,Pw,_w,Jw;function WV(n,e,t,i,s,r,o){var a=n;Array.isArray(e)?tr.set(e[0],e[1],e[2],e[3]):tr.copy(e);var l=n.dot(tr)>0?1:-1;return tr.x*=l,tr.y*=l,tr.z*=l,tr.w*=l,Uw=Dn(n,"x",tr.x,t,i,s,r,o),Pw=Dn(n,"y",tr.y,t,i,s,r,o),_w=Dn(n,"z",tr.z,t,i,s,r,o),Jw=Dn(n,"w",tr.w,t,i,s,r,o),$r.set(n.x,n.y,n.z,n.w).normalize(),Dw.set(a.__damp.velocity_x,a.__damp.velocity_y,a.__damp.velocity_z,a.__damp.velocity_w),uI.copy($r).multiplyScalar(Dw.dot($r)/$r.dot($r)),a.__damp.velocity_x-=uI.x,a.__damp.velocity_y-=uI.y,a.__damp.velocity_z-=uI.z,a.__damp.velocity_w-=uI.w,n.set($r.x,$r.y,$r.z,$r.w),Uw||Pw||_w||Jw}var CI=new GW,Ow,Qw,jw;function mU(n,e,t,i,s,r,o){return Array.isArray(e)?CI.set(e[0],e[1],e[2]):CI.copy(e),Ow=Dn(n,"radius",CI.radius,t,i,s,r,o),Qw=kg(n,"phi",CI.phi,t,i,s,r,o),jw=kg(n,"theta",CI.theta,t,i,s,r,o),Ow||Qw||jw}var oh=new Fe,qw=new H,$w=new xn,eS=new H,tS,nS,iS;function fU(n,e,t,i,s,r,o){var a=n;return a.__damp===void 0&&(a.__damp={position:new H,rotation:new xn,scale:new H},n.decompose(a.__damp.position,a.__damp.rotation,a.__damp.scale)),Array.isArray(e)?oh.set.apply(oh,rU(e)):oh.copy(e),oh.decompose(qw,$w,eS),tS=Ab(a.__damp.position,qw,t,i,s,r,o),nS=WV(a.__damp.rotation,$w,t,i,s,r,o),iS=Ab(a.__damp.scale,eS,t,i,s,r,o),n.compose(a.__damp.position,a.__damp.rotation,a.__damp.scale),tS||nS||iS}var bU=Object.freeze({__proto__:null,rsqw:CU,exp:RV,damp:Dn,dampAngle:kg,damp2:dU,damp3:Ab,damp4:hU,dampE:AU,dampC:pU,dampQ:WV,dampS:mU,dampM:fU});function pb(){return pb=Object.assign?Object.assign.bind():function(n){for(var e=1;ee in n?lU(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,Vf=(n,e,t)=>(gU(n,typeof e!="symbol"?e+"":e,t),t);class Ih{constructor(e){Vf(this,"camera",new Ic(-1,1,1,-1,0,1)),Vf(this,"geometry",new yl(2,2)),Vf(this,"mesh"),this.mesh=new kn(this.geometry,e)}get material(){return this.mesh.material}set material(e){this.mesh.material=e}dispose(){this.mesh.geometry.dispose()}render(e){e.render(this.mesh,this.camera)}}function TI(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function fb(n,e){(e==null||e>n.length)&&(e=n.length);for(var t=0,i=new Array(e);tMath.PI&&(t-=Math.PI*2),t}function XV(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}var Ws=function n(e,t,i){var s=this;XV(this,n),TI(this,"dot2",function(r,o){return s.x*r+s.y*o}),TI(this,"dot3",function(r,o,a){return s.x*r+s.y*o+s.z*a}),this.x=e,this.y=t,this.z=i},mU=[new Ws(1,1,0),new Ws(-1,1,0),new Ws(1,-1,0),new Ws(-1,-1,0),new Ws(1,0,1),new Ws(-1,0,1),new Ws(1,0,-1),new Ws(-1,0,-1),new Ws(0,1,1),new Ws(0,-1,1),new Ws(0,1,-1),new Ws(0,-1,-1)],Vw=[151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208,89,18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180],Mw=new Array(512),Nw=new Array(512),fU=function(e){e>0&&e<1&&(e*=65536),e=Math.floor(e),e<256&&(e|=e<<8);for(var t=0;t<256;t++){var i;t&1?i=Vw[t]^e&255:i=Vw[t]^e>>8&255,Mw[t]=Mw[t+256]=i,Nw[t]=Nw[t+256]=mU[i%12]}};fU(0);function bU(n){if(typeof n=="number")n=Math.abs(n);else if(typeof n=="string"){var e=n;n=0;for(var t=0;t1&&arguments[1]!==void 0?arguments[1]:.01,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1/(2*Math.PI);return i/Math.atan(1/t)*Math.atan(Math.sin(2*Math.PI*e*s)/t)},YV=function(e){return 1/(1+e+.48*e*e+.235*e*e*e)};function Un(n,e,t){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:.25,s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:.01,r=arguments.length>5&&arguments[5]!==void 0?arguments[5]:1/0,o=arguments.length>6&&arguments[6]!==void 0?arguments[6]:YV,a=arguments.length>7&&arguments[7]!==void 0?arguments[7]:.001,l="velocity_"+e;if(n.__damp===void 0&&(n.__damp={}),n.__damp[l]===void 0&&(n.__damp[l]=0),Math.abs(n[e]-t)<=a)return n[e]=t,!1;i=Math.max(1e-4,i);var c=2/i,u=o(c*s),C=n[e]-t,d=t,h=r*i;C=Math.min(Math.max(C,-h),h),t=n[e]-C;var m=(n.__damp[l]+c*C)*s;n.__damp[l]=(n.__damp[l]-c*m)*u;var v=t+(C+m)*u;return d-n[e]>0==v>d&&(v=d,n.__damp[l]=(v-d)/s),n[e]=v,!0}function Pg(n,e,t,i,s,r,o,a){return Un(n,e,n[e]+pU(n[e],t),i,s,r,o,a)}var CI=new ne,Xw,Yw;function GU(n,e,t,i,s,r,o){return typeof e=="number"?CI.setScalar(e):Array.isArray(e)?CI.set(e[0],e[1]):CI.copy(e),Xw=Un(n,"x",CI.x,t,i,s,r,o),Yw=Un(n,"y",CI.y,t,i,s,r,o),Xw||Yw}var dg=new H,Fw,Kw,zw;function bb(n,e,t,i,s,r,o){return typeof e=="number"?dg.setScalar(e):Array.isArray(e)?dg.set(e[0],e[1],e[2]):dg.copy(e),Fw=Un(n,"x",dg.x,t,i,s,r,o),Kw=Un(n,"y",dg.y,t,i,s,r,o),zw=Un(n,"z",dg.z,t,i,s,r,o),Fw||Kw||zw}var za=new Mt,Lw,Ew,Tw,kw;function BU(n,e,t,i,s,r,o){return typeof e=="number"?za.setScalar(e):Array.isArray(e)?za.set(e[0],e[1],e[2],e[3]):za.copy(e),Lw=Un(n,"x",za.x,t,i,s,r,o),Ew=Un(n,"y",za.y,t,i,s,r,o),Tw=Un(n,"z",za.z,t,i,s,r,o),kw=Un(n,"w",za.w,t,i,s,r,o),Lw||Ew||Tw||kw}var dI=new vl,Dw,Uw,Pw;function ZU(n,e,t,i,s,r,o){return Array.isArray(e)?dI.set(e[0],e[1],e[2],e[3]):dI.copy(e),Dw=Pg(n,"x",dI.x,t,i,s,r,o),Uw=Pg(n,"y",dI.y,t,i,s,r,o),Pw=Pg(n,"z",dI.z,t,i,s,r,o),Dw||Uw||Pw}var hg=new Re,_w,Jw,Ow;function wU(n,e,t,i,s,r,o){return e instanceof Re?hg.copy(e):Array.isArray(e)?hg.setRGB(e[0],e[1],e[2]):hg.set(e),_w=Un(n,"r",hg.r,t,i,s,r,o),Jw=Un(n,"g",hg.g,t,i,s,r,o),Ow=Un(n,"b",hg.b,t,i,s,r,o),_w||Jw||Ow}var nr=new xn,$r=new Mt,Qw=new Mt,hI=new Mt,jw,qw,$w,eS;function FV(n,e,t,i,s,r,o){var a=n;Array.isArray(e)?nr.set(e[0],e[1],e[2],e[3]):nr.copy(e);var l=n.dot(nr)>0?1:-1;return nr.x*=l,nr.y*=l,nr.z*=l,nr.w*=l,jw=Un(n,"x",nr.x,t,i,s,r,o),qw=Un(n,"y",nr.y,t,i,s,r,o),$w=Un(n,"z",nr.z,t,i,s,r,o),eS=Un(n,"w",nr.w,t,i,s,r,o),$r.set(n.x,n.y,n.z,n.w).normalize(),Qw.set(a.__damp.velocity_x,a.__damp.velocity_y,a.__damp.velocity_z,a.__damp.velocity_w),hI.copy($r).multiplyScalar(Qw.dot($r)/$r.dot($r)),a.__damp.velocity_x-=hI.x,a.__damp.velocity_y-=hI.y,a.__damp.velocity_z-=hI.z,a.__damp.velocity_w-=hI.w,n.set($r.x,$r.y,$r.z,$r.w),jw||qw||$w||eS}var AI=new WW,tS,nS,iS;function SU(n,e,t,i,s,r,o){return Array.isArray(e)?AI.set(e[0],e[1],e[2]):AI.copy(e),tS=Un(n,"radius",AI.radius,t,i,s,r,o),nS=Pg(n,"phi",AI.phi,t,i,s,r,o),iS=Pg(n,"theta",AI.theta,t,i,s,r,o),tS||nS||iS}var uh=new Fe,sS=new H,rS=new xn,oS=new H,aS,lS,gS;function xU(n,e,t,i,s,r,o){var a=n;return a.__damp===void 0&&(a.__damp={position:new H,rotation:new xn,scale:new H},n.decompose(a.__damp.position,a.__damp.rotation,a.__damp.scale)),Array.isArray(e)?uh.set.apply(uh,dU(e)):uh.copy(e),uh.decompose(sS,rS,oS),aS=bb(a.__damp.position,sS,t,i,s,r,o),lS=FV(a.__damp.rotation,rS,t,i,s,r,o),gS=bb(a.__damp.scale,oS,t,i,s,r,o),n.compose(a.__damp.position,a.__damp.rotation,a.__damp.scale),aS||lS||gS}var RU=Object.freeze({__proto__:null,rsqw:yU,exp:YV,damp:Un,dampAngle:Pg,damp2:GU,damp3:bb,damp4:BU,dampE:ZU,dampC:wU,dampQ:FV,dampS:SU,dampM:xU});function vb(){return vb=Object.assign?Object.assign.bind():function(n){for(var e=1;e0.0){g=sqrt(g);float A=(g-c)/(g+c);float B=(c*(g+c)-1.0)/(c*(g-c)+1.0);result=0.5*A*A*(1.0+B*B);}else{result=1.0;}return result;}float fresnel_dielectric(vec3 Incoming,vec3 Normal,float eta){float cosine=dot(Incoming,Normal);return min(1.0,5.0*fresnel_dielectric_cos(cosine,eta));}`,GU=`#define GLSLIFY 1 +vec3 hash(vec3 a){a=fract(a*Scale);a+=dot(a,a.yxz+K);return fract((a.xxy+a.yxx)*a.zyx);}float fresnel_dielectric_cos(float cosi,float eta){float c=abs(cosi);float g=eta*eta-1.0+c*c;float result;if(g>0.0){g=sqrt(g);float A=(g-c)/(g+c);float B=(c*(g+c)-1.0)/(c*(g-c)+1.0);result=0.5*A*A*(1.0+B*B);}else{result=1.0;}return result;}float fresnel_dielectric(vec3 Incoming,vec3 Normal,float eta){float cosine=dot(Incoming,Normal);return min(1.0,5.0*fresnel_dielectric_cos(cosine,eta));}`,MU=`#define GLSLIFY 1 #define INV_EULER 0.36787944117144233 alpha=velocityDisocclusion0.5; #ifdef boxBlur if(needsBlur)inputColor=boxBlurredColor; #endif -if(alpha==1.0){outputColor=accumulatedColor;}else{float m=mix(alpha,1.0,blend);if(needsBlur)m=0.0;outputColor=accumulatedColor*m+inputColor*(1.0-m);}`;class BU extends Zt{constructor(){super({type:"MRTMaterial",defines:{USE_UV:"",TEMPORAL_RESOLVE:""},uniforms:{opacity:new q(1),normalMap:new q(null),normalScale:new q(new ne(1,1)),uvTransform:new q(new xt),roughness:new q(1),roughnessMap:new q(null)},vertexShader:` +if(alpha==1.0){outputColor=accumulatedColor;}else{float m=mix(alpha,1.0,blend);if(needsBlur)m=0.0;outputColor=accumulatedColor*m+inputColor*(1.0-m);}`;class NU extends Zt{constructor(){super({type:"MRTMaterial",defines:{USE_UV:"",TEMPORAL_RESOLVE:""},uniforms:{opacity:new q(1),normalMap:new q(null),normalScale:new q(new ne(1,1)),uvTransform:new q(new xt),roughness:new q(1),roughnessMap:new q(null)},vertexShader:` #ifdef USE_MRT varying vec2 vHighPrecisionZW; #endif @@ -4241,8 +4241,8 @@ if(alpha==1.0){outputColor=accumulatedColor;}else{float m=mix(alpha,1.0,blend);i gl_FragColor = vec4(normalColor, roughnessFactor); #endif } - `,toneMapped:!1}),this.normalMapType=fo,this.normalScale=new ne(1,1),Object.defineProperty(this,"glslVersion",{get(){return"USE_MRT"in this.defines?rA:null},set(e){}})}}var ZU=`#define GLSLIFY 1 -varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}`,wU=`#define GLSLIFY 1 + `,toneMapped:!1}),this.normalMapType=fo,this.normalScale=new ne(1,1),Object.defineProperty(this,"glslVersion",{get(){return"USE_MRT"in this.defines?IA:null},set(e){}})}}var HU=`#define GLSLIFY 1 +varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}`,XU=`#define GLSLIFY 1 varying vec2 vUv;uniform sampler2D inputTexture;uniform sampler2D accumulatedTexture;uniform sampler2D normalTexture;uniform sampler2D depthTexture;uniform sampler2D envMap;uniform mat4 _projectionMatrix;uniform mat4 _inverseProjectionMatrix;uniform mat4 cameraMatrixWorld;uniform float cameraNear;uniform float cameraFar;uniform float rayDistance;uniform float intensity;uniform float maxDepthDifference;uniform float roughnessFade;uniform float maxRoughness;uniform float fade;uniform float thickness;uniform float ior;uniform float samples;uniform float jitter;uniform float jitterRoughness; #define INVALID_RAY_COORDS vec2(-1.0); #define EARLY_OUT_COLOR vec4(0.0, 0.0, 0.0, 1.0) @@ -4283,8 +4283,8 @@ vec3 reflectVec=reflect(-viewDir,normal);reflectVec=normalize(mix(reflectVec,nor #else return vec3(0.0); #endif -}`;class SU extends Zt{constructor(){super({type:"ReflectionsMaterial",uniforms:{inputTexture:new q(null),accumulatedTexture:new q(null),normalTexture:new q(null),depthTexture:new q(null),_projectionMatrix:new q(new Fe),_inverseProjectionMatrix:new q(new Fe),cameraMatrixWorld:new q(new Fe),cameraNear:new q(0),cameraFar:new q(0),rayDistance:new q(0),intensity:new q(0),roughnessFade:new q(0),fade:new q(0),thickness:new q(0),ior:new q(0),maxDepthDifference:new q(0),jitter:new q(0),jitterRoughness:new q(0),maxRoughness:new q(0),samples:new q(0),envMap:new q(null),envMapPosition:new q(new H),envMapSize:new q(new H),viewMatrix:new q(new Fe)},defines:{steps:20,refineSteps:5,CUBEUV_TEXEL_WIDTH:0,CUBEUV_TEXEL_HEIGHT:0,CUBEUV_MAX_MIP:0,vWorldPosition:"worldPos"},fragmentShader:wU.replace("#include ",VV),vertexShader:ZU,toneMapped:!1,depthWrite:!1,depthTest:!1})}}const MV=n=>{const e=[n],t=[];for(;e.length!==0;){const i=e.shift();i.material&&t.push(i);for(const s of i.children)s.visible&&e.push(s)}return t},xU=n=>{const e=n.envMapCubeUVHeight;if(e===null)return null;const t=Math.log2(e)-2,i=1/e;return{texelWidth:1/(3*Math.max(Math.pow(2,t),7*16)),texelHeight:i,maxMip:t}},sS=(n,e,t)=>{n.uniforms.envMap.value=e;const i=xU({envMapCubeUVHeight:t});n.defines.ENVMAP_TYPE_CUBE_UV="",n.defines.CUBEUV_TEXEL_WIDTH=i.texelWidth,n.defines.CUBEUV_TEXEL_HEIGHT=i.texelHeight,n.defines.CUBEUV_MAX_MIP=i.maxMip+".0",n.needsUpdate=!0},RU=()=>{try{const n=document.createElement("canvas");return!!(window.WebGL2RenderingContext&&n.getContext("webgl2"))}catch{return!1}};class WU extends Rn{constructor(e,t={}){super("ReflectionsPass"),this.ssrEffect=void 0,this.cachedMaterials=new WeakMap,this.USE_MRT=!1,this.webgl1DepthPass=null,this.visibleMeshes=[],this.ssrEffect=e,this._scene=e._scene,this._camera=e._camera,this.fullscreenMaterial=new SU,e._camera.isPerspectiveCamera&&(this.fullscreenMaterial.defines.PERSPECTIVE_CAMERA="");const i=t.width||typeof window<"u"?window.innerWidth:2e3,s=t.height||typeof window<"u"?window.innerHeight:1e3;this.renderTarget=new Rt(i,s,{minFilter:je,magFilter:je,type:us,depthBuffer:!1}),this.renderPass=new Ac(this._scene,this._camera),this.USE_MRT=RU(),this.USE_MRT?(this.gBuffersRenderTarget=new v1(i,s,2,{minFilter:je,magFilter:je}),this.normalTexture=this.gBuffersRenderTarget.texture[0],this.depthTexture=this.gBuffersRenderTarget.texture[1]):(this.webgl1DepthPass=new hy(this._scene,this._camera),this.webgl1DepthPass.renderTarget.minFilter=je,this.webgl1DepthPass.renderTarget.magFilter=je,this.webgl1DepthPass.renderTarget.texture.minFilter=je,this.webgl1DepthPass.renderTarget.texture.magFilter=je,this.webgl1DepthPass.setSize(typeof window<"u"?window.innerWidth:2e3,typeof window<"u"?window.innerHeight:1e3),this.gBuffersRenderTarget=new Rt(i,s,{minFilter:je,magFilter:je}),this.normalTexture=this.gBuffersRenderTarget.texture,this.depthTexture=this.webgl1DepthPass.texture),this.fullscreenMaterial.uniforms.normalTexture.value=this.normalTexture,this.fullscreenMaterial.uniforms.depthTexture.value=this.depthTexture,this.fullscreenMaterial.uniforms.accumulatedTexture.value=this.ssrEffect.temporalResolvePass.accumulatedTexture,this.fullscreenMaterial.uniforms.cameraMatrixWorld.value=this._camera.matrixWorld,this.fullscreenMaterial.uniforms._projectionMatrix.value=this._camera.projectionMatrix,this.fullscreenMaterial.uniforms._inverseProjectionMatrix.value=this._camera.projectionMatrixInverse}setSize(e,t){this.renderTarget.setSize(e*this.ssrEffect.resolutionScale,t*this.ssrEffect.resolutionScale),this.gBuffersRenderTarget.setSize(e*this.ssrEffect.resolutionScale,t*this.ssrEffect.resolutionScale),this.fullscreenMaterial.uniforms.accumulatedTexture.value=this.ssrEffect.temporalResolvePass.accumulatedTexture,this.fullscreenMaterial.needsUpdate=!0}dispose(){this.renderTarget.dispose(),this.gBuffersRenderTarget.dispose(),this.renderPass.dispose(),this.USE_MRT||this.webgl1DepthPass.dispose(),this.fullscreenMaterial.dispose(),this.normalTexture=null,this.depthTexture=null,this.velocityTexture=null}keepMaterialMapUpdated(e,t,i,s){this.ssrEffect[s]?t[i]!==e[i]&&(e[i]=t[i],e.uniforms[i].value=t[i],t[i]?e.defines[s]="":delete e.defines[s],e.needsUpdate=!0):e[i]!==void 0&&(e[i]=void 0,e.uniforms[i].value=void 0,delete e.defines[s],e.needsUpdate=!0)}setMRTMaterialInScene(){this.visibleMeshes=MV(this._scene);for(const e of this.visibleMeshes)if(e.material){const t=e.material;let[i,s]=this.cachedMaterials.get(e)||[];if(t!==i){s&&s.dispose(),s=new BU,this.USE_MRT&&(s.defines.USE_MRT=""),s.normalScale=t.normalScale,s.uniforms.normalScale.value=t.normalScale;const r=t.map||t.normalMap||t.roughnessMap||t.metalnessMap;r&&(s.uniforms.uvTransform.value=r.matrix),this.cachedMaterials.set(e,[t,s])}this.keepMaterialMapUpdated(s,t,"normalMap","useNormalMap"),this.keepMaterialMapUpdated(s,t,"roughnessMap","useRoughnessMap"),s.uniforms.roughness.value=this.ssrEffect.selection.size===0||this.ssrEffect.selection.has(e)?t.roughness||0:1e11,e.material=s}}unsetMRTMaterialInScene(){for(const t of this.visibleMeshes){var e;if(((e=t.material)==null?void 0:e.type)==="MRTMaterial"){t.visible=!0;const[i]=this.cachedMaterials.get(t);t.material=i}}}render(e,t){this.setMRTMaterialInScene(),e.setRenderTarget(this.gBuffersRenderTarget),this.renderPass.render(e,this.gBuffersRenderTarget),this.unsetMRTMaterialInScene(),this.USE_MRT||this.webgl1DepthPass.renderPass.render(e,this.webgl1DepthPass.renderTarget),this.fullscreenMaterial.uniforms.inputTexture.value=t.texture,this.fullscreenMaterial.uniforms.samples.value=this.ssrEffect.temporalResolvePass.samples,this.fullscreenMaterial.uniforms.cameraNear.value=this._camera.near,this.fullscreenMaterial.uniforms.cameraFar.value=this._camera.far,this.fullscreenMaterial.uniforms.viewMatrix.value.copy(this._camera.matrixWorldInverse),e.setRenderTarget(this.renderTarget),e.render(this.scene,this.camera)}}const rS={intensity:1,exponent:1,distance:10,fade:0,roughnessFade:1,thickness:10,ior:1.45,maxRoughness:1,maxDepthDifference:10,blend:.9,correction:1,correctionRadius:1,blur:.5,blurKernel:1,blurSharpness:10,jitter:0,jitterRoughness:0,steps:20,refineSteps:5,missedRays:!0,useNormalMap:!0,useRoughnessMap:!0,resolutionScale:1,velocityResolutionScale:1};var VU=`#define GLSLIFY 1 -varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}`,MU=`#define GLSLIFY 1 +}`;class YU extends Zt{constructor(){super({type:"ReflectionsMaterial",uniforms:{inputTexture:new q(null),accumulatedTexture:new q(null),normalTexture:new q(null),depthTexture:new q(null),_projectionMatrix:new q(new Fe),_inverseProjectionMatrix:new q(new Fe),cameraMatrixWorld:new q(new Fe),cameraNear:new q(0),cameraFar:new q(0),rayDistance:new q(0),intensity:new q(0),roughnessFade:new q(0),fade:new q(0),thickness:new q(0),ior:new q(0),maxDepthDifference:new q(0),jitter:new q(0),jitterRoughness:new q(0),maxRoughness:new q(0),samples:new q(0),envMap:new q(null),envMapPosition:new q(new H),envMapSize:new q(new H),viewMatrix:new q(new Fe)},defines:{steps:20,refineSteps:5,CUBEUV_TEXEL_WIDTH:0,CUBEUV_TEXEL_HEIGHT:0,CUBEUV_MAX_MIP:0,vWorldPosition:"worldPos"},fragmentShader:XU.replace("#include ",KV),vertexShader:HU,toneMapped:!1,depthWrite:!1,depthTest:!1})}}const zV=n=>{const e=[n],t=[];for(;e.length!==0;){const i=e.shift();i.material&&t.push(i);for(const s of i.children)s.visible&&e.push(s)}return t},FU=n=>{const e=n.envMapCubeUVHeight;if(e===null)return null;const t=Math.log2(e)-2,i=1/e;return{texelWidth:1/(3*Math.max(Math.pow(2,t),7*16)),texelHeight:i,maxMip:t}},cS=(n,e,t)=>{n.uniforms.envMap.value=e;const i=FU({envMapCubeUVHeight:t});n.defines.ENVMAP_TYPE_CUBE_UV="",n.defines.CUBEUV_TEXEL_WIDTH=i.texelWidth,n.defines.CUBEUV_TEXEL_HEIGHT=i.texelHeight,n.defines.CUBEUV_MAX_MIP=i.maxMip+".0",n.needsUpdate=!0},KU=()=>{try{const n=document.createElement("canvas");return!!(window.WebGL2RenderingContext&&n.getContext("webgl2"))}catch{return!1}};class zU extends Rn{constructor(e,t={}){super("ReflectionsPass"),this.ssrEffect=void 0,this.cachedMaterials=new WeakMap,this.USE_MRT=!1,this.webgl1DepthPass=null,this.visibleMeshes=[],this.ssrEffect=e,this._scene=e._scene,this._camera=e._camera,this.fullscreenMaterial=new YU,e._camera.isPerspectiveCamera&&(this.fullscreenMaterial.defines.PERSPECTIVE_CAMERA="");const i=t.width||typeof window<"u"?window.innerWidth:2e3,s=t.height||typeof window<"u"?window.innerHeight:1e3;this.renderTarget=new Wt(i,s,{minFilter:je,magFilter:je,type:Cs,depthBuffer:!1}),this.renderPass=new fc(this._scene,this._camera),this.USE_MRT=KU(),this.USE_MRT?(this.gBuffersRenderTarget=new x1(i,s,2,{minFilter:je,magFilter:je}),this.normalTexture=this.gBuffersRenderTarget.texture[0],this.depthTexture=this.gBuffersRenderTarget.texture[1]):(this.webgl1DepthPass=new fy(this._scene,this._camera),this.webgl1DepthPass.renderTarget.minFilter=je,this.webgl1DepthPass.renderTarget.magFilter=je,this.webgl1DepthPass.renderTarget.texture.minFilter=je,this.webgl1DepthPass.renderTarget.texture.magFilter=je,this.webgl1DepthPass.setSize(typeof window<"u"?window.innerWidth:2e3,typeof window<"u"?window.innerHeight:1e3),this.gBuffersRenderTarget=new Wt(i,s,{minFilter:je,magFilter:je}),this.normalTexture=this.gBuffersRenderTarget.texture,this.depthTexture=this.webgl1DepthPass.texture),this.fullscreenMaterial.uniforms.normalTexture.value=this.normalTexture,this.fullscreenMaterial.uniforms.depthTexture.value=this.depthTexture,this.fullscreenMaterial.uniforms.accumulatedTexture.value=this.ssrEffect.temporalResolvePass.accumulatedTexture,this.fullscreenMaterial.uniforms.cameraMatrixWorld.value=this._camera.matrixWorld,this.fullscreenMaterial.uniforms._projectionMatrix.value=this._camera.projectionMatrix,this.fullscreenMaterial.uniforms._inverseProjectionMatrix.value=this._camera.projectionMatrixInverse}setSize(e,t){this.renderTarget.setSize(e*this.ssrEffect.resolutionScale,t*this.ssrEffect.resolutionScale),this.gBuffersRenderTarget.setSize(e*this.ssrEffect.resolutionScale,t*this.ssrEffect.resolutionScale),this.fullscreenMaterial.uniforms.accumulatedTexture.value=this.ssrEffect.temporalResolvePass.accumulatedTexture,this.fullscreenMaterial.needsUpdate=!0}dispose(){this.renderTarget.dispose(),this.gBuffersRenderTarget.dispose(),this.renderPass.dispose(),this.USE_MRT||this.webgl1DepthPass.dispose(),this.fullscreenMaterial.dispose(),this.normalTexture=null,this.depthTexture=null,this.velocityTexture=null}keepMaterialMapUpdated(e,t,i,s){this.ssrEffect[s]?t[i]!==e[i]&&(e[i]=t[i],e.uniforms[i].value=t[i],t[i]?e.defines[s]="":delete e.defines[s],e.needsUpdate=!0):e[i]!==void 0&&(e[i]=void 0,e.uniforms[i].value=void 0,delete e.defines[s],e.needsUpdate=!0)}setMRTMaterialInScene(){this.visibleMeshes=zV(this._scene);for(const e of this.visibleMeshes)if(e.material){const t=e.material;let[i,s]=this.cachedMaterials.get(e)||[];if(t!==i){s&&s.dispose(),s=new NU,this.USE_MRT&&(s.defines.USE_MRT=""),s.normalScale=t.normalScale,s.uniforms.normalScale.value=t.normalScale;const r=t.map||t.normalMap||t.roughnessMap||t.metalnessMap;r&&(s.uniforms.uvTransform.value=r.matrix),this.cachedMaterials.set(e,[t,s])}this.keepMaterialMapUpdated(s,t,"normalMap","useNormalMap"),this.keepMaterialMapUpdated(s,t,"roughnessMap","useRoughnessMap"),s.uniforms.roughness.value=this.ssrEffect.selection.size===0||this.ssrEffect.selection.has(e)?t.roughness||0:1e11,e.material=s}}unsetMRTMaterialInScene(){for(const t of this.visibleMeshes){var e;if(((e=t.material)==null?void 0:e.type)==="MRTMaterial"){t.visible=!0;const[i]=this.cachedMaterials.get(t);t.material=i}}}render(e,t){this.setMRTMaterialInScene(),e.setRenderTarget(this.gBuffersRenderTarget),this.renderPass.render(e,this.gBuffersRenderTarget),this.unsetMRTMaterialInScene(),this.USE_MRT||this.webgl1DepthPass.renderPass.render(e,this.webgl1DepthPass.renderTarget),this.fullscreenMaterial.uniforms.inputTexture.value=t.texture,this.fullscreenMaterial.uniforms.samples.value=this.ssrEffect.temporalResolvePass.samples,this.fullscreenMaterial.uniforms.cameraNear.value=this._camera.near,this.fullscreenMaterial.uniforms.cameraFar.value=this._camera.far,this.fullscreenMaterial.uniforms.viewMatrix.value.copy(this._camera.matrixWorldInverse),e.setRenderTarget(this.renderTarget),e.render(this.scene,this.camera)}}const IS={intensity:1,exponent:1,distance:10,fade:0,roughnessFade:1,thickness:10,ior:1.45,maxRoughness:1,maxDepthDifference:10,blend:.9,correction:1,correctionRadius:1,blur:.5,blurKernel:1,blurSharpness:10,jitter:0,jitterRoughness:0,steps:20,refineSteps:5,missedRays:!0,useNormalMap:!0,useRoughnessMap:!0,resolutionScale:1,velocityResolutionScale:1};var LU=`#define GLSLIFY 1 +varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}`,EU=`#define GLSLIFY 1 uniform sampler2D inputTexture;uniform sampler2D accumulatedTexture;uniform sampler2D velocityTexture;uniform sampler2D lastVelocityTexture;uniform float blend;uniform float correction;uniform float exponent;uniform float samples;uniform vec2 invTexSize;uniform mat4 curInverseProjectionMatrix;uniform mat4 curCameraMatrixWorld;uniform mat4 prevInverseProjectionMatrix;uniform mat4 prevCameraMatrixWorld;varying vec2 vUv; #define MAX_NEIGHBOR_DEPTH_DIFFERENCE 0.001 #define FLOAT_EPSILON 0.00001 @@ -4313,7 +4313,7 @@ accumulatedColor=inputColor; #endif }if(velocity.r>FLOAT_ONE_MINUS_EPSILON&&velocity.g>FLOAT_ONE_MINUS_EPSILON){alpha=0.0;velocityDisocclusion=1.0;}}else{accumulatedColor=transformColor(textureLod(accumulatedTexture,vUv,0.0).rgb);}vec3 outputColor=inputColor; #include -gl_FragColor=vec4(undoColorTransform(outputColor),alpha);}`;class NU extends Zt{constructor(e){const t=MU.replace("#include ",e);super({type:"TemporalResolveMaterial",uniforms:{inputTexture:new q(null),accumulatedTexture:new q(null),velocityTexture:new q(null),lastVelocityTexture:new q(null),samples:new q(1),blend:new q(.5),correction:new q(1),exponent:new q(1),invTexSize:new q(new ne)},defines:{correctionRadius:1},vertexShader:VU,fragmentShader:t})}}const HU=` +gl_FragColor=vec4(undoColorTransform(outputColor),alpha);}`;class TU extends Zt{constructor(e){const t=EU.replace("#include ",e);super({type:"TemporalResolveMaterial",uniforms:{inputTexture:new q(null),accumulatedTexture:new q(null),velocityTexture:new q(null),lastVelocityTexture:new q(null),samples:new q(1),blend:new q(.5),correction:new q(1),exponent:new q(1),invTexSize:new q(new ne)},defines:{correctionRadius:1},vertexShader:LU,fragmentShader:t})}}const kU=` #ifdef USE_SKINNING #ifdef BONE_TEXTURE uniform sampler2D prevBoneTexture; @@ -4339,7 +4339,7 @@ gl_FragColor=vec4(undoColorTransform(outputColor),alpha);}`;class NU extends Zt{ } #endif #endif -`,XU=` +`,DU=` vec3 transformed; // Get the normal @@ -4360,11 +4360,11 @@ gl_FragColor=vec4(undoColorTransform(outputColor),alpha);}`;class NU extends Zt{ prevPosition = prevVelocityMatrix * vec4( transformed, 1.0 ); gl_Position = newPosition; -`;class YU extends Zt{constructor(){super({uniforms:{prevVelocityMatrix:{value:new Fe},velocityMatrix:{value:new Fe},prevBoneTexture:{value:null},interpolateGeometry:{value:0},intensity:{value:1},boneTexture:{value:null},alphaTest:{value:0},map:{value:null},alphaMap:{value:null},opacity:{value:1}},vertexShader:` +`;class UU extends Zt{constructor(){super({uniforms:{prevVelocityMatrix:{value:new Fe},velocityMatrix:{value:new Fe},prevBoneTexture:{value:null},interpolateGeometry:{value:0},intensity:{value:1},boneTexture:{value:null},alphaTest:{value:0},map:{value:null},alphaMap:{value:null},opacity:{value:1}},vertexShader:` #define MAX_BONES 1024 ${tt.skinning_pars_vertex} - ${HU} + ${kU} uniform mat4 velocityMatrix; uniform mat4 prevVelocityMatrix; @@ -4375,7 +4375,7 @@ gl_FragColor=vec4(undoColorTransform(outputColor),alpha);}`;class NU extends Zt{ void main() { - ${XU} + ${DU} vHighPrecisionZW = gl_Position.zw; @@ -4400,7 +4400,7 @@ gl_FragColor=vec4(undoColorTransform(outputColor),alpha);}`;class NU extends Zt{ gl_FragColor = vec4( vel, 1. - fragCoordZ, 0. ); - }`}),this.isVelocityMaterial=!0}}const FU=new Re(0),KU=["visible","wireframe","side"];class zU extends Rn{constructor(e,t){var i,s;super("VelocityPass"),this.cachedMaterials=new WeakMap,this.lastCameraTransform={position:new H,quaternion:new xn},this.visibleMeshes=[],this.renderedMeshesThisFrame=0,this.renderedMeshesLastFrame=0,this._scene=e,this._camera=t,this.renderTarget=new Rt(((i=window)==null?void 0:i.innerWidth)||1e3,((s=window)==null?void 0:s.innerHeight)||1e3,{type:us})}setVelocityMaterialInScene(){this.renderedMeshesThisFrame=0,this.visibleMeshes=MV(this._scene);for(const i of this.visibleMeshes){var e;const s=i.material;let[r,o]=this.cachedMaterials.get(i)||[];if(s!==r){var t;o=new YU,o.lastMatrixWorld=new Fe,i.material=o,(t=i.skeleton)!=null&&t.boneTexture&&this.saveBoneTexture(i),this.cachedMaterials.set(i,[s,o])}if(o.uniforms.velocityMatrix.value.multiplyMatrices(this._camera.projectionMatrix,i.modelViewMatrix),i.userData.needsUpdatedReflections||s.map instanceof z1?("FULL_MOVEMENT"in o.defines||(o.needsUpdate=!0),o.defines.FULL_MOVEMENT=""):"FULL_MOVEMENT"in o.defines&&(delete o.defines.FULL_MOVEMENT,o.needsUpdate=!0),i.visible=this.cameraMovedThisFrame||!i.matrixWorld.equals(o.lastMatrixWorld)||i.skeleton||"FULL_MOVEMENT"in o.defines,i.material=o,!!i.visible){this.renderedMeshesThisFrame++;for(const a of KU)o[a]=s[a];(e=i.skeleton)!=null&&e.boneTexture&&(o.defines.USE_SKINNING="",o.defines.BONE_TEXTURE="",o.uniforms.boneTexture.value=i.skeleton.boneTexture)}}}saveBoneTexture(e){let t=e.material.uniforms.prevBoneTexture.value;if(t&&t.image.width===e.skeleton.boneTexture.width)t=e.material.uniforms.prevBoneTexture.value,t.image.data.set(e.skeleton.boneTexture.image.data);else{var i;(i=t)==null||i.dispose();const s=e.skeleton.boneTexture.image.data.slice(),r=e.skeleton.boneTexture.image.width;t=new Mr(s,r,r,un,wn),e.material.uniforms.prevBoneTexture.value=t,t.needsUpdate=!0}}unsetVelocityMaterialInScene(){for(const t of this.visibleMeshes)if(t.material.isVelocityMaterial){var e;t.visible=!0,t.material.lastMatrixWorld.copy(t.matrixWorld),t.material.uniforms.prevVelocityMatrix.value.multiplyMatrices(this._camera.projectionMatrix,t.modelViewMatrix),(e=t.skeleton)!=null&&e.boneTexture&&this.saveBoneTexture(t),t.material=this.cachedMaterials.get(t)[0]}}setSize(e,t){this.renderTarget.setSize(e,t)}renderVelocity(e){if(e.setRenderTarget(this.renderTarget),this.renderedMeshesThisFrame>0){const{background:t}=this._scene;this._scene.background=FU,e.render(this._scene,this._camera),this._scene.background=t}else e.clearColor()}checkCameraMoved(){const e=this.lastCameraTransform.position.distanceToSquared(this._camera.position),t=8*(1-this.lastCameraTransform.quaternion.dot(this._camera.quaternion));return e>1e-6||t>1e-6?(this.lastCameraTransform.position.copy(this._camera.position),this.lastCameraTransform.quaternion.copy(this._camera.quaternion),!0):!1}render(e){this.cameraMovedThisFrame=this.checkCameraMoved(),this.setVelocityMaterialInScene(),(this.renderedMeshesThisFrame>0||this.renderedMeshesLastFrame>0)&&this.renderVelocity(e),this.unsetVelocityMaterialInScene(),this.renderedMeshesLastFrame=this.renderedMeshesThisFrame}}const oS=new ne;class LU extends Rn{constructor(e,t,i,s={}){super("TemporalResolvePass"),this.velocityPass=null,this.velocityResolutionScale=1,this.samples=1,this.lastCameraTransform={position:new H,quaternion:new xn},this._scene=e,this._camera=t,this.renderTarget=new Rt(1,1,{minFilter:je,magFilter:je,type:us,depthBuffer:!1}),this.velocityPass=new zU(e,t),this.fullscreenMaterial=new NU(i),this.fullscreenMaterial.defines.correctionRadius=s.correctionRadius||1,s.dilation&&(this.fullscreenMaterial.defines.dilation=""),s.boxBlur&&(this.fullscreenMaterial.defines.boxBlur=""),this.setupFramebuffers(1,1),this.checkCanUseSharedVelocityTexture()}dispose(){this._scene.userData.velocityTexture===this.velocityPass.renderTarget.texture&&(delete this._scene.userData.velocityTexture,delete this._scene.userData.lastVelocityTexture),this.renderTarget.dispose(),this.accumulatedTexture.dispose(),this.fullscreenMaterial.dispose(),this.velocityPass.dispose()}setSize(e,t){this.renderTarget.setSize(e,t),this.velocityPass.setSize(e*this.velocityResolutionScale,t*this.velocityResolutionScale),this.velocityPass.renderTarget.texture.minFilter=this.velocityResolutionScale===1?pt:je,this.velocityPass.renderTarget.texture.magFilter=this.velocityResolutionScale===1?pt:je,this.velocityPass.renderTarget.texture.needsUpdate=!0,this.fullscreenMaterial.uniforms.invTexSize.value.set(1/e,1/t),this.setupFramebuffers(e,t)}setupFramebuffers(e,t){this.accumulatedTexture&&this.accumulatedTexture.dispose(),this.lastVelocityTexture&&this.lastVelocityTexture.dispose(),this.accumulatedTexture=new nb(e,t,un),this.accumulatedTexture.minFilter=je,this.accumulatedTexture.magFilter=je,this.accumulatedTexture.type=us,this.lastVelocityTexture=new nb(e*this.velocityResolutionScale,t*this.velocityResolutionScale,un),this.lastVelocityTexture.minFilter=this.velocityResolutionScale===1?pt:je,this.lastVelocityTexture.magFilter=this.velocityResolutionScale===1?pt:je,this.lastVelocityTexture.type=us,this.fullscreenMaterial.uniforms.accumulatedTexture.value=this.accumulatedTexture,this.fullscreenMaterial.uniforms.lastVelocityTexture.value=this.lastVelocityTexture,this.fullscreenMaterial.needsUpdate=!0}checkCanUseSharedVelocityTexture(){return this._scene.userData.velocityTexture&&this.velocityPass.renderTarget.texture!==this._scene.userData.velocityTexture?this.velocityPass.renderTarget.texture===this.fullscreenMaterial.uniforms.velocityTexture.value&&(this.fullscreenMaterial.uniforms.lastVelocityTexture.value=this._scene.userData.lastVelocityTexture,this.fullscreenMaterial.uniforms.velocityTexture.value=this._scene.userData.velocityTexture,this.fullscreenMaterial.needsUpdate=!0):this.velocityPass.renderTarget.texture!==this.fullscreenMaterial.uniforms.velocityTexture.value&&(this.fullscreenMaterial.uniforms.velocityTexture.value=this.velocityPass.renderTarget.texture,this.fullscreenMaterial.uniforms.lastVelocityTexture.value=this.lastVelocityTexture,this.fullscreenMaterial.needsUpdate=!0,this._scene.userData.velocityTexture||(this._scene.userData.velocityTexture=this.velocityPass.renderTarget.texture,this._scene.userData.lastVelocityTexture=this.lastVelocityTexture)),this.velocityPass.renderTarget.texture!==this.fullscreenMaterial.uniforms.velocityTexture.value}checkNeedsResample(){const e=this.lastCameraTransform.position.distanceToSquared(this._camera.position),t=8*(1-this.lastCameraTransform.quaternion.dot(this._camera.quaternion));(e>1e-6||t>1e-6)&&(this.samples=1,this.lastCameraTransform.position.copy(this._camera.position),this.lastCameraTransform.quaternion.copy(this._camera.quaternion))}render(e){this.samples++,this.checkNeedsResample(),this.fullscreenMaterial.uniforms.samples.value=this.samples,e.setRenderTarget(this.renderTarget),e.render(this.scene,this.camera),e.copyFramebufferToTexture(oS,this.accumulatedTexture),e.setRenderTarget(this.velocityPass.renderTarget),e.copyFramebufferToTexture(oS,this.lastVelocityTexture)}}const aS=function(e,t){let i=1,s=0;for(;e>0;)i/=t,s+=i*(e%t),e=~~(e/t);return s},TU=n=>{const e=[];let t=1;const i=t+n;for(;t0){const{background:t}=this._scene;this._scene.background=PU,e.render(this._scene,this._camera),this._scene.background=t}else e.clearColor()}checkCameraMoved(){const e=this.lastCameraTransform.position.distanceToSquared(this._camera.position),t=8*(1-this.lastCameraTransform.quaternion.dot(this._camera.quaternion));return e>1e-6||t>1e-6?(this.lastCameraTransform.position.copy(this._camera.position),this.lastCameraTransform.quaternion.copy(this._camera.quaternion),!0):!1}render(e){this.cameraMovedThisFrame=this.checkCameraMoved(),this.setVelocityMaterialInScene(),(this.renderedMeshesThisFrame>0||this.renderedMeshesLastFrame>0)&&this.renderVelocity(e),this.unsetVelocityMaterialInScene(),this.renderedMeshesLastFrame=this.renderedMeshesThisFrame}}const uS=new ne;class OU extends Rn{constructor(e,t,i,s={}){super("TemporalResolvePass"),this.velocityPass=null,this.velocityResolutionScale=1,this.samples=1,this.lastCameraTransform={position:new H,quaternion:new xn},this._scene=e,this._camera=t,this.renderTarget=new Wt(1,1,{minFilter:je,magFilter:je,type:Cs,depthBuffer:!1}),this.velocityPass=new JU(e,t),this.fullscreenMaterial=new TU(i),this.fullscreenMaterial.defines.correctionRadius=s.correctionRadius||1,s.dilation&&(this.fullscreenMaterial.defines.dilation=""),s.boxBlur&&(this.fullscreenMaterial.defines.boxBlur=""),this.setupFramebuffers(1,1),this.checkCanUseSharedVelocityTexture()}dispose(){this._scene.userData.velocityTexture===this.velocityPass.renderTarget.texture&&(delete this._scene.userData.velocityTexture,delete this._scene.userData.lastVelocityTexture),this.renderTarget.dispose(),this.accumulatedTexture.dispose(),this.fullscreenMaterial.dispose(),this.velocityPass.dispose()}setSize(e,t){this.renderTarget.setSize(e,t),this.velocityPass.setSize(e*this.velocityResolutionScale,t*this.velocityResolutionScale),this.velocityPass.renderTarget.texture.minFilter=this.velocityResolutionScale===1?pt:je,this.velocityPass.renderTarget.texture.magFilter=this.velocityResolutionScale===1?pt:je,this.velocityPass.renderTarget.texture.needsUpdate=!0,this.fullscreenMaterial.uniforms.invTexSize.value.set(1/e,1/t),this.setupFramebuffers(e,t)}setupFramebuffers(e,t){this.accumulatedTexture&&this.accumulatedTexture.dispose(),this.lastVelocityTexture&&this.lastVelocityTexture.dispose(),this.accumulatedTexture=new ob(e,t,un),this.accumulatedTexture.minFilter=je,this.accumulatedTexture.magFilter=je,this.accumulatedTexture.type=Cs,this.lastVelocityTexture=new ob(e*this.velocityResolutionScale,t*this.velocityResolutionScale,un),this.lastVelocityTexture.minFilter=this.velocityResolutionScale===1?pt:je,this.lastVelocityTexture.magFilter=this.velocityResolutionScale===1?pt:je,this.lastVelocityTexture.type=Cs,this.fullscreenMaterial.uniforms.accumulatedTexture.value=this.accumulatedTexture,this.fullscreenMaterial.uniforms.lastVelocityTexture.value=this.lastVelocityTexture,this.fullscreenMaterial.needsUpdate=!0}checkCanUseSharedVelocityTexture(){return this._scene.userData.velocityTexture&&this.velocityPass.renderTarget.texture!==this._scene.userData.velocityTexture?this.velocityPass.renderTarget.texture===this.fullscreenMaterial.uniforms.velocityTexture.value&&(this.fullscreenMaterial.uniforms.lastVelocityTexture.value=this._scene.userData.lastVelocityTexture,this.fullscreenMaterial.uniforms.velocityTexture.value=this._scene.userData.velocityTexture,this.fullscreenMaterial.needsUpdate=!0):this.velocityPass.renderTarget.texture!==this.fullscreenMaterial.uniforms.velocityTexture.value&&(this.fullscreenMaterial.uniforms.velocityTexture.value=this.velocityPass.renderTarget.texture,this.fullscreenMaterial.uniforms.lastVelocityTexture.value=this.lastVelocityTexture,this.fullscreenMaterial.needsUpdate=!0,this._scene.userData.velocityTexture||(this._scene.userData.velocityTexture=this.velocityPass.renderTarget.texture,this._scene.userData.lastVelocityTexture=this.lastVelocityTexture)),this.velocityPass.renderTarget.texture!==this.fullscreenMaterial.uniforms.velocityTexture.value}checkNeedsResample(){const e=this.lastCameraTransform.position.distanceToSquared(this._camera.position),t=8*(1-this.lastCameraTransform.quaternion.dot(this._camera.quaternion));(e>1e-6||t>1e-6)&&(this.samples=1,this.lastCameraTransform.position.copy(this._camera.position),this.lastCameraTransform.quaternion.copy(this._camera.quaternion))}render(e){this.samples++,this.checkNeedsResample(),this.fullscreenMaterial.uniforms.samples.value=this.samples,e.setRenderTarget(this.renderTarget),e.render(this.scene,this.camera),e.copyFramebufferToTexture(uS,this.accumulatedTexture),e.setRenderTarget(this.velocityPass.renderTarget),e.copyFramebufferToTexture(uS,this.lastVelocityTexture)}}const CS=function(e,t){let i=1,s=0;for(;e>0;)i/=t,s+=i*(e%t),e=~~(e/t);return s},QU=n=>{const e=[];let t=1;const i=t+n;for(;t",EU),n.fragmentShader=kU+` +`;function tP(n,e,t){n.defines.BOX_PROJECTED_ENV_MAP="",n.uniforms.envMapPosition={value:e},n.uniforms.envMapSize={value:t};const i=new RegExp(dS("vec3 worldNormal = inverseTransformDirection ( normal , viewMatrix ) ;").replaceAll(" ","\\s*"),"g"),s=new RegExp(dS("reflectVec = inverseTransformDirection ( reflectVec , viewMatrix ) ;").replaceAll(" ","\\s*"),"g");n.vertexShader=`varying vec3 vWorldPosition; +`+n.vertexShader.replace("#include ",jU),n.fragmentShader=qU+` `+n.fragmentShader.replace("#include ",tt.envmap_physical_pars_fragment).replace(i,`vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); - ${DU}`).replace(s,`reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); - ${UU}`)}const _U=yU.replace("#include ",VV).replace("#include ",vU),JU=["blur","blurSharpness","blurKernel"],OU=new NA(1);let ah;class QU extends li{constructor(e,t,i=rS){super("SSREffect",_U,{type:"FinalSSRMaterial",uniforms:new Map([["reflectionsTexture",new q(null)],["blur",new q(0)],["blurSharpness",new q(0)],["blurKernel",new q(0)]]),defines:new Map([["RENDER_MODE","0"]])}),this.haltonSequence=TU(1024),this.haltonIndex=0,this.selection=new Ay,this.lastSize=void 0,this.cubeCamera=new Xv(.001,1e3,OU),this.usingBoxProjectedEnvMap=!1,this._scene=e,this._camera=t,i=pb({},rS,i,{boxBlur:!0,dilation:!0}),this.temporalResolvePass=new LU(e,t,GU,i),this.uniforms.get("reflectionsTexture").value=this.temporalResolvePass.renderTarget.texture,this.reflectionsPass=new WU(this,i),this.temporalResolvePass.fullscreenMaterial.uniforms.inputTexture.value=this.reflectionsPass.renderTarget.texture,this.lastSize={width:i.width,height:i.height,resolutionScale:i.resolutionScale,velocityResolutionScale:i.velocityResolutionScale},this.setSize(i.width,i.height),this.makeOptionsReactive(i)}makeOptionsReactive(e){let t=!1;const i=this.reflectionsPass.fullscreenMaterial.uniforms,s=Object.keys(i);for(const r of Object.keys(e))Object.defineProperty(this,r,{get(){return e[r]},set(o){if(!(e[r]===o&&t))switch(e[r]=o,JU.includes(r)||this.setSize(this.lastSize.width,this.lastSize.height,!0),r){case"resolutionScale":this.setSize(this.lastSize.width,this.lastSize.height);break;case"velocityResolutionScale":this.temporalResolvePass.velocityResolutionScale=o,this.setSize(this.lastSize.width,this.lastSize.height,!0);break;case"blur":this.uniforms.get("blur").value=o;break;case"blurSharpness":this.uniforms.get("blurSharpness").value=o;break;case"blurKernel":this.uniforms.get("blurKernel").value=o;break;case"steps":this.reflectionsPass.fullscreenMaterial.defines.steps=parseInt(o),this.reflectionsPass.fullscreenMaterial.needsUpdate=t;break;case"refineSteps":this.reflectionsPass.fullscreenMaterial.defines.refineSteps=parseInt(o),this.reflectionsPass.fullscreenMaterial.needsUpdate=t;break;case"missedRays":o?this.reflectionsPass.fullscreenMaterial.defines.missedRays="":delete this.reflectionsPass.fullscreenMaterial.defines.missedRays,this.reflectionsPass.fullscreenMaterial.needsUpdate=t;break;case"correctionRadius":this.temporalResolvePass.fullscreenMaterial.defines.correctionRadius=Math.round(o),this.temporalResolvePass.fullscreenMaterial.needsUpdate=t;break;case"blend":this.temporalResolvePass.fullscreenMaterial.uniforms.blend.value=o;break;case"correction":this.temporalResolvePass.fullscreenMaterial.uniforms.correction.value=o;break;case"exponent":this.temporalResolvePass.fullscreenMaterial.uniforms.exponent.value=o;break;case"distance":i.rayDistance.value=o;default:s.includes(r)&&(i[r].value=o)}}}),this[r]=e[r];t=!0}setSize(e,t,i=!1){!i&&e===this.lastSize.width&&t===this.lastSize.height&&this.resolutionScale===this.lastSize.resolutionScale&&this.velocityResolutionScale===this.lastSize.velocityResolutionScale||(this.temporalResolvePass.setSize(e,t),this.reflectionsPass.setSize(e,t),this.lastSize={width:e,height:t,resolutionScale:this.resolutionScale,velocityResolutionScale:this.velocityResolutionScale})}generateBoxProjectedEnvMapFallback(e,t=new H,i=new H,s=512){this.cubeCamera.renderTarget.dispose(),this.cubeCamera.renderTarget=new NA(s),this.cubeCamera.position.copy(t),this.cubeCamera.updateMatrixWorld(),this.cubeCamera.update(e,this._scene),ah||(ah=new aA(e),ah.compileCubemapShader());const r=ah.fromCubemap(this.cubeCamera.renderTarget.texture).texture;r.minFilter=je,r.magFilter=je;const o=this.reflectionsPass.fullscreenMaterial;return PU(o,t,i),o.fragmentShader=o.fragmentShader.replace("vec3 worldPos","worldPos").replace("varying vec3 vWorldPosition;","vec3 worldPos;"),o.uniforms.envMapPosition.value.copy(t),o.uniforms.envMapSize.value.copy(i),sS(o,r,s),this.usingBoxProjectedEnvMap=!0,r}setIBLRadiance(e,t){this._scene.traverse(i=>{if(i.material){var s;const r=(s=t.properties.get(i.material))==null?void 0:s.uniforms;r&&"disableIBLRadiance"in r&&(r.disableIBLRadiance.value=e)}})}deleteBoxProjectedEnvMapFallback(){const e=this.reflectionsPass.fullscreenMaterial;e.uniforms.envMap.value=null,e.fragmentShader=e.fragmentShader.replace("worldPos = ","vec3 worldPos = "),delete e.defines.BOX_PROJECTED_ENV_MAP,e.needsUpdate=!0,this.usingBoxProjectedEnvMap=!1}dispose(){super.dispose(),this.reflectionsPass.dispose(),this.temporalResolvePass.dispose()}update(e,t){if(!this.usingBoxProjectedEnvMap&&this._scene.environment){const a=this.reflectionsPass.fullscreenMaterial;let l=null;if(this._scene.traverse(c=>{if(!l&&c.material&&!c.material.envMap){const u=e.properties.get(c.material);"envMap"in u&&u.envMap instanceof qt&&(l=u.envMap)}}),l){const c=this._scene.environment.image.height;sS(a,l,c)}}this.haltonIndex=(this.haltonIndex+1)%this.haltonSequence.length;const[i,s]=this.haltonSequence[this.haltonIndex],{width:r,height:o}=this.lastSize;this.temporalResolvePass.velocityPass.render(e),this._camera.setViewOffset&&this._camera.setViewOffset(r,o,i,s,r,o),this.reflectionsPass.render(e,t),this.temporalResolvePass.render(e),this._camera.clearViewOffset()}static patchDirectEnvIntensity(e=0){e===0?tt.envmap_physical_pars_fragment=tt.envmap_physical_pars_fragment.replace("vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {","vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { return vec3(0.0);"):tt.envmap_physical_pars_fragment=tt.envmap_physical_pars_fragment.replace("vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );","vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness ) * "+e.toFixed(5)+";")}}const py=U.createContext(null),ma=U.createContext(null),jU=Ji.memo(U.forwardRef(({children:n,camera:e,scene:t,resolutionScale:i,enabled:s=!0,renderPriority:r=1,autoClear:o=!0,depthBuffer:a,disableNormalPass:l,stencilBuffer:c,multisampling:u=8,frameBufferType:C=us},d)=>{const{gl:h,scene:m,camera:v,size:y}=$i(),A=t||m,b=e||v,[f,B,S]=U.useMemo(()=>{const Z=qD(),V=new Fk(h,{depthBuffer:a,stencilBuffer:c,multisampling:u>0&&Z?u:0,frameBufferType:C});V.addPass(new Ac(A,b));let N=null,D=null;return l||(D=new Hk(A,b),D.enabled=!1,V.addPass(D),i!==void 0&&Z&&(N=new wV({normalBuffer:D.texture,resolutionScale:i}),N.enabled=!1,V.addPass(N))),[V,D,N]},[b,h,a,c,u,C,A,l,i]);U.useEffect(()=>f?.setSize(y.width,y.height),[f,y]),_u((Z,V)=>{if(s){const N=h.autoClear;h.autoClear=o,c&&!o&&h.clearStencil(),f.render(V),h.autoClear=N}},s?r:0);const x=U.useRef(null),R=EL(x);U.useLayoutEffect(()=>{const Z=[];if(x.current&&R.current&&f){const V=R.current.objects;for(let N=0;N{for(const V of Z)f?.removePass(V);B&&(B.enabled=!1),S&&(S.enabled=!1)}},[f,n,b,B,S,R]);const M=U.useMemo(()=>({composer:f,normalPass:B,downSamplingPass:S,resolutionScale:i,camera:b,scene:A}),[f,B,S,i,b,A]);return U.useImperativeHandle(d,()=>f,[f]),E.jsx(ma.Provider,{value:M,children:E.jsx("group",{ref:x,children:n})})})),Po=n=>typeof n=="object"&&n!=null&&"current"in n?n.current:n;let qU=0;const gS=new WeakMap,$U=(n,e)=>Ji.forwardRef(function({blendFunction:i=e?.blendFunction,opacity:s=e?.opacity,...r},o){let a=gS.get(n);if(!a){const u=`@react-three/postprocessing/${n.name}-${qU++}`;MW({[u]:n}),gS.set(n,a=u)}const l=$i(u=>u.camera),c=Ji.useMemo(()=>{var u,C;return[...(u=e?.args)!=null?u:[],...(C=r.args)!=null?C:[{...e,...r}]]},[JSON.stringify(r)]);return E.jsx(a,{camera:l,"blendMode-blendFunction":i,"blendMode-opacity-value":s,...r,ref:o,args:c})}),vI=(n,e)=>{const t=n[e];return Ji.useMemo(()=>typeof t=="number"?new ne(t,t):t?new ne(...t):new ne,[t])},eP=U.forwardRef(function({target:e,depthTexture:t,...i},s){const r=$i(l=>l.invalidate),{camera:o}=U.useContext(ma),a=U.useMemo(()=>{const l=new SD(o,i),c=l.maskPass.getFullscreenMaterial();return c.maskFunction=KI.MULTIPLY_RGB_SET_ALPHA,l},[o,i]);return U.useLayoutEffect(()=>{if(e&&typeof e!="number"){const l=e instanceof H?new H().set(e.x,e.y,e.z):new H().set(e[0],e[1],e[2]);a.target=l}t&&a.setDepthTexture(t.texture,t.packing),r()},[e,t,a]),E.jsx("primitive",{ref:s,object:a,dispose:null})});U.forwardRef(({target:n=void 0,mouse:e=!1,debug:t=void 0,manual:i=!1,smoothTime:s=.25,...r},o)=>{const a=U.useRef(null),l=U.useRef(null),c=U.useRef(null),u=$i(({scene:S})=>S),C=$i(({pointer:S})=>S),{composer:d,camera:h}=U.useContext(ma),[m]=U.useState(()=>new xk),[v]=U.useState(()=>new ZV);U.useEffect(()=>(d.addPass(m),d.addPass(v),()=>{d.removePass(m),d.removePass(v)}),[d,m,v]),U.useEffect(()=>()=>{m.dispose(),v.dispose()},[m,v]);const[y]=U.useState(()=>new H(0,0,0)),[A]=U.useState(()=>new H(0,0,0)),b=U.useCallback(async(S,x)=>(A.x=S,A.y=x,A.z=await m.readDepth(A),A.z=A.z*2-1,1-A.z>1e-7?A.unproject(h):!1),[A,m,h]),f=U.useCallback(async(S,x=!0)=>{var R;if(n)y.set(...n);else{const{x:M,y:Z}=e?C:{x:0,y:0},V=await b(M,Z);V&&y.copy(V)}x&&((R=a.current)!=null&&R.target)&&(s>0&&S>0?bU.damp3(a.current.target,y,s,S):a.current.target.copy(y))},[n,y,e,b,s,C]);_u(async(S,x)=>{var R;i||f(x),l.current&&l.current.position.copy(y),c.current&&((R=a.current)!=null&&R.target)&&c.current.position.copy(a.current.target)});const B=U.useMemo(()=>({dofRef:a,hitpoint:y,update:f}),[y,f]);return U.useImperativeHandle(o,()=>B,[B]),E.jsxs(E.Fragment,{children:[t?_L(E.jsxs(E.Fragment,{children:[E.jsxs("mesh",{ref:l,children:[E.jsx("sphereGeometry",{args:[t,16,16]}),E.jsx("meshBasicMaterial",{color:"#00ff00",opacity:1,transparent:!0,depthWrite:!1})]}),E.jsxs("mesh",{ref:c,children:[E.jsx("sphereGeometry",{args:[t/2,16,16]}),E.jsx("meshBasicMaterial",{color:"#00ff00",opacity:.5,transparent:!0,depthWrite:!1})]})]}),u):null,E.jsx(eP,{ref:a,...r,target:y})]})});U.forwardRef(function(e,t){const i=vI(e,"offset"),s=U.useMemo(()=>new ZD({...e,offset:i}),[i,e]);return E.jsx("primitive",{ref:t,object:s,dispose:null})});U.forwardRef(function({blendFunction:e=It.NORMAL},t){const i=U.useMemo(()=>new yD(e),[e]);return E.jsx("primitive",{ref:t,object:i,dispose:null})});U.forwardRef(function({active:e=!0,...t},i){const s=$i(u=>u.invalidate),r=vI(t,"delay"),o=vI(t,"duration"),a=vI(t,"strength"),l=vI(t,"chromaticAberrationOffset"),c=U.useMemo(()=>new WD({...t,delay:r,duration:o,strength:a,chromaticAberrationOffset:l}),[r,o,t,a,l]);return U.useLayoutEffect(()=>{c.mode=e?t.mode||Pa.SPORADIC:Pa.DISABLED,s()},[e,c,s,t.mode]),E.jsx("primitive",{ref:i,object:c,dispose:null})});U.forwardRef(function(e,t){const{camera:i}=U.useContext(ma),s=U.useMemo(()=>new MD(i,Po(e.sun),e),[i,e]);return U.useLayoutEffect(()=>void(s.lightSource=Po(e.sun)),[s,e.sun]),E.jsx("primitive",{ref:t,object:s,dispose:null})});U.forwardRef(function({size:e,...t},i){const s=$i(o=>o.invalidate),r=U.useMemo(()=>new HD(t),[t]);return U.useLayoutEffect(()=>{e&&r.setSize(e.width,e.height),s()},[r,e]),E.jsx("primitive",{ref:i,object:r,dispose:null})});U.forwardRef(function({selection:e=[],selectionLayer:t=10,blendFunction:i,patternTexture:s,edgeStrength:r,pulseSpeed:o,visibleEdgeColor:a,hiddenEdgeColor:l,width:c,height:u,kernelSize:C,blur:d,xRay:h,...m},v){const y=$i(S=>S.invalidate),{scene:A,camera:b}=U.useContext(ma),f=U.useMemo(()=>new LD(A,b,{blendFunction:i,patternTexture:s,edgeStrength:r,pulseSpeed:o,visibleEdgeColor:a,hiddenEdgeColor:l,width:c,height:u,kernelSize:C,blur:d,xRay:h,...m}),[i,d,b,r,u,l,C,s,o,A,a,c,h]),B=U.useContext(py);return U.useEffect(()=>{if(!B&&e)return f.selection.set(Array.isArray(e)?e.map(Po):[Po(e)]),y(),()=>{f.selection.clear(),y()}},[f,e,B,y]),U.useEffect(()=>{f.selectionLayer=t,y()},[f,y,t]),U.useRef(),U.useEffect(()=>{var S;if(B&&B.enabled&&(S=B.selected)!=null&&S.length)return f.selection.set(B.selected),y(),()=>{f.selection.clear(),y()}},[B,f.selection,y]),E.jsx("primitive",{ref:v,object:f})});U.forwardRef(function({granularity:e=5},t){const i=U.useMemo(()=>new ED(e),[e]);return E.jsx("primitive",{ref:t,object:i,dispose:null})});const tP=(n,e)=>n.layers.enable(e.selection.layer),nP=(n,e)=>n.layers.disable(e.selection.layer);U.forwardRef(function({selection:e=[],selectionLayer:t=10,lights:i=[],luminanceThreshold:s,luminanceSmoothing:r,intensity:o,width:a,height:l,kernelSize:c,mipmapBlur:u,...C},d){i.length===0&&console.warn("SelectiveBloom requires lights to work.");const h=$i(b=>b.invalidate),{scene:m,camera:v}=U.useContext(ma),y=U.useMemo(()=>new kD(m,v,{blendFunction:It.ADD,luminanceThreshold:s,luminanceSmoothing:r,intensity:o,width:a,height:l,kernelSize:c,mipmapBlur:u,...C}),[m,v,s,r,o,a,l,c,u,C]),A=U.useContext(py);return U.useEffect(()=>{if(!A&&e)return y.selection.set(Array.isArray(e)?e.map(Po):[Po(e)]),h(),()=>{y.selection.clear(),h()}},[y,e,A,h]),U.useEffect(()=>{y.selection.layer=t,h()},[y,h,t]),U.useEffect(()=>{if(i&&i.length>0)return i.forEach(b=>tP(Po(b),y)),h(),()=>{i.forEach(b=>nP(Po(b),y)),h()}},[y,h,i,t]),U.useEffect(()=>{var b;if(A&&A.enabled&&(b=A.selected)!=null&&b.length)return y.selection.set(A.selected),h(),()=>{y.selection.clear(),h()}},[A,y.selection,h]),E.jsx("primitive",{ref:d,object:y,dispose:null})});U.forwardRef(function(e,t){const{camera:i,normalPass:s,downSamplingPass:r,resolutionScale:o}=U.useContext(ma),a=U.useMemo(()=>s===null&&r===null?(console.error("Please enable the NormalPass in the EffectComposer in order to use SSAO."),{}):new JD(i,s&&!r?s.texture:null,{blendFunction:It.MULTIPLY,samples:30,rings:4,distanceThreshold:1,distanceFalloff:0,rangeThreshold:.5,rangeFalloff:.1,luminanceInfluence:.9,radius:20,bias:.5,intensity:1,color:void 0,normalDepthBuffer:r?r.texture:null,resolutionScale:o??1,depthAwareUpsampling:!0,...e}),[i,s,e]);return E.jsx("primitive",{ref:t,object:a,dispose:null})});const iP=$U(PD);U.forwardRef(function({textureSrc:e,texture:t,...i},s){const r=gy(cW,e);U.useLayoutEffect(()=>{r.encoding=Ys,r.wrapS=r.wrapT=hs},[r]);const o=U.useMemo(()=>new jD({...i,texture:r||t}),[i,r,t]);return E.jsx("primitive",{ref:s,object:o,dispose:null})});U.forwardRef(function({lut:e,tetrahedralInterpolation:t,...i},s){const r=U.useMemo(()=>new FD(e,i),[e,i]),o=$i(a=>a.invalidate);return U.useLayoutEffect(()=>{t&&(r.tetrahedralInterpolation=t),e&&(r.lut=e),o()},[r,o,e,t]),E.jsx("primitive",{ref:s,object:r,dispose:null})});const sP=` + ${$U}`).replace(s,`reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); + ${eP}`)}const nP=VU.replace("#include ",KV).replace("#include ",WU),iP=["blur","blurSharpness","blurKernel"],sP=new LA(1);let Ch;class rP extends gi{constructor(e,t,i=IS){super("SSREffect",nP,{type:"FinalSSRMaterial",uniforms:new Map([["reflectionsTexture",new q(null)],["blur",new q(0)],["blurSharpness",new q(0)],["blurKernel",new q(0)]]),defines:new Map([["RENDER_MODE","0"]])}),this.haltonSequence=QU(1024),this.haltonIndex=0,this.selection=new by,this.lastSize=void 0,this.cubeCamera=new zv(.001,1e3,sP),this.usingBoxProjectedEnvMap=!1,this._scene=e,this._camera=t,i=vb({},IS,i,{boxBlur:!0,dilation:!0}),this.temporalResolvePass=new OU(e,t,MU,i),this.uniforms.get("reflectionsTexture").value=this.temporalResolvePass.renderTarget.texture,this.reflectionsPass=new zU(this,i),this.temporalResolvePass.fullscreenMaterial.uniforms.inputTexture.value=this.reflectionsPass.renderTarget.texture,this.lastSize={width:i.width,height:i.height,resolutionScale:i.resolutionScale,velocityResolutionScale:i.velocityResolutionScale},this.setSize(i.width,i.height),this.makeOptionsReactive(i)}makeOptionsReactive(e){let t=!1;const i=this.reflectionsPass.fullscreenMaterial.uniforms,s=Object.keys(i);for(const r of Object.keys(e))Object.defineProperty(this,r,{get(){return e[r]},set(o){if(!(e[r]===o&&t))switch(e[r]=o,iP.includes(r)||this.setSize(this.lastSize.width,this.lastSize.height,!0),r){case"resolutionScale":this.setSize(this.lastSize.width,this.lastSize.height);break;case"velocityResolutionScale":this.temporalResolvePass.velocityResolutionScale=o,this.setSize(this.lastSize.width,this.lastSize.height,!0);break;case"blur":this.uniforms.get("blur").value=o;break;case"blurSharpness":this.uniforms.get("blurSharpness").value=o;break;case"blurKernel":this.uniforms.get("blurKernel").value=o;break;case"steps":this.reflectionsPass.fullscreenMaterial.defines.steps=parseInt(o),this.reflectionsPass.fullscreenMaterial.needsUpdate=t;break;case"refineSteps":this.reflectionsPass.fullscreenMaterial.defines.refineSteps=parseInt(o),this.reflectionsPass.fullscreenMaterial.needsUpdate=t;break;case"missedRays":o?this.reflectionsPass.fullscreenMaterial.defines.missedRays="":delete this.reflectionsPass.fullscreenMaterial.defines.missedRays,this.reflectionsPass.fullscreenMaterial.needsUpdate=t;break;case"correctionRadius":this.temporalResolvePass.fullscreenMaterial.defines.correctionRadius=Math.round(o),this.temporalResolvePass.fullscreenMaterial.needsUpdate=t;break;case"blend":this.temporalResolvePass.fullscreenMaterial.uniforms.blend.value=o;break;case"correction":this.temporalResolvePass.fullscreenMaterial.uniforms.correction.value=o;break;case"exponent":this.temporalResolvePass.fullscreenMaterial.uniforms.exponent.value=o;break;case"distance":i.rayDistance.value=o;default:s.includes(r)&&(i[r].value=o)}}}),this[r]=e[r];t=!0}setSize(e,t,i=!1){!i&&e===this.lastSize.width&&t===this.lastSize.height&&this.resolutionScale===this.lastSize.resolutionScale&&this.velocityResolutionScale===this.lastSize.velocityResolutionScale||(this.temporalResolvePass.setSize(e,t),this.reflectionsPass.setSize(e,t),this.lastSize={width:e,height:t,resolutionScale:this.resolutionScale,velocityResolutionScale:this.velocityResolutionScale})}generateBoxProjectedEnvMapFallback(e,t=new H,i=new H,s=512){this.cubeCamera.renderTarget.dispose(),this.cubeCamera.renderTarget=new LA(s),this.cubeCamera.position.copy(t),this.cubeCamera.updateMatrixWorld(),this.cubeCamera.update(e,this._scene),Ch||(Ch=new CA(e),Ch.compileCubemapShader());const r=Ch.fromCubemap(this.cubeCamera.renderTarget.texture).texture;r.minFilter=je,r.magFilter=je;const o=this.reflectionsPass.fullscreenMaterial;return tP(o,t,i),o.fragmentShader=o.fragmentShader.replace("vec3 worldPos","worldPos").replace("varying vec3 vWorldPosition;","vec3 worldPos;"),o.uniforms.envMapPosition.value.copy(t),o.uniforms.envMapSize.value.copy(i),cS(o,r,s),this.usingBoxProjectedEnvMap=!0,r}setIBLRadiance(e,t){this._scene.traverse(i=>{if(i.material){var s;const r=(s=t.properties.get(i.material))==null?void 0:s.uniforms;r&&"disableIBLRadiance"in r&&(r.disableIBLRadiance.value=e)}})}deleteBoxProjectedEnvMapFallback(){const e=this.reflectionsPass.fullscreenMaterial;e.uniforms.envMap.value=null,e.fragmentShader=e.fragmentShader.replace("worldPos = ","vec3 worldPos = "),delete e.defines.BOX_PROJECTED_ENV_MAP,e.needsUpdate=!0,this.usingBoxProjectedEnvMap=!1}dispose(){super.dispose(),this.reflectionsPass.dispose(),this.temporalResolvePass.dispose()}update(e,t){if(!this.usingBoxProjectedEnvMap&&this._scene.environment){const a=this.reflectionsPass.fullscreenMaterial;let l=null;if(this._scene.traverse(c=>{if(!l&&c.material&&!c.material.envMap){const u=e.properties.get(c.material);"envMap"in u&&u.envMap instanceof qt&&(l=u.envMap)}}),l){const c=this._scene.environment.image.height;cS(a,l,c)}}this.haltonIndex=(this.haltonIndex+1)%this.haltonSequence.length;const[i,s]=this.haltonSequence[this.haltonIndex],{width:r,height:o}=this.lastSize;this.temporalResolvePass.velocityPass.render(e),this._camera.setViewOffset&&this._camera.setViewOffset(r,o,i,s,r,o),this.reflectionsPass.render(e,t),this.temporalResolvePass.render(e),this._camera.clearViewOffset()}static patchDirectEnvIntensity(e=0){e===0?tt.envmap_physical_pars_fragment=tt.envmap_physical_pars_fragment.replace("vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {","vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { return vec3(0.0);"):tt.envmap_physical_pars_fragment=tt.envmap_physical_pars_fragment.replace("vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );","vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness ) * "+e.toFixed(5)+";")}}const vy=k.createContext(null),ba=k.createContext(null),oP=Oi.memo(k.forwardRef(({children:n,camera:e,scene:t,resolutionScale:i,enabled:s=!0,renderPriority:r=1,autoClear:o=!0,depthBuffer:a,disableNormalPass:l,stencilBuffer:c,multisampling:u=8,frameBufferType:C=Cs},d)=>{const{gl:h,scene:m,camera:v,size:y}=es(),A=t||m,b=e||v,[f,B,S]=k.useMemo(()=>{const Z=aU(),V=new Pk(h,{depthBuffer:a,stencilBuffer:c,multisampling:u>0&&Z?u:0,frameBufferType:C});V.addPass(new fc(A,b));let N=null,U=null;return l||(U=new kk(A,b),U.enabled=!1,V.addPass(U),i!==void 0&&Z&&(N=new NV({normalBuffer:U.texture,resolutionScale:i}),N.enabled=!1,V.addPass(N))),[V,U,N]},[b,h,a,c,u,C,A,l,i]);k.useEffect(()=>f?.setSize(y.width,y.height),[f,y]),ju((Z,V)=>{if(s){const N=h.autoClear;h.autoClear=o,c&&!o&&h.clearStencil(),f.render(V),h.autoClear=N}},s?r:0);const x=k.useRef(null),R=jL(x);k.useLayoutEffect(()=>{const Z=[];if(x.current&&R.current&&f){const V=R.current.objects;for(let N=0;N{for(const V of Z)f?.removePass(V);B&&(B.enabled=!1),S&&(S.enabled=!1)}},[f,n,b,B,S,R]);const M=k.useMemo(()=>({composer:f,normalPass:B,downSamplingPass:S,resolutionScale:i,camera:b,scene:A}),[f,B,S,i,b,A]);return k.useImperativeHandle(d,()=>f,[f]),E.jsx(ba.Provider,{value:M,children:E.jsx("group",{ref:x,children:n})})})),Po=n=>typeof n=="object"&&n!=null&&"current"in n?n.current:n;let aP=0;const hS=new WeakMap,lP=(n,e)=>Oi.forwardRef(function({blendFunction:i=e?.blendFunction,opacity:s=e?.opacity,...r},o){let a=hS.get(n);if(!a){const u=`@react-three/postprocessing/${n.name}-${aP++}`;zW({[u]:n}),hS.set(n,a=u)}const l=es(u=>u.camera),c=Oi.useMemo(()=>{var u,C;return[...(u=e?.args)!=null?u:[],...(C=r.args)!=null?C:[{...e,...r}]]},[JSON.stringify(r)]);return E.jsx(a,{camera:l,"blendMode-blendFunction":i,"blendMode-opacity-value":s,...r,ref:o,args:c})}),BI=(n,e)=>{const t=n[e];return Oi.useMemo(()=>typeof t=="number"?new ne(t,t):t?new ne(...t):new ne,[t])},gP=k.forwardRef(function({target:e,depthTexture:t,...i},s){const r=es(l=>l.invalidate),{camera:o}=k.useContext(ba),a=k.useMemo(()=>{const l=new YD(o,i),c=l.maskPass.getFullscreenMaterial();return c.maskFunction=EI.MULTIPLY_RGB_SET_ALPHA,l},[o,i]);return k.useLayoutEffect(()=>{if(e&&typeof e!="number"){const l=e instanceof H?new H().set(e.x,e.y,e.z):new H().set(e[0],e[1],e[2]);a.target=l}t&&a.setDepthTexture(t.texture,t.packing),r()},[e,t,a]),E.jsx("primitive",{ref:s,object:a,dispose:null})});k.forwardRef(({target:n=void 0,mouse:e=!1,debug:t=void 0,manual:i=!1,smoothTime:s=.25,...r},o)=>{const a=k.useRef(null),l=k.useRef(null),c=k.useRef(null),u=es(({scene:S})=>S),C=es(({pointer:S})=>S),{composer:d,camera:h}=k.useContext(ba),[m]=k.useState(()=>new Fk),[v]=k.useState(()=>new MV);k.useEffect(()=>(d.addPass(m),d.addPass(v),()=>{d.removePass(m),d.removePass(v)}),[d,m,v]),k.useEffect(()=>()=>{m.dispose(),v.dispose()},[m,v]);const[y]=k.useState(()=>new H(0,0,0)),[A]=k.useState(()=>new H(0,0,0)),b=k.useCallback(async(S,x)=>(A.x=S,A.y=x,A.z=await m.readDepth(A),A.z=A.z*2-1,1-A.z>1e-7?A.unproject(h):!1),[A,m,h]),f=k.useCallback(async(S,x=!0)=>{var R;if(n)y.set(...n);else{const{x:M,y:Z}=e?C:{x:0,y:0},V=await b(M,Z);V&&y.copy(V)}x&&((R=a.current)!=null&&R.target)&&(s>0&&S>0?RU.damp3(a.current.target,y,s,S):a.current.target.copy(y))},[n,y,e,b,s,C]);ju(async(S,x)=>{var R;i||f(x),l.current&&l.current.position.copy(y),c.current&&((R=a.current)!=null&&R.target)&&c.current.position.copy(a.current.target)});const B=k.useMemo(()=>({dofRef:a,hitpoint:y,update:f}),[y,f]);return k.useImperativeHandle(o,()=>B,[B]),E.jsxs(E.Fragment,{children:[t?nE(E.jsxs(E.Fragment,{children:[E.jsxs("mesh",{ref:l,children:[E.jsx("sphereGeometry",{args:[t,16,16]}),E.jsx("meshBasicMaterial",{color:"#00ff00",opacity:1,transparent:!0,depthWrite:!1})]}),E.jsxs("mesh",{ref:c,children:[E.jsx("sphereGeometry",{args:[t/2,16,16]}),E.jsx("meshBasicMaterial",{color:"#00ff00",opacity:.5,transparent:!0,depthWrite:!1})]})]}),u):null,E.jsx(gP,{ref:a,...r,target:y})]})});k.forwardRef(function(e,t){const i=BI(e,"offset"),s=k.useMemo(()=>new HD({...e,offset:i}),[i,e]);return E.jsx("primitive",{ref:t,object:s,dispose:null})});k.forwardRef(function({blendFunction:e=It.NORMAL},t){const i=k.useMemo(()=>new VD(e),[e]);return E.jsx("primitive",{ref:t,object:i,dispose:null})});k.forwardRef(function({active:e=!0,...t},i){const s=es(u=>u.invalidate),r=BI(t,"delay"),o=BI(t,"duration"),a=BI(t,"strength"),l=BI(t,"chromaticAberrationOffset"),c=k.useMemo(()=>new zD({...t,delay:r,duration:o,strength:a,chromaticAberrationOffset:l}),[r,o,t,a,l]);return k.useLayoutEffect(()=>{c.mode=e?t.mode||Ja.SPORADIC:Ja.DISABLED,s()},[e,c,s,t.mode]),E.jsx("primitive",{ref:i,object:c,dispose:null})});k.forwardRef(function(e,t){const{camera:i}=k.useContext(ba),s=k.useMemo(()=>new ED(i,Po(e.sun),e),[i,e]);return k.useLayoutEffect(()=>void(s.lightSource=Po(e.sun)),[s,e.sun]),E.jsx("primitive",{ref:t,object:s,dispose:null})});k.forwardRef(function({size:e,...t},i){const s=es(o=>o.invalidate),r=k.useMemo(()=>new kD(t),[t]);return k.useLayoutEffect(()=>{e&&r.setSize(e.width,e.height),s()},[r,e]),E.jsx("primitive",{ref:i,object:r,dispose:null})});k.forwardRef(function({selection:e=[],selectionLayer:t=10,blendFunction:i,patternTexture:s,edgeStrength:r,pulseSpeed:o,visibleEdgeColor:a,hiddenEdgeColor:l,width:c,height:u,kernelSize:C,blur:d,xRay:h,...m},v){const y=es(S=>S.invalidate),{scene:A,camera:b}=k.useContext(ba),f=k.useMemo(()=>new OD(A,b,{blendFunction:i,patternTexture:s,edgeStrength:r,pulseSpeed:o,visibleEdgeColor:a,hiddenEdgeColor:l,width:c,height:u,kernelSize:C,blur:d,xRay:h,...m}),[i,d,b,r,u,l,C,s,o,A,a,c,h]),B=k.useContext(vy);return k.useEffect(()=>{if(!B&&e)return f.selection.set(Array.isArray(e)?e.map(Po):[Po(e)]),y(),()=>{f.selection.clear(),y()}},[f,e,B,y]),k.useEffect(()=>{f.selectionLayer=t,y()},[f,y,t]),k.useRef(),k.useEffect(()=>{var S;if(B&&B.enabled&&(S=B.selected)!=null&&S.length)return f.selection.set(B.selected),y(),()=>{f.selection.clear(),y()}},[B,f.selection,y]),E.jsx("primitive",{ref:v,object:f})});k.forwardRef(function({granularity:e=5},t){const i=k.useMemo(()=>new jD(e),[e]);return E.jsx("primitive",{ref:t,object:i,dispose:null})});const cP=(n,e)=>n.layers.enable(e.selection.layer),IP=(n,e)=>n.layers.disable(e.selection.layer);k.forwardRef(function({selection:e=[],selectionLayer:t=10,lights:i=[],luminanceThreshold:s,luminanceSmoothing:r,intensity:o,width:a,height:l,kernelSize:c,mipmapBlur:u,...C},d){i.length===0&&console.warn("SelectiveBloom requires lights to work.");const h=es(b=>b.invalidate),{scene:m,camera:v}=k.useContext(ba),y=k.useMemo(()=>new qD(m,v,{blendFunction:It.ADD,luminanceThreshold:s,luminanceSmoothing:r,intensity:o,width:a,height:l,kernelSize:c,mipmapBlur:u,...C}),[m,v,s,r,o,a,l,c,u,C]),A=k.useContext(vy);return k.useEffect(()=>{if(!A&&e)return y.selection.set(Array.isArray(e)?e.map(Po):[Po(e)]),h(),()=>{y.selection.clear(),h()}},[y,e,A,h]),k.useEffect(()=>{y.selection.layer=t,h()},[y,h,t]),k.useEffect(()=>{if(i&&i.length>0)return i.forEach(b=>cP(Po(b),y)),h(),()=>{i.forEach(b=>IP(Po(b),y)),h()}},[y,h,i,t]),k.useEffect(()=>{var b;if(A&&A.enabled&&(b=A.selected)!=null&&b.length)return y.selection.set(A.selected),h(),()=>{y.selection.clear(),h()}},[A,y.selection,h]),E.jsx("primitive",{ref:d,object:y,dispose:null})});k.forwardRef(function(e,t){const{camera:i,normalPass:s,downSamplingPass:r,resolutionScale:o}=k.useContext(ba),a=k.useMemo(()=>s===null&&r===null?(console.error("Please enable the NormalPass in the EffectComposer in order to use SSAO."),{}):new iU(i,s&&!r?s.texture:null,{blendFunction:It.MULTIPLY,samples:30,rings:4,distanceThreshold:1,distanceFalloff:0,rangeThreshold:.5,rangeFalloff:.1,luminanceInfluence:.9,radius:20,bias:.5,intensity:1,color:void 0,normalDepthBuffer:r?r.texture:null,resolutionScale:o??1,depthAwareUpsampling:!0,...e}),[i,s,e]);return E.jsx("primitive",{ref:t,object:a,dispose:null})});const uP=lP(tU);k.forwardRef(function({textureSrc:e,texture:t,...i},s){const r=Cy(pW,e);k.useLayoutEffect(()=>{r.encoding=Fs,r.wrapS=r.wrapT=As},[r]);const o=k.useMemo(()=>new oU({...i,texture:r||t}),[i,r,t]);return E.jsx("primitive",{ref:s,object:o,dispose:null})});k.forwardRef(function({lut:e,tetrahedralInterpolation:t,...i},s){const r=k.useMemo(()=>new PD(e,i),[e,i]),o=es(a=>a.invalidate);return k.useLayoutEffect(()=>{t&&(r.tetrahedralInterpolation=t),e&&(r.lut=e),o()},[r,o,e,t]),E.jsx("primitive",{ref:s,object:r,dispose:null})});const CP=` uniform sampler2D uCharacters; uniform float uCharactersCount; uniform float uCellSize; @@ -4483,7 +4483,7 @@ void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) asciiCharacter.a = pixelized.a; outputColor = asciiCharacter; } -`;class rP extends li{constructor({characters:e=" .:,'-^=*+?!|0#X%WM@",fontSize:t=54,cellSize:i=16,color:s="#ffffff",invert:r=!1}={}){const o=new Map([["uCharacters",new q(new qt)],["uCellSize",new q(i)],["uCharactersCount",new q(e.length)],["uColor",new q(new Re(s))],["uInvert",new q(r)]]);super("ASCIIEffect",sP,{uniforms:o});const a=this.uniforms.get("uCharacters");a&&(a.value=this.createCharactersTexture(e,t))}createCharactersTexture(e,t){const i=document.createElement("canvas"),s=1024,r=16,o=s/r;i.width=i.height=s;const a=new L1(i,void 0,hs,hs,pt,pt),l=i.getContext("2d");if(!l)throw new Error("Context not available");l.clearRect(0,0,s,s),l.font=`${t}px arial`,l.textAlign="center",l.textBaseline="middle",l.fillStyle="#fff";for(let c=0;c{const o=U.useMemo(()=>new rP({characters:n,fontSize:e,cellSize:t,color:i,invert:s}),[n,e,t,i,s]);return E.jsx("primitive",{ref:r,object:o})});U.forwardRef(function({ENABLE_BLUR:e=!0,USE_MRT:t=!0,...i},s){const{invalidate:r}=$i(),{scene:o,camera:a}=U.useContext(ma),l=U.useMemo(()=>new QU(o,a,{ENABLE_BLUR:e,USE_MRT:t,...i}),[o,a,e,t,i]),c=U.useContext(py);return U.useEffect(()=>{var u;if(c&&c.enabled&&(u=c.selected)!=null&&u.length)return l.selection.set(c.selected),r(),()=>{l.selection.clear(),r()}},[c]),E.jsx("primitive",{ref:s,object:l,...i})});const oP={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},projMat:{value:new Fe},viewMat:{value:new Fe},projViewMat:{value:new Fe},projectionMatrixInv:{value:new Fe},viewMatrixInv:{value:new Fe},cameraPos:{value:new H},resolution:{value:new ne},time:{value:0},samples:{value:[]},samplesR:{value:[]},bluenoise:{value:null},distanceFalloff:{value:1},radius:{value:5},near:{value:.1},far:{value:1e3},logDepth:{value:!1},ortho:{value:!1},screenSpaceRadius:{value:!1}},vertexShader:` +`;class dP extends gi{constructor({characters:e=" .:,'-^=*+?!|0#X%WM@",fontSize:t=54,cellSize:i=16,color:s="#ffffff",invert:r=!1}={}){const o=new Map([["uCharacters",new q(new qt)],["uCellSize",new q(i)],["uCharactersCount",new q(e.length)],["uColor",new q(new Re(s))],["uInvert",new q(r)]]);super("ASCIIEffect",CP,{uniforms:o});const a=this.uniforms.get("uCharacters");a&&(a.value=this.createCharactersTexture(e,t))}createCharactersTexture(e,t){const i=document.createElement("canvas"),s=1024,r=16,o=s/r;i.width=i.height=s;const a=new _1(i,void 0,As,As,pt,pt),l=i.getContext("2d");if(!l)throw new Error("Context not available");l.clearRect(0,0,s,s),l.font=`${t}px arial`,l.textAlign="center",l.textBaseline="middle",l.fillStyle="#fff";for(let c=0;c{const o=k.useMemo(()=>new dP({characters:n,fontSize:e,cellSize:t,color:i,invert:s}),[n,e,t,i,s]);return E.jsx("primitive",{ref:r,object:o})});k.forwardRef(function({ENABLE_BLUR:e=!0,USE_MRT:t=!0,...i},s){const{invalidate:r}=es(),{scene:o,camera:a}=k.useContext(ba),l=k.useMemo(()=>new rP(o,a,{ENABLE_BLUR:e,USE_MRT:t,...i}),[o,a,e,t,i]),c=k.useContext(vy);return k.useEffect(()=>{var u;if(c&&c.enabled&&(u=c.selected)!=null&&u.length)return l.selection.set(c.selected),r(),()=>{l.selection.clear(),r()}},[c]),E.jsx("primitive",{ref:s,object:l,...i})});const hP={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},projMat:{value:new Fe},viewMat:{value:new Fe},projViewMat:{value:new Fe},projectionMatrixInv:{value:new Fe},viewMatrixInv:{value:new Fe},cameraPos:{value:new H},resolution:{value:new ne},time:{value:0},samples:{value:[]},samplesR:{value:[]},bluenoise:{value:null},distanceFalloff:{value:1},radius:{value:5},near:{value:.1},far:{value:1e3},logDepth:{value:!1},ortho:{value:!1},screenSpaceRadius:{value:!1}},vertexShader:` varying vec2 vUv; void main() { vUv = uv; @@ -4656,7 +4656,7 @@ void main() { } float occ = clamp(1.0 - occluded / totalWeight, 0.0, 1.0); gl_FragColor = vec4(0.5 + 0.5 * normal, occ); -}`},aP={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},tDiffuse:{value:null},projMat:{value:new Fe},viewMat:{value:new Fe},projectionMatrixInv:{value:new Fe},viewMatrixInv:{value:new Fe},cameraPos:{value:new H},resolution:{value:new ne},color:{value:new H(0,0,0)},blueNoise:{value:null},time:{value:0},intensity:{value:10},renderMode:{value:0},gammaCorrection:{value:!1}},vertexShader:` +}`},AP={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},tDiffuse:{value:null},projMat:{value:new Fe},viewMat:{value:new Fe},projectionMatrixInv:{value:new Fe},viewMatrixInv:{value:new Fe},cameraPos:{value:new H},resolution:{value:new ne},color:{value:new H(0,0,0)},blueNoise:{value:null},time:{value:0},intensity:{value:10},renderMode:{value:0},gammaCorrection:{value:!1}},vertexShader:` varying vec2 vUv; void main() { vUv = uv; @@ -4711,7 +4711,7 @@ void main() { gl_FragColor = LinearTosRGB(gl_FragColor); } } - `},lP={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},tDiffuse:{value:null},projMat:{value:new Fe},viewMat:{value:new Fe},projectionMatrixInv:{value:new Fe},viewMatrixInv:{value:new Fe},cameraPos:{value:new H},resolution:{value:new ne},time:{value:0},r:{value:5},blueNoise:{value:null},radius:{value:12},worldRadius:{value:5},index:{value:0},poissonDisk:{value:[]},distanceFalloff:{value:1},near:{value:.1},far:{value:1e3},logDepth:{value:!1},screenSpaceRadius:{value:!1}},vertexShader:` + `},pP={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},tDiffuse:{value:null},projMat:{value:new Fe},viewMat:{value:new Fe},projectionMatrixInv:{value:new Fe},viewMatrixInv:{value:new Fe},cameraPos:{value:new H},resolution:{value:new ne},time:{value:0},r:{value:5},blueNoise:{value:null},radius:{value:12},worldRadius:{value:5},index:{value:0},poissonDisk:{value:[]},distanceFalloff:{value:1},near:{value:.1},far:{value:1e3},logDepth:{value:!1},screenSpaceRadius:{value:!1}},vertexShader:` varying vec2 vUv; void main() { vUv = uv; @@ -4828,7 +4828,7 @@ void main() { occlusion /= count; gl_FragColor = vec4(0.5 + 0.5 * normal, occlusion); } - `};var NV="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";const gP=Uint8Array.from(atob(NV),n=>n.charCodeAt(0));function HV(n,e,t){if(e.getQueryParameter(n,e.QUERY_RESULT_AVAILABLE)){const r=e.getQueryParameter(n,e.QUERY_RESULT)/1e6;t.lastTime=r}else setTimeout(()=>{HV(n,e,t)},1)}class cP extends Rn{constructor(e,t,i=512,s=512){super(),this.width=i,this.height=s,this.clear=!0,this.camera=t,this.scene=e,this.autosetGamma=!0,this.configuration=new Proxy({aoSamples:16,aoRadius:5,denoiseSamples:8,denoiseRadius:12,distanceFalloff:1,intensity:5,denoiseIterations:2,renderMode:0,color:new Re(0,0,0),gammaCorrection:!0,logarithmicDepthBuffer:!1,screenSpaceRadius:!1},{set:(r,o,a)=>{const l=r[o];return r[o]=a,o==="aoSamples"&&l!==a&&this.configureAOPass(this.configuration.logarithmicDepthBuffer),o==="denoiseSamples"&&l!==a&&this.configureDenoisePass(this.configuration.logarithmicDepthBuffer),o==="gammaCorrection"&&(this.autosetGamma=!1),!0}}),this.samples=[],this.samplesR=[],this.samplesDenoise=[],this.configureSampleDependentPasses(),this.effectCompisterQuad=new rh(new Zt(aP)),this.copyQuad=new rh(new Zt({uniforms:{tDiffuse:{value:null}},vertexShader:` + `};var LV="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";const mP=Uint8Array.from(atob(LV),n=>n.charCodeAt(0));function EV(n,e,t){if(e.getQueryParameter(n,e.QUERY_RESULT_AVAILABLE)){const r=e.getQueryParameter(n,e.QUERY_RESULT)/1e6;t.lastTime=r}else setTimeout(()=>{EV(n,e,t)},1)}class fP extends Rn{constructor(e,t,i=512,s=512){super(),this.width=i,this.height=s,this.clear=!0,this.camera=t,this.scene=e,this.autosetGamma=!0,this.configuration=new Proxy({aoSamples:16,aoRadius:5,denoiseSamples:8,denoiseRadius:12,distanceFalloff:1,intensity:5,denoiseIterations:2,renderMode:0,color:new Re(0,0,0),gammaCorrection:!0,logarithmicDepthBuffer:!1,screenSpaceRadius:!1},{set:(r,o,a)=>{const l=r[o];return r[o]=a,o==="aoSamples"&&l!==a&&this.configureAOPass(this.configuration.logarithmicDepthBuffer),o==="denoiseSamples"&&l!==a&&this.configureDenoisePass(this.configuration.logarithmicDepthBuffer),o==="gammaCorrection"&&(this.autosetGamma=!1),!0}}),this.samples=[],this.samplesR=[],this.samplesDenoise=[],this.configureSampleDependentPasses(),this.effectCompisterQuad=new Ih(new Zt(AP)),this.copyQuad=new Ih(new Zt({uniforms:{tDiffuse:{value:null}},vertexShader:` varying vec2 vUv; void main() { vUv = uv; @@ -4840,9 +4840,9 @@ void main() { void main() { gl_FragColor = texture2D(tDiffuse, vUv); } - `})),this.writeTargetInternal=new Rt(this.width,this.height,{minFilter:je,magFilter:je,depthBuffer:!1}),this.readTargetInternal=new Rt(this.width,this.height,{minFilter:je,magFilter:je,depthBuffer:!1}),this.bluenoise=new Mr(gP,128,128),this.bluenoise.colorSpace=co,this.bluenoise.wrapS=hs,this.bluenoise.wrapT=hs,this.bluenoise.minFilter=pt,this.bluenoise.magFilter=pt,this.bluenoise.needsUpdate=!0,this.lastTime=0,this.needsDepthTexture=!0,this._r=new ne,this._c=new Re}configureSampleDependentPasses(){this.configureAOPass(this.configuration.logarithmicDepthBuffer),this.configureDenoisePass(this.configuration.logarithmicDepthBuffer)}configureAOPass(e=!1){this.samples=this.generateHemisphereSamples(this.configuration.aoSamples),this.samplesR=this.generateHemisphereSamplesR(this.configuration.aoSamples);const t={...oP};t.fragmentShader=t.fragmentShader.replace("16",this.configuration.aoSamples).replace("16.0",this.configuration.aoSamples+".0"),e&&(t.fragmentShader=`#define LOGDEPTH -`+t.fragmentShader),this.effectShaderQuad?(this.effectShaderQuad.material.dispose(),this.effectShaderQuad.material=new Zt(t)):this.effectShaderQuad=new rh(new Zt(t))}configureDenoisePass(e=!1){this.samplesDenoise=this.generateDenoiseSamples(this.configuration.denoiseSamples,11);const t={...lP};t.fragmentShader=t.fragmentShader.replace("16",this.configuration.denoiseSamples),e&&(t.fragmentShader=`#define LOGDEPTH -`+t.fragmentShader),this.poissonBlurQuad?(this.poissonBlurQuad.material.dispose(),this.poissonBlurQuad.material=new Zt(t)):this.poissonBlurQuad=new rh(new Zt(t))}generateHemisphereSamples(e){const t=[];for(let i=0;in.charCodeAt(0));const IP=U.forwardRef(({screenSpaceRadius:n,quality:e,aoRadius:t=5,aoSamples:i=16,denoiseSamples:s=4,denoiseRadius:r=12,distanceFalloff:o=1,intensity:a=1,color:l},c)=>{const{camera:u,scene:C}=$i(),d=U.useMemo(()=>new cP(C,u),[]);return U.useLayoutEffect(()=>{Ta(d.configuration,{color:l,aoRadius:t,distanceFalloff:o,intensity:a,aoSamples:i,denoiseSamples:s,denoiseRadius:r,screenSpaceRadius:n})},[n,l,t,o,a,i,s,r]),U.useLayoutEffect(()=>{e&&d.setQualityMode(e.charAt(0).toUpperCase()+e.slice(1))},[e]),E.jsx("primitive",{ref:c,object:d})}),xf=f1.randFloatSpread;function uP({mat:n=new Fe,vec:e=new H,numBalls:t,color:i}){const s=new Gl(1,50,50),r=new UA({color:i,roughness:0,envMapIntensity:1}),[o,a]=fV(()=>({args:[1],mass:1,angularDamping:.1,linearDamping:.65,position:[xf(10),xf(10),xf(10)]}));return _u(l=>{for(let c=0;ct.viewport),[,e]=fV(()=>({type:"Kinematic",args:[3],position:[0,0,0]}));return _u(t=>e.position.set(-(t.mouse.x*n.width)/2,t.mouse.y*n.height/2,3))}const dP=({intensity:n,color:e,distance:t,width:i,height:s})=>{const r=[];for(let a=0;a<10;a++)r.push([-i/2+i/(10-1)*a,t,s/2]),r.push([-i/2+i/(10-1)*a,t,-s/2]),r.push([i/2,t,-s/2+s/(10-1)*a]),r.push([-i/2,t,-s/2+s/(10-1)*a]);return E.jsx(E.Fragment,{children:r.map((a,l)=>E.jsx("pointLight",{position:a,intensity:n,color:e},l))})},hP=({color:n,className:e})=>E.jsxs(uT,{className:e,shadows:!0,gl:{antialias:!0},camera:{position:[0,0,-34],fov:20,near:1,far:1e3},children:[E.jsxs(SE,{gravity:[0,-8,0],iterations:10,children:[E.jsx(CP,{}),E.jsx(uP,{numBalls:20,color:n})]}),E.jsx("ambientLight",{intensity:1}),E.jsx(dP,{intensity:.05,color:"#ffffff",distance:100,height:200,width:100}),E.jsxs(jU,{disableNormalPass:!0,multisampling:0,children:[E.jsx(IP,{color:"black",aoRadius:2,intensity:1,aoSamples:6,denoiseSamples:4}),E.jsx(iP,{})]})]}),AP=`@inproceedings{recode-ni-2021, + `})),this.writeTargetInternal=new Wt(this.width,this.height,{minFilter:je,magFilter:je,depthBuffer:!1}),this.readTargetInternal=new Wt(this.width,this.height,{minFilter:je,magFilter:je,depthBuffer:!1}),this.bluenoise=new Mr(mP,128,128),this.bluenoise.colorSpace=co,this.bluenoise.wrapS=As,this.bluenoise.wrapT=As,this.bluenoise.minFilter=pt,this.bluenoise.magFilter=pt,this.bluenoise.needsUpdate=!0,this.lastTime=0,this.needsDepthTexture=!0,this._r=new ne,this._c=new Re}configureSampleDependentPasses(){this.configureAOPass(this.configuration.logarithmicDepthBuffer),this.configureDenoisePass(this.configuration.logarithmicDepthBuffer)}configureAOPass(e=!1){this.samples=this.generateHemisphereSamples(this.configuration.aoSamples),this.samplesR=this.generateHemisphereSamplesR(this.configuration.aoSamples);const t={...hP};t.fragmentShader=t.fragmentShader.replace("16",this.configuration.aoSamples).replace("16.0",this.configuration.aoSamples+".0"),e&&(t.fragmentShader=`#define LOGDEPTH +`+t.fragmentShader),this.effectShaderQuad?(this.effectShaderQuad.material.dispose(),this.effectShaderQuad.material=new Zt(t)):this.effectShaderQuad=new Ih(new Zt(t))}configureDenoisePass(e=!1){this.samplesDenoise=this.generateDenoiseSamples(this.configuration.denoiseSamples,11);const t={...pP};t.fragmentShader=t.fragmentShader.replace("16",this.configuration.denoiseSamples),e&&(t.fragmentShader=`#define LOGDEPTH +`+t.fragmentShader),this.poissonBlurQuad?(this.poissonBlurQuad.material.dispose(),this.poissonBlurQuad.material=new Zt(t)):this.poissonBlurQuad=new Ih(new Zt(t))}generateHemisphereSamples(e){const t=[];for(let i=0;in.charCodeAt(0));const bP=k.forwardRef(({screenSpaceRadius:n,quality:e,aoRadius:t=5,aoSamples:i=16,denoiseSamples:s=4,denoiseRadius:r=12,distanceFalloff:o=1,intensity:a=1,color:l},c)=>{const{camera:u,scene:C}=es(),d=k.useMemo(()=>new fP(C,u),[]);return k.useLayoutEffect(()=>{ka(d.configuration,{color:l,aoRadius:t,distanceFalloff:o,intensity:a,aoSamples:i,denoiseSamples:s,denoiseRadius:r,screenSpaceRadius:n})},[n,l,t,o,a,i,s,r]),k.useLayoutEffect(()=>{e&&d.setQualityMode(e.charAt(0).toUpperCase()+e.slice(1))},[e]),E.jsx("primitive",{ref:c,object:d})}),Mf=w1.randFloatSpread;function vP({mat:n=new Fe,vec:e=new H,numBalls:t,color:i}){const s=new Bl(1,50,50),r=new qA({color:i,roughness:0,envMapIntensity:1}),[o,a]=wV(()=>({args:[1],mass:1,angularDamping:.1,linearDamping:.65,position:[Mf(10),Mf(10),Mf(10)]}));return ju(l=>{for(let c=0;ct.viewport),[,e]=wV(()=>({type:"Kinematic",args:[3],position:[0,0,0]}));return ju(t=>e.position.set(-(t.mouse.x*n.width)/2,t.mouse.y*n.height/2,3))}const GP=({intensity:n,color:e,distance:t,width:i,height:s})=>{const r=[];for(let a=0;a<10;a++)r.push([-i/2+i/(10-1)*a,t,s/2]),r.push([-i/2+i/(10-1)*a,t,-s/2]),r.push([i/2,t,-s/2+s/(10-1)*a]),r.push([-i/2,t,-s/2+s/(10-1)*a]);return E.jsx(E.Fragment,{children:r.map((a,l)=>E.jsx("pointLight",{position:a,intensity:n,color:e},l))})},BP=({color:n,className:e})=>E.jsxs(vE,{className:e,shadows:!0,gl:{antialias:!0},camera:{position:[0,0,-34],fov:20,near:1,far:1e3},children:[E.jsxs(YT,{gravity:[0,-8,0],iterations:10,children:[E.jsx(yP,{}),E.jsx(vP,{numBalls:20,color:n})]}),E.jsx("ambientLight",{intensity:1}),E.jsx(GP,{intensity:.05,color:"#ffffff",distance:100,height:200,width:100}),E.jsxs(oP,{disableNormalPass:!0,multisampling:0,children:[E.jsx(bP,{color:"black",aoRadius:2,intensity:1,aoSamples:6,denoiseSamples:4}),E.jsx(uP,{})]})]}),ZP=`@inproceedings{recode-ni-2021, author = {Ni, Wode and Sunshine, Joshua and Le, Vu and Gulwani, Sumit and Barik, Titus}, title = {reCode: A Lightweight Find-and-Replace Interaction in the IDE for Transforming Code by Example}, year = {2021}, @@ -4980,7 +4980,7 @@ void main() { publisher = {ACM}, address = {New York, NY, USA} } -`;var XV={exports:{}};(function(n,e){(function(t,i){n.exports=i()})(UM,function(){return function(t){function i(r){if(s[r])return s[r].exports;var o=s[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,i),o.l=!0,o.exports}var s={};return i.m=t,i.c=s,i.d=function(r,o,a){i.o(r,o)||Object.defineProperty(r,o,{configurable:!1,enumerable:!0,get:a})},i.n=function(r){var o=r&&r.__esModule?function(){return r.default}:function(){return r};return i.d(o,"a",o),o},i.o=function(r,o){return Object.prototype.hasOwnProperty.call(r,o)},i.p="",i(i.s=17)}([function(t,i,s){function r(C,d){if(typeof C!="string")throw new Error("Expected to be string: "+JSON.stringify(d||C));return C}function o(C,d){if(C===void 0)throw new Error("Expected to be defined: "+JSON.stringify(d||C));return C}function a(C,d){if(!l(C))throw new Error("Expected to be array: "+JSON.stringify(d||C));return C}function l(C){return!!C&&C.constructor===Array}function c(C){return typeof C=="number"}function u(C){return typeof C=="string"}Object.defineProperty(i,"__esModule",{value:!0}),i.mustBeString=r,i.mustBeDefined=o,i.mustBeArray=a,i.isArray=l,i.isNumber=c,i.isString=u,i.flattenMyArray=function(C,d){d||(d=[]);for(var h=0,m=C.length;h0)){var $=R.exec(k),te=0;if($){do{var Ce=te;te=$.index+$[0].length,V.push(k.substring(Ce,$.index)),(M===void 0||M>0)&&(Z.push(V),V=[],M!==void 0&&M>0&&M--),$=M===void 0||M>0?R.exec(k):void 0}while($);te>0&&te0&&Z.push(V),Z}Object.defineProperty(i,"__esModule",{value:!0});var A=s(5),b=s(2),f=s(1),B=s(0);i.isBibStringComponent=r,i.isContiguousSimpleString=o,i.joinContiguousSimpleStrings=a,i.parseStringComponent=l,i.toStringBibStringDatum=c,i.toStringBibStringData=u,i.flattenQuotedStrings=C;var S=['"'];i.globContiguousStrings=h,i.splitOnAnd=m,i.splitOnComma=v,i.splitOnPattern=y},function(t,i,s){var r=this&&this.__extends||function(){var c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(u,C){u.__proto__=C}||function(u,C){for(var d in C)C.hasOwnProperty(d)&&(u[d]=C[d])};return function(u,C){function d(){this.constructor=u}c(u,C),u.prototype=C===null?Object.create(C):(d.prototype=C.prototype,new d)}}();Object.defineProperty(i,"__esModule",{value:!0});var o=s(0),a=function(){function c(u,C,d){this.type=u,this.braceDepth=C,this.data=d}return c.isBibStringComponent=function(u){return typeof u.braceDepth=="number"&&typeof u.type=="string"},c.stringifyDatum=function(u){if(o.isString(u))return u;if(o.isNumber(u))return u.toString();if(c.isBibStringComponent(u))return u.stringify();throw new Error("Unexpected state")},c.prototype.stringify=function(){return this.data.map(c.stringifyDatum).join("")},c}();i.BibStringComponent=a;var l=function(c){function u(C,d){return c.call(this,C,0,d)||this}return r(u,c),u}(a);i.BibOuterStringComponent=l},function(t,i,s){function r(a){return typeof a.stringref=="string"}Object.defineProperty(i,"__esModule",{value:!0});var o=function(){function a(l,c){this.braceDepth=l,this.stringref=c}return a}();i.StringRef=o,i.isStringRef=r},function(t,i,s){function r(h){return typeof h.key=="string"&&h.value!==void 0}function o(h){if(r(h))return{key:h.key,value:a(h.value)};throw new Error("Was not a KeyVal: "+JSON.stringify(h))}function a(h){if(C.isNumber(h))return h;var m=C.mustBeArray(h.data);switch(h.type){case"quotedstringwrapper":return m.length===1&&C.isNumber(m[0])?m[0]:new u.OuterQuotedString(m.map(function(v){return d.parseStringComponent(0,v)}));case"bracedstringwrapper":return new c.OuterBracedString(m.map(function(v){return d.parseStringComponent(0,v)}));default:throw new Error("Unexpected value: "+JSON.stringify(h))}}function l(h){if(h)return C.isNumber(h)?h:h.stringify()}Object.defineProperty(i,"__esModule",{value:!0});var c=s(2),u=s(1),C=s(0),d=s(3);i.isKeyVal=r,i.newKeyVal=o,i.parseFieldValue=a,i.normalizeFieldValue=l},function(t,i,s){function r(B){var S=o(B),x=S.key,R=S.value;return new f(x,R)}function o(B){if(h.isKeyVal(B))return h.newKeyVal(B);if(B.type!=="string")throw new Error("Unexpected node: "+JSON.stringify(B));return o(B.data)}function a(B){var S={};return Object.keys(B).forEach(function(x){S[x]||(S[x]=c({},S,B,B[x]))}),S}function l(B,S,x,R){return B.data.map(function(M){if(A.isString(M)||A.isNumber(M))return M;if(m.isStringRef(M))return u(S,R,M,x);if(b.isBibStringComponent(M))return C(M,S,x,R);throw new Error})}function c(B,S,x,R){return A.isNumber(R)?R:y.isOuterBracedString(R)||v.isOuterQuotedString(R)?d(R,B,S,x):m.isStringRef(R)?u(B,x,R,S):R}function u(B,S,x,R){var M=x.stringref;if(B[M])throw new Error("Cycle detected: "+M);if(R[M])return R[M];if(!S[M])throw new Error('Unresolved reference: "'+x.stringref+'" ('+JSON.stringify(x)+")");return R[M]=c(Object.assign({},B,(Z={},Z[M]=!0,Z)),R,S,S[M]),R[M];var Z}function C(B,S,x,R){var M=l(B,S,x,R),Z=B.braceDepth;if(v.isQuotedString(B))return new v.QuotedString(Z,M);if(y.isBracedString(B))return new y.BracedString(Z,M);if(v.isOuterQuotedString(B))return new v.OuterQuotedString(M);if(y.isOuterBracedString(B))return new y.OuterBracedString(M);throw new Error}function d(B,S,x,R){var M=C(B,S,x,R);if(!y.isOuterBracedString(M)&&!v.isOuterQuotedString(M))throw new Error;return M}Object.defineProperty(i,"__esModule",{value:!0});var h=s(6),m=s(5),v=s(1),y=s(2),A=s(0),b=s(3),f=function(){function B(S,x){this.type="string",this.key=S,this.value=x}return B}();i.BibStringEntry=f,i.newStringEntry=r,i.resolveStrings=a,i.resolveStringReferences=l,i.resolveStringReference=c,i.copyWithResolvedStringReferences=C,i.copyOuterWithResolvedStringReferences=d},function(t,i,s){function r(R){var M=f.toStringBibStringData(R);return M?M.charAt(0):""}function o(R){return R.length>0&&a(R[0])}function a(R){if(v.isString(R)){if(!R)return!1;var M=R.charAt(0);return M.toLowerCase()===M&&M.toUpperCase()!==M}if(y.isQuotedString(R))return!(!R.data||R.data.length<=0)&&a(R.data[0]);if(A.isStringRef(R)||y.isOuterQuotedString(R)||b.isOuterBracedString(R))throw new Error("Should not do this test on this type");return!1}function l(R){for(var M=f.splitOnPattern(R,B),Z=-1,V=-1,N=-1,D=0;D=0?Z:M.length-1;var k=Z>=0?u(M,Z,V):[],$=u(M,0,N),te=u(M,Math.max(V,N),M.length);return new S($,k,te,[])}function c(R,M){for(var Z=f.splitOnPattern(R,B),V=f.splitOnPattern(M,B),N=-1,D=-1,k=0;k=0?u(Z,0,D):[],te=V,Ce=u(Z,Math.max(D,0));return new S(te,$,Ce,[])}function u(R,M,Z){for(var V=[],N=M;N<(Z===void 0?R.length:Z);N++)V.push(R[N]);return V}function C(R,M,Z){for(var V=f.splitOnPattern(R,B),N=f.splitOnPattern(Z,B),D=f.splitOnPattern(M,B),k=-1,$=-1,te=0;te=0?u(V,0,$):[],le=u(V,Math.max($,0));return new S(N,Ce,le,D)}function d(R){var M=f.splitOnComma(R);switch(M.length){case 1:return l(M[0]);case 2:return c(m(M[0]),m(M[1]));case 3:return C(m(M[0]),m(M[1]),m(M[2]));default:throw new Error("Could not parse author name: partitioned as "+JSON.stringify(M)+" in "+JSON.stringify(R))}}function h(R){return R!==void 0}function m(R){if(h(R))return R;throw new Error("???????")}Object.defineProperty(i,"__esModule",{value:!0});var v=s(0),y=s(1),A=s(5),b=s(2),f=s(3),B=/\s+/g,S=function(){function R(M,Z,V,N){this.firstNames$=M,this.vons$=Z,this.lastNames$=V,this.jrs$=N,this.initials=M.map(r),this.firstNames=M.map(f.toStringBibStringData),this.vons=Z.map(f.toStringBibStringData),this.lastNames=V.map(f.toStringBibStringData),this.jrs=N.map(f.toStringBibStringData),this.id=this.firstNames.join("-")+"-"+this.vons.join("-")+"-"+this.lastNames.join("-")+"-"+this.jrs.join("-")}return R}();i.AuthorName=S,i.parseAuthorName=d;var x=function(){function R(M,Z,V){this.first=M,this.von=Z,this.last=V}return R}();i.Authorrr=x},function(t,i,s){function r(A){return d.parseAuthorName(A)}function o(A){return C.isNumber(A)?a([A]):a(A.data,h.isOuterQuotedString(A))}function a(A,b){var f=v.globContiguousStrings(v.flattenQuotedStrings(A,b)),B=f.map(function(S){return v.isContiguousSimpleString(S)?v.joinContiguousSimpleStrings(S):S});return v.splitOnAnd(B)}function l(A){if(!c(A))throw new Error;return A}function c(A){return C.isArray(A.authors$)&&A.type==="authors"}var u=this&&this.__extends||function(){var A=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(b,f){b.__proto__=f}||function(b,f){for(var B in f)f.hasOwnProperty(B)&&(b[B]=f[B])};return function(b,f){function B(){this.constructor=b}A(b,f),b.prototype=f===null?Object.create(f):(B.prototype=f.prototype,new B)}}();Object.defineProperty(i,"__esModule",{value:!0});var C=s(0),d=s(8),h=s(1),m=s(4),v=s(3),y=function(A){function b(f){var B=this,S=C.isNumber(f)?[f]:f.data;B=A.call(this,"authors",S)||this;var x=o(f);return B.authors$=x.map(function(R){return r(R)}),B}return u(b,A),b}(m.BibOuterStringComponent);i.Authors=y,i.determineAuthorNames$=o,i.mustBeAuthors=l,i.isAuthors=c},function(t,i,s){function r(C){return C.type==="comment"&&a.isArray(C.data)}function o(C){return a.flattenMyArray(C).map(u)}Object.defineProperty(i,"__esModule",{value:!0});var a=s(0),l=function(){function C(d){this.type="comment",this.data=d,this.string=d.join("")}return C.prototype.toString=function(){return this.string},C}();i.BibComment=l;var c=function(){function C(d,h){this.type=d,this.data=h,this.string=h.join("")}return C.prototype.toString=function(){return this.string},C}();i.CommentEntry=c,i.isBibComment=r;var u=function(C){return a.isString(C)?C:typeof C=="number"?C.toString():C.type==="@bib"?"@"+a.mustBeString(C.string):C.type==="escapedEntry"?"\\"+u(C.data):a.mustBeString(C.string)};i.flattenPlainText=o},function(t,i,s){function r(d){var h={};return Object.keys(d).forEach(function(m){h[m]=u.parseFieldValue(d[m])}),h}function o(d){return typeof d.type=="string"&&typeof d._id=="string"&&!!d.fields}function a(d,h){var m={},v=d.fields;return Object.keys(d.fields).forEach(function(y){var A=c.resolveStringReference({},m,h,v[y]);switch(y){case"author":m[y]=new l.Authors(A);break;case"title":m[y]=A;break;case"incollection":default:m[y]=A}}),new C(d.type,d._id,m)}Object.defineProperty(i,"__esModule",{value:!0});var l=s(9),c=s(7),u=s(6),C=function(){function d(h,m,v){this.type=h,this._id=m,this.fields=v,this.sortkey$="",this.title$=""}return d.prototype.getField=function(h){return this.fields[h.toLowerCase()]},d.prototype.getFieldAsString=function(h){var m=this.getField(h);return u.normalizeFieldValue(m)},d.prototype.getAuthors=function(){var h=this.fields.author;return h===void 0?h:l.mustBeAuthors(h)},d}();i.BibEntry=C,i.parseEntryFields=r,i.isBibEntry=o,i.processEntry=a},function(t,i,s){function r(u){return u.type==="preamble"&&!!u.data}function o(u){var C=l.parseBibEntriesAndNonEntries(a.mustBeArray(u.data));return new c(C)}Object.defineProperty(i,"__esModule",{value:!0});var a=s(0),l=s(13),c=function(){function u(C){this.type="preamble",this.data=C,this.string=C.join("")}return u.prototype.toString=function(){return this.string},u}();i.Preamble=c,i.isPreamble=r,i.newPreambleNode=o},function(t,i,s){function r(b){if(!u.isArray(b.data)||b.type!=="NON_ENTRY")throw new Error;return new h.BibComment(h.flattenPlainText(b.data))}function o(b){switch(typeof b){case"object":var f=b.data;if(typeof f["@type"]=="string")return new d.BibEntry(f["@type"],f._id,d.parseEntryFields(f.fields));switch(u.mustBeString(f.type)){case"string":return v.newStringEntry(f);case"preamble":return m.newPreambleNode(f);default:throw new Error("Unexpected entry parsed: "+f.type)}default:throw new Error("Expected object as data for entry")}}function a(b){var f=new l.Parser(c.grammar.ParserRules,c.grammar.ParserStart);f.feed(new y.default(b).readTokens());var B=f.results,S=B[0];return new A(i.parseBibEntriesAndNonEntries(S))}Object.defineProperty(i,"__esModule",{value:!0});var l=s(19),c=s(20),u=s(0),C=s(6),d=s(11),h=s(10),m=s(12),v=s(7),y=s(21),A=function(){function b(f){var B=this;this.content=f,this.comments=f.filter(h.isBibComment).map(function(R){if(h.isBibComment(R))return R;throw new Error}),this.preambles_raw=f.filter(function(R){return m.isPreamble(R)}).map(function(R){if(m.isPreamble(R))return R;throw new Error}),this.preamble$=this.preambles_raw.map(function(R){return R.toString()}).join(` +`;var TV={exports:{}};(function(n,e){(function(t,i){n.exports=i()})(e5,function(){return function(t){function i(r){if(s[r])return s[r].exports;var o=s[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,i),o.l=!0,o.exports}var s={};return i.m=t,i.c=s,i.d=function(r,o,a){i.o(r,o)||Object.defineProperty(r,o,{configurable:!1,enumerable:!0,get:a})},i.n=function(r){var o=r&&r.__esModule?function(){return r.default}:function(){return r};return i.d(o,"a",o),o},i.o=function(r,o){return Object.prototype.hasOwnProperty.call(r,o)},i.p="",i(i.s=17)}([function(t,i,s){function r(C,d){if(typeof C!="string")throw new Error("Expected to be string: "+JSON.stringify(d||C));return C}function o(C,d){if(C===void 0)throw new Error("Expected to be defined: "+JSON.stringify(d||C));return C}function a(C,d){if(!l(C))throw new Error("Expected to be array: "+JSON.stringify(d||C));return C}function l(C){return!!C&&C.constructor===Array}function c(C){return typeof C=="number"}function u(C){return typeof C=="string"}Object.defineProperty(i,"__esModule",{value:!0}),i.mustBeString=r,i.mustBeDefined=o,i.mustBeArray=a,i.isArray=l,i.isNumber=c,i.isString=u,i.flattenMyArray=function(C,d){d||(d=[]);for(var h=0,m=C.length;h0)){var $=R.exec(D),te=0;if($){do{var Ce=te;te=$.index+$[0].length,V.push(D.substring(Ce,$.index)),(M===void 0||M>0)&&(Z.push(V),V=[],M!==void 0&&M>0&&M--),$=M===void 0||M>0?R.exec(D):void 0}while($);te>0&&te0&&Z.push(V),Z}Object.defineProperty(i,"__esModule",{value:!0});var A=s(5),b=s(2),f=s(1),B=s(0);i.isBibStringComponent=r,i.isContiguousSimpleString=o,i.joinContiguousSimpleStrings=a,i.parseStringComponent=l,i.toStringBibStringDatum=c,i.toStringBibStringData=u,i.flattenQuotedStrings=C;var S=['"'];i.globContiguousStrings=h,i.splitOnAnd=m,i.splitOnComma=v,i.splitOnPattern=y},function(t,i,s){var r=this&&this.__extends||function(){var c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(u,C){u.__proto__=C}||function(u,C){for(var d in C)C.hasOwnProperty(d)&&(u[d]=C[d])};return function(u,C){function d(){this.constructor=u}c(u,C),u.prototype=C===null?Object.create(C):(d.prototype=C.prototype,new d)}}();Object.defineProperty(i,"__esModule",{value:!0});var o=s(0),a=function(){function c(u,C,d){this.type=u,this.braceDepth=C,this.data=d}return c.isBibStringComponent=function(u){return typeof u.braceDepth=="number"&&typeof u.type=="string"},c.stringifyDatum=function(u){if(o.isString(u))return u;if(o.isNumber(u))return u.toString();if(c.isBibStringComponent(u))return u.stringify();throw new Error("Unexpected state")},c.prototype.stringify=function(){return this.data.map(c.stringifyDatum).join("")},c}();i.BibStringComponent=a;var l=function(c){function u(C,d){return c.call(this,C,0,d)||this}return r(u,c),u}(a);i.BibOuterStringComponent=l},function(t,i,s){function r(a){return typeof a.stringref=="string"}Object.defineProperty(i,"__esModule",{value:!0});var o=function(){function a(l,c){this.braceDepth=l,this.stringref=c}return a}();i.StringRef=o,i.isStringRef=r},function(t,i,s){function r(h){return typeof h.key=="string"&&h.value!==void 0}function o(h){if(r(h))return{key:h.key,value:a(h.value)};throw new Error("Was not a KeyVal: "+JSON.stringify(h))}function a(h){if(C.isNumber(h))return h;var m=C.mustBeArray(h.data);switch(h.type){case"quotedstringwrapper":return m.length===1&&C.isNumber(m[0])?m[0]:new u.OuterQuotedString(m.map(function(v){return d.parseStringComponent(0,v)}));case"bracedstringwrapper":return new c.OuterBracedString(m.map(function(v){return d.parseStringComponent(0,v)}));default:throw new Error("Unexpected value: "+JSON.stringify(h))}}function l(h){if(h)return C.isNumber(h)?h:h.stringify()}Object.defineProperty(i,"__esModule",{value:!0});var c=s(2),u=s(1),C=s(0),d=s(3);i.isKeyVal=r,i.newKeyVal=o,i.parseFieldValue=a,i.normalizeFieldValue=l},function(t,i,s){function r(B){var S=o(B),x=S.key,R=S.value;return new f(x,R)}function o(B){if(h.isKeyVal(B))return h.newKeyVal(B);if(B.type!=="string")throw new Error("Unexpected node: "+JSON.stringify(B));return o(B.data)}function a(B){var S={};return Object.keys(B).forEach(function(x){S[x]||(S[x]=c({},S,B,B[x]))}),S}function l(B,S,x,R){return B.data.map(function(M){if(A.isString(M)||A.isNumber(M))return M;if(m.isStringRef(M))return u(S,R,M,x);if(b.isBibStringComponent(M))return C(M,S,x,R);throw new Error})}function c(B,S,x,R){return A.isNumber(R)?R:y.isOuterBracedString(R)||v.isOuterQuotedString(R)?d(R,B,S,x):m.isStringRef(R)?u(B,x,R,S):R}function u(B,S,x,R){var M=x.stringref;if(B[M])throw new Error("Cycle detected: "+M);if(R[M])return R[M];if(!S[M])throw new Error('Unresolved reference: "'+x.stringref+'" ('+JSON.stringify(x)+")");return R[M]=c(Object.assign({},B,(Z={},Z[M]=!0,Z)),R,S,S[M]),R[M];var Z}function C(B,S,x,R){var M=l(B,S,x,R),Z=B.braceDepth;if(v.isQuotedString(B))return new v.QuotedString(Z,M);if(y.isBracedString(B))return new y.BracedString(Z,M);if(v.isOuterQuotedString(B))return new v.OuterQuotedString(M);if(y.isOuterBracedString(B))return new y.OuterBracedString(M);throw new Error}function d(B,S,x,R){var M=C(B,S,x,R);if(!y.isOuterBracedString(M)&&!v.isOuterQuotedString(M))throw new Error;return M}Object.defineProperty(i,"__esModule",{value:!0});var h=s(6),m=s(5),v=s(1),y=s(2),A=s(0),b=s(3),f=function(){function B(S,x){this.type="string",this.key=S,this.value=x}return B}();i.BibStringEntry=f,i.newStringEntry=r,i.resolveStrings=a,i.resolveStringReferences=l,i.resolveStringReference=c,i.copyWithResolvedStringReferences=C,i.copyOuterWithResolvedStringReferences=d},function(t,i,s){function r(R){var M=f.toStringBibStringData(R);return M?M.charAt(0):""}function o(R){return R.length>0&&a(R[0])}function a(R){if(v.isString(R)){if(!R)return!1;var M=R.charAt(0);return M.toLowerCase()===M&&M.toUpperCase()!==M}if(y.isQuotedString(R))return!(!R.data||R.data.length<=0)&&a(R.data[0]);if(A.isStringRef(R)||y.isOuterQuotedString(R)||b.isOuterBracedString(R))throw new Error("Should not do this test on this type");return!1}function l(R){for(var M=f.splitOnPattern(R,B),Z=-1,V=-1,N=-1,U=0;U=0?Z:M.length-1;var D=Z>=0?u(M,Z,V):[],$=u(M,0,N),te=u(M,Math.max(V,N),M.length);return new S($,D,te,[])}function c(R,M){for(var Z=f.splitOnPattern(R,B),V=f.splitOnPattern(M,B),N=-1,U=-1,D=0;D=0?u(Z,0,U):[],te=V,Ce=u(Z,Math.max(U,0));return new S(te,$,Ce,[])}function u(R,M,Z){for(var V=[],N=M;N<(Z===void 0?R.length:Z);N++)V.push(R[N]);return V}function C(R,M,Z){for(var V=f.splitOnPattern(R,B),N=f.splitOnPattern(Z,B),U=f.splitOnPattern(M,B),D=-1,$=-1,te=0;te=0?u(V,0,$):[],le=u(V,Math.max($,0));return new S(N,Ce,le,U)}function d(R){var M=f.splitOnComma(R);switch(M.length){case 1:return l(M[0]);case 2:return c(m(M[0]),m(M[1]));case 3:return C(m(M[0]),m(M[1]),m(M[2]));default:throw new Error("Could not parse author name: partitioned as "+JSON.stringify(M)+" in "+JSON.stringify(R))}}function h(R){return R!==void 0}function m(R){if(h(R))return R;throw new Error("???????")}Object.defineProperty(i,"__esModule",{value:!0});var v=s(0),y=s(1),A=s(5),b=s(2),f=s(3),B=/\s+/g,S=function(){function R(M,Z,V,N){this.firstNames$=M,this.vons$=Z,this.lastNames$=V,this.jrs$=N,this.initials=M.map(r),this.firstNames=M.map(f.toStringBibStringData),this.vons=Z.map(f.toStringBibStringData),this.lastNames=V.map(f.toStringBibStringData),this.jrs=N.map(f.toStringBibStringData),this.id=this.firstNames.join("-")+"-"+this.vons.join("-")+"-"+this.lastNames.join("-")+"-"+this.jrs.join("-")}return R}();i.AuthorName=S,i.parseAuthorName=d;var x=function(){function R(M,Z,V){this.first=M,this.von=Z,this.last=V}return R}();i.Authorrr=x},function(t,i,s){function r(A){return d.parseAuthorName(A)}function o(A){return C.isNumber(A)?a([A]):a(A.data,h.isOuterQuotedString(A))}function a(A,b){var f=v.globContiguousStrings(v.flattenQuotedStrings(A,b)),B=f.map(function(S){return v.isContiguousSimpleString(S)?v.joinContiguousSimpleStrings(S):S});return v.splitOnAnd(B)}function l(A){if(!c(A))throw new Error;return A}function c(A){return C.isArray(A.authors$)&&A.type==="authors"}var u=this&&this.__extends||function(){var A=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(b,f){b.__proto__=f}||function(b,f){for(var B in f)f.hasOwnProperty(B)&&(b[B]=f[B])};return function(b,f){function B(){this.constructor=b}A(b,f),b.prototype=f===null?Object.create(f):(B.prototype=f.prototype,new B)}}();Object.defineProperty(i,"__esModule",{value:!0});var C=s(0),d=s(8),h=s(1),m=s(4),v=s(3),y=function(A){function b(f){var B=this,S=C.isNumber(f)?[f]:f.data;B=A.call(this,"authors",S)||this;var x=o(f);return B.authors$=x.map(function(R){return r(R)}),B}return u(b,A),b}(m.BibOuterStringComponent);i.Authors=y,i.determineAuthorNames$=o,i.mustBeAuthors=l,i.isAuthors=c},function(t,i,s){function r(C){return C.type==="comment"&&a.isArray(C.data)}function o(C){return a.flattenMyArray(C).map(u)}Object.defineProperty(i,"__esModule",{value:!0});var a=s(0),l=function(){function C(d){this.type="comment",this.data=d,this.string=d.join("")}return C.prototype.toString=function(){return this.string},C}();i.BibComment=l;var c=function(){function C(d,h){this.type=d,this.data=h,this.string=h.join("")}return C.prototype.toString=function(){return this.string},C}();i.CommentEntry=c,i.isBibComment=r;var u=function(C){return a.isString(C)?C:typeof C=="number"?C.toString():C.type==="@bib"?"@"+a.mustBeString(C.string):C.type==="escapedEntry"?"\\"+u(C.data):a.mustBeString(C.string)};i.flattenPlainText=o},function(t,i,s){function r(d){var h={};return Object.keys(d).forEach(function(m){h[m]=u.parseFieldValue(d[m])}),h}function o(d){return typeof d.type=="string"&&typeof d._id=="string"&&!!d.fields}function a(d,h){var m={},v=d.fields;return Object.keys(d.fields).forEach(function(y){var A=c.resolveStringReference({},m,h,v[y]);switch(y){case"author":m[y]=new l.Authors(A);break;case"title":m[y]=A;break;case"incollection":default:m[y]=A}}),new C(d.type,d._id,m)}Object.defineProperty(i,"__esModule",{value:!0});var l=s(9),c=s(7),u=s(6),C=function(){function d(h,m,v){this.type=h,this._id=m,this.fields=v,this.sortkey$="",this.title$=""}return d.prototype.getField=function(h){return this.fields[h.toLowerCase()]},d.prototype.getFieldAsString=function(h){var m=this.getField(h);return u.normalizeFieldValue(m)},d.prototype.getAuthors=function(){var h=this.fields.author;return h===void 0?h:l.mustBeAuthors(h)},d}();i.BibEntry=C,i.parseEntryFields=r,i.isBibEntry=o,i.processEntry=a},function(t,i,s){function r(u){return u.type==="preamble"&&!!u.data}function o(u){var C=l.parseBibEntriesAndNonEntries(a.mustBeArray(u.data));return new c(C)}Object.defineProperty(i,"__esModule",{value:!0});var a=s(0),l=s(13),c=function(){function u(C){this.type="preamble",this.data=C,this.string=C.join("")}return u.prototype.toString=function(){return this.string},u}();i.Preamble=c,i.isPreamble=r,i.newPreambleNode=o},function(t,i,s){function r(b){if(!u.isArray(b.data)||b.type!=="NON_ENTRY")throw new Error;return new h.BibComment(h.flattenPlainText(b.data))}function o(b){switch(typeof b){case"object":var f=b.data;if(typeof f["@type"]=="string")return new d.BibEntry(f["@type"],f._id,d.parseEntryFields(f.fields));switch(u.mustBeString(f.type)){case"string":return v.newStringEntry(f);case"preamble":return m.newPreambleNode(f);default:throw new Error("Unexpected entry parsed: "+f.type)}default:throw new Error("Expected object as data for entry")}}function a(b){var f=new l.Parser(c.grammar.ParserRules,c.grammar.ParserStart);f.feed(new y.default(b).readTokens());var B=f.results,S=B[0];return new A(i.parseBibEntriesAndNonEntries(S))}Object.defineProperty(i,"__esModule",{value:!0});var l=s(19),c=s(20),u=s(0),C=s(6),d=s(11),h=s(10),m=s(12),v=s(7),y=s(21),A=function(){function b(f){var B=this;this.content=f,this.comments=f.filter(h.isBibComment).map(function(R){if(h.isBibComment(R))return R;throw new Error}),this.preambles_raw=f.filter(function(R){return m.isPreamble(R)}).map(function(R){if(m.isPreamble(R))return R;throw new Error}),this.preamble$=this.preambles_raw.map(function(R){return R.toString()}).join(` `);var S={};this.content.forEach(function(R){if(C.isKeyVal(R)){if(S[R.key])throw new Error("String with id "+R.key+" was defined more than once");S[R.key]=R.value}}),this.strings_raw=S,this.strings$=v.resolveStrings(S),this.entries_raw=f.filter(function(R){return d.isBibEntry(R)}).map(function(R){if(d.isBibEntry(R))return R;throw new Error});var x={};this.entries_raw.forEach(function(R){var M=R._id.toLowerCase();if(x[M])throw new Error("Entry with id "+M+" was defined more than once");x[M]=d.processEntry(R,B.strings$)}),this.entries$=x}return b.prototype.getEntry=function(f){return this.entries$[f.toLowerCase()]},b}();i.BibFilePresenter=A,i.parseBibEntriesAndNonEntries=function(b){return b.map(function(f){switch(f.type){case"NON_ENTRY":return r(f);case"ENTRY":return o(f);default:throw new Error("Expected ENTRY or NON_ENTRY")}})},i.parseBibFile=a},function(t,i,s){function r(l,c){return{type:l,string:c}}function o(l){return i.specialChars.hasOwnProperty(l)}function a(l){return i.escapableChars.hasOwnProperty(l)}Object.defineProperty(i,"__esModule",{value:!0}),i.newToken=r,i.specialChars={"@":!0,"(":!0,")":!0,"{":!0,"}":!0,"#":!0,"=":!0,",":!0,"\\":!0,'"':!0},i.isSpecialChar=o,i.escapableChars={"\\":!0,"@":!0,"{":!0,"}":!0},i.isEscapableChar=a},function(t,i,s){function r(l){return{type:"ws",string:l}}function o(l){return typeof l.string=="string"&&l.type===i.WS}function a(l){return i.singleWhitespaces.hasOwnProperty(l)}Object.defineProperty(i,"__esModule",{value:!0}),i.WS="ws",i.newWhitespace=r,i.isWhitespace=o,i.singleWhitespaces={" ":!0," ":!0,"\r":!0,"\n":!0},i.isSingleWhiteSpaceCharacter=a},function(t,i,s){function r(a){return{type:"number",string:a}}function o(a){return i.numericChars.hasOwnProperty(a)}Object.defineProperty(i,"__esModule",{value:!0}),i.newNumber=r,i.numericChars={0:!0,1:!0,2:!0,3:!0,4:!0,5:!0,6:!0,7:!0,8:!0,9:!0},i.isNum=o},function(t,i,s){function r(o){for(var a in o)i.hasOwnProperty(a)||(i[a]=o[a])}Object.defineProperty(i,"__esModule",{value:!0}),r(s(8)),r(s(9)),r(s(18)),r(s(10)),r(s(11)),r(s(12)),r(s(7)),r(s(3)),r(s(4)),r(s(2)),r(s(1)),r(s(5)),r(s(6)),r(s(13)),r(s(0))},function(t,i,s){function r(u){return i.optionalFields.hasOwnProperty(u)}function o(u){return i.mandatoryFields.hasOwnProperty(u)}function a(u){return o(u)?i.mandatoryFields[u]:[]}function l(u){return r(u)?i.optionalFields[u]:[]}Object.defineProperty(i,"__esModule",{value:!0});var c=s(0);i.address="address",i.author="author",i.booktitle="booktitle",i.chapter="chapter",i.edition="edition",i.editor="editor",i.howpublished="howpublished",i.institution="institution",i.journal="journal",i.month="month",i.note="note",i.number="number",i.organization="organization",i.pages="pages",i.publisher="publisher",i.school="school",i.series="series",i.title="title",i.type="type",i.volume="volume",i.year="year",i.optionalFields={book:[["volume","number"],"series","address","edition","month","note"],booklet:["author","howpublished","address","address","month","year","note"],conference:["editor",["volume","number"],"series","pages","address","month","organization","publisher","note"],inproceedings:["editor",["volume","number"],i.series,"pages","address","month","organization","publisher","note"],inbook:["volume","number","series","type","address","edition","month","note"],incollection:["editor",["volume","number"],"series","type","chapter","pages","address","edition","month","note"],manual:["author","organization","year","address","edition","month","note"],mastersthesis:["type","address","month","note"],misc:[],phdthesis:["type","address","month","note"],proceedings:["editor",["volume","number"],"series","address","month","organization","publisher","note"],techreport:["type","address","number","month","note"],unpublished:["month","year"]},i.mandatoryFields={article:["author","title","year","journal"],book:[["author","editor"],"title","publisher","year"],booklet:["title"],conference:["author","title","booktitle","year"],inproceedings:["author","title","booktitle","year"],inbook:[["author","editor"],"title",["chapter","pages"]],incollection:["author","title","booktitle","publisher","year"],manual:["title"],mastersthesis:["author","title","school","year"],misc:[["author","title","howpublished","year","month","note"]],phdthesis:["author","title","school","year"],proceedings:["year","title"],techreport:["author","title","institution","year"],unpublished:["author","title","note"]},i.hasOptionalFields=r,i.hasMandatoryFields=o,i.getMandatoryFields=a,i.getOptionalFields=l,i.findError=function(u,C){var d=u.fields;if(c.isString(C)){if(!d[C])return new Error("Warning: expected "+u.type+" with id "+u._id+" to have the field: "+C)}else if(c.isArray(C)){var h=C.reduce(function(m,v){if(c.isString(v))return m&&d.hasOwnProperty(v);throw new Error},!0);if(!h)return new Error("Expected "+u.type+" with id "+u._id+" to have one of the following fields: "+C)}}},function(t,i){(function(s,r){typeof t=="object"&&t.exports?t.exports=r():s.nearley=r()})(this,function(){function s(u,C,d){return this.id=++s.highestId,this.name=u,this.symbols=C,this.postprocess=d,this}function r(u,C,d,h){this.rule=u,this.dot=C,this.reference=d,this.data=[],this.wantedBy=h,this.isComplete=this.dot===u.symbols.length}function o(u,C){this.grammar=u,this.index=C,this.states=[],this.wants={},this.scannable=[],this.completed={}}function a(u,C){this.rules=u,this.start=C||this.rules[0].name;var d=this.byName={};this.rules.forEach(function(h){d.hasOwnProperty(h.name)||(d[h.name]=[]),d[h.name].push(h)})}function l(){this.reset("")}function c(u,C,h){if(u instanceof a)var m=u,h=C;else var m=a.fromCompiled(u,C);this.grammar=m,this.options={keepHistory:!1,lexer:m.lexer||new l};for(var v in h||{})this.options[v]=h[v];this.lexer=this.options.lexer,this.lexerState=void 0;var y=new o(m,0);this.table=[y],y.wants[m.start]=[],y.predict(m.start),y.process(),this.current=0}return s.highestId=0,s.prototype.toString=function(u){function C(h){return h.literal?JSON.stringify(h.literal):h.type?"%"+h.type:h.toString()}var d=u===void 0?this.symbols.map(C).join(" "):this.symbols.slice(0,u).map(C).join(" ")+" ● "+this.symbols.slice(u).map(C).join(" ");return this.name+" → "+d},r.prototype.toString=function(){return"{"+this.rule.toString(this.dot)+"}, from: "+(this.reference||0)},r.prototype.nextState=function(u){var C=new r(this.rule,this.dot+1,this.reference,this.wantedBy);return C.left=this,C.right=u,C.isComplete&&(C.data=C.build()),C},r.prototype.build=function(){var u=[],C=this;do u.push(C.right.data),C=C.left;while(C.left);return u.reverse(),u},r.prototype.finish=function(){this.rule.postprocess&&(this.data=this.rule.postprocess(this.data,this.reference,c.fail))},o.prototype.process=function(u){for(var C=this.states,d=this.wants,h=this.completed,m=0;m=this.str.length)){var d=this.str.charAt(this.pos);return o.isSingleWhiteSpaceCharacter(d)?this.eatWhiteSpace():r.isSpecialChar(d)?this.eatSpecialChars(d):a.isNum(d)?this.eatNumericString(d):this.eatIdString()}},C.prototype.eatIdString=function(){for(var d=[],h=this.pos,m=h;m{switch(n){case"workshop":case"conference":return Gu.normalizeFieldValue(e.getField("booktitle"));case"journal":return Gu.normalizeFieldValue(e.getField("journal"));case"preprint":throw new Error("cannot get venue for preprint")}},bP=n=>` +`;var M=new Error(R);throw M.offset=this.current,M.token=d,M}this.options.keepHistory&&(h.lexerState=C.save()),this.current++}return h&&(this.lexerState=C.save()),this.results=this.finish(),this},c.prototype.save=function(){var u=this.table[this.current];return u.lexerState=this.lexerState,u},c.prototype.restore=function(u){var C=u.index;this.current=C,this.table[C]=u,this.table.splice(C+1),this.lexerState=u.lexerState,this.results=this.finish()},c.prototype.rewind=function(u){if(!this.options.keepHistory)throw new Error("set option `keepHistory` to enable rewinding");this.restore(this.table[u])},c.prototype.finish=function(){var u=[],C=this.grammar.start;return this.table[this.table.length-1].states.forEach(function(d){d.rule.name===C&&d.dot===d.rule.symbols.length&&d.reference===0&&d.data!==c.fail&&u.push(d)}),u.map(function(d){return d.data})},{Parser:c,Grammar:a,Rule:s}})},function(t,i,s){function r(Z){return Z[0]}function o(Z,V){if(V.type!=="keyval")throw new Error("Expected a keyval object");var N=V.key.toLowerCase();return Z.fields[N]?void 0:(Z.fields[N]=V.value,Z)}function a(Z){for(var V=[],N=0;N=this.str.length)){var d=this.str.charAt(this.pos);return o.isSingleWhiteSpaceCharacter(d)?this.eatWhiteSpace():r.isSpecialChar(d)?this.eatSpecialChars(d):a.isNum(d)?this.eatNumericString(d):this.eatIdString()}},C.prototype.eatIdString=function(){for(var d=[],h=this.pos,m=h;m{switch(n){case"workshop":case"conference":return wu.normalizeFieldValue(e.getField("booktitle"));case"journal":return wu.normalizeFieldValue(e.getField("journal"));case"preprint":throw new Error("cannot get venue for preprint")}},RP=n=>` @${n.type} { ${Object.entries(n.fields).map(([e,t])=>` ${e} = {${n.getFieldAsString(e)}}`).join(`, `)} } -`,vP=(n,e,t)=>{const i=e.getField("author"),s=e.getField("title"),r=e.getField("series");if(i&&s&&r)return{title:Gu.normalizeFieldValue(s),authors:i.authors$.map(o=>o.firstNames.concat(o.vons).concat(o.lastNames).concat(o.jrs).join(" ")),series:Gu.normalizeFieldValue(r).replace(/\s/g,""),venue:fP(t.type,e),id:n,bibtex:bP(e),...t};throw new Error(`cannot read field from entry ${e._id}`)},yP=n=>Object.entries(mP).map(([e,t])=>{const i=n.getEntry(e);if(i)return vP(e,i,t);throw new Error(`cannot find bib entry ${e}`)}),GP=[{title:"Codifying Visual Representations",authors:["Wode Ni","Sam Estep","Hwei-Shin Harriman","Jiří Minarčík","Joshua Sunshine"],venue:"DIAGRAMS 2024",id:"diagrams-24",series:"DIAGRAMS'24",type:"preprint",pdf:new URL("/assets/diagrams-24-penrose.pdf",self.location).href,coauthors:["Wode Ni","Sam Estep","Hwei-Shin Harriman"]},{id:"rose-24",title:"Rose: Efficient and Extensible Autodiff on the Web",authors:["Sam Estep","Wode Ni","Raven Rothkopf","Joshua Sunshine"],venue:"ECOOP 2024",series:"ECOOP'24",type:"preprint",pdf:"https://arxiv.org/pdf/2402.17743.pdf"}],BP=[...GP,...yP(pP)];/** +`,WP=(n,e,t)=>{const i=e.getField("author"),s=e.getField("title"),r=e.getField("series");if(i&&s&&r)return{title:wu.normalizeFieldValue(s),authors:i.authors$.map(o=>o.firstNames.concat(o.vons).concat(o.lastNames).concat(o.jrs).join(" ")),series:wu.normalizeFieldValue(r).replace(/\s/g,""),venue:xP(t.type,e),id:n,bibtex:RP(e),...t};throw new Error(`cannot read field from entry ${e._id}`)},VP=n=>Object.entries(SP).map(([e,t])=>{const i=n.getEntry(e);if(i)return WP(e,i,t);throw new Error(`cannot find bib entry ${e}`)}),MP=[{title:"Codifying Visual Representations",authors:["Wode Ni","Sam Estep","Hwei-Shin Harriman","Jiří Minarčík","Joshua Sunshine"],venue:"DIAGRAMS 2024",id:"diagrams-24",series:"DIAGRAMS'24",type:"preprint",pdf:new URL("/assets/diagrams-24-penrose.pdf",self.location).href,coauthors:["Wode Ni","Sam Estep","Hwei-Shin Harriman"]},{id:"rose-24",title:"Rose: Efficient and Extensible Autodiff on the Web",authors:["Sam Estep","Wode Ni","Raven Rothkopf","Joshua Sunshine"],venue:"ECOOP 2024",series:"ECOOP'24",type:"preprint",pdf:"https://arxiv.org/pdf/2402.17743.pdf"}],NP=[...MP,...VP(wP)];/** * @remix-run/router v1.6.2 * * Copyright (c) Remix Software Inc. @@ -5002,7 +5002,7 @@ ${Object.entries(n.fields).map(([e,t])=>` ${e} = {${n.getFieldAsString(e)}}`).jo * LICENSE.md file in the root directory of this source tree. * * @license MIT - */function Bu(){return Bu=Object.assign?Object.assign.bind():function(n){for(var e=1;e"u")throw new Error(e)}function wP(){return Math.random().toString(36).substr(2,8)}function IS(n,e){return{usr:n.state,key:n.key,idx:e}}function mb(n,e,t,i){return t===void 0&&(t=null),Bu({pathname:typeof n=="string"?n:n.pathname,search:"",hash:""},typeof e=="string"?jA(e):e,{state:t,key:e&&e.key||i||wP()})}function gA(n){let{pathname:e="/",search:t="",hash:i=""}=n;return t&&t!=="?"&&(e+=t.charAt(0)==="?"?t:"?"+t),i&&i!=="#"&&(e+=i.charAt(0)==="#"?i:"#"+i),e}function jA(n){let e={};if(n){let t=n.indexOf("#");t>=0&&(e.hash=n.substr(t),n=n.substr(0,t));let i=n.indexOf("?");i>=0&&(e.search=n.substr(i),n=n.substr(0,i)),n&&(e.pathname=n)}return e}function SP(n,e,t,i){i===void 0&&(i={});let{window:s=document.defaultView,v5Compat:r=!1}=i,o=s.history,a=tl.Pop,l=null,c=u();c==null&&(c=0,o.replaceState(Bu({},o.state,{idx:c}),""));function u(){return(o.state||{idx:null}).idx}function C(){a=tl.Pop;let y=u(),A=y==null?null:y-c;c=y,l&&l({action:a,location:v.location,delta:A})}function d(y,A){a=tl.Push;let b=mb(v.location,y,A);t&&t(b,y),c=u()+1;let f=IS(b,c),B=v.createHref(b);try{o.pushState(f,"",B)}catch{s.location.assign(B)}r&&l&&l({action:a,location:v.location,delta:1})}function h(y,A){a=tl.Replace;let b=mb(v.location,y,A);t&&t(b,y),c=u();let f=IS(b,c),B=v.createHref(b);o.replaceState(f,"",B),r&&l&&l({action:a,location:v.location,delta:0})}function m(y){let A=s.location.origin!=="null"?s.location.origin:s.location.href,b=typeof y=="string"?y:gA(y);return cr(A,"No window.location.(origin|href) available to create URL for href: "+b),new URL(b,A)}let v={get action(){return a},get location(){return n(s,o)},listen(y){if(l)throw new Error("A history only accepts one active listener");return s.addEventListener(cS,C),l=y,()=>{s.removeEventListener(cS,C),l=null}},createHref(y){return e(s,y)},createURL:m,encodeLocation(y){let A=m(y);return{pathname:A.pathname,search:A.search,hash:A.hash}},push:d,replace:h,go(y){return o.go(y)}};return v}var uS;(function(n){n.data="data",n.deferred="deferred",n.redirect="redirect",n.error="error"})(uS||(uS={}));function YV(n,e){if(e==="/")return n;if(!n.toLowerCase().startsWith(e.toLowerCase()))return null;let t=e.endsWith("/")?e.length-1:e.length,i=n.charAt(t);return i&&i!=="/"?null:n.slice(t)||"/"}function xP(n,e){e===void 0&&(e="/");let{pathname:t,search:i="",hash:s=""}=typeof n=="string"?jA(n):n;return{pathname:t?t.startsWith("/")?t:RP(t,e):e,search:WP(i),hash:VP(s)}}function RP(n,e){let t=e.replace(/\/+$/,"").split("/");return n.split("/").forEach(s=>{s===".."?t.length>1&&t.pop():s!=="."&&t.push(s)}),t.length>1?t.join("/"):"/"}function Rf(n,e,t,i){return"Cannot include a '"+n+"' character in a manually specified "+("`to."+e+"` field ["+JSON.stringify(i)+"]. Please separate it out to the ")+("`to."+t+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function FV(n){return n.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function KV(n,e,t,i){i===void 0&&(i=!1);let s;typeof n=="string"?s=jA(n):(s=Bu({},n),cr(!s.pathname||!s.pathname.includes("?"),Rf("?","pathname","search",s)),cr(!s.pathname||!s.pathname.includes("#"),Rf("#","pathname","hash",s)),cr(!s.search||!s.search.includes("#"),Rf("#","search","hash",s)));let r=n===""||s.pathname==="",o=r?"/":s.pathname,a;if(i||o==null)a=t;else{let C=e.length-1;if(o.startsWith("..")){let d=o.split("/");for(;d[0]==="..";)d.shift(),C-=1;s.pathname=d.join("/")}a=C>=0?e[C]:"/"}let l=xP(s,a),c=o&&o!=="/"&&o.endsWith("/"),u=(r||o===".")&&t.endsWith("/");return!l.pathname.endsWith("/")&&(c||u)&&(l.pathname+="/"),l}const zV=n=>n.join("/").replace(/\/\/+/g,"/"),WP=n=>!n||n==="?"?"":n.startsWith("?")?n:"?"+n,VP=n=>!n||n==="#"?"":n.startsWith("#")?n:"#"+n,LV=["post","put","patch","delete"];new Set(LV);const MP=["get",...LV];new Set(MP);/** + */function Su(){return Su=Object.assign?Object.assign.bind():function(n){for(var e=1;e"u")throw new Error(e)}function yy(n,e){if(!n){typeof console<"u"&&console.warn(e);try{throw new Error(e)}catch{}}}function XP(){return Math.random().toString(36).substr(2,8)}function pS(n,e){return{usr:n.state,key:n.key,idx:e}}function yb(n,e,t,i){return t===void 0&&(t=null),Su({pathname:typeof n=="string"?n:n.pathname,search:"",hash:""},typeof e=="string"?bc(e):e,{state:t,key:e&&e.key||i||XP()})}function hA(n){let{pathname:e="/",search:t="",hash:i=""}=n;return t&&t!=="?"&&(e+=t.charAt(0)==="?"?t:"?"+t),i&&i!=="#"&&(e+=i.charAt(0)==="#"?i:"#"+i),e}function bc(n){let e={};if(n){let t=n.indexOf("#");t>=0&&(e.hash=n.substr(t),n=n.substr(0,t));let i=n.indexOf("?");i>=0&&(e.search=n.substr(i),n=n.substr(0,i)),n&&(e.pathname=n)}return e}function YP(n,e,t,i){i===void 0&&(i={});let{window:s=document.defaultView,v5Compat:r=!1}=i,o=s.history,a=_o.Pop,l=null,c=u();c==null&&(c=0,o.replaceState(Su({},o.state,{idx:c}),""));function u(){return(o.state||{idx:null}).idx}function C(){a=_o.Pop;let y=u(),A=y==null?null:y-c;c=y,l&&l({action:a,location:v.location,delta:A})}function d(y,A){a=_o.Push;let b=yb(v.location,y,A);t&&t(b,y),c=u()+1;let f=pS(b,c),B=v.createHref(b);try{o.pushState(f,"",B)}catch{s.location.assign(B)}r&&l&&l({action:a,location:v.location,delta:1})}function h(y,A){a=_o.Replace;let b=yb(v.location,y,A);t&&t(b,y),c=u();let f=pS(b,c),B=v.createHref(b);o.replaceState(f,"",B),r&&l&&l({action:a,location:v.location,delta:0})}function m(y){let A=s.location.origin!=="null"?s.location.origin:s.location.href,b=typeof y=="string"?y:hA(y);return Yn(A,"No window.location.(origin|href) available to create URL for href: "+b),new URL(b,A)}let v={get action(){return a},get location(){return n(s,o)},listen(y){if(l)throw new Error("A history only accepts one active listener");return s.addEventListener(AS,C),l=y,()=>{s.removeEventListener(AS,C),l=null}},createHref(y){return e(s,y)},createURL:m,encodeLocation(y){let A=m(y);return{pathname:A.pathname,search:A.search,hash:A.hash}},push:d,replace:h,go(y){return o.go(y)}};return v}var mS;(function(n){n.data="data",n.deferred="deferred",n.redirect="redirect",n.error="error"})(mS||(mS={}));function FP(n,e,t){t===void 0&&(t="/");let i=typeof e=="string"?bc(e):e,s=Gy(i.pathname||"/",t);if(s==null)return null;let r=kV(n);KP(r);let o=null;for(let a=0;o==null&&a{let l={relativePath:a===void 0?r.path||"":a,caseSensitive:r.caseSensitive===!0,childrenIndex:o,route:r};l.relativePath.startsWith("/")&&(Yn(l.relativePath.startsWith(i),'Absolute route path "'+l.relativePath+'" nested under path '+('"'+i+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),l.relativePath=l.relativePath.slice(i.length));let c=sa([i,l.relativePath]),u=t.concat(l);r.children&&r.children.length>0&&(Yn(r.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+c+'".')),kV(r.children,e,u,c)),!(r.path==null&&!r.index)&&e.push({path:c,score:UP(c,r.index),routesMeta:u})};return n.forEach((r,o)=>{var a;if(r.path===""||!((a=r.path)!=null&&a.includes("?")))s(r,o);else for(let l of DV(r.path))s(r,o,l)}),e}function DV(n){let e=n.split("/");if(e.length===0)return[];let[t,...i]=e,s=t.endsWith("?"),r=t.replace(/\?$/,"");if(i.length===0)return s?[r,""]:[r];let o=DV(i.join("/")),a=[];return a.push(...o.map(l=>l===""?r:[r,l].join("/"))),s&&a.push(...o),a.map(l=>n.startsWith("/")&&l===""?"/":l)}function KP(n){n.sort((e,t)=>e.score!==t.score?t.score-e.score:PP(e.routesMeta.map(i=>i.childrenIndex),t.routesMeta.map(i=>i.childrenIndex)))}const zP=/^:\w+$/,LP=3,EP=2,TP=1,kP=10,DP=-2,fS=n=>n==="*";function UP(n,e){let t=n.split("/"),i=t.length;return t.some(fS)&&(i+=DP),e&&(i+=EP),t.filter(s=>!fS(s)).reduce((s,r)=>s+(zP.test(r)?LP:r===""?TP:kP),i)}function PP(n,e){return n.length===e.length&&n.slice(0,-1).every((i,s)=>i===e[s])?n[n.length-1]-e[e.length-1]:0}function _P(n,e){let{routesMeta:t}=n,i={},s="/",r=[];for(let o=0;o{if(u==="*"){let d=a[C]||"";o=r.slice(0,r.length-d.length).replace(/(.)\/+$/,"$1")}return c[u]=jP(a[C]||"",u),c},{}),pathname:r,pathnameBase:o,pattern:n}}function OP(n,e,t){e===void 0&&(e=!1),t===void 0&&(t=!0),yy(n==="*"||!n.endsWith("*")||n.endsWith("/*"),'Route path "'+n+'" will be treated as if it were '+('"'+n.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+n.replace(/\*$/,"/*")+'".'));let i=[],s="^"+n.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^$?{}|()[\]]/g,"\\$&").replace(/\/:(\w+)/g,(o,a)=>(i.push(a),"/([^\\/]+)"));return n.endsWith("*")?(i.push("*"),s+=n==="*"||n==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):t?s+="\\/*$":n!==""&&n!=="/"&&(s+="(?:(?=\\/|$))"),[new RegExp(s,e?void 0:"i"),i]}function QP(n){try{return decodeURI(n)}catch(e){return yy(!1,'The URL path "'+n+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+e+").")),n}}function jP(n,e){try{return decodeURIComponent(n)}catch(t){return yy(!1,'The value for the URL param "'+e+'" will not be decoded because'+(' the string "'+n+'" is a malformed URL segment. This is probably')+(" due to a bad percent encoding ("+t+").")),n}}function Gy(n,e){if(e==="/")return n;if(!n.toLowerCase().startsWith(e.toLowerCase()))return null;let t=e.endsWith("/")?e.length-1:e.length,i=n.charAt(t);return i&&i!=="/"?null:n.slice(t)||"/"}function qP(n,e){e===void 0&&(e="/");let{pathname:t,search:i="",hash:s=""}=typeof n=="string"?bc(n):n;return{pathname:t?t.startsWith("/")?t:$P(t,e):e,search:t_(i),hash:n_(s)}}function $P(n,e){let t=e.replace(/\/+$/,"").split("/");return n.split("/").forEach(s=>{s===".."?t.length>1&&t.pop():s!=="."&&t.push(s)}),t.length>1?t.join("/"):"/"}function Nf(n,e,t,i){return"Cannot include a '"+n+"' character in a manually specified "+("`to."+e+"` field ["+JSON.stringify(i)+"]. Please separate it out to the ")+("`to."+t+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function UV(n){return n.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function PV(n,e,t,i){i===void 0&&(i=!1);let s;typeof n=="string"?s=bc(n):(s=Su({},n),Yn(!s.pathname||!s.pathname.includes("?"),Nf("?","pathname","search",s)),Yn(!s.pathname||!s.pathname.includes("#"),Nf("#","pathname","hash",s)),Yn(!s.search||!s.search.includes("#"),Nf("#","search","hash",s)));let r=n===""||s.pathname==="",o=r?"/":s.pathname,a;if(i||o==null)a=t;else{let C=e.length-1;if(o.startsWith("..")){let d=o.split("/");for(;d[0]==="..";)d.shift(),C-=1;s.pathname=d.join("/")}a=C>=0?e[C]:"/"}let l=qP(s,a),c=o&&o!=="/"&&o.endsWith("/"),u=(r||o===".")&&t.endsWith("/");return!l.pathname.endsWith("/")&&(c||u)&&(l.pathname+="/"),l}const sa=n=>n.join("/").replace(/\/\/+/g,"/"),e_=n=>n.replace(/\/+$/,"").replace(/^\/*/,"/"),t_=n=>!n||n==="?"?"":n.startsWith("?")?n:"?"+n,n_=n=>!n||n==="#"?"":n.startsWith("#")?n:"#"+n;function i_(n){return n!=null&&typeof n.status=="number"&&typeof n.statusText=="string"&&typeof n.internal=="boolean"&&"data"in n}const _V=["post","put","patch","delete"];new Set(_V);const s_=["get",..._V];new Set(s_);/** * React Router v6.11.2 * * Copyright (c) Remix Software Inc. @@ -5011,7 +5011,7 @@ ${Object.entries(n.fields).map(([e,t])=>` ${e} = {${n.getFieldAsString(e)}}`).jo * LICENSE.md file in the root directory of this source tree. * * @license MIT - */function fb(){return fb=Object.assign?Object.assign.bind():function(n){for(var e=1;el.pathnameBase)),o=U.useRef(!1);return EV(()=>{o.current=!0}),U.useCallback(function(l,c){if(c===void 0&&(c={}),!o.current)return;if(typeof l=="number"){t.go(l);return}let u=KV(l,JSON.parse(r),s,c.relative==="path");n==null&&e!=="/"&&(u.pathname=u.pathname==="/"?e:zV([e,u.pathname])),(c.replace?t.replace:t.push)(u,c.state,c)},[e,t,r,s,n])}function fy(n,e){let{relative:t}=e===void 0?{}:e,{matches:i}=U.useContext(qA),{pathname:s}=ep(),r=JSON.stringify(FV(i).map(o=>o.pathnameBase));return U.useMemo(()=>KV(n,JSON.parse(r),s,t==="path"),[n,r,s,t])}var bb;(function(n){n.UseBlocker="useBlocker",n.UseRevalidator="useRevalidator",n.UseNavigateStable="useNavigate"})(bb||(bb={}));var vb;(function(n){n.UseBlocker="useBlocker",n.UseLoaderData="useLoaderData",n.UseActionData="useActionData",n.UseRouteError="useRouteError",n.UseNavigation="useNavigation",n.UseRouteLoaderData="useRouteLoaderData",n.UseMatches="useMatches",n.UseRevalidator="useRevalidator",n.UseNavigateStable="useNavigate",n.UseRouteId="useRouteId"})(vb||(vb={}));function FP(n){let e=U.useContext(TV);return e||cr(!1),e}function KP(n){let e=U.useContext(qA);return e||cr(!1),e}function zP(n){let e=KP(),t=e.matches[e.matches.length-1];return t.route.id||cr(!1),t.route.id}function LP(){let{router:n}=FP(bb.UseNavigateStable),e=zP(vb.UseNavigateStable),t=U.useRef(!1);return EV(()=>{t.current=!0}),U.useCallback(function(s,r){r===void 0&&(r={}),t.current&&(typeof s=="number"?n.navigate(s):n.navigate(s,fb({fromRouteId:e},r)))},[n,e])}function TP(n){let{basename:e="/",children:t=null,location:i,navigationType:s=tl.Pop,navigator:r,static:o=!1}=n;$A()&&cr(!1);let a=e.replace(/^\/*/,"/"),l=U.useMemo(()=>({basename:a,navigator:r,static:o}),[a,r,o]);typeof i=="string"&&(i=jA(i));let{pathname:c="/",search:u="",hash:C="",state:d=null,key:h="default"}=i,m=U.useMemo(()=>{let v=YV(c,a);return v==null?null:{location:{pathname:v,search:u,hash:C,state:d,key:h},navigationType:s}},[a,c,u,C,d,h,s]);return m==null?null:U.createElement(pc.Provider,{value:l},U.createElement(my.Provider,{children:t,value:m}))}var CS;(function(n){n[n.pending=0]="pending",n[n.success=1]="success",n[n.error=2]="error"})(CS||(CS={}));new Promise(()=>{});/** + */function AA(){return AA=Object.assign?Object.assign.bind():function(n){for(var e=1;el.pathnameBase)),o=k.useRef(!1);return QV(()=>{o.current=!0}),k.useCallback(function(l,c){if(c===void 0&&(c={}),!o.current)return;if(typeof l=="number"){t.go(l);return}let u=PV(l,JSON.parse(r),s,c.relative==="path");n==null&&e!=="/"&&(u.pathname=u.pathname==="/"?e:sa([e,u.pathname])),(c.replace?t.replace:t.push)(u,c.state,c)},[e,t,r,s,n])}function Zy(n,e){let{relative:t}=e===void 0?{}:e,{matches:i}=k.useContext(Wl),{pathname:s}=$u(),r=JSON.stringify(UV(i).map(o=>o.pathnameBase));return k.useMemo(()=>PV(n,JSON.parse(r),s,t==="path"),[n,r,s,t])}function l_(n,e){return g_(n,e)}function g_(n,e,t){qu()||Yn(!1);let{navigator:i}=k.useContext(Rl),{matches:s}=k.useContext(Wl),r=s[s.length-1],o=r?r.params:{};r&&r.pathname;let a=r?r.pathnameBase:"/";r&&r.route;let l=$u(),c;if(e){var u;let v=typeof e=="string"?bc(e):e;a==="/"||(u=v.pathname)!=null&&u.startsWith(a)||Yn(!1),c=v}else c=l;let C=c.pathname||"/",d=a==="/"?C:C.slice(a.length)||"/",h=FP(n,{pathname:d}),m=d_(h&&h.map(v=>Object.assign({},v,{params:Object.assign({},o,v.params),pathname:sa([a,i.encodeLocation?i.encodeLocation(v.pathname).pathname:v.pathname]),pathnameBase:v.pathnameBase==="/"?a:sa([a,i.encodeLocation?i.encodeLocation(v.pathnameBase).pathname:v.pathnameBase])})),s,t);return e&&m?k.createElement(sp.Provider,{value:{location:AA({pathname:"/",search:"",hash:"",state:null,key:"default"},c),navigationType:_o.Pop}},m):m}function c_(){let n=m_(),e=i_(n)?n.status+" "+n.statusText:n instanceof Error?n.message:JSON.stringify(n),t=n instanceof Error?n.stack:null,s={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"},r=null;return k.createElement(k.Fragment,null,k.createElement("h2",null,"Unexpected Application Error!"),k.createElement("h3",{style:{fontStyle:"italic"}},e),t?k.createElement("pre",{style:s},t):null,r)}const I_=k.createElement(c_,null);class u_ extends k.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!=="idle"&&e.revalidation==="idle"?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error||t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){console.error("React Router caught the following error during render",e,t)}render(){return this.state.error?k.createElement(Wl.Provider,{value:this.props.routeContext},k.createElement(OV.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function C_(n){let{routeContext:e,match:t,children:i}=n,s=k.useContext(By);return s&&s.static&&s.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(s.staticContext._deepestRenderedBoundaryId=t.route.id),k.createElement(Wl.Provider,{value:e},i)}function d_(n,e,t){var i;if(e===void 0&&(e=[]),t===void 0&&(t=null),n==null){var s;if((s=t)!=null&&s.errors)n=t.matches;else return null}let r=n,o=(i=t)==null?void 0:i.errors;if(o!=null){let a=r.findIndex(l=>l.route.id&&o?.[l.route.id]);a>=0||Yn(!1),r=r.slice(0,Math.min(r.length,a+1))}return r.reduceRight((a,l,c)=>{let u=l.route.id?o?.[l.route.id]:null,C=null;t&&(C=l.route.errorElement||I_);let d=e.concat(r.slice(0,c+1)),h=()=>{let m;return u?m=C:l.route.Component?m=k.createElement(l.route.Component,null):l.route.element?m=l.route.element:m=a,k.createElement(C_,{match:l,routeContext:{outlet:a,matches:d,isDataRoute:t!=null},children:m})};return t&&(l.route.ErrorBoundary||l.route.errorElement||c===0)?k.createElement(u_,{location:t.location,revalidation:t.revalidation,component:C,error:u,children:h(),routeContext:{outlet:null,matches:d,isDataRoute:!0}}):h()},null)}var Gb;(function(n){n.UseBlocker="useBlocker",n.UseRevalidator="useRevalidator",n.UseNavigateStable="useNavigate"})(Gb||(Gb={}));var xu;(function(n){n.UseBlocker="useBlocker",n.UseLoaderData="useLoaderData",n.UseActionData="useActionData",n.UseRouteError="useRouteError",n.UseNavigation="useNavigation",n.UseRouteLoaderData="useRouteLoaderData",n.UseMatches="useMatches",n.UseRevalidator="useRevalidator",n.UseNavigateStable="useNavigate",n.UseRouteId="useRouteId"})(xu||(xu={}));function h_(n){let e=k.useContext(By);return e||Yn(!1),e}function A_(n){let e=k.useContext(JV);return e||Yn(!1),e}function p_(n){let e=k.useContext(Wl);return e||Yn(!1),e}function jV(n){let e=p_(),t=e.matches[e.matches.length-1];return t.route.id||Yn(!1),t.route.id}function m_(){var n;let e=k.useContext(OV),t=A_(xu.UseRouteError),i=jV(xu.UseRouteError);return e||((n=t.errors)==null?void 0:n[i])}function f_(){let{router:n}=h_(Gb.UseNavigateStable),e=jV(xu.UseNavigateStable),t=k.useRef(!1);return QV(()=>{t.current=!0}),k.useCallback(function(s,r){r===void 0&&(r={}),t.current&&(typeof s=="number"?n.navigate(s):n.navigate(s,AA({fromRouteId:e},r)))},[n,e])}function Bb(n){Yn(!1)}function b_(n){let{basename:e="/",children:t=null,location:i,navigationType:s=_o.Pop,navigator:r,static:o=!1}=n;qu()&&Yn(!1);let a=e.replace(/^\/*/,"/"),l=k.useMemo(()=>({basename:a,navigator:r,static:o}),[a,r,o]);typeof i=="string"&&(i=bc(i));let{pathname:c="/",search:u="",hash:C="",state:d=null,key:h="default"}=i,m=k.useMemo(()=>{let v=Gy(c,a);return v==null?null:{location:{pathname:v,search:u,hash:C,state:d,key:h},navigationType:s}},[a,c,u,C,d,h,s]);return m==null?null:k.createElement(Rl.Provider,{value:l},k.createElement(sp.Provider,{children:t,value:m}))}function v_(n){let{children:e,location:t}=n;return l_(Zb(e),t)}var bS;(function(n){n[n.pending=0]="pending",n[n.success=1]="success",n[n.error=2]="error"})(bS||(bS={}));new Promise(()=>{});function Zb(n,e){e===void 0&&(e=[]);let t=[];return k.Children.forEach(n,(i,s)=>{if(!k.isValidElement(i))return;let r=[...e,s];if(i.type===k.Fragment){t.push.apply(t,Zb(i.props.children,r));return}i.type!==Bb&&Yn(!1),!i.props.index||!i.props.children||Yn(!1);let o={id:i.props.id||r.join("-"),caseSensitive:i.props.caseSensitive,element:i.props.element,Component:i.props.Component,index:i.props.index,path:i.props.path,loader:i.props.loader,action:i.props.action,errorElement:i.props.errorElement,ErrorBoundary:i.props.ErrorBoundary,hasErrorBoundary:i.props.ErrorBoundary!=null||i.props.errorElement!=null,shouldRevalidate:i.props.shouldRevalidate,handle:i.props.handle,lazy:i.props.lazy};i.props.children&&(o.children=Zb(i.props.children,r)),t.push(o)}),t}/** * React Router DOM v6.11.2 * * Copyright (c) Remix Software Inc. @@ -5020,7 +5020,7 @@ ${Object.entries(n.fields).map(([e,t])=>` ${e} = {${n.getFieldAsString(e)}}`).jo * LICENSE.md file in the root directory of this source tree. * * @license MIT - */function cA(){return cA=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)&&(t[s]=n[s]);return t}function EP(n){return!!(n.metaKey||n.altKey||n.ctrlKey||n.shiftKey)}function kP(n,e){return n.button===0&&(!e||e==="_self")&&!EP(n)}const DP=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset"],UP=["aria-current","caseSensitive","className","end","style","to","children"];function PP(n){let{basename:e,children:t,window:i}=n,s=U.useRef();s.current==null&&(s.current=ZP({window:i,v5Compat:!0}));let r=s.current,[o,a]=U.useState({action:r.action,location:r.location});return U.useLayoutEffect(()=>r.listen(a),[r]),U.createElement(TP,{basename:e,children:t,location:o.location,navigationType:o.action,navigator:r})}const _P=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",JP=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,DV=U.forwardRef(function(e,t){let{onClick:i,relative:s,reloadDocument:r,replace:o,state:a,target:l,to:c,preventScrollReset:u}=e,C=kV(e,DP),{basename:d}=U.useContext(pc),h,m=!1;if(typeof c=="string"&&JP.test(c)&&(h=c,_P))try{let b=new URL(window.location.href),f=c.startsWith("//")?new URL(b.protocol+c):new URL(c),B=YV(f.pathname,d);f.origin===b.origin&&B!=null?c=B+f.search+f.hash:m=!0}catch{}let v=HP(c,{relative:s}),y=OP(c,{replace:o,state:a,target:l,preventScrollReset:u,relative:s});function A(b){i&&i(b),b.defaultPrevented||y(b)}return U.createElement("a",cA({},C,{href:h||v,onClick:m||r?i:A,ref:t,target:l}))}),UV=U.forwardRef(function(e,t){let{"aria-current":i="page",caseSensitive:s=!1,className:r="",end:o=!1,style:a,to:l,children:c}=e,u=kV(e,UP),C=fy(l,{relative:u.relative}),d=ep(),h=U.useContext(NP),{navigator:m}=U.useContext(pc),v=m.encodeLocation?m.encodeLocation(C).pathname:C.pathname,y=d.pathname,A=h&&h.navigation&&h.navigation.location?h.navigation.location.pathname:null;s||(y=y.toLowerCase(),A=A?A.toLowerCase():null,v=v.toLowerCase());let b=y===v||!o&&y.startsWith(v)&&y.charAt(v.length)==="/",f=A!=null&&(A===v||!o&&A.startsWith(v)&&A.charAt(v.length)==="/"),B=b?i:void 0,S;typeof r=="function"?S=r({isActive:b,isPending:f}):S=[r,b?"active":null,f?"pending":null].filter(Boolean).join(" ");let x=typeof a=="function"?a({isActive:b,isPending:f}):a;return U.createElement(DV,cA({},u,{"aria-current":B,className:S,ref:t,style:x,to:l}),typeof c=="function"?c({isActive:b,isPending:f}):c)});var dS;(function(n){n.UseScrollRestoration="useScrollRestoration",n.UseSubmitImpl="useSubmitImpl",n.UseFetcher="useFetcher"})(dS||(dS={}));var hS;(function(n){n.UseFetchers="useFetchers",n.UseScrollRestoration="useScrollRestoration"})(hS||(hS={}));function OP(n,e){let{target:t,replace:i,state:s,preventScrollReset:r,relative:o}=e===void 0?{}:e,a=XP(),l=ep(),c=fy(n,{relative:o});return U.useCallback(u=>{if(kP(u,t)){u.preventDefault();let C=i!==void 0?i:gA(l)===gA(c);a(n,{replace:C,state:s,preventScrollReset:r,relative:o})}},[l,a,c,i,s,t,n,r,o])}/*! ***************************************************************************** + */function pA(){return pA=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)&&(t[s]=n[s]);return t}function y_(n){return!!(n.metaKey||n.altKey||n.ctrlKey||n.shiftKey)}function G_(n,e){return n.button===0&&(!e||e==="_self")&&!y_(n)}const B_=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset"],Z_=["aria-current","caseSensitive","className","end","style","to","children"];function w_(n){let{basename:e,children:t,window:i}=n,s=k.useRef();s.current==null&&(s.current=HP({window:i,v5Compat:!0}));let r=s.current,[o,a]=k.useState({action:r.action,location:r.location});return k.useLayoutEffect(()=>r.listen(a),[r]),k.createElement(b_,{basename:e,children:t,location:o.location,navigationType:o.action,navigator:r})}const S_=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",x_=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,$V=k.forwardRef(function(e,t){let{onClick:i,relative:s,reloadDocument:r,replace:o,state:a,target:l,to:c,preventScrollReset:u}=e,C=qV(e,B_),{basename:d}=k.useContext(Rl),h,m=!1;if(typeof c=="string"&&x_.test(c)&&(h=c,S_))try{let b=new URL(window.location.href),f=c.startsWith("//")?new URL(b.protocol+c):new URL(c),B=Gy(f.pathname,d);f.origin===b.origin&&B!=null?c=B+f.search+f.hash:m=!0}catch{}let v=r_(c,{relative:s}),y=R_(c,{replace:o,state:a,target:l,preventScrollReset:u,relative:s});function A(b){i&&i(b),b.defaultPrevented||y(b)}return k.createElement("a",pA({},C,{href:h||v,onClick:m||r?i:A,ref:t,target:l}))}),eM=k.forwardRef(function(e,t){let{"aria-current":i="page",caseSensitive:s=!1,className:r="",end:o=!1,style:a,to:l,children:c}=e,u=qV(e,Z_),C=Zy(l,{relative:u.relative}),d=$u(),h=k.useContext(JV),{navigator:m}=k.useContext(Rl),v=m.encodeLocation?m.encodeLocation(C).pathname:C.pathname,y=d.pathname,A=h&&h.navigation&&h.navigation.location?h.navigation.location.pathname:null;s||(y=y.toLowerCase(),A=A?A.toLowerCase():null,v=v.toLowerCase());let b=y===v||!o&&y.startsWith(v)&&y.charAt(v.length)==="/",f=A!=null&&(A===v||!o&&A.startsWith(v)&&A.charAt(v.length)==="/"),B=b?i:void 0,S;typeof r=="function"?S=r({isActive:b,isPending:f}):S=[r,b?"active":null,f?"pending":null].filter(Boolean).join(" ");let x=typeof a=="function"?a({isActive:b,isPending:f}):a;return k.createElement($V,pA({},u,{"aria-current":B,className:S,ref:t,style:x,to:l}),typeof c=="function"?c({isActive:b,isPending:f}):c)});var vS;(function(n){n.UseScrollRestoration="useScrollRestoration",n.UseSubmitImpl="useSubmitImpl",n.UseFetcher="useFetcher"})(vS||(vS={}));var yS;(function(n){n.UseFetchers="useFetchers",n.UseScrollRestoration="useScrollRestoration"})(yS||(yS={}));function R_(n,e){let{target:t,replace:i,state:s,preventScrollReset:r,relative:o}=e===void 0?{}:e,a=o_(),l=$u(),c=Zy(n,{relative:o});return k.useCallback(u=>{if(G_(u,t)){u.preventDefault();let C=i!==void 0?i:hA(l)===hA(c);a(n,{replace:C,state:s,preventScrollReset:r,relative:o})}},[l,a,c,i,s,t,n,r,o])}/*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any @@ -5033,5 +5033,5 @@ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */var yb=function(){return yb=Object.assign||function(e){for(var t,i=1,s=arguments.length;iE.jsx("a",{className:"underline decoration-primary/50 dark:decoration-primary/70 decoration-2 cursor-pointer hover:decoration-primary hover:decoration-3 ease-in-out duration-100",href:n,children:e}),$P=[{time:new Date("2024-09-26"),msg:E.jsx(E.Fragment,{children:"Finished the dissertation document and will defend in a few weeks!"})},{time:new Date("2024-07-19"),msg:E.jsxs(E.Fragment,{children:["The"," ",E.jsx(Nt,{href:new URL("/assets/las-24-edgeworth.pdf",self.location).href,children:"Edgeworth paper"})," ","was nominated for the Best Paper Award at L@S'24!"]})},{time:new Date("2024-07-18"),msg:E.jsxs(E.Fragment,{children:["Attending ",E.jsx(Nt,{href:"",children:"L@S'24"})," for the first time in Atlanta. Check out the"," ",E.jsxs(Nt,{href:new URL("/assets/las-24-edgeworth-talk.key",self.location).href,children:["slides"," "]}),"of my talk!"]})},{time:new Date("2024-06-24"),msg:E.jsxs(E.Fragment,{children:["Always meant to submit something to"," ",E.jsx(Nt,{href:"https://diagrams-2024.diagrams-conference.org/",children:"a conference with DIAGRAM in its name"}),". Well, done"," ",E.jsx(Nt,{href:new URL("/assets/diagrams-24-penrose.pdf",self.location).href,children:"that"}),"."]})},{time:new Date("2024-06-24"),msg:E.jsxs(E.Fragment,{children:["The ",E.jsx(Nt,{href:"https://rosejs.dev/",children:"Rose"})," paper was accepted at ECOOP 2024!"]})},{time:new Date("2024-05-10"),msg:E.jsxs(E.Fragment,{children:["Excited to welcome summer interns"," ",E.jsx(Nt,{href:"https://github.com/kyleleesea",children:"Kyle"})," and"," ",E.jsx(Nt,{href:"https://griffinteller.com/",children:"Griffin"})," to the Penrose team!"]})},{time:new Date("2024-04-10"),msg:E.jsxs(E.Fragment,{children:[E.jsx("i",{children:'"Edgeworth: Efficient and Scalable Authoring of Visual Thinking Activities"'})," ","was accepted at Learning @ Scale 2024!"]})},{time:new Date("2024-04-10"),msg:E.jsxs(E.Fragment,{children:[E.jsx("i",{children:'"Minkowski Penalties: Robust Differentiable Constraint Enforcement for Vector Graphics"'})," ","was accepted at SIGGRAPH 2024!"]})},{time:new Date("2024-02-28"),msg:E.jsxs(E.Fragment,{children:["Paper accepted at PLDI 2024:"," ",E.jsx("i",{children:"Syntactic Code Search with Sequence-to-Tree Matching"}),"!"]})},{time:new Date("2024-01-02"),msg:"New year, new round of rewriting this site. Used Tailwind this time and we have dark mode now!"},{time:new Date("2023-12-08"),msg:E.jsxs(E.Fragment,{children:["Invited to attend an"," ",E.jsx(Nt,{href:"https://aimath.org/pastworkshops/cyberinfrastructure.html",children:"AIM workshop"})," ","on"," ",E.jsx(Nt,{href:"https://code4math.org/",children:"Digital Ecosystems for Mathematics"})," ","and started ",E.jsx(Nt,{href:"https://mathdiagrams.com",children:"mathdiagrams.com"}),"!"]})},{time:new Date("2023-07-14"),msg:E.jsxs(E.Fragment,{children:["Released ",E.jsx(Nt,{href:"https://penrose.cs.cmu.edu/blog/v3",children:"Penrose 3.0"}),"!"]})},{time:new Date("2023-06-01"),msg:E.jsxs(E.Fragment,{children:[E.jsx(Nt,{href:"https://www.cmu.edu/scs/s3d/reuse/",children:"REUSE"})," students"," ",E.jsx(Nt,{href:"https://www.linkedin.com/in/rijul-jain-585a62191",children:"Rijul Jain"})," ","and ",E.jsx(Nt,{href:"https://ravenrothkopf.github.io/",children:"Raven Rothkopf"})," joined Penrose this summer. Welcome!"]})},{time:new Date("2022-08-30"),msg:"Spent the summer as an intern in Machine Intelligence at Apple. Stay tuned for more updates on our work!"},{time:new Date("2022-04-30"),msg:E.jsxs(E.Fragment,{children:["I proposed (",E.jsx(Nt,{href:new URL("/assets/thesis-proposal-talk.pdf",self.location).href,children:"talk"}),", (",E.jsx(Nt,{href:new URL("/assets/thesis-proposal.pdf",self.location).href,children:"text"}),")) my dissertation. Officially a PhD candidate now!"]})},{time:new Date("2021-07-01"),msg:E.jsxs(E.Fragment,{children:["My work at Microsoft,"," ",E.jsx("i",{children:'"reCode: A Lightweight Find-and-Replace Interaction in the IDE for Transforming Code by Example,"'})," ","was conditionally accepted by"," ",E.jsx(Nt,{href:"https://uist.acm.org/uist2021/",children:"UIST 2021"}),"!"]})},{time:new Date("2020-05-01"),msg:E.jsxs(E.Fragment,{children:["I'll join ",E.jsx(Nt,{href:"https://microsoft.github.io/prose/",children:"PROSE"})," @ Microsoft Research as a Research Intern this summer!"]})},{time:new Date("2020-04-01"),msg:E.jsxs(E.Fragment,{children:["The first conference paper on"," ",E.jsx(Nt,{href:"https://penrose.cs.cm",children:"Penrose"}),","," ",E.jsx("i",{children:'"Penrose: From Mathematical Notation to Beautiful Diagrams,"'})," was accepted by ",E.jsx(Nt,{href:"https://s2020.siggraph.org/",children:"SIGGRAPH 2020"}),"!"]})},{time:new Date("2020-03-01"),msg:E.jsxs(E.Fragment,{children:["The CHI paper won a ",E.jsx("b",{children:"Best Paper Honourable Mention award"})," 🏆!"]})},{time:new Date("2020-01-01"),msg:E.jsxs(E.Fragment,{children:["Our paper"," ",E.jsx("i",{children:'"How Domain Experts Create Conceptual Diagrams and Implications for Tool Design"'})," ","was accepted by ",E.jsx(Nt,{href:"http://chi2020.acm.org/",children:"CHI 2020"})," 🏖️!"]})},{time:new Date("2019-10-01"),msg:E.jsxs(E.Fragment,{children:["I presented our papers at"," ",E.jsx(Nt,{href:"http://plateau-workshop.org/",children:"PLATEAU 2019"})," with Max and Anael!"]})},{time:new Date("2019-05-01"),msg:E.jsxs(E.Fragment,{children:["I finished 7th at the 2019"," ",E.jsx(Nt,{href:"https://en.wikipedia.org/wiki/ACUI_Collegiate_Pocket_Billiards_National_Championship",children:"ACUI Collegiate Nine-ball National Championship"})," ","🎱!"]})},{time:new Date("2019-05-01"),msg:E.jsxs(E.Fragment,{children:["Anael Kuperwajs,"," ",E.jsx(Nt,{href:"https://www.linkedin.com/in/courtney-e-miller/",children:"Courtney Miller"}),", ",E.jsx(Nt,{href:"https://a9.io/",children:"Max Krieger"})," will join us as"," ",E.jsx(Nt,{href:"https://www.cmu.edu/scs/isr/reuse/",children:"REUSE"})," students this summer. Welcome!"]})},{time:new Date("2018-04-01"),msg:E.jsx(E.Fragment,{children:"I will join CMU as a Ph.D. student!"})},{time:new Date("2018-01-01"),msg:E.jsx(E.Fragment,{children:"I will be one of the TAs for COMS 4115 again in Spring 2018."})},{time:new Date("2017-10-01"),msg:E.jsxs(E.Fragment,{children:["Gave a talk at"," ",E.jsx(Nt,{href:"https://2017.splashcon.org/event/dsldi-2017-substance-and-style-domain-specific-languages-for-mathematical-diagrams",children:"DSLDI 2017"})," ","in Vancouver, Canada."]})},{time:new Date("2017-05-01"),msg:E.jsxs(E.Fragment,{children:["Joined ",E.jsx(Nt,{href:"http://isri.cmu.edu/education/reu-se/",children:"REU-SE"}),", a summer research program, at Carnegie Mellon University."]})}];var JV={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},mS=Ji.createContext&&Ji.createContext(JV),ia=globalThis&&globalThis.__assign||function(){return ia=Object.assign||function(n){for(var e,t=1,i=arguments.length;tE.jsx("a",{href:t,children:E.jsxs("div",{className:`rounded shadow-md hover:shadow-xl w-full h-36 lg:h-48 bg-white dark:shadow-none dark:bg-zinc-700 dark:rounded-lg dark:border-primary bg-contain bg-left-top dark:drop-shadow-none dark:hover:drop-shadow-none dark:transition-none transition-all ease-in-out duration-100 dark:hover:shadow-md dark:hover:scale-105 overflow-hidden scale-100 - `,children:[E.jsxs("svg",{className:"absolute z-[-50]",width:"100%",viewBox:"0 0 100 100",children:[E.jsxs("defs",{children:[E.jsx("filter",{id:"grayscale-filter",children:E.jsx("feColorMatrix",{type:"saturate",values:"0"})}),E.jsxs("filter",{id:"color-tint-filter",children:[E.jsx("feColorMatrix",{type:"matrix",values:"0.7725 0 0 0 0 0 0.3490 0 0 0 0 0 0.9569 0 0 0 0 0 1 0"}),E.jsxs("feComponentTransfer",{children:[E.jsx("feFuncR",{type:"table",tableValues:"0 0.7725"}),E.jsx("feFuncG",{type:"table",tableValues:"0 0.3490"}),E.jsx("feFuncB",{type:"table",tableValues:"0 0.9569"})]})]}),E.jsxs("linearGradient",{id:"gradient-overlay",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[E.jsx("stop",{offset:"0%",style:{stopColor:s?"#333":"#fff",stopOpacity:.3}}),E.jsx("stop",{offset:"50%",style:{stopColor:s?"#111":"#fff",stopOpacity:s?.35:.7}}),E.jsx("stop",{offset:"100%",style:{stopColor:s?"#333":"#fff",stopOpacity:.95}})]})]}),E.jsx("image",{href:i,x:50,y:-8,width:80,filter:s?"url(#grayscale-filter) ":""}),E.jsx("rect",{width:"100",height:"100",style:{fill:"url(#gradient-overlay)"}})]}),E.jsx("div",{className:"text-3xl -font-medium w-7/10 px-6 pt-4 lg:py-6 text-primary/70 dark:text-primary",children:n}),E.jsx("div",{className:"text-lg font-extralight w-7/10 px-6 py-4 lg:py-6",children:e})]})}),I_={colors:{primary:"#C559F4"}},u_=()=>{const[n,e]=U.useState(!1),t=U.useRef(null);return U.useEffect(()=>{const i=()=>{if(t.current!==null){const s=t.current.scrollTop===0;e(!s)}};if(t.current!==null){const s=t.current;return s.addEventListener("scroll",i),()=>{s.removeEventListener("scroll",i)}}},[]),E.jsxs("div",{className:"my-2 relative",children:[n&&E.jsx("div",{className:"invisible md:visible absolute top-0 left-0 right-0 h-10 bg-gradient-to-b from-white dark:from-zinc-800 to-transparent"}),E.jsx("div",{ref:t,className:"overflow-auto max-h-[50vh]",children:$P.map(({time:i,msg:s},r)=>E.jsxs("div",{className:"py-2 text-gray-500 md:text-sm dark:text-neutral-300 ",children:[E.jsx("div",{className:"w-fit bg-gray-100 text-gray-400 rounded py-px px-1 dark:text-neutral-400 dark:bg-zinc-700",children:i.toLocaleString("default",{month:"long",year:"numeric"})}),s]},`news-${r}`))}),E.jsx("div",{className:"invisible md:visible absolute bottom-0 left-0 right-0 h-12 bg-gradient-to-t from-white dark:from-zinc-800 to-transparent"})]})},C_=({data:n,children:e})=>{const[t,i]=U.useState(!1),s=()=>{navigator.clipboard.writeText(n),i(!0),setTimeout(()=>{i(!1)},5e3)};return E.jsxs("div",{children:[E.jsx("span",{className:"underline decoration-primary/50 dark:decoration-primary/70 decoration-2 cursor-pointer hover:decoration-primary hover:decoration-3 ease-in-out duration-100",onClick:s,children:e}),t&&E.jsx("span",{children:" (Copied to clipboard)"})]})},d_=()=>E.jsx("div",{children:BP.map(({pdf:n,title:e,venue:t,authors:i,talk:s,coauthors:r,authorDisplayNames:o,series:a,slides:l,id:c,bibtex:u})=>E.jsxs("div",{className:"my-4",children:[E.jsx("a",{href:n,children:E.jsx("span",{className:"text-lg font-semibold dark:font-normal cursor-pointer",children:e})}),E.jsx("br",{}),E.jsx("span",{className:"text-base font-light",children:i.map((C,d)=>o?.get(d)??C).map(C=>r?.includes(C)?`${C}*`:C).map(C=>C==="Wode Ni"||C==="Wode Ni*"?E.jsx("strong",{children:C}):C).map((C,d)=>E.jsxs("span",{children:[E.jsx("li",{className:"inline dark:font-thin",children:C}),d!==i.length-1&&E.jsx("span",{children:", "})]},`${c}-author-${d}`))}),". ",E.jsx("span",{className:"text-base font-light italic",children:a}),".",E.jsxs("div",{className:"flex gap-2",children:[u&&E.jsxs("div",{className:"flex items-center gap-0.5",children:[E.jsx(c_,{}),E.jsx(C_,{data:u,children:"bib"})]}),n&&E.jsxs("div",{className:"flex items-center gap-0.5",children:[E.jsx(a_,{}),E.jsx(Nt,{href:n,children:"pdf"})]}),s&&E.jsxs("div",{className:"flex items-center gap-0.5",children:[E.jsx(l_,{}),E.jsx(Nt,{href:s,children:"talk"})]}),l&&E.jsxs("div",{className:"flex items-center gap-0.5",children:[E.jsx(g_,{}),E.jsx(Nt,{href:l,children:"slides"})]})]})]},c))}),h_=({className:n})=>E.jsx("div",{className:n,children:E.jsxs("div",{className:"flex h-44",children:[E.jsx("div",{className:"w-48 h-48",children:E.jsx(hP,{color:I_.colors.primary})}),E.jsx(p3,{className:"w-44 ml-4 mt-8"})]})}),A_=({toggleDark:n})=>E.jsx(QV,{onClick:n,children:E.jsx(i_,{className:"fill-icon dark:fill-icon-dark"})}),p_=({className:n,toggleDark:e})=>E.jsxs("div",{className:`${n} flex items-start md:items-top md:ml-auto mb-0 color-primary`,children:[E.jsx(f_,{}),E.jsx(jV,{}),E.jsx(qV,{}),E.jsx($V,{}),E.jsx(m_,{}),E.jsx(A_,{toggleDark:e})]}),QV=({children:n,...e})=>E.jsx("div",{className:"mx-1 w-6 h-6 text-xl flex cursor-pointer justify-center hover:opacity-50 ease-in-out duration-200",...e,children:n}),Ju=({url:n,icon:e})=>E.jsx(QV,{children:E.jsx("a",{href:n,children:e})}),m_=()=>E.jsx(Ju,{url:"https://goo.gl/maps/Zp92ofs6ze3y8hc19",icon:E.jsx(s_,{className:"fill-icon dark:fill-icon-dark "})}),jV=()=>E.jsx(Ju,{url:"https://twitter.com/wodenimoni",icon:E.jsx(o_,{className:"fill-icon dark:fill-icon-dark"})}),qV=()=>E.jsx(Ju,{url:"https://github.com/wodeni",icon:E.jsx(r_,{className:"fill-icon dark:fill-icon-dark"})}),f_=()=>E.jsx(Ju,{url:"http://wodenimoni.com/nimo-markdown-cv/",icon:E.jsx("span",{className:"font-extralight leading-5 text-icon top-[-4px] left-[-3px] relative",children:"CV"})}),$V=()=>E.jsx(Ju,{url:"mailto:nimo@cmu.edu",icon:E.jsx(n_,{className:"fill-icon dark:fill-icon-dark grow"})}),lh=({className:n,children:e})=>E.jsx("p",{className:`${n} font-sans font-extralight text-lg my-2 dark:text-neutral-100`,children:e}),gh=({header:n,children:e})=>{const t=n.toLowerCase();return E.jsxs("div",{id:t,className:"my-4 md:my-8",children:[E.jsxs("span",{className:"group font-bold text-3xl tracking-tight curosr-pointer relative ",children:[E.jsxs("svg",{height:30,className:"w-full translate-y-1 absolute top-0 left-0",children:[E.jsx("rect",{x:0,y:0,width:5,height:50,className:"group-hover:opacity-30 group-hover:scale-x-400 transition-transform transform fill-primary"}),E.jsx("rect",{x:0,y:0,width:5,height:50,className:"fill-primary"})]}),E.jsx(qP,{className:"ml-[10px] w-full dark:text-neutral-100",smooth:!0,to:`/#${t}`,children:n})]}),e]})},b_=()=>E.jsxs("div",{className:"md:col-span-3 mt-8 w-full flex flex-col text-sm justify-center items-center text-gray-500 dark:text-neutral-400",children:[E.jsxs("span",{className:"mb-2",children:["© ",new Date().getUTCFullYear(),' Wode "Nimo" Ni.']}),E.jsxs("div",{className:"flex items-start color-primary text-sm",children:[E.jsx(jV,{}),E.jsx(qV,{}),E.jsx($V,{})]})]}),v_=()=>{const[n,e]=U.useState(window.matchMedia("(prefers-color-scheme: dark)").matches),t=()=>{e(!n)};function i(){window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?e(!0):e(!1)}return U.useEffect(()=>{window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",i)}),U.useEffect(()=>{document.documentElement.classList.toggle("dark",n)},[n]),E.jsxs("div",{className:"font-sans md:grid md:grid-cols-3 p-4 md:p-10 max-w-screen-xl dark:text-neutral-100",children:[E.jsx(h_,{className:"md:col-span-2"}),E.jsx(p_,{className:"mt-8",toggleDark:t}),E.jsx(lh,{className:"md:col-span-2 mt-8",children:"I'm Nimo. I build ergonomic digital tools to make difficult things feel simple."}),E.jsxs("div",{className:"max-w-screen-md md:col-span-2",children:[E.jsxs(gh,{header:"Research",children:[E.jsxs(lh,{className:"",children:["I am a Ph.D. candidate at Carnegie Mellon University, School of Computer Science, advised by"," ",E.jsx(Nt,{href:"http://pact.cs.cmu.edu/koedinger.html",children:"Ken Koedinger"})," ","and ",E.jsx(Nt,{href:"https://www.cs.cmu.edu/~jssunshi/",children:"Josh Sunshine"}),". Here are some selected papers. Refer to the"," ",E.jsx(Nt,{href:"http://wodenimoni.com/nimo-markdown-cv/",children:"CV"})," for more."]}),E.jsx(d_,{})]}),E.jsx(gh,{header:"Tools",children:E.jsxs("div",{className:"grid lg:grid-cols-2 gap-2 md:gap-4 lg:gap-8 my-4",children:[E.jsx(Wf,{name:"Penrose",desc:"Create beautiful diagrams just by typing math notation in plain text.",link:"https://penrose.cs.cmu.edu/",logo:m3,dark:n}),E.jsx(Wf,{name:"Edgeworth",desc:"Diagrammatic problem generation by program mutation.",link:"https://penrose.github.io/penrose/edgeworth/develop/",logo:f3,dark:n}),E.jsx(Wf,{name:"Math Diagrams",desc:"A growing collection of open-source math visualizations.",link:"https://mathdiagrams.com/",dark:n,logo:b3})]})}),E.jsxs(gh,{header:"About",children:[E.jsx(lh,{children:'My name is 倪沃德 (ní wò dé) in Chinese. “Nimo” has been my alias since my street dancing days. If you find "Wo-de" hard to pronounce, default to “Nimo”.'}),E.jsx(lh,{children:"I am an avid pool player. I play in local leagues and national tournaments."})]})]}),E.jsx("div",{className:"md:ml-10 md:max-w-60",children:E.jsx(gh,{header:"News",children:E.jsx(u_,{})})}),E.jsx(b_,{})]})};Vf.createRoot(document.getElementById("root")).render(E.jsx(Ji.StrictMode,{children:E.jsx(PP,{children:E.jsx(v_,{})})})); +***************************************************************************** */var wb=function(){return wb=Object.assign||function(e){for(var t,i=1,s=arguments.length;iE.jsx("a",{className:"underline decoration-primary/50 dark:decoration-primary/70 decoration-2 cursor-pointer hover:decoration-primary hover:decoration-3 ease-in-out duration-100",href:n,children:e}),N_=[{time:new Date("2024-09-26"),msg:E.jsxs(E.Fragment,{children:["Finished the ",E.jsx(Rt,{href:"/thesis",children:"dissertation"})," document and will"," ",E.jsx(Rt,{href:new URL("/assets/nimo-defense-poster.pdf",self.location).href,children:"defend"})," ","in a few weeks!"]})},{time:new Date("2024-07-19"),msg:E.jsxs(E.Fragment,{children:["The"," ",E.jsx(Rt,{href:new URL("/assets/las-24-edgeworth.pdf",self.location).href,children:"Edgeworth paper"})," ","was nominated for the Best Paper Award at L@S'24!"]})},{time:new Date("2024-07-18"),msg:E.jsxs(E.Fragment,{children:["Attending ",E.jsx(Rt,{href:"",children:"L@S'24"})," for the first time in Atlanta. Check out the"," ",E.jsxs(Rt,{href:new URL("/assets/las-24-edgeworth-talk.key",self.location).href,children:["slides"," "]}),"of my talk!"]})},{time:new Date("2024-06-24"),msg:E.jsxs(E.Fragment,{children:["Always meant to submit something to"," ",E.jsx(Rt,{href:"https://diagrams-2024.diagrams-conference.org/",children:"a conference with DIAGRAM in its name"}),". Well, done"," ",E.jsx(Rt,{href:new URL("/assets/diagrams-24-penrose.pdf",self.location).href,children:"that"}),"."]})},{time:new Date("2024-06-24"),msg:E.jsxs(E.Fragment,{children:["The ",E.jsx(Rt,{href:"https://rosejs.dev/",children:"Rose"})," paper was accepted at ECOOP 2024!"]})},{time:new Date("2024-05-10"),msg:E.jsxs(E.Fragment,{children:["Excited to welcome summer interns"," ",E.jsx(Rt,{href:"https://github.com/kyleleesea",children:"Kyle"})," and"," ",E.jsx(Rt,{href:"https://griffinteller.com/",children:"Griffin"})," to the Penrose team!"]})},{time:new Date("2024-04-10"),msg:E.jsxs(E.Fragment,{children:[E.jsx("i",{children:'"Edgeworth: Efficient and Scalable Authoring of Visual Thinking Activities"'})," ","was accepted at Learning @ Scale 2024!"]})},{time:new Date("2024-04-10"),msg:E.jsxs(E.Fragment,{children:[E.jsx("i",{children:'"Minkowski Penalties: Robust Differentiable Constraint Enforcement for Vector Graphics"'})," ","was accepted at SIGGRAPH 2024!"]})},{time:new Date("2024-02-28"),msg:E.jsxs(E.Fragment,{children:["Paper accepted at PLDI 2024:"," ",E.jsx("i",{children:"Syntactic Code Search with Sequence-to-Tree Matching"}),"!"]})},{time:new Date("2024-01-02"),msg:"New year, new round of rewriting this site. Used Tailwind this time and we have dark mode now!"},{time:new Date("2023-12-08"),msg:E.jsxs(E.Fragment,{children:["Invited to attend an"," ",E.jsx(Rt,{href:"https://aimath.org/pastworkshops/cyberinfrastructure.html",children:"AIM workshop"})," ","on"," ",E.jsx(Rt,{href:"https://code4math.org/",children:"Digital Ecosystems for Mathematics"})," ","and started ",E.jsx(Rt,{href:"https://mathdiagrams.com",children:"mathdiagrams.com"}),"!"]})},{time:new Date("2023-07-14"),msg:E.jsxs(E.Fragment,{children:["Released ",E.jsx(Rt,{href:"https://penrose.cs.cmu.edu/blog/v3",children:"Penrose 3.0"}),"!"]})},{time:new Date("2023-06-01"),msg:E.jsxs(E.Fragment,{children:[E.jsx(Rt,{href:"https://www.cmu.edu/scs/s3d/reuse/",children:"REUSE"})," students"," ",E.jsx(Rt,{href:"https://www.linkedin.com/in/rijul-jain-585a62191",children:"Rijul Jain"})," ","and ",E.jsx(Rt,{href:"https://ravenrothkopf.github.io/",children:"Raven Rothkopf"})," joined Penrose this summer. Welcome!"]})},{time:new Date("2022-08-30"),msg:"Spent the summer as an intern in Machine Intelligence at Apple. Stay tuned for more updates on our work!"},{time:new Date("2022-04-30"),msg:E.jsxs(E.Fragment,{children:["I proposed (",E.jsx(Rt,{href:new URL("/assets/thesis-proposal-talk.pdf",self.location).href,children:"talk"}),", (",E.jsx(Rt,{href:new URL("/assets/thesis-proposal.pdf",self.location).href,children:"text"}),")) my dissertation. Officially a PhD candidate now!"]})},{time:new Date("2021-07-01"),msg:E.jsxs(E.Fragment,{children:["My work at Microsoft,"," ",E.jsx("i",{children:'"reCode: A Lightweight Find-and-Replace Interaction in the IDE for Transforming Code by Example,"'})," ","was conditionally accepted by"," ",E.jsx(Rt,{href:"https://uist.acm.org/uist2021/",children:"UIST 2021"}),"!"]})},{time:new Date("2020-05-01"),msg:E.jsxs(E.Fragment,{children:["I'll join ",E.jsx(Rt,{href:"https://microsoft.github.io/prose/",children:"PROSE"})," @ Microsoft Research as a Research Intern this summer!"]})},{time:new Date("2020-04-01"),msg:E.jsxs(E.Fragment,{children:["The first conference paper on"," ",E.jsx(Rt,{href:"https://penrose.cs.cm",children:"Penrose"}),","," ",E.jsx("i",{children:'"Penrose: From Mathematical Notation to Beautiful Diagrams,"'})," was accepted by ",E.jsx(Rt,{href:"https://s2020.siggraph.org/",children:"SIGGRAPH 2020"}),"!"]})},{time:new Date("2020-03-01"),msg:E.jsxs(E.Fragment,{children:["The CHI paper won a ",E.jsx("b",{children:"Best Paper Honourable Mention award"})," 🏆!"]})},{time:new Date("2020-01-01"),msg:E.jsxs(E.Fragment,{children:["Our paper"," ",E.jsx("i",{children:'"How Domain Experts Create Conceptual Diagrams and Implications for Tool Design"'})," ","was accepted by ",E.jsx(Rt,{href:"http://chi2020.acm.org/",children:"CHI 2020"})," 🏖️!"]})},{time:new Date("2019-10-01"),msg:E.jsxs(E.Fragment,{children:["I presented our papers at"," ",E.jsx(Rt,{href:"http://plateau-workshop.org/",children:"PLATEAU 2019"})," with Max and Anael!"]})},{time:new Date("2019-05-01"),msg:E.jsxs(E.Fragment,{children:["I finished 7th at the 2019"," ",E.jsx(Rt,{href:"https://en.wikipedia.org/wiki/ACUI_Collegiate_Pocket_Billiards_National_Championship",children:"ACUI Collegiate Nine-ball National Championship"})," ","🎱!"]})},{time:new Date("2019-05-01"),msg:E.jsxs(E.Fragment,{children:["Anael Kuperwajs,"," ",E.jsx(Rt,{href:"https://www.linkedin.com/in/courtney-e-miller/",children:"Courtney Miller"}),", ",E.jsx(Rt,{href:"https://a9.io/",children:"Max Krieger"})," will join us as"," ",E.jsx(Rt,{href:"https://www.cmu.edu/scs/isr/reuse/",children:"REUSE"})," students this summer. Welcome!"]})},{time:new Date("2018-04-01"),msg:E.jsx(E.Fragment,{children:"I will join CMU as a Ph.D. student!"})},{time:new Date("2018-01-01"),msg:E.jsx(E.Fragment,{children:"I will be one of the TAs for COMS 4115 again in Spring 2018."})},{time:new Date("2017-10-01"),msg:E.jsxs(E.Fragment,{children:["Gave a talk at"," ",E.jsx(Rt,{href:"https://2017.splashcon.org/event/dsldi-2017-substance-and-style-domain-specific-languages-for-mathematical-diagrams",children:"DSLDI 2017"})," ","in Vancouver, Canada."]})},{time:new Date("2017-05-01"),msg:E.jsxs(E.Fragment,{children:["Joined ",E.jsx(Rt,{href:"http://isri.cmu.edu/education/reu-se/",children:"REU-SE"}),", a summer research program, at Carnegie Mellon University."]})}];var iM={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},ZS=Oi.createContext&&Oi.createContext(iM),ra=globalThis&&globalThis.__assign||function(){return ra=Object.assign||function(n){for(var e,t=1,i=arguments.length;tE.jsx("a",{href:t,children:E.jsxs("div",{className:`rounded shadow-md hover:shadow-xl w-full h-36 lg:h-48 bg-white dark:shadow-none dark:bg-zinc-700 dark:rounded-lg dark:border-primary bg-contain bg-left-top dark:drop-shadow-none dark:hover:drop-shadow-none dark:transition-none transition-all ease-in-out duration-100 dark:hover:shadow-md dark:hover:scale-105 overflow-hidden scale-100 + `,children:[E.jsxs("svg",{className:"absolute z-[-50]",width:"100%",viewBox:"0 0 100 100",children:[E.jsxs("defs",{children:[E.jsx("filter",{id:"grayscale-filter",children:E.jsx("feColorMatrix",{type:"saturate",values:"0"})}),E.jsxs("filter",{id:"color-tint-filter",children:[E.jsx("feColorMatrix",{type:"matrix",values:"0.7725 0 0 0 0 0 0.3490 0 0 0 0 0 0.9569 0 0 0 0 0 1 0"}),E.jsxs("feComponentTransfer",{children:[E.jsx("feFuncR",{type:"table",tableValues:"0 0.7725"}),E.jsx("feFuncG",{type:"table",tableValues:"0 0.3490"}),E.jsx("feFuncB",{type:"table",tableValues:"0 0.9569"})]})]}),E.jsxs("linearGradient",{id:"gradient-overlay",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[E.jsx("stop",{offset:"0%",style:{stopColor:s?"#333":"#fff",stopOpacity:.3}}),E.jsx("stop",{offset:"50%",style:{stopColor:s?"#111":"#fff",stopOpacity:s?.35:.7}}),E.jsx("stop",{offset:"100%",style:{stopColor:s?"#333":"#fff",stopOpacity:.95}})]})]}),E.jsx("image",{href:i,x:50,y:-8,width:80,filter:s?"url(#grayscale-filter) ":""}),E.jsx("rect",{width:"100",height:"100",style:{fill:"url(#gradient-overlay)"}})]}),E.jsx("div",{className:"text-3xl -font-medium w-7/10 px-6 pt-4 lg:py-6 text-primary/70 dark:text-primary",children:n}),E.jsx("div",{className:"text-lg font-extralight w-7/10 px-6 py-4 lg:py-6",children:e})]})}),U_={colors:{primary:"#C559F4"}},P_=()=>{const[n,e]=k.useState(!1),t=k.useRef(null);return k.useEffect(()=>{const i=()=>{if(t.current!==null){const s=t.current.scrollTop===0;e(!s)}};if(t.current!==null){const s=t.current;return s.addEventListener("scroll",i),()=>{s.removeEventListener("scroll",i)}}},[]),E.jsxs("div",{className:"my-2 relative",children:[n&&E.jsx("div",{className:"invisible md:visible absolute top-0 left-0 right-0 h-10 bg-gradient-to-b from-white dark:from-zinc-800 to-transparent"}),E.jsx("div",{ref:t,className:"overflow-auto max-h-[50vh]",children:N_.map(({time:i,msg:s},r)=>E.jsxs("div",{className:"py-2 text-gray-500 md:text-sm dark:text-neutral-300 ",children:[E.jsx("div",{className:"w-fit bg-gray-100 text-gray-400 rounded py-px px-1 dark:text-neutral-400 dark:bg-zinc-700",children:i.toLocaleString("default",{month:"long",year:"numeric"})}),s]},`news-${r}`))}),E.jsx("div",{className:"invisible md:visible absolute bottom-0 left-0 right-0 h-12 bg-gradient-to-t from-white dark:from-zinc-800 to-transparent"})]})},__=({data:n,children:e})=>{const[t,i]=k.useState(!1),s=()=>{navigator.clipboard.writeText(n),i(!0),setTimeout(()=>{i(!1)},5e3)};return E.jsxs("div",{children:[E.jsx("span",{className:"underline decoration-primary/50 dark:decoration-primary/70 decoration-2 cursor-pointer hover:decoration-primary hover:decoration-3 ease-in-out duration-100",onClick:s,children:e}),t&&E.jsx("span",{children:" (Copied to clipboard)"})]})},J_=()=>E.jsx("div",{children:NP.map(({pdf:n,title:e,venue:t,authors:i,talk:s,coauthors:r,authorDisplayNames:o,series:a,slides:l,id:c,bibtex:u})=>E.jsxs("div",{className:"my-4",children:[E.jsx("a",{href:n,children:E.jsx("span",{className:"text-lg font-semibold dark:font-normal cursor-pointer",children:e})}),E.jsx("br",{}),E.jsx("span",{className:"text-base font-light",children:i.map((C,d)=>o?.get(d)??C).map(C=>r?.includes(C)?`${C}*`:C).map(C=>C==="Wode Ni"||C==="Wode Ni*"?E.jsx("strong",{children:C}):C).map((C,d)=>E.jsxs("span",{children:[E.jsx("li",{className:"inline dark:font-thin",children:C}),d!==i.length-1&&E.jsx("span",{children:", "})]},`${c}-author-${d}`))}),". ",E.jsx("span",{className:"text-base font-light italic",children:a}),".",E.jsxs("div",{className:"flex gap-2",children:[u&&E.jsxs("div",{className:"flex items-center gap-0.5",children:[E.jsx(D_,{}),E.jsx(__,{data:u,children:"bib"})]}),n&&E.jsxs("div",{className:"flex items-center gap-0.5",children:[E.jsx(E_,{}),E.jsx(Rt,{href:n,children:"pdf"})]}),s&&E.jsxs("div",{className:"flex items-center gap-0.5",children:[E.jsx(T_,{}),E.jsx(Rt,{href:s,children:"talk"})]}),l&&E.jsxs("div",{className:"flex items-center gap-0.5",children:[E.jsx(k_,{}),E.jsx(Rt,{href:l,children:"slides"})]})]})]},c))}),O_=({className:n})=>E.jsx("div",{className:n,children:E.jsxs("div",{className:"flex h-44",children:[E.jsx("div",{className:"w-48 h-48",children:E.jsx(BP,{color:U_.colors.primary})}),E.jsx(w3,{className:"w-44 ml-4 mt-8"})]})}),Q_=({toggleDark:n})=>E.jsx(rM,{onClick:n,children:E.jsx(F_,{className:"fill-icon dark:fill-icon-dark"})}),j_=({className:n,toggleDark:e})=>E.jsxs("div",{className:`${n} flex items-start md:items-top md:ml-auto mb-0 color-primary`,children:[E.jsx($_,{}),E.jsx(oM,{}),E.jsx(aM,{}),E.jsx(lM,{}),E.jsx(q_,{}),E.jsx(Q_,{toggleDark:e})]}),rM=({children:n,...e})=>E.jsx("div",{className:"mx-1 w-6 h-6 text-xl flex cursor-pointer justify-center hover:opacity-50 ease-in-out duration-200",...e,children:n}),eC=({url:n,icon:e})=>E.jsx(rM,{children:E.jsx("a",{href:n,children:e})}),q_=()=>E.jsx(eC,{url:"https://goo.gl/maps/Zp92ofs6ze3y8hc19",icon:E.jsx(K_,{className:"fill-icon dark:fill-icon-dark "})}),oM=()=>E.jsx(eC,{url:"https://twitter.com/wodenimoni",icon:E.jsx(L_,{className:"fill-icon dark:fill-icon-dark"})}),aM=()=>E.jsx(eC,{url:"https://github.com/wodeni",icon:E.jsx(z_,{className:"fill-icon dark:fill-icon-dark"})}),$_=()=>E.jsx(eC,{url:"http://wodenimoni.com/nimo-markdown-cv/",icon:E.jsx("span",{className:"font-extralight leading-5 text-icon top-[-4px] left-[-3px] relative",children:"CV"})}),lM=()=>E.jsx(eC,{url:"mailto:nimo@cmu.edu",icon:E.jsx(Y_,{className:"fill-icon dark:fill-icon-dark grow"})}),dh=({className:n,children:e})=>E.jsx("p",{className:`${n} font-sans font-extralight text-lg my-2 dark:text-neutral-100`,children:e}),hh=({header:n,children:e})=>{const t=n.toLowerCase();return E.jsxs("div",{id:t,className:"my-4 md:my-8",children:[E.jsxs("span",{className:"group font-bold text-3xl tracking-tight curosr-pointer relative ",children:[E.jsxs("svg",{height:30,className:"w-full translate-y-1 absolute top-0 left-0",children:[E.jsx("rect",{x:0,y:0,width:5,height:50,className:"group-hover:opacity-30 group-hover:scale-x-400 transition-transform transform fill-primary"}),E.jsx("rect",{x:0,y:0,width:5,height:50,className:"fill-primary"})]}),E.jsx(M_,{className:"ml-[10px] w-full dark:text-neutral-100",smooth:!0,to:`/#${t}`,children:n})]}),e]})},eJ=()=>E.jsxs("div",{className:"md:col-span-3 mt-8 w-full flex flex-col text-sm justify-center items-center text-gray-500 dark:text-neutral-400",children:[E.jsxs("span",{className:"mb-2",children:["© ",new Date().getUTCFullYear(),' Wode "Nimo" Ni.']}),E.jsxs("div",{className:"flex items-start color-primary text-sm",children:[E.jsx(oM,{}),E.jsx(aM,{}),E.jsx(lM,{})]})]}),tJ=()=>{const[n,e]=k.useState(window.matchMedia("(prefers-color-scheme: dark)").matches),t=()=>{e(!n)};function i(){window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?e(!0):e(!1)}return k.useEffect(()=>{window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",i)}),k.useEffect(()=>{document.documentElement.classList.toggle("dark",n)},[n]),E.jsxs("div",{className:"font-sans md:grid md:grid-cols-3 p-4 md:p-10 max-w-screen-xl dark:text-neutral-100",children:[E.jsx(O_,{className:"md:col-span-2"}),E.jsx(j_,{className:"mt-8",toggleDark:t}),E.jsx(dh,{className:"md:col-span-2 mt-8",children:"I'm Nimo. I build ergonomic digital tools to make difficult things feel simple."}),E.jsxs("div",{className:"max-w-screen-md md:col-span-2",children:[E.jsxs(hh,{header:"Research",children:[E.jsxs(dh,{className:"",children:["I am a Ph.D. candidate at Carnegie Mellon University, School of Computer Science, advised by"," ",E.jsx(Rt,{href:"http://pact.cs.cmu.edu/koedinger.html",children:"Ken Koedinger"})," ","and ",E.jsx(Rt,{href:"https://www.cs.cmu.edu/~jssunshi/",children:"Josh Sunshine"}),". Here are some selected papers. Refer to the"," ",E.jsx(Rt,{href:"http://wodenimoni.com/nimo-markdown-cv/",children:"CV"})," for more."]}),E.jsx(J_,{})]}),E.jsx(hh,{header:"Tools",children:E.jsxs("div",{className:"grid lg:grid-cols-2 gap-2 md:gap-4 lg:gap-8 my-4",children:[E.jsx(Hf,{name:"Penrose",desc:"Create beautiful diagrams just by typing math notation in plain text.",link:"https://penrose.cs.cmu.edu/",logo:S3,dark:n}),E.jsx(Hf,{name:"Edgeworth",desc:"Diagrammatic problem generation by program mutation.",link:"https://penrose.github.io/penrose/edgeworth/develop/",logo:x3,dark:n}),E.jsx(Hf,{name:"Math Diagrams",desc:"A growing collection of open-source math visualizations.",link:"https://mathdiagrams.com/",dark:n,logo:R3})]})}),E.jsxs(hh,{header:"About",children:[E.jsx(dh,{children:'My name is 倪沃德 (ní wò dé) in Chinese. “Nimo” has been my alias since my street dancing days. If you find "Wo-de" hard to pronounce, default to “Nimo”.'}),E.jsx(dh,{children:"I am an avid pool player. I play in local leagues and national tournaments."})]})]}),E.jsx("div",{className:"md:ml-10 md:max-w-60",children:E.jsx(hh,{header:"News",children:E.jsx(P_,{})})}),E.jsx(eJ,{})]})};function nJ(){return k.useEffect(()=>{window.location.href=new URL("/assets/nimo-dissertation.pdf",self.location).href},[]),null}Xf.createRoot(document.getElementById("root")).render(E.jsx(Oi.StrictMode,{children:E.jsx(w_,{children:E.jsxs(v_,{children:[E.jsx(Bb,{path:"/",element:E.jsx(tJ,{})}),E.jsx(Bb,{path:"/thesis",element:E.jsx(nJ,{})})]})})})); diff --git a/assets/nimo-defense-poster.pdf b/assets/nimo-defense-poster.pdf new file mode 100644 index 0000000..e26dace Binary files /dev/null and b/assets/nimo-defense-poster.pdf differ diff --git a/assets/nimo-dissertation.pdf b/assets/nimo-dissertation.pdf new file mode 100644 index 0000000..9cb9fe4 Binary files /dev/null and b/assets/nimo-dissertation.pdf differ diff --git a/index.html b/index.html index f257b88..2c56c97 100644 --- a/index.html +++ b/index.html @@ -73,7 +73,7 @@ data-utcoffset="-4" > Wode "Nimo" Ni - +