1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,55838,(e,t,n)=>{"use strict";var i=e.r(71645),r="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},a=i.useState,s=i.useEffect,o=i.useLayoutEffect,l=i.useDebugValue;function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch(e){return!0}}var c="u"<typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),i=a({inst:{value:n,getSnapshot:t}}),r=i[0].inst,c=i[1];return o(function(){r.value=n,r.getSnapshot=t,u(r)&&c({inst:r})},[e,n,t]),s(function(){return u(r)&&c({inst:r}),e(function(){u(r)&&c({inst:r})})},[e]),l(n),n};n.useSyncExternalStore=void 0!==i.useSyncExternalStore?i.useSyncExternalStore:c},2239,(e,t,n)=>{"use strict";t.exports=e.r(55838)},52822,(e,t,n)=>{"use strict";var i=e.r(71645),r=e.r(2239),a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},s=r.useSyncExternalStore,o=i.useRef,l=i.useEffect,u=i.useMemo,c=i.useDebugValue;n.useSyncExternalStoreWithSelector=function(e,t,n,i,r){var h=o(null);if(null===h.current){var d={hasValue:!1,value:null};h.current=d}else d=h.current;var p=s(e,(h=u(function(){function e(e){if(!l){if(l=!0,s=e,e=i(e),void 0!==r&&d.hasValue){var t=d.value;if(r(t,e))return o=t}return o=e}if(t=o,a(s,e))return t;var n=i(e);return void 0!==r&&r(t,n)?(s=e,t):(s=e,o=n)}var s,o,l=!1,u=void 0===n?null:n;return[function(){return e(t())},null===u?void 0:function(){return e(u())}]},[t,n,i,r]))[0],h[1]);return l(function(){d.hasValue=!0,d.value=p},[p]),c(p),p}},30224,(e,t,n)=>{"use strict";t.exports=e.r(52822)},66936,(e,t,n)=>{"use strict";function i(e,t){var n=e.length;for(e.push(t);0<n;){var i=n-1>>>1,r=e[i];if(0<s(r,t))e[i]=t,e[n]=r,n=i;else break}}function r(e){return 0===e.length?null:e[0]}function a(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;for(var i=0,r=e.length,a=r>>>1;i<a;){var o=2*(i+1)-1,l=e[o],u=o+1,c=e[u];if(0>s(l,n))u<r&&0>s(c,l)?(e[i]=c,e[u]=n,i=u):(e[i]=l,e[o]=n,i=o);else if(u<r&&0>s(c,n))e[i]=c,e[u]=n,i=u;else break}}return t}function s(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(n.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var o,l=performance;n.unstable_now=function(){return l.now()}}else{var u=Date,c=u.now();n.unstable_now=function(){return u.now()-c}}var h=[],d=[],p=1,f=null,m=3,g=!1,v=!1,x=!1,y=!1,_="function"==typeof setTimeout?setTimeout:null,b="function"==typeof clearTimeout?clearTimeout:null,S="u">typeof setImmediate?setImmediate:null;function M(e){for(var t=r(d);null!==t;){if(null===t.callback)a(d);else if(t.startTime<=e)a(d),t.sortIndex=t.expirationTime,i(h,t);else break;t=r(d)}}function w(e){if(x=!1,M(e),!v)if(null!==r(h))v=!0,T||(T=!0,o());else{var t=r(d);null!==t&&N(w,t.startTime-e)}}var T=!1,E=-1,C=5,A=-1;function R(){return!!y||!(n.unstable_now()-A<C)}function L(){if(y=!1,T){var e=n.unstable_now();A=e;var t=!0;try{e:{v=!1,x&&(x=!1,b(E),E=-1),g=!0;var i=m;try{t:{for(M(e),f=r(h);null!==f&&!(f.expirationTime>e&&R());){var s=f.callback;if("function"==typeof s){f.callback=null,m=f.priorityLevel;var l=s(f.expirationTime<=e);if(e=n.unstable_now(),"function"==typeof l){f.callback=l,M(e),t=!0;break t}f===r(h)&&a(h),M(e)}else a(h);f=r(h)}if(null!==f)t=!0;else{var u=r(d);null!==u&&N(w,u.startTime-e),t=!1}}break e}finally{f=null,m=i,g=!1}}}finally{t?o():T=!1}}}if("function"==typeof S)o=function(){S(L)};else if("u">typeof MessageChannel){var P=new MessageChannel,I=P.port2;P.port1.onmessage=L,o=function(){I.postMessage(null)}}else o=function(){_(L,0)};function N(e,t){E=_(function(){e(n.unstable_now())},t)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(e){e.callback=null},n.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):C=0<e?Math.floor(1e3/e):5},n.unstable_getCurrentPriorityLevel=function(){return m},n.unstable_next=function(e){switch(m){case 1:case 2:case 3:var t=3;break;default:t=m}var n=m;m=t;try{return e()}finally{m=n}},n.unstable_requestPaint=function(){y=!0},n.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=m;m=e;try{return t()}finally{m=n}},n.unstable_scheduleCallback=function(e,t,a){var s=n.unstable_now();switch(a="object"==typeof a&&null!==a&&"number"==typeof(a=a.delay)&&0<a?s+a:s,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=0x3fffffff;break;case 4:l=1e4;break;default:l=5e3}return l=a+l,e={id:p++,callback:t,priorityLevel:e,startTime:a,expirationTime:l,sortIndex:-1},a>s?(e.sortIndex=a,i(d,e),null===r(h)&&e===r(d)&&(x?(b(E),E=-1):x=!0,N(w,a-s))):(e.sortIndex=l,i(h,e),v||g||(v=!0,T||(T=!0,o()))),e},n.unstable_shouldYield=R,n.unstable_wrapCallback=function(e){var t=m;return function(){var n=m;m=t;try{return e.apply(this,arguments)}finally{m=n}}}},89499,(e,t,n)=>{"use strict";
1t.exports=e.r(66936)},78583,83086,e=>{"use strict";var t=e.i(75254);let n=(0,t.default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);e.s(["FileText",()=>n],78583);let i=(0,t.default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);e.s(["Sparkles",()=>i],83086)},87781,e=>{"use strict";let t,n,i,r,a,s,o,l,u,c,h,d,p,f,m,g,v,x;var y,_,b,S,M,w,T=e.i(43476),E=e.i(46932),C=e.i(75157),A=e.i(47167),R=e.i(71645);let L={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},P={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},I="attached",N="detached",D="srgb",U="srgb-linear",F="linear",O="srgb",k="300 es",z={COMPUTE:"compute",RENDER:"render"},B={PERSPECTIVE:"perspective",LINEAR:"linear",FLAT:"flat"},V={NORMAL:"normal",CENTROID:"centroid",SAMPLE:"sample",FIRST:"first",EITHER:"either"};function H(e){for(let t=e.length-1;t>=0;--t)if(e[t]>=65535)return!0;return!1}let j={Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:Uint8ClampedArray,Int16Array:Int16Array,Uint16Array:Uint16Array,Int32Array:Int32Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array};function G(e,t){return new j[e](t)}function W(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function X(e){return document.createElementNS("http://www.w3.org/1999/xhtml",e)}function q(){let e=X("canvas");return e.style.display="block",e}let Y={},Z=null;function J(e){Z=e}function $(){return Z}function K(...e){let t="THREE."+e.shift();Z?Z("log",t,...e):console.log(t,...e)}function Q(...e){let t="THREE."+e.shift();Z?Z("warn",t,...e):console.warn(t,...e)}function ee(...e){let t="THREE."+e.shift();Z?Z("error",t,...e):console.error(t,...e)}function et(...e){let t=e.join(" ");t in Y||(Y[t]=!0,Q(...e))}class en{addEventListener(e,t){void 0===this._listeners&&(this._listeners={});let n=this._listeners;void 0===n[e]&&(n[e]=[]),-1===n[e].indexOf(t)&&n[e].push(t)}hasEventListener(e,t){let n=this._listeners;return void 0!==n&&void 0!==n[e]&&-1!==n[e].indexOf(t)}removeEventListener(e,t){let n=this._listeners;if(void 0===n)return;let i=n[e];if(void 0!==i){let e=i.indexOf(t);-1!==e&&i.splice(e,1)}}dispatchEvent(e){let t=this._listeners;if(void 0===t)return;let n=t[e.type];if(void 0!==n){e.target=this;let t=n.slice(0);for(let n=0,i=t.length;n<i;n++)t[n].call(this,e);e.target=null}}}let ei=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"],er=1234567,ea=Math.PI/180,es=180/Math.PI;function eo(){let e=0xffffffff*Math.random()|0,t=0xffffffff*Math.random()|0,n=0xffffffff*Math.random()|0,i=0xffffffff*Math.random()|0;return(ei[255&e]+ei[e>>8&255]+ei[e>>16&255]+ei[e>>24&255]+"-"+ei[255&t]+ei[t>>8&255]+"-"+ei[t>>16&15|64]+ei[t>>24&255]+"-"+ei[63&n|128]+ei[n>>8&255]+"-"+ei[n>>16&255]+ei[n>>24&255]+ei[255&i]+ei[i>>8&255]+ei[i>>16&255]+ei[i>>24&255]).toLowerCase()}function el(e,t,n){return Math.max(t,Math.min(n,e))}function eu(e,t){return(e%t+t)%t}function ec(e,t,n){return(1-n)*e+n*t}function eh(e,t){switch(t.constructor){case Float32Array:return e;case Uint32Array:return e/0xffffffff;case Uint16Array:return e/65535;case Uint8Array:return e/255;case Int32Array:return Math.max(e/0x7fffffff,-1);case Int16Array:return Math.max(e/32767,-1);case Int8Array:return Math.max(e/127,-1);default:throw Error("Invalid component type.")}}function ed(e,t){switch(t.constructor){case Float32Array:return e;case Uint32Array:return Math.round(0xffffffff*e);case Uint16Array:return Math.round(65535*e);case Uint8Array:return Math.round(255*e);case Int32Array:return Math.round(0x7fffffff*e);case Int16Array:return Math.round(32767*e);case Int8Array:return Math.round(127*e);default:throw Error("Invalid component type.")}}let ep={DEG2RAD:ea,RAD2DEG:es,generateUUID:eo,clamp:el,euclideanModulo:eu,mapLinear:function(e,t,n,i,r){return i+(e-t)*(r-i)/(n-t)},inverseLerp:function(e,t,n){return e!==t?(n-e)/(t-e):0},lerp:ec,damp:function(e,t,n,i){return ec(e,t,1-Math.exp(-n*i))},pingpong:function(e,t=1){return t-Math.abs(eu(e,2*t)-t)},smoothstep:function(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t))*e*(3-2*e)},smootherstep:function(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t))*e*e*(e*(6*e-15)+10)},randInt:function(e,t){return e+Math.floor(Math.random()*(t-e+1))},randFloat:function(e,t){return e+Math.random()*(t-e)},randFloatSpread:function(e){return e*(.5-Math.random())},seededRandom:function(e){void 0!==e&&(er=e);let t=er+=0x6d2b79f5;return t=Math.imul(t^t>>>15,1|t),(((t^=t+Math.imul(t^t>>>7,61|t))^t>>>14)>>>0)/0x100000000},degToRad:function(e){return e*ea},radToDeg:function(e){return e*es},isPowerOfTwo:function(e){return(e&e-1)==0&&0!==e},ceilPowerOfTwo:function(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))},floorPowerOfTwo:function(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))},setQuaternionFromProperEuler:function(e,t,n,i,r){let a=Math.cos,s=Math.sin,o=a(n/2),l=s(n/2),u=a((t+i)/2),c=s((t+i)/2),h=a((t-i)/2),d=s((t-i)/2),p=a((i-t)/2),f=s((i-t)/2);switch(r){case"XYX":e.set(o*c,l*h,l*d,o*u);break;case"YZY":e.set(l*d,o*c,l*h,o*u);break;case"ZXZ":e.set(l*h,l*d,o*c,o*u);break;case"XZX":e.set(o*c,l*f,l*p,o*u);break;case"YXY":e.set(l*p,o*c,l*f,o*u);break;case"ZYZ":e.set(l*f,l*p,o*c,o*u);break;default:Q("MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}},normalize:ed,denormalize:eh};class ef{constructor(e=0,t=0){ef.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 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 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}
vendor: 5,498 bytes, line 1
1sub(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){let t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[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=el(this.x,e.x,t.x),this.y=el(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=el(this.x,e,t),this.y=el(this.y,e,t),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(el(n,e,t))}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=Math.trunc(this.x),this.y=Math.trunc(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){let t=Math.sqrt(this.lengthSq()*e.lengthSq());return 0===t?Math.PI/2:Math.acos(el(this.dot(e)/t,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,n=this.y-e.y;return t*t+n*n}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,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,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){let n=Math.cos(t),i=Math.sin(t),r=this.x-e.x,a=this.y-e.y;return this.x=r*n-a*i+e.x,this.y=r*i+a*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class em{constructor(e=0,t=0,n=0,i=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=n,this._w=i}static slerpFlat(e,t,n,i,r,a,s){let o=n[i+0],l=n[i+1],u=n[i+2],c=n[i+3],h=r[a+0],d=r[a+1],p=r[a+2],f=r[a+3];if(s<=0){e[t+0]=o,e[t+1]=l,e[t+2]=u,e[t+3]=c;return}if(s>=1){e[t+0]=h,e[t+1]=d,e[t+2]=p,e[t+3]=f;return}if(c!==f||o!==h||l!==d||u!==p){let e=o*h+l*d+u*p+c*f;e<0&&(h=-h,d=-d,p=-p,f=-f,e=-e);let t=1-s;if(e<.9995){let n=Math.acos(e),i=Math.sin(n);o=o*(t=Math.sin(t*n)/i)+h*(s=Math.sin(s*n)/i),l=l*t+d*s,u=u*t+p*s,c=c*t+f*s}else{let e=1/Math.sqrt((o=o*t+h*s)*o+(l=l*t+d*s)*l+(u=u*t+p*s)*u+(c=c*t+f*s)*c);o*=e,l*=e,u*=e,c*=e}}e[t]=o,e[t+1]=l,e[t+2]=u,e[t+3]=c}static multiplyQuaternionsFlat(e,t,n,i,r,a){let s=n[i],o=n[i+1],l=n[i+2],u=n[i+3],c=r[a],h=r[a+1],d=r[a+2],p=r[a+3];return e[t]=s*p+u*c+o*d-l*h,e[t+1]=o*p+u*h+l*c-s*d,e[t+2]=l*p+u*d+s*h-o*c,e[t+3]=u*p-s*c-o*h-l*d,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,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,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=!0){let n=e._x,i=e._y,r=e._z,a=e._order,s=Math.cos,o=Math.sin,l=s(n/2),u=s(i/2),c=s(r/2),h=o(n/2),d=o(i/2),p=o(r/2);switch(a){case"XYZ":this._x=h*u*c+l*d*p,this._y=l*d*c-h*u*p,this._z=l*u*p+h*d*c,this._w=l*u*c-h*d*p;break;case"YXZ":this._x=h*u*c+l*d*p,this._y=l*d*c-h*u*p,this._z=l*u*p-h*d*c,this._w=l*u*c+h*d*p;break;case"ZXY":this._x=h*u*c-l*d*p,this._y=l*d*c+h*u*p,this._z=l*u*p+h*d*c,this._w=l*u*c-h*d*p;break;case"ZYX":this._x=h*u*c-l*d*p,this._y=l*d*c+h*u*p,this._z=l*u*p-h*d*c,this._w=l*u*c+h*d*p;break;case"YZX":this._x=h*u*c+l*d*p,this._y=l*d*c+h*u*p,this._z=l*u*p-h*d*c,this._w=l*u*c-h*d*p;break;case"XZY":this._x=h*u*c-l*d*p,this._y=l*d*c-h*u*p,this._z=l*u*p+h*d*c,this._w=l*u*c+h*d*p;break;default:Q("Quaternion: .setFromEuler() encountered an unknown order: "+a)}return!0===t&&this._onChangeCallback(),this}setFromAxisAngle(e,t){let n=t/2,i=Math.sin(n);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){let t=e.elements,n=t[0],i=t[4],r=t[8],a=t[1],s=t[5],o=t[9],l=t[2],u=t[6],c=t[10],h=n+s+c;if(h>0){let e=.5/Math.sqrt(h+1);this._w=.25/e,this._x=(u-o)*e,this._y=(r-l)*e,this._z=(a-i)*e}else if(n>s&&n>c){let e=2*Math.sqrt(1+n-s-c);this._w=(u-o)/e,this._x=.25*e,this._y=(i+a)/e,this._z=(r+l)/e}else if(s>c){let e=2*Math.sqrt(1+s-n-c);this._w=(r-l)/e,this._x=(i+a)/e,this._y=.25*e,this._z=(o+u)/e}else{let e=2*Math.sqrt(1+c-n-s);this._w=(a-i)/e,this._x=(r+l)/e,this._y=(o+u)/e,this._z=.25*e}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return n<1e-8?(n=0,Math.abs(e.x)>
vendor: 4,491 bytes, line 1
1Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0):(this._x=0,this._y=-e.z,this._z=e.y)):(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=n,this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(el(this.dot(e),-1,1)))}rotateTowards(e,t){let n=this.angleTo(e);if(0===n)return this;let i=Math.min(1,t/n);return this.slerp(e,i),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 0===e?(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){let n=e._x,i=e._y,r=e._z,a=e._w,s=t._x,o=t._y,l=t._z,u=t._w;return this._x=n*u+a*s+i*l-r*o,this._y=i*u+a*o+r*s-n*l,this._z=r*u+a*l+n*o-i*s,this._w=a*u-n*s-i*o-r*l,this._onChangeCallback(),this}slerp(e,t){if(t<=0)return this;if(t>=1)return this.copy(e);let n=e._x,i=e._y,r=e._z,a=e._w,s=this.dot(e);s<0&&(n=-n,i=-i,r=-r,a=-a,s=-s);let o=1-t;if(s<.9995){let e=Math.acos(s),l=Math.sin(e);o=Math.sin(o*e)/l,t=Math.sin(t*e)/l,this._x=this._x*o+n*t,this._y=this._y*o+i*t,this._z=this._z*o+r*t,this._w=this._w*o+a*t,this._onChangeCallback()}else this._x=this._x*o+n*t,this._y=this._y*o+i*t,this._z=this._z*o+r*t,this._w=this._w*o+a*t,this.normalize();return this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),i=Math.sqrt(1-n),r=Math.sqrt(n);return this.set(i*Math.sin(e),i*Math.cos(e),r*Math.sin(t),r*Math.cos(t))}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._onChangeCallback(),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 eg{constructor(e=0,t=0,n=0){eg.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return void 0===n&&(n=this.z),this.x=e,this.y=t,this.z=n,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 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 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(ex.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(ex.setFromAxisAngle(e,t))}applyMatrix3(e){let t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[3]*n+r[6]*i,this.y=r[1]*t+r[4]*n+r[7]*i,this.z=r[2]*t+r[5]*n+r[8]*i,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){let t=this.x,n=this.y,i=this.z,r=e.elements,a=1/(r[3]*t+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*t+r[4]*n+r[8]*i+r[12])*a,this.y=(r[1]*t+r[5]*n+r[9]*i+r[13])*a,this.z=(r[2]*t+r[6]*n+r[10]*i+r[14])*a,this}
vendor: 5,355 bytes, line 1
1applyQuaternion(e){let t=this.x,n=this.y,i=this.z,r=e.x,a=e.y,s=e.z,o=e.w,l=2*(a*i-s*n),u=2*(s*t-r*i),c=2*(r*n-a*t);return this.x=t+o*l+a*c-s*u,this.y=n+o*u+s*l-r*c,this.z=i+o*c+r*u-a*l,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){let t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[4]*n+r[8]*i,this.y=r[1]*t+r[5]*n+r[9]*i,this.z=r[2]*t+r[6]*n+r[10]*i,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=el(this.x,e.x,t.x),this.y=el(this.y,e.y,t.y),this.z=el(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=el(this.x,e,t),this.y=el(this.y,e,t),this.z=el(this.z,e,t),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(el(n,e,t))}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=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(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,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let n=e.x,i=e.y,r=e.z,a=t.x,s=t.y,o=t.z;return this.x=i*o-r*s,this.y=r*a-n*o,this.z=n*s-i*a,this}projectOnVector(e){let t=e.lengthSq();if(0===t)return this.set(0,0,0);let n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return ev.copy(this).projectOnVector(e),this.sub(ev)}reflect(e){return this.sub(ev.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());return 0===t?Math.PI/2:Math.acos(el(this.dot(e)/t,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;return t*t+n*n+i*i}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,n){let i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){let t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=i,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,4*t)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,3*t)}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(){let e=Math.random()*Math.PI*2,t=2*Math.random()-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(e),this.y=t,this.z=n*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}let ev=new eg,ex=new em;class ey{constructor(e,t,n,i,r,a,s,o,l){ey.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],void 0!==e&&this.set(e,t,n,i,r,a,s,o,l)}set(e,t,n,i,r,a,s,o,l){let u=this.elements;return u[0]=e,u[1]=i,u[2]=s,u[3]=t,u[4]=r,u[5]=o,u[6]=n,u[7]=a,u[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){let t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){let 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){let n=e.elements,i=t.elements,r=this.elements,a=n[0],s=n[3],o=n[6],l=n[1],u=n[4],c=n[7],h=n[2],d=n[5
vendor: 4,417 bytes, line 1
1],p=n[8],f=i[0],m=i[3],g=i[6],v=i[1],x=i[4],y=i[7],_=i[2],b=i[5],S=i[8];return r[0]=a*f+s*v+o*_,r[3]=a*m+s*x+o*b,r[6]=a*g+s*y+o*S,r[1]=l*f+u*v+c*_,r[4]=l*m+u*x+c*b,r[7]=l*g+u*y+c*S,r[2]=h*f+d*v+p*_,r[5]=h*m+d*x+p*b,r[8]=h*g+d*y+p*S,this}multiplyScalar(e){let 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(){let e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],s=e[5],o=e[6],l=e[7],u=e[8];return t*a*u-t*s*l-n*r*u+n*s*o+i*r*l-i*a*o}invert(){let e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],s=e[5],o=e[6],l=e[7],u=e[8],c=u*a-s*l,h=s*o-u*r,d=l*r-a*o,p=t*c+n*h+i*d;if(0===p)return this.set(0,0,0,0,0,0,0,0,0);let f=1/p;return e[0]=c*f,e[1]=(i*l-u*n)*f,e[2]=(s*n-i*a)*f,e[3]=h*f,e[4]=(u*t-i*o)*f,e[5]=(i*r-s*t)*f,e[6]=d*f,e[7]=(n*o-l*t)*f,e[8]=(a*t-n*r)*f,this}transpose(){let e,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){let 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,n,i,r,a,s){let o=Math.cos(r),l=Math.sin(r);return this.set(n*o,n*l,-n*(o*a+l*s)+a+e,-i*l,i*o,-i*(-l*a+o*s)+s+t,0,0,1),this}scale(e,t){return this.premultiply(e_.makeScale(e,t)),this}rotate(e){return this.premultiply(e_.makeRotation(-e)),this}translate(e,t){return this.premultiply(e_.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){let t=this.elements,n=e.elements;for(let e=0;e<9;e++)if(t[e]!==n[e])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){let n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}}let e_=new ey,eb=new ey().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),eS=new ey().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715),eM=(d=[.64,.33,.3,.6,.15,.06],p=[.2126,.7152,.0722],f=[.3127,.329],(h={enabled:!0,workingColorSpace:U,spaces:{},convert:function(e,t,n){return!1!==this.enabled&&t!==n&&t&&n&&(this.spaces[t].transfer===O&&(e.r=ew(e.r),e.g=ew(e.g),e.b=ew(e.b)),this.spaces[t].primaries!==this.spaces[n].primaries&&(e.applyMatrix3(this.spaces[t].toXYZ),e.applyMatrix3(this.spaces[n].fromXYZ)),this.spaces[n].transfer===O&&(e.r=eT(e.r),e.g=eT(e.g),e.b=eT(e.b))),e},workingToColorSpace:function(e,t){return this.convert(e,this.workingColorSpace,t)},colorSpaceToWorking:function(e,t){return this.convert(e,t,this.workingColorSpace)},getPrimaries:function(e){return this.spaces[e].primaries},getTransfer:function(e){return""===e?F:this.spaces[e].transfer},getToneMappingMode:function(e){return this.spaces[e].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(e,t=this.workingColorSpace){return e.fromArray(this.spaces[t].luminanceCoefficients)},define:function(e){Object.assign(this.spaces,e)},_getMatrix:function(e,t,n){return e.copy(this.spaces[t].toXYZ).multiply(this.spaces[n].fromXYZ)},_getDrawingBufferColorSpace:function(e){return this.spaces[e].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(e=this.workingColorSpace){return this.spaces[e].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(e,t){return et("ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),h.workingToColorSpace(e,t)},toWorkingColorSpace:function(e,t){return et("ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),h.colorSpaceToWorking(e,t)}}).define({[U]:{primaries:d,whitePoint:f,transfer:F,toXYZ:eb,fromXYZ:eS,luminanceCoefficients:p,workingColorSpaceConfig:{unpackColorSpace:D},outputColorSpaceConfig:{drawingBufferColorSpace:D}},[D]:{primaries:d,whitePoint:f,transfer:O,toXYZ:eb,fromXYZ:eS,luminanceCoefficients:p,outputColorSpaceConfig:{drawingBufferColorSpace:D}}}),h);function ew(e){return e<.04045?.0773993808*e:Math.pow(.9478672986*e+.0521327014,2.4)}
1function eT(e){return e<.0031308?12.92*e:1.055*Math.pow(e,.41666)-.055}class eE{static getDataURL(e,n="image/png"){let i;if(/^data:/i.test(e.src)||"u"<typeof HTMLCanvasElement)return e.src;if(e instanceof HTMLCanvasElement)i=e;else{void 0===t&&(t=X("canvas")),t.width=e.width,t.height=e.height;let n=t.getContext("2d");e instanceof ImageData?n.putImageData(e,0,0):n.drawImage(e,0,0,e.width,e.height),i=t}return i.toDataURL(n)}static sRGBToLinear(e){if("u">typeof HTMLImageElement&&e instanceof HTMLImageElement||"u">typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"u">typeof ImageBitmap&&e instanceof ImageBitmap){let t=X("canvas");t.width=e.width,t.height=e.height;let n=t.getContext("2d");n.drawImage(e,0,0,e.width,e.height);let i=n.getImageData(0,0,e.width,e.height),r=i.data;for(let e=0;e<r.length;e++)r[e]=255*ew(r[e]/255);return n.putImageData(i,0,0),t}if(!e.data)return Q("ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),e;{let t=e.data.slice(0);for(let e=0;e<t.length;e++)t instanceof Uint8Array||t instanceof Uint8ClampedArray?t[e]=Math.floor(255*ew(t[e]/255)):t[e]=ew(t[e]);return{data:t,width:e.width,height:e.height}}}}let eC=0;class eA{constructor(e=null){this.isSource=!0,Object.defineProperty(this,"id",{value:eC++}),this.uuid=eo(),this.data=e,this.dataReady=!0,this.version=0}getSize(e){let t=this.data;return"u">typeof HTMLVideoElement&&t instanceof HTMLVideoElement?e.set(t.videoWidth,t.videoHeight,0):"u">typeof VideoFrame&&t instanceof VideoFrame?e.set(t.displayHeight,t.displayWidth,0):null!==t?e.set(t.width,t.height,t.depth||0):e.set(0,0,0),e}set needsUpdate(e){!0===e&&this.version++}toJSON(e){let t=void 0===e||"string"==typeof e;if(!t&&void 0!==e.images[this.uuid])return e.images[this.uuid];let n={uuid:this.uuid,url:""},i=this.data;if(null!==i){let e;if(Array.isArray(i)){e=[];for(let t=0,n=i.length;t<n;t++)i[t].isDataTexture?e.push(eR(i[t].image)):e.push(eR(i[t]))}else e=eR(i);n.url=e}return t||(e.images[this.uuid]=n),n}}function eR(e){return"u">typeof HTMLImageElement&&e instanceof HTMLImageElement||"u">typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"u">typeof ImageBitmap&&e instanceof ImageBitmap?eE.getDataURL(e):e.data?{data:Array.from(e.data),width:e.width,height:e.height,type:e.data.constructor.name}:(Q("Texture: Unable to serialize Texture."),{})}let eL=0,eP=new eg;class eI extends en{constructor(e=eI.DEFAULT_IMAGE,t=eI.DEFAULT_MAPPING,n=1001,i=1001,r=1006,a=1008,s=1023,o=1009,l=eI.DEFAULT_ANISOTROPY,u=""){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:eL++}),this.uuid=eo(),this.name="",this.source=new eA(e),this.mipmaps=[],this.mapping=t,this.channel=0,this.wrapS=n,this.wrapT=i,this.magFilter=r,this.minFilter=a,this.anisotropy=l,this.format=s,this.internalFormat=null,this.type=o,this.offset=new ef(0,0),this.repeat=new ef(1,1),this.center=new ef(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new ey,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=u,this.userData={},this.updateRanges=[],this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.isArrayTexture=!!e&&!!e.depth&&e.depth>1,this.pmremVersion=0}get width(){return this.source.getSize(eP).x}get height(){return this.source.getSize(eP).y}get depth(){return this.source.getSize(eP).z}get image(){return this.source.data}set image(e=null){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace
1=e.colorSpace,this.renderTarget=e.renderTarget,this.isRenderTargetTexture=e.isRenderTargetTexture,this.isArrayTexture=e.isArrayTexture,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}setValues(e){for(let t in e){let n=e[t];if(void 0===n){Q(`Texture.setValues(): parameter '${t}' has value of undefined.`);continue}let i=this[t];if(void 0===i){Q(`Texture.setValues(): property '${t}' does not exist.`);continue}i&&n&&i.isVector2&&n.isVector2||i&&n&&i.isVector3&&n.isVector3||i&&n&&i.isMatrix3&&n.isMatrix3?i.copy(n):this[t]=n}}toJSON(e){let t=void 0===e||"string"==typeof e;if(!t&&void 0!==e.textures[this.uuid])return e.textures[this.uuid];let n={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(n.userData=this.userData),t||(e.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(300!==this.mapping)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case 1e3:e.x=e.x-Math.floor(e.x);break;case 1001:e.x=e.x<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.x)%2)?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y<0||e.y>1)switch(this.wrapT){case 1e3:e.y=e.y-Math.floor(e.y);break;case 1001:e.y=e.y<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.y)%2)?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){!0===e&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){!0===e&&this.pmremVersion++}}eI.DEFAULT_IMAGE=null,eI.DEFAULT_MAPPING=300,eI.DEFAULT_ANISOTROPY=1;class eN{constructor(e=0,t=0,n=0,i=1){eN.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=i}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,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,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 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 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=void 0!==e.w?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){let t=this.x,n=this.y,i=this.z,r=this.w,a=e.elements;return this.x=a[0]*t+a[4]*n+a[8]*i+a[12]*r,this.y=a[1]*t+a[5]*n+a[9]*i+a[13]*r,this.z=a[2]*t+a[6]*n+a[10]*i+a[14]*r,this.w=a[3]*t+a[7]*n+a[11]*i+a[15]*r,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);let 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,n,i,r,a=e.elements,s=a[0],o=a[4],l=a[8],u=a[
11],c=a[5],h=a[9],d=a[2],p=a[6],f=a[10];if(.01>Math.abs(o-u)&&.01>Math.abs(l-d)&&.01>Math.abs(h-p)){if(.1>Math.abs(o+u)&&.1>Math.abs(l+d)&&.1>Math.abs(h+p)&&.1>Math.abs(s+c+f-3))return this.set(1,0,0,0),this;t=Math.PI;let e=(s+1)/2,a=(c+1)/2,m=(f+1)/2,g=(o+u)/4,v=(l+d)/4,x=(h+p)/4;return e>a&&e>m?e<.01?(n=0,i=.707106781,r=.707106781):(i=g/(n=Math.sqrt(e)),r=v/n):a>m?a<.01?(n=.707106781,i=0,r=.707106781):(n=g/(i=Math.sqrt(a)),r=x/i):m<.01?(n=.707106781,i=.707106781,r=0):(n=v/(r=Math.sqrt(m)),i=x/r),this.set(n,i,r,t),this}let m=Math.sqrt((p-h)*(p-h)+(l-d)*(l-d)+(u-o)*(u-o));return .001>Math.abs(m)&&(m=1),this.x=(p-h)/m,this.y=(l-d)/m,this.z=(u-o)/m,this.w=Math.acos((s+c+f-1)/2),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],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=el(this.x,e.x,t.x),this.y=el(this.y,e.y,t.y),this.z=el(this.z,e.z,t.z),this.w=el(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=el(this.x,e,t),this.y=el(this.y,e,t),this.z=el(this.z,e,t),this.w=el(this.w,e,t),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(el(n,e,t))}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=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(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,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,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 eD extends en{constructor(e=1,t=1,n={}){super(),n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:1006,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},n),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=n.depth,this.scissor=new eN(0,0,e,t),this.scissorTest=!1,this.viewport=new eN(0,0,e,t);const i=new eI({width:e,height:t,depth:n.depth});this.textures=[];const r=n.count;for(let e=0;e<r;e++)this.textures[e]=i.clone(),this.textures[e].isRenderTargetTexture=!0,this.textures[e].renderTarget=this;this._setTextureOptions(n),this.depthBuffer=n.depthBuffer,this.stencilBuffer=n.stencilBuffer,this.resolveDepthBuffer=n.resolveDepthBuffer,this.resolveStencilBuffer=n.resolveStencilBuffer,this._depthTexture=null,this.depthTexture=n.depthTexture,this.samples=n.samples,this.multiview=n.multiview}_setTextureOptions(e={}){let t={minFilter:1006,generateMipmaps:!1,flipY:!1,internalFormat:null};void 0!==e.mapping&&(t.mapping=e.mapping),void 0!==e.wrapS&&(t.wrapS=e.wrapS),void 0!==e.wrapT&&(t.wrapT=e.wrapT),void 0!==e.wrapR&&(t.wrapR=e.wrapR),void 0!==e.magFilter&&(t.magFilter=e.magFilter),void 0!==e.minFilter&&(t.minFilter=e.minFilter),void 0!==e.format&&(t.format=e.format),void 0!==e.type&&(t.type=e.type),void 0!==e.anisotropy&&(t.anisotropy=e.anisotropy),void 0!==e.colorSpace&&(t.colorSpace
vendor: 5,505 bytes, line 1
1=e.colorSpace),void 0!==e.flipY&&(t.flipY=e.flipY),void 0!==e.generateMipmaps&&(t.generateMipmaps=e.generateMipmaps),void 0!==e.internalFormat&&(t.internalFormat=e.internalFormat);for(let e=0;e<this.textures.length;e++)this.textures[e].setValues(t)}get texture(){return this.textures[0]}set texture(e){this.textures[0]=e}set depthTexture(e){null!==this._depthTexture&&(this._depthTexture.renderTarget=null),null!==e&&(e.renderTarget=this),this._depthTexture=e}get depthTexture(){return this._depthTexture}setSize(e,t,n=1){if(this.width!==e||this.height!==t||this.depth!==n){this.width=e,this.height=t,this.depth=n;for(let i=0,r=this.textures.length;i<r;i++)this.textures[i].image.width=e,this.textures[i].image.height=t,this.textures[i].image.depth=n,!0!==this.textures[i].isData3DTexture&&(this.textures[i].isArrayTexture=this.textures[i].image.depth>1);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.textures.length=0;for(let t=0,n=e.textures.length;t<n;t++){this.textures[t]=e.textures[t].clone(),this.textures[t].isRenderTargetTexture=!0,this.textures[t].renderTarget=this;let n=Object.assign({},e.textures[t].image);this.textures[t].source=new eA(n)}return this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,this.resolveDepthBuffer=e.resolveDepthBuffer,this.resolveStencilBuffer=e.resolveStencilBuffer,null!==e.depthTexture&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class eU extends eD{constructor(e=1,t=1,n={}){super(e,t,n),this.isWebGLRenderTarget=!0}}class eF extends eI{constructor(e=null,t=1,n=1,i=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:n,depth:i},this.magFilter=1003,this.minFilter=1003,this.wrapR=1001,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class eO extends eU{constructor(e=1,t=1,n=1,i={}){super(e,t,i),this.isWebGLArrayRenderTarget=!0,this.depth=n,this.texture=new eF(null,e,t,n),this._setTextureOptions(i),this.texture.isRenderTargetTexture=!0}}class ek extends eI{constructor(e=null,t=1,n=1,i=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:n,depth:i},this.magFilter=1003,this.minFilter=1003,this.wrapR=1001,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class ez extends eU{constructor(e=1,t=1,n=1,i={}){super(e,t,i),this.isWebGL3DRenderTarget=!0,this.depth=n,this.texture=new ek(null,e,t,n),this._setTextureOptions(i),this.texture.isRenderTargetTexture=!0}}class eB{constructor(e=new eg(Infinity,Infinity,Infinity),t=new eg(-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,n=e.length;t<n;t+=3)this.expandByPoint(eH.fromArray(e,t));return this}setFromBufferAttribute(e){this.makeEmpty();for(let t=0,n=e.count;t<n;t++)this.expandByPoint(eH.fromBufferAttribute(e,t));return this}setFromPoints(e){this.makeEmpty();for(let t=0,n=e.length;t<n;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){let n=eH.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(n),this.max.copy(e).add(n),this}setFromObject(e,t=!1){return this.makeEmpty(),this.expandByObject(e,t)}clone(){return new this.constructor().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=Infinity,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(e){return this.isEmpty()?e.set(0,0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}expandByObject(e,t=!1){e.updateWorldMatrix(!1,!1);let n=e.geometry;if(void 0!==n){let i=n.getAttribute("position");if(!0===t&&void 0!==i&&!0!==e.isInstancedMesh)for(let t=0,n=i.count;t<n;t++)!0===e.isMesh?e.getVertexPosition(t,eH):eH.fromBufferAttribute(i,t),eH.applyMatrix4(e.matrixWorld),this.expandByPoint(eH);else void 0!==e.boundingBox?(null===e.boundingBox&&e.computeBoundingBox(),ej.copy(e.boundingBox)):(null===n.boundingBox&&n.computeBoundingBox(),ej.copy(n.boundingBox)),ej.applyMatrix4(e.matrixWorld),this.union(ej)}let i=e.children;for(let e=0,n=i.length;e<n;e++)this.expandByObject(i[e],t);return this}containsPoint(e){return e.x>=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.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.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,eH),eH.distanceToSquared(e.center)<=e.radius*e.radiu
1s}intersectsPlane(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(eJ),e$.subVectors(this.max,eJ),eG.subVectors(e.a,eJ),eW.subVectors(e.b,eJ),eX.subVectors(e.c,eJ),eq.subVectors(eW,eG),eY.subVectors(eX,eW),eZ.subVectors(eG,eX);let t=[0,-eq.z,eq.y,0,-eY.z,eY.y,0,-eZ.z,eZ.y,eq.z,0,-eq.x,eY.z,0,-eY.x,eZ.z,0,-eZ.x,-eq.y,eq.x,0,-eY.y,eY.x,0,-eZ.y,eZ.x,0];return!!e0(t,eG,eW,eX,e$)&&!!e0(t=[1,0,0,0,1,0,0,0,1],eG,eW,eX,e$)&&(eK.crossVectors(eq,eY),e0(t=[eK.x,eK.y,eK.z],eG,eW,eX,e$))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,eH).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=.5*this.getSize(eH).length()),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()||(eV[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),eV[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),eV[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),eV[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),eV[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),eV[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),eV[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),eV[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(eV)),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)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(e){return this.min.fromArray(e.min),this.max.fromArray(e.max),this}}let eV=[new eg,new eg,new eg,new eg,new eg,new eg,new eg,new eg],eH=new eg,ej=new eB,eG=new eg,eW=new eg,eX=new eg,eq=ne
1w eg,eY=new eg,eZ=new eg,eJ=new eg,e$=new eg,eK=new eg,eQ=new eg;function e0(e,t,n,i,r){for(let a=0,s=e.length-3;a<=s;a+=3){eQ.fromArray(e,a);let s=r.x*Math.abs(eQ.x)+r.y*Math.abs(eQ.y)+r.z*Math.abs(eQ.z),o=t.dot(eQ),l=n.dot(eQ),u=i.dot(eQ);if(Math.max(-Math.max(o,l,u),Math.min(o,l,u))>s)return!1}return!0}let e1=new eB,e2=new eg,e3=new eg;class e5{constructor(e=new eg,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){let n=this.center;void 0!==t?n.copy(t):e1.setFromPoints(e).getCenter(n);let i=0;for(let t=0,r=e.length;t<r;t++)i=Math.max(i,n.distanceToSquared(e[t]));return this.radius=Math.sqrt(i),this}copy(e){return this.center.copy(e.center),this.radius=e.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(e){return e.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(e){return e.distanceTo(this.center)-this.radius}intersectsSphere(e){let t=this.radius+e.radius;return e.center.distanceToSquared(this.center)<=t*t}intersectsBox(e){return e.intersectsSphere(this)}intersectsPlane(e){return Math.abs(e.distanceToPoint(this.center))<=this.radius}clampPoint(e,t){let n=this.center.distanceToSquared(e);return t.copy(e),n>this.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?e.makeEmpty():(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;e2.subVectors(e,this.center);let t=e2.lengthSq();if(t>this.radius*this.radius){let e=Math.sqrt(t),n=(e-this.radius)*.5;this.center.addScaledVector(e2,n/e),this.radius+=n}return this}union(e){return e.isEmpty()||(this.isEmpty()?this.copy(e):!0===this.center.equals(e.center)?this.radius=Math.max(this.radius,e.radius):(e3.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(e2.copy(e.center).add(e3)),this.expandByPoint(e2.copy(e.center).sub(e3)))),this}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(e){return this.radius=e.radius,this.center.fromArray(e.center),this}}let e4=new eg,e6=new eg,e8=new eg,e7=new eg,e9=new eg,te=new eg,tt=new eg;class tn{constructor(e=new eg,t=new eg(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,e4)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);let n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){let t=e4.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(e4.copy(this.origin).addScaledVector(this.direction,t),e4.distanceToSquared(e))}distanceSqToSegment(e,t,n,i){let r,a,s,o;e6.copy(e).add(t).multiplyScalar(.5),e8.copy(t).sub(e).normalize(),e7.copy(this.origin).sub(e6);let l=.5*e.distanceTo(t),u=-this.direction.dot(e8),c=e7.dot(this.direction),h=-e7.dot(e8),d=e7.lengthSq(),p=Math.abs(1-u*u);if(p>0)if(r=u*h-c,a=u*c-h,o=l*p,r>=0)if(a>=-o)if(a<=o){let e=1/p;r*=e,a*=e,s=r*(r+u*a+2*c)+a*(u*r+a+2*h)+d}else s=-(r=Math.max(0,-(u*(a=l)+c)))*r+a*(a+2*h)+d;else s=-(r=Math.max(0,-(u*(a=-l)+c)))*r+a*(a+2*h)+d;else a<=-o?(a=(r=Math.max(0,-(-u*l+c)))>0?-l:Math.min(Math.max(-l,-h),l),s=-r*r+a*(a+2*h)+d):a<=o?(r=0,s=(a=Math.min(Math.max(-l,-h),l))*(a+2*h)+d):(a=(r=Math.max(0,-(u*l+c)))>0?l:Math.min(Math.max(-l,-h),l),s=-r*r+a*(a+2*h)+d);else a=u>0?-l:l,s=-(r=Math.max(0,-(u*a+c)))*r+a*(a+2*h)+d;return n&&n.copy(this.origin).addScaledVector(this.direction,r),i&&i.copy(e6).addScaledVector(e8,a),s}intersectSphere(e,t){e4.subVectors(e.center,this.origin);
1let n=e4.dot(this.direction),i=e4.dot(e4)-n*n,r=e.radius*e.radius;if(i>r)return null;let a=Math.sqrt(r-i),s=n-a,o=n+a;return o<0?null:s<0?this.at(o,t):this.at(s,t)}intersectsSphere(e){return!(e.radius<0)&&this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){let t=e.normal.dot(this.direction);if(0===t)return 0===e.distanceToPoint(this.origin)?0:null;let n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){let n=this.distanceToPlane(e);return null===n?null:this.at(n,t)}intersectsPlane(e){let t=e.distanceToPoint(this.origin);return!!(0===t||e.normal.dot(this.direction)*t<0)}intersectBox(e,t){let n,i,r,a,s,o,l=1/this.direction.x,u=1/this.direction.y,c=1/this.direction.z,h=this.origin;return(l>=0?(n=(e.min.x-h.x)*l,i=(e.max.x-h.x)*l):(n=(e.max.x-h.x)*l,i=(e.min.x-h.x)*l),u>=0?(r=(e.min.y-h.y)*u,a=(e.max.y-h.y)*u):(r=(e.max.y-h.y)*u,a=(e.min.y-h.y)*u),n>a||r>i||((r>n||isNaN(n))&&(n=r),(a<i||isNaN(i))&&(i=a),c>=0?(s=(e.min.z-h.z)*c,o=(e.max.z-h.z)*c):(s=(e.max.z-h.z)*c,o=(e.min.z-h.z)*c),n>o||s>i||((s>n||n!=n)&&(n=s),(o<i||i!=i)&&(i=o),i<0)))?null:this.at(n>=0?n:i,t)}intersectsBox(e){return null!==this.intersectBox(e,e4)}intersectTriangle(e,t,n,i,r){let a;e9.subVectors(t,e),te.subVectors(n,e),tt.crossVectors(e9,te);let s=this.direction.dot(tt);if(s>0){if(i)return null;a=1}else{if(!(s<0))return null;a=-1,s=-s}e7.subVectors(this.origin,e);let o=a*this.direction.dot(te.crossVectors(e7,te));if(o<0)return null;let l=a*this.direction.dot(e9.cross(e7));if(l<0||o+l>s)return null;let u=-a*e7.dot(tt);return u<0?null:this.at(u/s,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 ti{constructor(e,t,n,i,r,a,s,o,l,u,c,h,d,p,f,m){ti.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],void 0!==e&&this.set(e,t,n,i,r,a,s,o,l,u,c,h,d,p,f,m)}set(e,t,n,i,r,a,s,o,l,u,c,h,d,p,f,m){let g=this.elements;return g[0]=e,g[4]=t,g[8]=n,g[12]=i,g[1]=r,g[5]=a,g[9]=s,g[13]=o,g[2]=l,g[6]=u,g[10]=c,g[14]=h,g[3]=d,g[7]=p,g[11]=f,g[15]=m,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 ti().fromArray(this.elements)}copy(e){let t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){let t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){let 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,n){return 0===this.determinant()?(e.set(1,0,0),t.set(0,1,0),n.set(0,0,1)):(e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2)),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){if(0===e.determinant())return this.identity();let t=this.elements,n=e.elements,i=1/tr.setFromMatrixColumn(e,0).length(),r=1/tr.setFromMatrixColumn(e,1).length(),a=1/tr.setFromMatrixColumn(e,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*r,t[5]=n[5]*r,t[6]=n[6]*r,t[7]=0,t[8]=n[8]*a,t[9]=n[9]*a,t[10]=n[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){let t=this.elements,n=e.x,i=e.y,r=e.z,a=Math.cos(n),s=Math.sin(n),o=Math.cos(i),l=Math.sin(i),u=Math.cos(r),c=Math.sin(r);if("XYZ"===e.order){let e=a*u,n=a*c,i=s*u,r=s*c;t[0]=o*u,t[4]=-o*c,t[8]=l,t[1]=n+i*l,t[5]=e-r*l,t[9]=-s*o,t[2]=r-e*l,t[6]=i+n*l,t[10]=a*o}else if("YXZ"===e.order){let e=o*u,n=o*c,i=l*u,r=l*c;t[0]=e+r*s,t[4]=i*s-n,t[8]=a*l,t[1]=a*c,t[5]=a*u,t[9]=-s,t[2]=n*s-i,t[6]=r+e*s,t[10]=a*o}else if("ZXY"===e.order){let e=o*u,n=o*c,i=l*u,r=l*c;t[0]=e-r*s,t[4]=-a*c,t[8]=i+n*s,t[1]=n+i*s,t[5]=a*u,t[9]=r-e*s,t[2]=-a*l,t[6]=s,t[10]=a*o}else if("ZYX"===e.order){let e=a*u,n=a*c,i=s*u,r=s*c;t[0]=o*u,t[4]=i*l-n,t[8]=e*l+r,t[1]=o*c,t[5]=r*l+e,t[9]=n*l-i,t[2]=-l,t[6]=s*o,t[10]=a*o}
vendor: 5,539 bytes, line 1
1else if("YZX"===e.order){let e=a*o,n=a*l,i=s*o,r=s*l;t[0]=o*u,t[4]=r-e*c,t[8]=i*c+n,t[1]=c,t[5]=a*u,t[9]=-s*u,t[2]=-l*u,t[6]=n*c+i,t[10]=e-r*c}else if("XZY"===e.order){let e=a*o,n=a*l,i=s*o,r=s*l;t[0]=o*u,t[4]=-c,t[8]=l*u,t[1]=e*c+r,t[5]=a*u,t[9]=n*c-i,t[2]=i*c-n,t[6]=s*u,t[10]=r*c+e}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(ts,e,to)}lookAt(e,t,n){let i=this.elements;return tc.subVectors(e,t),0===tc.lengthSq()&&(tc.z=1),tc.normalize(),tl.crossVectors(n,tc),0===tl.lengthSq()&&(1===Math.abs(n.z)?tc.x+=1e-4:tc.z+=1e-4,tc.normalize(),tl.crossVectors(n,tc)),tl.normalize(),tu.crossVectors(tc,tl),i[0]=tl.x,i[4]=tu.x,i[8]=tc.x,i[1]=tl.y,i[5]=tu.y,i[9]=tc.y,i[2]=tl.z,i[6]=tu.z,i[10]=tc.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let n=e.elements,i=t.elements,r=this.elements,a=n[0],s=n[4],o=n[8],l=n[12],u=n[1],c=n[5],h=n[9],d=n[13],p=n[2],f=n[6],m=n[10],g=n[14],v=n[3],x=n[7],y=n[11],_=n[15],b=i[0],S=i[4],M=i[8],w=i[12],T=i[1],E=i[5],C=i[9],A=i[13],R=i[2],L=i[6],P=i[10],I=i[14],N=i[3],D=i[7],U=i[11],F=i[15];return r[0]=a*b+s*T+o*R+l*N,r[4]=a*S+s*E+o*L+l*D,r[8]=a*M+s*C+o*P+l*U,r[12]=a*w+s*A+o*I+l*F,r[1]=u*b+c*T+h*R+d*N,r[5]=u*S+c*E+h*L+d*D,r[9]=u*M+c*C+h*P+d*U,r[13]=u*w+c*A+h*I+d*F,r[2]=p*b+f*T+m*R+g*N,r[6]=p*S+f*E+m*L+g*D,r[10]=p*M+f*C+m*P+g*U,r[14]=p*w+f*A+m*I+g*F,r[3]=v*b+x*T+y*R+_*N,r[7]=v*S+x*E+y*L+_*D,r[11]=v*M+x*C+y*P+_*U,r[15]=v*w+x*A+y*I+_*F,this}multiplyScalar(e){let 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(){let e=this.elements,t=e[0],n=e[4],i=e[8],r=e[12],a=e[1],s=e[5],o=e[9],l=e[13],u=e[2],c=e[6],h=e[10],d=e[14],p=e[3],f=e[7],m=e[11],g=e[15],v=o*d-l*h,x=s*d-l*c,y=s*h-o*c,_=a*d-l*u,b=a*h-o*u,S=a*c-s*u;return t*(f*v-m*x+g*y)-n*(p*v-m*_+g*b)+i*(p*x-f*_+g*S)-r*(p*y-f*b+m*S)}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(e,t,n){let i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=t,i[14]=n),this}invert(){let e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],s=e[5],o=e[6],l=e[7],u=e[8],c=e[9],h=e[10],d=e[11],p=e[12],f=e[13],m=e[14],g=e[15],v=c*m*l-f*h*l+f*o*d-s*m*d-c*o*g+s*h*g,x=p*h*l-u*m*l-p*o*d+a*m*d+u*o*g-a*h*g,y=u*f*l-p*c*l+p*s*d-a*f*d-u*s*g+a*c*g,_=p*c*o-u*f*o-p*s*h+a*f*h+u*s*m-a*c*m,b=t*v+n*x+i*y+r*_;if(0===b)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let S=1/b;return e[0]=v*S,e[1]=(f*h*r-c*m*r-f*i*d+n*m*d+c*i*g-n*h*g)*S,e[2]=(s*m*r-f*o*r+f*i*l-n*m*l-s*i*g+n*o*g)*S,e[3]=(c*o*r-s*h*r-c*i*l+n*h*l+s*i*d-n*o*d)*S,e[4]=x*S,e[5]=(u*m*r-p*h*r+p*i*d-t*m*d-u*i*g+t*h*g)*S,e[6]=(p*o*r-a*m*r-p*i*l+t*m*l+a*i*g-t*o*g)*S,e[7]=(a*h*r-u*o*r+u*i*l-t*h*l-a*i*d+t*o*d)*S,e[8]=y*S,e[9]=(p*c*r-u*f*r-p*n*d+t*f*d+u*n*g-t*c*g)*S,e[10]=(a*f*r-p*s*r+p*n*l-t*f*l-a*n*g+t*s*g)*S,e[11]=(u*s*r-a*c*r-u*n*l+t*c*l+a*n*d-t*s*d)*S,e[12]=_*S,e[13]=(u*f*i-p*c*i+p*n*h-t*f*h-u*n*m+t*c*m)*S,e[14]=(p*s*i-a*f*i-p*n*o+t*f*o+a*n*m-t*s*m)*S,e[15]=(a*c*i-u*s*i+u*n*o-t*c*o-a*n*h+t*s*h)*S,this}scale(e){let t=this.elements,n=e.x,i=e.y,r=e.z;return t[0]*=n,t[4]*=i,t[8]*=r,t[1]*=n,t[5]*=i,t[9]*=r,t[2]*=n,t[6]*=i,t[10]*=r,t[3]*=n,t[7]*=i,t[11]*=r,this}getMaxScaleOnAxis(){let e=this.elements;return Math.sqrt(Math.max(e[0]*e[0]+e[1]*e[1]+e[2]*e[2],e[4]*e[4]+e[5]*e[5]+e[6]*e[6],e[8]*e[8]+e[9]*e[9]+e[10]*e[10]))}makeTranslation(e,t,n){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){let t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){let n=Math.cos(t),i=Math.sin(t),r=1-n,a=e.x,s=e.y,o=e.z,l=r*a,u=r*s;return this.set(l*a+n,l*s-i*o,l*o+i*s,0,l*s+i*o,u*s+n,u*o-i*a,0,l*o-i*s,u*o+i*a,r*o*o+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,i,r,a){return this.set(1,n,r,0,e,1,a,0,t,i,1,0,0,0,0,1),this}compose(e,t,n){let i=this.elements,r=t._x,a=t._y,s=t._z,o=t._w,l=r+r,u=a+a,c=s+s,h=r*l,d=r*u,p=r*c,f=a*u,m=a*c,g=s*c,v=o*l,x=o*u,y=o*c,_=n.x,b=n.y,S=n.z;return i[0]=(1-(f+g))*_,i[1]=(d+y)*_,i[2]=(p-x)*_,i[3]=0,i[4]=(d-y)*b,i[5]=(1-(h+g))*b,i[6]=(m+v)*b,i[7]=0,i[8]=(p+x)*S,i[9]=(m-v)*S,i[10]=(1-(h+f))*S,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}decompose(e,t,n){let i=this.elements;if(e.x=i[12],e.y=i[13],e.z=i[14],0===this.determinant())return n.set(1,1,1),t.identity(),this;let r=tr.set(i[0],i[1],i[2]).length(),a=tr.set(i[4],i[5],i[6]).length(),s=tr.set(i[8],i[9],i[10]).length();0>this.determinant()&&(r=-r),ta.copy(this);let o=1/r,l=1/a,u=1/s;return ta.elements[0]*=o,ta.elements[1]*=o,ta.elements[2]*=o,ta.elements[4]*=l,ta.elements[5]*=l,ta.elements[6]*=l,ta.elements[8]*=u,ta.elements[9]*=u,ta.elements[10]*=u,t.setFromRotationMatrix(ta),n.x=r,n.y=a,n.z=s,this}makePerspective(e,t,n,i,r,a,s=2e3,o=!1){let l,u,c=this.elements;if(o)l=r/(a-r),u=a*r/(a-r);else if(2e3===s)l=-(a+r)/(a-r),u=-2*a*r/(a-r);else if(2001===s)l=-a/(a-r),u=-a*r/(a-r);else throw Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+s);
1return c[0]=2*r/(t-e),c[4]=0,c[8]=(t+e)/(t-e),c[12]=0,c[1]=0,c[5]=2*r/(n-i),c[9]=(n+i)/(n-i),c[13]=0,c[2]=0,c[6]=0,c[10]=l,c[14]=u,c[3]=0,c[7]=0,c[11]=-1,c[15]=0,this}makeOrthographic(e,t,n,i,r,a,s=2e3,o=!1){let l,u,c=this.elements;if(o)l=1/(a-r),u=a/(a-r);else if(2e3===s)l=-2/(a-r),u=-(a+r)/(a-r);else if(2001===s)l=-1/(a-r),u=-r/(a-r);else throw Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+s);return c[0]=2/(t-e),c[4]=0,c[8]=0,c[12]=-(t+e)/(t-e),c[1]=0,c[5]=2/(n-i),c[9]=0,c[13]=-(n+i)/(n-i),c[2]=0,c[6]=0,c[10]=l,c[14]=u,c[3]=0,c[7]=0,c[11]=0,c[15]=1,this}equals(e){let t=this.elements,n=e.elements;for(let e=0;e<16;e++)if(t[e]!==n[e])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){let n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}let tr=new eg,ta=new ti,ts=new eg(0,0,0),to=new eg(1,1,1),tl=new eg,tu=new eg,tc=new eg,th=new ti,td=new em;class tp{constructor(e=0,t=0,n=0,i=tp.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=i}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,n,i=this._order){return this._x=e,this._y=t,this._z=n,this._order=i,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,n=!0){let i=e.elements,r=i[0],a=i[4],s=i[8],o=i[1],l=i[5],u=i[9],c=i[2],h=i[6],d=i[10];switch(t){case"XYZ":this._y=Math.asin(el(s,-1,1)),.9999999>Math.abs(s)?(this._x=Math.atan2(-u,d),this._z=Math.atan2(-a,r)):(this._x=Math.atan2(h,l),this._z=0);break;case"YXZ":this._x=Math.asin(-el(u,-1,1)),.9999999>Math.abs(u)?(this._y=Math.atan2(s,d),this._z=Math.atan2(o,l)):(this._y=Math.atan2(-c,r),this._z=0);break;case"ZXY":this._x=Math.asin(el(h,-1,1)),.9999999>Math.abs(h)?(this._y=Math.atan2(-c,d),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(o,r));break;case"ZYX":this._y=Math.asin(-el(c,-1,1)),.9999999>Math.abs(c)?(this._x=Math.atan2(h,d),this._z=Math.atan2(o,r)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(el(o,-1,1)),.9999999>Math.abs(o)?(this._x=Math.atan2(-u,l),this._y=Math.atan2(-c,r)):(this._x=0,this._y=Math.atan2(s,d));break;case"XZY":this._z=Math.asin(-el(a,-1,1)),.9999999>Math.abs(a)?(this._x=Math.atan2(h,l),this._y=Math.atan2(s,r)):(this._x=Math.atan2(-u,d),this._y=0);break;default:Q("Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,!0===n&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return th.makeRotationFromQuaternion(e),this.setFromRotationMatrix(th,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return td.setFromEuler(this),this.setFromQuaternion(td,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],void 0!==e[3]&&(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}}tp.DEFAULT_ORDER="XYZ";class tf{constructor(){this.mask=1}set(e){this.mask=1<<e>>>0}enable(e){this.mask|=1<<e}enableAll(){this.mask=-1}toggle(e){this.mask^=1<<e}disable(e){this.mask&=~(1<<e)}disableAll(){this.mask=0}test(e){return(this.mask&e.mask)!=0}isEnabled(e){return(this.mask&1<<e)!=0}}let tm=0,tg=new eg,tv=new em,tx=new ti,ty=new eg,t_=new eg,tb=new eg,tS=new em,tM=new eg(1,0,0),tw=new eg(0,1,0),tT=new eg(0,0,1),tE={type:"added"},tC={type:"removed"},tA={type:"childadded",child:null},tR={type:"childremoved",child:null};class tL extends en{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:tm++}),this.uuid=eo(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=tL.DEFAULT_UP.clone();const e=new eg,t=new tp,n=new em,i=new eg(1,1,1);t._onChange(function(){n.setFromEuler(t,!1)}),n._onChange(function(){t.setFromQuaternion(n,void 0,!1)}),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:e},rotation:{configurable:!0,enumerable:!0,value:t},quaternion:{configurable:!0,enumerable:!0,value:n},scale:{configurable:!0,enumerable:!0,value:i},modelViewMatrix:{value:new ti},normalMatrix:{value:new ey}}),this.matrix=new ti,this.matrixWorld=new ti,this.matrixAutoUpdate=tL.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=tL.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new tf,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.customDepthMaterial=void 0,this.customDistanceMaterial=void 0,this.userData={}}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(e),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(e){return this.quaternion.premultiply(e),this}setRotationFromAxisAngle(e,t){this.quaternion.setFromAxisAngle(e,t)}setRotationFromEuler(e){this.quaternion.setFromEuler(e,!0)}
vendor: 18,341 bytes, line 1
1setRotationFromMatrix(e){this.quaternion.setFromRotationMatrix(e)}setRotationFromQuaternion(e){this.quaternion.copy(e)}rotateOnAxis(e,t){return tv.setFromAxisAngle(e,t),this.quaternion.multiply(tv),this}rotateOnWorldAxis(e,t){return tv.setFromAxisAngle(e,t),this.quaternion.premultiply(tv),this}rotateX(e){return this.rotateOnAxis(tM,e)}rotateY(e){return this.rotateOnAxis(tw,e)}rotateZ(e){return this.rotateOnAxis(tT,e)}translateOnAxis(e,t){return tg.copy(e).applyQuaternion(this.quaternion),this.position.add(tg.multiplyScalar(t)),this}translateX(e){return this.translateOnAxis(tM,e)}translateY(e){return this.translateOnAxis(tw,e)}translateZ(e){return this.translateOnAxis(tT,e)}localToWorld(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(this.matrixWorld)}worldToLocal(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(tx.copy(this.matrixWorld).invert())}lookAt(e,t,n){e.isVector3?ty.copy(e):ty.set(e,t,n);let i=this.parent;this.updateWorldMatrix(!0,!1),t_.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?tx.lookAt(t_,ty,this.up):tx.lookAt(ty,t_,this.up),this.quaternion.setFromRotationMatrix(tx),i&&(tx.extractRotation(i.matrixWorld),tv.setFromRotationMatrix(tx),this.quaternion.premultiply(tv.invert()))}add(e){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.add(arguments[e]);return this}return e===this?ee("Object3D.add: object can't be added as a child of itself.",e):e&&e.isObject3D?(e.removeFromParent(),e.parent=this,this.children.push(e),e.dispatchEvent(tE),tA.child=e,this.dispatchEvent(tA),tA.child=null):ee("Object3D.add: object not an instance of THREE.Object3D.",e),this}remove(e){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.remove(arguments[e]);return this}let t=this.children.indexOf(e);return -1!==t&&(e.parent=null,this.children.splice(t,1),e.dispatchEvent(tC),tR.child=e,this.dispatchEvent(tR),tR.child=null),this}removeFromParent(){let e=this.parent;return null!==e&&e.remove(this),this}clear(){return this.remove(...this.children)}attach(e){return this.updateWorldMatrix(!0,!1),tx.copy(this.matrixWorld).invert(),null!==e.parent&&(e.parent.updateWorldMatrix(!0,!1),tx.multiply(e.parent.matrixWorld)),e.applyMatrix4(tx),e.removeFromParent(),e.parent=this,this.children.push(e),e.updateWorldMatrix(!1,!0),e.dispatchEvent(tE),tA.child=e,this.dispatchEvent(tA),tA.child=null,this}getObjectById(e){return this.getObjectByProperty("id",e)}getObjectByName(e){return this.getObjectByProperty("name",e)}getObjectByProperty(e,t){if(this[e]===t)return this;for(let n=0,i=this.children.length;n<i;n++){let i=this.children[n].getObjectByProperty(e,t);if(void 0!==i)return i}}getObjectsByProperty(e,t,n=[]){this[e]===t&&n.push(this);let i=this.children;for(let r=0,a=i.length;r<a;r++)i[r].getObjectsByProperty(e,t,n);return n}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(t_,e,tb),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(t_,tS,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);let t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(e){e(this);let t=this.children;for(let n=0,i=t.length;n<i;n++)t[n].traverse(e)}traverseVisible(e){if(!1===this.visible)return;e(this);let t=this.children;for(let n=0,i=t.length;n<i;n++)t[n].traverseVisible(e)}traverseAncestors(e){let t=this.parent;null!==t&&(e(t),t.traverseAncestors(e))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(e){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||e)&&(!0===this.matrixWorldAutoUpdate&&(null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,e=!0);let t=this.children;for(let n=0,i=t.length;n<i;n++)t[n].updateMatrixWorld(e)}updateWorldMatrix(e,t){let n=this.parent;if(!0===e&&null!==n&&n.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),!0===this.matrixWorldAutoUpdate&&(null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),!0===t){let e=this.children;for(let t=0,n=e.length;t<n;t++)e[t].updateWorldMatrix(!1,!0)}}toJSON(e){let t=void 0===e||"string"==typeof e,n={};t&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},n.metadata={version:4.7,type:"Object",generator:"Object3D.toJSON"});let i={};function r(t,n){return void 0===t[n.uuid]&&(t[n.uuid]=n.toJSON(e)),n.uuid}if(i.uuid=this.uuid,i.type=this.type,""!==this.name&&(i.name=this.name),!0===this.castShadow&&(i.castShadow=!0),!0===this.receiveShadow&&(i.receiveShadow=!0),!1===this.visible&&(i.visible=!1),!1===this.frustumCulled&&(i.frustumCulled=!1),0!==this.renderOrder&&(i.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),i.up=this.up.toArray(),!1===this.matrixAutoUpdate&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),null!==this.instanceColor&&(i.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(i.type="BatchedMesh",i.perObjectFrustumCulled=this.perObjectFrustumCulled,i.sortObjects=this.sortObjects,i.drawRanges=this._drawRanges,i.reservedRanges=this._reservedRanges,i.geometryInfo=this._geometryInfo.map(e=>({...e,boundingBox:e.boundingBox?e.boundingBox.toJSON():void 0,boundingSphere:e.boundingSphere?e.boundingSphere.toJSON():void 0})),i.instanceInfo=this._instanceInfo.map(e=>({...e})),i.availableInstanceIds=this._availableInstanceIds.slice(),i.availableGeometryIds=this._availableGeometryIds.slice(),i.nextIndexStart=this._nextIndexStart,i.nextVertexStart=this._nextVertexStart,i.geometryCount=this._geometryCount,i.maxInstanceCount=this._maxInstanceCount,i.maxVertexCount=this._maxVertexCount,i.maxIndexCount=this._maxIndexCount,i.geometryInitialized=this._geometryInitialized,i.matricesTexture=this._matricesTexture.toJSON(e),i.indirectTexture=this._indirectTexture.toJSON(e),null!==this._colorsTexture&&(i.colorsTexture=this._colorsTexture.toJSON(e)),null!==this.boundingSphere&&(i.boundingSphere=this.boundingSphere.toJSON()),null!==this.boundingBox&&(i.boundingBox=this.boundingBox.toJSON())),this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&!0!==this.environment.isRenderTargetTexture&&(i.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=r(e.geometries,this.geometry);let t=this.geometry.parameters;if(void 0!==t&&void 0!==t.shapes){let n=t.shapes;if(Array.isArray(n))for(let t=0,i=n.length;t<i;t++){let i=n[t];r(e.shapes,i)}else r(e.shapes,n)}}if(this.isSkinnedMesh&&(i.bindMode=this.bindMode,i.bindMatrix=this.bindMatrix.toArray(),void 0!==this.skeleton&&(r(e.skeletons,this.skeleton),i.skeleton=this.skeleton.uuid)),void 0!==this.material)if(Array.isArray(this.material)){let t=[];for(let n=0,i=this.material.length;n<i;n++)t.push(r(e.materials,this.material[n]));i.material=t}else i.material=r(e.materials,this.material);if(this.children.length>0){i.children=[];for(let t=0;t<this.children.length;t++)i.children.push(this.children[t].toJSON(e).object)}if(this.animations.length>0){i.animations=[];for(let t=0;t<this.animations.length;t++){let n=this.animations[t];i.animations.push(r(e.animations,n))}}if(t){let t=a(e.geometries),i=a(e.materials),r=a(e.textures),s=a(e.images),o=a(e.shapes),l=a(e.skeletons),u=a(e.animations),c=a(e.nodes);t.length>0&&(n.geometries=t),i.length>0&&(n.materials=i),r.length>0&&(n.textures=r),s.length>0&&(n.images=s),o.length>0&&(n.shapes=o),l.length>0&&(n.skeletons=l),u.length>0&&(n.animations=u),c.length>0&&(n.nodes=c)}return n.object=i,n;function a(e){let t=[];for(let n in e){let i=e[n];delete i.metadata,t.push(i)}return t}}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.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,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.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),!0===t)for(let t=0;t<e.children.length;t++){let n=e.children[t];this.add(n.clone())}return this}}tL.DEFAULT_UP=new eg(0,1,0),tL.DEFAULT_MATRIX_AUTO_UPDATE=!0,tL.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;let tP=new eg,tI=new eg,tN=new eg,tD=new eg,tU=new eg,tF=new eg,tO=new eg,tk=new eg,tz=new eg,tB=new eg,tV=new eN,tH=new eN,tj=new eN;class tG{constructor(e=new eg,t=new eg,n=new eg){this.a=e,this.b=t,this.c=n}static getNormal(e,t,n,i){i.subVectors(n,t),tP.subVectors(e,t),i.cross(tP);let r=i.lengthSq();return r>0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)}static getBarycoord(e,t,n,i,r){tP.subVectors(i,t),tI.subVectors(n,t),tN.subVectors(e,t);let a=tP.dot(tP),s=tP.dot(tI),o=tP.dot(tN),l=tI.dot(tI),u=tI.dot(tN),c=a*l-s*s;if(0===c)return r.set(0,0,0),null;let h=1/c,d=(l*o-s*u)*h,p=(a*u-s*o)*h;return r.set(1-d-p,p,d)}static containsPoint(e,t,n,i){return null!==this.getBarycoord(e,t,n,i,tD)&&tD.x>=0&&tD.y>=0&&tD.x+tD.y<=1}static getInterpolation(e,t,n,i,r,a,s,o){return null===this.getBarycoord(e,t,n,i,tD)?(o.x=0,o.y=0,"z"in o&&(o.z=0),"w"in o&&(o.w=0),null):(o.setScalar(0),o.addScaledVector(r,tD.x),o.addScaledVector(a,tD.y),o.addScaledVector(s,tD.z),o)}static getInterpolatedAttribute(e,t,n,i,r,a){return tV.setScalar(0),tH.setScalar(0),tj.setScalar(0),tV.fromBufferAttribute(e,t),tH.fromBufferAttribute(e,n),tj.fromBufferAttribute(e,i),a.setScalar(0),a.addScaledVector(tV,r.x),a.addScaledVector(tH,r.y),a.addScaledVector(tj,r.z),a}static isFrontFacing(e,t,n,i){return tP.subVectors(n,t),tI.subVectors(e,t),0>tP.cross(tI).dot(i)}set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(e,t,n,i){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[i]),this}setFromAttributeAndIndices(e,t,n,i){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,n),this.c.fromBufferAttribute(e,i),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 tP.subVectors(this.c,this.b),tI.subVectors(this.a,this.b),.5*tP.cross(tI).length()}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return tG.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return tG.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,n,i,r){return tG.getInterpolation(e,this.a,this.b,this.c,t,n,i,r)}containsPoint(e){return tG.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return tG.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){let n,i,r=this.a,a=this.b,s=this.c;tU.subVectors(a,r),tF.subVectors(s,r),tk.subVectors(e,r);let o=tU.dot(tk),l=tF.dot(tk);if(o<=0&&l<=0)return t.copy(r);tz.subVectors(e,a);let u=tU.dot(tz),c=tF.dot(tz);if(u>=0&&c<=u)return t.copy(a);let h=o*c-u*l;if(h<=0&&o>=0&&u<=0)return n=o/(o-u),t.copy(r).addScaledVector(tU,n);tB.subVectors(e,s);let d=tU.dot(tB),p=tF.dot(tB);if(p>=0&&d<=p)return t.copy(s);let f=d*l-o*p;if(f<=0&&l>=0&&p<=0)return i=l/(l-p),t.copy(r).addScaledVector(tF,i);let m=u*p-d*c;if(m<=0&&c-u>=0&&d-p>=0)return tO.subVectors(s,a),i=(c-u)/(c-u+(d-p)),t.copy(a).addScaledVector(tO,i);let g=1/(m+f+h);return n=f*g,i=h*g,t.copy(r).addScaledVector(tU,n).addScaledVector(tF,i)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}let tW={aliceblue:0xf0f8ff,antiquewhite:0xfaebd7,aqua:65535,aquamarine:8388564,azure:0xf0ffff,beige:0xf5f5dc,bisque:0xffe4c4,black:0,blanchedalmond:0xffebcd,blue:255,blueviolet:9055202,brown:0xa52a2a,burlywood:0xdeb887,cadetblue:6266528,chartreuse:8388352,chocolate:0xd2691e,coral:0xff7f50,cornflowerblue:6591981,cornsilk:0xfff8dc,crimson:0xdc143c,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:0xb8860b,darkgray:0xa9a9a9,darkgreen:25600,darkgrey:0xa9a9a9,darkkhaki:0xbdb76b,darkmagenta:9109643,darkolivegreen:5597999,darkorange:0xff8c00,darkorchid:0x9932cc,darkred:9109504,darksalmon:0xe9967a,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:0xff1493,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:0xb22222,floralwhite:0xfffaf0,forestgreen:2263842,fuchsia:0xff00ff,gainsboro:0xdcdcdc,ghostwhite:0xf8f8ff,gold:0xffd700,goldenrod:0xdaa520,gray:8421504,green:32768,greenyellow:0xadff2f,grey:8421504,honeydew:0xf0fff0,hotpink:0xff69b4,indianred:0xcd5c5c,indigo:4915330,ivory:0xfffff0,khaki:0xf0e68c,lavender:0xe6e6fa,lavenderblush:0xfff0f5,lawngreen:8190976,lemonchiffon:0xfffacd,lightblue:0xadd8e6,lightcoral:0xf08080,lightcyan:0xe0ffff,lightgoldenrodyellow:0xfafad2,lightgray:0xd3d3d3,lightgreen:9498256,lightgrey:0xd3d3d3,lightpink:0xffb6c1,lightsalmon:0xffa07a,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:0xb0c4de,lightyellow:0xffffe0,lime:65280,limegreen:3329330,linen:0xfaf0e6,magenta:0xff00ff,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:0xba55d3,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:0xc71585,midnightblue:1644912,mintcream:0xf5fffa,mistyrose:0xffe4e1,moccasin:0xffe4b5,navajowhite:0xffdead,navy:128,oldlace:0xfdf5e6,olive:8421376,olivedrab:7048739,orange:0xffa500,orangered:0xff4500,orchid:0xda70d6,palegoldenrod:0xeee8aa,palegreen:0x98fb98,paleturquoise:0xafeeee,palevioletred:0xdb7093,papayawhip:0xffefd5,peachpuff:0xffdab9,peru:0xcd853f,pink:0xffc0cb,plum:0xdda0dd,powderblue:0xb0e0e6,purple:8388736,rebeccapurple:6697881,red:0xff0000,rosybrown:0xbc8f8f,royalblue:4286945,saddlebrown:9127187,salmon:0xfa8072,sandybrown:0xf4a460,seagreen:3050327,seashell:0xfff5ee,sienna:0xa0522d,silver:0xc0c0c0,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:0xfffafa,springgreen:65407,steelblue:4620980,tan:0xd2b48c,teal:32896,thistle:0xd8bfd8,tomato:0xff6347,turquoise:4251856,violet:0xee82ee,wheat:0xf5deb3,white:0xffffff,whitesmoke:0xf5f5f5,yellow:0xffff00,yellowgreen:0x9acd32},tX={h:0,s:0,l:0},tq={h:0,s:0,l:0};function tY(e,t,n){return(n<0&&(n+=1),n>1&&(n-=1),n<1/6)?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*6*(2/3-n):e}class tZ{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,n)}set(e,t,n){return void 0===t&&void 0===n?e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e):this.setRGB(e,t,n),this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=D){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,eM.colorSpaceToWorking(this,t),this}setRGB(e,t,n,i=eM.workingColorSpace){return this.r=e,this.g=t,this.b=n,eM.colorSpaceToWorking(this,i),this}setHSL(e,t,n,i=eM.workingColorSpace){if(e=eu(e,1),t=el(t,0,1),n=el(n,0,1),0===t)this.r=this.g=this.b=n;else{let i=n<=.5?n*(1+t):n+t-n*t,r=2*n-i;this.r=tY(r,i,e+1/3),this.g=tY(r,i,e),this.b=tY(r,i,e-1/3)}return eM.colorSpaceToWorking(this,i),this}setStyle(e,t=D){let n;function i(t){void 0!==t&&1>parseFloat(t)&&Q("Color: Alpha component of "+e+" will be ignored.")}if(n=/^(\w+)\(([^\)]*)\)/.exec(e)){let r,a=n[1],s=n[2];switch(a){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))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(s))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(s))return i(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,t);break;default:Q("Color: Unknown color model "+e)}}else if(n=/^\#([A-Fa-f\d]+)$/.exec(e)){let i=n[1],r=i.length;if(3===r)return this.setRGB(parseInt(i.charAt(0),16)/15,parseInt(i.charAt(1),16)/15,parseInt(i.charAt(2),16)/15,t);if(6===r)return this.setHex(parseInt(i,16),t);Q("Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=D){let n=tW[e.toLowerCase()];return void 0!==n?this.setHex(n,t):Q("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=ew(e.r),this.g=ew(e.g),this.b=ew(e.b),this}copyLinearToSRGB(e){return this.r=eT(e.r),this.g=eT(e.g),this.b=eT(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=D){return eM.workingToColorSpace(tJ.copy(this),e),65536*Math.round(el(255*tJ.r,0,255))+256*Math.round(el(255*tJ.g,0,255))+Math.round(el(255*tJ.b,0,255))}getHexString(e=D){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=eM.workingColorSpace){let n,i;eM.workingToColorSpace(tJ.copy(this),t);let r=tJ.r,a=tJ.g,s=tJ.b,o=Math.max(r,a,s),l=Math.min(r,a,s),u=(l+o)/2;if(l===o)n=0,i=0;else{let e=o-l;switch(i=u<=.5?e/(o+l):e/(2-o-l),o){case r:n=(a-s)/e+6*(a<s);break;case a:n=(s-r)/e+2;break;case s:n=(r-a)/e+4}n/=6}return e.h=n,e.s=i,e.l=u,e}getRGB(e,t=eM.workingColorSpace){return eM.workingToColorSpace(tJ.copy(this),t),e.r=tJ.r,e.g=tJ.g,e.b=tJ.b,e}
vendor: 9,147 bytes, line 1
1getStyle(e=D){eM.workingToColorSpace(tJ.copy(this),e);let t=tJ.r,n=tJ.g,i=tJ.b;return e!==D?`color(${e} ${t.toFixed(3)} ${n.toFixed(3)} ${i.toFixed(3)})`:`rgb(${Math.round(255*t)},${Math.round(255*n)},${Math.round(255*i)})`}offsetHSL(e,t,n){return this.getHSL(tX),this.setHSL(tX.h+e,tX.s+t,tX.l+n)}add(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addColors(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}addScalar(e){return this.r+=e,this.g+=e,this.b+=e,this}sub(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}multiply(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyScalar(e){return this.r*=e,this.g*=e,this.b*=e,this}lerp(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this}lerpColors(e,t,n){return this.r=e.r+(t.r-e.r)*n,this.g=e.g+(t.g-e.g)*n,this.b=e.b+(t.b-e.b)*n,this}lerpHSL(e,t){this.getHSL(tX),e.getHSL(tq);let n=ec(tX.h,tq.h,t),i=ec(tX.s,tq.s,t),r=ec(tX.l,tq.l,t);return this.setHSL(n,i,r),this}setFromVector3(e){return this.r=e.x,this.g=e.y,this.b=e.z,this}applyMatrix3(e){let t=this.r,n=this.g,i=this.b,r=e.elements;return this.r=r[0]*t+r[3]*n+r[6]*i,this.g=r[1]*t+r[4]*n+r[7]*i,this.b=r[2]*t+r[5]*n+r[8]*i,this}equals(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}toArray(e=[],t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}fromBufferAttribute(e,t){return this.r=e.getX(t),this.g=e.getY(t),this.b=e.getZ(t),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}let tJ=new tZ;tZ.NAMES=tW;let t$=0;class tK extends en{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:t$++}),this.uuid=eo(),this.name="",this.type="Material",this.blending=1,this.side=0,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=204,this.blendDst=205,this.blendEquation=100,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new tZ(0,0,0),this.blendAlpha=0,this.depthFunc=3,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=519,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=7680,this.stencilZFail=7680,this.stencilZPass=7680,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.allowOverride=!0,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}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(void 0!==e)for(let t in e){let n=e[t];if(void 0===n){Q(`Material: parameter '${t}' has value of undefined.`);continue}let i=this[t];if(void 0===i){Q(`Material: '${t}' is not a property of THREE.${this.type}.`);continue}i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[t]=n}}toJSON(e){let t=void 0===e||"string"==typeof e;t&&(e={textures:{},images:{}});let n={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};function i(e){let t=[];for(let n in e){let i=e[n];delete i.metadata,t.push(i)}return t}if(n.uuid=this.uuid,n.type=this.type,""!==this.name&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),void 0!==this.roughness&&(n.roughness=this.roughness),void 0!==this.metalness&&(n.metalness=this.metalness),void 0!==this.sheen&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),void 0!==this.emissiveIntensity&&1!==this.emissiveIntensity&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(n.shininess=this.shininess),void 0!==this.clearcoat&&(n.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.sheenColorMap&&this.sheenColorMap.isTexture&&(n.sheenColorMap=this.sheenColorMap.toJSON(e).uuid),this.sheenRoughnessMap&&this.sheenRoughnessMap.isTexture&&(n.sheenRoughnessMap=this.sheenRoughnessMap.toJSON(e).uuid),void 0!==this.dispersion&&(n.dispersion=this.dispersion),void 0!==this.iridescence&&(n.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(n.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),void 0!==this.anisotropy&&(n.anisotropy=this.anisotropy),void 0!==this.anisotropyRotation&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,void 0!==this.combine&&(n.combine=this.combine)),void 0!==this.envMapRotation&&(n.envMapRotation=this.envMapRotation.toArray()),void 0!==this.envMapIntensity&&(n.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(n.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),void 0!==this.transmission&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),void 0!==this.thickness&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(n.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(n.size=this.size),null!==this.shadowSide&&(n.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(n.sizeAttenuation=this.sizeAttenuation),1!==this.blending&&(n.blending=this.blending),0!==this.side&&(n.side=this.side),!0===this.vertexColors&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),!0===this.transparent&&(n.transparent=!0),204!==this.blendSrc&&(n.blendSrc=this.blendSrc),205!==this.blendDst&&(n.blendDst=this.blendDst),100!==this.blendEquation&&(n.blendEquation=this.blendEquation),null!==this.blendSrcAlpha&&(n.blendSrcAlpha=this.blendSrcAlpha),null!==this.blendDstAlpha&&
vendor: 14,563 bytes, line 1
1(n.blendDstAlpha=this.blendDstAlpha),null!==this.blendEquationAlpha&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),0!==this.blendAlpha&&(n.blendAlpha=this.blendAlpha),3!==this.depthFunc&&(n.depthFunc=this.depthFunc),!1===this.depthTest&&(n.depthTest=this.depthTest),!1===this.depthWrite&&(n.depthWrite=this.depthWrite),!1===this.colorWrite&&(n.colorWrite=this.colorWrite),255!==this.stencilWriteMask&&(n.stencilWriteMask=this.stencilWriteMask),519!==this.stencilFunc&&(n.stencilFunc=this.stencilFunc),0!==this.stencilRef&&(n.stencilRef=this.stencilRef),255!==this.stencilFuncMask&&(n.stencilFuncMask=this.stencilFuncMask),7680!==this.stencilFail&&(n.stencilFail=this.stencilFail),7680!==this.stencilZFail&&(n.stencilZFail=this.stencilZFail),7680!==this.stencilZPass&&(n.stencilZPass=this.stencilZPass),!0===this.stencilWrite&&(n.stencilWrite=this.stencilWrite),void 0!==this.rotation&&0!==this.rotation&&(n.rotation=this.rotation),!0===this.polygonOffset&&(n.polygonOffset=!0),0!==this.polygonOffsetFactor&&(n.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(n.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(n.linewidth=this.linewidth),void 0!==this.dashSize&&(n.dashSize=this.dashSize),void 0!==this.gapSize&&(n.gapSize=this.gapSize),void 0!==this.scale&&(n.scale=this.scale),!0===this.dithering&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),!0===this.alphaHash&&(n.alphaHash=!0),!0===this.alphaToCoverage&&(n.alphaToCoverage=!0),!0===this.premultipliedAlpha&&(n.premultipliedAlpha=!0),!0===this.forceSinglePass&&(n.forceSinglePass=!0),!1===this.allowOverride&&(n.allowOverride=!1),!0===this.wireframe&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(n.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(n.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(n.flatShading=!0),!1===this.visible&&(n.visible=!1),!1===this.toneMapped&&(n.toneMapped=!1),!1===this.fog&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData),t){let t=i(e.textures),r=i(e.images);t.length>0&&(n.textures=t),r.length>0&&(n.images=r)}return n}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.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,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;let t=e.clippingPlanes,n=null;if(null!==t){let e=t.length;n=Array(e);for(let i=0;i!==e;++i)n[i]=t[i].clone()}return this.clippingPlanes=n,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.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.allowOverride=e.allowOverride,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){!0===e&&this.version++}}class tQ extends tK{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new tZ(0xffffff),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new tp,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,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.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),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.fog=e.fog,this}}let t0=function(){let e=new ArrayBuffer(4),t=new Float32Array(e),n=new Uint32Array(e),i=new Uint32Array(512),r=new Uint32Array(512);for(let e=0;e<256;++e){let t=e-127;t<-27?(i[e]=0,i[256|e]=32768,r[e]=24,r[256|e]=24):t<-14?(i[e]=1024>>-t-14,i[256|e]=1024>>-t-14|32768,r[e]=-t-1,r[256|e]=-t-1):t<=15?(i[e]=t+15<<10,i[256|e]=t+15<<10|32768,r[e]=13,r[256|e]=13):t<128?(i[e]=31744,i[256|e]=64512,r[e]=24,r[256|e]=24):(i[e]=31744,i[256|e]=64512,r[e]=13,r[256|e]=13)}let a=new Uint32Array(2048),s=new Uint32Array(64),o=new Uint32Array(64);for(let e=1;e<1024;++e){let t=e<<13,n=0;for(;(8388608&t)==0;)t<<=1,n-=8388608;t&=-8388609,n+=0x38800000,a[e]=t|n}for(let e=1024;e<2048;++e)a[e]=0x38000000+(e-1024<<13);for(let e=1;e<31;++e)s[e]=e<<23;s[31]=0x47800000,s[32]=0x80000000;for(let e=33;e<63;++e)s[e]=0x80000000+(e-32<<23);s[63]=0xc7800000;for(let e=1;e<64;++e)32!==e&&(o[e]=1024);return{floatView:t,uint32View:n,baseTable:i,shiftTable:r,mantissaTable:a,exponentTable:s,offsetTable:o}}();function t1(e){Math.abs(e)>65504&&Q("DataUtils.toHalfFloat(): Value out of range."),e=el(e,-65504,65504),t0.floatView[0]=e;let t=t0.uint32View[0],n=t>>23&511;return t0.baseTable[n]+((8388607&t)>>t0.shiftTable[n])}function t2(e){let t=e>>10;return t0.uint32View[0]=t0.mantissaTable[t0.offsetTable[t]+(1023&e)]+t0.exponentTable[t],t0.floatView[0]}class t3{static toHalfFloat(e){return t1(e)}static fromHalfFloat(e){return t2(e)}}let t5=new eg,t4=new ef,t6=0;class t8{constructor(e,t,n=!1){if(Array.isArray(e))throw TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:t6++}),this.name="",this.array=e,this.itemSize=t,this.count=void 0!==e?e.length/t:0,this.normalized=n,this.usage=35044,this.updateRanges=[],this.gpuType=1015,this.version=0}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}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.gpuType=e.gpuType,this}copyAt(e,t,n){e*=this.itemSize,n*=t.itemSize;for(let i=0,r=this.itemSize;i<r;i++)this.array[e+i]=t.array[n+i];return this}copyArray(e){return this.array.set(e),this}applyMatrix3(e){if(2===this.itemSize)for(let t=0,n=this.count;t<n;t++)t4.fromBufferAttribute(this,t),t4.applyMatrix3(e),this.setXY(t,t4.x,t4.y);else if(3===this.itemSize)for(let t=0,n=this.count;t<n;t++)t5.fromBufferAttribute(this,t),t5.applyMatrix3(e),this.setXYZ(t,t5.x,t5.y,t5.z);return this}applyMatrix4(e){for(let t=0,n=this.count;t<n;t++)t5.fromBufferAttribute(this,t),t5.applyMatrix4(e),this.setXYZ(t,t5.x,t5.y,t5.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)t5.fromBufferAttribute(this,t),t5.applyNormalMatrix(e),this.setXYZ(t,t5.x,t5.y,t5.z);return this}transformDirection(e){for(let t=0,n=this.count;t<n;t++)t5.fromBufferAttribute(this,t),t5.transformDirection(e),this.setXYZ(t,t5.x,t5.y,t5.z);return this}set(e,t=0){return this.array.set(e,t),this}getComponent(e,t){let n=this.array[e*this.itemSize+t];return this.normalized&&(n=eh(n,this.array)),n}setComponent(e,t,n){return this.normalized&&(n=ed(n,this.array)),this.array[e*this.itemSize+t]=n,this}getX(e){let t=this.array[e*this.itemSize];return this.normalized&&(t=eh(t,this.array)),t}setX(e,t){return this.normalized&&(t=ed(t,this.array)),this.array[e*this.itemSize]=t,this}getY(e){let t=this.array[e*this.itemSize+1];return this.normalized&&(t=eh(t,this.array)),t}setY(e,t){return this.normalized&&(t=ed(t,this.array)),this.array[e*this.itemSize+1]=t,this}getZ(e){let t=this.array[e*this.itemSize+2];return this.normalized&&(t=eh(t,this.array)),t}setZ(e,t){return this.normalized&&(t=ed(t,this.array)),this.array[e*this.itemSize+2]=t,this}getW(e){let t=this.array[e*this.itemSize+3];return this.normalized&&(t=eh(t,this.array)),t}setW(e,t){return this.normalized&&(t=ed(t,this.array)),this.array[e*this.itemSize+3]=t,this}setXY(e,t,n){return e*=this.itemSize,this.normalized&&(t=ed(t,this.array),n=ed(n,this.array)),this.array[e+0]=t,this.array[e+1]=n,this}setXYZ(e,t,n,i){return e*=this.itemSize,this.normalized&&(t=ed(t,this.array),n=ed(n,this.array),i=ed(i,this.array)),this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=i,this}setXYZW(e,t,n,i,r){return e*=this.itemSize,this.normalized&&(t=ed(t,this.array),n=ed(n,this.array),i=ed(i,this.array),r=ed(r,this.array)),this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=i,this.array[e+3]=r,this}onUpload(e){return this.onUploadCallback=e,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){let e={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return""!==this.name&&(e.name=this.name),35044!==this.usage&&(e.usage=this.usage),e}}class t7 extends t8{constructor(e,t,n){super(new Int8Array(e),t,n)}}class t9 extends t8{constructor(e,t,n){super(new Uint8Array(e),t,n)}}class ne extends t8{constructor(e,t,n){super(new Uint8ClampedArray(e),t,n)}}class nt extends t8{constructor(e,t,n){super(new Int16Array(e),t,n)}}class nn extends t8{constructor(e,t,n){super(new Uint16Array(e),t,n)}}class ni extends t8{constructor(e,t,n){super(new Int32Array(e),t,n)}}class nr extends t8{constructor(e,t,n){super(new Uint32Array(e),t,n)}}class na extends t8{constructor(e,t,n){super(new Uint16Array(e),t,n),this.isFloat16BufferAttribute=!0}getX(e){let t=t2(this.array[e*this.itemSize]);return this.normalized&&(t=eh(t,this.array)),t}setX(e,t){return this.normalized&&(t=ed(t,this.array)),this.array[e*this.itemSize]=t1(t),this}getY(e){let t=t2(this.array[e*this.itemSize+1]);return this.normalized&&(t=eh(t,this.array)),t}setY(e,t){return this.normalized&&(t=ed(t,this.array)),this.array[e*this.itemSize+1]=t1(t),this}getZ(e){let t=t2(this.array[e*this.itemSize+2]);return this.normalized&&(t=eh(t,this.array)),t}setZ(e,t){return this.normalized&&(t=ed(t,this.array)),this.array[e*this.itemSize+2]=t1(t),this}getW(e){let t=t2(this.array[e*this.itemSize+3]);return this.normalized&&(t=eh(t,this.array)),t}setW(e,t){return this.normalized&&(t=ed(t,this.array)),this.array[e*this.itemSize+3]=t1(t),this}setXY(e,t,n){return e*=this.itemSize,this.normalized&&(t=ed(t,this.array),n=ed(n,this.array)),this.array[e+0]=t1(t),this.array[e+1]=t1(n),this}setXYZ(e,t,n,i){return e*=this.itemSize,this.normalized&&(t=ed(t,this.array),n=ed(n,this.array),i=ed(i,this.array)),this.array[e+0]=t1(t),this.array[e+1]=t1(n),this.array[e+2]=t1(i),this}setXYZW(e,t,n,i,r){return e*=this.itemSize,this.normalized&&(t=ed(t,this.array),n=ed(n,this.array),i=ed(i,this.array),r=ed(r,this.array)),this.array[e+0]=t1(t),this.array[e+1]=t1(n),this.array[e+2]=t1(i),this.array[e+3]=t1(r),this}}class ns extends t8{constructor(e,t,n){super(new Float32Array(e),t,n)}}let no=0,nl=new ti,nu=new tL,nc=new eg,nh=new eB,nd=new eB,np=new eg;class nf extends en{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:no++}),this.uuid=eo(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.indirectOffset=0,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(H(e)?nr:nn)(e,1):this.index=e,this}setIndirect(e,t=0){return this.indirect=e,this.indirectOffset=t,this}getIndirect(){return this.indirect}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return void 0!==this.attributes[e]}addGroup(e,t,n=0){this.groups.push({start:e,count:t,materialIndex:n})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){let t=this.attributes.position;void 0!==t&&(t.applyMatrix4(e),t.needsUpdate=!0);let n=this.attributes.normal;if(void 0!==n){let t=new ey().getNormalMatrix(e);n.applyNormalMatrix(t),n.needsUpdate=!0}let i=this.attributes.tangent;return void 0!==i&&(i.transformDirection(e),i.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this}applyQuaternion(e){return nl.makeRotationFromQuaternion(e),this.applyMatrix4(nl),this}rotateX(e){return nl.makeRotationX(e),this.applyMatrix4(nl),this}rotateY(e){return nl.makeRotationY(e),this.applyMatrix4(nl),this}rotateZ(e){return nl.makeRotationZ(e),this.applyMatrix4(nl),this}translate(e,t,n){return nl.makeTranslation(e,t,n),this.applyMatrix4(nl),this}scale(e,t,n){return nl.makeScale(e,t,n),this.applyMatrix4(nl),this}lookAt(e){return nu.lookAt(e),nu.updateMatrix(),this.applyMatrix4(nu.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(nc).negate(),this.translate(nc.x,nc.y,nc.z),this}setFromPoints(e){let t=this.getAttribute("position");if(void 0===t){let t=[];for(let n=0,i=e.length;n<i;n++){let i=e[n];t.push(i.x,i.y,i.z||0)}this.setAttribute("position",new ns(t,3))}else{let n=Math.min(e.length,t.count);for(let i=0;i<n;i++){let n=e[i];t.setXYZ(i,n.x,n.y,n.z||0)}e.length>t.count&&Q("BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}
1computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new eB);let e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){ee("BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new eg(-1/0,-1/0,-1/0),new eg(Infinity,Infinity,Infinity));return}if(void 0!==e){if(this.boundingBox.setFromBufferAttribute(e),t)for(let e=0,n=t.length;e<n;e++){let n=t[e];nh.setFromBufferAttribute(n),this.morphTargetsRelative?(np.addVectors(this.boundingBox.min,nh.min),this.boundingBox.expandByPoint(np),np.addVectors(this.boundingBox.max,nh.max),this.boundingBox.expandByPoint(np)):(this.boundingBox.expandByPoint(nh.min),this.boundingBox.expandByPoint(nh.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&ee('BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}computeBoundingSphere(){null===this.boundingSphere&&(this.boundingSphere=new e5);let e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){ee("BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.",this),this.boundingSphere.set(new eg,1/0);return}if(e){let n=this.boundingSphere.center;if(nh.setFromBufferAttribute(e),t)for(let e=0,n=t.length;e<n;e++){let n=t[e];nd.setFromBufferAttribute(n),this.morphTargetsRelative?(np.addVectors(nh.min,nd.min),nh.expandByPoint(np),np.addVectors(nh.max,nd.max),nh.expandByPoint(np)):(nh.expandByPoint(nd.min),nh.expandByPoint(nd.max))}nh.getCenter(n);let i=0;for(let t=0,r=e.count;t<r;t++)np.fromBufferAttribute(e,t),i=Math.max(i,n.distanceToSquared(np));if(t)for(let r=0,a=t.length;r<a;r++){let a=t[r],s=this.morphTargetsRelative;for(let t=0,r=a.count;t<r;t++)np.fromBufferAttribute(a,t),s&&(nc.fromBufferAttribute(e,t),np.add(nc)),i=Math.max(i,n.distanceToSquared(np))}this.boundingSphere.radius=Math.sqrt(i),isNaN(this.boundingSphere.radius)&&ee('BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){let e=this.index,t=this.attributes;if(null===e||void 0===t.position||void 0===t.normal||void 0===t.uv)return void ee("BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");let n=t.position,i=t.normal,r=t.uv;!1===this.hasAttribute("tangent")&&this.setAttribute("tangent",new t8(new Float32Array(4*n.count),4));let a=this.getAttribute("tangent"),s=[],o=[];for(let e=0;e<n.count;e++)s[e]=new eg,o[e]=new eg;let l=new eg,u=new eg,c=new eg,h=new ef,d=new ef,p=new ef,f=new eg,m=new eg,g=this.groups;0===g.length&&(g=[{start:0,count:e.count}]);for(let t=0,i=g.length;t<i;++t){let i=g[t],a=i.start,v=i.count;for(let t=a,i=a+v;t<i;t+=3)!function(e,t,i){l.fromBufferAttribute(n,e),u.fromBufferAttribute(n,t),c.fromBufferAttribute(n,i),h.fromBufferAttribute(r,e),d.fromBufferAttribute(r,t),p.fromBufferAttribute(r,i),u.sub(l),c.sub(l),d.sub(h),p.sub(h);let a=1/(d.x*p.y-p.x*d.y);isFinite(a)&&(f.copy(u).multiplyScalar(p.y).addScaledVector(c,-d.y).multiplyScalar(a),m.copy(c).multiplyScalar(d.x).addScaledVector(u,-p.x).multiplyScalar(a),s[e].add(f),s[t].add(f),s[i].add(f),o[e].add(m),o[t].add(m),o[i].add(m))}(e.getX(t+0),e.getX(t+1),e.getX(t+2))}let v=new eg,x=new eg,y=new eg,_=new eg;function b(e){y.fromBufferAttribute(i,e),_.copy(y);let t=s[e];v.copy(t),v.sub(y.multiplyScalar(y.dot(t))).normalize(),x.crossVectors(_,t);let n=x.dot(o[e]);a.setXYZW(e,v.x,v.y,v.z,n<0?-1:1)}for(let t=0,n=g.length;t<n;++t){let n=g[t],i=n.start,r=n.count;for(let t=i,n=i+r;t<n;t+=3)b(e.getX(t+0)),b(e.getX(t+1)),b(e.getX(t+2))}}computeVertexNormals(){let e=this.index,t=this.getAttribute("position");if(void 0!==t){let n=this.getAttribute("normal");if(void 0===n)n=new t8(new Float32Array(3*t.count),3),this.setAttribute("normal",n);else for(let e=0,t=n.count;e<t;e++)n.setXYZ(e,0,0,0);let i=new eg,r=new eg,a=new eg,s=new eg,o=new eg,l=new eg,u=new eg,c=new eg;if(e)for(let h=0,d=e.count;h<d;h+=3){let d=e.getX(h+0),p=e.getX(h+1),f=e.getX(h+2);i.fromBufferAttribute(t,d),r.fromBufferAttribute(t,p),a.fromBufferAttribute(t,f),u.subVectors(a,r),c.subVectors(i,r),u.cross(c),s.fromBufferAttribute(n,d),o.fromBufferAttribute(n,p),l.fromBufferAttribute(n,f),s.add(u),o.add(u),l.add(u),n.setXYZ(d,s.x,s.y,s.z),n.setXYZ(p,o.x,o.y,o.z),n.setXYZ(f,l.x,l.y,l.z)}else for(let e=0,s=t.count;e<s;e+=3)i.fromBufferAttribute(t,e+0),r.fromBufferAttribute(t,e+1),a.fromBufferAttribute(t,e+2),u.subVectors(a,r),c.subVectors(i,r),u.cross(c),n.setXYZ(e+0,u.x,u.y,u.z),n.setXYZ(e+1,u.x,u.y,u.z),n.setXYZ(e+2,u.x,u.y,u.z);this.normalizeNormals(),n.needsUpdate=!0}}normalizeNormals(){let e=this.attributes.normal;for(let t=0,n=e.count;t<n;t++)np.fromBufferAttribute(e,t),np.normalize(),e.setXYZ(t,np.x,np.y,np.z)}toNonIndexed(){function e(e,t){let n=e.array,i=e.itemSize,r=e.normalized,a=new n.constructor(t.length*i),s=0,o=0;for(let r=0,l=t.length;r<l;r++){s=e.isInterleavedBufferAttribute?t[r]*e.data.stride+e.offset:t[r]*i;for(let e=0;e<i;e++)a[o++]=n[s++]}return new t8(a,i,r)}if(null===this.index)return Q("BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;let t=new nf,n=this.index.array,i=this.attributes;for(let r in i){let a=e(i[r],n);t.setAttribute(r,a)}let r=this.morphAttributes;for(let i in r){let a=[],s=r[i];for(let t=0,i=s.length;t<i;t++){let i=e(s[t],n);a.push(i)}t.morphAttributes[i]=a}t.morphTargetsRelative=this.morphTargetsRelative;let a=this.groups;for(let e=0,n=a.length;e<n;e++){let n=a[e];t.addGroup(n.start,n.count,n.materialIndex)}return t}toJSON(){let e={metadata:{version:4.7,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};
1if(e.uuid=this.uuid,e.type=this.type,""!==this.name&&(e.name=this.name),Object.keys(this.userData).length>0&&(e.userData=this.userData),void 0!==this.parameters){let t=this.parameters;for(let n in t)void 0!==t[n]&&(e[n]=t[n]);return e}e.data={attributes:{}};let t=this.index;null!==t&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});let n=this.attributes;for(let t in n){let i=n[t];e.data.attributes[t]=i.toJSON(e.data)}let i={},r=!1;for(let t in this.morphAttributes){let n=this.morphAttributes[t],a=[];for(let t=0,i=n.length;t<i;t++){let i=n[t];a.push(i.toJSON(e.data))}a.length>0&&(i[t]=a,r=!0)}r&&(e.data.morphAttributes=i,e.data.morphTargetsRelative=this.morphTargetsRelative);let a=this.groups;a.length>0&&(e.data.groups=JSON.parse(JSON.stringify(a)));let s=this.boundingSphere;return null!==s&&(e.data.boundingSphere=s.toJSON()),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;let t={};this.name=e.name;let n=e.index;null!==n&&this.setIndex(n.clone());let i=e.attributes;for(let e in i){let n=i[e];this.setAttribute(e,n.clone(t))}let r=e.morphAttributes;for(let e in r){let n=[],i=r[e];for(let e=0,r=i.length;e<r;e++)n.push(i[e].clone(t));this.morphAttributes[e]=n}this.morphTargetsRelative=e.morphTargetsRelative;let a=e.groups;for(let e=0,t=a.length;e<t;e++){let t=a[e];this.addGroup(t.start,t.count,t.materialIndex)}let s=e.boundingBox;null!==s&&(this.boundingBox=s.clone());let o=e.boundingSphere;return null!==o&&(this.boundingSphere=o.clone()),this.drawRange.start=e.drawRange.start,this.drawRange.count=e.drawRange.count,this.userData=e.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}let nm=new ti,ng=new tn,nv=new e5,nx=new eg,ny=new eg,n_=new eg,nb=new eg,nS=new eg,nM=new eg,nw=new eg,nT=new eg;class nE extends tL{constructor(e=new nf,t=new tQ){super(),this.isMesh=!0,this.type="Mesh",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.count=1,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),void 0!==e.morphTargetInfluences&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),void 0!==e.morphTargetDictionary&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}updateMorphTargets(){let e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){let n=e[t[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;e<t;e++){let t=n[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}getVertexPosition(e,t){let n=this.geometry,i=n.attributes.position,r=n.morphAttributes.position,a=n.morphTargetsRelative;t.fromBufferAttribute(i,e);let s=this.morphTargetInfluences;if(r&&s){nM.set(0,0,0);for(let n=0,i=r.length;n<i;n++){let i=s[n],o=r[n];0!==i&&(nS.fromBufferAttribute(o,e),a?nM.addScaledVector(nS,i):nM.addScaledVector(nS.sub(t),i))}t.add(nM)}return t}raycast(e,t){let n=this.geometry,i=this.material,r=this.matrixWorld;void 0===i||(null===n.boundingSphere&&n.computeBoundingSphere(),nv.copy(n.boundingSphere),nv.applyMatrix4(r),ng.copy(e.ray).recast(e.near),!1===nv.containsPoint(ng.origin)&&(null===ng.intersectSphere(nv,nx)||ng.origin.distanceToSquared(nx)>(e.far-e.near)**2)||(nm.copy(r).invert(),ng.copy(e.ray).applyMatrix4(nm),(null===n.boundingBox||!1!==ng.intersectsBox(n.boundingBox))&&this._computeIntersections(e,t,ng)))}_computeIntersections(e,t,n){let i,r=this.geometry,a=this.material,s=r.index,o=r.attributes.position,l=r.attributes.uv,u=r.attributes.uv1,c=r.attributes.normal,h=r.groups,d=r.drawRange;if(null!==s)if(Array.isArray(a))for(let r=0,o=h.length;r<o;r++){let o=h[r],p=a[o.materialIndex],f=Math.max(o.start,d.start),m=Math.min(s.count,Math.min(o.start+o.count,d.start+d.count));for(let r=f;r<m;r+=3)(i=nC(this,p,e,n,l,u,c,s.getX(r),s.getX(r+1),s.getX(r+2)))&&(i.faceIndex=Math.floor(r/3),i.face.materialIndex=o.materialIndex,t.push(i))}else{let r=Math.max(0,d.start),o=Math.min(s.count,d.start+d.count);for(let h=r;h<o;h+=3)(i=nC(this,a,e,n,l,u,c,s.getX(h),s.getX(h+1),s.getX(h+2)))&&(i.faceIndex=Math.floor(h/3),t.pu
1sh(i))}else if(void 0!==o)if(Array.isArray(a))for(let r=0,s=h.length;r<s;r++){let s=h[r],p=a[s.materialIndex],f=Math.max(s.start,d.start),m=Math.min(o.count,Math.min(s.start+s.count,d.start+d.count));for(let r=f;r<m;r+=3)(i=nC(this,p,e,n,l,u,c,r,r+1,r+2))&&(i.faceIndex=Math.floor(r/3),i.face.materialIndex=s.materialIndex,t.push(i))}else{let r=Math.max(0,d.start),s=Math.min(o.count,d.start+d.count);for(let o=r;o<s;o+=3)(i=nC(this,a,e,n,l,u,c,o,o+1,o+2))&&(i.faceIndex=Math.floor(o/3),t.push(i))}}}function nC(e,t,n,i,r,a,s,o,l,u){e.getVertexPosition(o,ny),e.getVertexPosition(l,n_),e.getVertexPosition(u,nb);let c=function(e,t,n,i,r,a,s,o){if(null===(1===t.side?i.intersectTriangle(s,a,r,!0,o):i.intersectTriangle(r,a,s,0===t.side,o)))return null;nT.copy(o),nT.applyMatrix4(e.matrixWorld);let l=n.ray.origin.distanceTo(nT);return l<n.near||l>n.far?null:{distance:l,point:nT.clone(),object:e}}(e,t,n,i,ny,n_,nb,nw);if(c){let e=new eg;tG.getBarycoord(nw,ny,n_,nb,e),r&&(c.uv=tG.getInterpolatedAttribute(r,o,l,u,e,new ef)),a&&(c.uv1=tG.getInterpolatedAttribute(a,o,l,u,e,new ef)),s&&(c.normal=tG.getInterpolatedAttribute(s,o,l,u,e,new eg),c.normal.dot(i.direction)>0&&c.normal.multiplyScalar(-1));let t={a:o,b:l,c:u,normal:new eg,materialIndex:0};tG.getNormal(ny,n_,nb,t.normal),c.face=t,c.barycoord=e}return c}class nA extends nf{constructor(e=1,t=1,n=1,i=1,r=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:n,widthSegments:i,heightSegments:r,depthSegments:a};const s=this;i=Math.floor(i),r=Math.floor(r);const o=[],l=[],u=[],c=[];let h=0,d=0;function p(e,t,n,i,r,a,p,f,m,g,v){let x=a/m,y=p/g,_=a/2,b=p/2,S=f/2,M=m+1,w=g+1,T=0,E=0,C=new eg;for(let a=0;a<w;a++){let s=a*y-b;for(let o=0;o<M;o++){let h=o*x-_;C[e]=h*i,C[t]=s*r,C[n]=S,l.push(C.x,C.y,C.z),C[e]=0,C[t]=0,C[n]=f>0?1:-1,u.push(C.x,C.y,C.z),c.push(o/m),c.push(1-a/g),T+=1}}for(let e=0;e<g;e++)for(let t=0;t<m;t++){let n=h+t+M*e,i=h+t+M*(e+1),r=h+(t+1)+M*(e+1),a=h+(t+1)+M*e;o.push(n,i,a),o.push(i,r,a),E+=6}s.addGroup(d,E,v),d+=E,h+=T}p("z","y","x",-1,-1,n,t,e,a=Math.floor(a),r,0),p("z","y","x",1,-1,n,t,-e,a,r,1),p("x","z","y",1,1,e,n,t,i,a,2),p("x","z","y",1,-1,e,n,-t,i,a,3),p("x","y","z",1,-1,e,t,n,i,r,4),p("x","y","z",-1,-1,e,t,-n,i,r,5),this.setIndex(o),this.setAttribute("position",new ns(l,3)),this.setAttribute("normal",new ns(u,3)),this.setAttribute("uv",new ns(c,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new nA(e.width,e.height,e.depth,e.widthSegments,e.heightSegments,e.depthSegments)}}function nR(e){let t={};for(let n in e)for(let i in t[n]={},e[n]){let r=e[n][i];r&&(r.isColor||r.isMatrix3||r.isMatrix4||r.isVector2||r.isVector3||r.isVector4||r.isTexture||r.isQuaternion)?r.isRenderTargetTexture?(Q("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),t[n][i]=null):t[n][i]=r.clone():Array.isArray(r)?t[n][i]=r.slice():t[n][i]=r}return t}function nL(e){let t={};for(let n=0;n<e.length;n++){let i=nR(e[n]);for(let e in i)t[e]=i[e]}return t}function nP(e){let t=e.getRenderTarget();return null===t?e.outputColorSpace:!0===t.isXRRenderTarget?t.texture.colorSpace:eM.workingColorSpace}let nI={clone:nR,merge:nL};
1class nN extends tK{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader="void main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",this.fragmentShader="void main() {\n gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}",this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={clipCullDistance:!1,multiDraw:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,void 0!==e&&this.setValues(e)}copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=nR(e.uniforms),this.uniformsGroups=function(e){let t=[];for(let n=0;n<e.length;n++)t.push(e[n].clone());return t}(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.defaultAttributeValues=Object.assign({},e.defaultAttributeValues),this.index0AttributeName=e.index0AttributeName,this.uniformsNeedUpdate=e.uniformsNeedUpdate,this}toJSON(e){let t=super.toJSON(e);for(let n in t.glslVersion=this.glslVersion,t.uniforms={},this.uniforms){let i=this.uniforms[n].value;i&&i.isTexture?t.uniforms[n]={type:"t",value:i.toJSON(e).uuid}:i&&i.isColor?t.uniforms[n]={type:"c",value:i.getHex()}:i&&i.isVector2?t.uniforms[n]={type:"v2",value:i.toArray()}:i&&i.isVector3?t.uniforms[n]={type:"v3",value:i.toArray()}:i&&i.isVector4?t.uniforms[n]={type:"v4",value:i.toArray()}:i&&i.isMatrix3?t.uniforms[n]={type:"m3",value:i.toArray()}:i&&i.isMatrix4?t.uniforms[n]={type:"m4",value:i.toArray()}:t.uniforms[n]={value:i}}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;let n={};for(let e in this.extensions)!0===this.extensions[e]&&(n[e]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}}class nD extends tL{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new ti,this.projectionMatrix=new ti,this.projectionMatrixInverse=new ti,this.coordinateSystem=2e3,this._reversedDepth=!1}get reversedDepth(){return this._reversedDepth}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}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)}}let nU=new eg,nF=new ef,nO=new ef;class nk extends nD{constructor(e=50,t=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=n,this.far=i,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=null===e.view?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){let t=.5*this.getFilmHeight()/e;this.fov=2*es*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){let e=Math.tan(.5*ea*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return 2*es*Math.atan(Math.tan(.5*ea*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,t,n){nU.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(nU.x,nU.y).multiplyScalar(-e/nU.z),nU.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(nU.x,nU.y).multiplyScalar(-e/nU.z)}getViewSize(e,t){return this.getViewBounds(e,nF,nO),t.subVectors(nO,nF)}setViewOffset(e,t,n,i,r,a){this.aspect=e/t,null===this.view&&(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=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=this.near,t=e*Math.tan(.5*ea*this.fov)/this.zoom,n=2*t,i=this.aspect*n,r=-.5*i,a=this.view;if(null!==this.view&&this.view.enabled){let e=a.fullWidth,s=a.fullHeight;r+=a.offsetX*i/e,t-=a.offsetY*n/s,i*=a.width/e,n*=a.height/s}let s=this.filmOffset;0!==s&&(r+=e*s/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+i,t,t-n,e,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let 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,null!==this.view&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}class nz extends tL{constructor(e,t,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const i=new nk(-90,1,e,t);i.layers=this.layers,this.add(i);const r=new nk(-90,1,e,t);r.layers=this.layers,this.add(r);const a=new nk(-90,1,e,t);a.layers=this.layers,this.add(a);const s=new nk(-90,1,e,t);s.layers=this.layers,this.add(s);const o=new nk(-90,1,e,t);o.layers=this.layers,this.add(o);const l=new nk(-90,1,e,t);l.layers=this.layers,this.add(l)}updateCoordinateSystem(){let e=this.coordinateSystem,t=this.children.concat(),[n,i,r,a,s,o]=t;
1for(let e of t)this.remove(e);if(2e3===e)n.up.set(0,1,0),n.lookAt(1,0,0),i.up.set(0,1,0),i.lookAt(-1,0,0),r.up.set(0,0,-1),r.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),s.up.set(0,1,0),s.lookAt(0,0,1),o.up.set(0,1,0),o.lookAt(0,0,-1);else if(2001===e)n.up.set(0,-1,0),n.lookAt(-1,0,0),i.up.set(0,-1,0),i.lookAt(1,0,0),r.up.set(0,0,1),r.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),s.up.set(0,-1,0),s.lookAt(0,0,1),o.up.set(0,-1,0),o.lookAt(0,0,-1);else throw Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(let e of t)this.add(e),e.updateMatrixWorld()}update(e,t){null===this.parent&&this.updateMatrixWorld();let{renderTarget:n,activeMipmapLevel:i}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());let[r,a,s,o,l,u]=this.children,c=e.getRenderTarget(),h=e.getActiveCubeFace(),d=e.getActiveMipmapLevel(),p=e.xr.enabled;e.xr.enabled=!1;let f=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0,i),e.render(t,r),e.setRenderTarget(n,1,i),e.render(t,a),e.setRenderTarget(n,2,i),e.render(t,s),e.setRenderTarget(n,3,i),e.render(t,o),e.setRenderTarget(n,4,i),e.render(t,l),n.texture.generateMipmaps=f,e.setRenderTarget(n,5,i),e.render(t,u),e.setRenderTarget(c,h,d),e.xr.enabled=p,n.texture.needsPMREMUpdate=!0}}class nB extends eI{constructor(e=[],t=301,n,i,r,a,s,o,l,u){super(e,t,n,i,r,a,s,o,l,u),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class nV extends eU{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const n={width:e,height:e,depth:1};this.texture=new nB([n,n,n,n,n,n]),this._setTextureOptions(t),this.texture.isRenderTargetTexture=!0}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;let n={uniforms:{tEquirect:{value:null}},vertexShader:` 2 3 varying vec3 vWorldDirection; 4 5 vec3 transformDirection( in vec3 dir, in mat4 matrix ) { 6 7 return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); 8 9 } 10 11 void main() { 12 13 vWorldDirection = transformDirection( position, modelMatrix ); 14 15 #include <begin_vertex> 16 #include <project_vertex> 17 18 } 19 `,fragmentShader:` 20 21 uniform sampler2D tEquirect; 22 23 varying vec3 vWorldDirection; 24 25 #include <common> 26 27 void main() { 28 29 vec3 direction = normalize( vWorldDirection ); 30 31 vec2 sampleUV = equirectUv( direction ); 32 33 gl_FragColor = texture2D( tEquirect, sampleUV ); 34 35 } 36 `},i=new nA(5,5,5),r=new nN({name:"CubemapFromEquirect",uniforms:nR(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:1,blending:0});r.uniforms.tEquirect.value=t;let a=new nE(i,r),s=t.minFilter;return 1008===t.minFilter&&(t.minFilter=1006),new nz(1,10,this).update(e,a),t.minFilter=s,a.geometry.dispose(),a.material.dispose(),this}clear(e,t=!0,n=!0,i=!0){let r=e.getRenderTarget();for(let r=0;r<6;r++)e.setRenderTarget(this,r),e.clear(t,n,i);e.setRenderTarget(r)}}class nH extends tL{constructor(){super(),this.isGroup=!0,this.type="Group"}}let nj={type:"move"};class nG{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return null===this._hand&&(this._hand=new nH,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return null===this._targetRay&&(this._targetRay=new nH,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new eg,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new eg),this._targetRay}getGripSpace(){return null===this._grip&&(this._grip=new nH,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new eg,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new eg),this._grip}dispatchEvent(e){return null!==this._targetRay&&this._targetRay.dispatchEvent(e),null!==this._grip&&this._grip.dispatchEvent(e),null!==this._hand&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){let t=this._hand;if(t)for(let n of e.hand.values())this._getHandJoint(t,n)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),null!==this._targetRay&&(this._targetRay.visible=!1),null!==this._grip&&(this._grip.visible=!1),null!==this._hand&&(this._hand.visible=!1),this}update(e,t,n){let i=null,r=null,a=null,s=this._targetRay,o=this._grip,l=this._hand;if(e&&"visible-blurred"!==t.session.visibilityState){if(l&&e.hand){for(let i of(a=!0,e.hand.values())
36){let e=t.getJointPose(i,n),r=this._getHandJoint(l,i);null!==e&&(r.matrix.fromArray(e.transform.matrix),r.matrix.decompose(r.position,r.rotation,r.scale),r.matrixWorldNeedsUpdate=!0,r.jointRadius=e.radius),r.visible=null!==e}let i=l.joints["index-finger-tip"],r=l.joints["thumb-tip"],s=i.position.distanceTo(r.position);l.inputState.pinching&&s>.025?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!l.inputState.pinching&&s<=.015&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else null!==o&&e.gripSpace&&null!==(r=t.getPose(e.gripSpace,n))&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1);null!==s&&(null===(i=t.getPose(e.targetRaySpace,n))&&null!==r&&(i=r),null!==i&&(s.matrix.fromArray(i.transform.matrix),s.matrix.decompose(s.position,s.rotation,s.scale),s.matrixWorldNeedsUpdate=!0,i.linearVelocity?(s.hasLinearVelocity=!0,s.linearVelocity.copy(i.linearVelocity)):s.hasLinearVelocity=!1,i.angularVelocity?(s.hasAngularVelocity=!0,s.angularVelocity.copy(i.angularVelocity)):s.hasAngularVelocity=!1,this.dispatchEvent(nj)))}return null!==s&&(s.visible=null!==i),null!==o&&(o.visible=null!==r),null!==l&&(l.visible=null!==a),this}_getHandJoint(e,t){if(void 0===e.joints[t.jointName]){let n=new nH;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}}class nW{constructor(e,t=25e-5){this.isFogExp2=!0,this.name="",this.color=new tZ(e),this.density=t}clone(){return new nW(this.color,this.density)}toJSON(){return{type:"FogExp2",name:this.name,color:this.color.getHex(),density:this.density}}}class nX{constructor(e,t=1,n=1e3){this.isFog=!0,this.name="",this.color=new tZ(e),this.near=t,this.far=n}clone(){return new nX(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}}class nq extends tL{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new tp,this.environmentIntensity=1,this.environmentRotation=new tp,this.overrideMaterial=null,"u">typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),null!==e.background&&(this.background=e.background.clone()),null!==e.environment&&(this.environment=e.environment.clone()),null!==e.fog&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),null!==e.overrideMaterial&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){let t=super.toJSON(e);return null!==this.fog&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),1!==this.backgroundIntensity&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),1!==this.environmentIntensity&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}}class nY{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=void 0!==e?e.length/t:0,this.usage=35044,this.updateRanges=[],this.version=0,this.uuid=eo()}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}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,n){e*=this.stride,n*=t.stride;for(let i=0,r=this.stride;i<r;i++)this.array[e+i]=t.array[n+i];return this}set(e,t=0){return this.array.set(e,t),this}clone(e){void 0===e.arrayBuffers&&(e.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=eo()),void 0===e.arrayBuffers[this.array.buffer._uuid]&&(e.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);let t=new this.array.constructor(e.arrayBuffers[this.array.buffer._uuid]),n=new this.constructor(t,this.stride);return n.setUsage(this.usage),n}onUpload(e){return this.onUploadCallback=e,this}toJSON(e){return void 0===e.arrayBuffers&&(e.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=eo()),void 0===e.arrayBuffers[this.array.buffer._uuid]&&(e.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}}let nZ=new eg;class nJ{constructor(e,t,n,i=!1){this.isInterleavedBufferAttribute=!0,this.name="",this.data=e,this.itemSize=t,this.offset=n,this.normalized=i}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(e){this.data.needsUpdate=e}applyMatrix4(e){for(let t=0,n=this.data.count;t<n;t++)nZ.fromBufferAttribute(this,t),nZ.applyMatrix4(e),this.setXYZ(t,nZ.x,nZ.y,nZ.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)nZ.fromBufferAttribute(this,t),nZ.applyNormalMatrix(e),this.setXYZ(t,nZ.x,nZ.y,nZ.z);return this}transformDirection(e){for(let t=0,n=this.count;t<n;t++)nZ.fromBufferAttribute(this,t),nZ.transformDirection(e),this.setXYZ(t,nZ.x,nZ.y,nZ.z);return this}getComponent(e,t){let n=this.array[e*this.data.stride+this.offset+t];return this.normalized&&(n=eh(n,this.array)),n}setComponent(e,t,n){return this.normalized&&(n=ed(n,this.array)),this.data.array[e*this.data.stride+this.offset+t]=n,this}setX(e,t){return this.normalized&&(t=ed(t,this.array)),this.data.array[e*this.data.stride+this.offset]=t,this}setY(e,t){return this.normalized&&(t=ed(t,this.array)),this.data.array[e*this.data.stride+this.offset+1]=t,this}setZ(e,t){return this.normalized&&(t=ed(t,this.array)),this.data.array[e*this.data.stride+this.offset+2]=t,this}setW(e,t){return this.normalized&&(t=ed(t,this.array)),this.data.array[e*this.data.stride+this.offset+3]=t,this}getX(e){let t=this.data.array[e*this.data.stride+this.offset];return this.normalized&&(t=eh(t,this.array)),t}getY(e){let t=this.data.array[e*this.data.stride+this.offset+1];return this.normalized&&(t=eh(t,this.array)),t}getZ(e){let t=this.data.array[e*this.data.stride+this.offset+2];return this.normalized&&(t=eh(t,this.array)),t}getW(e){let t=this.data.array[e*this.data.stride+this.offset+3];return this.normalized&&(t=eh(t,this.array)),t}setXY(e,t,n){return e=e*this.data.stride+this.offset,this.normalized&&(t=ed(t,this.array),n=ed(n,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this}setXYZ(e,t,n,i){return e=e*this.data.stride+this.offset,this.normalized&&(t=ed(t,this.array),n=ed(n,this.array),i=ed(i,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=i,this}setXYZW(e,t,n,i,r){return e=e*this.data.stride+this.offset,this.normalized&&(t=ed(t,this.array),n=ed(n,this.array),i=ed(i,this.array),r=ed(r,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=i,this.data.array[e+3]=r,this}clone(e){if(void 0!==e)return void 0===e.interleavedBuffers&&(e.interleavedBuffers={}),void 0===e.interleavedBuffers[this.data.uuid]&&(e.interleavedBuffers[this.data.uuid]=this.data.clone(e)),new nJ(e.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized);{K("InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.");let e=[];for(let t=0;t<this.count;t++){let n=t*this.data.stride+this.offset;for(let t=0;t<this.itemSize;t++)e.push(this.data.array[n+t])}return new t8(new this.array.constructor(e),this.itemSize,this.normalized)}}toJSON(e){if(void 0!==e)return void 0===e.interleavedBuffers&&(e.interleavedBuffers={}),void 0===e.interleavedBuffers[this.data.uuid]&&(e.interleavedBuffers[this.data.uuid]=this.data.toJSON(e)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized};{K("InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.");let e=[];for(let t=0;t<this.count;t++){let n=t*this.data.stride+this.offset;for(let t=0;t<this.itemSize;t++)e.push(this.data.array[n+t])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:e,normalized:this.normalized}}}}class n$ extends tK{constructor(e){super(),this.isSpriteMaterial=!0,this.type="SpriteMaterial",this.color=new tZ(0xffffff),this.map=null,this.alphaMap=null,this.rotation=0,this.sizeAttenuation=!0,this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.rotation=e.rotation,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}}let nK=new eg,nQ=new eg,n0=new eg,n1=new ef,n2=new ef,n3=new ti,n5=new eg,n4=new eg,n6=new eg,n8=new ef,n7=new ef,n9=new ef;class ie extends tL{constructor(e=new n$){if(super(),this.isSprite=!0,this.type="Sprite",void 0===n){n=new nf;const e=new nY(new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),5);n.setIndex([0,1,2,0,2,3]),n.setAttribute("position",new nJ(e,3,0,!1)),n.setAttribute("uv",new nJ(e,2,3,!1))}this.geometry=n,this.material=e,this.center=new ef(.5,.5),this.count=1}raycast(e,t){let n,i;null===e.camera&&ee('Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'),nQ.setFromMatrixScale(this.matrixWorld),n3.copy(e.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(e.camera.matrixWorldInverse,this.matrixWorld),n0.setFromMatrixPosition(this.modelViewMatrix),e.camera.isPerspectiveCamera&&!1===this.material.sizeAttenuation&&nQ.multiplyScalar(-n0.z);let r=this.material.rotation;0!==r&&(i=Math.cos(r),n=Math.sin(r));let a=this.center;
36it(n5.set(-.5,-.5,0),n0,a,nQ,n,i),it(n4.set(.5,-.5,0),n0,a,nQ,n,i),it(n6.set(.5,.5,0),n0,a,nQ,n,i),n8.set(0,0),n7.set(1,0),n9.set(1,1);let s=e.ray.intersectTriangle(n5,n4,n6,!1,nK);if(null===s&&(it(n4.set(-.5,.5,0),n0,a,nQ,n,i),n7.set(0,1),null===(s=e.ray.intersectTriangle(n5,n6,n4,!1,nK))))return;let o=e.ray.origin.distanceTo(nK);o<e.near||o>e.far||t.push({distance:o,point:nK.clone(),uv:tG.getInterpolation(nK,n5,n4,n6,n8,n7,n9,new ef),face:null,object:this})}copy(e,t){return super.copy(e,t),void 0!==e.center&&this.center.copy(e.center),this.material=e.material,this}}function it(e,t,n,i,r,a){n1.subVectors(e,n).addScalar(.5).multiply(i),void 0!==r?(n2.x=a*n1.x-r*n1.y,n2.y=r*n1.x+a*n1.y):n2.copy(n1),e.copy(t),e.x+=n2.x,e.y+=n2.y,e.applyMatrix4(n3)}let ii=new eg,ir=new eg;class ia extends tL{constructor(){super(),this.isLOD=!0,this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);let t=e.levels;for(let e=0,n=t.length;e<n;e++){let n=t[e];this.addLevel(n.object.clone(),n.distance,n.hysteresis)}return this.autoUpdate=e.autoUpdate,this}addLevel(e,t=0,n=0){let i;t=Math.abs(t);let r=this.levels;for(i=0;i<r.length&&!(t<r[i].distance);i++);return r.splice(i,0,{distance:t,hysteresis:n,object:e}),this.add(e),this}removeLevel(e){let t=this.levels;for(let n=0;n<t.length;n++)if(t[n].distance===e){let e=t.splice(n,1);return this.remove(e[0].object),!0}return!1}getCurrentLevel(){return this._currentLevel}getObjectForDistance(e){let t=this.levels;if(t.length>0){let n,i;for(n=1,i=t.length;n<i;n++){let i=t[n].distance;if(t[n].object.visible&&(i-=i*t[n].hysteresis),e<i)break}return t[n-1].object}return null}raycast(e,t){if(this.levels.length>0){ii.setFromMatrixPosition(this.matrixWorld);let n=e.ray.origin.distanceTo(ii);this.getObjectForDistance(n).raycast(e,t)}}update(e){let t=this.levels;if(t.length>1){let n,i;ii.setFromMatrixPosition(e.matrixWorld),ir.setFromMatrixPosition(this.matrixWorld);let r=ii.distanceTo(ir)/e.zoom;for(n=1,t[0].object.visible=!0,i=t.length;n<i;n++){let e=t[n].distance;if(t[n].object.visible&&(e-=e*t[n].hysteresis),r>=e)t[n-1].object.visible=!1,t[n].object.visible=!0;else break}for(this._currentLevel=n-1;n<i;n++)t[n].object.visible=!1}}toJSON(e){let t=super.toJSON(e);!1===this.autoUpdate&&(t.object.autoUpdate=!1),t.object.levels=[];let n=this.levels;for(let e=0,i=n.length;e<i;e++){let i=n[e];t.object.levels.push({object:i.object.uuid,distance:i.distance,hysteresis:i.hysteresis})}return t}}let is=new eg,io=new eN,il=new eN,iu=new eg,ic=new ti,ih=new eg,id=new e5,ip=new ti,im=new tn;class ig extends nE{constructor(e,t){super(e,t),this.isSkinnedMesh=!0,this.type="SkinnedMesh",this.bindMode=I,this.bindMatrix=new ti,this.bindMatrixInverse=new ti,this.boundingBox=null,this.boundingSphere=null}computeBoundingBox(){let e=this.geometry;null===this.boundingBox&&(this.boundingBox=new eB),this.boundingBox.makeEmpty();let t=e.getAttribute("position");for(let e=0;e<t.count;e++)this.getVertexPosition(e,ih),this.boundingBox.expandByPoint(ih)}computeBoundingSphere(){let e=this.geometry;null===this.boundingSphere&&(this.boundingSphere=new e5),this.boundingSphere.makeEmpty();let t=e.getAttribute("position");for(let e=0;e<t.count;e++)this.getVertexPosition(e,ih),this.boundingSphere.expandByPoint(ih)}copy(e,t){return super.copy(e,t),this.bindMode=e.bindMode,this.bindMatrix.copy(e.bindMatrix),this.bindMatrixInverse.copy(e.bindMatrixInverse),this.skeleton=e.skeleton,null!==e.boundingBox&&(this.boundingBox=e.boundingBox.clone()),null!==e.boundingSphere&&(this.boundingSphere=e.boundingSphere.clone()),this}raycast(e,t){let n=this.material,i=this.matrixWorld;void 0===n||(null===this.boundingSphere&&this.computeBoundingSphere(),id.copy(this.boundingSphere),id.applyMatrix4(i),!1===e.ray.intersectsSphere(id)||(ip.copy(i).invert(),im.copy(e.ray).applyMatrix4(ip),(null===this.boundingBox||!1!==im.intersectsBox(this.boundingBox))&&this._computeIntersections(e,t,im)))}getVertexPosition(e,t){return super.getVertexPosition(e,t),this.applyBoneTransform(e,t),t}bind(e,t){this.skeleton=e,void 0===t&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){let e=new eN,t=this.geometry.attributes.skinWeight;for(let n=0,i=t.count;n<i;n++){e.fromBufferAttribute(t,n);let i=1/e.manhattanLength();i!==1/0?e.multiplyScalar(i):e.set(1,0,0,0),t.setXYZW(n,e.x,e.y,e.z,e.w)}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode===I?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode===N?this.bindMatrixInverse.copy(this.bindMatrix).invert():Q("SkinnedMesh: Unrecognized bindMode: "+this.bindMode)}
36applyBoneTransform(e,t){let n=this.skeleton,i=this.geometry;io.fromBufferAttribute(i.attributes.skinIndex,e),il.fromBufferAttribute(i.attributes.skinWeight,e),is.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let e=0;e<4;e++){let i=il.getComponent(e);if(0!==i){let r=io.getComponent(e);ic.multiplyMatrices(n.bones[r].matrixWorld,n.boneInverses[r]),t.addScaledVector(iu.copy(is).applyMatrix4(ic),i)}}return t.applyMatrix4(this.bindMatrixInverse)}}class iv extends tL{constructor(){super(),this.isBone=!0,this.type="Bone"}}class ix extends eI{constructor(e=null,t=1,n=1,i,r,a,s,o,l=1003,u=1003,c,h){super(null,a,s,o,l,u,i,r,c,h),this.isDataTexture=!0,this.image={data:e,width:t,height:n},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}let iy=new ti,i_=new ti;class ib{constructor(e=[],t=[]){this.uuid=eo(),this.bones=e.slice(0),this.boneInverses=t,this.boneMatrices=null,this.previousBoneMatrices=null,this.boneTexture=null,this.init()}init(){let e=this.bones,t=this.boneInverses;if(this.boneMatrices=new Float32Array(16*e.length),0===t.length)this.calculateInverses();else if(e.length!==t.length){Q("Skeleton: Number of inverse bone matrices does not match amount of bones."),this.boneInverses=[];for(let e=0,t=this.bones.length;e<t;e++)this.boneInverses.push(new ti)}}calculateInverses(){this.boneInverses.length=0;for(let e=0,t=this.bones.length;e<t;e++){let t=new ti;this.bones[e]&&t.copy(this.bones[e].matrixWorld).invert(),this.boneInverses.push(t)}}pose(){for(let e=0,t=this.bones.length;e<t;e++){let t=this.bones[e];t&&t.matrixWorld.copy(this.boneInverses[e]).invert()}for(let e=0,t=this.bones.length;e<t;e++){let t=this.bones[e];t&&(t.parent&&t.parent.isBone?(t.matrix.copy(t.parent.matrixWorld).invert(),t.matrix.multiply(t.matrixWorld)):t.matrix.copy(t.matrixWorld),t.matrix.decompose(t.position,t.quaternion,t.scale))}}update(){let e=this.bones,t=this.boneInverses,n=this.boneMatrices,i=this.boneTexture;for(let i=0,r=e.length;i<r;i++){let r=e[i]?e[i].matrixWorld:i_;iy.multiplyMatrices(r,t[i]),iy.toArray(n,16*i)}null!==i&&(i.needsUpdate=!0)}clone(){return new ib(this.bones,this.boneInverses)}computeBoneTexture(){let e=Math.sqrt(4*this.bones.length),t=new Float32Array((e=Math.max(e=4*Math.ceil(e/4),4))*e*4);t.set(this.boneMatrices);let n=new ix(t,e,e,1023,1015);return n.needsUpdate=!0,this.boneMatrices=t,this.boneTexture=n,this}getBoneByName(e){for(let t=0,n=this.bones.length;t<n;t++){let n=this.bones[t];if(n.name===e)return n}}dispose(){null!==this.boneTexture&&(this.boneTexture.dispose(),this.boneTexture=null)}fromJSON(e,t){this.uuid=e.uuid;for(let n=0,i=e.bones.length;n<i;n++){let i=e.bones[n],r=t[i];void 0===r&&(Q("Skeleton: No bone found with UUID:",i),r=new iv),this.bones.push(r),this.boneInverses.push(new ti().fromArray(e.boneInverses[n]))}return this.init(),this}toJSON(){let e={metadata:{version:4.7,type:"Skeleton",generator:"Skeleton.toJSON"},bones:[],boneInverses:[]};e.uuid=this.uuid;let t=this.bones,n=this.boneInverses;for(let i=0,r=t.length;i<r;i++){let r=t[i];e.bones.push(r.uuid);let a=n[i];e.boneInverses.push(a.toArray())}return e}}class iS extends t8{constructor(e,t,n,i=1){super(e,t,n),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=i}copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,this}toJSON(){let e=super.toJSON();return e.meshPerAttribute=this.meshPerAttribute,e.isInstancedBufferAttribute=!0,e}}let iM=new ti,iw=new ti,iT=[],iE=new eB,iC=new ti,iA=new nE,iR=new e5;class iL extends nE{constructor(e,t,n){super(e,t),this.isInstancedMesh=!0,this.instanceMatrix=new iS(new Float32Array(16*n),16),this.instanceColor=null,this.morphTexture=null,this.count=n,this.boundingBox=null,this.boundingSphere=null;for(let e=0;e<n;e++)this.setMatrixAt(e,iC)}computeBoundingBox(){let e=this.geometry,t=this.count;null===this.boundingBox&&(this.boundingBox=new eB),null===e.boundingBox&&e.computeBoundingBox(),this.boundingBox.makeEmpty();for(let n=0;n<t;n++)this.getMatrixAt(n,iM),iE.copy(e.boundingBox).applyMatrix4(iM),this.boundingBox.union(iE)}computeBoundingSphere(){let e=this.geometry,t=this.count;null===this.boundingSphere&&(this.boundingSphere=new e5),null===e.boundingSphere&&e.computeBoundingSphere(),this.boundingSphere.makeEmpty();for(let n=0;n<t;n++)this.getMatrixAt(n,iM),iR.copy(e.boundingSphere).applyMatrix4(iM),this.boundingSphere.union(iR)}copy(e,t){return super.copy(e,t),this.instanceMatrix.copy(e.instanceMatrix),null!==e.morphTexture&&(this.morphTexture=e.morphTexture.clone()),null!==e.instanceColor&&(this.instanceColor=e.instanceColor.clone()),this.count=e.count,null!==e.boundingBox&&
36(this.boundingBox=e.boundingBox.clone()),null!==e.boundingSphere&&(this.boundingSphere=e.boundingSphere.clone()),this}getColorAt(e,t){t.fromArray(this.instanceColor.array,3*e)}getMatrixAt(e,t){t.fromArray(this.instanceMatrix.array,16*e)}getMorphAt(e,t){let n=t.morphTargetInfluences,i=this.morphTexture.source.data.data,r=e*(n.length+1)+1;for(let e=0;e<n.length;e++)n[e]=i[r+e]}raycast(e,t){let n=this.matrixWorld,i=this.count;if((iA.geometry=this.geometry,iA.material=this.material,void 0!==iA.material)&&(null===this.boundingSphere&&this.computeBoundingSphere(),iR.copy(this.boundingSphere),iR.applyMatrix4(n),!1!==e.ray.intersectsSphere(iR)))for(let r=0;r<i;r++){this.getMatrixAt(r,iM),iw.multiplyMatrices(n,iM),iA.matrixWorld=iw,iA.raycast(e,iT);for(let e=0,n=iT.length;e<n;e++){let n=iT[e];n.instanceId=r,n.object=this,t.push(n)}iT.length=0}}setColorAt(e,t){null===this.instanceColor&&(this.instanceColor=new iS(new Float32Array(3*this.instanceMatrix.count).fill(1),3)),t.toArray(this.instanceColor.array,3*e)}setMatrixAt(e,t){t.toArray(this.instanceMatrix.array,16*e)}setMorphAt(e,t){let n=t.morphTargetInfluences,i=n.length+1;null===this.morphTexture&&(this.morphTexture=new ix(new Float32Array(i*this.count),i,this.count,1028,1015));let r=this.morphTexture.source.data.data,a=0;for(let e=0;e<n.length;e++)a+=n[e];let s=this.geometry.morphTargetsRelative?1:1-a,o=i*e;r[o]=s,r.set(n,o+1)}updateMorphTargets(){}dispose(){this.dispatchEvent({type:"dispose"}),null!==this.morphTexture&&(this.morphTexture.dispose(),this.morphTexture=null)}}let iP=new eg,iI=new eg,iN=new ey;class iD{constructor(e=new eg(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,n,i){return this.normal.set(e,t,n),this.constant=i,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,n){let i=iP.subVectors(n,t).cross(iI.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(i,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){let 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){let n=e.delta(iP),i=this.normal.dot(n);if(0===i)return 0===this.distanceToPoint(e.start)?t.copy(e.start):null;let r=-(e.start.dot(this.normal)+this.constant)/i;return r<0||r>1?null:t.copy(e.start).addScaledVector(n,r)}intersectsLine(e){let t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<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){let n=t||iN.getNormalMatrix(e),i=this.coplanarPoint(iP).applyMatrix4(e),r=this.normal.applyMatrix3(n).normalize();return this.constant=-i.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)}}let iU=new e5,iF=new ef(.5,.5),iO=new eg;class ik{constructor(e=new iD,t=new iD,n=new iD,i=new iD,r=new iD,a=new iD){this.planes=[e,t,n,i,r,a]}set(e,t,n,i,r,a){let s=this.planes;return s[0].copy(e),s[1].copy(t),s[2].copy(n),s[3].copy(i),s[4].copy(r),s[5].copy(a),this}copy(e){let t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e,t=2e3,n=!1){let i=this.planes,r=e.elements,a=r[0],s=r[1],o=r[2],l=r[3],u=r[4],c=r[5],h=r[6],d=r[7],p=r[8],f=r[9],m=r[10],g=r[11],v=r[12],x=r[13],y=r[14],_=r[15];if(i[0].setComponents(l-a,d-u,g-p,_-v).normalize(),i[1].setComponents(l+a,d+u,g+p,_+v).normalize(),i[2].setComponents(l+s,d+c,g+f,_+x).normalize(),i[3].setComponents(l-s,d-c,g-f,_-x).normalize(),n)i[4].setComponents(o,h,m,y).normalize(),i[5].setComponents(l-o,d-h,g-m,_-y).normalize();else if(i[4].setComponents(l-o,d-h,g-m,_-y).normalize(),2e3===t)i[5].setComponents(l+o,d+h,g+m,_+y).normalize();else if(2001===t)i[5].setComponents(o,h,m,y).normalize();else throw Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(void 0!==e.boundingSphere)null===e.boundingSphere&&e.computeBoundingSphere(),iU.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{let t=e.geometry;null===t.boundingSphere&&t.computeBoundingSphere(),iU.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(iU)}intersectsSprite(e){return iU.center.set(0,0,0),iU.radius=.7071067811865476+iF.distanceTo(e.center),iU.applyMatrix4(e.matrixWorld),this.intersectsSphere(iU)}intersectsSphere(e){let t=this.planes,n=e.center,i=-e.radius;for(let e=0;e<6;e++)if(t[e].distanceToPoint(n)<i)return!1;return!0}intersectsBox(e){let t=this.planes;for(let n=0;n<6;n++){let i=t[n];if(iO.x=i.normal.x>0?e.max.x:e.min.x,iO.y=i.normal.y>0?e.max.y:e.min.y,iO.z=i.normal.z>0?e.max.z:e.min.z,0>i.distanceToPoint(iO))return!1}return!0}containsPoint(e){let t=this.planes;for(let n=0;n<6;n++)if(0>t[n].distanceToPoint(e))return!1;return!0}clone(){return new this.constructor().copy(this)}}let iz=new ti,iB=new ik;class iV{constructor(){this.coordinateSystem=2e3}intersectsObject(e,t){if(!t.isArrayCamera||0===t.cameras.length)return!1;for(let n=0;n<t.cameras.length;n++){let i=t.cameras[n];if(iz.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse),iB.setFromProjectionMatrix(iz,i.coordinateSystem,i.reversedDepth),iB.intersectsObject(e))return!0}return!1}
vendor: 1,367 bytes, line 36
36intersectsSprite(e,t){if(!t||!t.cameras||0===t.cameras.length)return!1;for(let n=0;n<t.cameras.length;n++){let i=t.cameras[n];if(iz.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse),iB.setFromProjectionMatrix(iz,i.coordinateSystem,i.reversedDepth),iB.intersectsSprite(e))return!0}return!1}intersectsSphere(e,t){if(!t||!t.cameras||0===t.cameras.length)return!1;for(let n=0;n<t.cameras.length;n++){let i=t.cameras[n];if(iz.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse),iB.setFromProjectionMatrix(iz,i.coordinateSystem,i.reversedDepth),iB.intersectsSphere(e))return!0}return!1}intersectsBox(e,t){if(!t||!t.cameras||0===t.cameras.length)return!1;for(let n=0;n<t.cameras.length;n++){let i=t.cameras[n];if(iz.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse),iB.setFromProjectionMatrix(iz,i.coordinateSystem,i.reversedDepth),iB.intersectsBox(e))return!0}return!1}containsPoint(e,t){if(!t||!t.cameras||0===t.cameras.length)return!1;for(let n=0;n<t.cameras.length;n++){let i=t.cameras[n];if(iz.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse),iB.setFromProjectionMatrix(iz,i.coordinateSystem,i.reversedDepth),iB.containsPoint(e))return!0}return!1}clone(){return new iV}}function iH(e,t){return e-t}function ij(e,t){return e.z-t.z}function iG(e,t){return t.z-e.z}let iW=new ti,iX=new tZ(1,1,1),iq=new ik,iY=new iV,iZ=new eB,iJ=new e5,i$=ne
36w eg,iK=new eg,iQ=new eg,i0=new class{constructor(){this.index=0,this.pool=[],this.list=[]}push(e,t,n,i){let r=this.pool,a=this.list;this.index>=r.length&&r.push({start:-1,count:-1,z:-1,index:-1});let s=r[this.index];a.push(s),this.index++,s.start=e,s.count=t,s.z=n,s.index=i}reset(){this.list.length=0,this.index=0}},i1=new nE,i2=[];function i3(e,t){if(e.constructor!==t.constructor){let n=Math.min(e.length,t.length);for(let i=0;i<n;i++)t[i]=e[i]}else{let n=Math.min(e.length,t.length);t.set(new e.constructor(e.buffer,0,n))}}class i5 extends nE{constructor(e,t,n=2*t,i){super(new nf,i),this.isBatchedMesh=!0,this.perObjectFrustumCulled=!0,this.sortObjects=!0,this.boundingBox=null,this.boundingSphere=null,this.customSort=null,this._instanceInfo=[],this._geometryInfo=[],this._availableInstanceIds=[],this._availableGeometryIds=[],this._nextIndexStart=0,this._nextVertexStart=0,this._geometryCount=0,this._visibilityChanged=!0,this._geometryInitialized=!1,this._maxInstanceCount=e,this._maxVertexCount=t,this._maxIndexCount=n,this._multiDrawCounts=new Int32Array(e),this._multiDrawStarts=new Int32Array(e),this._multiDrawCount=0,this._multiDrawInstances=null,this._matricesTexture=null,this._indirectTexture=null,this._colorsTexture=null,this._initMatricesTexture(),this._initIndirectTexture()}get maxInstanceCount(){return this._maxInstanceCount}get instanceCount(){return this._instanceInfo.length-this._availableInstanceIds.length}get unusedVertexCount(){return this._maxVertexCount-this._nextVertexStart}get unusedIndexCount(){return this._maxIndexCount-this._nextIndexStart}_initMatricesTexture(){let e=Math.sqrt(4*this._maxInstanceCount),t=new ix(new Float32Array((e=Math.max(e=4*Math.ceil(e/4),4))*e*4),e,e,1023,1015);this._matricesTexture=t}_initIndirectTexture(){let e=Math.sqrt(this._maxInstanceCount),t=new ix(new Uint32Array((e=Math.ceil(e))*e),e,e,1029,1014);this._indirectTexture=t}_initColorsTexture(){let e=Math.sqrt(this._maxInstanceCount),t=new ix(new Float32Array((e=Math.ceil(e))*e*4).fill(1),e,e,1023,1015);t.colorSpace=eM.workingColorSpace,this._colorsTexture=t}_initializeGeometry(e){let t=this.geometry,n=this._maxVertexCount,i=this._maxIndexCount;if(!1===this._geometryInitialized){for(let i in e.attributes){let{array:r,itemSize:a,normalized:s}=e.getAttribute(i),o=new t8(new r.constructor(n*a),a,s);t.setAttribute(i,o)}if(null!==e.getIndex()){let e=n>65535?new Uint32Array(i):new Uint16Array(i);t.setIndex(new t8(e,1))}this._geometryInitialized=!0}}_validateGeometry(e){let t=this.geometry;if(!!e.getIndex()!=!!t.getIndex())throw Error('THREE.BatchedMesh: All geometries must consistently have "index".');for(let n in t.attributes){if(!e.hasAttribute(n))throw Error(`THREE.BatchedMesh: Added geometry missing "${n}". All geometries must have consistent attributes.`);let i=e.getAttribute(n),r=t.getAttribute(n);if(i.itemSize!==r.itemSize||i.normalized!==r.normalized)throw Error("THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.")}}validateInstanceId(e){let t=this._instanceInfo;if(e<0||e>=t.length||!1===t[e].active)throw Error(`THREE.BatchedMesh: Invalid instanceId ${e}. Instance is either out of range or has been deleted.`)}validateGeometryId(e){let t=this._geometryInfo;if(e<0||e>=t.length||!1===t[e].active)throw Error(`THREE.BatchedMesh: Invalid geometryId ${e}. Geometry is either out of range or has been deleted.`)}setCustomSort(e){return this.customSort=e,this}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new eB);let e=this.boundingBox,t=this._instanceInfo;e.makeEmpty();for(let n=0,i=t.length;n<i;n++){if(!1===t[n].active)continue;let i=t[n].geometryIndex;this.getMatrixAt(n,iW),this.getBoundingBoxAt(i,iZ).applyMatrix4(iW),e.union(iZ)}}computeBoundingSphere(){null===this.boundingSphere&&(this.boundingSphere=new e5);let e=this.boundingSphere,t=this._instanceInfo;e.makeEmpty();for(let n=0,i=t.length;n<i;n++){if(!1===t[n].active)continue;let i=t[n].geometryIndex;this.getMatrixAt(n,iW),this.getBoundingSphereAt(i,iJ).applyMatrix4(iW),e.union(iJ)}}addInstance(e){if(this._instanceInfo.length>=this.maxInstanceCount&&0===this._availableInstanceIds.length)throw Error("THREE.BatchedMesh: Maximum item count reached.");let t={visible:!0,active:!0,geometryIndex:e},n=null;this._availableInstanceIds.length>0?(this._availableInstanceIds.sort(iH),n=this._availableInstanceIds.shift(),this._instanceInfo[n]=t):(n=this._instanceInfo.length,this._instanceInfo.push(t));let i=this._matricesTexture;iW.identity().toArray(i.image.data,16*n),i.needsUpdate=!0;let r=this._colorsTexture;return r&&(iX.toArray(r.image.data,4*n),r.needsUpdate=!0),this._visibilityChanged=!0,n}addGeometry(e,t=-1,n=-1){let i;
36this._initializeGeometry(e),this._validateGeometry(e);let r={vertexStart:-1,vertexCount:-1,reservedVertexCount:-1,indexStart:-1,indexCount:-1,reservedIndexCount:-1,start:-1,count:-1,boundingBox:null,boundingSphere:null,active:!0},a=this._geometryInfo;r.vertexStart=this._nextVertexStart,r.reservedVertexCount=-1===t?e.getAttribute("position").count:t;let s=e.getIndex();if(null!==s&&(r.indexStart=this._nextIndexStart,r.reservedIndexCount=-1===n?s.count:n),-1!==r.indexStart&&r.indexStart+r.reservedIndexCount>this._maxIndexCount||r.vertexStart+r.reservedVertexCount>this._maxVertexCount)throw Error("THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.");return this._availableGeometryIds.length>0?(this._availableGeometryIds.sort(iH),a[i=this._availableGeometryIds.shift()]=r):(i=this._geometryCount,this._geometryCount++,a.push(r)),this.setGeometryAt(i,e),this._nextIndexStart=r.indexStart+r.reservedIndexCount,this._nextVertexStart=r.vertexStart+r.reservedVertexCount,i}setGeometryAt(e,t){if(e>=this._geometryCount)throw Error("THREE.BatchedMesh: Maximum geometry count reached.");this._validateGeometry(t);let n=this.geometry,i=null!==n.getIndex(),r=n.getIndex(),a=t.getIndex(),s=this._geometryInfo[e];if(i&&a.count>s.reservedIndexCount||t.attributes.position.count>s.reservedVertexCount)throw Error("THREE.BatchedMesh: Reserved space not large enough for provided geometry.");let o=s.vertexStart,l=s.reservedVertexCount;for(let e in s.vertexCount=t.getAttribute("position").count,n.attributes){let i=t.getAttribute(e),r=n.getAttribute(e);!function(e,t,n=0){let i=t.itemSize;if(e.isInterleavedBufferAttribute||e.array.constructor!==t.array.constructor){let r=e.count;for(let a=0;a<r;a++)for(let r=0;r<i;r++)t.setComponent(a+n,r,e.getComponent(a,r))}else t.array.set(e.array,n*i);t.needsUpdate=!0}(i,r,o);let a=i.itemSize;for(let e=i.count;e<l;e++){let t=o+e;for(let e=0;e<a;e++)r.setComponent(t,e,0)}r.needsUpdate=!0,r.addUpdateRange(o*a,l*a)}if(i){let e=s.indexStart,n=s.reservedIndexCount;s.indexCount=t.getIndex().count;for(let t=0;t<a.count;t++)r.setX(e+t,o+a.getX(t));for(let t=a.count;t<n;t++)r.setX(e+t,o);r.needsUpdate=!0,r.addUpdateRange(e,s.reservedIndexCount)}return s.start=i?s.indexStart:s.vertexStart,s.count=i?s.indexCount:s.vertexCount,s.boundingBox=null,null!==t.boundingBox&&(s.boundingBox=t.boundingBox.clone()),s.boundingSphere=null,null!==t.boundingSphere&&(s.boundingSphere=t.boundingSphere.clone()),this._visibilityChanged=!0,e}deleteGeometry(e){let t=this._geometryInfo;if(e>=t.length||!1===t[e].active)return this;let n=this._instanceInfo;for(let t=0,i=n.length;t<i;t++)n[t].active&&n[t].geometryIndex===e&&this.deleteInstance(t);return t[e].active=!1,this._availableGeometryIds.push(e),this._visibilityChanged=!0,this}deleteInstance(e){return this.validateInstanceId(e),this._instanceInfo[e].active=!1,this._availableInstanceIds.push(e),this._visibilityChanged=!0,this}optimize(){let e=0,t=0,n=this._geometryInfo,i=n.map((e,t)=>t).sort((e,t)=>n[e].vertexStart-n[t].vertexStart),r=this.geometry;for(let a=0,s=n.length;a<s;a++){let s=n[i[a]];if(!1!==s.active){if(null!==r.index){if(s.indexStart!==t){let{indexStart:n,vertexStart:i,reservedIndexCount:a}=s,o=r.index,l=o.array,u=e-i;for(let e=n;e<n+a;e++)l[e]=l[e]+u;o.array.copyWithin(t,n,n+a),o.addUpdateRange(t,a),o.needsUpdate=!0,s.indexStart=t}t+=s.reservedIndexCount}if(s.vertexStart!==e){let{vertexStart:t,reservedVertexCount:n}=s,i=r.attributes;for(let r in i){let a=i[r],{array:s,itemSize:o}=a;s.copyWithin(e*o,t*o,(t+n)*o),a.addUpdateRange(e*o,n*o),a.needsUpdate=!0}s.vertexStart=e}e+=s.reservedVertexCount,s.start=r.index?s.indexStart:s.vertexStart,this._nextIndexStart=r.index?s.indexStart+s.reservedIndexCount:0,this._nextVertexStart=s.vertexStart+s.reservedVertexCount}}return this._visibilityChanged=!0,this}getBoundingBoxAt(e,t){if(e>=this._geometryCount)return null;let n=this.geometry,i=this._geometryInfo[e];if(null===i.boundingBox){let e=new eB,t=n.index,r=n.attributes.position;for(let n=i.start,a=i.start+i.count;n<a;n++){let i=n;t&&(i=t.getX(i)),e.expandByPoint(i$.fromBufferAttribute(r,i))}i.boundingBox=e}return t.copy(i.boundingBox),t}getBoundingSphereAt(e,t){if(e>=this._geometryCount)return null;let n=this.geometry,i=this._geometryInfo[e];if(null===i.boundingSphere){let t=new e5;this.getBoundingBoxAt(e,iZ),iZ.getCenter(t.center);let r=n.index,a=n.attributes.position,s=0;for(let e=i.start,n=i.start+i.count;e<n;e++){let n=e;r&&(n=r.getX(n)),i$.fromBufferAttribute(a,n),s=Math.max(s,t.center.distanceToSquared(i$))}t.radius=Math.sqrt(s),i.boundingSphere=t}return t.copy(i.boundingSphere),t}setMatrixAt(e,t){this.validateInstanceId(e);let n=this._matricesTexture,i=this._matricesTexture.image.data;return t.toArray(i,16*e),n.needsUpdate=!0,this}getMatrixAt(e,t){return this.validateInstanceId(e),t.fromArray(this._matricesTexture.image.data,16*e)}setColorAt(e,t){return this.validateInstanceId(e),null===this._colorsTexture&&this._initColorsTexture(),t.toArray(this._colorsTexture.image.data,4*e),this._colorsTexture.needsUpdate=!0,this}getColorAt(e,t){return this.validateInstanceId(e),t.fromArray(this._colorsTexture.image.data,4*e)}setVisibleAt(e,t){return this.validateInstanceId(e),this._instanceInfo[e].visible===t||(this._instanceInfo[e].visible=t,this._visibilityChanged=!0),this}getVisibleAt(e){return this.validateInstanceId(e),this._instanceInfo[e].visible}setGeometryIdAt(e,t){return this.validateInstanceId(e),this.validateGeometryId(t),this._instanceInfo[e].geometryIndex=t,this}getGeometryIdAt(e){return this.validateInstanceId(e),this._instanceInfo[e].geometryIndex}getGeometryRangeAt(e,t={}){this.validateGeometryId(e);let n=this._geometryInfo[e];return t.vertexStart=n.vertexStart,t.vertexCount=n.vertexCount,t.reservedVertexCount=n.reservedVertexCount,t.indexStart=n.indexStart,t.indexCount=n.indexCount,t.reservedIndexCount=n.reservedIndexCount,t.start=n.start,t.count=n.count,t}setInstanceCount(e){let t=this._availableInstanceIds,n=this._instanceInfo;
36for(t.sort(iH);t[t.length-1]===n.length-1;)n.pop(),t.pop();if(e<n.length)throw Error(`BatchedMesh: Instance ids outside the range ${e} are being used. Cannot shrink instance count.`);let i=new Int32Array(e),r=new Int32Array(e);i3(this._multiDrawCounts,i),i3(this._multiDrawStarts,r),this._multiDrawCounts=i,this._multiDrawStarts=r,this._maxInstanceCount=e;let a=this._indirectTexture,s=this._matricesTexture,o=this._colorsTexture;a.dispose(),this._initIndirectTexture(),i3(a.image.data,this._indirectTexture.image.data),s.dispose(),this._initMatricesTexture(),i3(s.image.data,this._matricesTexture.image.data),o&&(o.dispose(),this._initColorsTexture(),i3(o.image.data,this._colorsTexture.image.data))}setGeometrySize(e,t){let n=[...this._geometryInfo].filter(e=>e.active);if(Math.max(...n.map(e=>e.vertexStart+e.reservedVertexCount))>e)throw Error(`BatchedMesh: Geometry vertex values are being used outside the range ${t}. Cannot shrink further.`);if(this.geometry.index&&Math.max(...n.map(e=>e.indexStart+e.reservedIndexCount))>t)throw Error(`BatchedMesh: Geometry index values are being used outside the range ${t}. Cannot shrink further.`);let i=this.geometry;i.dispose(),this._maxVertexCount=e,this._maxIndexCount=t,this._geometryInitialized&&(this._geometryInitialized=!1,this.geometry=new nf,this._initializeGeometry(i));let r=this.geometry;for(let e in i.index&&i3(i.index.array,r.index.array),i.attributes)i3(i.attributes[e].array,r.attributes[e].array)}raycast(e,t){let n=this._instanceInfo,i=this._geometryInfo,r=this.matrixWorld,a=this.geometry;i1.material=this.material,i1.geometry.index=a.index,i1.geometry.attributes=a.attributes,null===i1.geometry.boundingBox&&(i1.geometry.boundingBox=new eB),null===i1.geometry.boundingSphere&&(i1.geometry.boundingSphere=new e5);for(let a=0,s=n.length;a<s;a++){if(!n[a].visible||!n[a].active)continue;let s=n[a].geometryIndex,o=i[s];i1.geometry.setDrawRange(o.start,o.count),this.getMatrixAt(a,i1.matrixWorld).premultiply(r),this.getBoundingBoxAt(s,i1.geometry.boundingBox),this.getBoundingSphereAt(s,i1.geometry.boundingSphere),i1.raycast(e,i2);for(let e=0,n=i2.length;e<n;e++){let n=i2[e];n.object=this,n.batchId=a,t.push(n)}i2.length=0}i1.material=null,i1.geometry.index=null,i1.geometry.attributes={},i1.geometry.setDrawRange(0,1/0)}copy(e){return super.copy(e),this.geometry=e.geometry.clone(),this.perObjectFrustumCulled=e.perObjectFrustumCulled,this.sortObjects=e.sortObjects,this.boundingBox=null!==e.boundingBox?e.boundingBox.clone():null,this.boundingSphere=null!==e.boundingSphere?e.boundingSphere.clone():null,this._geometryInfo=e._geometryInfo.map(e=>({...e,boundingBox:null!==e.boundingBox?e.boundingBox.clone():null,boundingSphere:null!==e.boundingSphere?e.boundingSphere.clone():null})),this._instanceInfo=e._instanceInfo.map(e=>({...e})),this._availableInstanceIds=e._availableInstanceIds.slice(),this._availableGeometryIds=e._availableGeometryIds.slice(),this._nextIndexStart=e._nextIndexStart,this._nextVertexStart=e._nextVertexStart,this._geometryCount=e._geometryCount,this._maxInstanceCount=e._maxInstanceCount,this._maxVertexCount=e._maxVertexCount,this._maxIndexCount=e._maxIndexCount,this._geometryInitialized=e._geometryInitialized,this._multiDrawCounts=e._multiDrawCounts.slice(),this._multiDrawStarts=e._multiDrawStarts.slice(),this._indirectTexture=e._indirectTexture.clone(),this._indirectTexture.image.data=this._indirectTexture.image.data.slice(),this._matricesTexture=e._matricesTexture.clone(),this._matricesTexture.image.data=this._matricesTexture.image.data.slice(),null!==this._colorsTexture&&(this._colorsTexture=e._colorsTexture.clone(),this._colorsTexture.image.data=this._colorsTexture.image.data.slice()),this}dispose(){this.geometry.dispose(),this._matricesTexture.dispose(),this._matricesTexture=null,this._indirectTexture.dispose(),this._indirectTexture=null,null!==this._colorsTexture&&(this._colorsTexture.dispose(),this._colorsTexture=null)}onBeforeRender(e,t,n,i,r){if(!this._visibilityChanged&&!this.perObjectFrustumCulled&&!this.sortObjects)return;let a=i.getIndex(),s=null===a?1:a.array.BYTES_PER_ELEMENT,o=this._instanceInfo,l=this._multiDrawStarts,u=this._multiDrawCounts,c=this._geometryInfo,h=this.perObjectFrustumCulled,d=this._indirectTexture,p=d.image.data,f=n.isArrayCamera?iY:iq;h&&!n.isArrayCamera&&(iW.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse).multiply(this.matrixWorld),iq.setFromProjectionMatrix(iW,n.coordinateSystem,n.reversedDepth));let m=0;if(this.sortObjects){iW.copy(this.matrixWorld).invert(),i$.setFromMatrixPosition(n.matrixWorld).applyMatrix4(iW),iK.set(0,0,-1).transformDirection(n.matrixWorld).transformDirection(iW);for(let e=0,t=o.length;e<t;e++)if(o[e].visible&&o[e].active){let t=o[e].geometryIndex;this.getMatrixAt(e,iW),this.getBoundingSphereAt(t,iJ).applyMatrix4(iW);let i=!1;if(h&&(i=!f.intersectsSphere(iJ,n)),!i){let n=c[t],i=iQ.subVectors(iJ.center,i$).dot(iK);i0.push(n.start,n.count,i,e)}}let e=i0.list,t=this.customSort;null===t?e.sort(r.transparent?iG:ij):t.call(this,e,n);for(let t=0,n=e.length;t<n;t++){let n=e[t];l[m]=n.start*s,u[m]=n.count,p[m]=n.index,m++}i0.reset()}else for(let e=0,t=o.length;e<t;e++)if(o[e].visible&&o[e].active){let t=o[e].geometryIndex,i=!1;if(h&&(this.getMatrixAt(e,iW),this.getBoundingSphereAt(t,iJ).applyMatrix4(iW),i=!f.intersectsSphere(iJ,n)),!i){let n=c[t];l[m]=n.start*s,u[m]=n.count,p[m]=e,m++}}d.needsUpdate=!0,this._multiDrawCount=m,this._visibilityChanged=!1}onBeforeShadow(e,t,n,i,r,a){this.onBeforeRender(e,null,i,r,a)}}class i4 extends tK{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new tZ(0xffffff),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}}let i6=new eg,i8=new eg,i7=new ti,i9=new tn,re=new e5,rt=new eg,rn=new eg;class ri extends tL{constructor(e=new nf,t=new i4){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}computeLineDistances(){let e=this.geometry;if(null===e.index){let t=e.attributes.position,n=[0];for(let e=1,i=t.count;e<i;e++)i6.fromBufferAttribute(t,e-1),i8.fromBufferAttribute(t,e),n[e]=n[e-1],n[e]+=i6.distanceTo(i8);e.setAttribute("lineDistance",new ns(n,1))}else Q("Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(e,t){let n=this.geometry,i=this.matrixWorld,r=e.params.Line.threshold,a=n.drawRange;if(null===n.boundingSphere&&n.computeBoundingSphere(),re.copy(n.boundingSphere),re.applyMatrix4(i),re.radius+=r,!1===e.ray.intersectsSphere(re))return;i7.copy(i).invert(),i9.copy(e.ray).applyMatrix4(i7);let s=r/((this.scale.x+this.scale.y+this.scale.z)/3),o=s*s,l=this.isLineSegments?2:1,u=n.index,c=n.attributes.position;if(null!==u){let n=Math.max(0,a.start),i=Math.min(u.count,a.start+a.count);for(let r=n,a=i-1;r<a;r+=l){let n=rr(this,e,i9,o,u.getX(r),u.getX(r+1),r);
36n&&t.push(n)}if(this.isLineLoop){let r=rr(this,e,i9,o,u.getX(i-1),u.getX(n),i-1);r&&t.push(r)}}else{let n=Math.max(0,a.start),i=Math.min(c.count,a.start+a.count);for(let r=n,a=i-1;r<a;r+=l){let n=rr(this,e,i9,o,r,r+1,r);n&&t.push(n)}if(this.isLineLoop){let r=rr(this,e,i9,o,i-1,n,i-1);r&&t.push(r)}}}updateMorphTargets(){let e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){let n=e[t[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;e<t;e++){let t=n[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}}function rr(e,t,n,i,r,a,s){let o=e.geometry.attributes.position;if(i6.fromBufferAttribute(o,r),i8.fromBufferAttribute(o,a),n.distanceSqToSegment(i6,i8,rt,rn)>i)return;rt.applyMatrix4(e.matrixWorld);let l=t.ray.origin.distanceTo(rt);if(!(l<t.near)&&!(l>t.far))return{distance:l,point:rn.clone().applyMatrix4(e.matrixWorld),index:s,face:null,faceIndex:null,barycoord:null,object:e}}let ra=new eg,rs=new eg;class ro extends ri{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){let e=this.geometry;if(null===e.index){let t=e.attributes.position,n=[];for(let e=0,i=t.count;e<i;e+=2)ra.fromBufferAttribute(t,e),rs.fromBufferAttribute(t,e+1),n[e]=0===e?0:n[e-1],n[e+1]=n[e]+ra.distanceTo(rs);e.setAttribute("lineDistance",new ns(n,1))}else Q("LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}}class rl extends ri{constructor(e,t){super(e,t),this.isLineLoop=!0,this.type="LineLoop"}}class ru extends tK{constructor(e){super(),this.isPointsMaterial=!0,this.type="PointsMaterial",this.color=new tZ(0xffffff),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.size=e.size,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}}let rc=new ti,rh=new tn,rd=new e5,rp=new eg;class rf extends tL{constructor(e=new nf,t=new ru){super(),this.isPoints=!0,this.type="Points",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}raycast(e,t){let n=this.geometry,i=this.matrixWorld,r=e.params.Points.threshold,a=n.drawRange;if(null===n.boundingSphere&&n.computeBoundingSphere(),rd.copy(n.boundingSphere),rd.applyMatrix4(i),rd.radius+=r,!1===e.ray.intersectsSphere(rd))return;rc.copy(i).invert(),rh.copy(e.ray).applyMatrix4(rc);let s=r/((this.scale.x+this.scale.y+this.scale.z)/3),o=s*s,l=n.index,u=n.attributes.position;if(null!==l){let n=Math.max(0,a.start),r=Math.min(l.count,a.start+a.count);for(let a=n;a<r;a++){let n=l.getX(a);rp.fromBufferAttribute(u,n),rm(rp,n,o,i,e,t,this)}}else{let n=Math.max(0,a.start),r=Math.min(u.count,a.start+a.count);for(let a=n;a<r;a++)rp.fromBufferAttribute(u,a),rm(rp,a,o,i,e,t,this)}}updateMorphTargets(){let e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){let n=e[t[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;e<t;e++){let t=n[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}}function rm(e,t,n,i,r,a,s){let o=rh.distanceSqToPoint(e);if(o<n){let n=new eg;rh.closestPointToPoint(e,n),n.applyMatrix4(i);let l=r.ray.origin.distanceTo(n);if(l<r.near||l>r.far)return;a.push({distance:l,distanceToRay:Math.sqrt(o),point:n,index:t,face:null,faceIndex:null,barycoord:null,object:s})}}class rg extends eI{constructor(e,t,n,i,r=1006,a=1006,s,o,l){super(e,t,n,i,r,a,s,o,l),this.isVideoTexture=!0,this.generateMipmaps=!1,this._requestVideoFrameCallbackId=0;const u=this;"requestVideoFrameCallback"in e&&(this._requestVideoFrameCallbackId=e.requestVideoFrameCallback(function t(){u.needsUpdate=!0,u._requestVideoFrameCallbackId=e.requestVideoFrameCallback(t)}))}clone(){return new this.constructor(this.image).copy(this)}update(){let e=this.image;!1=="requestVideoFrameCallback"in e&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}dispose(){0!==this._requestVideoFrameCallbackId&&(this.source.data.cancelVideoFrameCallback(this._requestVideoFrameCallbackId),this._requestVideoFrameCallbackId=0),super.dispose()}}class rv extends rg{constructor(e,t,n,i,r,a,s,o){super({},e,t,n,i,r,a,s,o),this.isVideoFrameTexture=!0}update(){}clone(){return new this.constructor().copy(this)}setFrame(e){this.image=e,this.needsUpdate=!0}}class rx extends eI{constructor(e,t){super({width:e,height:t}),this.isFramebufferTexture=!0,this.magFilter=1003,this.minFilter=1003,this.generateMipmaps=!1,this.needsUpdate=!0}}class ry extends eI{constructor(e,t,n,i,r,a,s,o,l,u,c,h){super(null,a,s,o,l,u,i,r,c,h),this.isCompressedTexture=!0,this.image={width:t,height:n},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}}class r_ extends ry{constructor(e,t,n,i,r,a){super(e,t,n,r,a),this.isCompressedArrayTexture=!0,this.image.depth=i,this.wrapR=1001,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class rb extends ry{constructor(e,t,n){super(void 0,e[0].width,e[0].height,t,n,301),this.isCompressedCubeTexture=!0,this.isCubeTexture=!0,this.image=e}}class rS extends eI{constructor(e,t,n,i,r,a,s,o,l){super(e,t,n,i,r,a,s,o,l),this.isCanvasTexture=!0,this.needsUpdate=!0}}class rM extends eI{constructor(e,t,n=1014,i,r,a,s=1003,o=1003,l,u=1026,c=1){if(1026!==u&&1027!==u)throw Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");super({width:e,height:t,depth:c},i,r,a,s,o,u,n,l),this.isDepthTexture=!0,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.source=new eA(Object.assign({},e.image)),this.compareFunction=e.compareFunction,this}toJSON(e){let t=super.toJSON(e);return null!==this.compareFunction&&(t.compareFunction=this.compareFunction),t}}class rw extends rM{constructor(e,t=1014,n=301,i,r,a=1003,s=1003,o,l=1026){const u={width:e,height:e,depth:1};super(e,e,t,n,i,r,a,s,o,l),this.image=[u,u,u,u,u,u],this.isCubeDepthTexture=!0,this.isCubeTexture=!0}get images(){return this.image}set images(e){this.image=e}}class rT extends eI{constructor(e=null){super(),this.sourceTexture=e,this.isExternalTexture=!0}copy(e){return super.copy(e),this.sourceTexture=e.sourceTexture,this}}class rE extends nf{constructor(e=1,t=1,n=4,i=8,r=1){super(),this.type="CapsuleGeometry",this.parameters={radiu
36s:e,height:t,capSegments:n,radialSegments:i,heightSegments:r},t=Math.max(0,t),n=Math.max(1,Math.floor(n)),i=Math.max(3,Math.floor(i));const a=[],s=[],o=[],l=[],u=t/2,c=Math.PI/2*e,h=t,d=2*c+h,p=2*n+(r=Math.max(1,Math.floor(r))),f=i+1,m=new eg,g=new eg;for(let v=0;v<=p;v++){let x=0,y=0,_=0,b=0;if(v<=n){const t=v/n,i=t*Math.PI/2;y=-u-e*Math.cos(i),_=e*Math.sin(i),b=-e*Math.cos(i),x=t*c}else if(v<=n+r){const i=(v-n)/r;y=-u+i*t,_=e,b=0,x=c+i*h}else{const t=(v-n-r)/n,i=t*Math.PI/2;y=u+e*Math.sin(i),_=e*Math.cos(i),b=e*Math.sin(i),x=c+h+t*c}const S=Math.max(0,Math.min(1,x/d));let M=0;0===v?M=.5/i:v===p&&(M=-.5/i);for(let e=0;e<=i;e++){const t=e/i,n=t*Math.PI*2,r=Math.sin(n),a=Math.cos(n);g.x=-_*a,g.y=y,g.z=_*r,s.push(g.x,g.y,g.z),m.set(-_*a,b,_*r),m.normalize(),o.push(m.x,m.y,m.z),l.push(t+M,S)}if(v>0){const e=(v-1)*f;for(let t=0;t<i;t++){const n=e+t,i=e+t+1,r=v*f+t,s=v*f+t+1;a.push(n,i,r),a.push(i,s,r)}}}this.setIndex(a),this.setAttribute("position",new ns(s,3)),this.setAttribute("normal",new ns(o,3)),this.setAttribute("uv",new ns(l,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new rE(e.radius,e.height,e.capSegments,e.radialSegments,e.heightSegments)}}class rC extends nf{constructor(e=1,t=32,n=0,i=2*Math.PI){super(),this.type="CircleGeometry",this.parameters={radius:e,segments:t,thetaStart:n,thetaLength:i},t=Math.max(3,t);const r=[],a=[],s=[],o=[],l=new eg,u=new ef;a.push(0,0,0),s.push(0,0,1),o.push(.5,.5);for(let r=0,c=3;r<=t;r++,c+=3){const h=n+r/t*i;l.x=e*Math.cos(h),l.y=e*Math.sin(h),a.push(l.x,l.y,l.z),s.push(0,0,1),u.x=(a[c]/e+1)/2,u.y=(a[c+1]/e+1)/2,o.push(u.x,u.y)}for(let e=1;e<=t;e++)r.push(e,e+1,0);this.setIndex(r),this.setAttribute("position",new ns(a,3)),this.setAttribute("normal",new ns(s,3)),this.setAttribute("uv",new ns(o,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new rC(e.radius,e.segments,e.thetaStart,e.thetaLength)}}class rA extends nf{constructor(e=1,t=1,n=1,i=32,r=1,a=!1,s=0,o=2*Math.PI){super(),this.type="CylinderGeometry",this.parameters={radiusTop:e,radiusBottom:t,height:n,radialSegments:i,heightSegments:r,openEnded:a,thetaStart:s,thetaLength:o};const l=this;i=Math.floor(i),r=Math.floor(r);const u=[],c=[],h=[],d=[];let p=0;const f=[],m=n/2;let g=0;function v(n){let r=p,a=new ef,f=new eg,v=0,x=!0===n?e:t,y=!0===n?1:-1;for(let e=1;e<=i;e++)c.push(0,m*y,0),h.push(0,y,0),d.push(.5,.5),p++;let _=p;for(let e=0;e<=i;e++){let t=e/i*o+s,n=Math.cos(t),r=Math.sin(t);f.x=x*r,f.y=m*y,f.z=x*n,c.push(f.x,f.y,f.z),h.push(0,y,0),a.x=.5*n+.5,a.y=.5*r*y+.5,d.push(a.x,a.y),p++}for(let e=0;e<i;e++){let t=r+e,i=_+e;!0===n?u.push(i,i+1,t):u.push(i+1,i,t),v+=3}l.addGroup(g,v,!0===n?1:2),g+=v}(function(){let a=new eg,v=new eg,x=0,y=(t-e)/n;for(let l=0;l<=r;l++){let u=[],g=l/r,x=g*(t-e)+e;for(let e=0;e<=i;e++){let t=e/i,r=t*o+s,l=Math.sin(r),f=Math.cos(r);v.x=x*l,v.y=-g*n+m,v.z=x*f,c.push(v.x,v.y,v.z),a.set(l,y,f).normalize(),h.push(a.x,a.y,a.z),d.push(t,1-g),u.push(p++)}f.push(u)}for(let n=0;n<i;n++)for(let i=0;i<r;i++){let a=f[i][n],s=f[i+1][n],o=f[i+1][n+1],l=f[i][n+1];(e>0||0!==i)&&(u.push(a,s,l),x+=3),(t>0||i!==r-1)&&(u.push(s,o,l),x+=3)}l.addGroup(g,x,0),g+=x})(),!1===a&&(e>0&&v(!0),t>0&&v(!1)),this.setIndex(u),this.setAttribute("position",new ns(c,3)),this.setAttribute("normal",new ns(h,3)),this.setAttribute("uv",new ns(d,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new rA(e.radiusTop,e.radiusBottom,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}}class rR extends rA{constructor(e=1,t=1,n=32,i=1,r=!1,a=0,s=2*Math.PI){super(0,e,t,n,i,r,a,s),this.type="C
36oneGeometry",this.parameters={radius:e,height:t,radialSegments:n,heightSegments:i,openEnded:r,thetaStart:a,thetaLength:s}}static fromJSON(e){return new rR(e.radius,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}}class rL extends nf{constructor(e=[],t=[],n=1,i=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:e,indices:t,radius:n,detail:i};const r=[],a=[];function s(e){r.push(e.x,e.y,e.z)}function o(t,n){let i=3*t;n.x=e[i+0],n.y=e[i+1],n.z=e[i+2]}function l(e,t,n,i){i<0&&1===e.x&&(a[t]=e.x-1),0===n.x&&0===n.z&&(a[t]=i/2/Math.PI+.5)}function u(e){return Math.atan2(e.z,-e.x)}(function(e){let n=new eg,i=new eg,r=new eg;for(let a=0;a<t.length;a+=3)o(t[a+0],n),o(t[a+1],i),o(t[a+2],r),function(e,t,n,i){let r=i+1,a=[];for(let i=0;i<=r;i++){a[i]=[];let s=e.clone().lerp(n,i/r),o=t.clone().lerp(n,i/r),l=r-i;for(let e=0;e<=l;e++)0===e&&i===r?a[i][e]=s:a[i][e]=s.clone().lerp(o,e/l)}for(let e=0;e<r;e++)for(let t=0;t<2*(r-e)-1;t++){let n=Math.floor(t/2);t%2==0?(s(a[e][n+1]),s(a[e+1][n]),s(a[e][n])):(s(a[e][n+1]),s(a[e+1][n+1]),s(a[e+1][n]))}}(n,i,r,e)})(i),function(e){let t=new eg;for(let n=0;n<r.length;n+=3)t.x=r[n+0],t.y=r[n+1],t.z=r[n+2],t.normalize().multiplyScalar(e),r[n+0]=t.x,r[n+1]=t.y,r[n+2]=t.z}(n),function(){let e=new eg;for(let n=0;n<r.length;n+=3){var t;e.x=r[n+0],e.y=r[n+1],e.z=r[n+2];let i=u(e)/2/Math.PI+.5,s=Math.atan2(-(t=e).y,Math.sqrt(t.x*t.x+t.z*t.z))/Math.PI+.5;a.push(i,1-s)}(function(){let e=new eg,t=new eg,n=new eg,i=new eg,s=new ef,o=new ef,c=new ef;for(let h=0,d=0;h<r.length;h+=9,d+=6){e.set(r[h+0],r[h+1],r[h+2]),t.set(r[h+3],r[h+4],r[h+5]),n.set(r[h+6],r[h+7],r[h+8]),s.set(a[d+0],a[d+1]),o.set(a[d+2],a[d+3]),c.set(a[d+4],a[d+5]),i.copy(e).add(t).add(n).divideScalar(3);let p=u(i);l(s,d+0,e,p),l(o,d+2,t,p),l(c,d+4,n,p)}})(),function(){for(let e=0;e<a.length;e+=6){let t=a[e+0],n=a[e+2],i=a[e+4],r=Math.max(t,n,i),s=Math.min(t,n,i);r>.9&&s<.1&&(t<.2&&(a[e+0]+=1),n<.2&&(a[e+2]+=1),i<.2&&(a[e+4]+=1))}}()}(),this.setAttribute("position",new ns(r,3)),this.setAttribute("normal",new ns(r.slice(),3)),this.setAttribute("uv",new ns(a,2)),0===i?this.computeVertexNormals():this.normalizeNormals()}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new rL(e.vertices,e.indices,e.radius,e.detail)}}class rP extends rL{constructor(e=1,t=0){const n=(1+Math.sqrt(5))/2,i=1/n;super([-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-n,0,-i,n,0,i,-n,0,i,n,-i,-n,0,-i,n,0,i,-n,0,i,n,0,-n,0,-i,n,0,-i,-n,0,i,n,0,i],[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,
3619,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],e,t),this.type="DodecahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new rP(e.radius,e.detail)}}let rI=new eg,rN=new eg,rD=new eg,rU=new tG;class rF extends nf{constructor(e=null,t=1){if(super(),this.type="EdgesGeometry",this.parameters={geometry:e,thresholdAngle:t},null!==e){const n=Math.cos(ea*t),i=e.getIndex(),r=e.getAttribute("position"),a=i?i.count:r.count,s=[0,0,0],o=["a","b","c"],l=[,,,],u={},c=[];for(let e=0;e<a;e+=3){i?(s[0]=i.getX(e),s[1]=i.getX(e+1),s[2]=i.getX(e+2)):(s[0]=e,s[1]=e+1,s[2]=e+2);const{a:t,b:a,c:h}=rU;if(t.fromBufferAttribute(r,s[0]),a.fromBufferAttribute(r,s[1]),h.fromBufferAttribute(r,s[2]),rU.getNormal(rD),l[0]=`${Math.round(1e4*t.x)},${Math.round(1e4*t.y)},${Math.round(1e4*t.z)}`,l[1]=`${Math.round(1e4*a.x)},${Math.round(1e4*a.y)},${Math.round(1e4*a.z)}`,l[2]=`${Math.round(1e4*h.x)},${Math.round(1e4*h.y)},${Math.round(1e4*h.z)}`,l[0]!==l[1]&&l[1]!==l[2]&&l[2]!==l[0])for(let e=0;e<3;e++){const t=(e+1)%3,i=l[e],r=l[t],a=rU[o[e]],h=rU[o[t]],d=`${i}_${r}`,p=`${r}_${i}`;p in u&&u[p]?(rD.dot(u[p].normal)<=n&&(c.push(a.x,a.y,a.z),c.push(h.x,h.y,h.z)),u[p]=null):d in u||(u[d]={index0:s[e],index1:s[t],normal:rD.clone()})}}for(const e in u)if(u[e]){const{index0:t,index1:n}=u[e];rI.fromBufferAttribute(r,t),rN.fromBufferAttribute(r,n),c.push(rI.x,rI.y,rI.z),c.push(rN.x,rN.y,rN.z)}this.setAttribute("position",new ns(c,3))}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}}class rO{constructor(){this.type="Curve",this.arcLengthDivisions=200,this.needsUpdate=!1,this.cacheArcLengths=null}getPoint(){Q("Curve: .getPoint() not implemented.")}getPointAt(e,t){let n=this.getUtoTmapping(e);return this.getPoint(n,t)}getPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return t}getSpacedPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPointAt(n/e));return t}getLength(){let 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;let t=[],n,i=this.getPoint(0),r=0;t.push(0);for(let a=1;a<=e;a++)t.push(r+=(n=this.getPoint(a/e)).distanceTo(i)),i=n;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t=null){let n,i=this.getLengths(),r=0,a=i.length;n=t||e*i[a-1];let s=0,o=a-1,l;for(;s<=o;)if((l=i[r=Math.floor(s+(o-s)/2)]-n)<0)s=r+1;else if(l>0)o=r-1;else{o=r;break}if(i[r=o]===n)return r/(a-1);let u=i[r],c=i[r+1];return(r+(n-u)/(c-u))/(a-1)}getTangent(e,t){let n=e-1e-4,i=e+1e-4;n<0&&(n=0),i>1&&(i=1);let r=this.getPoint(n),a=this.getPoint(i),s=t||(r.isVector2?new ef:new eg);return s.copy(a).sub(r).normalize(),s}getTangentAt(e,t){let n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t=!1){let n=new eg,i=[],r=[],a=[],s=new eg,o=new ti;for(let t=0;t<=e;t++){let n=t/e;i[t]=this.getTangentAt(n,new eg)}r[0]=new eg,a[0]=new eg;let l=Number.MAX_VALUE,u=Math.abs(i[0].x),c=Math.abs(i[0].y),h=Math.abs(i[0].z);u<=l&&(l=u,n.set(1,0,0)),c<=l&&(l=c,n.set(0,1,0)),h<=l&&n.set(0,0,1),s.crossVectors(i[0],n).normalize(),r[0].crossVectors(i[0],s),a[0].crossVectors(i[0],r[0]);for(let t=1;t<=e;t++){if(r[t]=r[t-1].clone(),a[t]=a[t-1].clone(),s.crossVectors(i[t-1],i[t]),s.length()>Number.EPSILON){s.normalize();let e=Math.acos(el(i[t-1].dot(i[t]),-1,1));r[t].applyMatrix4(o.makeRotationAxis(s,e))}a[t].crossVectors(i[t],r[t])}if(!0===t){let t=Math.acos(el(r[0].dot(r[e]),-1,1));t/=e,i[0].dot(s.crossVectors(r[0],r[e]))>0&&(t=-t);for(let n=1;n<=e;n++)r[n].applyMatrix4(o.makeRotationAxis(i[n],t*n)),a[n].crossVectors(i[n],r[n])}return{tangents:i,normals:r,binormals:a}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){let e={metadata:{version:4.7,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}class rk extends rO{constructor(e=0,t=0,n=1,i=1,r=0,a=2*Math.PI,s=!1,o=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=i,this.aStartAngle=r,this.aEndAngle=a,this.aClockwise=s,this.aRotation=o}getPoint(e,t=new ef){let n=2*Math.PI,i=this.aEndAngle-this.aStartAngle,r=Math.abs(i)<Number.EPSILON;for(;i<0;)i+=n;for(;i>n;)i-=n;i<Number.EPSILON&&(i=r?0:n),!0!==this.aClockwise||r||(i===n?i=-n:i-=n);let a=this.aStartAngle+e*i,s=this.aX+this.xRadius*Math.cos(a),o=this.aY+this.yRadius*Math.sin(a);if(0!==this.aRotation){let e=Math.cos(this.aRotation),t=Math.sin(this.aRotation),n=s-this.aX,i=o-this.aY;s=n*e-i*t+this.aX,o=n*t+i*e+this.aY}return t.set(s,o)}copy(e){return super.copy(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}toJSON(){let e=super.toJSON();return e.aX=this.aX,e.aY=this.aY,e.xRadius=this.xRadius,e.yRadius=this.yRadius,e.aStartAngle=this.aStartAngle,e.aEndAngle=this.aEndAngle,e.aClockwise=this.aClockwise,e.aRotation=this.aRotation,e}fromJSON(e){return super.fromJSON(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}}class rz extends rk{constructor(e,t,n,i,r,a){super(e,t,n,n,i,r,a),this.isArcCurve=!0,this.type="ArcCurve"}}function rB(){let e=0,t=0,n=0,i=0;function r(r,a,s,o){e=r,t=s,n=-3*r+3*a-2*s-o,i=2*r-2*a+s+o}return{initCatmullRom:function(e,t,n,i,a){r(t,n,a*(n-e),a*(i-t))},initNonuniformCatmullRom:function(e,t,n,i,a,s,o){let l=(t-e)/a-(n-e)/(a+s)+(n-t)/s,u=(n-t)/s-(i-t)/(s+o)+(i-n)/o;r(t,n,l*=s,u*=s)},calc:function(r){let a=r*r;return e+t*r+n*a+a*r*i}}}let rV=new eg,rH=new rB,rj=new rB,rG=new rB;class rW extends rO{constructor(e=[],t=!1,n="centripetal",i=.5){super(),this.isCatmullRomCurve3=!0,this.type="CatmullRomCurve3",this.points=e,this.closed=t,this.curveType=n,this.tension=i}getPoint(e,t=new eg){let n,i,r=this.points,a=r.length,s=(a-!this.closed)*e,o=Math.floor(s),l=s-o;this.closed?o+=o>0?0:(Math.floor(Math.abs(o)/a)+1)*a:0===l&&o===a-1&&(o=a-2,l=1),this.closed||o>0?n=r[(o-1)%a]:(rV.subVectors(r[0],r[1]).add(r[0]),n=rV);let u=r[o%a],c=r[(o+1)%a];if(this.closed||o+2<a?i=r[(o+2)%a]:(rV.subVectors(r[a-1],r[a-2]).add(r[a-1]),i=rV),"centripetal"===this.curveType||"chordal"===this.curveType){let e="chordal"===this.curveType?.5:.25,t=Math.pow(n.distanceToSquared(u),e),r=Math.pow(u.distanceToSquared(c),e),a=Math.pow(c.distanceToSquared(i),e);r<1e-4&&(r=1),t<1e-4&&(t=r),a<1e-4&&(a=r),rH.initNonuniformCatmullRom(n.x,u.x,c.x,i.x,t,r,a),rj.initNonuniformCatmullRom(n.y,u.y,c.y,i.y,t,r,a),rG.initNonuniformCatmullRom(n.z,u.z,c.z,i.z,t,r,a)}else"catmullrom"===this.curveType&&(rH.initCatmullRom(n.x,u.x,c.x,i.x,this.tension),rj.initCatmullRom(n.y,u.y,c.y,i.y,this.tension),rG.initCatmullRom(n.z,u.z,c.z,i.z,this.tension));return t.set(rH.calc(l),rj.calc(l),rG.calc(l)),t}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){let n=e.points[t];this.points.push(n.clone())}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}toJSON(){let e=super.toJSON();e.points=[];for(let t=0,n=this.points.length;t<n;t++){let n=this.points[t];e.points.push(n.toArray())}return e.closed=this.closed,e.curveType=this.curveType,e.tension=this.tension,e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){let n=e.points[t];this.points.push(new eg().fromArray(n))}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}}function rX(e,t,n,i,r){let a=(i-t)*.5,s=(r-n)*.5,o=e*e;return e*o*(2*n-2*i+a+s)+(-3*n+3*i-2*a-s)*o+a*e+n}function rq(e,t,n,i){let r;return(r=1-e)*r*t+2*(1-e)*e*n+e*e*i}function rY(e,t,n,i,r){let a,s;return(a=1-e)*a*a*t+3*(s=1-e)*s*e*n+3*(1-e)*e*e*i+e*e*e*r}class rZ extends rO{constructor(e=new ef,t=new ef,n=new ef,i=new ef){super(),this.isCubicBezierCurve=!0,this.type="CubicBezierCurve",this.v0=e,this.v1=t,this.v2=n,this.v3=i}getPoint(e,t=new ef){let n=this.v0,i=this.v1,r=this.v2,a=this.v3;return t.set(rY(e,n.x,i.x,r.x,a.x),rY(e,n.y,i.y,r.y,a.y)),t}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}}class rJ extends rO{constructor(e=new eg,t=new eg,n=new eg,i=new eg){super(),this.isCubicBezierCurve3=!0,this.type="CubicBezierCurve3",this.v0=e,this.v1=t,this.v2=n,this.v3=i}getPoint(e,t=new eg){let n=this.v0,i=this.v1,r=this.v2,a=this.v3;return t.set(rY(e,n.x,i.x,r.x,a.x),rY(e,n.y,i.y,r.y,a.y),rY(e,n.z,i.z,r.z,a.z)),t}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}}class r$ extends rO{constructor(e=new ef,t=new ef){super(),this.isLineCurve=!0,this.type="LineCurve",this.v1=e,this.v2=t}getPoint(e,t=new ef){return 1===e?t.copy(this.v2):(t.copy(this.v2).sub(this.v1),t.multiplyScalar(e).add(this.v1)),t}getPointAt(e,t){return this.getPoint(e,t)}
36getTangent(e,t=new ef){return t.subVectors(this.v2,this.v1).normalize()}getTangentAt(e,t){return this.getTangent(e,t)}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class rK extends rO{constructor(e=new eg,t=new eg){super(),this.isLineCurve3=!0,this.type="LineCurve3",this.v1=e,this.v2=t}getPoint(e,t=new eg){return 1===e?t.copy(this.v2):(t.copy(this.v2).sub(this.v1),t.multiplyScalar(e).add(this.v1)),t}getPointAt(e,t){return this.getPoint(e,t)}getTangent(e,t=new eg){return t.subVectors(this.v2,this.v1).normalize()}getTangentAt(e,t){return this.getTangent(e,t)}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class rQ extends rO{constructor(e=new ef,t=new ef,n=new ef){super(),this.isQuadraticBezierCurve=!0,this.type="QuadraticBezierCurve",this.v0=e,this.v1=t,this.v2=n}getPoint(e,t=new ef){let n=this.v0,i=this.v1,r=this.v2;return t.set(rq(e,n.x,i.x,r.x),rq(e,n.y,i.y,r.y)),t}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class r0 extends rO{constructor(e=new eg,t=new eg,n=new eg){super(),this.isQuadraticBezierCurve3=!0,this.type="QuadraticBezierCurve3",this.v0=e,this.v1=t,this.v2=n}getPoint(e,t=new eg){let n=this.v0,i=this.v1,r=this.v2;return t.set(rq(e,n.x,i.x,r.x),rq(e,n.y,i.y,r.y),rq(e,n.z,i.z,r.z)),t}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class r1 extends rO{constructor(e=[]){super(),this.isSplineCurve=!0,this.type="SplineCurve",this.points=e}getPoint(e,t=new ef){let n=this.points,i=(n.length-1)*e,r=Math.floor(i),a=i-r,s=n[0===r?r:r-1],o=n[r],l=n[r>n.length-2?n.length-1:r+1],u=n[r>n.length-3?n.length-1:r+2];return t.set(rX(a,s.x,o.x,l.x,u.x),rX(a,s.y,o.y,l.y,u.y)),t}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){let n=e.points[t];this.points.push(n.clone())}return this}toJSON(){let e=super.toJSON();e.points=[];for(let t=0,n=this.points.length;t<n;t++){let n=this.points[t];e.points.push(n.toArray())}return e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){let n=e.points[t];this.points.push(new ef().fromArray(n))}return this}}var r2=Object.freeze({__proto__:null,ArcCurve:rz,CatmullRomCurve3:rW,CubicBezierCurve:rZ,CubicBezierCurve3:rJ,EllipseCurve:rk,LineCurve:r$,LineCurve3:rK,QuadraticBezierCurve:rQ,QuadraticBezierCurve3:r0,SplineCurve:r1});class r3 extends rO{constructor(){super(),this.type="CurvePath",this.curves=[],this.autoClose=!1}add(e){this.curves.push(e)}closePath(){let e=this.curves[0].getPoint(0),t=this.curves[this.curves.length-1].getPoint(1);if(!e.equals(t)){let n=!0===e.isVector2?"LineCurve":"LineCurve3";this.curves.push(new r2[n](t,e))}return this}getPoint(e,t){let n=e*this.getLength(),i=this.getCurveLengths(),r=0;for(;r<i.length;){if(i[r]>=n){let e=i[r]-n,a=this.curves[r],s=a.getLength(),o=0===s?0:1-e/s;return a.getPointAt(o,t)}r++}return null}getLength(){let 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;let e=[],t=0;for(let n=0,i=this.curves.length;n<i;n++)e.push(t+=this.curves[n].getLength());return this.cacheLengths=e,e}getSpacedPoints(e=40){let t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return this.autoClose&&t.push(t[0]),t}getPoints(e=12){let t,n=[];for(let i=0,r=this.curves;i<r.length;i++){let a=r[i],s=a.isEllipseCurve?2*e:a.isLineCurve||a.isLineCurve3?1:a.isS
36plineCurve?e*a.points.length:e,o=a.getPoints(s);for(let e=0;e<o.length;e++){let i=o[e];t&&t.equals(i)||(n.push(i),t=i)}}return this.autoClose&&n.length>1&&!n[n.length-1].equals(n[0])&&n.push(n[0]),n}copy(e){super.copy(e),this.curves=[];for(let t=0,n=e.curves.length;t<n;t++){let n=e.curves[t];this.curves.push(n.clone())}return this.autoClose=e.autoClose,this}toJSON(){let e=super.toJSON();e.autoClose=this.autoClose,e.curves=[];for(let t=0,n=this.curves.length;t<n;t++){let n=this.curves[t];e.curves.push(n.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.autoClose=e.autoClose,this.curves=[];for(let t=0,n=e.curves.length;t<n;t++){let n=e.curves[t];this.curves.push(new r2[n.type]().fromJSON(n))}return this}}class r5 extends r3{constructor(e){super(),this.type="Path",this.currentPoint=new ef,e&&this.setFromPoints(e)}setFromPoints(e){this.moveTo(e[0].x,e[0].y);for(let t=1,n=e.length;t<n;t++)this.lineTo(e[t].x,e[t].y);return this}moveTo(e,t){return this.currentPoint.set(e,t),this}lineTo(e,t){let n=new r$(this.currentPoint.clone(),new ef(e,t));return this.curves.push(n),this.currentPoint.set(e,t),this}quadraticCurveTo(e,t,n,i){let r=new rQ(this.currentPoint.clone(),new ef(e,t),new ef(n,i));return this.curves.push(r),this.currentPoint.set(n,i),this}bezierCurveTo(e,t,n,i,r,a){let s=new rZ(this.currentPoint.clone(),new ef(e,t),new ef(n,i),new ef(r,a));return this.curves.push(s),this.currentPoint.set(r,a),this}splineThru(e){let t=new r1([this.currentPoint.clone()].concat(e));return this.curves.push(t),this.currentPoint.copy(e[e.length-1]),this}arc(e,t,n,i,r,a){let s=this.currentPoint.x,o=this.currentPoint.y;return this.absarc(e+s,t+o,n,i,r,a),this}absarc(e,t,n,i,r,a){return this.absellipse(e,t,n,n,i,r,a),this}ellipse(e,t,n,i,r,a,s,o){let l=this.currentPoint.x,u=this.currentPoint.y;return this.absellipse(e+l,t+u,n,i,r,a,s,o),this}absellipse(e,t,n,i,r,a,s,o){let l=new rk(e,t,n,i,r,a,s,o);if(this.curves.length>0){let e=l.getPoint(0);e.equals(this.currentPoint)||this.lineTo(e.x,e.y)}this.curves.push(l);let u=l.getPoint(1);return this.currentPoint.copy(u),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){let e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}}class r4 extends r5{constructor(e){super(e),this.uuid=eo(),this.type="Shape",this.holes=[]}getPointsHoles(e){let t=[];for(let n=0,i=this.holes.length;n<i;n++)t[n]=this.holes[n].getPoints(e);return t}extractPoints(e){return{shape:this.getPoints(e),holes:this.getPointsHoles(e)}}copy(e){super.copy(e),this.holes=[];for(let t=0,n=e.holes.length;t<n;t++){let n=e.holes[t];this.holes.push(n.clone())}return this}toJSON(){let e=super.toJSON();e.uuid=this.uuid,e.holes=[];for(let t=0,n=this.holes.length;t<n;t++){let n=this.holes[t];e.holes.push(n.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.uuid=e.uuid,this.holes=[];for(let t=0,n=e.holes.length;t<n;t++){let n=e.holes[t];this.holes.push(new r5().fromJSON(n))}return this}}function r6(e,t,n,i,r){let a;if(r===function(e,t,n,i){let r=0;for(let a=t,s=n-i;a<n;a+=i)r+=(e[s]-e[a])*(e[a+1]+e[s+1]),s=a;return r}(e,t,n,i)>0)for(let r=t;r<n;r+=i)a=au(r/i|0,e[r],e[r+1],a);else for(let r=n-i;r>=t;r-=i)a=au(r/i|0,e[r],e[r+1],a);return a&&ai(a,a.next)&&(ac(a),a=a.next),a}function r8(e,t){if(!e)return e;t||(t=e);let n=e,i;do if(i=!1,!n.steiner&&(ai(n,n.next)||0===an(n.prev,n,n.next))){if(ac(n),(n=t=n.prev)===n.next)break;i=!0}else n=n.next;while(i||n!==t)return t}function r7(e,t){let n=e.x-t.x;return 0===n&&0==(n=e.y-t.y)&&(n=(e.next.y-e.y)/(e.next.x-e.x)-(t.next.y-t.y)/(t.next.x-t.x)),n}function r9(e,t,n,i,r){return(e=((e=((e=((e=((e=(e-n)*r|0)|e<<8)&0xff00ff)|e<<4)&0xf0f0f0f)|e<<2)&0x33333333)|e<<1)&0x55555555)|(t=((t=((t=((t=((t=(t-i)*r|0)|t<<8)&0xff00ff)|t<<4)&0xf0f0f0f)|t<<2)&0x33333333)|t<<1)&0x55555555)<<1}function ae(e,t,n,i,r,a,s,o){return(r-s)*(t-o)>=(e-s)*(a-o)&&(e-s)*(i-o)>=(n-s)*(t-o)&&(n-s)*(a-o)>=(r-s)*(i-o)}function at(e,t,n,i,r,a,s,o){return(e!==s||t!==o)&&ae(e,t,n,i,r,a,s,o)}function an(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function ai(e,t){return e.x===t.x&&e.y===t.y}function ar(e,t,n,i){let r=as(an(e,t,n)),a=as(an(e,t,i)),s=as(an(n,i,e)),o=as(an(n,i,t));return!!(r!==a&&s!==o||0===r&&aa(e,n,t)||0===a&&aa(e,i,t)||0===s&&aa(n,e,i)||0===o&&aa(n,t,i))}
36function aa(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function as(e){return e>0?1:e<0?-1:0}function ao(e,t){return 0>an(e.prev,e,e.next)?an(e,t,e.next)>=0&&an(e,e.prev,t)>=0:0>an(e,t,e.prev)||0>an(e,e.next,t)}function al(e,t){let n=ah(e.i,e.x,e.y),i=ah(t.i,t.x,t.y),r=e.next,a=t.prev;return e.next=t,t.prev=e,n.next=r,r.prev=n,i.next=n,n.prev=i,a.next=i,i.prev=a,i}function au(e,t,n,i){let r=ah(e,t,n);return i?(r.next=i.next,r.prev=i,i.next.prev=r,i.next=r):(r.prev=r,r.next=r),r}function ac(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function ah(e,t,n){return{i:e,x:t,y:n,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}class ad{static triangulate(e,t,n=2){return function(e,t,n=2){let i,r,a,s=t&&t.length,o=s?t[0]*n:e.length,l=r6(e,0,o,n,!0),u=[];if(!l||l.next===l.prev)return u;if(s&&(l=function(e,t,n,i){let r=[];for(let n=0,a=t.length;n<a;n++){let s=t[n]*i,o=n<a-1?t[n+1]*i:e.length,l=r6(e,s,o,i,!1);l===l.next&&(l.steiner=!0),r.push(function(e){let t=e,n=e;do(t.x<n.x||t.x===n.x&&t.y<n.y)&&(n=t),t=t.next;while(t!==e)return n}(l))}r.sort(r7);for(let e=0;e<r.length;e++)n=function(e,t){let n=function(e,t){let n,i=t,r=e.x,a=e.y,s=-1/0;if(ai(e,i))return i;do{if(ai(e,i.next))return i.next;if(a<=i.y&&a>=i.next.y&&i.next.y!==i.y){let e=i.x+(a-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(e<=r&&e>s&&(s=e,n=i.x<i.next.x?i:i.next,e===r))return n}i=i.next}while(i!==t)if(!n)return null;let o=n,l=n.x,u=n.y,c=1/0;i=n;do{if(r>=i.x&&i.x>=l&&r!==i.x&&ae(a<u?r:s,a,l,u,a<u?s:r,a,i.x,i.y)){var h,d;let t=Math.abs(a-i.y)/(r-i.x);ao(i,e)&&(t<c||t===c&&(i.x>n.x||i.x===n.x&&(h=n,d=i,0>an(h.prev,h,d.prev)&&0>an(d.next,h,h.next))))&&(n=i,c=t)}i=i.next}while(i!==o)return n}(e,t);if(!n)return t;let i=al(n,e);return r8(i,i.next),r8(n,n.next)}(r[e],n);return n}(e,t,l,n)),e.length>80*n){i=e[0],r=e[1];let t=i,s=r;for(let a=n;a<o;a+=n){let n=e[a],o=e[a+1];n<i&&(i=n),o<r&&(r=o),n>t&&(t=n),o>s&&(s=o)}a=0!==(a=Math.max(t-i,s-r))?32767/a:0}return function e(t,n,i,r,a,s,o){if(!t)return;!o&&s&&function(e,t,n,i){let r=e;do 0===r.z&&(r.z=r9(r.x,r.y,t,n,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next;while(r!==e)r.prevZ.nextZ=null,r.prevZ=null,function(e){let t,n=1;do{let i,r=e;e=null;let a=null;for(t=0;r;){t++;let s=r,o=0;for(let e=0;e<n&&(o++,s=s.nextZ);e++);let l=n;for(;o>0||l>0&&s;)0!==o&&(0===l||!s||r.z<=s.z)?(i=r,r=r.nextZ,o--):(i=s,s=s.nextZ,l--),a?a.nextZ=i:e=i,i.prevZ=a,a=i;r=s}a.nextZ=null,n*=2}while(t>1)}(r)}(t,r,a,s);let l=t;for(;t.prev!==t.next;){let u=t.prev,c=t.next;if(s?function(e,t,n,i){let r=e.prev,a=e.next;if(an(r,e,a)>=0)return!1;let s=r.x,o=e.x,l=a.x,u=r.y,c=e.y,h=a.y,d=Math.min(s,o,l),p=Math.min(u,c,h),f=Math.max(s,o,l),m=Math.max(u,c,h),g=r9(d,p,t,n,i),v=r9(f,m,t,n,i),x=e.prevZ,y=e.nextZ;for(;x&&x.z>=g&&y&&y.z<=v;){if(x.x>=d&&x.x<=f&&x.y>=p&&x.y<=m&&x!==r&&x!==a&&at(s,u,o,c,l,h,x.x,x.y)&&an(x.prev,x,x.next)>=0||(x=x.prevZ,y.x>=d&&y.x<=f&&y.y>=p&&y.y<=m&&y!==r&&y!==a&&at(s,u,o,c,l,h,y.x,y.y)&&an(y.prev,y,y.next)>=0))return!1;y=y.nextZ}for(;x&&x.z>=g;){if(x.x>=d&&x.x<=f&&x.y>=p&&x.y<=m&&x!==r&&x!==a&&at(s,u,o,c,l,h,x.x,x.y)&&an(x.prev,x,x.next)>=0)return!1;x=x.prevZ}for(;y&&y.z<=v;){if(y.x>=d&&y.x<=f&&y.y>=p&&y.y<=m&&y!==r&&y!==a&&at(s,u,o,c,l,h,y.x,y.y)&&an(y.prev,y,y.next)>=0)return!1;y=y.nextZ}return!0}(t,r,a,s):function(e){let t=e.prev,n=e.next;if(an(t,e,n)>=0)return!1;let i=t.x,r=e.x,a=n.x,s=t.y,o=e.y,l=n.y,u=Math.min(i,r,a),c=Math.min(s,o,l),h=Math.max(i,r,a),d=Math.max(s,o,l),p=n.next;for(;p!==t;){if(p.x>=u&&p.x<=h&&p.y>=c&&p.y<=d&&at(i,s,r,o,a,l,p.x,p.y)&&an(p.prev,p,p.next)>=0)return!1;p=p.next}return!0}(t)){n.push(u.i,t.i,c.i),ac(t),t=c.next,l=c.next;continue}if((t=c)===l){o?1===o?e(t=function(e,t){let n=e;do{let i=n.prev,r=n.next.next;!ai(i,r)&&ar(i,n,n.next,r)&&ao(i,r)&&ao(r,i)&&(t.push(i.i,n.i,r.i),ac(n),ac(n.next),n=e=r),n=n.next}while(n!==e)return r8(n)}(r8(t),n),n,i,r,a,s,2):2===o&&function(t,n,i,r,a,s){let o=t;do{let t=o.next.next;for(;t!==o.prev;){var l,u;if(o.i!==t.i&&(l=o,u=t,l.next.i!==u.i&&l.prev.i!==u.i&&!function(e,t){let n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&ar(n,n.next,e,t))return!0;n=n.next}while(n!==e)return!1}(l,u)&&(ao(l,u)&&ao(u,l)&&function(e,t){let n=e,i=!1,r=(e.x+t.x)/2,a=(e.y+t.y)/2;do n.y>a!=n.next.y>a&&n.next.y!==n.y&&r<(n.next.x-n.x)*(a-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next;while(n!==e)return i}(l,u)&&(an(l.prev,l,u.prev)||an(l,u.prev,u))||ai(l,u)&&an(l.prev,l,l.next)>0&&an(u.prev,u,u.next)>0))){let l=al(o,t);
36o=r8(o,o.next),l=r8(l,l.next),e(o,n,i,r,a,s,0),e(l,n,i,r,a,s,0);return}t=t.next}o=o.next}while(o!==t)}(t,n,i,r,a,s):e(r8(t),n,i,r,a,s,1);break}}}(l,u,n,i,r,a,0),u}(e,t,n)}}class ap{static area(e){let t=e.length,n=0;for(let i=t-1,r=0;r<t;i=r++)n+=e[i].x*e[r].y-e[r].x*e[i].y;return .5*n}static isClockWise(e){return 0>ap.area(e)}static triangulateShape(e,t){let n=[],i=[],r=[];af(e),am(n,e);let a=e.length;t.forEach(af);for(let e=0;e<t.length;e++)i.push(a),a+=t[e].length,am(n,t[e]);let s=ad.triangulate(n,i);for(let e=0;e<s.length;e+=3)r.push(s.slice(e,e+3));return r}}function af(e){let t=e.length;t>2&&e[t-1].equals(e[0])&&e.pop()}function am(e,t){for(let n=0;n<t.length;n++)e.push(t[n].x),e.push(t[n].y)}class ag extends nf{constructor(e=new r4([new ef(.5,.5),new ef(-.5,.5),new ef(-.5,-.5),new ef(.5,-.5)]),t={}){super(),this.type="ExtrudeGeometry",this.parameters={shapes:e,options:t},e=Array.isArray(e)?e:[e];const n=this,i=[],r=[];for(let a=0,s=e.length;a<s;a++)!function(e){let a,s,o,l,u,c=[],h=void 0!==t.curveSegments?t.curveSegments:12,d=void 0!==t.steps?t.steps:1,p=void 0!==t.depth?t.depth:1,f=void 0===t.bevelEnabled||t.bevelEnabled,m=void 0!==t.bevelThickness?t.bevelThickness:.2,g=void 0!==t.bevelSize?t.bevelSize:m-.1,v=void 0!==t.bevelOffset?t.bevelOffset:0,x=void 0!==t.bevelSegments?t.bevelSegments:3,y=t.extrudePath,_=void 0!==t.UVGenerator?t.UVGenerator:av,b,S=!1;if(y){b=y.getSpacedPoints(d),S=!0,f=!1;let e=!!y.isCatmullRomCurve3&&y.closed;a=y.computeFrenetFrames(d,e),s=new eg,o=new eg,l=new eg}f||(x=0,m=0,g=0,v=0);let M=e.extractPoints(h),w=M.shape,T=M.holes;if(!ap.isClockWise(w)){w=w.reverse();for(let e=0,t=T.length;e<t;e++){let t=T[e];ap.isClockWise(t)&&(T[e]=t.reverse())}}function E(e){let t=1e-10*1e-10,n=e[0];for(let i=1;i<=e.length;i++){let r=i%e.length,a=e[r],s=a.x-n.x,o=a.y-n.y,l=s*s+o*o,u=Math.max(Math.abs(a.x),Math.abs(a.y),Math.abs(n.x),Math.abs(n.y));if(l<=t*u*u){e.splice(r,1),i--;continue}n=a}}E(w),T.forEach(E);let C=T.length,A=w;for(let e=0;e<C;e++){let t=T[e];w=w.concat(t)}function R(e,t,n){return t||ee("ExtrudeGeometry: vec does not exist"),e.clone().addScaledVector(t,n)}let L=w.length;function P(e,t,n){let i,r,a,s=e.x-t.x,o=e.y-t.y,l=n.x-e.x,u=n.y-e.y,c=s*s+o*o;if(Math.abs(s*u-o*l)>Number.EPSILON){let h=Math.sqrt(c),d=Math.sqrt(l*l+u*u),p=t.x-o/h,f=t.y+s/h,m=((n.x-u/d-p)*u-(n.y+l/d-f)*l)/(s*u-o*l),g=(i=p+s*m-e.x)*i+(r=f+o*m-e.y)*r;if(g<=2)return new ef(i,r);a=Math.sqrt(g/2)}else{let e=!1;s>Number.EPSILON?l>Number.EPSILON&&(e=!0):s<-Number.EPSILON?l<-Number.EPSILON&&(e=!0):Math.sign(o)===Math.sign(u)&&(e=!0),e?(i=-o,r=s,a=Math.sqrt(c)):(i=s,r=o,a=Math.sqrt(c/2))}return new ef(i/a,r/a)}let I=[];for(let e=0,t=A.length,n=t-1,i=e+1;e<t;e++,n++,i++)n===t&&(n=0),i===t&&(i=0),I[e]=P(A[e],A[n],A[i]);let N=[],D,U=I.concat();for(let e=0;e<C;e++){let t=T[e];D=[];for(let e=0,n=t.length,i=n-1,r=e+1;e<n;e++,i++,r++)i===n&&(i=0),r===n&&(r=0),D[e]=P(t[e],t[i],t[r]);N.push(D),U=U.concat(D)}if(0===x)u=ap.triangulateShape(A,T);else{let e=[],t=[];for(let n=0;n<x;n++){let i=n/x,r=m*Math.cos(i*Math.PI/2),a=g*Math.sin(i*Math.PI/2)+v;for(let t=0,n=A.length;t<n;t++){let n=R(A[t],I[t],a);z(n.x,n.y,-r),0===i&&e.push(n)}for(let e=0;e<C;e++){let n=T[e];D=N[e];let s=[];for(let e=0,t=n.length;e<t;e++){let t=R(n[e],D[e],a);z(t.x,t.y,-r),0===i&&s.push(t)}0===i&&t.push(s)}}u=ap.triangulateShape(e,t)}let F=u.length,O=g+v;for(let e=0;e<L;e++){let t=f?R(w[e],U[e],O):w[e];S?(o.copy(a.normals[0]).multiplyScalar(t.x),s.copy(a.binormals[0]).multiplyScalar(t.y),l.copy(b[0]).add(o).add(s),z(l.x,l.y,l.z)):z(t.x,t.y,0)}for(let e=1;e<=d;e++)for(let t=0;t<L;t++){let n=f?R(w[t],U[t],O):w[t];S?(o.copy(a.normals[e]).multiplyScalar(n.x),s.copy(a.binormals[e]).multiplyScalar(n.y),l.copy(b[e]).add(o).add(s),z(l.x,l.y,l.z)):z(n.x,n.y,p/d*e)}for(let e=x-1;e>=0;e--){let t=e/x,n=m*Math.cos(t*Math.PI/2),i=g*Math.sin(t*Math.PI/2)+v;for(let e=0,t=A.length;e<t;e++){let t=R(A[e],I[e],i);z(t.x,t.y,p+n)}for(let e=0,t=T.length;e<t;e++){let t=T[e];D=N[e];for(let e=0,r=t.length;e<r;e++){let r=R(t[e],D[e],i);S?z(r.x,r.y+b[d-1].y,b[d-1].x+n):z(r.x,r.y,p+n)}}}function k(e,t){let r=e.length;for(;--r>=0;){let a=r,s=r-1;s<0&&(s=e.length-1);for(let e=0,r=d+2*x;e<r;e++){let r=L*e,o=L*(e+1);!function(e,t,r,a){V(e),V(t),V(a),V(t),V(r),V(a);let s=i.length/3,o=_.generateSideWallUV(n,i,s-6,s-3,s-2,s-1);H(o[0]),H(o[1]),H(o[3]),H(o[1]),H(o[2]),H(o[3])}(t+a+r,t+s+r,t+s+o,t+a+o)}}}function z(e,t,n){c.push(e),c.push(t),c.push(n)}function B(e,t,r){V(e),V(t),V(r);let a=i.length/3,s=_.generateTopUV(n,i,a-3,a-2,a-1);H(s[0]),H(s[1]),H(s[2])}function V(e){i.push(c[3*e+0]),i.push(c[3*e+1]),i.push(c[3*e+2])}function H(e){r.push(e.x),r.push(e.y)}(function(){let e=i.length/3;if(f){let e=0*L;for(let t=0;t<F;t++){let n=u[t];B(n[2]+e,n[1]+e,n[0]+e)}e=L*(d+2*x);for(let t=0;t<F;t++){let n=u[t];B(n[0]+e,n[1]+e,n[2]+e)}}else{for(let e=0;e<F;e++){let t=u[e];B(t[2],t[1],t[0])}for(let e=0;e<F;e++){let t=u[e];B(t[0]+L*d,t[1]+L*d,t[2]+L*d)}}n.addGroup(e,i.length/3-e,0)})(),function(){let e=i.length/3,t=0;k(A,0),t+=A.length;for(let e=0,n=T.length;e<n;e++){let n=T[e];k(n,t),t+=n.length}n.addGroup(e,i.length/3-e,1)}()}(e[a]);this.setAttribute("position",new ns(i,3)),this.setAttribute("uv",new ns(r,2)),this.computeVertexNormals()}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}toJSON(){let e=super.toJSON();return function(e,t,n){if(n.shapes=[],Array.isArray(e))for(let t=0,i=e.length;t<i;t++){let i=e[t];n.shapes.push(i.uuid)}else n.shapes.push(e.uuid);return n.options=Object.assign({},t),void 0!==t.extrudePath&&(n.options.extrudePath=t.extrudePath.toJSON()),n}(this.parameters.shapes,this.parameters.options,e)}static fromJSON(e,t){let n=[];for(let i=0,r=e.shapes.length;i<r;i++){let r=t[e.shapes[i]];n.push(r)}let i=e.options.extrudePath;return void 0!==i&&(e.options.extrudePath=new r2[i.type]().fromJSON(i)),new ag(n,e.options)}}let av={generateTopUV:function(e,t,n,i,r){let a=t[3*n],s=t[3*n+1],o=t[3*i],l=t[3*i+1],u=t[3*r],c=t[3*r+1];return[new ef(a,s),new ef(o,l),new ef(u,c)]},generateSideWallUV:function(e,t,n,i,r,a){let s=t[3*n],o=t[3*n+1],l=t[3*n+2],u=t[3*i],c=t[3*i+1],h=t[3*i+2],d=t[3*r],p=t[3*r+1],f=t[3*r+2],m=t[3*a],g=t[3*a+1],v=t[3*a+2];return Math.abs(o-c)<Math.abs(s-u)?[new ef(s,1-l),new ef(u,1-h),new ef(d,1-f),new ef(m,1-v)]:[new ef(o,1-l),new ef(c,1-h),new ef(p,1-f),new ef(g,1-v)]}};class ax extends rL{constructor(e=1,t=0){const n=(1+Math.sqrt(5))/2;super([-1,n,0,1,n,0,-1,-n,0,1,-n,0,0,-1,n,0,1,n,0,-1,-n,0,1,-n,n,0,-1,n,0,1,-n,0,-1,-n,0,1],[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],e,t),this.type="IcosahedronGeometry",this.parameters={radiu
vendor: 23,623 bytes, line 36
36s:e,detail:t}}static fromJSON(e){return new ax(e.radius,e.detail)}}class ay extends nf{constructor(e=[new ef(0,-.5),new ef(.5,0),new ef(0,.5)],t=12,n=0,i=2*Math.PI){super(),this.type="LatheGeometry",this.parameters={points:e,segments:t,phiStart:n,phiLength:i},t=Math.floor(t),i=el(i,0,2*Math.PI);const r=[],a=[],s=[],o=[],l=[],u=1/t,c=new eg,h=new ef,d=new eg,p=new eg,f=new eg;let m=0,g=0;for(let t=0;t<=e.length-1;t++)switch(t){case 0:m=e[t+1].x-e[t].x,d.x=+(g=e[t+1].y-e[t].y),d.y=-m,d.z=0*g,f.copy(d),d.normalize(),o.push(d.x,d.y,d.z);break;case e.length-1:o.push(f.x,f.y,f.z);break;default:m=e[t+1].x-e[t].x,d.x=+(g=e[t+1].y-e[t].y),d.y=-m,d.z=0*g,p.copy(d),d.x+=f.x,d.y+=f.y,d.z+=f.z,d.normalize(),o.push(d.x,d.y,d.z),f.copy(p)}for(let r=0;r<=t;r++){const d=n+r*u*i,p=Math.sin(d),f=Math.cos(d);for(let n=0;n<=e.length-1;n++){c.x=e[n].x*p,c.y=e[n].y,c.z=e[n].x*f,a.push(c.x,c.y,c.z),h.x=r/t,h.y=n/(e.length-1),s.push(h.x,h.y);const i=o[3*n+0]*p,u=o[3*n+1],d=o[3*n+0]*f;l.push(i,u,d)}}for(let n=0;n<t;n++)for(let t=0;t<e.length-1;t++){const i=t+n*e.length,a=i+e.length,s=i+e.length+1,o=i+1;r.push(i,a,o),r.push(s,o,a)}this.setIndex(r),this.setAttribute("position",new ns(a,3)),this.setAttribute("uv",new ns(s,2)),this.setAttribute("normal",new ns(l,3))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new ay(e.points,e.segments,e.phiStart,e.phiLength)}}class a_ extends rL{constructor(e=1,t=0){super([1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],e,t),this.type="OctahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new a_(e.radius,e.detail)}}class ab extends nf{constructor(e=1,t=1,n=1,i=1){super(),this.type="PlaneGeometry",this.parameters={width:e,height:t,widthSegments:n,heightSegments:i};const r=e/2,a=t/2,s=Math.floor(n),o=Math.floor(i),l=s+1,u=o+1,c=e/s,h=t/o,d=[],p=[],f=[],m=[];for(let e=0;e<u;e++){const t=e*h-a;for(let n=0;n<l;n++){const i=n*c-r;p.push(i,-t,0),f.push(0,0,1),m.push(n/s),m.push(1-e/o)}}for(let e=0;e<o;e++)for(let t=0;t<s;t++){const n=t+l*e,i=t+l*(e+1),r=t+1+l*(e+1),a=t+1+l*e;d.push(n,i,a),d.push(i,r,a)}this.setIndex(d),this.setAttribute("position",new ns(p,3)),this.setAttribute("normal",new ns(f,3)),this.setAttribute("uv",new ns(m,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new ab(e.width,e.height,e.widthSegments,e.heightSegments)}}class aS extends nf{constructor(e=.5,t=1,n=32,i=1,r=0,a=2*Math.PI){super(),this.type="RingGeometry",this.parameters={innerRadius:e,outerRadius:t,thetaSegments:n,phiSegments:i,thetaStart:r,thetaLength:a},n=Math.max(3,n);const s=[],o=[],l=[],u=[];let c=e;const h=(t-e)/(i=Math.max(1,i)),d=new eg,p=new ef;for(let e=0;e<=i;e++){for(let e=0;e<=n;e++){const i=r+e/n*a;d.x=c*Math.cos(i),d.y=c*Math.sin(i),o.push(d.x,d.y,d.z),l.push(0,0,1),p.x=(d.x/t+1)/2,p.y=(d.y/t+1)/2,u.push(p.x,p.y)}c+=h}for(let e=0;e<i;e++){const t=e*(n+1);for(let e=0;e<n;e++){const i=e+t,r=i+n+1,a=i+n+2,o=i+1;s.push(i,r,o),s.push(r,a,o)}}this.setIndex(s),this.setAttribute("position",new ns(o,3)),this.setAttribute("normal",new ns(l,3)),this.setAttribute("uv",new ns(u,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new aS(e.innerRadius,e.outerRadius,e.thetaSegments,e.phiSegments,e.thetaStart,e.thetaLength)}}class aM extends nf{constructor(e=new r4([new ef(0,.5),new ef(-.5,-.5),new ef(.5,-.5)]),t=12){super(),this.type="ShapeGeometry",this.parameters={shapes:e,curveSegments:t};const n=[],i=[],r=[],a=[];let s=0,o=0;if(!1===Array.isArray(e))l(e);else for(let t=0;t<e.length;t++)l(e[t]),this.addGroup(s,o,t),s+=o,o=0;function l(e){let s=i.length/3,l=e.extractPoints(t),u=l.shape,c=l.holes;!1===ap.isClockWise(u)&&(u=u.reverse());for(let e=0,t=c.length;e<t;e++){let t=c[e];!0===ap.isClockWise(t)&&(c[e]=t.reverse())}let h=ap.triangulateShape(u,c);for(let e=0,t=c.length;e<t;e++){let t=c[e];u=u.concat(t)}for(let e=0,t=u.length;e<t;e++){let t=u[e];i.push(t.x,t.y,0),r.push(0,0,1),a.push(t.x,t.y)}for(let e=0,t=h.length;e<t;e++){let t=h[e],i=t[0]+s,r=t[1]+s,a=t[2]+s;n.push(i,r,a),o+=3}}this.setIndex(n),this.setAttribute("position",new ns(i,3)),this.setAttribute("normal",new ns(r,3)),this.setAttribute("uv",new ns(a,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}toJSON(){let e=super.toJSON();return function(e,t){if(t.shapes=[],Array.isArray(e))for(let n=0,i=e.length;n<i;n++){let i=e[n];t.shapes.push(i.uuid)}else t.shapes.push(e.uuid);return t}(this.parameters.shapes,e)}static fromJSON(e,t){let n=[];for(let i=0,r=e.shapes.length;i<r;i++){let r=t[e.shapes[i]];n.push(r)}return new aM(n,e.curveSegments)}}class aw extends nf{constructor(e=1,t=32,n=16,i=0,r=2*Math.PI,a=0,s=Math.PI){super(),this.type="SphereGeometry",this.parameters={radius:e,widthSegments:t,heightSegments:n,phiStart:i,phiLength:r,thetaStart:a,thetaLength:s},t=Math.max(3,Math.floor(t)),n=Math.max(2,Math.floor(n));const o=Math.min(a+s,Math.PI);let l=0;const u=[],c=new eg,h=new eg,d=[],p=[],f=[],m=[];for(let d=0;d<=n;d++){const g=[],v=d/n;let x=0;0===d&&0===a?x=.5/t:d===n&&o===Math.PI&&(x=-.5/t);for(let n=0;n<=t;n++){const o=n/t;c.x=-e*Math.cos(i+o*r)*Math.sin(a+v*s),c.y=e*Math.cos(a+v*s),c.z=e*Math.sin(i+o*r)*Math.sin(a+v*s),p.push(c.x,c.y,c.z),h.copy(c).normalize(),f.push(h.x,h.y,h.z),m.push(o+x,1-v),g.push(l++)}u.push(g)}for(let e=0;e<n;e++)for(let i=0;i<t;i++){const t=u[e][i+1],r=u[e][i],s=u[e+1][i],l=u[e+1][i+1];(0!==e||a>0)&&d.push(t,r,l),(e!==n-1||o<Math.PI)&&d.push(r,s,l)}this.setIndex(d),this.setAttribute("position",new ns(p,3)),this.setAttribute("normal",new ns(f,3)),this.setAttribute("uv",new ns(m,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new aw(e.radius,e.widthSegments,e.heightSegments,e.phiStart,e.phiLength,e.thetaStart,e.thetaLength)}}class aT extends rL{constructor(e=1,t=0){super([1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],e,t),this.type="TetrahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new aT(e.radius,e.detail)}}class aE extends nf{constructor(e=1,t=.4,n=12,i=48,r=2*Math.PI){super(),this.type="TorusGeometry",this.parameters={radius:e,tube:t,radialSegments:n,tubularSegments:i,arc:r},n=Math.floor(n),i=Math.floor(i);const a=[],s=[],o=[],l=[],u=new eg,c=new eg,h=new eg;for(let a=0;a<=n;a++)for(let d=0;d<=i;d++){const p=d/i*r,f=a/n*Math.PI*2;c.x=(e+t*Math.cos(f))*Math.cos(p),c.y=(e+t*Math.cos(f))*Math.sin(p),c.z=t*Math.sin(f),s.push(c.x,c.y,c.z),u.x=e*Math.cos(p),u.y=e*Math.sin(p),h.subVectors(c,u).normalize(),o.push(h.x,h.y,h.z),l.push(d/i),l.push(a/n)}for(let e=1;e<=n;e++)for(let t=1;t<=i;t++){const n=(i+1)*e+t-1,r=(i+1)*(e-1)+t-1,s=(i+1)*(e-1)+t,o=(i+1)*e+t;a.push(n,r,o),a.push(r,s,o)}this.setIndex(a),this.setAttribute("position",new ns(s,3)),this.setAttribute("normal",new ns(o,3)),this.setAttribute("uv",new ns(l,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new aE(e.radius,e.tube,e.radialSegments,e.tubularSegments,e.arc)}}class aC extends nf{constructor(e=1,t=.4,n=64,i=8,r=2,a=3){super(),this.type="TorusKnotGeometry",this.parameters={radius:e,tube:t,tubularSegments:n,radialSegments:i,p:r,q:a},n=Math.floor(n),i=Math.floor(i);const s=[],o=[],l=[],u=[],c=new eg,h=new eg,d=new eg,p=new eg,f=new eg,m=new eg,g=new eg;for(let s=0;s<=n;++s){const x=s/n*r*Math.PI*2;v(x,r,a,e,d),v(x+.01,r,a,e,p),m.subVectors(p,d),g.addVectors(p,d),f.crossVectors(m,g),g.crossVectors(f,m),f.normalize(),g.normalize();for(let e=0;e<=i;++e){const r=e/i*Math.PI*2,a=-t*Math.cos(r),p=t*Math.sin(r);c.x=d.x+(a*g.x+p*f.x),c.y=d.y+(a*g.y+p*f.y),c.z=d.z+(a*g.z+p*f.z),o.push(c.x,c.y,c.z),h.subVectors(c,d).normalize(),l.push(h.x,h.y,h.z),u.push(s/n),u.push(e/i)}}for(let e=1;e<=n;e++)for(let t=1;t<=i;t++){const n=(i+1)*(e-1)+(t-1),r=(i+1)*e+(t-1),a=(i+1)*e+t,o=(i+1)*(e-1)+t;s.push(n,r,o),s.push(r,a,o)}function v(e,t,n,i,r){let a=Math.cos(e),s=Math.sin(e),o=n/t*e,l=Math.cos(o);r.x=i*(2+l)*.5*a,r.y=i*(2+l)*s*.5,r.z=i*Math.sin(o)*.5}this.setIndex(s),this.setAttribute("position",new ns(o,3)),this.setAttribute("normal",new ns(l,3)),this.setAttribute("uv",new ns(u,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new aC(e.radius,e.tube,e.tubularSegments,e.radialSegments,e.p,e.q)}}class aA extends nf{constructor(e=new r0(new eg(-1,-1,0),new eg(-1,1,0),new eg(1,1,0)),t=64,n=1,i=8,r=!1){super(),this.type="TubeGeometry",this.parameters={path:e,tubularSegments:t,radius:n,radialSegments:i,closed:r};const a=e.computeFrenetFrames(t,r);this.tangents=a.tangents,this.normals=a.normals,this.binormals=a.binormals;const s=new eg,o=new eg,l=new ef;let u=new eg;const c=[],h=[],d=[],p=[];function f(r){u=e.getPointAt(r/t,u);let l=a.normals[r],d=a.binormals[r];for(let e=0;e<=i;e++){let t=e/i*Math.PI*2,r=Math.sin(t),a=-Math.cos(t);o.x=a*l.x+r*d.x,o.y=a*l.y+r*d.y,o.z=a*l.z+r*d.z,o.normalize(),h.push(o.x,o.y,o.z),s.x=u.x+n*o.x,s.y=u.y+n*o.y,s.z=u.z+n*o.z,c.push(s.x,s.y,s.z)}}(function(){for(let e=0;e<t;e++)f(e);f(!1===r?t:0),function(){for(let e=0;e<=t;e++)for(let n=0;n<=i;n++)l.x=e/t,l.y=n/i,d.push(l.x,l.y)}(),function(){for(let e=1;e<=t;e++)for(let t=1;t<=i;t++){let n=(i+1)*(e-1)+(t-1),r=(i+1)*e+(t-1),a=(i+1)*e+t,s=(i+1)*(e-1)+t;p.push(n,r,s),p.push(r,a,s)}}()})(),this.setIndex(p),this.setAttribute("position",new ns(c,3)),this.setAttribute("normal",new ns(h,3)),this.setAttribute("uv",new ns(d,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}toJSON(){let e=super.toJSON();return e.path=this.parameters.path.toJSON(),e}static fromJSON(e){return new aA(new r2[e.path.type]().fromJSON(e.path),e.tubularSegments,e.radius,e.radialSegments,e.closed)}}class aR extends nf{constructor(e=null){if(super(),this.type="WireframeGeometry",this.parameters={geometry:e},null!==e){const t=[],n=new Set,i=new eg,r=new eg;if(null!==e.index){const a=e.attributes.position,s=e.index;let o=e.groups;0===o.length&&(o=[{start:0,count:s.count,materialIndex:0}]);for(let e=0,l=o.length;e<l;++e){const l=o[e],u=l.start,c=l.count;for(let e=u,o=u+c;e<o;e+=3)for(let o=0;o<3;o++){const l=s.getX(e+o),u=s.getX(e+(o+1)%3);i.fromBufferAttribute(a,l),r.fromBufferAttribute(a,u),!0===aL(i,r,n)&&(t.push(i.x,i.y,i.z),t.push(r.x,r.y,r.z))}}}else{const a=e.attributes.position;for(let e=0,s=a.count/3;e<s;e++)for(let s=0;s<3;s++){const o=3*e+s,l=3*e+(s+1)%3;i.fromBufferAttribute(a,o),r.fromBufferAttribute(a,l),!0===aL(i,r,n)&&(t.push(i.x,i.y,i.z),t.push(r.x,r.y,r.z))}}this.setAttribute("position",new ns(t,3))}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}}function aL(e,t,n){let i=`${e.x},${e.y},${e.z}-${t.x},${t.y},${t.z}`,r=`${t.x},${t.y},${t.z}-${e.x},${e.y},${e.z}`;return!0!==n.has(i)&&!0!==n.has(r)&&(n.add(i),n.add(r),!0)}var aP=Object.freeze({__proto__:null,BoxGeometry:nA,CapsuleGeometry:rE,CircleGeometry:rC,ConeGeometry:rR,CylinderGeometry:rA,DodecahedronGeometry:rP,EdgesGeometry:rF,ExtrudeGeometry:ag,IcosahedronGeometry:ax,LatheGeometry:ay,OctahedronGeometry:a_,PlaneGeometry:ab,PolyhedronGeometry:rL,RingGeometry:aS,ShapeGeometry:aM,SphereGeometry:aw,TetrahedronGeometry:aT,TorusGeometry:aE,TorusKnotGeometry:aC,TubeGeometry:aA,WireframeGeometry:aR});class aI extends tK{constructor(e){super(),this.isShadowMaterial=!0,this.type="ShadowMaterial",this.color=new tZ(0),this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.fog=e.fog,this}}class aN extends nN{constructor(e){super(e),this.isRawShaderMaterial=!0,this.type="RawShaderMaterial"}}class aD extends tK{constructor(e){super(),this.isMeshStandardMaterial=!0,this.type="MeshStandardMaterial",this.defines={STANDARD:""},this.color=new tZ(0xffffff),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new tZ(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new ef(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new tp,this.envMapIntensity=1,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.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,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.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.envMapIntensity=e.envMapIntensity,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 aU extends aD{constructor(e){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.anisotropyRotation=0,this.anisotropyMap=null,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new ef(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return el(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(e){this.ior=(1+.4*e)/(1-.4*e)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new tZ(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new tZ(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new tZ(1,1,1),this.specularColorMap=null,this._anisotropy=0,this._clearcoat=0,this._dispersion=0,this._iridescence=0,this._sheen=0,this._transmission=0,this.setValues(e)}get anisotropy(){return this._anisotropy}set anisotropy(e){this._anisotropy>0!=e>0&&this.version++,this._anisotropy=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 dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=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.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,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.dispersion=e.dispersion,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 aF extends tK{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new tZ(0xffffff),this.specular=new tZ(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new tZ(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new ef(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new tp,this.combine=0,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.envMapRotation.copy(e.envMapRotation),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 aO extends tK{constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new tZ(0xffffff),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new tZ(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new ef(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 ak extends tK{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new ef(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 az extends tK{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new tZ(0xffffff),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new tZ(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new ef(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new tp,this.combine=0,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.envMapRotation.copy(e.envMapRotation),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 aB extends tK{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=3200,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 aV extends tK{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}}
36class aH extends tK{constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new tZ(0xffffff),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new ef(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,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.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this.fog=e.fog,this}}class aj extends i4{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 aG(e,t){return e&&e.constructor!==t?"number"==typeof t.BYTES_PER_ELEMENT?new t(e):Array.prototype.slice.call(e):e}function aW(e){let t=e.length,n=Array(t);for(let e=0;e!==t;++e)n[e]=e;return n.sort(function(t,n){return e[t]-e[n]}),n}function aX(e,t,n){let i=e.length,r=new e.constructor(i);for(let a=0,s=0;s!==i;++a){let i=n[a]*t;for(let n=0;n!==t;++n)r[s++]=e[i+n]}return r}function aq(e,t,n,i){let r=1,a=e[0];for(;void 0!==a&&void 0===a[i];)a=e[r++];if(void 0===a)return;let s=a[i];if(void 0!==s)if(Array.isArray(s))do void 0!==(s=a[i])&&(t.push(a.time),n.push(...s)),a=e[r++];while(void 0!==a)else if(void 0!==s.toArray)do void 0!==(s=a[i])&&(t.push(a.time),s.toArray(n,n.length)),a=e[r++];while(void 0!==a)else do void 0!==(s=a[i])&&(t.push(a.time),n.push(s)),a=e[r++];while(void 0!==a)}class aY{static convertArray(e,t){return aG(e,t)}static isTypedArray(e){return W(e)}static getKeyframeOrder(e){return aW(e)}static sortedArray(e,t,n){return aX(e,t,n)}static flattenJSON(e,t,n,i){aq(e,t,n,i)}static subclip(e,t,n,i,r=30){return function(e,t,n,i,r=30){let a=e.clone();a.name=t;let s=[];for(let e=0;e<a.tracks.length;++e){let t=a.tracks[e],o=t.getValueSize(),l=[],u=[];for(let e=0;e<t.times.length;++e){let a=t.times[e]*r;if(!(a<n)&&!(a>=i)){l.push(t.times[e]);for(let n=0;n<o;++n)u.push(t.values[e*o+n])}}0!==l.length&&(t.times=aG(l,t.times.constructor),t.values=aG(u,t.values.constructor),s.push(t))}a.tracks=s;let o=1/0;for(let e=0;e<a.tracks.length;++e)o>a.tracks[e].times[0]&&(o=a.tracks[e].times[0]);for(let e=0;e<a.tracks.length;++e)a.tracks[e].shift(-1*o);return a.resetDuration(),a}(e,t,n,i,r)}static makeClipAdditive(e,t=0,n=e,i=30){return function(e,t=0,n=e,i=30){i<=0&&(i=30);let r=n.tracks.length,a=t/i;for(let t=0;t<r;++t){let i,r=n.tracks[t],s=r.ValueTypeName;if("bool"===s||"string"===s)continue;let o=e.tracks.find(function(e){return e.name===r.name&&e.ValueTypeName===s});if(void 0===o)continue;let l=0,u=r.getValueSize();r.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(l=u/3);let c=0,h=o.getValueSize();o.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(c=h
36/3);let d=r.times.length-1;if(a<=r.times[0]){let e=l,t=u-l;i=r.values.slice(e,t)}else if(a>=r.times[d]){let e=d*u+l,t=e+u-l;i=r.values.slice(e,t)}else{let e=r.createInterpolant(),t=l,n=u-l;e.evaluate(a),i=e.resultBuffer.slice(t,n)}"quaternion"===s&&new em().fromArray(i).normalize().conjugate().toArray(i);let p=o.times.length;for(let e=0;e<p;++e){let t=e*h+c;if("quaternion"===s)em.multiplyQuaternionsFlat(o.values,t,i,0,o.values,t);else{let e=h-2*c;for(let n=0;n<e;++n)o.values[t+n]-=i[n]}}}return e.blendMode=2501,e}(e,t,n,i)}}class aZ{constructor(e,t,n,i){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=void 0!==i?i:new t.constructor(n),this.sampleValues=t,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(e){let t=this.parameterPositions,n=this._cachedIndex,i=t[n],r=t[n-1];n:{i:{let a;r:{a:if(!(e<i)){for(let a=n+2;;){if(void 0===i){if(e<r)break a;return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}if(n===a)break;if(r=i,e<(i=t[++n]))break i}a=t.length;break r}if(!(e>=r)){let s=t[1];e<s&&(n=2,r=s);for(let a=n-2;;){if(void 0===r)return this._cachedIndex=0,this.copySampleValue_(0);if(n===a)break;if(i=r,e>=(r=t[--n-1]))break i}a=n,n=0;break r}break n}for(;n<a;){let i=n+a>>>1;e<t[i]?a=i:n=i+1}if(i=t[n],void 0===(r=t[n-1]))return this._cachedIndex=0,this.copySampleValue_(0);if(void 0===i)return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}this._cachedIndex=n,this.intervalChanged_(n,r,i)}return this.interpolate_(n,r,e,i)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(e){let t=this.resultBuffer,n=this.sampleValues,i=this.valueSize,r=e*i;for(let e=0;e!==i;++e)t[e]=n[r+e];return t}interpolate_(){throw Error("call to abstract method")}intervalChanged_(){}}class aJ extends aZ{constructor(e,t,n,i){super(e,t,n,i),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:2400,endingEnd:2400}}intervalChanged_(e,t,n){let i=this.parameterPositions,r=e-2,a=e+1,s=i[r],o=i[a];if(void 0===s)switch(this.getSettings_().endingStart){case 2401:r=e,s=2*t-n;break;case 2402:r=i.length-2,s=t+i[r]-i[r+1];break;default:r=e,s=n}if(void 0===o)switch(this.getSettings_().endingEnd){case 2401:a=e,o=2*n-t;break;case 2402:a=1,o=n+i[1]-i[0];break;default:a=e-1,o=t}let l=(n-t)*.5,u=this.valueSize;this._weightPrev=l/(t-s),this._weightNext=l/(o-n),this._offsetPrev=r*u,this._offsetNext=a*u}interpolate_(e,t,n,i){let r=this.resultBuffer,a=this.sampleValues,s=this.valueSize,o=e*s,l=o-s,u=this._offsetPrev,c=this._offsetNext,h=this._weightPrev,d=this._weightNext,p=(n-t)/(i-t),f=p*p,m=f*p,g=-h*m+2*h*f-h*p,v=(1+h)*m+(-1.5-2*h)*f+(-.5+h)*p+1,x=(-1-d)*m+(1.5+d)*f+.5*p,y=d*m-d*f;for(let e=0;e!==s;++e)r[e]=g*a[u+e]+v*a[l+e]+x*a[o+e]+y*a[c+e];return r}}class a$ extends aZ{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t,n,i){let r=this.resultBuffer,a=this.sampleValues,s=this.valueSize,o=e*s,l=o-s,u=(n-t)/(i-t),c=1-u;for(let e=0;e!==s;++e)r[e]=a[l+e]*c+a[o+e]*u;return r}}class aK extends aZ{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e){return this.copySampleValue_(e-1)}}class aQ{constructor(e,t,n,i){if(void 0===e)throw Error("THREE.KeyframeTrack: track name is undefined");if(void 0===t||0===t.length)throw Error("THREE.KeyframeTrack: no keyframes in track named "+e);this.name=e,this.times=aG(t,this.TimeBufferType),this.values=aG(n,this.ValueBufferType),this.setInterpolation(i||this.DefaultInterpolation)}static toJSON(e){let t,n=e.constructor;if(n.toJSON!==this.toJSON)t=n.toJSON(e);else{t={name:e.name,times:aG(e.times,Array),values:aG(e.values,Array)};let n=e.getInterpolation();n!==e.DefaultInterpolation&&(t.interpolation=n)}return t.type=e.ValueTypeName,t}InterpolantFactoryMethodDiscrete(e){return new aK(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodLinear(e){return new a$(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodSmooth(e){return new aJ(this.times,this.values,this.getValueSize(),e)}setInterpolation(e){let t;switch(e){case 2300:t=this.InterpolantFactoryMethodDiscrete;break;case 2301:t=this.InterpolantFactoryMethodLinear;break;case 2302:t=this.InterpolantFactoryMethodSmooth}if(void 0===t){let t="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(void 0===this.createInterpolant)if(e!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);else throw Error(t);return Q("KeyframeTrack:",t),this}return this.createInterpolant=t,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return 2300;case this.InterpolantFactoryMethodLinear:return 2301;case this.InterpolantFactoryMethodSmooth:return 2302}}getValueSize(){return this.values.length/this.times.length}shift(e){if(0!==e){let t=this.times;for(let n=0,i=t.length;n!==i;++n)t[n]+=e}return this}scale(e){if(1!==e){let t=this.times;for(let n=0,i=t.length;n!==i;++n)t[n]*=e}return this}trim(e,t){let n=this.times,i=n.length,r=0,a=i-1;for(;r!==i&&n[r]<e;)++r;for(;-1!==a&&n[a]>t;)--a;if(++a,0!==r||a!==i){r>=a&&(r=(a=Math.max(a,1))-1);let e=this.getValueSize();this.times=n.slice(r,a),this.values=this.values.slice(r*e,a*e)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!=0&&(ee("KeyframeTrack: Invalid value size in track.",this),e=!1);let n=this.times,i=this.values,r=n.length;0===r&&(ee("KeyframeTrack: Track is empty.",this),e=!1);let a=null;for(let t=0;t!==r;t++){let i=n[t];if("number"==typeof i&&isNaN(i)){ee("KeyframeTrack: Time is not a valid number.",this,t,i),e=!1;break}if(null!==a&&a>i){ee("KeyframeTrack: Out of order keys.",this,t,i,a),e=!1;break}a=i}if(void 0!==i&&W(i))for(let t=0,n=i.length;t!==n;++t){let n=i[t];if(isNaN(n)){ee("KeyframeTrack: Value is not a valid number.",this,t,n),e=!1;break}}return e}optimize(){let e=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),i=2302===this.getInterpolation(),r=e.length-1,a=1;for(let s=1;s<r;++s){let r=!1,o=e[s];if(o!==e[s+1]&&(1!==s||o!==e[0]))if(i)r=!0;else{let e=s*n,i=e-n,a=e+n;for(let s=0;s!==n;++s){let n=t[e+s];if(n!==t[i+s]||n!==t[a+s]){r=!0;break}}}if(r){if(s!==a){e[a]=e[s];let i=s*n,r=a*n;for(let e=0;e!==n;++e)t[r+e]=t[i+e]}++a}}if(r>0){e[a]=e[r];for(let e=r*n,i=a*n,s=0;s!==n;++s)t[i+s]=t[e+s];++a}return a!==e.length?(this.times=e.slice(0,a),this.values=t.slice(0,a*n)):(this.times=e,this.values=t),this}clone(){let e=this.times.slice(),t=this.values.slice(),n=new this.constructor(this.name,e,t);return n.createInterpolant=this.createInterpolant,n}}aQ.prototype.ValueTypeName="",aQ.prototype.TimeBufferType=Float32Array,aQ.prototype.ValueBufferType=Float32Array,aQ.prototype.DefaultInterpolation=2301;class a0 extends aQ{constructor(e,t,n){super(e,t,n)}}a0.prototype.ValueTypeName="bool",a0.prototype.ValueBufferType=Array,a0.prototype.DefaultInterpolation=2300,a0.prototype.InterpolantFactoryMethodLinear=void 0,a0.prototype.InterpolantFactoryMethodSmooth=void 0;class a1 extends aQ{constructor(e,t,n,i){super(e,t,n,i)}}a1.prototype.ValueTypeName="color";class a2 extends aQ{constructor(e,t,n,i){super(e,t,n,i)}}a2.prototype.ValueTypeName="number";class a3 extends aZ{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t,n,i){let r=this.resultBuffer,a=this.sampleValues,s=this.valueSize,o=(n-t)/(i-t),l=e*s;for(let e=l+s;
36l!==e;l+=4)em.slerpFlat(r,0,a,l-s,a,l,o);return r}}class a5 extends aQ{constructor(e,t,n,i){super(e,t,n,i)}InterpolantFactoryMethodLinear(e){return new a3(this.times,this.values,this.getValueSize(),e)}}a5.prototype.ValueTypeName="quaternion",a5.prototype.InterpolantFactoryMethodSmooth=void 0;class a4 extends aQ{constructor(e,t,n){super(e,t,n)}}a4.prototype.ValueTypeName="string",a4.prototype.ValueBufferType=Array,a4.prototype.DefaultInterpolation=2300,a4.prototype.InterpolantFactoryMethodLinear=void 0,a4.prototype.InterpolantFactoryMethodSmooth=void 0;class a6 extends aQ{constructor(e,t,n,i){super(e,t,n,i)}}a6.prototype.ValueTypeName="vector";class a8{constructor(e="",t=-1,n=[],i=2500){this.name=e,this.tracks=n,this.duration=t,this.blendMode=i,this.uuid=eo(),this.userData={},this.duration<0&&this.resetDuration()}static parse(e){let t=[],n=e.tracks,i=1/(e.fps||1);for(let e=0,r=n.length;e!==r;++e)t.push((function(e){if(void 0===e.type)throw Error("THREE.KeyframeTrack: track type undefined, can not parse");let t=function(e){switch(e.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return a2;case"vector":case"vector2":case"vector3":case"vector4":return a6;case"color":return a1;case"quaternion":return a5;case"bool":case"boolean":return a0;case"string":return a4}throw Error("THREE.KeyframeTrack: Unsupported typeName: "+e)}(e.type);if(void 0===e.times){let t=[],n=[];aq(e.keys,t,n,"value"),e.times=t,e.values=n}return void 0!==t.parse?t.parse(e):new t(e.name,e.times,e.values,e.interpolation)})(n[e]).scale(i));let r=new this(e.name,e.duration,t,e.blendMode);return r.uuid=e.uuid,r.userData=JSON.parse(e.userData||"{}"),r}static toJSON(e){let t=[],n=e.tracks,i={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode,userData:JSON.stringify(e.userData)};for(let e=0,i=n.length;e!==i;++e)t.push(aQ.toJSON(n[e]));return i}static CreateFromMorphTargetSequence(e,t,n,i){let r=t.length,a=[];for(let e=0;e<r;e++){let s=[],o=[];s.push((e+r-1)%r,e,(e+1)%r),o.push(0,1,0);let l=aW(s);s=aX(s,1,l),o=aX(o,1,l),i||0!==s[0]||(s.push(r),o.push(o[0])),a.push(new a2(".morphTargetInfluences["+t[e].name+"]",s,o).scale(1/n))}return new this(e,-1,a)}static findByName(e,t){let n=e;Array.isArray(e)||(n=e.geometry&&e.geometry.animations||e.animations);for(let e=0;e<n.length;e++)if(n[e].name===t)return n[e];return null}static CreateClipsFromMorphTargetSequences(e,t,n){let i={},r=/^([\w-]*?)([\d]+)$/;for(let t=0,n=e.length;t<n;t++){let n=e[t],a=n.name.match(r);if(a&&a.length>1){let e=a[1],t=i[e];t||(i[e]=t=[]),t.push(n)}}let a=[];for(let e in i)a.push(this.CreateFromMorphTargetSequence(e,i[e],t,n));return a}static parseAnimation(e,t){if(Q("AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!e)return ee("AnimationClip: No animation in JSONLoader data."),null;let n=function(e,t,n,i,r){if(0!==n.length){let a=[],s=[];aq(n,a,s,i),0!==a.length&&r.push(new e(t,a,s))}},i=[],r=e.name||"default",a=e.fps||30,s=e.blendMode,o=e.length||-1,l=e.hierarchy||[];for(let e=0;e<l.length;e++){let r=l[e].keys;if(r&&0!==r.length)if(r[0].morphTargets){let e,t={};for(e=0;e<r.length;e++)if(r[e].morphTargets)for(let n=0;n<r[e].morphTargets.length;n++)t[r[e].morphTargets[n]]=-1;for(let n in t){let t=[],a=[];for(let i=0;i!==r[e].morphTargets.length;++i){let i=r[e];t.push(i.time),a.push(+(i.morphTarget===n))}i.push(new a2(".morphTargetInfluence["+n+"]",t,a))}o=t.length*a}else{let a=".bones["+t[e].name+"]";n(a6,a+".position",r,"pos",i),n(a5,a+".quaternion",r,"rot",i),n(a6,a+".scale",r,"scl",i)}}return 0===i.length?null:new this(r,o,i,s)}resetDuration(){let e=this.tracks,t=0;for(let n=0,i=e.length;n!==i;++n){let e=this.tracks[n];t=Math.max(t,e.times[e.times.length-1])}return this.duration=t,this}trim(){for(let e=0;e<this.tracks.length;e++)this.tracks[e].trim(0,this.duration);return this}validate(){let e=!0;for(let t=0;t<this.tracks.length;t++)e=e&&this.tracks[t].validate();return e}optimize(){for(let e=0;e<this.tracks.length;e++)this.tracks[e].optimize();return this}clone(){let e=[];for(let t=0;t<this.tracks.length;t++)e.push(this.tracks[t].clone());let t=new this.constructor(this.name,this.duration,e,this.blendMode);return t.userData=JSON.parse(JSON.stringify(this.userData)),t}toJSON(){return this.constructor.toJSON(this)}}let a7={enabled:!1,files:{},add:function(e,t){!1!==this.enabled&&(this.files[e]=t)},get:function(e){if(!1!==this.enabled)return this.files[e]},remove:function(e){delete this.files[e]},clear:function(){this.files={}}};class a9{constructor(e,t,n){let i;const r=this;let a=!1,s=0,o=0;const l=[];this.onStart=void 0,this.onLoad=e,this.onProgress=t,this.onError=n,this._abortController=null,this.itemStart=function(e){o++,!1===a&&void 0!==r.onStart&&r.onStart(e,s,o),a=!0},this.itemEnd=function(e){s++,void 0!==r.onProgress&&r.onProgress(e,s,o),s===o&&(a=!1,void 0!==r.onLoad&&r.onLoad())},this.itemError=function(e){void 0!==r.onError&&r.onError(e)},this.resolveURL=function(e){return i?i(e):e},this.setURLModifier=function(e){return i=e,this},this.addHandler=function(e,t){return l.push(e,t),this},this.removeHandler=function(e){let t=l.indexOf(e);return -1!==t&&l.splice(t,2),this},this.getHandler=function(e){for(let t=0,n=l.length;t<n;t+=2){let n=l[t],i=l[t+1];if(n.global&&(n.lastIndex=0),n.test(e))return i}return null},this.abort=function(){return this.abortController.abort(),this._abortController=null,this}}get abortController(){return this._abortController||(this._abortController=new AbortController),this._abortController}}let se=new a9;class st{constructor(e){this.manager=void 0!==e?e:se,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(e,t){let n=this;return new Promise(function(i,r){n.load(e,i,t,r)})}parse(){}setCrossOrigin(e){return this.crossOrigin=e,this}setWithCredentials(e){return this.withCredentials=e,this}setPath(e){return this.path=e,this}setResourcePath(e){return this.resourcePath=e,this}setRequestHeader(e){return this.requestHeader=e,this}abort(){return this}}st.DEFAULT_MATERIAL_NAME="__DEFAULT";let sn={};
36class si extends Error{constructor(e,t){super(e),this.response=t}}class sr extends st{constructor(e){super(e),this.mimeType="",this.responseType="",this._abortController=new AbortController}load(e,t,n,i){void 0===e&&(e=""),void 0!==this.path&&(e=this.path+e),e=this.manager.resolveURL(e);let r=a7.get(`file:${e}`);if(void 0!==r)return this.manager.itemStart(e),setTimeout(()=>{t&&t(r),this.manager.itemEnd(e)},0),r;if(void 0!==sn[e])return void sn[e].push({onLoad:t,onProgress:n,onError:i});sn[e]=[],sn[e].push({onLoad:t,onProgress:n,onError:i});let a=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin",signal:"function"==typeof AbortSignal.any?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal}),s=this.mimeType,o=this.responseType;fetch(a).then(t=>{if(200===t.status||0===t.status){if(0===t.status&&Q("FileLoader: HTTP Status 0 received."),"u"<typeof ReadableStream||void 0===t.body||void 0===t.body.getReader)return t;let n=sn[e],i=t.body.getReader(),r=t.headers.get("X-File-Size")||t.headers.get("Content-Length"),a=r?parseInt(r):0,s=0!==a,o=0;return new Response(new ReadableStream({start(e){!function t(){i.read().then(({done:i,value:r})=>{if(i)e.close();else{let i=new ProgressEvent("progress",{lengthComputable:s,loaded:o+=r.byteLength,total:a});for(let e=0,t=n.length;e<t;e++){let t=n[e];t.onProgress&&t.onProgress(i)}e.enqueue(r),t()}},t=>{e.error(t)})}()}}))}throw new si(`fetch for "${t.url}" responded with ${t.status}: ${t.statusText}`,t)}).then(e=>{switch(o){case"arraybuffer":return e.arrayBuffer();case"blob":return e.blob();case"document":return e.text().then(e=>new DOMParser().parseFromString(e,s));case"json":return e.json();default:if(""===s)return e.text();{let t=/charset="?([^;"\s]*)"?/i.exec(s),n=new TextDecoder(t&&t[1]?t[1].toLowerCase():void 0);return e.arrayBuffer().then(e=>n.decode(e))}}}).then(t=>{a7.add(`file:${e}`,t);let n=sn[e];delete sn[e];for(let e=0,i=n.length;e<i;e++){let i=n[e];i.onLoad&&i.onLoad(t)}}).catch(t=>{let n=sn[e];if(void 0===n)throw this.manager.itemError(e),t;delete sn[e];for(let e=0,i=n.length;e<i;e++){let i=n[e];i.onError&&i.onError(t)}this.manager.itemError(e)}).finally(()=>{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}class sa extends st{constructor(e){super(e)}load(e,t,n,i){let r=this,a=new sr(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(n){try{t(r.parse(JSON.parse(n)))}catch(t){i?i(t):ee(t),r.manager.itemError(e)}},n,i)}parse(e){let t=[];for(let n=0;n<e.length;n++){let i=a8.parse(e[n]);t.push(i)}return t}}class ss extends st{constructor(e){super(e)}load(e,t,n,i){let r=this,a=[],s=new ry,o=new sr(this.manager);o.setPath(this.path),o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setWithCredentials(r.withCredentials);let l=0;if(Array.isArray(e))for(let u=0,c=e.length;u<c;++u)!function(u){o.load(e[u],function(e){let n=r.parse(e,!0);a[u]={width:n.width,height:n.height,format:n.format,mipmaps:n.mipmaps},6===(l+=1)&&(1===n.mipmapCount&&(s.minFilter=1006),s.image=a,s.format=n.format,s.needsUpdate=!0,t&&t(s))},n,i)}(u);else o.load(e,function(e){let n=r.parse(e,!0);if(n.isCubemap){let e=n.mipmaps.length/n.mipmapCount;for(let t=0;t<e;t++){a[t]={mipmaps:[]};for(let e=0;e<n.mipmapCount;e++)a[t].mipmaps.push(n.mipmaps[t*n.mipmapCount+e]),a[t].format=n.format,a[t].width=n.width,a[t].height=n.height}s.image=a}else s.image.width=n.width,s.image.height=n.height,s.mipmaps=n.mipmaps;1===n.mipmapCount&&(s.minFilter=1006),s.format=n.format,s.needsUpdate=!0,t&&t(s)},n,i);return s}}let so=new WeakMap;class sl extends st{constructor(e){super(e)}load(e,t,n,i){void 0!==this.path&&(e=this.path+e),e=this.manager.resolveURL(e);let r=this,a=a7.get(`image:${e}`);if(void 0!==a){if(!0===a.complete)r.manager.itemStart(e),setTimeout(function(){t&&t(a),r.manager.itemEnd(e)},0);else{let e=so.get(a);void 0===e&&(e=[],so.set(a,e)),e.push({onLoad:t,onError:i})}return a}let s=X("img");function o(){u(),t&&t(this);let n=so.get(this)||[];for(let e=0;e<n.length;e++){let t=n[e];t.onLoad&&t.onLoad(this)}so.delete(this),r.manager.itemEnd(e)}function l(t){u(),i&&i(t),a7.remove(`image:${e}`);let n=so.get(this)||[];for(let e=0;e<n.length;e++){let i=n[e];i.onError&&i.onError(t)}so.delete(this),r.manager.itemError(e),r.manager.itemEnd(e)}function u(){s.removeEventListener("load",o,!1),s.removeEventListener("error",l,!1)}return s.addEventListener("load",o,!1),s.addEventListener("error",l,!1),"data:"!==e.slice(0,5)&&void 0!==this.crossOrigin&&(s.crossOrigin=this.crossOrigin),a7.add(`image:${e}`,s),r.manager.itemStart(e),s.src=e,s}}class su extends st{constructor(e){super(e)}load(e,t,n,i){let r=new nB;
36r.colorSpace=D;let a=new sl(this.manager);a.setCrossOrigin(this.crossOrigin),a.setPath(this.path);let s=0;for(let n=0;n<e.length;++n)!function(n){a.load(e[n],function(e){r.images[n]=e,6==++s&&(r.needsUpdate=!0,t&&t(r))},void 0,i)}(n);return r}}class sc extends st{constructor(e){super(e)}load(e,t,n,i){let r=this,a=new ix,s=new sr(this.manager);return s.setResponseType("arraybuffer"),s.setRequestHeader(this.requestHeader),s.setPath(this.path),s.setWithCredentials(r.withCredentials),s.load(e,function(e){let n;try{n=r.parse(e)}catch(e){if(void 0===i)return void e(e);i(e)}void 0!==n.image?a.image=n.image:void 0!==n.data&&(a.image.width=n.width,a.image.height=n.height,a.image.data=n.data),a.wrapS=void 0!==n.wrapS?n.wrapS:1001,a.wrapT=void 0!==n.wrapT?n.wrapT:1001,a.magFilter=void 0!==n.magFilter?n.magFilter:1006,a.minFilter=void 0!==n.minFilter?n.minFilter:1006,a.anisotropy=void 0!==n.anisotropy?n.anisotropy:1,void 0!==n.colorSpace&&(a.colorSpace=n.colorSpace),void 0!==n.flipY&&(a.flipY=n.flipY),void 0!==n.format&&(a.format=n.format),void 0!==n.type&&(a.type=n.type),void 0!==n.mipmaps&&(a.mipmaps=n.mipmaps,a.minFilter=1008),1===n.mipmapCount&&(a.minFilter=1006),void 0!==n.generateMipmaps&&(a.generateMipmaps=n.generateMipmaps),a.needsUpdate=!0,t&&t(a,n)},n,i),a}}class sh extends st{constructor(e){super(e)}load(e,t,n,i){let r=new eI,a=new sl(this.manager);return a.setCrossOrigin(this.crossOrigin),a.setPath(this.path),a.load(e,function(e){r.image=e,r.needsUpdate=!0,void 0!==t&&t(r)},n,i),r}}class sd extends tL{constructor(e,t=1){super(),this.isLight=!0,this.type="Light",this.color=new tZ(e),this.intensity=t}dispose(){this.dispatchEvent({type:"dispose"})}copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){let t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,t}}class sp extends sd{constructor(e,t,n){super(e,n),this.isHemisphereLight=!0,this.type="HemisphereLight",this.position.copy(tL.DEFAULT_UP),this.updateMatrix(),this.groundColor=new tZ(t)}copy(e,t){return super.copy(e,t),this.groundColor.copy(e.groundColor),this}toJSON(e){let t=super.toJSON(e);return t.object.groundColor=this.groundColor.getHex(),t}}let sf=new ti,sm=new eg,sg=new eg;class sv{constructor(e){this.camera=e,this.intensity=1,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new ef(512,512),this.mapType=1009,this.map=null,this.mapPass=null,this.matrix=new ti,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new ik,this._frameExtents=new ef(1,1),this._viewportCount=1,this._viewports=[new eN(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){let t=this.camera,n=this.matrix;sm.setFromMatrixPosition(e.matrixWorld),t.position.copy(sm),sg.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(sg),t.updateMatrixWorld(),sf.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(sf,t.coordinateSystem,t.reversedDepth),t.reversedDepth?n.set(.5,0,0,.5,0,.5,0,.5,0,0,1,0,0,0,0,1):n.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),n.multiply(sf)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.intensity=e.intensity,this.bias=e.bias,this.radius=e.radius,this.autoUpdate=e.autoUpdate,this.needsUpdate=e.needsUpdate,this.normalBias=e.normalBias,this.blurSamples=e.blurSamples,this.mapSize.copy(e.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){let e={};return 1!==this.intensity&&(e.intensity=this.intensity),0!==this.bias&&(e.bias=this.bias),0!==this.normalBias&&(e.normalBias=this.normalBias),1!==this.radius&&(e.radius=this.radius),(512!==this.mapSize.x||512!==this.mapSize.y)&&(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}}class sx extends sv{constructor(){super(new nk(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1,this.aspect=1}updateMatrices(e){let t=this.camera,n=2*es*e.angle*this.focus,i=this.mapSize.width/this.mapSize.height*this.aspect,r=e.distance||t.far;(n!==t.fov||i!==t.aspect||r!==t.far)&&(t.fov=n,t.aspect=i,t.far=r,t.updateProjectionMatrix()),super.updateMatrices(e)}copy(e){return super.copy(e),this.focus=e.focus,this}}class sy extends sd{constructor(e,t,n=0,i=Math.PI/3,r=0,a=2){super(e,t),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(tL.DEFAULT_UP),this.updateMatrix(),this.target=new tL,this.distance=n,this.angle=i,this.penumbra=r,this.decay=a,this.map=null,this.shadow=new sx}get power(){return this.intensity*Math.PI}set power(e){this.intensity=e/Math.PI}dispose(){super.dispose(),this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.map=e.map,this.shadow=e.shadow.clone(),this}toJSON(e){let t=super.toJSON(e);return t.object.distance=this.distance,t.object.angle=this.angle,t.object.decay=this.decay,t.object.penumbra=this.penumbra,t.object.target=this.target.uuid,this.map&&this.map.isTexture&&(t.object.map=this.map.toJSON(e).uuid),t.object.shadow=this.shadow.toJSON(),t}}class s_ extends sv{constructor(){super(new nk(90,1,.5,500)),this.isPointLightShadow=!0}
vendor: 8,470 bytes, line 36
36}class sb extends sd{constructor(e,t,n=0,i=2){super(e,t),this.isPointLight=!0,this.type="PointLight",this.distance=n,this.decay=i,this.shadow=new s_}get power(){return 4*this.intensity*Math.PI}set power(e){this.intensity=e/(4*Math.PI)}dispose(){super.dispose(),this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}toJSON(e){let t=super.toJSON(e);return t.object.distance=this.distance,t.object.decay=this.decay,t.object.shadow=this.shadow.toJSON(),t}}class sS extends nD{constructor(e=-1,t=1,n=1,i=-1,r=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=n,this.bottom=i,this.near=r,this.far=a,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=null===e.view?null:Object.assign({},e.view),this}setViewOffset(e,t,n,i,r,a){null===this.view&&(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=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,i=(this.top+this.bottom)/2,r=n-e,a=n+e,s=i+t,o=i-t;if(null!==this.view&&this.view.enabled){let e=(this.right-this.left)/this.view.fullWidth/this.zoom,t=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=e*this.view.offsetX,a=r+e*this.view.width,s-=t*this.view.offsetY,o=s-t*this.view.height}this.projectionMatrix.makeOrthographic(r,a,s,o,this.near,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let 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,null!==this.view&&(t.object.view=Object.assign({},this.view)),t}}class sM extends sv{constructor(){super(new sS(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class sw extends sd{constructor(e,t){super(e,t),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(tL.DEFAULT_UP),this.updateMatrix(),this.target=new tL,this.shadow=new sM}dispose(){super.dispose(),this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let t=super.toJSON(e);return t.object.shadow=this.shadow.toJSON(),t.object.target=this.target.uuid,t}}class sT extends sd{constructor(e,t){super(e,t),this.isAmbientLight=!0,this.type="AmbientLight"}}class sE extends sd{constructor(e,t,n=10,i=10){super(e,t),this.isRectAreaLight=!0,this.type="RectAreaLight",this.width=n,this.height=i}get power(){return this.intensity*this.width*this.height*Math.PI}set power(e){this.intensity=e/(this.width*this.height*Math.PI)}copy(e){return super.copy(e),this.width=e.width,this.height=e.height,this}toJSON(e){let t=super.toJSON(e);return t.object.width=this.width,t.object.height=this.height,t}}class sC{constructor(){this.isSphericalHarmonics3=!0,this.coefficients=[];for(let e=0;e<9;e++)this.coefficients.push(new eg)}set(e){for(let t=0;t<9;t++)this.coefficients[t].copy(e[t]);return this}zero(){for(let e=0;e<9;e++)this.coefficients[e].set(0,0,0);return this}getAt(e,t){let n=e.x,i=e.y,r=e.z,a=this.coefficients;return t.copy(a[0]).multiplyScalar(.282095),t.addScaledVector(a[1],.488603*i),t.addScaledVector(a[2],.488603*r),t.addScaledVector(a[3],.488603*n),t.addScaledVector(a[4],n*i*1.092548),t.addScaledVector(a[5],i*r*1.092548),t.addScaledVector(a[6],.315392*(3*r*r-1)),t.addScaledVector(a[7],n*r*1.092548),t.addScaledVector(a[8],.546274*(n*n-i*i)),t}getIrradianceAt(e,t){let n=e.x,i=e.y,r=e.z,a=this.coefficients;return t.copy(a[0]).multiplyScalar(.886227),t.addScaledVector(a[1],1.023328*i),t.addScaledVector(a[2],1.023328*r),t.addScaledVector(a[3],1.023328*n),t.addScaledVector(a[4],.858086*n*i),t.addScaledVector(a[5],.858086*i*r),t.addScaledVector(a[6],.743125*r*r-.247708),t.addScaledVector(a[7],.858086*n*r),t.addScaledVector(a[8],.429043*(n*n-i*i)),t}add(e){for(let t=0;t<9;t++)this.coefficients[t].add(e.coefficients[t]);return this}addScaledSH(e,t){for(let n=0;n<9;n++)this.coefficients[n].addScaledVector(e.coefficients[n],t);return this}scale(e){for(let t=0;t<9;t++)this.coefficients[t].multiplyScalar(e);return this}lerp(e,t){for(let n=0;n<9;n++)this.coefficients[n].lerp(e.coefficients[n],t);return this}equals(e){for(let t=0;t<9;t++)if(!this.coefficients[t].equals(e.coefficients[t]))return!1;return!0}copy(e){return this.set(e.coefficients)}clone(){return new this.constructor().copy(this)}fromArray(e,t=0){let n=this.coefficients;for(let i=0;i<9;i++)n[i].fromArray(e,t+3*i);return this}toArray(e=[],t=0){let n=this.coefficients;for(let i=0;i<9;i++)n[i].toArray(e,t+3*i);return e}static getBasisAt(e,t){let n=e.x,i=e.y,r=e.z;t[0]=.282095,t[1]=.488603*i,t[2]=.488603*r,t[3]=.488603*n,t[4]=1.092548*n*i,t[5]=1.092548*i*r,t[6]=.315392*(3*r*r-1),t[7]=1.092548*n*r,t[8]=.546274*(n*n-i*i)}}class sA extends sd{constructor(e=new sC,t=1){super(void 0,t),this.isLightProbe=!0,this.sh=e}copy(e){return super.copy(e),this.sh.copy(e.sh),this}toJSON(e){let t=super.toJSON(e);return t.object.sh=this.sh.toArray(),t}}class sR extends st{constructor(e){super(e),this.textures={}}load(e,t,n,i){let r=this,a=new sr(r.manager);a.setPath(r.path),a.setRequestHeader(r.requestHeader),a.setWithCredentials(r.withCredentials),a.load(e,function(n){try{t(r.parse(JSON.parse(n)))}catch(t){i?i(t):ee(t),r.manager.itemError(e)}},n,i)}parse(e){let t=this.textures;function n(e){return void 0===t[e]&&Q("MaterialLoader: Undefined texture",e),t[e]}let i=this.createMaterialFromType(e.type);if(void 0!==e.uuid&&(i.uuid=e.uuid),void 0!==e.name&&(i.name=e.name),void 0!==e.color&&void 0!==i.color&&i.color.setHex(e.color),void 0!==e.roughness&&(i.roughness=e.roughness),void 0!==e.metalness&&(i.metalness=e.metalness),void 0!==e.sheen&&(i.sheen=e.sheen),void 0!==e.sheenColor&&(i.sheenColor=new tZ().setHex(e.sheenColor)),void 0!==e.sheenRoughness&&(i.sheenRoughness=e.sheenRoughness),void 0!==e.emissive&&void 0!==i.emissive&&i.emissive.setHex(e.emissive),void 0!==e.specular&&void 0!==i.specular&&i.specular.setHex(e.specular),void 0!==e.specularIntensity&&(i.specularIntensity=e.specularIntensity),void 0!==e.specularColor&&void 0!==i.specularColor&&i.specularColor.setHex(e.specularColor),void 0!==e.shininess&&(i.shininess=e.shininess),void 0!==e.clearcoat&&(i.clearcoat=e.clearcoat),void 0!==e.clearcoatRoughness&&(i.clearcoatRoughness=e.clearcoatRoughness),void 0!==e.dispersion&&(i.dispersion=e.dispersion),void 0!==e.iridescence&&(i.iridescence=e.iridescence),void 0!==e.iridescenceIOR&&(i.iridescenceIOR=e.iridescenceIOR),void 0!==e.iridescenceThicknessRange&&(i.iridescenceThicknessRange=e.iridescenceThicknessRange),void 0!==e.transmission&&(i.transmission=e.transmission),void 0!==e.thickness&&(i.thickness=e.thickness),void 0!==e.attenuationDistance&&(i.attenuationDistance=e.attenuationDistance),void 0!==e.attenuationColor&&void 0!==i.attenuationColor&&i.attenuationColor.setHex(e.attenuationColor),void 0!==e.anisotropy&&(i.anisotropy=e.anisotropy),void 0!==e.anisotropyRotation&&(i.anisotropyRotation=e.anisotropyRotation),void 0!==e.fog&&(i.fog=e.fog),void 0!==e.flatShading&&(i.flatShading=e.flatShading),void 0!==e.blending&&(i.blending=e.blending),void 0!==e.combine&&(i.combine=e.combine),void 0!==e.side&&(i.side=e.side),void 0!==e.shadowSide&&(i.shadowSide=e.shadowSide),void 0!==e.opacity&&(i.opacity=e.opacity),void 0!==e.transparent&&(i.transparent=e.transparent),void 0!==e.alphaTest&&(i.alphaTest=e.alphaTest),void 0!==e.alphaHash&&(i.alphaHash=e.alphaHash),void 0!==e.depthFunc&&(i.depthFunc=e.depthFunc),void 0!==e.depthTest&&(i.depthTest=e.depthTest),void 0!==e.depthWrite&&(i.depthWrite=e.depthWrite),void 0!==e.colorWrite&&(i.colorWrite=e.colorWrite),void 0!==e.blendSrc&&(i.blendSrc=e.blendSrc),void 0!==e.blendDst&&(i.blendDst=e.blendDst),void 0!==e.blendEquation&&(i.blendEquation=e.blendEquation),void 0!==e.blendSrcAlpha&&(i.blendSrcAlpha=e.blendSrcAlpha),void 0!==e.blendDstAlpha&&
36(i.blendDstAlpha=e.blendDstAlpha),void 0!==e.blendEquationAlpha&&(i.blendEquationAlpha=e.blendEquationAlpha),void 0!==e.blendColor&&void 0!==i.blendColor&&i.blendColor.setHex(e.blendColor),void 0!==e.blendAlpha&&(i.blendAlpha=e.blendAlpha),void 0!==e.stencilWriteMask&&(i.stencilWriteMask=e.stencilWriteMask),void 0!==e.stencilFunc&&(i.stencilFunc=e.stencilFunc),void 0!==e.stencilRef&&(i.stencilRef=e.stencilRef),void 0!==e.stencilFuncMask&&(i.stencilFuncMask=e.stencilFuncMask),void 0!==e.stencilFail&&(i.stencilFail=e.stencilFail),void 0!==e.stencilZFail&&(i.stencilZFail=e.stencilZFail),void 0!==e.stencilZPass&&(i.stencilZPass=e.stencilZPass),void 0!==e.stencilWrite&&(i.stencilWrite=e.stencilWrite),void 0!==e.wireframe&&(i.wireframe=e.wireframe),void 0!==e.wireframeLinewidth&&(i.wireframeLinewidth=e.wireframeLinewidth),void 0!==e.wireframeLinecap&&(i.wireframeLinecap=e.wireframeLinecap),void 0!==e.wireframeLinejoin&&(i.wireframeLinejoin=e.wireframeLinejoin),void 0!==e.rotation&&(i.rotation=e.rotation),void 0!==e.linewidth&&(i.linewidth=e.linewidth),void 0!==e.dashSize&&(i.dashSize=e.dashSize),void 0!==e.gapSize&&(i.gapSize=e.gapSize),void 0!==e.scale&&(i.scale=e.scale),void 0!==e.polygonOffset&&(i.polygonOffset=e.polygonOffset),void 0!==e.polygonOffsetFactor&&(i.polygonOffsetFactor=e.polygonOffsetFactor),void 0!==e.polygonOffsetUnits&&(i.polygonOffsetUnits=e.polygonOffsetUnits),void 0!==e.dithering&&(i.dithering=e.dithering),void 0!==e.alphaToCoverage&&(i.alphaToCoverage=e.alphaToCoverage),void 0!==e.premultipliedAlpha&&(i.premultipliedAlpha=e.premultipliedAlpha),void 0!==e.forceSinglePass&&(i.forceSinglePass=e.forceSinglePass),void 0!==e.allowOverride&&(i.allowOverride=e.allowOverride),void 0!==e.visible&&(i.visible=e.visible),void 0!==e.toneMapped&&(i.toneMapped=e.toneMapped),void 0!==e.userData&&(i.userData=e.userData),void 0!==e.vertexColors&&("number"==typeof e.vertexColors?i.vertexColors=e.vertexColors>0:i.vertexColors=e.vertexColors),void 0!==e.uniforms)for(let t in e.uniforms){let r=e.uniforms[t];switch(i.uniforms[t]={},r.type){case"t":i.uniforms[t].value=n(r.value);break;case"c":i.uniforms[t].value=new tZ().setHex(r.value);break;case"v2":i.uniforms[t].value=new ef().fromArray(r.value);break;case"v3":i.uniforms[t].value=new eg().fromArray(r.value);break;case"v4":i.uniforms[t].value=new eN().fromArray(r.value);break;case"m3":i.uniforms[t].value=new ey().fromArray(r.value);break;
36case"m4":i.uniforms[t].value=new ti().fromArray(r.value);break;default:i.uniforms[t].value=r.value}}if(void 0!==e.defines&&(i.defines=e.defines),void 0!==e.vertexShader&&(i.vertexShader=e.vertexShader),void 0!==e.fragmentShader&&(i.fragmentShader=e.fragmentShader),void 0!==e.glslVersion&&(i.glslVersion=e.glslVersion),void 0!==e.extensions)for(let t in e.extensions)i.extensions[t]=e.extensions[t];if(void 0!==e.lights&&(i.lights=e.lights),void 0!==e.clipping&&(i.clipping=e.clipping),void 0!==e.size&&(i.size=e.size),void 0!==e.sizeAttenuation&&(i.sizeAttenuation=e.sizeAttenuation),void 0!==e.map&&(i.map=n(e.map)),void 0!==e.matcap&&(i.matcap=n(e.matcap)),void 0!==e.alphaMap&&(i.alphaMap=n(e.alphaMap)),void 0!==e.bumpMap&&(i.bumpMap=n(e.bumpMap)),void 0!==e.bumpScale&&(i.bumpScale=e.bumpScale),void 0!==e.normalMap&&(i.normalMap=n(e.normalMap)),void 0!==e.normalMapType&&(i.normalMapType=e.normalMapType),void 0!==e.normalScale){let t=e.normalScale;!1===Array.isArray(t)&&(t=[t,t]),i.normalScale=new ef().fromArray(t)}return void 0!==e.displacementMap&&(i.displacementMap=n(e.displacementMap)),void 0!==e.displacementScale&&(i.displacementScale=e.displacementScale),void 0!==e.displacementBias&&(i.displacementBias=e.displacementBias),void 0!==e.roughnessMap&&(i.roughnessMap=n(e.roughnessMap)),void 0!==e.metalnessMap&&(i.metalnessMap=n(e.metalnessMap)),void 0!==e.emissiveMap&&(i.emissiveMap=n(e.emissiveMap)),void 0!==e.emissiveIntensity&&(i.emissiveIntensity=e.emissiveIntensity),void 0!==e.specularMap&&(i.specularMap=n(e.specularMap)),void 0!==e.specularIntensityMap&&(i.specularIntensityMap=n(e.specularIntensityMap)),void 0!==e.specularColorMap&&(i.specularColorMap=n(e.specularColorMap)),void 0!==e.envMap&&(i.envMap=n(e.envMap)),void 0!==e.envMapRotation&&i.envMapRotation.fromArray(e.envMapRotation),void 0!==e.envMapIntensity&&(i.envMapIntensity=e.envMapIntensity),void 0!==e.reflectivity&&(i.reflectivity=e.reflectivity),void 0!==e.refractionRatio&&(i.refractionRatio=e.refractionRatio),void 0!==e.lightMap&&(i.lightMap=n(e.lightMap)),void 0!==e.lightMapIntensity&&(i.lightMapIntensity=e.lightMapIntensity),void 0!==e.aoMap&&(i.aoMap=n(e.aoMap)),void 0!==e.aoMapIntensity&&(i.aoMapIntensity=e.aoMapIntensity),void 0!==e.gradientMap&&(i.gradientMap=n(e.gradientMap)),void 0!==e.clearcoatMap&&(i.clearcoatMap=n(e.clearcoatMap)),void 0!==e.clearcoatRoughnessMap&&(i.clearcoatRoughnessMap=n(e.clearcoatRoughnessMap)),void 0!==e.clearcoatNormalMap&&(i.clearcoatNormalMap=n(e.clearcoatNormalMap)),void 0!==e.clearcoatNormalScale&&(i.clearcoatNormalScale=new ef().fromArray(e.clearcoatNormalScale)),void 0!==e.iridescenceMap&&(i.iridescenceMap=n(e.iridescenceMap)),void 0!==e.iridescenceThicknessMap&&(i.iridescenceThicknessMap=n(e.iridescenceThicknessMap)),void 0!==e.transmissionMap&&(i.transmissionMap=n(e.transmissionMap)),void 0!==e.thicknessMap&&(i.thicknessMap=n(e.thicknessMap)),void 0!==e.anisotropyMap&&(i.anisotropyMap=n(e.anisotropyMap)),void 0!==e.sheenColorMap&&(i.sheenColorMap=n(e.sheenColorMap)),void 0!==e.sheenRoughnessMap&&(i.sheenRoughnessMap=n(e.sheenRoughnessMap)),i}setTextures(e){return this.textures=e,this}createMaterialFromType(e){return sR.createMaterialFromType(e)}static createMaterialFromType(e){return new({ShadowMaterial:aI,SpriteMaterial:n$,RawShaderMaterial:aN,ShaderMaterial:nN,PointsMaterial:ru,MeshPhysicalMaterial:aU,MeshStandardMaterial:aD,MeshPhongMaterial:aF,MeshToonMaterial:aO,MeshNormalMaterial:ak,MeshLambertMaterial:az,MeshDepthMaterial:aB,MeshDistanceMaterial:aV,MeshBasicMaterial:tQ,MeshMatcapMaterial:aH,LineDashedMaterial:aj,LineBasicMaterial:i4,Material:tK})[e]}}class sL{static extractUrlBase(e){let t=e.lastIndexOf("/");return -1===t?"./":e.slice(0,t+1)}static resolveURL(e,t){return"string"!=typeof e||""===e?"":(/^https?:\/\//i.test(t)&&/^\//.test(e)&&(t=t.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(e)||/^data:.*,.*$/i.test(e)||/^blob:.*$/i.test(e))?e:t+e}}class sP extends nf{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(e){return super.copy(e),this.instanceCount=e.instanceCount,this}toJSON(){let e=super.toJSON();return e.instanceCount=this.instanceCount,e.isInstancedBufferGeometry=!0,e}}class sI extends st{constructor(e){super(e)}load(e,t,n,i){let r=this,a=new sr(r.manager);a.setPath(r.path),a.setRequestHeader(r.requestHeader),a.setWithCredentials(r.withCredentials),a.load(e,function(n){try{t(r.parse(JSON.parse(n)))}catch(t){i?i(t):ee(t),r.manager.itemError(e)}},n,i)}parse(e){let t={},n={};function i(e,i){if(void 0!==t[i])return t[i];let r=e.interleavedBuffers[i],a=function(e,t){if(void 0!==n[t])return n[t];let i=new Uint32Array(e.arrayBuffers[t]).buffer;return n[t]=i,i}(e,r.buffer),s=new nY(G(r.type,a),r.stride);return s.uuid=r.uuid,t[i]=s,s}let r=e.isInstancedBufferGeometry?new sP:new nf,a=e.data.index;if(void 0!==a){let e=G(a.type,a.array);r.setIndex(new t8(e,1))}let s=e.data.attributes;for(let t in s){let n,a=s[t];if(a.isInterleavedBufferAttribute)n=new nJ(i(e.data,a.data),a.itemSize,a.offset,a.normalized);else{let e=G(a.type,a.array);n=new(a.isInstancedBufferAttribute?iS:t8)(e,a.itemSize,a.normalized)}void 0!==a.name&&(n.name=a.name),void 0!==a.usage&&n.setUsage(a.usage),r.setAttribute(t,n)}let o=e.data.morphAttributes;if(o)for(let t in o){let n=o[t],a=[];for(let t=0,r=n.length;t<r;t++){let r,s=n[t];r=s.isInterleavedBufferAttribute?new nJ(i(e.data,s.data),s.itemSize,s.offset,s.normalized):new t8(G(s.type,s.array),s.itemSize,s.normalized),void 0!==s.name&&(r.name=s.name),a.push(r)}r.morphAttributes[t]=a}e.data.morphTargetsRelative&&(r.morphTargetsRelative=!0);let l=e.data.groups||e.data.drawcalls||e.data.offsets;if(void 0!==l)for(let e=0,t=l.length;e!==t;++e){let t=l[e];r.addGroup(t.start,t.count,t.materialIndex)}let u=e.data.boundingSphere;return void 0!==u&&(r.boundingSphere=new e5().fromJSON(u)),e.name&&(r.name=e.name),e.userData&&(r.userData=e.userData),r}}class sN extends st{constructor(e){super(e)}load(e,t,n,i){let r=this,a=""===this.path?sL.extractUrlBase(e):this.path;this.resourcePath=this.resourcePath||a;let s=new sr(this.manager);s.setPath(this.path),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,function(n){let a=null;try{a=JSON.parse(n)}catch(t){void 0!==i&&i(t),t("ObjectLoader: Can't parse "+e+".",t.message);return}let s=a.metadata;if(void 0===s||void 0===s.type||"geometry"===s.type.toLowerCase()){void 0!==i&&i(Error("THREE.ObjectLoader: Can't load "+e)),ee("ObjectLoader: Can't load "+e);return}r.parse(a,t)},n,i)}async loadAsync(e,t){let n=""===this.path?sL.extractUrlBase(e):this.path;this.resourcePath=this.resourcePath||n;let i=new sr(this.manager);i.setPath(this.path),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials);let r=JSON.parse(await i.loadAsync(e,t)),a=r.metadata;if(void 0===a||void 0===a.type||"geometry"===a.type.toLowerCase())throw Error("THREE.ObjectLoader: Can't load "+e);return await this.parseAsync(r)}parse(e,t){let n=this.parseAnimations(e.animations),i=this.parseShapes(e.shapes),r=this.parseGeometries(e.geometries,i),a=this.parseImages(e.images,function(){void 0!==t&&t(l)}),s=this.parseTextures(e.textures,a),o=this.parseMaterials(e.materials,s),l=this.parseObject(e.object,r,o,s,n),u=this.parseSkeletons(e.skeletons,l);if(this.bindSkeletons(l,u),this.bindLightTargets(l),void 0!==t){let e=!1;for(let t in a)if(a[t].data instanceof HTMLImageElement){e=!0;break}!1===e&&t(l)}return l}async parseAsync(e){let t=this.parseAnimations(e.animations),n=this.parseShapes(e.shapes),i=this.parseGeometries(e.geometries,n),r=await this.parseImagesAsync(e.images),a=this.parseTextures(e.textures,r),s=this.parseMaterials(e.materials,a),o=this.parseObject(e.object,i,s,a,t),l=this.parseSkeletons(e.skeletons,o);return this.bindSkeletons(o,l),this.bindLightTargets(o),o}parseShapes(e){let t={};if(void 0!==e)for(let n=0,i=e.length;n<i;n++){let i=new r4().fromJSON(e[n]);t[i.uuid]=i}return t}parseSkeletons(e,t){let n={},i={};if(t.traverse(function(e){e.isBone&&(i[e.uuid]=e)}),void 0!==e)for(let t=0,r=e.length;t<r;t++){let r=new ib().fromJSON(e[t],i);n[r.uuid]=r}return n}parseGeometries(e,t){let n={};if(void 0!==e){let i=new sI;for(let r=0,a=e.length;r<a;r++){let a,s=e[r];switch(s.type){case"BufferGeometry":case"InstancedBufferGeometry":a=i.parse(s);break;default:s.type in aP?a=aP[s.type].fromJSON(s,t):Q(`ObjectLoader: Unsupported geometry type "${s.type}"`)}a.uuid=s.uuid,void 0!==s.name&&(a.name=s.name),void 0!==s.userData&&(a.userData=s.userData),n[s.uuid]=a}}return n}parseMaterials(e,t){let n={},i={};if(void 0!==e){let r=new sR;r.setTextures(t);for(let t=0,a=e.length;t<a;t++){let a=e[t];void 0===n[a.uuid]&&(n[a.uuid]=r.parse(a)),i[a.uuid]=n[a.uuid]}}return i}parseAnimations(e){let t={};if(void 0!==e)for(let n=0;n<e.length;n++){let i=e[n],r=a8.parse(i);t[r.uuid]=r}return t}parseImages(e,t){let n,i=this,r={};function a(e){if("string"==typeof e){var t;return t=/^(\/\/)|([a-z]+:(\/\/)?)/i.test(e)?e:i.resourcePath+e,i.manager.itemStart(t),n.load(t,function(){i.manager.itemEnd(t)},void 0,function(){i.manager.itemError(t),i.manager.itemEnd(t)})}return e.data?{data:G(e.type,e.data),width:e.width,height:e.height}:null}if(void 0!==e&&e.length>
360){(n=new sl(new a9(t))).setCrossOrigin(this.crossOrigin);for(let t=0,n=e.length;t<n;t++){let n=e[t],i=n.url;if(Array.isArray(i)){let e=[];for(let t=0,n=i.length;t<n;t++){let n=a(i[t]);null!==n&&(n instanceof HTMLImageElement?e.push(n):e.push(new ix(n.data,n.width,n.height)))}r[n.uuid]=new eA(e)}else{let e=a(n.url);r[n.uuid]=new eA(e)}}}return r}async parseImagesAsync(e){let t,n=this,i={};async function r(e){if("string"==typeof e){let i=/^(\/\/)|([a-z]+:(\/\/)?)/i.test(e)?e:n.resourcePath+e;return await t.loadAsync(i)}return e.data?{data:G(e.type,e.data),width:e.width,height:e.height}:null}if(void 0!==e&&e.length>0){(t=new sl(this.manager)).setCrossOrigin(this.crossOrigin);for(let t=0,n=e.length;t<n;t++){let n=e[t],a=n.url;if(Array.isArray(a)){let e=[];for(let t=0,n=a.length;t<n;t++){let n=a[t],i=await r(n);null!==i&&(i instanceof HTMLImageElement?e.push(i):e.push(new ix(i.data,i.width,i.height)))}i[n.uuid]=new eA(e)}else{let e=await r(n.url);i[n.uuid]=new eA(e)}}}return i}parseTextures(e,t){function n(e,t){return"number"==typeof e?e:(Q("ObjectLoader.parseTexture: Constant should be in numeric form.",e),t[e])}let i={};if(void 0!==e)for(let r=0,a=e.length;r<a;r++){let a,s=e[r];void 0===s.image&&Q('ObjectLoader: No "image" specified for',s.uuid),void 0===t[s.image]&&Q("ObjectLoader: Undefined image",s.image);let o=t[s.image],l=o.data;Array.isArray(l)?(a=new nB,6===l.length&&(a.needsUpdate=!0)):(a=l&&l.data?new ix:new eI,l&&(a.needsUpdate=!0)),a.source=o,a.uuid=s.uuid,void 0!==s.name&&(a.name=s.name),void 0!==s.mapping&&(a.mapping=n(s.mapping,sD)),void 0!==s.channel&&(a.channel=s.channel),void 0!==s.offset&&a.offset.fromArray(s.offset),void 0!==s.repeat&&a.repeat.fromArray(s.repeat),void 0!==s.center&&a.center.fromArray(s.center),void 0!==s.rotation&&(a.rotation=s.rotation),void 0!==s.wrap&&(a.wrapS=n(s.wrap[0],sU),a.wrapT=n(s.wrap[1],sU)),void 0!==s.format&&(a.format=s.format),void 0!==s.internalFormat&&(a.internalFormat=s.internalFormat),void 0!==s.type&&(a.type=s.type),void 0!==s.colorSpace&&(a.colorSpace
36=s.colorSpace),void 0!==s.minFilter&&(a.minFilter=n(s.minFilter,sF)),void 0!==s.magFilter&&(a.magFilter=n(s.magFilter,sF)),void 0!==s.anisotropy&&(a.anisotropy=s.anisotropy),void 0!==s.flipY&&(a.flipY=s.flipY),void 0!==s.generateMipmaps&&(a.generateMipmaps=s.generateMipmaps),void 0!==s.premultiplyAlpha&&(a.premultiplyAlpha=s.premultiplyAlpha),void 0!==s.unpackAlignment&&(a.unpackAlignment=s.unpackAlignment),void 0!==s.compareFunction&&(a.compareFunction=s.compareFunction),void 0!==s.userData&&(a.userData=s.userData),i[s.uuid]=a}return i}parseObject(e,t,n,i,r){let a,s,o;function l(e){return void 0===t[e]&&Q("ObjectLoader: Undefined geometry",e),t[e]}function u(e){if(void 0!==e){if(Array.isArray(e)){let t=[];for(let i=0,r=e.length;i<r;i++){let r=e[i];void 0===n[r]&&Q("ObjectLoader: Undefined material",r),t.push(n[r])}return t}return void 0===n[e]&&Q("ObjectLoader: Undefined material",e),n[e]}}function c(e){return void 0===i[e]&&Q("ObjectLoader: Undefined texture",e),i[e]}switch(e.type){case"Scene":a=new nq,void 0!==e.background&&(Number.isInteger(e.background)?a.background=new tZ(e.background):a.background=c(e.background)),void 0!==e.environment&&(a.environment=c(e.environment)),void 0!==e.fog&&("Fog"===e.fog.type?a.fog=new nX(e.fog.color,e.fog.near,e.fog.far):"FogExp2"===e.fog.type&&(a.fog=new nW(e.fog.color,e.fog.density)),""!==e.fog.name&&(a.fog.name=e.fog.name)),void 0!==e.backgroundBlurriness&&(a.backgroundBlurriness=e.backgroundBlurriness),void 0!==e.backgroundIntensity&&(a.backgroundIntensity=e.backgroundIntensity),void 0!==e.backgroundRotation&&a.backgroundRotation.fromArray(e.backgroundRotation),void 0!==e.environmentIntensity&&(a.environmentIntensity=e.environmentIntensity),void 0!==e.environmentRotation&&a.environmentRotation.fromArray(e.environmentRotation);break;case"PerspectiveCamera":a=new nk(e.fov,e.aspect,e.near,e.far),void 0!==e.focus&&(a.focus=e.focus),void 0!==e.zoom&&(a.zoom=e.zoom),void 0!==e.filmGauge&&(a.filmGauge=e.filmGauge),void 0!==e.filmOffset&&(a.filmOffset=e.filmOffset),void 0!==e.view&&(a.view=Object.assign({},e.view));break;case"OrthographicCamera":a=new sS(e.left,e.right,e.top,e.bottom,e.near,e.far),void 0!==e.zoom&&(a.zoom=e.zoom),void 0!==e.view&&(a.view=Object.assign({},e.view));break;case"AmbientLight":a=new sT(e.color,e.intensity);break;case"DirectionalLight":(a=new sw(e.color,e.intensity)).target=e.target||"";break;case"PointLight":a=new sb(e.color,e.intensity,e.distance,e.decay);break;case"RectAreaLight":a=new sE(e.color,e.intensity,e.width,e.height);break;case"SpotLight":(a=new sy(e.color,e.intensity,e.distance,e.angle,e.penumbra,e.decay)).target=e.target||"";break;case"HemisphereLight":a=new sp(e.color,e.groundColor,e.intensity);break;case"LightProbe":a=new sA(new sC().fromArray(e.sh),e.intensity);break;case"SkinnedMesh":a=new ig(s=l(e.geometry),o=u(e.material)),void 0!==e.bindMode&&(a.bindMode=e.bindMode),void 0!==e.bindMatrix&&a.bindMatrix.fromArray(e.bindMatrix),void 0!==e.skeleton&&(a.skeleton=e.skeleton);break;case"Mesh":a=new nE(s=l(e.geometry),o=u(e.material));break;case"InstancedMesh":s=l(e.geometry),o=u(e.material);let h=e.count,d=e.instanceMatrix,p=e.instanceColor;(a=new iL(s,o,h)).instanceMatrix=new iS(new Float32Array(d.array),16),void 0!==p&&(a.instanceColor=new iS(new Float32Array(p.array),p.itemSize));break;case"BatchedMesh":s=l(e.geometry),o=u(e.material),(a=new i5(e.maxInstanceCount,e.maxVertexCount,e.maxIndexCount,o)).geometry=s,a.perObjectFrustumCulled=e.perObjectFrustumCulled,a.sortObjects=e.sortObjects,a._drawRanges=e.drawRanges,a._reservedRanges=e.reservedRanges,a._geometryInfo=e.geometryInfo.map(e=>{let t=null,n=null;return void 0!==e.boundingBox&&(t=new eB().fromJSON(e.boundingBox)),void 0!==e.boundingSphere&&(n=new e5().fromJSON(e.boundingSphere)),{...e,boundingBox:t,boundingSphere:n}}),a._instanceInfo=e.instanceInfo,a._availableInstanceIds=e._availableInstanceIds,a._availableGeometryIds=e._availableGeometryIds,a._nextIndexStart=e.nextIndexStart,a._nextVertexStart=e.nextVertexStart,a._geometryCount=e.geometryCount,a._maxInstanceCount=e.maxInstanceCount,a._maxVertexCount=e.maxVertexCount,a._maxIndexCount=e.maxIndexCount,a._geometryInitialized=e.geometryInitialized,a._matricesTexture=c(e.matricesTexture.uuid),a._indirectTexture=c(e.indirectTexture.uuid),void 0!==e.colorsTexture&&(a._colorsTexture=c(e.colorsTexture.uuid)),void 0!==e.boundingSphere&&(a.boundingSphere=new e5().fromJSON(e.boundingSphere)),void 0!==e.boundingBox&&
36(a.boundingBox=new eB().fromJSON(e.boundingBox));break;case"LOD":a=new ia;break;case"Line":a=new ri(l(e.geometry),u(e.material));break;case"LineLoop":a=new rl(l(e.geometry),u(e.material));break;case"LineSegments":a=new ro(l(e.geometry),u(e.material));break;case"PointCloud":case"Points":a=new rf(l(e.geometry),u(e.material));break;case"Sprite":a=new ie(u(e.material));break;case"Group":a=new nH;break;case"Bone":a=new iv;break;default:a=new tL}if(a.uuid=e.uuid,void 0!==e.name&&(a.name=e.name),void 0!==e.matrix?(a.matrix.fromArray(e.matrix),void 0!==e.matrixAutoUpdate&&(a.matrixAutoUpdate=e.matrixAutoUpdate),a.matrixAutoUpdate&&a.matrix.decompose(a.position,a.quaternion,a.scale)):(void 0!==e.position&&a.position.fromArray(e.position),void 0!==e.rotation&&a.rotation.fromArray(e.rotation),void 0!==e.quaternion&&a.quaternion.fromArray(e.quaternion),void 0!==e.scale&&a.scale.fromArray(e.scale)),void 0!==e.up&&a.up.fromArray(e.up),void 0!==e.castShadow&&(a.castShadow=e.castShadow),void 0!==e.receiveShadow&&(a.receiveShadow=e.receiveShadow),e.shadow&&(void 0!==e.shadow.intensity&&(a.shadow.intensity=e.shadow.intensity),void 0!==e.shadow.bias&&(a.shadow.bias=e.shadow.bias),void 0!==e.shadow.normalBias&&(a.shadow.normalBias=e.shadow.normalBias),void 0!==e.shadow.radius&&(a.shadow.radius=e.shadow.radius),void 0!==e.shadow.mapSize&&a.shadow.mapSize.fromArray(e.shadow.mapSize),void 0!==e.shadow.camera&&(a.shadow.camera=this.parseObject(e.shadow.camera))),void 0!==e.visible&&(a.visible=e.visible),void 0!==e.frustumCulled&&(a.frustumCulled=e.frustumCulled),void 0!==e.renderOrder&&(a.renderOrder=e.renderOrder),void 0!==e.userData&&(a.userData=e.userData),void 0!==e.layers&&(a.layers.mask=e.layers),void 0!==e.children){let s=e.children;for(let e=0;e<s.length;e++)a.add(this.parseObject(s[e],t,n,i,r))}if(void 0!==e.animations){let t=e.animations;for(let e=0;e<t.length;e++){let n=t[e];a.animations.push(r[n])}}if("LOD"===e.type){void 0!==e.autoUpdate&&(a.autoUpdate=e.autoUpdate);let t=e.levels;for(let e=0;e<t.length;e++){let n=t[e],i=a.getObjectByProperty("uuid",n.object);void 0!==i&&a.addLevel(i,n.distance,n.hysteresis)}}return a}bindSkeletons(e,t){0!==Object.keys(t).length&&e.traverse(function(e){if(!0===e.isSkinnedMesh&&void 0!==e.skeleton){let n=t[e.skeleton];void 0===n?Q("ObjectLoader: No skeleton found with UUID:",e.skeleton):e.bind(n,e.bindMatrix)}})}bindLightTargets(e){e.traverse(function(t){if(t.isDirectionalLight||t.isSpotLight){let n=t.target,i=e.getObjectByProperty("uuid",n);void 0!==i?t.target=i:t.target=new tL}})}}let sD={UVMapping:300,CubeReflectionMapping:301,CubeRefractionMapping:302,EquirectangularReflectionMapping:303,EquirectangularRefractionMapping:304,CubeUVReflectionMapping:306},sU={RepeatWrapping:1e3,ClampToEdgeWrapping:1001,MirroredRepeatWrapping:1002},sF={NearestFilter:1003,NearestMipmapNearestFilter:1004,NearestMipmapLinearFilter:1005,LinearFilter:1006,LinearMipmapNearestFilter:1007,LinearMipmapLinearFilter:1008},sO=new WeakMap;class sk extends st{constructor(e){super(e),this.isImageBitmapLoader=!0,"u"<typeof createImageBitmap&&Q("ImageBitmapLoader: createImageBitmap() not supported."),"u"<typeof fetch&&Q("ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"},this._abortController=new AbortController}setOptions(e){return this.options=e,this}load(e,t,n,i){void 0===e&&(e=""),void 0!==this.path&&(e=this.path+e),e=this.manager.resolveURL(e);let r=this,a=a7.get(`image-bitmap:${e}`);if(void 0!==a)return(r.manager.itemStart(e),a.then)?void a.then(n=>{if(!0!==sO.has(a))return t&&t(n),r.manager.itemEnd(e),n;i&&i(sO.get(a)),r.manager.itemError(e),r.manager.itemEnd(e)}):(setTimeout(function(){t&&t(a),r.manager.itemEnd(e)},0),a);let s={};s.credentials="anonymous"===this.crossOrigin?"same-origin":"include",s.headers=this.requestHeader,s.signal="function"==typeof AbortSignal.any?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal;let o=fetch(e,s).then(function(e){return e.blob()}).then(function(e){return createImageBitmap(e,Object.assign(r.options,{colorSpaceConversion:"none"}))}).then(function(n){return a7.add(`image-bitmap:${e}`,n),t&&t(n),r.manager.itemEnd(e),n}).catch(function(t){i&&i(t),sO.set(o,t),a7.remove(`image-bitmap:${e}`),r.manager.itemError(e),r.manager.itemEnd(e)});a7.add(`image-bitmap:${e}`,o),r.manager.itemStart(e)}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}class sz{static getContext(){return void 0===i&&(i=new(window.AudioContext||window.webkitAudioContext)),i}static setContext(e){i=e}}class sB extends st{constructor(e){super(e)}load(e,t,n,i){let r=this,a=new sr(this.manager);function s(t){i?i(t):ee(t),r.manager.itemError(e)}
36a.setResponseType("arraybuffer"),a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(e){try{let n=e.slice(0);sz.getContext().decodeAudioData(n,function(e){t(e)}).catch(s)}catch(e){s(e)}},n,i)}}let sV=new ti,sH=new ti,sj=new ti;class sG{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new nk,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new nk,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){let 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){let n,i;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,sj.copy(e.projectionMatrix);let r=t.eyeSep/2,a=r*t.near/t.focus,s=t.near*Math.tan(ea*t.fov*.5)/t.zoom;sH.elements[12]=-r,sV.elements[12]=r,n=-s*t.aspect+a,i=s*t.aspect+a,sj.elements[0]=2*t.near/(i-n),sj.elements[8]=(i+n)/(i-n),this.cameraL.projectionMatrix.copy(sj),n=-s*t.aspect-a,i=s*t.aspect-a,sj.elements[0]=2*t.near/(i-n),sj.elements[8]=(i+n)/(i-n),this.cameraR.projectionMatrix.copy(sj)}this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(sH),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(sV)}}class sW extends nk{constructor(e=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=e}}class sX{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=performance.now(),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){let t=performance.now();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}}let sq=new eg,sY=new em,sZ=new eg,sJ=new eg,s$=new eg;class sK extends tL{constructor(){super(),this.type="AudioListener",this.context=sz.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new sX}getInput(){return this.gain}removeFilter(){return null!==this.filter&&(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 null!==this.filter?(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);let t=this.context.listener;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(sq,sY,sZ),sJ.set(0,0,-1).applyQuaternion(sY),s$.set(0,1,0).applyQuaternion(sY),t.positionX){let e=this.context.currentTime+this.timeDelta;t.positionX.linearRampToValueAtTime(sq.x,e),t.positionY.linearRampToValueAtTime(sq.y,e),t.positionZ.linearRampToValueAtTime(sq.z,e),t.forwardX.linearRampToValueAtTime(sJ.x,e),t.forwardY.linearRampToValueAtTime(sJ.y,e),t.forwardZ.linearRampToValueAtTime(sJ.z,e),t.upX.linearRampToValueAtTime(s$.x,e),t.upY.linearRampToValueAtTime(s$.y,e),t.upZ.linearRampToValueAtTime(s$.z,e)}else t.setPosition(sq.x,sq.y,sq.z),t.setOrientation(sJ.x,sJ.y,sJ.z,s$.x,s$.y,s$.z)}}class sQ extends tL{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
36=!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(!0===this.isPlaying)return void Q("Audio: Audio is already playing.");if(!1===this.hasPlaybackControl)return void Q("Audio: this Audio has no playback control.");this._startedAt=this.context.currentTime+e;let 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(){return!1===this.hasPlaybackControl?void Q("Audio: this Audio has no playback control."):(!0===this.isPlaying&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,!0===this.loop&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this)}stop(e=0){return!1===this.hasPlaybackControl?void Q("Audio: this Audio has no playback control."):(this._progress=0,null!==this.source&&(this.source.stop(this.context.currentTime+e),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;e<t;e++)this.filters[e-1].connect(this.filters[e]);this.filters[this.filters.length-1].connect(this.getOutput())}else this.source.connect(this.getOutput());return this._connected=!0,this}disconnect(){if(!1!==this._connected){if(this.filters.length>0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e<t;e++)this.filters[e-1].disconnect(this.filters[e]);this.filters[this.filters.length-1].disconnect(this.getOutput())}else this.source.disconnect(this.getOutput());return this._connected=!1,this}}getFilters(){return this.filters}setFilters(e){return e||(e=[]),!0===this._connected?(this.disconnect(),this.filters=e.slice(),this.connect()):this.filters=e.slice(),this}setDetune(e){return this.detune=e,!0===this.isPlaying&&void 0!==this.source.detune&&this.source.detune.setTargetAtTime(this.detune,this.context.currentTime,.01),this}getDetune(){return this.detune}getFilter(){return this.getFilters()[0]}setFilter(e){return this.setFilters(e?[e]:[])}setPlaybackRate(e){return!1===this.hasPlaybackControl?void Q("Audio: this Audio has no playback control."):(this.playbackRate=e,!0===this.isPlaying&&this.source.playbackRate.setTargetAtTime(this.playbackRate,this.context.currentTime,.01),this)}getPlaybackRate(){return this.playbackRate}onEnded(){this.isPlaying=!1,this._progress=0}getLoop(){return!1===this.hasPlaybackControl?(Q("Audio: this Audio has no playback control."),!1):this.loop}setLoop(e){return!1===this.hasPlaybackControl?void Q("Audio: this Audio has no playback control."):(this.loop=e,!0===this.isPlaying&&(this.source.loop=this.loop),this)}setLoopStart(e){return this.loopStart=e,this}setLoopEnd(e){return this.loopEnd=e,this}getVolume(){return this.gain.gain.value}setVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}copy(e,t){return(super.copy(e,t),"buffer"!==e.sourceType)?Q("Audio: Audio source type cannot be copied."):(this.autoplay=e.autoplay,this.buffer=e.buffer,this.detune=e.detune,this.loop=e.loop,this.loopStart=e.loopStart,this.loopEnd=e.loopEnd,this.offset=e.offset,this.duration=e.duration,this.playbackRate=e.playbackRate,this.hasPlaybackControl=e.hasPlaybackControl,this.sourceType=e.sourceType,this.filters=e.filters.slice()),this}clone(e){return new this.constructor(this.listener).copy(this,e)}}let s0=new eg,s1=new em,s2=new eg,s3=new eg;class s5 extends sQ{constructor(e){super(e),this.panner=this.context.createPanner(),this.panner.panningModel="HRTF",this.panner.connect(this.gain)}connect(){return super.connect(),this.panner.connect(this.gain),this}disconnect(){return super.disconnect(),this.panner.disconnect(this.gain),this}getOutput(){return this.panner}getRefDistance(){return this.panner.refDistance}setRefDistance(e){return this.panner.refDistance=e,this}getRolloffFactor(){return this.panner.rolloffFactor}setRolloffFactor(e){return this.panner.rolloffFactor=e,this}getDistanceModel(){return this.panner.distanceModel}setDistanceModel(e){return this.panner.distanceModel=e,this}getMaxDistance(){return this.panner.maxDistance}setMaxDistance(e){return this.panner.maxDistance=e,this}setDirectionalCone(e,t,n){return this.panner.coneInnerAngle=e,this.panner.coneOuterAngle=t,this.panner.coneOuterGain=n,this}updateMatrixWorld(e){if(super.updateMatrixWorld(e),!0===this.hasPlaybackControl&&!1===this.isPlaying)return;this.matrixWorld.decompose(s0,s1,s2),s3.set(0,0,1).applyQuaternion(s1);let t=this.panner;if(t.positionX){let e=this.context.currentTime+this.listener.timeDelta;t.positionX.linearRampToValueAtTime(s0.x,e),t.positionY.linearRampToValueAtTime(s0.y,e),t.positionZ.linearRampToValueAtTime(s0.z,e),t.orientationX.linearRampToValueAtTime(s3.x,e),t.orientationY.linearRampToValueAtTime(s3.y,e),t.orientationZ.linearRampToValueAtTime(s3.z,e)}else t.setPosition(s0.x,s0.y,s0.z),t.setOrientation(s3.x,s3.y,s3.z)}}
36class s4{constructor(e,t=2048){this.analyser=e.context.createAnalyser(),this.analyser.fftSize=t,this.data=new Uint8Array(this.analyser.frequencyBinCount),e.getOutput().connect(this.analyser)}getFrequencyData(){return this.analyser.getByteFrequencyData(this.data),this.data}getAverageFrequency(){let e=0,t=this.getFrequencyData();for(let n=0;n<t.length;n++)e+=t[n];return e/t.length}}class s6{constructor(e,t,n){let i,r,a;switch(this.binding=e,this.valueSize=n,t){case"quaternion":i=this._slerp,r=this._slerpAdditive,a=this._setAdditiveIdentityQuaternion,this.buffer=new Float64Array(6*n),this._workIndex=5;break;case"string":case"bool":i=this._select,r=this._select,a=this._setAdditiveIdentityOther,this.buffer=Array(5*n);break;default:i=this._lerp,r=this._lerpAdditive,a=this._setAdditiveIdentityNumeric,this.buffer=new Float64Array(5*n)}this._mixBufferRegion=i,this._mixBufferRegionAdditive=r,this._setIdentity=a,this._origIndex=3,this._addIndex=4,this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,this.useCount=0,this.referenceCount=0}accumulate(e,t){let n=this.buffer,i=this.valueSize,r=e*i+i,a=this.cumulativeWeight;if(0===a){for(let e=0;e!==i;++e)n[r+e]=n[e];a=t}else{a+=t;let e=t/a;this._mixBufferRegion(n,r,0,e,i)}this.cumulativeWeight=a}accumulateAdditive(e){let t=this.buffer,n=this.valueSize,i=n*this._addIndex;0===this.cumulativeWeightAdditive&&this._setIdentity(),this._mixBufferRegionAdditive(t,i,0,e,n),this.cumulativeWeightAdditive+=e}apply(e){let t=this.valueSize,n=this.buffer,i=e*t+t,r=this.cumulativeWeight,a=this.cumulativeWeightAdditive,s=this.binding;if(this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,r<1){let e=t*this._origIndex;this._mixBufferRegion(n,i,e,1-r,t)}a>0&&this._mixBufferRegionAdditive(n,i,this._addIndex*t,1,t);for(let e=t,r=t+t;e!==r;++e)if(n[e]!==n[e+t]){s.setValue(n,i);break}}saveOriginalState(){let e=this.binding,t=this.buffer,n=this.valueSize,i=n*this._origIndex;e.getValue(t,i);for(let e=n;e!==i;++e)t[e]=t[i+e%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){let e=3*this.valueSize;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){let e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let n=e;n<t;n++)this.buffer[n]=0}_setAdditiveIdentityQuaternion(){this._setAdditiveIdentityNumeric(),this.buffer[this._addIndex*this.valueSize+3]=1}_setAdditiveIdentityOther(){let e=this._origIndex*this.valueSize,t=this._addIndex*this.valueSize;for(let n=0;n<this.valueSize;n++)this.buffer[t+n]=this.buffer[e+n]}_select(e,t,n,i,r){if(i>=.5)for(let i=0;i!==r;++i)e[t+i]=e[n+i]}_slerp(e,t,n,i){em.slerpFlat(e,t,e,t,e,n,i)}_slerpAdditive(e,t,n,i,r){let a=this._workIndex*r;em.multiplyQuaternionsFlat(e,a,e,t,e,n),em.slerpFlat(e,t,e,t,e,a,i)}_lerp(e,t,n,i,r){let a=1-i;for(let s=0;s!==r;++s){let r=t+s;e[r]=e[r]*a+e[n+s]*i}}_lerpAdditive(e,t,n,i,r){for(let a=0;a!==r;++a){let r=t+a;e[r]=e[r]+e[n+a]*i}}}let s8="\\[\\]\\.:\\/",s7=RegExp("["+s8+"]","g"),s9="[^"+s8+"]",oe="[^"+s8.replace("\\.","")+"]",ot=RegExp("^"+/((?:WC+[\/:])*)/.source.replace("WC",s9)+/(WCOD+)?/.source.replace("WCOD",oe)+/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",s9)+/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",s9)+"$"),on=["material","materials","bones","map"];class oi{constructor(e,t,n){this.path=t,this.parsedPath=n||oi.parseTrackName(t),this.node=oi.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,n){return e&&e.isAnimationObjectGroup?new oi.Composite(e,t,n):new oi(e,t,n)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(s7,"")}static parseTrackName(e){let t=ot.exec(e);if(null===t)throw Error("PropertyBinding: Cannot parse trackName: "+e);let n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},i=n.nodeName&&n.nodeName.lastIndexOf(".");if(void 0!==i&&-1!==i){let e=n.nodeName.substring(i+1);-1!==on.indexOf(e)&&(n.nodeName=n.nodeName.substring(0,i),n.objectName=e)}if(null===n.propertyName||0===n.propertyName.length)throw Error("PropertyBinding: can not parse propertyName from trackName: "+e);return n}static findNode(e,t){if(void 0===t||""===t||"."===t||-1===t||t===e.name||t===e.uuid)return e;if(e.skeleton){let n=e.skeleton.getBoneByName(t);if(void 0!==n)return n}if(e.children){let n=function(e){for(let i=0;i<e.length;i++){let r=e[i];if(r.name===t||r.uuid===t)return r;let a=n(r.children);if(a)return a}return null},i=n(e.children);if(i)return i}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(e,t){e[t]=this.targetObject[this.propertyName]}_getValue_array(e,t){let n=this.resolvedProperty;for(let i=0,r=n.length;i!==r;++i)e[t++]=n[i]}_getValue_arrayElement(e,t){e[t]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(e,t){this.resolvedProperty.toArray(e,t)}_setValue_direct(e,t){this.targetObject[this.propertyName]=e[t]}_setValue_direct_setNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(e,t){let n=this.resolvedProperty;for(let i=0,r=n.length;i!==r;++i)n[i]=e[t++]}_setValue_array_setNeedsUpdate(e,t){let n=this.resolvedProperty;for(let i=0,r=n.length;i!==r;++i)n[i]=e[t++];this.targetObject.needsUpdate=!0}
vendor: 4,740 bytes, line 36
36_setValue_array_setMatrixWorldNeedsUpdate(e,t){let n=this.resolvedProperty;for(let i=0,r=n.length;i!==r;++i)n[i]=e[t++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(e,t){this.resolvedProperty[this.propertyIndex]=e[t]}_setValue_arrayElement_setNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(e,t){this.resolvedProperty.fromArray(e,t)}_setValue_fromArray_setNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(e,t){this.bind(),this.getValue(e,t)}_setValue_unbound(e,t){this.bind(),this.setValue(e,t)}bind(){let e=this.node,t=this.parsedPath,n=t.objectName,i=t.propertyName,r=t.propertyIndex;if(e||(e=oi.findNode(this.rootNode,t.nodeName),this.node=e),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!e)return void Q("PropertyBinding: No target node found for track: "+this.path+".");if(n){let i=t.objectIndex;switch(n){case"materials":if(!e.material)return void ee("PropertyBinding: Can not bind to material as node does not have a material.",this);if(!e.material.materials)return void ee("PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);e=e.material.materials;break;case"bones":if(!e.skeleton)return void ee("PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);e=e.skeleton.bones;for(let t=0;t<e.length;t++)if(e[t].name===i){i=t;break}break;case"map":if("map"in e){e=e.map;break}if(!e.material)return void ee("PropertyBinding: Can not bind to material as node does not have a material.",this);if(!e.material.map)return void ee("PropertyBinding: Can not bind to material.map as node.material does not have a map.",this);e=e.material.map;break;default:if(void 0===e[n])return void ee("PropertyBinding: Can not bind to objectName of node undefined.",this);e=e[n]}if(void 0!==i){if(void 0===e[i])return void ee("PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,e);e=e[i]}}let a=e[i];if(void 0===a)return void ee("PropertyBinding: Trying to update property for track: "+t.nodeName+"."+i+" but it wasn't found.",e);let s=this.Versioning.None;this.targetObject=e,!0===e.isMaterial?s=this.Versioning.NeedsUpdate:!0===e.isObject3D&&(s=this.Versioning.MatrixWorldNeedsUpdate);let o=this.BindingType.Direct;if(void 0!==r){if("morphTargetInfluences"===i){if(!e.geometry)return void ee("PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);if(!e.geometry.morphAttributes)return void ee("PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);void 0!==e.morphTargetDictionary[r]&&(r=e.morphTargetDictionary[r])}o=this.BindingType.ArrayElement,this.resolvedProperty=a,this.propertyIndex=r}else void 0!==a.fromArray&&void 0!==a.toArray?(o=this.BindingType.HasFromToArray,this.resolvedProperty=a):Array.isArray(a)?(o=this.BindingType.EntireArray,this.resolvedProperty=a):this.propertyName=i;this.getValue=this.GetterByBindingType[o],this.setValue=this.SetterByBindingTypeAndVersioning[o][s]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}}oi.Composite=class{constructor(e,t,n){const i=n||oi.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,i)}getValue(e,t){this.bind();let n=this._targetGroup.nCachedObjects_,i=this._bindings[n];void 0!==i&&i.getValue(e,t)}setValue(e,t){let n=this._bindings;for(let i=this._targetGroup.nCachedObjects_,r=n.length;i!==r;++i)n[i].setValue(e,t)}bind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()}unbind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}},oi.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3},oi.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2},oi.prototype.GetterByBindingType=[oi.prototype._getValue_direct,oi.prototype._getValue_array,oi.prototype._getValue_arrayElement,oi.prototype._getValue_toArray],oi.prototype.SetterByBindingTypeAndVersioning=[[oi.prototype._setValue_direct,oi.prototype._setValue_direct_setNeedsUpdate,oi.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[oi.prototype._setValue_array,oi.prototype._setValue_array_setNeedsUpdate,oi.prototype._setValue_array_setMatr
36ixWorldNeedsUpdate],[oi.prototype._setValue_arrayElement,oi.prototype._setValue_arrayElement_setNeedsUpdate,oi.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[oi.prototype._setValue_fromArray,oi.prototype._setValue_fromArray_setNeedsUpdate,oi.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];class or{constructor(){this.isAnimationObjectGroup=!0,this.uuid=eo(),this._objects=Array.prototype.slice.call(arguments),this.nCachedObjects_=0;const e={};this._indicesByUUID=e;for(let t=0,n=arguments.length;t!==n;++t)e[arguments[t].uuid]=t;this._paths=[],this._parsedPaths=[],this._bindings=[],this._bindingsIndicesByPath={};const t=this;this.stats={objects:{get total(){return t._objects.length},get inUse(){return this.total-t.nCachedObjects_}},get bindingsPerObject(){return t._bindings.length}}}add(){let e=this._objects,t=this._indicesByUUID,n=this._paths,i=this._parsedPaths,r=this._bindings,a=r.length,s,o=e.length,l=this.nCachedObjects_;for(let u=0,c=arguments.length;u!==c;++u){let c=arguments[u],h=c.uuid,d=t[h];if(void 0===d){d=o++,t[h]=d,e.push(c);for(let e=0;e!==a;++e)r[e].push(new oi(c,n[e],i[e]))}else if(d<l){s=e[d];let o=--l,u=e[o];t[u.uuid]=d,e[d]=u,t[h]=o,e[o]=c;for(let e=0;e!==a;++e){let t=r[e],a=t[o],s=t[d];t[d]=a,void 0===s&&(s=new oi(c,n[e],i[e])),t[o]=s}}else e[d]!==s&&ee("AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.")}this.nCachedObjects_=l}remove(){let e=this._objects,t=this._indicesByUUID,n=this._bindings,i=n.length,r=this.nCachedObjects_;for(let a=0,s=arguments.length;a!==s;++a){let s=arguments[a],o=s.uuid,l=t[o];if(void 0!==l&&l>=r){let a=r++,u=e[a];t[u.uuid]=l,e[l]=u,t[o]=a,e[a]=s;for(let e=0;e!==i;++e){let t=n[e],i=t[a],r=t[l];t[l]=i,t[a]=r}}}this.nCachedObjects_=r}uncache(){let e=this._objects,t=this._indicesByUUID,n=this._bindings,i=n.length,r=this.nCachedObjects_,a=e.length;for(let s=0,o=arguments.length;s!==o;++s){let o=arguments[s],l=o.uuid,u=t[l];if(void 0!==u)if(delete t[l],u<r){let s=--r,o=e[s],l=--a,c=e[l];t[o.uuid]=u,e[u]=o,t[c.uuid]=s,e[s]=c,e.pop();for(let e=0;e!==i;++e){let t=n[e],i=t[s],r=t[l];t[u]=i,t[s]=r,t.pop()}}else{let r=--a,s=e[r];r>0&&(t[s.uuid]=u),e[u]=s,e.pop();for(let e=0;e!==i;++e){let t=n[e];t[u]=t[r],t.pop()}}}this.nCachedObjects_=r}subscribe_(e,t){let n=this._bindingsIndicesByPath,i=n[e],r=this._bindings;if(void 0!==i)return r[i];let a=this._paths,s=this._parsedPaths,o=this._objects,l=o.length,u=this.nCachedObjects_,c=Array(l);i=r.length,n[e]=i,a.push(e),s.push(t),r.push(c);for(let n=u,i=o.length;n!==i;++n){let i=o[n];c[n]=new oi(i,e,t)}return c}unsubscribe_(e){let t=this._bindingsIndicesByPath,n=t[e];if(void 0!==n){let i=this._paths,r=this._parsedPaths,a=this._bindings,s=a.length-1,o=a[s];t[e[s]]=n,a[n]=o,a.pop(),r[n]=r[s],r.pop(),i[n]=i[s],i.pop()}}}class oa{constructor(e,t,n=null,i=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=n,this.blendMode=i;const r=t.tracks,a=r.length,s=Array(a),o={endingStart:2400,endingEnd:2400};for(let e=0;e!==a;++e){const t=r[e].createInterpolant(null);s[e]=t,t.settings=o}this._interpolantSettings=o,this._interpolants=s,this._propertyBindings=Array(a),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=2201,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&&0!==this.timeScale&&null===this._startTime&&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}
36fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,n=!1){if(e.fadeOut(t),this.fadeIn(t),!0===n){let n=this._clip.duration,i=e._clip.duration;e.warp(1,i/n,t),this.warp(n/i,1,t)}return this}crossFadeTo(e,t,n=!1){return e.crossFadeFrom(this,t,n)}stopFading(){let e=this._weightInterpolant;return null!==e&&(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,n){let i=this._mixer,r=i.time,a=this.timeScale,s=this._timeScaleInterpolant;null===s&&(s=i._lendControlInterpolant(),this._timeScaleInterpolant=s);let o=s.parameterPositions,l=s.sampleValues;return o[0]=r,o[1]=r+n,l[0]=e/a,l[1]=t/a,this}stopWarping(){let e=this._timeScaleInterpolant;return null!==e&&(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,n,i){if(!this.enabled)return void this._updateWeight(e);let r=this._startTime;if(null!==r){let i=(e-r)*n;i<0||0===n?t=0:(this._startTime=null,t=n*i)}t*=this._updateTimeScale(e);let a=this._updateTime(t),s=this._updateWeight(e);if(s>0){let e=this._interpolants,t=this._propertyBindings;if(2501===this.blendMode)for(let n=0,i=e.length;n!==i;++n)e[n].evaluate(a),t[n].accumulateAdditive(s);else for(let n=0,r=e.length;n!==r;++n)e[n].evaluate(a),t[n].accumulate(i,s)}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;let n=this._weightInterpolant;if(null!==n){let i=n.evaluate(e)[0];t*=i,e>n.parameterPositions[1]&&(this.stopFading(),0===i&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;let n=this._timeScaleInterpolant;null!==n&&(t*=n.evaluate(e)[0],e>n.parameterPositions[1]&&(this.stopWarping(),0===t?this.paused=!0:this.timeScale=t))}return this._effectiveTimeScale=t,t}_updateTime(e){let t=this._clip.duration,n=this.loop,i=this.time+e,r=this._loopCount,a=2202===n;if(0===e)return -1===r?i:a&&(1&r)==1?t-i:i;if(2200===n){-1===r&&(this._loopCount=0,this._setEndings(!0,!0,!1));s:{if(i>=t)i=t;else if(i<0)i=0;else{this.time=i;break s}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=i,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(-1===r&&(e>=0?(r=0,this._setEndings(!0,0===this.repetitions,a)):this._setEndings(0===this.repetitions,!0,a)),i>=t||i<0){let n=Math.floor(i/t);i-=t*n,r+=Math.abs(n);let s=this.repetitions-r;if(s<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,i=e>0?t:0,this.time=i,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(1===s){let t=e<0;this._setEndings(t,!t,a)}else this._setEndings(!1,!1,a);this._loopCount=r,this.time=i,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:n})}}else this.time=i;if(a&&(1&r)==1)return t-i}return i}_setEndings(e,t,n){let i=this._interpolantSettings;n?(i.endingStart=2401,i.endingEnd=2401):(e?i.endingStart=this.zeroSlopeAtStart?2401:2400:i.endingStart=2402,t?i.endingEnd=this.zeroSlopeAtEnd?2401:2400:i.endingEnd=2402)}_scheduleFading(e,t,n){let i=this._mixer,r=i.time,a=this._weightInterpolant;null===a&&(a=i._lendControlInterpolant(),this._weightInterpolant=a);let s=a.parameterPositions,o=a.sampleValues;return s[0]=r,o[0]=t,s[1]=r+e,o[1]=n,this}}let os=new Float32Array(1);class oo extends en{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){let n=e._localRoot||this._root,i=e._clip.tracks,r=i.length,a=e._propertyBindings,s=e._interpolants,o=n.uuid,l=this._bindingsByRootAndName,u=l[o];void 0===u&&(u={},l[o]=u);for(let e=0;e!==r;++e){let r=i[e],l=r.name,c=u[l];
36if(void 0!==c)++c.referenceCount,a[e]=c;else{if(void 0!==(c=a[e])){null===c._cacheIndex&&(++c.referenceCount,this._addInactiveBinding(c,o,l));continue}let i=t&&t._propertyBindings[e].binding.parsedPath;c=new s6(oi.create(n,l,i),r.ValueTypeName,r.getValueSize()),++c.referenceCount,this._addInactiveBinding(c,o,l),a[e]=c}s[e].resultBuffer=c.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(null===e._cacheIndex){let t=(e._localRoot||this._root).uuid,n=e._clip.uuid,i=this._actionsByClip[n];this._bindAction(e,i&&i.knownActions[0]),this._addInactiveAction(e,n,t)}let t=e._propertyBindings;for(let e=0,n=t.length;e!==n;++e){let n=t[e];0==n.useCount++&&(this._lendBinding(n),n.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){let t=e._propertyBindings;for(let e=0,n=t.length;e!==n;++e){let n=t[e];0==--n.useCount&&(n.restoreOriginalState(),this._takeBackBinding(n))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;let 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){let t=e._cacheIndex;return null!==t&&t<this._nActiveActions}_addInactiveAction(e,t,n){let i=this._actions,r=this._actionsByClip,a=r[t];if(void 0===a)a={knownActions:[e],actionByRoot:{}},e._byClipCacheIndex=0,r[t]=a;else{let t=a.knownActions;e._byClipCacheIndex=t.length,t.push(e)}e._cacheIndex=i.length,i.push(e),a.actionByRoot[n]=e}_removeInactiveAction(e){let t=this._actions,n=t[t.length-1],i=e._cacheIndex;n._cacheIndex=i,t[i]=n,t.pop(),e._cacheIndex=null;let r=e._clip.uuid,a=this._actionsByClip,s=a[r],o=s.knownActions,l=o[o.length-1],u=e._byClipCacheIndex;l._byClipCacheIndex=u,o[u]=l,o.pop(),e._byClipCacheIndex=null;let c=s.actionByRoot,h=(e._localRoot||this._root).uuid;delete c[h],0===o.length&&delete a[r],this._removeInactiveBindingsForAction(e)}_removeInactiveBindingsForAction(e){let t=e._propertyBindings;for(let e=0,n=t.length;e!==n;++e){let n=t[e];0==--n.referenceCount&&this._removeInactiveBinding(n)}}_lendAction(e){let t=this._actions,n=e._cacheIndex,i=this._nActiveActions++,r=t[i];e._cacheIndex=i,t[i]=e,r._cacheIndex=n,t[n]=r}_takeBackAction(e){let t=this._actions,n=e._cacheIndex,i=--this._nActiveActions,r=t[i];e._cacheIndex=i,t[i]=e,r._cacheIndex=n,t[n]=r}_addInactiveBinding(e,t,n){let i=this._bindingsByRootAndName,r=this._bindings,a=i[t];void 0===a&&(a={},i[t]=a),a[n]=e,e._cacheIndex=r.length,r.push(e)}_removeInactiveBinding(e){let t=this._bindings,n=e.binding,i=n.rootNode.uuid,r=n.path,a=this._bindingsByRootAndName,s=a[i],o=t[t.length-1],l=e._cacheIndex;o._cacheIndex=l,t[l]=o,t.pop(),delete s[r],0===Object.keys(s).length&&delete a[i]}_lendBinding(e){let t=this._bindings,n=e._cacheIndex,i=this._nActiveBindings++,r=t[i];e._cacheIndex=i,t[i]=e,r._cacheIndex=n,t[n]=r}_takeBackBinding(e){let t=this._bindings,n=e._cacheIndex,i=--this._nActiveBindings,r=t[i];e._cacheIndex=i,t[i]=e,r._cacheIndex=n,t[n]=r}_lendControlInterpolant(){let e=this._controlInterpolants,t=this._nActiveControlInterpolants++,n=e[t];return void 0===n&&((n=new a$(new Float32Array(2),new Float32Array(2),1,os)).__cacheIndex=t,e[t]=n),n}_takeBackControlInterpolant(e){let t=this._controlInterpolants,n=e.__cacheIndex,i=--this._nActiveControlInterpolants,r=t[i];e.__cacheIndex=i,t[i]=e,r.__cacheIndex=n,t[n]=r}clipAction(e,t,n){let i=t||this._root,r=i.uuid,a="string"==typeof e?a8.findByName(i,e):e,s=null!==a?a.uuid:e,o=this._actionsByClip[s],l=null;if(void 0===n&&(n=null!==a?a.blendMode:2500),void 0!==o){let e=o.actionByRoot[r];if(void 0!==e&&e.blendMode===n)return e;l=o.knownActions[0],null===a&&(a=l._clip)}if(null===a)return null;let u=new oa(this,a,t,n);return this._bindAction(u,l),this._addInactiveAction(u,s,r),u}existingAction(e,t){let n=t||this._root,i=n.uuid,r="string"==typeof e?a8.findByName(n,e):e,a=r?r.uuid:e,s=this._actionsByClip[a];return void 0!==s&&s.actionByRoot[i]||null}stopAllAction(){let e=this._actions,t=this._nActiveActions;for(let n=t-1;n>=0;--n)e[n].stop();return this}update(e){e*=this.timeScale;let t=this._actions,n=this._nActiveActions,i=this.time+=e,r=Math.sign(e),a=this._accuIndex^=1;for(let s=0;s!==n;++s)t[s]._update(i,e,r,a);let s=this._bindings,o=this._nActiveBindings;for(let e=0;e!==o;++e)s[e].apply(a);return this}setTime(e){this.time=0;for(let e=0;e<this._actions.length;e++)this._actions[e].time=0;return this.update(e)}getRoot(){return this._root}uncacheClip(e){let t=this._actions,n=e.uuid,i=this._actionsByClip,r=i[n];if(void 0!==r){let e=r.knownActions;for(let n=0,i=e.length;n!==i;++n){let i=e[n];this._deactivateAction(i);let r=i._cacheIndex,a=t[t.length-1];i._cacheIndex=null,i._byClipCacheIndex=null,a._cacheIndex=r,t[r]=a,t.pop(),this._removeInactiveBindingsForAction(i)}delete i[n]}}uncacheRoot(e){let t=e.uuid,n=this._actionsByClip;for(let e in n){let i=n[e].actionByRoot[t];void 0!==i&&(this._deactivateAction(i),this._removeInactiveAction(i))}let i=this._bindingsByRootAndName[t];if(void 0!==i)for(let e in i){let t=i[e];t.restoreOriginalState(),this._removeInactiveBinding(t)}}uncacheAction(e,t){let n=this.existingAction(e,t);null!==n&&(this._deactivateAction(n),this._removeInactiveAction(n))}}class ol extends eD{constructor(e=1,t=1,n=1,i={}){super(e,t,i),this.isRenderTarget3D=!0,this.depth=n,this.texture=new ek(null,e,t,n),this._setTextureOptions(i),this.texture.isRenderTargetTexture=!0}}class ou{constructor(e){this.value=e}clone(){return new ou(void 0===this.value.clone?this.value:this.value.clone())}}let oc=0;class oh extends en{constructor(){super(),this.isUniformsGroup=!0,Object.defineProperty(this,"id",{value:oc++}),this.name="",this.usage=35044,this.uniforms=[]}add(e){return this.uniforms.push(e),this}remove(e){let t=this.uniforms.indexOf(e);return -1!==t&&this.uniforms.splice(t,1),this}setName(e){return this.name=e,this}setUsage(e){return this.usage=e,this}dispose(){this.dispatchEvent({type:"dispose"})}copy(e){this.name=e.name,this.usage=e.usage;let t=e.uniforms;this.uniforms.length=0;for(let e=0,n=t.length;e<n;e++){let n=Array.isArray(t[e])?t[e]:[t[e]];for(let e=0;e<n.length;e++)this.uniforms.push(n[e].clone())}return this}clone(){return new this.constructor().copy(this)}}class od extends nY{constructor(e,t,n=1){super(e,t),this.isInstancedInterleavedBuffer=!0,this.meshPerAttribute=n}copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,this}clone(e){let t=super.clone(e);return t.meshPerAttribute=this.meshPerAttribute,t}toJSON(e){let t=super.toJSON(e);return t.isInstancedInterleavedBuffer=!0,t.meshPerAttribute=this.meshPerAttribute,t}}class op{constructor(e,t,n,i,r,a=!1){this.isGLBufferAttribute=!0,this.name="",this.buffer=e,this.type=t,this.itemSize=n,this.elementSize=i,this.count=r,this.normalized=a,this.version=0}set needsUpdate(e){!0===e&&this.version++}setBuffer(e){return this.buffer=e,this}setType(e,t){return this.type=e,this.elementSize=t,this}setItemSize(e){return this.itemSize=e,this}setCount(e){return this.count=e,this}}let of=new ti;class om{constructor(e,t,n=0,i=1/0){this.ray=new tn(e,t),this.near=n,this.far=i,this.camera=null,this.layers=new tf,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}}}set(e,t){this.ray.set(e,t)}setFromCamera(e,t){t.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,(t.near+t.far)/(t.near-t.far)).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):ee("Raycaster:
36Unsupported camera type: "+t.type)}setFromXRController(e){return of.identity().extractRotation(e.matrixWorld),this.ray.origin.setFromMatrixPosition(e.matrixWorld),this.ray.direction.set(0,0,-1).applyMatrix4(of),this}intersectObject(e,t=!0,n=[]){return ov(e,this,n,t),n.sort(og),n}intersectObjects(e,t=!0,n=[]){for(let i=0,r=e.length;i<r;i++)ov(e[i],this,n,t);return n.sort(og),n}}function og(e,t){return e.distance-t.distance}function ov(e,t,n,i){let r=!0;if(e.layers.test(t.layers)&&!1===e.raycast(t,n)&&(r=!1),!0===r&&!0===i){let i=e.children;for(let e=0,r=i.length;e<r;e++)ov(i[e],t,n,!0)}}class ox{constructor(){this._previousTime=0,this._currentTime=0,this._startTime=performance.now(),this._delta=0,this._elapsed=0,this._timescale=1,this._document=null,this._pageVisibilityHandler=null}connect(e){this._document=e,void 0!==e.hidden&&(this._pageVisibilityHandler=oy.bind(this),e.addEventListener("visibilitychange",this._pageVisibilityHandler,!1))}disconnect(){null!==this._pageVisibilityHandler&&(this._document.removeEventListener("visibilitychange",this._pageVisibilityHandler),this._pageVisibilityHandler=null),this._document=null}getDelta(){return this._delta/1e3}getElapsed(){return this._elapsed/1e3}getTimescale(){return this._timescale}setTimescale(e){return this._timescale=e,this}reset(){return this._currentTime=performance.now()-this._startTime,this}dispose(){this.disconnect()}update(e){return null!==this._pageVisibilityHandler&&!0===this._document.hidden?this._delta=0:(this._previousTime=this._currentTime,this._currentTime=(void 0!==e?e:performance.now())-this._startTime,this._delta=(this._currentTime-this._previousTime)*this._timescale,this._elapsed+=this._delta),this}}function oy(){!1===this._document.hidden&&this.reset()}class o_{constructor(e=1,t=0,n=0){this.radius=e,this.phi=t,this.theta=n}set(e,t,n){return this.radius=e,this.phi=t,this.theta=n,this}copy(e){return this.radius=e.radius,this.phi=e.phi,this.theta=e.theta,this}makeSafe(){return this.phi=el(this.phi,1e-6,Math.PI-1e-6),this}setFromVector3(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}setFromCartesianCoords(e,t,n){return this.radius=Math.sqrt(e*e+t*t+n*n),0===this.radius?(this.theta=0,this.phi=0):(this.theta=Math.atan2(e,n),this.phi=Math.acos(el(t/this.radius,-1,1))),this}clone(){return new this.constructor().copy(this)}}class ob{constructor(e=1,t=0,n=0){this.radius=e,this.theta=t,this.y=n}set(e,t,n){return this.radius=e,this.theta=t,this.y=n,this}copy(e){return this.radius=e.radius,this.theta=e.theta,this.y=e.y,this}setFromVector3(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}setFromCartesianCoords(e,t,n){return this.radius=Math.sqrt(e*e+n*n),this.theta=Math.atan2(e,n),this.y=t,this}clone(){return new this.constructor().copy(this)}}class oS{constructor(e,t,n,i){oS.prototype.isMatrix2=!0,this.elements=[1,0,0,1],void 0!==e&&this.set(e,t,n,i)}identity(){return this.set(1,0,0,1),this}fromArray(e,t=0){for(let n=0;n<4;n++)this.elements[n]=e[n+t];return this}set(e,t,n,i){let r=this.elements;return r[0]=e,r[2]=t,r[1]=n,r[3]=i,this}}let oM=new ef;class ow{constructor(e=new ef(Infinity,Infinity),t=new ef(-1/0,-1/0)){this.isBox2=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromPoints(e){this.makeEmpty();for(let t=0,n=e.length;t<n;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){let n=oM.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(n),this.max.copy(e).add(n),this}clone(){return new this.constructor().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=Infinity,this.max.x=this.max.y=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y}getCenter(e){return this.isEmpty()?e.set(0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}containsPoint(e){return e.x>=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.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.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,oM).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)}}let oT=new eg,oE=new eg,oC=new eg,oA=new eg,oR=new eg,oL=new eg,oP=new eg;class oI{constructor(e=new eg,t=new eg){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){oT.subVectors(e,this.start),oE.subVectors(this.end,this.start);let n=oE.dot(oE),i=oE.dot(oT)/n;return t&&(i=el(i,0,1)),i}closestPointToPoint(e,t,n){let i=this.closestPointToPointParameter(e,t);return this.delta(n).multiplyScalar(i).add(this.start)}
36distanceSqToLine3(e,t=oL,n=oP){let i,r,a=1e-8*1e-8,s=this.start,o=e.start,l=this.end,u=e.end;oC.subVectors(l,s),oA.subVectors(u,o),oR.subVectors(s,o);let c=oC.dot(oC),h=oA.dot(oA),d=oA.dot(oR);if(c<=a&&h<=a)return t.copy(s),n.copy(o),t.sub(n),t.dot(t);if(c<=a)i=0,r=el(r=d/h,0,1);else{let e=oC.dot(oR);if(h<=a)r=0,i=el(-e/c,0,1);else{let t=oC.dot(oA),n=c*h-t*t;i=0!==n?el((t*d-e*h)/n,0,1):0,(r=(t*i+d)/h)<0?(r=0,i=el(-e/c,0,1)):r>1&&(r=1,i=el((t-e)/c,0,1))}}return t.copy(s).add(oC.multiplyScalar(i)),n.copy(o).add(oA.multiplyScalar(r)),t.sub(n),t.dot(t)}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)}}let oN=new eg;class oD extends tL{constructor(e,t){super(),this.light=e,this.matrixAutoUpdate=!1,this.color=t,this.type="SpotLightHelper";const n=new nf,i=[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 e=0,t=1;e<32;e++,t++){const n=e/32*Math.PI*2,r=t/32*Math.PI*2;i.push(Math.cos(n),Math.sin(n),1,Math.cos(r),Math.sin(r),1)}n.setAttribute("position",new ns(i,3));const r=new i4({fog:!1,toneMapped:!1});this.cone=new ro(n,r),this.add(this.cone),this.update()}dispose(){this.cone.geometry.dispose(),this.cone.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1),this.parent?(this.parent.updateWorldMatrix(!0),this.matrix.copy(this.parent.matrixWorld).invert().multiply(this.light.matrixWorld)):this.matrix.copy(this.light.matrixWorld),this.matrixWorld.copy(this.light.matrixWorld);let e=this.light.distance?this.light.distance:1e3,t=e*Math.tan(this.light.angle);this.cone.scale.set(t,t,e),oN.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(oN),void 0!==this.color?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}}let oU=new eg,oF=new ti,oO=new ti;class ok extends ro{constructor(e){const t=function e(t){let n=[];!0===t.isBone&&n.push(t);for(let i=0;i<t.children.length;i++)n.push(...e(t.children[i]));return n}(e),n=new nf,i=[],r=[];for(let e=0;e<t.length;e++){const n=t[e];n.parent&&n.parent.isBone&&(i.push(0,0,0),i.push(0,0,0),r.push(0,0,0),r.push(0,0,0))}n.setAttribute("position",new ns(i,3)),n.setAttribute("color",new ns(r,3)),super(n,new i4({vertexColors:!0,depthTest:!1,depthWrite:!1,toneMapped:!1,transparent:!0})),this.isSkeletonHelper=!0,this.type="SkeletonHelper",this.root=e,this.bones=t,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1;const a=new tZ(255),s=new tZ(65280);this.setColors(a,s)}updateMatrixWorld(e){let t=this.bones,n=this.geometry,i=n.getAttribute("position");oO.copy(this.root.matrixWorld).invert();for(let e=0,n=0;e<t.length;e++){let r=t[e];r.parent&&r.parent.isBone&&(oF.multiplyMatrices(oO,r.matrixWorld),oU.setFromMatrixPosition(oF),i.setXYZ(n,oU.x,oU.y,oU.z),oF.multiplyMatrices(oO,r.parent.matrixWorld),oU.setFromMatrixPosition(oF),i.setXYZ(n+1,oU.x,oU.y,oU.z),n+=2)}n.getAttribute("position").needsUpdate=!0,super.updateMatrixWorld(e)}setColors(e,t){let n=this.geometry.getAttribute("color");for(let i=0;i<n.count;i+=2)n.setXYZ(i,e.r,e.g,e.b),n.setXYZ(i+1,t.r,t.g,t.b);return n.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class oz extends nE{constructor(e,t,n){super(new aw(t,4,2),new tQ({wireframe:!0,fog:!1,toneMapped:!1})),this.light=e,this.color=n,this.type="PointLightHelper",this.matrix=this.light.matrixWorld,this.matrixAutoUpdate=!1,this.update()}dispose(){this.geometry.dispose(),this.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),void 0!==this.color?this.material.color.set(this.color):this.material.color.copy(this.light.color)}}let oB=new eg,oV=new tZ,oH=new tZ;class oj extends tL{constructor(e,t,n){super(),this.light=e,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=n,this.type="HemisphereLightHelper";const i=new a_(t);i.rotateY(.5*Math.PI),this.material=new tQ({wireframe:!0,fog:!1,toneMapped:!1}),void 0===this.color&&(this.material.vertexColors=!0);const r=new Float32Array(3*i.getAttribute("position").count);i.setAttribute("color",new t8(r,3)),this.add(new nE(i,this.material)),this.update()}dispose(){this.children[0].geometry.dispose(),this.children[0].material.dispose()}update(){let e=this.children[0];if(void 0!==this.color)this.material.color.set(this.color);else{let t=e.geometry.getAttribute("color");oV.copy(this.light.color),oH.copy(this.light.groundColor);for(let e=0,n=t.count;e<n;e++){let i=e<n/2?oV:oH;t.setXYZ(e,i.r,i.g,i.b)}t.needsUpdate=!0}this.light.updateWorldMatrix(!0,!1),e.lookAt(oB.setFromMatrixPosition(this.light.matrixWorld).negate())}}class oG extends ro{constructor(e=10,t=10,n=4473924,i=8947848){n=new tZ(n),i=new tZ(i);const r=t/2,a=e/t,s=e/2,o=[],l=[];for(let e=0,u=0,c=-s;e<=t;e++,c+=a){o.push(-s,0,c,s,0,c),o.push(c,0,-s,c,0,s);const t=e===r?n:i;t.toArray(l,u),u+=3,t.toArray(l,u),u+=3,t.toArray(l,u),u+=3,t.toArray(l,u),u+=3}const u=new nf;u.setAttribute("position",new ns(o,3)),u.setAttribute("color",new ns(l,3)),super(u,new i4({vertexColors:!0,toneMapped:!1})),this.type="GridHelper"}dispose(){this.geometry.dispose(),this.material.dispose()}}class oW extends ro{constructor(e=10,t=16,n=8,i=64,r=4473924,a=8947848){r=new tZ(r),a=new tZ(a);const s=[],o=[];if(t>1)for(let n=0;n<t;n++){const i=n/t*(2*Math.PI),l=Math.sin(i)*e,u=Math.cos(i)*e;s.push(0,0,0),s.push(l,0,u);const c=1&n?r:a;o.push(c.r,c.g,c.b),o.push(c.r,c.g,c.b)}for(let t=0;t<n;t++){const l=1&t?r:a,u=e-e/n*t;for(let e=0;e<i;e++){let t=e/i*(2*Math.PI),n=Math.sin(t)*u,r=Math.cos(t)*u;s.push(n,0,r),o.push(l.r,l.g,l.b),n=Math.sin(t=(e+1)/i*(2*Math.PI))*u,r=Math.cos(t)*u,s.push(n,0,r),o.push(l.r,l.g,l.b)}}const l=new nf;l.setAttribute("position",new ns(s,3)),l.setAttribute("color",new ns(o,3)),super(l,new i4({vertexColors:!0,toneMapped:!1})),this.type="PolarGridHelper"}dispose(){this.geometry.dispose(),this.material.dispose()}}let oX=new eg,oq=new eg,oY=new eg;class oZ extends tL{constructor(e,t,n){super(),this.light=e,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=n,this.type="DirectionalLightHelper",void 0===t&&(t=1);let i=new nf;i.setAttribute("position",new ns([-t,t,0,t,t,0,t,-t,0,-t,-t,0,-t,t,0],3));const r=new i4({fog:!1,toneMapped:!1});this.lightPlane=new ri(i,r),this.add(this.lightPlane),(i=new nf).setAttribute("position",new ns([0,0,0,0,0,1],3)),this.targetLine=new ri(i,r),this.add(this.targetLine),this.update()}dispose(){this.lightPlane.geometry.dispose(),this.lightPlane.material.dispose(),this.targetLine.geometry.dispose(),this.targetLine.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1),oX.setFromMatrixPosition(this.light.matrixWorld),oq.setFromMatrixPosition(this.light.target.matrixWorld),oY.subVectors(oq,oX),this.lightPlane.lookAt(oq),void 0!==this.color?(this.lightPlane.material.color.set(this.color),this.targetLine.material.color.set(this.color)):(this.lightPlane.material.color.copy(this.light.color),this.targetLine.material.color.copy(this.light.color)),this.targetLine.lookAt(oq),this.targetLine.scale.z
36=oY.length()}}let oJ=new eg,o$=new nD;class oK extends ro{constructor(e){const t=new nf,n=new i4({color:0xffffff,vertexColors:!0,toneMapped:!1}),i=[],r=[],a={};function s(e,t){o(e),o(t)}function o(e){i.push(0,0,0),r.push(0,0,0),void 0===a[e]&&(a[e]=[]),a[e].push(i.length/3-1)}s("n1","n2"),s("n2","n4"),s("n4","n3"),s("n3","n1"),s("f1","f2"),s("f2","f4"),s("f4","f3"),s("f3","f1"),s("n1","f1"),s("n2","f2"),s("n3","f3"),s("n4","f4"),s("p","n1"),s("p","n2"),s("p","n3"),s("p","n4"),s("u1","u2"),s("u2","u3"),s("u3","u1"),s("c","t"),s("p","c"),s("cn1","cn2"),s("cn3","cn4"),s("cf1","cf2"),s("cf3","cf4"),t.setAttribute("position",new ns(i,3)),t.setAttribute("color",new ns(r,3)),super(t,n),this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update();const l=new tZ(0xffaa00),u=new tZ(0xff0000),c=new tZ(43775),h=new tZ(0xffffff),d=new tZ(3355443);this.setColors(l,u,c,h,d)}setColors(e,t,n,i,r){let a=this.geometry.getAttribute("color");return a.setXYZ(0,e.r,e.g,e.b),a.setXYZ(1,e.r,e.g,e.b),a.setXYZ(2,e.r,e.g,e.b),a.setXYZ(3,e.r,e.g,e.b),a.setXYZ(4,e.r,e.g,e.b),a.setXYZ(5,e.r,e.g,e.b),a.setXYZ(6,e.r,e.g,e.b),a.setXYZ(7,e.r,e.g,e.b),a.setXYZ(8,e.r,e.g,e.b),a.setXYZ(9,e.r,e.g,e.b),a.setXYZ(10,e.r,e.g,e.b),a.setXYZ(11,e.r,e.g,e.b),a.setXYZ(12,e.r,e.g,e.b),a.setXYZ(13,e.r,e.g,e.b),a.setXYZ(14,e.r,e.g,e.b),a.setXYZ(15,e.r,e.g,e.b),a.setXYZ(16,e.r,e.g,e.b),a.setXYZ(17,e.r,e.g,e.b),a.setXYZ(18,e.r,e.g,e.b),a.setXYZ(19,e.r,e.g,e.b),a.setXYZ(20,e.r,e.g,e.b),a.setXYZ(21,e.r,e.g,e.b),a.setXYZ(22,e.r,e.g,e.b),a.setXYZ(23,e.r,e.g,e.b),a.setXYZ(24,t.r,t.g,t.b),a.setXYZ(25,t.r,t.g,t.b),a.setXYZ(26,t.r,t.g,t.b),a.setXYZ(27,t.r,t.g,t.b),a.setXYZ(28,t.r,t.g,t.b),a.setXYZ(29,t.r,t.g,t.b),a.setXYZ(30,t.r,t.g,t.b),a.setXYZ(31,t.r,t.g,t.b),a.setXYZ(32,n.r,n.g,n.b),a.setXYZ(33,n.r,n.g,n.b),a.setXYZ(34,n.r,n.g,n.b),a.setXYZ(35,n.r,n.g,n.b),a.setXYZ(36,n.r,n.g,n.b),a.setXYZ(37,n.r,n.g,n.b),a.setXYZ(38,i.r,i.g,i.b),a.setXYZ(39,i.r,i.g,i.b),a.setXYZ(40,r.r,r.g,r.b),a.setXYZ(41,r.r,r.g,r.b),a.setXYZ(42,r.r,r.g,r.b),a.setXYZ(43,r.r,r.g,r.b),a.setXYZ(44,r.r,r.g,r.b),a.setXYZ(45,r.r,r.g,r.b),a.setXYZ(46,r.r,r.g,r.b),a.setXYZ(47,r.r,r.g,r.b),a.setXYZ(48,r.r,r.g,r.b),a.setXYZ(49,r.r,r.g,r.b),a.needsUpdate=!0,this}update(){let e,t,n=this.geometry,i=this.pointMap;if(o$.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),!0===this.camera.reversedDepth)e=1,t=0;else if(2e3===this.camera.coordinateSystem)e=-1,t=1;else if(2001===this.camera.coordinateSystem)e=0,t=1;else throw Error("THREE.CameraHelper.update(): Invalid coordinate system: "+this.camera.coordinateSystem);oQ("c",i,n,o$,0,0,e),oQ("t",i,n,o$,0,0,t),oQ("n1",i,n,o$,-1,-1,e),oQ("n2",i,n,o$,1,-1,e),oQ("n3",i,n,o$,-1,1,e),oQ("n4",i,n,o$,1,1,e),oQ("f1",i,n,o$,-1,-1,t),oQ("f2",i,n,o$,1,-1,t),oQ("f3",i,n,o$,-1,1,t),oQ("f4",i,n,o$,1,1,t),oQ("u1",i,n,o$,.7,1.1,e),oQ("u2",i,n,o$,-.7,1.1,e),oQ("u3",i,n,o$,0,2,e),oQ("cf1",i,n,o$,-1,0,t),oQ("cf2",i,n,o$,1,0,t),oQ("cf3",i,n,o$,0,-1,t),oQ("cf4",i,n,o$,0,1,t),oQ("cn1",i,n,o$,-1,0,e),oQ("cn2",i,n,o$,1,0,e),oQ("cn3",i,n,o$,0,-1,e),oQ("cn4",i,n,o$,0,1,e),n.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}}function oQ(e,t,n,i,r,a,s){oJ.set(r,a,s).unproject(i);let o=t[e];if(void 0!==o){let e=n.getAttribute("position");for(let t=0,n=o.length;t<n;t++)e.setXYZ(o[t],oJ.x,oJ.y,oJ.z)}}let o0=new eB;class o1 extends ro{constructor(e,t=0xffff00){const n=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),i=new Float32Array(24),r=new nf;r.setIndex(new t8(n,1)),r.setAttribute("position",new t8(i,3)),super(r,new i4({color:t,toneMapped:!1})),this.object=e,this.type="BoxHelper",this.matrixAutoUpdate=!1,this.update()}update(){if(void 0!==this.object&&o0.setFromObject(this.object),o0.isEmpty())return;let e=o0.min,t=o0.max,n=this.geometry.attributes.position,i=n.array;i[0]=t.x,i[1]=t.y,i[2]=t.z,i[3]=e.x,i[4]=t.y,i[5]=t.z,i[6]=e.x,i[7]=e.y,i[8]=t.z,i[9]=t.x,i[10]=e.y,i[11]=t.z,i[12]=t.x,i[13]=t.y,i[14]=e.z,i[15]=e.x,i[16]=t.y,i[17]=e.z,i[18]=e.x,i[19]=e.y,i[20]=e.z,i[21]=t.x,i[22]=e.y,i[23]=e.z,n.needsUpdate=!0,this.geometry.computeBoundingSphere()}setFromObject(e){return this.object=e,this.update(),this}copy(e,t){return super.copy(e,t),this.object=e.object,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class o2 extends ro{constructor(e,t=0xffff00){const n=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),i=new nf;i.setIndex(new t8(n,1)),i.setAttribute("position",new ns([1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1],3)),super(i,new i4({color:t,toneMapped:!1})),this.box=e,this.type="Box3Helper",this.geometry.computeBoundingSphere()}updateMatrixWorld(e){let t=this.box;t.isEmpty()||(t.getCenter(this.position),t.getSize(this.scale),this.scale.multiplyScalar(.5),super.updateMatrixWorld(e))}dispose(){this.geometry.dispose(),this.material.dispose()}}class o3 extends ri{constructor(e,t=1,n=0xffff00){const i=new nf;i.setAttribute("position",new ns([1,-1,0,-1,1,0,-1,-1,0,1,1,0,-1,1,0,-1,-1,0,1,-1,0,1,1,0],3)),i.computeBoundingSphere(),super(i,new i4({color:n,toneMapped:!1})),this.type="PlaneHelper",this.plane=e,this.size=t;const r=new nf;r.setAttribute("position",new ns([1,1,0,-1,1,0,-1,-1,0,1,1,0,-1,-1,0,1,-1,0],3)),r.computeBoundingSphere(),this.add(new nE(r,new tQ({color:n,opacity:.2,transparent:!0,depthWrite:!1,toneMapped:!1})))}updateMatrixWorld(e){this.position.set(0,0,0),this.scale.set(.5*this.size,.5*this.size,1),this.lookAt(this.plane.normal),this.translateZ(-this.plane.constant),super.updateMatrixWorld(e)}dispose(){this.geometry.dispose(),this.material.dispose(),this.children[0].geometry.dispose(),this.children[0].material.dispose()}}let o5=new eg;class o4 extends tL{constructor(e=new eg(0,0,1),t=new eg(0,0,0),n=1,i=0xffff00,s=.2*n,o=.2*s){super(),this.type="ArrowHelper",void 0===r&&((r=new nf).setAttribute("position",new ns([0,0,0,0,1,0],3)),(a=new rR(.5,1,5,1)).translate(0,-.5,0)),this.position.copy(t),this.line=new ri(r,new i4({color:i,toneMapped:!1})),this.line.matrixAutoUpdate=!1,this.add(this.line),this.cone=new nE(a,new tQ({color:i,toneMapped:!1})),this.cone.matrixAutoUpdate=!1,this.add(this.cone),this.setDirection(e),this.setLength(n,s,o)}setDirection(e){if(e.y>.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{o5.set(e.z,0,-e.x).normalize();let t=Math.acos(e.y);this.quaternion.setFromAxisAngle(o5,t)}}setLength(e,t=.2*e,n=.2*t){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(n,t,n),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 o6 extends ro{constructor(e=1){const t=new nf;t.setAttribute("position",new ns([0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],3)),t.setAttribute("color",new ns([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3)),super(t,new i4({vertexColors:!0,toneMapped:!1})),this.type="AxesHelper"}
36setColors(e,t,n){let i=new tZ,r=this.geometry.attributes.color.array;return i.set(e),i.toArray(r,0),i.toArray(r,3),i.set(t),i.toArray(r,6),i.toArray(r,9),i.set(n),i.toArray(r,12),i.toArray(r,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class o8{constructor(){this.type="ShapePath",this.color=new tZ,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new r5,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,n,i){return this.currentPath.quadraticCurveTo(e,t,n,i),this}bezierCurveTo(e,t,n,i,r,a){return this.currentPath.bezierCurveTo(e,t,n,i,r,a),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){let t,n,i,r,a,s=ap.isClockWise,o=this.subPaths;if(0===o.length)return[];let l=[];if(1===o.length)return n=o[0],(i=new r4).curves=n.curves,l.push(i),l;let u=!s(o[0].getPoints());u=e?!u:u;let c=[],h=[],d=[],p=0;h[0]=void 0,d[p]=[];for(let i=0,a=o.length;i<a;i++)t=s(r=(n=o[i]).getPoints()),(t=e?!t:t)?(!u&&h[p]&&p++,h[p]={s:new r4,p:r},h[p].s.curves=n.curves,u&&p++,d[p]=[]):d[p].push({h:n,p:r[0]});if(!h[0])return function(e){let t=[];for(let n=0,i=e.length;n<i;n++){let i=e[n],r=new r4;r.curves=i.curves,t.push(r)}return t}(o);if(h.length>1){let e=!1,t=0;for(let e=0,t=h.length;e<t;e++)c[e]=[];for(let n=0,i=h.length;n<i;n++){let i=d[n];for(let r=0;r<i.length;r++){let a=i[r],s=!0;for(let i=0;i<h.length;i++)(function(e,t){let n=t.length,i=!1;for(let r=n-1,a=0;a<n;r=a++){let n=t[r],s=t[a],o=s.x-n.x,l=s.y-n.y;if(Math.abs(l)>Number.EPSILON){if(l<0&&(n=t[a],o=-o,s=t[r],l=-l),e.y<n.y||e.y>s.y)continue;if(e.y===n.y){if(e.x===n.x)return!0}else{let t=l*(e.x-n.x)-o*(e.y-n.y);if(0===t)return!0;if(t<0)continue;i=!i}}else{if(e.y!==n.y)continue;if(s.x<=e.x&&e.x<=n.x||n.x<=e.x&&e.x<=s.x)return!0}}return i})(a.p,h[i].p)&&(n!==i&&t++,s?(s=!1,c[i].push(a)):e=!0);s&&c[n].push(a)}}t>0&&!1===e&&(d=c)}for(let e=0,t=h.length;e<t;e++){i=h[e].s,l.push(i),a=d[e];for(let e=0,t=a.length;e<t;e++)i.holes.push(a[e].h)}return l}}class o7 extends en{constructor(e,t=null){super(),this.object=e,this.domElement=t,this.enabled=!0,this.state=-1,this.keys={},this.mouseButtons={LEFT:null,MIDDLE:null,RIGHT:null},this.touches={ONE:null,TWO:null}}connect(e){void 0===e?Q("Controls: connect() now requires an element."):(null!==this.domElement&&this.disconnect(),this.domElement=e)}disconnect(){}dispose(){}update(){}}function o9(e,t,n,i){let r=function(e){switch(e){case 1009:case 1010:return{byteLength:1,components:1};case 1012:case 1011:case 1016:return{byteLength:2,components:1};case 1017:case 1018:return{byteLength:2,components:4};case 1014:case 1013:case 1015:return{byteLength:4,components:1};case 35902:case 35899:return{byteLength:4,components:3}}throw Error(`Unknown texture type ${e}.`)}(i);switch(n){case 1021:return e*t;case 1028:case 1029:return e*t/r.components*r.byteLength;case 1030:case 1031:return e*t*2/r.components*r.byteLength;case 1022:return e*t*3/r.components*r.byteLength;case 1023:case 1033:return e*t*4/r.components*r.byteLength;case 33776:case 33777:case 36196:case 37492:case 37488:case 37489:return Math.floor((e+3)/4)*Math.floor((t+3)/4)*8;case 33778:case 33779:case 37496:case 37490:case 37491:case 37808:return Math.floor((e+3)/4)*Math.floor((t+3)/4)*16;case 35841:case 35843:return Math.max(e,16)*Math.max(t,8)/4;case 35840:case 35842:return Math.max(e,8)*Math.max(t,8)/2;case 37809:return Math.floor((e+4)/5)*Math.floor((t+3)/4)*16;case 37810:return Math.floor((e+4)/5)*Math.floor((t+4)/5)*16;case 37811:return Math.floor((e+5)/6)*Math.floor((t+4)/5)*16;case 37812:return Math.floor((e+5)/6)*Math.floor((t+5)/6)*16;case 37813:return Math.floor((e+7)/8)*Math.floor((t+4)/5)*16;case 37814:return Math.floor((e+7)/8)*Math.floor((t+5)/6)*16;case 37815:return Math.floor((e+7)/8)*Math.floor((t+7)/8)*16;case 37816:return Math.floor((e+9)/10)*Math.floor((t+4)/5)*16;case 37817:return Math.floor((e+9)/10)*Math.floor((t+5)/6)*16;case 37818:return Math.floor((e+9)/10)*Math.floor((t+7)/8)*16;case 37819:return Math.floor((e+9)/10)*Math.floor((t+9)/10)*16;case 37820:return Math.floor((e+11)/12)*Math.floor((t+9)/10)*16;case 37821:return Math.floor((e+11)/12)*Math.floor((t+11)/12)*16;case 36492:case 36494:case 36495:case 36285:case 36286:return Math.ceil(e/4)*Math.ceil(t/4)*16;case 36283:case 36284:return Math.ceil(e/4)*Math.ceil(t/4)*8}throw Error(`Unable to determine texture byte length for ${n} format.`)}class le{static contain(e,t){let n;return(n=e.image&&e.image.width?e.image.width/e.image.height:1)>t?(e.repeat.x=1,e.repeat.y=n/t,e.offset.x=0,e.offset.y=(1-e.repeat.y)/2):(e.repeat.x=t/n,e.repeat.y=1,e.offset.x=(1-e.repeat.x)/2,e.offset.y=0),e}static cover(e,t){let n;return(n=e.image&&e.image.width?e.image.width/e.image.height:1)>t?(e.repeat.x=t/n,e.repeat.y=1,e.offset.x=(1-e.repeat.x)/2,e.offset.y=0):(e.repeat.x=1,e.repeat.y=n/t,e.offset.x=0,e.offset.y=(1-e.repeat.y)/2),e}static fill(e){return e.repeat.x=1,e.repeat.y=1,e.offset.x=0,e.offset.y=0,e}static getByteLength(e,t,n,i){return o9(e,t,n,i)}}function lt(){let e=null,t=!1,n=null,i=null;function r(t,a){n(t,a),i=e.requestAnimationFrame(r)}return{start:function(){!0===t||null!==n&&(i=e.requestAnimationFrame(r),t=!0)},stop:function(){e.cancelAnimationFrame(i),t=!1},setAnimationLoop:function(e){n=e},setContext:function(t){e=t}}}function ln(e){let t=new WeakMap;return{get:function(e){return e.isInterleavedBufferAttribute&&(e=e.data),t.get(e)},remove:function(n){n.isInterleavedBufferAttribute&&(n=n.data);let i=t.get(n);i&&(e.deleteBuffer(i.buffer),t.delete(n))}
36,update:function(n,i){if(n.isInterleavedBufferAttribute&&(n=n.data),n.isGLBufferAttribute){let e=t.get(n);(!e||e.version<n.version)&&t.set(n,{buffer:n.buffer,type:n.type,bytesPerElement:n.elementSize,version:n.version});return}let r=t.get(n);if(void 0===r)t.set(n,function(t,n){let i,r=t.array,a=t.usage,s=r.byteLength,o=e.createBuffer();if(e.bindBuffer(n,o),e.bufferData(n,r,a),t.onUploadCallback(),r instanceof Float32Array)i=e.FLOAT;else if("u">typeof Float16Array&&r instanceof Float16Array)i=e.HALF_FLOAT;else if(r instanceof Uint16Array)i=t.isFloat16BufferAttribute?e.HALF_FLOAT:e.UNSIGNED_SHORT;else if(r instanceof Int16Array)i=e.SHORT;else if(r instanceof Uint32Array)i=e.UNSIGNED_INT;else if(r instanceof Int32Array)i=e.INT;else if(r instanceof Int8Array)i=e.BYTE;else if(r instanceof Uint8Array)i=e.UNSIGNED_BYTE;else if(r instanceof Uint8ClampedArray)i=e.UNSIGNED_BYTE;else throw Error("THREE.WebGLAttributes: Unsupported buffer data format: "+r);return{buffer:o,type:i,bytesPerElement:r.BYTES_PER_ELEMENT,version:t.version,size:s}}(n,i));else if(r.version<n.version){if(r.size!==n.array.byteLength)throw Error("THREE.WebGLAttributes: The size of the buffer attribute's array buffer does not match the original size. Resizing buffer attributes is not supported.");!function(t,n,i){let r=n.array,a=n.updateRanges;if(e.bindBuffer(i,t),0===a.length)e.bufferSubData(i,0,r);else{a.sort((e,t)=>e.start-t.start);let t=0;for(let e=1;e<a.length;e++){let n=a[t],i=a[e];i.start<=n.start+n.count+1?n.count=Math.max(n.count,i.start+i.count-n.start):a[++t]=i}a.length=t+1;for(let t=0,n=a.length;t<n;t++){let n=a[t];e.bufferSubData(i,n.start*r.BYTES_PER_ELEMENT,r,n.start,n.count)}n.clearUpdateRanges()}n.onUploadCallback()}(r.buffer,n,i),r.version=n.version}}}}"u">typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:"182"}})),"u">typeof window&&(window.__THREE__?Q("WARNING: Multiple instances of Three.js being imported."):window.__THREE__="182");let li={alphahash_fragment:"#ifdef USE_ALPHAHASH\n if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;\n#endif",alphahash_pars_fragment:"#ifdef USE_ALPHAHASH\n const float ALPHA_HASH_SCALE = 0.05;\n float hash2D( vec2 value ) {\n return fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );\n }\n float hash3D( vec3 value ) {\n return hash2D( vec2( hash2D( value.xy ), value.z ) );\n }\n float getAlphaHashThreshold( vec3 position ) {\n float maxDeriv = max(\n length( dFdx( position.xyz ) ),\n length( dFdy( position.xyz ) )\n );\n float pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );\n vec2 pixScales = vec2(\n exp2( floor( log2( pixScale ) ) ),\n exp2( ceil( log2( pixScale ) ) )\n );\n vec2 alpha = vec2(\n hash3D( floor( pixScales.x * position.xyz ) ),\n hash3D( floor( pixScales.y * position.xyz ) )\n );\n float lerpFactor = fract( log2( pixScale ) );\n float x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;\n float a = min( lerpFactor, 1.0 - lerpFactor );\n vec3 cases = vec3(\n x * x / ( 2.0 * a * ( 1.0 - a ) ),\n ( x - 0.5 * a ) / ( 1.0 - a ),\n 1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )\n );\n float threshold = ( x < ( 1.0 - a ) )\n ? ( ( x < a ) ? cases.x : cases.y )\n : cases.z;\n return clamp( threshold , 1.0e-6, 1.0 );\n }\n#endif",alphamap_fragment:"#ifdef USE_ALPHAMAP\n diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;\n#endif",alphamap_pars_fragment:"#ifdef USE_ALPHAMAP\n uniform sampler2D alphaMap;\n#endif",alphatest_fragment:"#ifdef USE_ALPHATEST\n #ifdef ALPHA_TO_COVERAGE\n diffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a );\n if ( diffuseColor.a == 0.0 ) discard;\n #else\n if ( diffuseColor.a < alphaTest ) discard;\n #endif\n#endif",alphatest_pars_fragment:"#ifdef USE_ALPHATEST\n uniform float alphaTest;\n#endif",aomap_fragment:"#ifdef USE_AOMAP\n float ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;\n reflectedLight.indirectDiffuse *= ambientOcclusion;\n #if defined( USE_CLEARCOAT ) \n clearcoatSpecularIndirect *= ambientOcclusion;\n #endif\n #if defined( USE_SHEEN ) \n sheenSpecularIndirect *= ambientOcclusion;\n #endif\n #if defined( USE_ENVMAP ) && defined( STANDARD )\n float dotNV = saturate( dot
36( geometryNormal, geometryViewDir ) );\n reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\n #endif\n#endif",aomap_pars_fragment:"#ifdef USE_AOMAP\n uniform sampler2D aoMap;\n uniform float aoMapIntensity;\n#endif",batching_pars_vertex:"#ifdef USE_BATCHING\n #if ! defined( GL_ANGLE_multi_draw )\n #define gl_DrawID _gl_DrawID\n uniform int _gl_DrawID;\n #endif\n uniform highp sampler2D batchingTexture;\n uniform highp usampler2D batchingIdTexture;\n mat4 getBatchingMatrix( const in float i ) {\n int size = textureSize( batchingTexture, 0 ).x;\n int j = int( i ) * 4;\n int x = j % size;\n int y = j / size;\n vec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 );\n vec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 );\n vec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 );\n vec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 );\n return mat4( v1, v2, v3, v4 );\n }\n float getIndirectIndex( const in int i ) {\n int size = textureSize( batchingIdTexture, 0 ).x;\n int x = i % size;\n int y = i / size;\n return float( texelFetch( batchingIdTexture, ivec2( x, y ), 0 ).r );\n }\n#endif\n#ifdef USE_BATCHING_COLOR\n uniform sampler2D batchingColorTexture;\n vec3 getBatchingColor( const in float i ) {\n int size = textureSize( batchingColorTexture, 0 ).x;\n int j = int( i );\n int x = j % size;\n int y = j / size;\n return texelFetch( batchingColorTexture, ivec2( x, y ), 0 ).rgb;\n }\n#endif",batching_vertex:"#ifdef USE_BATCHING\n mat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) );\n#endif",begin_vertex:"vec3 transformed = vec3( position );\n#ifdef USE_ALPHAHASH\n vPosition = vec3( position );\n#endif",beginnormal_vertex:"vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n vec3 objectTangent = vec3( tangent.xyz );\n#endif",bsdfs:"float G_BlinnPhong_Implicit( ) {\n return 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\n vec3 halfDir = normalize( lightDir + viewDir );\n float dotNH = saturate( dot( normal, halfDir ) );\n float dotVH = saturate( dot( viewDir, halfDir ) );\n vec3 F = F_Schlick( specularColor, 1.0, dotVH );\n float G = G_BlinnPhong_Implicit( );\n float D = D_BlinnPhong( shininess, dotNH );\n return F * ( G * D );\n} // validated",iridescence_fragment:"#ifdef USE_IRIDESCENCE\n const mat3 XYZ_TO_REC709 = mat3(\n 3.2404542, -0.9692660, 0.0556434,\n -1.5371385, 1.8760108, -0.2040259,\n -0.4985314, 0.0415560, 1.0572252\n );\n vec3 Fresnel0ToIor( vec3 fresnel0 ) {\n vec3 sqrtF0 = sqrt( fresnel0 );\n return ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\n }\n vec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\n return pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\n }\n float IorToFresnel0( float transmittedIor, float incidentIor ) {\n return pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\n }\n vec3 evalSensitivity( float OPD, vec3 shift ) {\n float phase = 2.0 * PI * OPD * 1.0e-9;\n vec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\n vec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\n vec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\n vec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\n xyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\n xyz /= 1.0685e-7;\n vec3 rgb = XYZ_TO_REC709 * xyz;\n return rgb;\n }\n vec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\n vec3 I;\n float iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\n float sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\n float cosTheta2Sq = 1.0 - sinTheta2Sq;\n if ( cosTheta2Sq < 0.0 ) {\n return vec3( 1.0 );\n }\n float cosTheta2 = sqrt( cosTheta2Sq );\n float R0 = IorToFresnel0( iridescenceIOR, outsideIOR );
36\n float R12 = F_Schlick( R0, 1.0, cosTheta1 );\n float T121 = 1.0 - R12;\n float phi12 = 0.0;\n if ( iridescenceIOR < outsideIOR ) phi12 = PI;\n float phi21 = PI - phi12;\n vec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) ); vec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\n vec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\n vec3 phi23 = vec3( 0.0 );\n if ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\n if ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\n if ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\n float OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\n vec3 phi = vec3( phi21 ) + phi23;\n vec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\n vec3 r123 = sqrt( R123 );\n vec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\n vec3 C0 = R12 + Rs;\n I = C0;\n vec3 Cm = Rs - T121;\n for ( int m = 1; m <= 2; ++ m ) {\n Cm *= r123;\n vec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\n I += Cm * Sm;\n }\n return max( I, vec3( 0.0 ) );\n }\n#endif",bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\n uniform sampler2D bumpMap;\n uniform float bumpScale;\n vec2 dHdxy_fwd() {\n vec2 dSTdx = dFdx( vBumpMapUv );\n vec2 dSTdy = dFdy( vBumpMapUv );\n float Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;\n float dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;\n float dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll;\n return vec2( dBx, dBy );\n }\n vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\n vec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) );\n vec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) );\n vec3 vN = surf_norm;\n vec3 R1 = cross( vSigmaY, vN );\n vec3 R2 = cross( vN, vSigmaX );\n float fDet = dot( vSigmaX, R1 ) * faceDirection;\n vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n return normalize( abs( fDet ) * surf_norm - vGrad );\n }\n#endif",clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\n vec4 plane;\n #ifdef ALPHA_TO_COVERAGE\n float distanceToPlane, distanceGradient;\n float clipOpacity = 1.0;\n #pragma unroll_loop_start\n for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\n distanceGradient = fwidth( distanceToPlane ) / 2.0;\n clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\n if ( clipOpacity == 0.0 ) discard;\n }\n #pragma unroll_loop_end\n #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n float unionClipOpacity = 1.0;\n #pragma unroll_loop_start\n for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\n distanceGradient = fwidth( distanceToPlane ) / 2.0;\n unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\n }\n #pragma unroll_loop_end\n clipOpacity *= 1.0 - unionClipOpacity;\n #endif\n diffuseColor.a *= clipOpacity;\n if ( diffuseColor.a == 0.0 ) discard;\n #else\n #pragma unroll_loop_start\n for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n }\n #pragma unroll_loop_end\n #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n bool clipped = true;\n #pragma unroll_loop_start\n for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n }\n #pragma unroll_loop_end\n if ( clipped ) discard;\n #endif\n #endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n varying vec3 vClipPosition;\n uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0\n varying vec3 vClipPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0\n vClipPosition = - mvPosition.xyz;\n#endif",color_fragment:"#if defined( USE_COLOR_ALPHA )\n diffuseColor *= vColor;\n#elif defined( USE_COLOR )\n diffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#if defined( USE_COLOR_ALPHA )\n varying vec4 vColor;\n#elif defined( USE_COLOR )\n varying vec3 vColor;\n#endif",color_pars_vertex:"#if defined( USE_COLOR_ALPHA )\n varying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )\n varying vec3 vColor;\n#endif",color_vertex:"#if defined( USE_COLOR_ALPHA )\n vColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )\n vColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n vColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n vColor.xyz *= instanceColor.xyz;\n#endif\n#ifdef USE_BATCHING_COLOR\n vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) );\n vColor.xyz *= batchingColor.xyz;\n#endif",common:"#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nvec3 pow2( const in vec3 x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\nhighp float rand( const in vec2 uv ) {\n const highp float a = 12.9898, b = 78.233, c = 43758.5453;\n highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n return fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n float precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n float precisionSafeLength( vec3 v ) {\n float maxComponent = max3( abs( v ) );\n return length( v / maxComponent ) * maxComponent;\n }\n#endif\nstruct IncidentLight {\n vec3 color;\n vec3 direction;\n bool visible;\n};\nstruct ReflectedLight {\n vec3 directDiffuse;\n vec3 directSpecular;\n vec3 indirectDiffuse;\n vec3 indirectSpecular;\n};\n#ifdef USE_ALPHAHASH\n varying vec3 vPosition;\n#endif\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n return vec2( u, v );\n}\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\n return RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\n float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n}\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\n float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n} // validated",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n #define cubeUV_minMipLevel 4.0\n #define cubeUV_minTileSize 16.0\n float getFace( vec3 direction ) {\n vec3 absDirection = abs( direction );\n float face = - 1.0;\n if ( absDirection.x > absDirection.z ) {\n if ( absDirection.x > absDirection.y )\n face = direction.x > 0.0 ? 0.0 : 3.0;\n else\n face = direction.y > 0.0 ? 1.0 : 4.0;\n } else {\n if ( absDirection.z > absDirection.y )\n face = direction.z > 0.0 ? 2.0 : 5.0;\n else\n face = direction.y > 0.0 ? 1.0 : 4.0;\n }\n return face;\n }\n vec2 getUV( vec3 direction, float face ) {\n vec2 uv;\n if ( face == 0.0 ) {\n uv = vec2( direction.z, direction.y ) / abs( direction.x );\n } else if ( face == 1.0 ) {\n uv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n } else if ( face == 2.0 ) {\n uv = vec2( - direction.x, direction.y ) / abs( direction.z );\n } else if ( face == 3.0 ) {\n uv = vec2( - direction.z, direction.y ) / abs( direction.x );\n } else if ( face == 4.0 ) {\n uv = vec2( - direction.x, direction.z ) / abs( direction.y );\n } else {\n uv = vec2( direction.x, direction.y ) / abs( direction.z );\n }\n return 0.5 * ( uv + 1.0 );\n }\n vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n float face = getFace( direction );\n float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n mipInt = max( mipInt, cubeUV_minMipLevel );\n float faceSize = exp2( mipInt );\n highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\n if ( face > 2.0 ) {\n uv.y += faceSize;\n face -= 3.0;\n }\n uv.x += face * faceSize;\n uv.x += filterInt * 3.0 * cubeUV_minTileSize;\n uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\n uv.x *= CUBEUV_TEXEL_WIDTH;\n uv.y *= CUBEUV_TEXEL_HEIGHT;\n #ifdef texture2DGradEXT\n return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\n #else\n return texture2D( envMap, uv ).rgb;\n #endif\n }\n #define cubeUV_r0 1.0\n #define cubeUV_m0 - 2.0\n #define cubeUV_r1 0.8\n #define cubeUV_m1 - 1.0\n #define cubeUV_r4 0.4\n #define cubeUV_m4 2.0\n #define cubeUV_r5 0.305\n #define cubeUV_m5 3.0\n #define cubeUV_r6 0.21\n #define cubeUV_m6 4.0\n float roughnessToMip( float roughness ) {\n float mip = 0.0;\n if ( roughness >= cubeUV_r1 ) {\n mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\n } else if ( roughness >= cubeUV_r4 ) {\n mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\n } else if ( roughness >= cubeUV_r5 ) {\n mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\n } else if ( roughness >= cubeUV_r6 ) {\n mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\n } else {\n mip = - 2.0 * log2( 1.16 * roughness ); }\n return mip;\n }\n vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\n float mipF = fract( mip );\n float mipInt = floor( mip );\n vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n if ( mipF == 0.0 ) {\n return vec4( color0, 1.0 );\n } else {\n vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n return vec4( mix( color0, color1, mipF ), 1.0 );\n }\n }\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_TANGENT\n vec3 transformedTangent = objectTangent;\n#endif\n#ifdef USE_BATCHING\n mat3 bm = mat3( batchingMatrix );
36\n transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );\n transformedNormal = bm * transformedNormal;\n #ifdef USE_TANGENT\n transformedTangent = bm * transformedTangent;\n #endif\n#endif\n#ifdef USE_INSTANCING\n mat3 im = mat3( instanceMatrix );\n transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );\n transformedNormal = im * transformedNormal;\n #ifdef USE_TANGENT\n transformedTangent = im * transformedTangent;\n #endif\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n transformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;\n #ifdef FLIP_SIDED\n transformedTangent = - transformedTangent;\n #endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n uniform sampler2D displacementMap;\n uniform float displacementScale;\n uniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\n #ifdef DECODE_VIDEO_TEXTURE_EMISSIVE\n emissiveColor = sRGBTransferEOTF( emissiveColor );\n #endif\n totalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n uniform sampler2D emissiveMap;\n#endif",colorspace_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",colorspace_pars_fragment:"vec4 LinearTransferOETF( in vec4 value ) {\n return value;\n}\nvec4 sRGBTransferEOTF( in vec4 value ) {\n return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 sRGBTransferOETF( in vec4 value ) {\n 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 );\n}",envmap_fragment:"#ifdef USE_ENVMAP\n #ifdef ENV_WORLDPOS\n vec3 cameraToFrag;\n if ( isOrthographic ) {\n cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n } else {\n cameraToFrag = normalize( vWorldPosition - cameraPosition );\n }\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n #ifdef ENVMAP_MODE_REFLECTION\n vec3 reflectVec = reflect( cameraToFrag, worldNormal );\n #else\n vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n #endif\n #else\n vec3 reflectVec = vReflect;\n #endif\n #ifdef ENVMAP_TYPE_CUBE\n vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n #else\n vec4 envColor = vec4( 0.0 );\n #endif\n #ifdef ENVMAP_BLENDING_MULTIPLY\n outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n #elif defined( ENVMAP_BLENDING_MIX )\n outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n #elif defined( ENVMAP_BLENDING_ADD )\n outgoingLight += envColor.xyz * specularStrength * reflectivity;\n #endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n uniform float envMapIntensity;\n uniform float flipEnvMap;\n uniform mat3 envMapRotation;\n #ifdef ENVMAP_TYPE_CUBE\n uniform samplerCube envMap;\n #else\n uniform sampler2D envMap;\n #endif\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n uniform float reflectivity;\n #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n #define ENV_WORLDPOS\n #endif\n #ifdef ENV_WORLDPOS\n varying vec3 vWorldPosition;\n uniform float refractionRatio;\n #else\n varying vec3 vReflect;\n #endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n #define ENV_WORLDPOS\n #endif\n #ifdef ENV_WORLDPOS\n \n varying vec3 vWorldPosition;\n #else\n varying vec3 vReflect;\n uniform float refractionRatio;\n #endif\n#endif",envmap_physical_pars_fragment:"#ifdef USE_ENVMAP\n vec3 getIBLIrradiance( const in vec3 normal ) {\n #ifdef ENVMAP_TYPE_CUBE_UV\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 );\n return PI * envMapColor.rgb * envMapIntensity;\n #else\n return vec3( 0.0 );\n #endif\n }\n vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n #ifdef ENVMAP_TYPE_CUBE_UV\n vec3 reflectVec = reflect( - viewDir, normal );
36\n reflectVec = normalize( mix( reflectVec, normal, pow4( roughness ) ) );\n reflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness );\n return envMapColor.rgb * envMapIntensity;\n #else\n return vec3( 0.0 );\n #endif\n }\n #ifdef USE_ANISOTROPY\n vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\n #ifdef ENVMAP_TYPE_CUBE_UV\n vec3 bentNormal = cross( bitangent, viewDir );\n bentNormal = normalize( cross( bentNormal, bitangent ) );\n bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\n return getIBLRadiance( viewDir, bentNormal, roughness );\n #else\n return vec3( 0.0 );\n #endif\n }\n #endif\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n #ifdef ENV_WORLDPOS\n vWorldPosition = worldPosition.xyz;\n #else\n vec3 cameraToVertex;\n if ( isOrthographic ) {\n cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n }
36 else {\n cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n }\n vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n #ifdef ENVMAP_MODE_REFLECTION\n vReflect = reflect( cameraToVertex, worldNormal );\n #else\n vReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n #endif\n #endif\n#endif",fog_vertex:"#ifdef USE_FOG\n vFogDepth = - mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n varying float vFogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n #ifdef FOG_EXP2\n float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n #else\n float fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n #endif\n gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n uniform vec3 fogColor;\n varying float vFogDepth;\n #ifdef FOG_EXP2\n uniform float fogDensity;\n #else\n uniform float fogNear;\n uniform float fogFar;\n #endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\n uniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n float dotNL = dot( normal, lightDirection );\n vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n #ifdef USE_GRADIENTMAP\n return vec3( texture2D( gradientMap, coord ).r );\n #else\n vec2 fw = fwidth( coord ) * 0.5;\n return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\n #endif\n}",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n uniform sampler2D lightMap;\n uniform float lightMapIntensity;\n#endif",lights_lambert_fragment:"LambertMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularStrength = specularStrength;",lights_lambert_pars_fragment:"varying vec3 vViewPosition;\nstruct LambertMaterial {\n vec3 diffuseColor;\n float specularStrength;\n};\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n float dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n vec3 irradiance = dotNL * directLight.color;\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct RE_Direct_Lambert\n#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\n#if defined( USE_LIGHT_PROBES )\n uniform vec3 lightProbe[ 9 ];\n#endif\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n float x = normal.x, y = normal.y, z = normal.z;\n vec3 result = shCoefficients[ 0 ] * 0.886227;\n result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n return result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n return irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n vec3 irradiance = ambientLightColor;\n return irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n if ( cutoffDistance > 0.0 ) {\n distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n }\n return distanceFalloff;\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n return smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n struct DirectionalLight {\n vec3 direction;\n vec3 color;\n };\n uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {\n light.color = directionalLight.color;\n light.direction = directionalLight.direction;\n light.visible = true;\n }\n#endif\n#if NUM_POINT_LIGHTS > 0\n struct PointLight {\n vec3 position;\n vec3 color;\n float distance;\n float decay;\n };\n uniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {\n vec3 lVector = pointLight.position - geometryPosition;\n light.direction = normalize( lVector );\n float lightDistance = length( lVector );\n light.color = pointLight.color;\n light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n light.visible = ( light.color != vec3( 0.0 ) );\n }
36\n#endif\n#if NUM_SPOT_LIGHTS > 0\n struct SpotLight {\n vec3 position;\n vec3 direction;\n vec3 color;\n float distance;\n float decay;\n float coneCos;\n float penumbraCos;\n };\n uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {\n vec3 lVector = spotLight.position - geometryPosition;\n light.direction = normalize( lVector );\n float angleCos = dot( light.direction, spotLight.direction );\n float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n if ( spotAttenuation > 0.0 ) {\n float lightDistance = length( lVector );\n light.color = spotLight.color * spotAttenuation;\n light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n light.visible = ( light.color != vec3( 0.0 ) );\n } else {\n light.color = vec3( 0.0 );\n light.visible = false;\n }\n }\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n struct RectAreaLight {\n vec3 color;\n vec3 position;\n vec3 halfWidth;\n vec3 halfHeight;\n };\n uniform sampler2D ltc_1; uniform sampler2D ltc_2;\n uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n struct HemisphereLight {\n vec3 direction;\n vec3 skyColor;\n vec3 groundColor;\n };\n uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\n float dotNL = dot( normal, hemiLight.direction );\n float hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n return irradiance;\n }\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\nstruct ToonMaterial {\n vec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct RE_Direct_Toon\n#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon",lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n vec3 diffuseColor;\n vec3 specularColor;\n float specularShininess;\n float specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n float dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n vec3 irradiance = dotNL * directLight.color;\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct RE_Direct_BlinnPhong\n#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.diffuseContribution = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nmaterial.metalness = metalnessFactor;\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n material.ior = ior;\n #ifdef USE_SPECULAR\n float specularIntensityFactor = specularIntensity;\n vec3 specularColorFactor = specularColor;\n #ifdef USE_SPECULAR_COLORMAP\n specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\n #endif\n #ifdef USE_SPECULAR_INTENSITYMAP\n specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\n #endif\n material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n #else\n float specularIntensityFactor = 1.0;\n vec3 specularColorFactor = vec3( 1.0 );\n material.specularF90 = 1.0;\n #endif\n material.specularColor = min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor;\n material.specularColorBlended = mix( material.specularColor, diffuseColor.rgb, metalnessFactor );\n#else\n material.specularColor = vec3( 0.04 );\n material.specularColorBlended = mix( material.specularColor, diffuseColor.rgb, metalnessFactor );\n material.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n material.clearcoat = clearcoat;
36\n material.clearcoatRoughness = clearcoatRoughness;\n material.clearcoatF0 = vec3( 0.04 );\n material.clearcoatF90 = 1.0;\n #ifdef USE_CLEARCOATMAP\n material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\n #endif\n #ifdef USE_CLEARCOAT_ROUGHNESSMAP\n material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\n #endif\n material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n material.clearcoatRoughness += geometryRoughness;\n material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_DISPERSION\n material.dispersion = dispersion;\n#endif\n#ifdef USE_IRIDESCENCE\n material.iridescence = iridescence;\n material.iridescenceIOR = iridescenceIOR;\n #ifdef USE_IRIDESCENCEMAP\n material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\n #endif\n #ifdef USE_IRIDESCENCE_THICKNESSMAP\n material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\n #else\n material.iridescenceThickness = iridescenceThicknessMaximum;\n #endif\n#endif\n#ifdef USE_SHEEN\n material.sheenColor = sheenColor;\n #ifdef USE_SHEEN_COLORMAP\n material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\n #endif\n material.sheenRoughness = clamp( sheenRoughness, 0.0001, 1.0 );\n #ifdef USE_SHEEN_ROUGHNESSMAP\n material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\n #endif\n#endif\n#ifdef USE_ANISOTROPY\n #ifdef USE_ANISOTROPYMAP\n mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\n vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\n vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\n #else\n vec2 anisotropyV = anisotropyVector;\n #endif\n material.anisotropy = length( anisotropyV );\n if( material.anisotropy == 0.0 ) {\n anisotropyV = vec2( 1.0, 0.0 );\n } else {\n anisotropyV /= material.anisotropy;\n material.anisotropy = saturate( material.anisotropy );\n }\n material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\n material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;\n material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;\n#endif",lights_physical_pars_fragment:"uniform sampler2D dfgLUT;\nstruct PhysicalMaterial {\n vec3 diffuseColor;\n vec3 diffuseContribution;\n vec3 specularColor;\n vec3 specularColorBlended;\n float roughness;\n float metalness;\n float specularF90;\n float dispersion;\n #ifdef USE_CLEARCOAT\n float clearcoat;\n float clearcoatRoughness;\n vec3 clearcoatF0;\n float clearcoatF90;\n #endif\n #ifdef USE_IRIDESCENCE\n float iridescence;\n float iridescenceIOR;\n float iridescenceThickness;\n vec3 iridescenceFresnel;\n vec3 iridescenceF0;\n vec3 iridescenceFresnelDielectric;\n vec3 iridescenceFresnelMetallic;\n #endif\n #ifdef USE_SHEEN\n vec3 sheenColor;\n float sheenRoughness;\n #endif\n #ifdef IOR\n float ior;\n #endif\n #ifdef USE_TRANSMISSION\n float transmission;\n float transmissionAlpha;\n float thickness;\n float attenuationDistance;\n vec3 attenuationColor;\n #endif\n #ifdef USE_ANISOTROPY\n float anisotropy;\n float alphaT;\n vec3 anisotropyT;\n vec3 anisotropyB;\n #endif\n};\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\nvec3 sheenSpecularDirect = vec3( 0.0 );\nvec3 sheenSpecularIndirect = vec3(0.0 );\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\n float x2 = x * x;\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\n}\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n float a2 = pow2( alpha );\n float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n return 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n float a2 = pow2( alpha );\n float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n return RECIPROCAL_PI * a2 / pow2( denom );\n}\n#ifdef USE_ANISOTROPY\n float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\n float gv = dotNL * length( vec3( alphaT * dotTV, alph
36aB * dotBV, dotNV ) );\n float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\n float v = 0.5 / ( gv + gl );\n return v;\n }\n float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\n float a2 = alphaT * alphaB;\n highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\n highp float v2 = dot( v, v );\n float w2 = a2 / v2;\n return RECIPROCAL_PI * a2 * pow2 ( w2 );\n }\n#endif\n#ifdef USE_CLEARCOAT\n vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\n vec3 f0 = material.clearcoatF0;\n float f90 = material.clearcoatF90;\n float roughness = material.clearcoatRoughness;\n float alpha = pow2( roughness );\n vec3 halfDir = normalize( lightDir + viewDir );\n float dotNL = saturate( dot( normal, lightDir ) );\n float dotNV = saturate( dot( normal, viewDir ) );\n float dotNH = saturate( dot( normal, halfDir ) );\n float dotVH = saturate( dot( viewDir, halfDir ) );\n vec3 F = F_Schlick( f0, f90, dotVH );\n float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n float D = D_GGX( alpha, dotNH );\n return F * ( V * D );\n }\n#endif\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\n vec3 f0 = material.specularColorBlended;\n float f90 = material.specularF90;\n float roughness = material.roughness;\n float alpha = pow2( roughness );\n vec3 halfDir = normalize( lightDir + viewDir );\n float dotNL = saturate( dot( normal, lightDir ) );\n float dotNV = saturate( dot( normal, viewDir ) );\n float dotNH = saturate( dot( normal, halfDir ) );\n float dotVH = saturate( dot( viewDir, halfDir ) );\n vec3 F = F_Schlick( f0, f90, dotVH );\n #ifdef USE_IRIDESCENCE\n F = mix( F, material.iridescenceFresnel, material.iridescence );\n #endif\n #ifdef USE_ANISOTROPY\n float dotTL = dot( material.anisotropyT, lightDir );\n float dotTV = dot( material.anisotropyT, viewDir );\n float dotTH = dot( material.anisotropyT, halfDir );\n float dotBL = dot( material.anisotropyB, lightDir );\n float dotBV = dot( material.anisotropyB, viewDir );\n float dotBH = dot( material.anisotropyB, halfDir );\n float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\n float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\n #else\n float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n float D = D_GGX( alpha, dotNH );\n #endif\n return F * ( V * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n const float LUT_SIZE = 64.0;\n const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n const float LUT_BIAS = 0.5 / LUT_SIZE;\n float dotNV = saturate( dot( N, V ) );\n vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n uv = uv * LUT_SCALE + LUT_BIAS;\n return uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n float l = length( f );\n return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n float x = dot( v1, v2 );\n float y = abs( x );\n float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n float b = 3.4175940 + ( 4.1616724 + y ) * y;\n float v = a / b;\n float theta_sintheta = ( x >
36 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n return cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n vec3 lightNormal = cross( v1, v2 );\n if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n vec3 T1, T2;\n T1 = normalize( V - N * dot( V, N ) );\n T2 = - cross( N, T1 );\n mat3 mat = mInv * transpose( mat3( T1, T2, N ) );\n vec3 coords[ 4 ];\n coords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n coords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n coords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n coords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n coords[ 0 ] = normalize( coords[ 0 ] );\n coords[ 1 ] = normalize( coords[ 1 ] );\n coords[ 2 ] = normalize( coords[ 2 ] );\n coords[ 3 ] = normalize( coords[ 3 ] );\n vec3 vectorFormFactor = vec3( 0.0 );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n float result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n return vec3( result );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n float alpha = pow2( roughness );\n float invAlpha = 1.0 / alpha;\n float cos2h = dotNH * dotNH;\n float sin2h = max( 1.0 - cos2h, 0.0078125 );\n return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\n}\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\n vec3 halfDir = normalize( lightDir + viewDir );\n float dotNL = saturate( dot( normal, lightDir ) );\n float dotNV = saturate( dot( normal, viewDir ) );\n float dotNH = saturate( dot( normal, halfDir ) );\n float D = D_Charlie( sheenRoughness, dotNH );\n float V = V_Neubelt( dotNV, dotNL );\n return sheenColor * ( D * V );\n}\n#endif\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n float dotNV = saturate( dot( normal, viewDir ) );\n float r2 = roughness * roughness;\n float rInv = 1.0 / ( roughness + 0.1 );\n float a = -1.9362 + 1.0678 * roughness + 0.4573 * r2 - 0.8469 * rInv;\n float b = -0.6014 + 0.5538 * roughness - 0.4670 * r2 - 0.1255 * rInv;\n float DG = exp( a * dotNV + b );\n return saturate( DG );\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n float dotNV = saturate( dot( normal, viewDir ) );\n vec2 fab = texture2D( dfgLUT, vec2( roughness, dotNV ) ).rg;\n return specularColor * fab.x + specularF90 * fab.y;\n}\n#ifdef USE_IRIDESCENCE\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#else\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#endif\n float dotNV = saturate( dot( normal, viewDir ) );\n vec2 fab = texture2D( dfgLUT, vec2( roughness, dotNV ) ).rg;\n #ifdef USE_IRIDESCENCE\n vec3 Fr = mix( specularColor, iridescenceF0, iridescence );\n #else\n vec3 Fr = specularColor;\n #endif\n vec3 FssEss = Fr * fab.x + specularF90 * fab.y;\n float Ess = fab.x + fab.y;\n float Ems = 1.0 - Ess;\n vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n singleScatter += FssEss;\n multiScatter += Fms * Ems;\n}\nvec3 BRDF_GGX_Multiscatter( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\n vec3 singleScatter = BRDF_GGX( lightDir, viewDir, normal, material );
36\n float dotNL = saturate( dot( normal, lightDir ) );\n float dotNV = saturate( dot( normal, viewDir ) );\n vec2 dfgV = texture2D( dfgLUT, vec2( material.roughness, dotNV ) ).rg;\n vec2 dfgL = texture2D( dfgLUT, vec2( material.roughness, dotNL ) ).rg;\n vec3 FssEss_V = material.specularColorBlended * dfgV.x + material.specularF90 * dfgV.y;\n vec3 FssEss_L = material.specularColorBlended * dfgL.x + material.specularF90 * dfgL.y;\n float Ess_V = dfgV.x + dfgV.y;\n float Ess_L = dfgL.x + dfgL.y;\n float Ems_V = 1.0 - Ess_V;\n float Ems_L = 1.0 - Ess_L;\n vec3 Favg = material.specularColorBlended + ( 1.0 - material.specularColorBlended ) * 0.047619;\n vec3 Fms = FssEss_V * FssEss_L * Favg / ( 1.0 - Ems_V * Ems_L * Favg + EPSILON );\n float compensationFactor = Ems_V * Ems_L;\n vec3 multiScatter = Fms * compensationFactor;\n return singleScatter + multiScatter;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n vec3 normal = geometryNormal;\n vec3 viewDir = geometryViewDir;\n vec3 position = geometryPosition;\n vec3 lightPos = rectAreaLight.position;\n vec3 halfWidth = rectAreaLight.halfWidth;\n vec3 halfHeight = rectAreaLight.halfHeight;\n vec3 lightColor = rectAreaLight.color;\n float roughness = material.roughness;\n vec3 rectCoords[ 4 ];\n rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n rectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n rectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n vec2 uv = LTC_Uv( normal, viewDir, roughness );\n vec4 t1 = texture2D( ltc_1, uv );\n vec4 t2 = texture2D( ltc_2, uv );\n mat3 mInv = mat3(\n vec3( t1.x, 0, t1.y ),\n vec3( 0, 1, 0 ),\n vec3( t1.z, 0, t1.w )\n );\n vec3 fresnel = ( material.specularColorBlended * t2.x + ( vec3( 1.0 ) - material.specularColorBlended ) * t2.y );\n reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n reflectedLight.directDiffuse += lightColor * material.diffuseContribution * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n }\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n float dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n vec3 irradiance = dotNL * directLight.color;\n #ifdef USE_CLEARCOAT\n float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\n vec3 ccIrradiance = dotNLcc * directLight.color;\n clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\n #endif\n #ifdef USE_SHEEN\n \n sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\n \n float sheenAlbedoV = IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\n float sheenAlbedoL = IBLSheenBRDF( geometryNormal, directLight.direction, material.sheenRoughness );\n \n float sheenEnergyComp = 1.0 - max3( material.sheenColor ) * max( sheenAlbedoV, sheenAlbedoL );\n \n irradiance *= sheenEnergyComp;\n \n #endif\n reflectedLight.directSpecular += irradiance * BRDF_GGX_Multiscatter( directLight.direction, geometryViewDir, geometryNormal, material );\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseContribution );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n vec3 diffuse = irradiance * BRDF_Lambert( material.diffuseContribution );\n #ifdef USE_SHEEN\n float sheenAlbedo = IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\n float sheenEnergyComp = 1.0 - max3( material.sheenColor ) * sheenAlbedo;\n diffuse *= sheenEnergyComp;\n #endif\n reflectedLight.indirectDiffuse += diffuse;\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n #ifdef USE_CLEARCOAT\n clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n #endif\n #ifdef USE_SHEEN\n sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ) * RECIPROCAL_PI;\n #endif\n vec3 singleScatteringDielectric = vec3( 0.0 );\n vec3 multiScatteringDielectric = vec3( 0.0 );\n vec3 singleScatteringMetallic = vec3( 0.0 );\n vec3 multiScatteringMetallic = vec3( 0.0 );
36\n #ifdef USE_IRIDESCENCE\n computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnelDielectric, material.roughness, singleScatteringDielectric, multiScatteringDielectric );\n computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.diffuseColor, material.specularF90, material.iridescence, material.iridescenceFresnelMetallic, material.roughness, singleScatteringMetallic, multiScatteringMetallic );\n #else\n computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScatteringDielectric, multiScatteringDielectric );\n computeMultiscattering( geometryNormal, geometryViewDir, material.diffuseColor, material.specularF90, material.roughness, singleScatteringMetallic, multiScatteringMetallic );\n #endif\n vec3 singleScattering = mix( singleScatteringDielectric, singleScatteringMetallic, material.metalness );\n vec3 multiScattering = mix( multiScatteringDielectric, multiScatteringMetallic, material.metalness );\n vec3 totalScatteringDielectric = singleScatteringDielectric + multiScatteringDielectric;\n vec3 diffuse = material.diffuseContribution * ( 1.0 - totalScatteringDielectric );\n vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n vec3 indirectSpecular = radiance * singleScattering;\n indirectSpecular += multiScattering * cosineWeightedIrradiance;\n vec3 indirectDiffuse = diffuse * cosineWeightedIrradiance;\n #ifdef USE_SHEEN\n float sheenAlbedo = IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\n float sheenEnergyComp = 1.0 - max3( material.sheenColor ) * sheenAlbedo;\n indirectSpecular *= sheenEnergyComp;\n indirectDiffuse *= sheenEnergyComp;\n #endif\n reflectedLight.indirectSpecular += indirectSpecular;\n reflectedLight.indirectDiffuse += indirectDiffuse;\n}\n#define RE_Direct RE_Direct_Physical\n#define RE_Direct_RectArea RE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular RE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",lights_fragment_begin:"\nvec3 geometryPosition = - vViewPosition;\nvec3 geometryNormal = normal;\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\nvec3 geometryClearcoatNormal = vec3( 0.0 );\n#ifdef USE_CLEARCOAT\n geometryClearcoatNormal = clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\n float dotNVi = saturate( dot( normal, geometryViewDir ) );\n if ( material.iridescenceThickness == 0.0 ) {\n material.iridescence = 0.0;\n } else {\n material.iridescence = saturate( material.iridescence );\n }\n if ( material.iridescence > 0.0 ) {\n material.iridescenceFresnelDielectric = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\n material.iridescenceFresnelMetallic = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.diffuseColor );\n material.iridescenceFresnel = mix( material.iridescenceFresnelDielectric, material.iridescenceFresnelMetallic, material.metalness );\n material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\n }\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n PointLight pointLight;\n #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n PointLightShadow pointLightShadow;\n #endif\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n pointLight = pointLights[ i ];\n getPointLightInfo( pointLight, geometryPosition, directLight );\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) && ( defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_BASIC ) )\n pointLightShadow = pointLightShadows[ i ];\n directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n #endif\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }
36\n #pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n SpotLight spotLight;\n vec4 spotColor;\n vec3 spotLightCoord;\n bool inSpotLightMap;\n #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n SpotLightShadow spotLightShadow;\n #endif\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n spotLight = spotLights[ i ];\n getSpotLightInfo( spotLight, geometryPosition, directLight );\n #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\n #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\n #else\n #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n #endif\n #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\n spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\n inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\n spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\n directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\n #endif\n #undef SPOT_LIGHT_MAP_INDEX\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n spotLightShadow = spotLightShadows[ i ];\n directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n #endif\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n DirectionalLight directionalLight;\n #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n DirectionalLightShadow directionalLightShadow;\n #endif\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n directionalLight = directionalLights[ i ];\n getDirectionalLightInfo( directionalLight, directLight );\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n directionalLightShadow = directionalLightShadows[ i ];\n directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n #endif\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n RectAreaLight rectAreaLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n rectAreaLight = rectAreaLights[ i ];\n RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n vec3 iblIrradiance = vec3( 0.0 );\n vec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n #if defined( USE_LIGHT_PROBES )\n irradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\n #endif\n #if ( NUM_HEMI_LIGHTS > 0 )\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\n }\n #pragma unroll_loop_end\n #endif\n#endif\n#if defined( RE_IndirectSpecular )\n vec3 radiance = vec3( 0.0 );\n vec3 clearcoatRadiance = vec3( 0.0 );\n#endif",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n #ifdef USE_LIGHTMAP\n vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n irradiance += lightMapIrradiance;\n #endif\n #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n iblIrradiance += getIBLIrradiance( geometryNormal );\n #endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n #ifdef USE_ANISOTROPY\n radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\n #else\n radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\n #endif\n #ifdef USE_CLEARCOAT\n clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\n #endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGARITHMIC_DEPTH_BUFFER )\n gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGARITHMIC_DEPTH_BUFFER )\n uniform float logDepthBufFC;\n varying float vFragDepth;\n varying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGARITHMIC_DEPTH_BUFFER\n varying float vFragDepth;\n varying float vIsPerspective;\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGARITHMIC_DEPTH_BUFFER\n vFragDepth = 1.0 + gl_Position.w;\n vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n#endif",map_fragment:"#ifdef USE_MAP\n vec4 sampledDiffuseColor = texture2D( map, vMapUv );\n #ifdef DECODE_VIDEO_TEXTURE\n sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor );\n #endif\n diffuseColor *= sampledDiffuseColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n uniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n #if defined( USE_POINTS_UV )\n vec2 uv = vUv;\n #else\n vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n #endif\n#endif\n#ifdef USE_MAP\n diffuseColor *= texture2D( map, uv );\n#endif\n#ifdef USE_ALPHAMAP\n diffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_POINTS_UV )\n varying vec2 vUv;\n#else\n #if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n uniform mat3 uvTransform;\n #endif\n#endif\n#ifdef USE_MAP\n uniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n uniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\n metalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n uniform sampler2D metalnessMap;\n#endif",morphinstance_vertex:"#ifdef USE_INSTANCING_MORPH\n float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r;\n }\n#endif",morphcolor_vertex:"#if defined( USE_MORPHCOLORS )\n vColor *= morphTargetBaseInfluence;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n #if defined( USE_COLOR_ALPHA )\n if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\n #elif defined( USE_COLOR )\n if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\n #endif\n }\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n objectNormal *= morphTargetBaseInfluence;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\n }\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n #ifndef USE_INSTANCING_MORPH\n uniform float morphTargetBaseInfluence;\n uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n #endif\n uniform sampler2DArray morphTargetsTexture;\n uniform ivec2 morphTargetsTextureSize;\n vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\n int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\n int y = texelIndex / morphTargetsTextureSize.x;\n int x = texelIndex - y * morphTargetsTextureSize.x;\n ivec3 morphUV = ivec3( x, y, morphTargetIndex );\n return texelFetch( morphTargetsTexture, morphUV, 0 );\n }\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n transformed *= morphTargetBaseInfluence;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\n }\n#endif",normal_fragment_begin:"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n vec3 fdx = dFdx( vViewPosition );\n vec3 fdy = dFdy( vViewPosition );\n vec3 normal = normalize( cross( fdx, fdy ) );\n#else\n vec3 normal = normalize( vNormal );\n #ifdef DOUBLE_SIDED\n normal *= faceDirection;\n #endif\n#endif\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\n #ifdef USE_TANGENT\n mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n #else\n mat3 tbn = getTangentFrame( - vViewPosition, normal,\n #if defined( USE_NORMALMAP )\n vNormalMapUv\n #elif defined( USE_CLEARCOAT_NORMALMAP )\n vClearcoatNormalMapUv\n #else\n vUv\n #endif\n );\n #endif\n #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n tbn[0] *= faceDirection;\n tbn[1] *= faceDirection;\n #endif\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n #ifdef USE_TANGENT\n mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n #else\n mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\n #endif\n #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n tbn2[0] *= faceDirection;\n tbn2[1] *= faceDirection;\n #endif\n#endif\nvec3 nonPerturbedNormal = normal;",normal_fragment_maps:"#ifdef USE_NORMALMAP_OBJECTSPACE\n normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n #ifdef FLIP_SIDED\n normal = - normal;\n #endif\n #ifdef DOUBLE_SIDED\n normal = normal * faceDirection;\n #endif\n normal = normalize( normalMatrix * normal );\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\n vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n mapN.xy *= normalScale;\n normal = normalize( tbn * mapN );
36\n#elif defined( USE_BUMPMAP )\n normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif",normal_pars_fragment:"#ifndef FLAT_SHADED\n varying vec3 vNormal;\n #ifdef USE_TANGENT\n varying vec3 vTangent;\n varying vec3 vBitangent;\n #endif\n#endif",normal_pars_vertex:"#ifndef FLAT_SHADED\n varying vec3 vNormal;\n #ifdef USE_TANGENT\n varying vec3 vTangent;\n varying vec3 vBitangent;\n #endif\n#endif",normal_vertex:"#ifndef FLAT_SHADED\n vNormal = normalize( transformedNormal );\n #ifdef USE_TANGENT\n vTangent = normalize( transformedTangent );\n vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n #endif\n#endif",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n uniform sampler2D normalMap;\n uniform vec2 normalScale;\n#endif\n#ifdef USE_NORMALMAP_OBJECTSPACE\n uniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\n mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\n vec3 q0 = dFdx( eye_pos.xyz );\n vec3 q1 = dFdy( eye_pos.xyz );\n vec2 st0 = dFdx( uv.st );\n vec2 st1 = dFdy( uv.st );\n vec3 N = surf_norm;\n vec3 q1perp = cross( q1, N );\n vec3 q0perp = cross( N, q0 );\n vec3 T = q1perp * st0.x + q0perp * st1.x;\n vec3 B = q1perp * st0.y + q0perp * st1.y;\n float det = max( dot( T, T ), dot( B, B ) );\n float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\n return mat3( T * scale, B * scale, N );\n }\n#endif",clearcoat_normal_fragment_begin:"#ifdef USE_CLEARCOAT\n vec3 clearcoatNormal = nonPerturbedNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\n clearcoatMapN.xy *= clearcoatNormalScale;\n clearcoatNormal = normalize( tbn2 * clearcoatMapN );\n#endif",clearcoat_pars_fragment:"#ifdef USE_CLEARCOATMAP\n uniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n uniform sampler2D clearcoatNormalMap;\n uniform vec2 clearcoatNormalScale;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n uniform sampler2D clearcoatRoughnessMap;\n#endif",iridescence_pars_fragment:"#ifdef USE_IRIDESCENCEMAP\n uniform sampler2D iridescenceMap;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n uniform sampler2D iridescenceThicknessMap;\n#endif",opaque_fragment:"#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= material.transmissionAlpha;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n return normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n return 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.;\nconst float Inv255 = 1. / 255.;\nconst vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 );\nconst vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g );\nconst vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b );\nconst vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a );\nvec4 packDepthToRGBA( const in float v ) {\n if( v <= 0.0 )\n return vec4( 0., 0., 0., 0. );\n if( v >= 1.0 )\n return vec4( 1., 1., 1., 1. );\n float vuf;\n float af = modf( v * PackFactors.a, vuf );\n float bf = modf( vuf * ShiftRight8, vuf );\n float gf = modf( vuf * ShiftRight8, vuf );\n return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af );\n}\nvec3 packDepthToRGB( const in float v ) {\n if( v <= 0.0 )\n return vec3( 0., 0., 0. );\n if( v >= 1.0 )\n return vec3( 1., 1., 1. );\n float vuf;\n float bf = modf( v * PackFactors.b, vuf );\n float gf = modf( vuf * ShiftRight8, vuf );\n return vec3( vuf * Inv255, gf * PackUpscale, bf );\n}\nvec2 packDepthToRG( const in float v ) {\n if( v <= 0.0 )\n return vec2( 0., 0. );\n if( v >= 1.0 )\n return vec2( 1., 1. );\n float vuf;\n float gf = modf( v * 256., vuf );\n return vec2( vuf * Inv255, gf );\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n return dot( v, UnpackFactors4 );\n}\nfloat unpackRGBToDepth( const in vec3 v ) {\n return dot( v, UnpackFactors3 );\n}\nfloat unpackRGToDepth( const in vec2 v ) {\n return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g;\n}\nvec4 pack2HalfToRGBA( const in vec2 v ) {\n vec4 r = vec4( v.x, fract( v.x * 25
365.0 ), v.y, fract( v.y * 255.0 ) );\n return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( const in vec4 v ) {\n return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n return ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\n return depth * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {\n return ( near * far ) / ( ( far - near ) * depth - far );\n}",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n gl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_BATCHING\n mvPosition = batchingMatrix * mvPosition;\n#endif\n#ifdef USE_INSTANCING\n mvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n gl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n vec3 dithering( vec3 color ) {\n float grid_position = rand( gl_FragCoord.xy );\n vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n return color + dither_shift_RGB;\n }\n#endif",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\n roughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n uniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#if NUM_SPOT_LIGHT_COORDS > 0\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#if NUM_SPOT_LIGHT_MAPS > 0\n uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\n#endif\n#ifdef USE_SHADOWMAP\n #if NUM_DIR_LIGHT_SHADOWS > 0\n #if defined( SHADOWMAP_TYPE_PCF )\n uniform sampler2DShadow directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n #else\n uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n #endif\n varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n struct DirectionalLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n #endif\n #if NUM_SPOT_LIGHT_SHADOWS > 0\n #if defined( SHADOWMAP_TYPE_PCF )\n uniform sampler2DShadow spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n #else\n uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n #endif\n struct SpotLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n #if defined( SHADOWMAP_TYPE_PCF )\n uniform samplerCubeShadow pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n #elif defined( SHADOWMAP_TYPE_BASIC )\n uniform samplerCube pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n #endif\n varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n struct PointLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n float shadowCameraNear;\n float shadowCameraFar;\n };\n uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n #endif\n #if defined( SHADOWMAP_TYPE_PCF )\n float interleavedGradientNoise( vec2 position ) {\n return fract( 52.9829189 * fract( dot( position, vec2( 0.06711056, 0.00583715 ) ) ) );\n }\n vec2 vogelDiskSample( int sampleIndex, int samplesCount, float phi ) {\n const float goldenAngle = 2.399963229728653;\n float r = sqrt( ( float( sampleIndex ) + 0.5 ) / float( samplesCount ) );\n float theta = float( sampleIndex ) * goldenAngle + phi;\n return vec2( cos( theta ), sin( theta ) ) * r;\n }\n #endif\n #if defined( SHADOWMAP_TYPE_PCF )\n float getShadow( sampler2DShadow shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n float shadow = 1.0;\n shadowCoord.xyz /= shadowCoord.w;\n shadowCoord.z += shadowBias;\n bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n bool frustumTest = inFrustum && shadowCoord.z <= 1.0;\n if ( frustumTest ) {\n vec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n float radius = shadowRadius * texelSize.x;\n float phi = interleavedGradientNoise( gl_FragCoord.xy ) * 6.28318530718;\n shadow = (\n texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 0, 5, phi ) * radius, shadowCoord.z ) ) +\n texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 1, 5, phi ) * radius, shadowCoord.z ) ) +\n texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 2, 5, phi ) * radius, shadowCoord.z ) ) +\n texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 3, 5, phi ) * radius, shadowCoord.z ) ) +\n texture( shadowMap, vec3( shadowCoord.xy + vogelDiskSample( 4, 5, phi ) * radius, shadowCoord.z ) )\n ) * 0.2;\n }\n return mix( 1.0, shadow, shadowIntensity );\n }\n #elif defined( SHADOWMAP_TYPE_VSM )\n float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n float shadow = 1.0;\n shadowCoord.xyz /= shadowCoord.w;\n shadowCoord.z += shadowBias;\n bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n bool frustumTest = inFrustum && shadowCoord.z <= 1.0;\n if ( frustumTest ) {\n vec2 distribution = texture2D( shadowMap, shadowCoord.xy ).rg;\n float mean = distribution.x;\n float variance = distribution.y * distribution.y;\n #ifdef USE_REVERSED_DEPTH_BUFFER\n float hard_shadow = step( mean, shadowCoord.z );\n #else\n float hard_shadow = step( shadowCoord.z, mean );\n #endif\n if ( hard_shadow == 1.0 ) {\n shadow = 1.0;\n } else {\n variance = max( variance, 0.0000001 );\n float d = shadowCoord.z - mean;\n float p_max = variance / ( variance + d * d );\n p_max = clamp( ( p_max - 0.3 ) / 0.65, 0.0, 1.0 );\n shadow = max( hard_shadow, p_max );\n }\n }\n return mix( 1.0, shadow, shadowIntensity );\n }\n #else\n float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n float shadow = 1.0;\n shadowCoord.xyz /= shadowCoord.w;\n shadowCoord.z += shadowBias;\n bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n bool frustumTest = inFrustum && shadowCoord.z <= 1.0;\n if ( frustumTest ) {\n float depth = texture2D( shadowMap, shadowCoord.xy ).r;\n #ifdef USE_REVERSED_DEPTH_BUFFER\n shadow = step( depth, shadowCoord.z );\n #else\n shadow = step( shadowCoord.z, depth );\n #endif\n }\n return mix( 1.0, shadow, shadowIntensity );\n }\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n #if defined( SHADOWMAP_TYPE_PCF )\n float getPointShadow( samplerCubeShadow shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n float shadow = 1.0;\n vec3 lightToPosition = shadowCoord.xyz;\n vec3 bd3D = normalize( lightToPosition );\n vec3 absVec = abs( lightToPosition );\n float viewSpaceZ = max( max( absVec.x, absVec.y ), absVec.z );\n if ( viewSpaceZ - shadowCameraFar <= 0.0 && viewSpaceZ - shadowCameraNear >= 0.0 ) {\n float dp = ( shadowCameraFar * ( viewSpaceZ - shadowCameraNear ) ) / ( viewSpaceZ * ( shadowCameraFar - shadowCameraNear ) );\n dp += shadowBias;\n float texelSize = shadowRadius / shadowMapSize.x;\n vec3 absDir = abs( bd3D );\n vec3 tangent = absDir.x > absDir.z ? vec3( 0.0, 1.0, 0.0 ) : vec3( 1.0, 0.0, 0.0 );\n tangent = normalize( cross( bd3D, tangent ) );\n vec3 bitangent = cross( bd3D, tangent );\n float phi = interleavedGradientNoise( gl_FragCoord.xy ) * 6.28318530718;\n shadow = (\n texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 0, 5, phi ).x + bitangent * vogelDiskSample( 0, 5, phi ).y ) * texelSize, dp ) ) +\n texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 1, 5, phi ).x + bitangent * vogelDiskSample( 1, 5, phi ).y ) * texelSize, dp ) ) +\n texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 2, 5, phi ).x + bitangent * vogelDiskSample( 2, 5, phi ).y ) * texelSize, dp ) ) +\n texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 3, 5, phi ).x + bitangent * vogelDiskSample( 3, 5, phi ).y ) * texelSize, dp ) ) +\n texture( shadowMap, vec4( bd3D + ( tangent * vogelDiskSample( 4, 5, phi ).x + bitangent * vogelDiskSample( 4, 5, phi ).y ) * texelSize, dp ) )\n ) * 0.2;\n }\n return mix( 1.0, shadow, shadowIntensity );\n }\n #elif defined( SHADOWMAP_TYPE_BASIC )\n float getPointShadow( samplerCube shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n float shadow = 1.0;\n vec3 lightToPosition = shadowCoord.xyz;\n vec3 bd3D = normalize( lightToPosition );\n vec3 absVec = abs( lightToPosition );\n float viewSpaceZ = max( max( absVec.x, absVec.y ), absVec.z );\n if ( viewSpaceZ - shadowCameraFar <= 0.0 && viewSpaceZ - shadowCameraNear >= 0.0 ) {\n float dp = ( shadowCameraFar * ( viewSpaceZ - shadowCameraNear ) ) / ( viewSpaceZ * ( shadowCameraFar - shadowCameraNear ) );\n dp += shadowBias;\n float depth = textureCube( shadowMap, bd3D ).r;\n #ifdef USE_REVERSED_DEPTH_BUFFER\n shadow = step( depth, dp );\n #else\n shadow = step( dp, depth );\n #endif\n }\n return mix( 1.0, shadow, shadowIntensity );\n }\n #endif\n #endif\n#endif",shadowmap_pars_vertex:"#if NUM_SPOT_L
36IGHT_COORDS > 0\n uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#ifdef USE_SHADOWMAP\n #if NUM_DIR_LIGHT_SHADOWS > 0\n uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n struct DirectionalLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n #endif\n #if NUM_SPOT_LIGHT_SHADOWS > 0\n struct SpotLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n struct PointLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n float shadowCameraNear;\n float shadowCameraFar;\n };\n uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n #endif\n#endif",shadowmap_vertex:"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\n vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n vec4 shadowWorldPosition;\n#endif\n#if defined( USE_SHADOWMAP )\n #if NUM_DIR_LIGHT_SHADOWS > 0\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n }\n #pragma unroll_loop_end\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n }\n #pragma unroll_loop_end\n #endif\n#endif\n#if NUM_SPOT_LIGHT_COORDS > 0\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\n shadowWorldPosition = worldPosition;\n #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\n #endif\n vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\n }\n #pragma unroll_loop_end\n#endif",shadowmask_pars_fragment:"float getShadowMask() {\n float shadow = 1.0;\n #ifdef USE_SHADOWMAP\n #if NUM_DIR_LIGHT_SHADOWS > 0\n DirectionalLightShadow directionalLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n directionalLight = directionalLightShadows[ i ];\n shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n }\n #pragma unroll_loop_end\n #endif\n #if NUM_SPOT_LIGHT_SHADOWS > 0\n SpotLightShadow spotLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n spotLight = spotLightShadows[ i ];\n shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n }\n #pragma unroll_loop_end\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0 && ( defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_BASIC ) )\n PointLightShadow pointLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n pointLight = pointLightShadows[ i ];\n shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n }\n #pragma unroll_loop_end\n #endif\n #endif\n return shadow;\n}",skinbase_vertex:"#ifdef USE_SKINNING\n mat4 boneMatX = getBoneMatrix( skinIndex.x );\n mat4 boneMatY = getBoneMatrix( skinIndex.y );\n mat4 boneMatZ = getBoneMatrix( skinIndex.z );\n mat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n uniform mat4 bindMatrix;\n uniform mat4 bindMatrixInverse;\n uniform highp sampler2D boneTexture;\n mat4 getBoneMatrix( const in float i ) {\n int size = textureSize( boneTexture, 0 ).x;\n int j = int( i ) * 4;\n int x = j % size;\n int y = j / size;\n vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );\n vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );\n vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );\n vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );\n return mat4( v1, v2, v3, v4 );\n }\n#endif",skinning_vertex:"#ifdef USE_SKINNING\n vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n vec4 skinned = vec4( 0.0 );\n skinned += boneMatX * skinVertex * skinWeight.x;\n skinned += boneMatY * skinVertex * skinWeight.y;\n skinned += boneMatZ * skinVertex * skinWeight.z;\n skinned += boneMatW * skinVertex * skinWeight.w;\n transformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n mat4 skinMatrix = mat4( 0.0 );\n skinMatrix += skinWeight.x * boneMatX;\n skinMatrix += skinWeight.y * boneMatY;\n skinMatrix += skinWeight.z * boneMatZ;\n skinMatrix += skinWeight.w * boneMatW;\n skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n #ifdef USE_TANGENT\n objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n #endif\n#endif",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\n specularStrength = texelSpecular.r;\n#else\n specularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n uniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;
36\nvec3 LinearToneMapping( vec3 color ) {\n return saturate( toneMappingExposure * color );\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n color *= toneMappingExposure;\n return saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 CineonToneMapping( vec3 color ) {\n color *= toneMappingExposure;\n color = max( vec3( 0.0 ), color - 0.004 );\n return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n vec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n return a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n const mat3 ACESInputMat = mat3(\n vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ),\n vec3( 0.04823, 0.01566, 0.83777 )\n );\n const mat3 ACESOutputMat = mat3(\n vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ),\n vec3( -0.07367, -0.00605, 1.07602 )\n );\n color *= toneMappingExposure / 0.6;\n color = ACESInputMat * color;\n color = RRTAndODTFit( color );\n color = ACESOutputMat * color;\n return saturate( color );\n}\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\n vec3( 1.6605, - 0.1246, - 0.0182 ),\n vec3( - 0.5876, 1.1329, - 0.1006 ),\n vec3( - 0.0728, - 0.0083, 1.1187 )\n);\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\n vec3( 0.6274, 0.0691, 0.0164 ),\n vec3( 0.3293, 0.9195, 0.0880 ),\n vec3( 0.0433, 0.0113, 0.8956 )\n);\nvec3 agxDefaultContrastApprox( vec3 x ) {\n vec3 x2 = x * x;\n vec3 x4 = x2 * x2;\n return + 15.5 * x4 * x2\n - 40.14 * x4 * x\n + 31.96 * x4\n - 6.868 * x2 * x\n + 0.4298 * x2\n + 0.1191 * x\n - 0.00232;\n}\nvec3 AgXToneMapping( vec3 color ) {\n const mat3 AgXInsetMatrix = mat3(\n vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\n vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\n vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\n );
36\n const mat3 AgXOutsetMatrix = mat3(\n vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\n vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\n vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\n );\n const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069;\n color *= toneMappingExposure;\n color = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\n color = AgXInsetMatrix * color;\n color = max( color, 1e-10 ); color = log2( color );\n color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\n color = clamp( color, 0.0, 1.0 );\n color = agxDefaultContrastApprox( color );\n color = AgXOutsetMatrix * color;\n color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\n color = LINEAR_REC2020_TO_LINEAR_SRGB * color;\n color = clamp( color, 0.0, 1.0 );\n return color;\n}\nvec3 NeutralToneMapping( vec3 color ) {\n const float StartCompression = 0.8 - 0.04;\n const float Desaturation = 0.15;\n color *= toneMappingExposure;\n float x = min( color.r, min( color.g, color.b ) );\n float offset = x < 0.08 ? x - 6.25 * x * x : 0.04;\n color -= offset;\n float peak = max( color.r, max( color.g, color.b ) );\n if ( peak < StartCompression ) return color;\n float d = 1. - StartCompression;\n float newPeak = 1. - d * d / ( peak + d - StartCompression );\n color *= newPeak / peak;\n float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. );\n return mix( color, vec3( newPeak ), g );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }",transmission_fragment:"#ifdef USE_TRANSMISSION\n material.transmission = transmission;\n material.transmissionAlpha = 1.0;\n material.thickness = thickness;\n material.attenuationDistance = attenuationDistance;\n material.attenuationColor = attenuationColor;\n #ifdef USE_TRANSMISSIONMAP\n material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\n #endif\n #ifdef USE_THICKNESSMAP\n material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\n #endif\n vec3 pos = vWorldPosition;\n vec3 v = normalize( cameraPosition - pos );\n vec3 n = inverseTransformDirection( normal, viewMatrix );\n vec4 transmitted = getIBLVolumeRefraction(\n n, v, material.roughness, material.diffuseContribution, material.specularColorBlended, material.specularF90,\n pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness,\n material.attenuationColor, material.attenuationDistance );\n material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\n totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\n#endif",transmission_pars_fragment:"#ifdef USE_TRANSMISSION\n uniform float transmission;\n uniform float thickness;\n uniform float attenuationDistance;\n uniform vec3 attenuationColor;\n #ifdef USE_TRANSMISSIONMAP\n uniform sampler2D transmissionMap;\n #endif\n #ifdef USE_THICKNESSMAP\n uniform sampler2D thicknessMap;\n #endif\n uniform vec2 transmissionSamplerSize;\n uniform sampler2D transmissionSamplerMap;\n uniform mat4 modelMatrix;\n uniform mat4 projectionMatrix;\n varying vec3 vWorldPosition;\n float w0( float a ) {\n return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\n }\n float w1( float a ) {\n return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\n }\n float w2( float a ){\n return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\n }\n float w3( float a ) {\n return ( 1.0 / 6.0 ) * ( a * a * a );\n }\n float g0( float a ) {\n return w0( a ) + w1( a );\n }\n float g1( float a ) {\n return w2( a ) + w3( a );\n }\n float h0( float a ) {\n return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\n }\n float h1( float a ) {\n return 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\n }\n vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\n uv = uv * texelSize.zw + 0.5;\n vec2 iuv = floor( uv );\n vec2 fuv = fract( uv );\n float g0x = g0( fuv.x );\n float g1x = g1( fuv.x );\n float h0x = h0( fuv.x );\n float h1x = h1( fuv.x );\n float h0y = h0( fuv.y );\n float h1y = h1( fuv.y );\n vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\n g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\n }\n vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\n vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\n vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\n vec2 fLodSizeInv = 1.0 / fLodSize;\n vec2 cLodSizeInv = 1.0 / cLodSize;\n vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\n vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\n return mix( fSample, cSample, fract( lod ) );\n }\n vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n vec3 modelScale;\n modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n return normalize( refractionVector ) * thickness * modelScale;\n }\n float applyIorToRoughness( const in float roughness, const in float ior ) {\n return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n }\n vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\n }\n vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n if ( isinf( attenuationDistance ) ) {\n return vec3( 1.0 );\n } else {\n vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance;\n }\n }\n vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\n const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\n const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness,\n const in vec3 attenuationColor, const in float attenuationDistance ) {\n vec4 transmittedLight;\n vec3 transmittance;\n #ifdef USE_DISPERSION\n float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion;\n vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread );\n for ( int i = 0; i < 3; i ++ ) {\n vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix );\n vec3 refractedRayExit = position + transmissionRay;\n vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n vec2 refractionCoords = ndcPos.xy / ndcPos.w;\n refractionCoords += 1.0;\n refractionCoords /= 2.0;\n vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] );\n transmittedLight[ i ] = transmissionSample[ i ];\n transmittedLight.a += transmissionSample.a;\n transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ];\n }\n transmittedLight.a /= 3.0;\n #else\n vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n vec3 refractedRayExit = position + transmissionRay;\n vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n vec2 refractionCoords = ndcPos.xy / ndcPos.w;\n refractionCoords += 1.0;\n refractionCoords /= 2.0;\n transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\n #endif\n vec3 attenuatedColor = transmittance * transmittedLight.rgb;\n vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\n return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\n }\n#endif",uv_pars_fragment:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n varying vec2 vUv;\n#endif\n#ifdef USE_MAP\n varying vec2 vMapUv;
36\n#endif\n#ifdef USE_ALPHAMAP\n varying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n varying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n varying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n varying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n varying vec2 vNormalMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n varying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n varying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n varying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n varying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n varying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n varying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n varying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n varying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n varying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n varying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n varying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n varying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n varying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n varying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n uniform mat3 transmissionMapTransform;\n varying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n uniform mat3 thicknessMapTransform;\n varying vec2 vThicknessMapUv;\n#endif",uv_pars_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n varying vec2 vUv;\n#endif\n#ifdef USE_MAP\n uniform mat3 mapTransform;\n varying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n uniform mat3 alphaMapTransform;\n varying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n uniform mat3 lightMapTransform;\n varying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n uniform mat3 aoMapTransform;\n varying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n uniform mat3 bumpMapTransform;\n varying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n uniform mat3 normalMapTransform;\n varying vec2 vNormalMapUv;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n uniform mat3 displacementMapTransform;\n varying vec2 vDisplacementMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n uniform mat3 emissiveMapTransform;\n varying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n uniform mat3 metalnessMapTransform;\n varying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n uniform mat3 roughnessMapTransform;\n varying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n uniform mat3 anisotropyMapTransform;\n varying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n uniform mat3 clearcoatMapTransform;\n varying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n uniform mat3 clearcoatNormalMapTransform;\n varying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n uniform mat3 clearcoatRoughnessMapTransform;\n varying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n uniform mat3 sheenColorMapTransform;\n varying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n uniform mat3 sheenRoughnessMapTransform;\n varying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n uniform mat3 iridescenceMapTransform;\n varying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n uniform mat3 iridescenceThicknessMapTransform;\n varying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n uniform mat3 specularMapTransform;\n varying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n uniform mat3 specularColorMapTransform;\n varying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n uniform mat3 specularIntensityMapTransform;\n varying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n uniform mat3 transmissionMapTransform;\n varying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n uniform mat3 thicknessMapTransform;\n varying vec2 vThicknessMapUv;\n#endif",uv_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n vUv = vec3( uv, 1 ).xy;\n#endif\n#ifdef USE_MAP\n vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ALPHAMAP\n vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_LIGHTMAP\n vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_AOMAP\n vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_BUMPMAP\n vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_NORMALMAP\n vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_EMISSIVEMAP\n vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_METALNESSMAP\n vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ROUGHNESSMAP\n vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ANISOTROPYMAP\n vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOATMAP\n vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;
36\n#endif\n#ifdef USE_IRIDESCENCEMAP\n vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULARMAP\n vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_THICKNESSMAP\n vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\n vec4 worldPosition = vec4( transformed, 1.0 );\n #ifdef USE_BATCHING\n worldPosition = batchingMatrix * worldPosition;\n #endif\n #ifdef USE_INSTANCING\n worldPosition = instanceMatrix * worldPosition;\n #endif\n worldPosition = modelMatrix * worldPosition;\n#endif",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n vUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n gl_Position = vec4( position.xy, 1.0, 1.0 );\n}",background_frag:"uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n vec4 texColor = texture2D( t2D, vUv );\n #ifdef DECODE_VIDEO_TEXTURE\n texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\n #endif\n texColor.rgb *= backgroundIntensity;\n gl_FragColor = texColor;\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n}",backgroundCube_vert:"varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n vWorldDirection = transformDirection( position, modelMatrix );\n #include <begin_vertex>\n #include <project_vertex>\n gl_Position.z = gl_Position.w;\n}",backgroundCube_frag:"#ifdef ENVMAP_TYPE_CUBE\n uniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n uniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nuniform mat3 backgroundRotation;\nvarying vec3 vWorldDirection;\n#include <cube_uv_reflection_fragment>\nvoid main() {\n #ifdef ENVMAP_TYPE_CUBE\n vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n #elif defined( ENVMAP_TYPE_CUBE_UV )\n vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness );\n #else\n vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n #endif\n texColor.rgb *= backgroundIntensity;\n gl_FragColor = texColor;\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n}",cube_vert:"varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n vWorldDirection = transformDirection( position, modelMatrix );\n #include <begin_vertex>\n #include <project_vertex>\n gl_Position.z = gl_Position.w;\n}",cube_frag:"uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n gl_FragColor = texColor;\n gl_FragColor.a *= opacity;\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n}",depth_vert:"#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n #include <uv_vertex>\n #include <batching_vertex>\n #include <skinbase_vertex>\n #include <morphinstance_vertex>\n #ifdef USE_DISPLACEMENTMAP\n #include <beginnormal_vertex>\n #include <morphnormal_vertex>\n #include <skinnormal_vertex>\n #endif\n #include <begin_vertex>\n #include <morphtarget_vertex>\n #include <skinning_vertex>\n #include <displacementmap_vertex>\n #include <project_vertex>\n #include <logdepthbuf_vertex>\n #include <clipping_planes_vertex>\n vHighPrecisionZW = gl_Position.zw;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n uniform float opacity;\n#endif\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n vec4 diffuseColor = vec4( 1.0 );\n #include <clipping_planes_fragment>\n #if DEPTH_PACKING == 3200\n diffuseColor.a = opacity;\n #endif\n #include <map_fragment>\n #include <alphamap_fragment>\n #include <alphatest_fragment>\n #include <alphahash_fragment>\n #include <logdepthbuf_fragment>\n #ifdef USE_REVERSED_DEPTH_BUFFER\n float fragCoordZ = vHighPrecisionZW[ 0 ] / vHighPrecisionZW[ 1 ];\n #else\n float fragCoordZ = 0.5 * vHighPrecisionZW[ 0 ] / vHighPrecisionZW[ 1 ] + 0.5;\n #endif\n #if DEPTH_PACKING == 3200\n gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n #elif DEPTH_PACKING == 3201\n gl_FragColor = packDepthToRGBA( fragCoordZ );\n #elif DEPTH_PACKING == 3202\n gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 );\n #elif DEPTH_PACKING == 3203\n gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 );\n #endif\n}",distance_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n #include <uv_vertex>\n #include <batching_vertex>\n #include <skinbase_vertex>\n #include <morphinstance_vertex>\n #ifdef USE_DISPLACEMENTMAP\n #include <beginnormal_vertex>\n #include <morphnormal_vertex>\n #include <skinnormal_vertex>\n #endif\n #include <begin_vertex>\n #include <morphtarget_vertex>\n #include <skinning_vertex>\n #include <displacementmap_vertex>\n #include <project_vertex>\n #include <worldpos_vertex>\n #include <clipping_planes_vertex>\n vWorldPosition = worldPosition.xyz;\n}",distance_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include <common>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main () {\n vec4 diffuseColor = vec4( 1.0 );\n #include <clipping_planes_fragment>\n #include <map_fragment>\n #include <alphamap_fragment>\n #include <alphatest_fragment>\n #include <alphahash_fragment>\n float dist = length( vWorldPosition - referencePosition );\n dist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n dist = saturate( dist );\n gl_FragColor = vec4( dist, 0.0, 0.0, 1.0 );\n}",equirect_vert:"varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n vWorldDirection = transformDirection( position, modelMatrix );\n #include <begin_vertex>\n #include <project_vertex>\n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n vec3 direction = normalize( vWorldDirection );\n vec2 sampleUV = equirectUv( direction );\n gl_FragColor = texture2D( tEquirect, sampleUV );\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n}",linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include <common>\n#include <uv_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n vLineDistance = scale * lineDistance;\n #include <uv_vertex>\n #include <color_vertex>\n #include <morphinstance_vertex>\n #include <morphcolor_vertex>\n #include <begin_vertex>\n #include <morphtarget_vertex>\n #include <project_vertex>\n #include <logdepthbuf_vertex>\n #include <clipping_planes_vertex>\n #include <fog_vertex>\n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include <clipping_planes_fragment>\n if ( mod( vLineDistance, totalSize ) > dashSize ) {\n discard;\n }\n vec3 outgoingLight = vec3( 0.0 );\n #include <logdepthbuf_fragment>\n #include <map_fragment>\n #include <color_fragment>\n outgoingLight = diffuseColor.rgb;\n #include <opaque_fragment>\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n #include <fog_fragment>\n #include <premultiplied_alpha_fragment>\n}",meshbasic_vert:"#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n #include <uv_vertex>\n #include <color_vertex>\n #include <morphinstance_vertex>\n #include <morphcolor_vertex>\n #include <batching_vertex>\n #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n #include <beginnormal_vertex>\n #include <morphnormal_vertex>\n #include <skinbase_vertex>\n #include <skinnormal_vertex>\n #include <defaultnormal_vertex>\n #endif\n #include <begin_vertex>\n #include <morphtarget_vertex>\n #include <skinning_vertex>\n #include <project_vertex>\n #include <logdepthbuf_vertex>\n #include <clipping_planes_vertex>\n #include <worldpos_vertex>\n #include <envmap_vertex>\n #include <fog_vertex>\n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n varying vec3 vNormal;\n#endif\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include <clipping_planes_fragment>\n #include <logdepthbuf_fragment>\n #include <map_fragment>\n #include <color_fragment>\n #include <alphamap_fragment>\n #include <alphatest_fragment>\n #include <alphahash_fragment>\n #include <specularmap_fragment>\n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n #ifdef USE_LIGHTMAP\n vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n #else\n reflectedLight.indirectDiffuse += vec3( 1.0 );\n #endif\n #include <aomap_fragment>\n reflectedLight.indirectDiffuse *= diffuseColor.rgb;\n vec3 outgoingLight = reflectedLight.indirectDiffuse;\n #include <envmap_fragment>\n #include <opaque_fragment>\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n #include <fog_fragment>\n #include <premultiplied_alpha_fragment>\n #include <dithering_fragment>\n}",meshlambert_vert:"#define LAMBERT\nvarying vec3 vViewPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n #include <uv_vertex>\n #include <color_vertex>\n #include <morphinstance_vertex>\n #include <morphcolor_vertex>\n #include <batching_vertex>\n #include <beginnormal_vertex>\n #include <morphnormal_vertex>\n #include <skinbase_vertex>\n #include <skinnormal_vertex>\n #include <defaultnormal_vertex>\n #include <normal_vertex>\n #include <begin_vertex>\n #include <morphtarget_vertex>\n #include <skinning_vertex>\n #include <displacementmap_vertex>\n #include <project_vertex>\n #include <logdepthbuf_vertex>\n #include <clipping_planes_vertex>\n vViewPosition = - mvPosition.xyz;\n #include <worldpos_vertex>\n #include <envmap_vertex>\n #include <shadowmap_vertex>\n #include <fog_vertex>\n}",meshlambert_frag:"#define LAMBERT\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_lambert_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include <clipping_planes_fragment>\n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\n #include <logdepthbuf_fragment>\n #include <map_fragment>\n #include <color_fragment>\n #include <alphamap_fragment>\n #include <alphatest_fragment>\n #include <alphahash_fragment>\n #include <specularmap_fragment>\n #include <normal_fragment_begin>\n #include <normal_fragment_maps>\n #include <emissivemap_fragment>\n #include <lights_lambert_fragment>\n #include <lights_fragment_begin>\n #include <lights_fragment_maps>\n #include <lights_fragment_end>\n #include <aomap_fragment>\n vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n #include <envmap_fragment>\n #include <opaque_fragment>\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n #include <fog_fragment>\n #include <premultiplied_alpha_fragment>\n #include <dithering_fragment>\n}",meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <color_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n #include <uv_vertex>\n #include <color_vertex>\n #include <morphinstance_vertex>\n #include <morphcolor_vertex>\n #include <batching_vertex>\n #include <beginnormal_vertex>\n #include <morphnormal_vertex>\n #include <skinbase_vertex>\n #include <skinnormal_vertex>\n #include <defaultnormal_vertex>\n #include <normal_vertex>\n #include <begin_vertex>\n #include <morphtarget_ve
36rtex>\n #include <skinning_vertex>\n #include <displacementmap_vertex>\n #include <project_vertex>\n #include <logdepthbuf_vertex>\n #include <clipping_planes_vertex>\n #include <fog_vertex>\n vViewPosition = - mvPosition.xyz;\n}",meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <fog_pars_fragment>\n#include <normal_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include <clipping_planes_fragment>\n #include <logdepthbuf_fragment>\n #include <map_fragment>\n #include <color_fragment>\n #include <alphamap_fragment>\n #include <alphatest_fragment>\n #include <alphahash_fragment>\n #include <normal_fragment_begin>\n #include <normal_fragment_maps>\n vec3 viewDir = normalize( vViewPosition );\n vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n vec3 y = cross( viewDir, x );\n vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n #ifdef USE_MATCAP\n vec4 matcapColor = texture2D( matcap, uv );\n #else\n vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\n #endif\n vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n #include <opaque_fragment>\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n #include <fog_fragment>\n #include <premultiplied_alpha_fragment>\n #include <dithering_fragment>\n}",meshnormal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n varying vec3 vViewPosition;\n#endif\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n #include <uv_vertex>\n #include <batching_vertex>\n #include <beginnormal_vertex>\n #include <morphinstance_vertex>\n #include <morphnormal_vertex>\n #include <skinbase_vertex>\n #include <skinnormal_vertex>\n #include <defaultnormal_vertex>\n #include <normal_vertex>\n #include <begin_vertex>\n #include <morphtarget_vertex>\n #include <skinning_vertex>\n #include <displacementmap_vertex>\n #include <project_vertex>\n #include <logdepthbuf_vertex>\n #include <clipping_planes_vertex>\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n vViewPosition = - mvPosition.xyz;\n#endif\n}",meshnormal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n varying vec3 vViewPosition;\n#endif\n#include <uv_pars_fragment>\n#include <normal_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );\n #include <clipping_planes_fragment>\n #include <logdepthbuf_fragment>\n #include <normal_fragment_begin>\n #include <normal_fragment_maps>\n gl_FragColor = vec4( normalize( normal ) * 0.5 + 0.5, diffuseColor.a );\n #ifdef OPAQUE\n gl_FragColor.a = 1.0;\n #endif\n}",meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n #include <uv_vertex>\n #include <color_vertex>\n #include <morphcolor_vertex>\n #include <batching_vertex>\n #include <beginnormal_vertex>\n #include <morphinstance_vertex>\n #include <morphnormal_vertex>\n #include <skinbase_vertex>\n #include <skinnormal_vertex>\n #include <defaultnormal_vertex>\n #include <normal_vertex>\n #include <begin_vertex>\n #include <morphtarget_vertex>\n #include <skinning_vertex>\n #include <displacementmap_vertex>\n #include <project_vertex>\n #include <logdepthbuf_vertex>\n #include <clipping_planes_vertex>\n vViewPosition = - mvPosition.xyz;\n #include <worldpos_vertex>\n #include <envmap_vertex>\n #include <shadowmap_vertex>\n #include <fog_vertex>\n}",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_phong_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include <clipping_planes_fragment>\n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\n #include <logdepthbuf_fragment>\n #include <map_fragment>\n #include <color_fragment>\n #include <alphamap_fragment>\n #include <alphatest_fragment>\n #include <alphahash_fragment>\n #include <specularmap_fragment>\n #include <normal_fragment_begin>\n #include <normal_fragment_maps>\n #include <emissivemap_fragment>\n #include <lights_phong_fragment>\n #include <lights_fragment_begin>\n #include <lights_fragment_maps>\n #include <lights_fragment_end>\n #include <aomap_fragment>\n vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n #include <envmap_fragment>\n #include <opaque_fragment>\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n #include <fog_fragment>\n #include <premultiplied_alpha_fragment>\n #include <dithering_fragment>\n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n varying vec3 vWorldPosition;\n#endif\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n #include <uv_vertex>\n #include <color_vertex>\n #include <morphinstance_vertex>\n #include <morphcolor_vertex>\n #include <batching_vertex>\n #include <beginnormal_vertex>\n #include <morphnormal_vertex>\n #include <skinbase_vertex>\n #include <skinnormal_vertex>\n #include <defaultnormal_vertex>\n #include <normal_vertex>\n #include <begin_vertex>\n #include <morphtarget_vertex>\n #include <skinning_vertex>\n #include <displacementmap_vertex>\n #include <project_vertex>\n #include <logdepthbuf_vertex>\n #include <clipping_planes_vertex>\n vViewPosition = - mvPosition.xyz;\n #include <worldpos_vertex>\n #include <shadowmap_vertex>\n #include <fog_vertex>\n#ifdef USE_TRANSMISSION\n vWorldPosition = worldPosition.xyz;\n#endif\n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n #define IOR\n #define USE_SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n uniform float ior;\n#endif\n#ifdef USE_SPECULAR\n uniform float specularIntensity;\n uniform vec3 specularColor;\n #ifdef USE_SPECULAR_COLORMAP\n uniform sampler2D specularColorMap;\n #endif\n #ifdef USE_SPECULAR_INTENSITYMAP\n uniform sampler2D specularIntensityMap;\n #endif\n#endif\n#ifdef USE_CLEARCOAT\n uniform float clearcoat;
36\n uniform float clearcoatRoughness;\n#endif\n#ifdef USE_DISPERSION\n uniform float dispersion;\n#endif\n#ifdef USE_IRIDESCENCE\n uniform float iridescence;\n uniform float iridescenceIOR;\n uniform float iridescenceThicknessMinimum;\n uniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n uniform vec3 sheenColor;\n uniform float sheenRoughness;\n #ifdef USE_SHEEN_COLORMAP\n uniform sampler2D sheenColorMap;\n #endif\n #ifdef USE_SHEEN_ROUGHNESSMAP\n uniform sampler2D sheenRoughnessMap;\n #endif\n#endif\n#ifdef USE_ANISOTROPY\n uniform vec2 anisotropyVector;\n #ifdef USE_ANISOTROPYMAP\n uniform sampler2D anisotropyMap;\n #endif\n#endif\nvarying vec3 vViewPosition;\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <iridescence_fragment>\n#include <cube_uv_reflection_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_physical_pars_fragment>\n#include <fog_pars_fragment>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_physical_pars_fragment>\n#include <transmission_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <clearcoat_pars_fragment>\n#include <iridescence_pars_fragment>\n#include <roughnessmap_pars_fragment>\n#include <metalnessmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include <clipping_planes_fragment>\n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\n #include <logdepthbuf_fragment>\n #include <map_fragment>\n #include <color_fragment>\n #include <alphamap_fragment>\n #include <alphatest_fragment>\n #include <alphahash_fragment>\n #include <roughnessmap_fragment>\n #include <metalnessmap_fragment>\n #include <normal_fragment_begin>\n #include <normal_fragment_maps>\n #include <clearcoat_normal_fragment_begin>\n #include <clearcoat_normal_fragment_maps>\n #include <emissivemap_fragment>\n #include <lights_physical_fragment>\n #include <lights_fragment_begin>\n #include <lights_fragment_maps>\n #include <lights_fragment_end>\n #include <aomap_fragment>\n vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n #include <transmission_fragment>\n vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n #ifdef USE_SHEEN\n \n outgoingLight = outgoingLight + sheenSpecularDirect + sheenSpecularIndirect;\n \n #endif\n #ifdef USE_CLEARCOAT\n float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\n vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;
36\n #endif\n #include <opaque_fragment>\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n #include <fog_fragment>\n #include <premultiplied_alpha_fragment>\n #include <dithering_fragment>\n}",meshtoon_vert:"#define TOON\nvarying vec3 vViewPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n #include <uv_vertex>\n #include <color_vertex>\n #include <morphinstance_vertex>\n #include <morphcolor_vertex>\n #include <batching_vertex>\n #include <beginnormal_vertex>\n #include <morphnormal_vertex>\n #include <skinbase_vertex>\n #include <skinnormal_vertex>\n #include <defaultnormal_vertex>\n #include <normal_vertex>\n #include <begin_vertex>\n #include <morphtarget_vertex>\n #include <skinning_vertex>\n #include <displacementmap_vertex>\n #include <project_vertex>\n #include <logdepthbuf_vertex>\n #include <clipping_planes_vertex>\n vViewPosition = - mvPosition.xyz;\n #include <worldpos_vertex>\n #include <shadowmap_vertex>\n #include <fog_vertex>\n}",meshtoon_frag:"#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <gradientmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_toon_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include <clipping_planes_fragment>\n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\n #include <logdepthbuf_fragment>\n #include <map_fragment>\n #include <color_fragment>\n #include <alphamap_fragment>\n #include <alphatest_fragment>\n #include <alphahash_fragment>\n #include <normal_fragment_begin>\n #include <normal_fragment_maps>\n #include <emissivemap_fragment>\n #include <lights_toon_fragment>\n #include <lights_fragment_begin>\n #include <lights_fragment_maps>\n #include <lights_fragment_end>\n #include <aomap_fragment>\n vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n #include <opaque_fragment>\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n #include <fog_fragment>\n #include <premultiplied_alpha_fragment>\n #include <dithering_fragment>\n}",points_vert:"uniform float size;\nuniform float scale;\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\n#ifdef USE_POINTS_UV\n varying vec2 vUv;\n uniform mat3 uvTransform;\n#endif\nvoid main() {\n #ifdef USE_POINTS_UV\n vUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n #endif\n #include <color_vertex>\n #include <morphinstance_vertex>\n #include <morphcolor_vertex>\n #include <begin_vertex>\n #include <morphtarget_vertex>\n #include <project_vertex>\n gl_PointSize = size;\n #ifdef USE_SIZEATTENUATION\n bool isPerspective = isPerspectiveMatrix( projectionMatrix );\n if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n #endif\n #include <logdepthbuf_vertex>\n #include <clipping_planes_vertex>\n #include <worldpos_vertex>\n #include <fog_vertex>\n}",points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <color_pars_fragment>\n#include <map_particle_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include <clipping_planes_fragment>\n vec3 outgoingLight = vec3( 0.0 );\n #include <logdepthbuf_fragment>\n #include <map_particle_fragment>\n #include <color_fragment>\n #include <alphatest_fragment>\n #include <alphahash_fragment>\n outgoingLight = diffuseColor.rgb;\n #include <opaque_fragment>\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n #include <fog_fragment>\n #include <premultiplied_alpha_fragment>\n}",shadow_vert:"#include <common>\n#include <batching_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <shadowmap_pars_vertex>\nvoid main() {\n #include <batching_vertex>\n #include <beginnormal_vertex>\n #include <morphinstance_vertex>\n #include <morphnormal_vertex>\n #include <skinbase_vertex>\n #include <skinnormal_vertex>\n #include <defaultnormal_vertex>\n #include <begin_vertex>\n #include <morphtarget_vertex>\n #include <skinning_vertex>\n #include <project_vertex>\n #include <logdepthbuf_vertex>\n #include <worldpos_vertex>\n #include <shadowmap_vertex>\n #include <fog_vertex>\n}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include <common>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <logdepthbuf_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <shadowmask_pars_fragment>\nvoid main() {\n #include <logdepthbuf_fragment>\n gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n #include <fog_fragment>\n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include <common>\n#include <uv_pars_vertex>\n#include <fog_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n #include <uv_vertex>\n vec4 mvPosition = modelViewMatrix[ 3 ];\n vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) );\n #ifndef USE_SIZEATTENUATION\n bool isPerspective = isPerspectiveMatrix( projectionMatrix );\n if ( isPerspective ) scale *= - mvPosition.z;\n #endif\n vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n vec2 rotatedPosition;\n rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n mvPosition.xy += rotatedPosition;\n gl_Position = projectionMatrix * mvPosition;\n #include <logdepthbuf_vertex>\n #include <clipping_planes_vertex>\n #include <fog_vertex>\n}",sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include <clipping_planes_fragment>\n vec3 outgoingLight = vec3( 0.0 );\n #include <logdepthbuf_fragment>\n #include <map_fragment>\n #include <alphamap_fragment>\n #include <alphatest_fragment>\n #include <alphahash_fragment>\n outgoingLight = diffuseColor.rgb;\n #include <opaque_fragment>\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n #include <fog_fragment>\n}"},lr={common:{diffuse:{value:new tZ(0xffffff)},opacity:{value:1},map:{value:null},mapTransform:{value:new ey},alphaMap:{value:null},alphaMapTransform:{value:new ey},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new ey}},envmap:{envMap:{value:null},envMapRotation:{value:new ey},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98},dfgLUT:{value:null}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new ey}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new ey}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new ey},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new ey},normalScale:{value:new ef(1,1)}}
vendor: 7,635 bytes, line 36
36,displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new ey},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new ey}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new ey}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new ey}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new tZ(0xffffff)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,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 tZ(0xffffff)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new ey},alphaTest:{value:0},uvTransform:{value:new ey}},sprite:{diffuse:{value:new tZ(0xffffff)},opacity:{value:1},center:{value:new ef(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new ey},alphaMap:{value:null},alphaMapTransform:{value:new ey},alphaTest:{value:0}}},la={basic:{uniforms:nL([lr.common,lr.specularmap,lr.envmap,lr.aomap,lr.lightmap,lr.fog]),vertexShader:li.meshbasic_vert,fragmentShader:li.meshbasic_frag},lambert:{uniforms:nL([lr.common,lr.specularmap,lr.envmap,lr.aomap,lr.lightmap,lr.emissivemap,lr.bumpmap,lr.normalmap,lr.displacementmap,lr.fog,lr.lights,{emissive:{value:new tZ(0)}}]),vertexShader:li.meshlambert_vert,fragmentShader:li.meshlambert_frag},phong:{uniforms:nL([lr.common,lr.specularmap,lr.envmap,lr.aomap,lr.lightmap,lr.emissivemap,lr.bumpmap,lr.normalmap,lr.displacementmap,lr.fog,lr.lights,{emissive:{value:new tZ(0)},specular:{value:new tZ(1118481)},shininess:{value:30}}]),vertexShader:li.meshphong_vert,fragmentShader:li.meshphong_frag},standard:{uniforms:nL([lr.common,lr.envmap,lr.aomap,lr.lightmap,lr.emissivemap,lr.bumpmap,lr.normalmap,lr.displacementmap,lr.roughnessmap,lr.metalnessmap,lr.fog,lr.lights,{emissive:{value:new tZ(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:li.meshphysical_vert,fragmentShader:li.meshphysical_frag},toon:{uniforms:nL([lr.common,lr.aomap,lr.lightmap,lr.emissivemap,lr.bumpmap,lr.normalmap,lr.displacementmap,lr.gradientmap,lr.fog,lr.lights,{emissive:{value:new tZ(0)}}]),vertexShader:li.meshtoon_vert,fragmentShader:li.meshtoon_frag},matcap:{uniforms:nL([lr.common,lr.bumpmap,lr.normalmap,lr.displacementmap,lr.fog,{matcap:{value:null}}]),vertexShader:li.meshmatcap_vert,fragmentShader:li.meshmatcap_frag},points:{uniforms:nL([lr.points,lr.fog]),vertexShader:li.points_vert,fragmentShader:li.points_frag},dashed:{uniforms:nL([lr.common,lr.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:li.linedashed_vert,fragmentShader:li.linedashed_frag},depth:{uniforms:nL([lr.common,lr.displacementmap]),vertexShader:li.depth_vert,fragmentShader:li.depth_frag},normal:{uniforms:nL([lr.common,lr.bumpmap,lr.normalmap,lr.displacementmap,{opacity:{value:1}}]),vertexShader:li.meshnormal_vert,fragmentShader:li.meshnormal_frag},sprite:{uniforms:nL([lr.sprite,lr.fog]),vertexShader:li.sprite_vert,fragmentShader:li.sprite_frag},background:{uniforms:{uvTransform:{value:new ey},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:li.background_vert,fragmentShader:li.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new ey}},vertexShader:li.backgroundCube_vert,fragmentShader:li.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:li.cube_vert,fragmentShader:li.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:li.equirect_vert,fragmentShader:li.equirect_frag},distance:{uniforms:nL([lr.common,lr.displacementmap,{referencePosition:{value:new eg},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:li.distance_vert,fragmentShader:li.distance_frag},shadow:{uniforms:nL([lr.lights,lr.fog,{color:{value:new tZ(0)},opacity:{value:1}}]),vertexShader:li.shadow_vert,fragmentShader:li.shadow_frag}};la.physical={uniforms:nL([la.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new ey},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new ey},clearcoatNormalScale:{value:new ef(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new ey},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new ey},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new ey},sheen:{value:0},sheenColor:{value:new tZ(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new ey},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new ey},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new ey},transmissionSamplerSize:{value:new ef},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new ey},attenuationDistance:{value:0},attenuationColor:{value:new tZ(0)},specularColor:{value:new tZ(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new ey},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new ey},anisotropyVector:{value:new ef},anisotropyMap:{value:null},anisotropyMapTransform:{value:new ey}}]),vertexShader:li.meshphysical_vert,fragmentShader:li.meshphysical_frag};let ls={r:0,b:0,g:0},lo=new tp,ll=new ti;function lu(e,t,n,i,r,a,s){let o,l,u=new tZ(0),c=+(!0!==a),h=null,d=0,p=null;function f(e){let i=!0===e.isScene?e.background:null;return i&&i.isTexture&&(i=(e.backgroundBlurriness>0?n:t).get(i)),i}function m(t,n){t.getRGB(ls,nP(e)),i.buffers.color.setClear(ls.r,ls.g,ls.b,n,s)}return{getClearColor:function(){return u},setClearColor:function(e,t=1){u.set(e),m(u,c=t)},getClearAlpha:function(){return c},setClearAlpha:function(e){m(u,c=e)},render:function(t){let n=!1,r=f(t);null===r?m(u,c):r&&r.isColor&&(m(r,1),n=!0);let a=e.xr.getEnvironmentBlendMode();"additive"===a?i.buffers.color.setClear(0,0,0,1,s):"alpha-blend"===a&&i.buffers.color.setClear(0,0,0,0,s),(e.autoClear||n)&&(i.buffers.depth.setTest(!0),i.buffers.depth.setMask(!0),i.buffers.color.setMask(!0),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil))},addToRenderList:function(t,n){let i=f(n);
36i&&(i.isCubeTexture||306===i.mapping)?(void 0===l&&((l=new nE(new nA(1,1,1),new nN({name:"BackgroundCubeMaterial",uniforms:nR(la.backgroundCube.uniforms),vertexShader:la.backgroundCube.vertexShader,fragmentShader:la.backgroundCube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1}))).geometry.deleteAttribute("normal"),l.geometry.deleteAttribute("uv"),l.onBeforeRender=function(e,t,n){this.matrixWorld.copyPosition(n.matrixWorld)},Object.defineProperty(l.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),r.update(l)),lo.copy(n.backgroundRotation),lo.x*=-1,lo.y*=-1,lo.z*=-1,i.isCubeTexture&&!1===i.isRenderTargetTexture&&(lo.y*=-1,lo.z*=-1),l.material.uniforms.envMap.value=i,l.material.uniforms.flipEnvMap.value=i.isCubeTexture&&!1===i.isRenderTargetTexture?-1:1,l.material.uniforms.backgroundBlurriness.value=n.backgroundBlurriness,l.material.uniforms.backgroundIntensity.value=n.backgroundIntensity,l.material.uniforms.backgroundRotation.value.setFromMatrix4(ll.makeRotationFromEuler(lo)),l.material.toneMapped=eM.getTransfer(i.colorSpace)!==O,(h!==i||d!==i.version||p!==e.toneMapping)&&(l.material.needsUpdate=!0,h=i,d=i.version,p=e.toneMapping),l.layers.enableAll(),t.unshift(l,l.geometry,l.material,0,0,null)):i&&i.isTexture&&(void 0===o&&((o=new nE(new ab(2,2),new nN({name:"BackgroundMaterial",uniforms:nR(la.background.uniforms),vertexShader:la.background.vertexShader,fragmentShader:la.background.fragmentShader,side:0,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1}))).geometry.deleteAttribute("normal"),Object.defineProperty(o.material,"map",{get:function(){return this.uniforms.t2D.value}}),r.update(o)),o.material.uniforms.t2D.value=i,o.material.uniforms.backgroundIntensity.value=n.backgroundIntensity,o.material.toneMapped=eM.getTransfer(i.colorSpace)!==O,!0===i.matrixAutoUpdate&&i.updateMatrix(),o.material.uniforms.uvTransform.value.copy(i.matrix),(h!==i||d!==i.version||p!==e.toneMapping)&&(o.material.needsUpdate=!0,h=i,d=i.version,p=e.toneMapping),o.layers.enableAll(),t.unshift(o,o.geometry,o.material,0,0,null))},dispose:function(){void 0!==l&&(l.geometry.dispose(),l.material.dispose(),l=void 0),void 0!==o&&(o.geometry.dispose(),o.material.dispose(),o=void 0)}}}function lc(e,t){let n=e.getParameter(e.MAX_VERTEX_ATTRIBS),i={},r=u(null),a=r,s=!1;function o(t){return e.bindVertexArray(t)}function l(t){return e.deleteVertexArray(t)}function u(e){let t=[],i=[],r=[];for(let e=0;e<n;e++)t[e]=0,i[e]=0,r[e]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:t,enabledAttributes:i,attributeDivisors:r,object:e,attributes:{},index:null}}function c(){let e=a.newAttributes;for(let t=0,n=e.length;t<n;t++)e[t]=0}function h(e){d(e,0)}function d(t,n){let i=a.newAttributes,r=a.enabledAttributes,s=a.attributeDivisors;i[t]=1,0===r[t]&&(e.enableVertexAttribArray(t),r[t]=1),s[t]!==n&&(e.vertexAttribDivisor(t,n),s[t]=n)}function p(){let t=a.newAttributes,n=a.enabledAttributes;for(let i=0,r=n.length;i<r;i++)n[i]!==t[i]&&(e.disableVertexAttribArray(i),n[i]=0)}function f(t,n,i,r,a,s,o){!0===o?e.vertexAttribIPointer(t,n,i,a,s):e.vertexAttribPointer(t,n,i,r,a,s)}function m(){g(),s=!0,a!==r&&o((a=r).object)}function g(){r.geometry=null,r.program=null,r.wireframe=!1}return{setup:function(n,r,l,m,g){var v,x;let y,_,b,S,M=!1,w=(v=m,x=l,y=!0===r.wireframe,void 0===(_=i[v.id])&&(_={},i[v.id]=_),void 0===(b=_[x.id])&&(b={},_[x.id]=b),void 0===(S=b[y])&&(S=u(e.createVertexArray()),b[y]=S),S);a!==w&&o((a=w).object),(M=function(e,t,n,i){let r=a.attributes,s=t.attributes,o=0,l=n.getAttributes();for(let t in l)if(l[t].location>=0){let n=r[t],i=s[t];if(void 0===i&&("instanceMatrix"===t&&e.instanceMatrix&&(i=e.instanceMatrix),"instanceColor"===t&&e.instanceColor&&(i=e.instanceColor)),void 0===n||n.attribute!==i||i&&n.data!==i.data)return!0;o++}return a.attributesNum!==o||a.index!==i}(n,m,l,g))&&function(e,t,n,i){let r={},s=t.attributes,o=0,l=n.getAttributes();for(let t in l)if(l[t].location>=0){let n=s[t];void 0===n&&("instanceMatrix"===t&&e.instanceMatrix&&(n=e.instanceMatrix),"instanceColor"===t&&e.instanceColor&&(n=e.instanceColor));let i={};i.attribute=n,n&&n.data&&(i.data=n.data),r[t]=i,o++}a.attributes=r,a.attributesNum=o,a.index=i}(n,m,l,g),null!==g&&t.update(g,e.ELEMENT_ARRAY_BUFFER),(M||s)&&(s=!1,function(n,i,r,a){c();let s=a.attributes,o=r.getAttributes(),l=i.defaultAttributeValues;for(let i in o){let r=o[i];if(r.location>=0){let o=s[i];if(void 0===o&&("instanceMatrix"===i&&n.instanceMatrix&&(o=n.instanceMatrix),"instanceColor"===i&&n.instanceColor&&(o=n.instanceColor)),void 0!==o){let i=o.normalized,s=o.itemSize,l=t.get(o);if(void 0===l)continue;let u=l.buffer,c=l.type,p=l.bytesPerElement,m=c===e.INT||c===e.UNSIGNED_INT||1013===o.gpuType;if(o.isInterleavedBufferAttribute){let t=o.data,l=t.stride,g=o.offset;if(t.isInstancedInterleavedBuffer){for(let e=0;e<r.locationSize;e++)d(r.location+e,t.meshPerAttribute);!0!==n.isInstancedMesh&&void 0===a._maxInstanceCount&&(a._maxInstanceCount=t.meshPerAttribute*t.count)}else for(let e=0;e<r.locationSize;e++)h(r.location+e);e.bindBuffer(e.ARRAY_BUFFER,u);for(let e=0;e<r.locationSize;e++)f(r.location+e,s/r.locationSize,c,i,l*p,(g+s/r.locationSize*e)*p,m)}else{if(o.isInstancedBufferAttribute){for(let e=0;e<r.locationSize;e++)d(r.location+e,o.meshPerAttribute);!0!==n.isInstancedMesh&&void 0===a._maxInstanceCount&&(a._maxInstanceCount=o.meshPerAttribute*o.count)}
36else for(let e=0;e<r.locationSize;e++)h(r.location+e);e.bindBuffer(e.ARRAY_BUFFER,u);for(let e=0;e<r.locationSize;e++)f(r.location+e,s/r.locationSize,c,i,s*p,s/r.locationSize*e*p,m)}}else if(void 0!==l){let t=l[i];if(void 0!==t)switch(t.length){case 2:e.vertexAttrib2fv(r.location,t);break;case 3:e.vertexAttrib3fv(r.location,t);break;case 4:e.vertexAttrib4fv(r.location,t);break;default:e.vertexAttrib1fv(r.location,t)}}}}p()}(n,r,l,m),null!==g&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t.get(g).buffer))},reset:m,resetDefaultState:g,dispose:function(){for(let e in m(),i){let t=i[e];for(let e in t){let n=t[e];for(let e in n)l(n[e].object),delete n[e];delete t[e]}delete i[e]}},releaseStatesOfGeometry:function(e){if(void 0===i[e.id])return;let t=i[e.id];for(let e in t){let n=t[e];for(let e in n)l(n[e].object),delete n[e];delete t[e]}delete i[e.id]},releaseStatesOfProgram:function(e){for(let t in i){let n=i[t];if(void 0===n[e.id])continue;let r=n[e.id];for(let e in r)l(r[e].object),delete r[e];delete n[e.id]}},initAttributes:c,enableAttribute:h,disableUnusedAttributes:p}}function lh(e,t,n){let i;function r(t,r,a){0!==a&&(e.drawArraysInstanced(i,t,r,a),n.update(r,i,a))}this.setMode=function(e){i=e},this.render=function(t,r){e.drawArrays(i,t,r),n.update(r,i,1)},this.renderInstances=r,this.renderMultiDraw=function(e,r,a){if(0===a)return;t.get("WEBGL_multi_draw").multiDrawArraysWEBGL(i,e,0,r,0,a);let s=0;for(let e=0;e<a;e++)s+=r[e];n.update(s,i,1)},this.renderMultiDrawInstances=function(e,a,s,o){if(0===s)return;let l=t.get("WEBGL_multi_draw");if(null===l)for(let t=0;t<e.length;t++)r(e[t],a[t],o[t]);
36else{l.multiDrawArraysInstancedWEBGL(i,e,0,a,0,o,0,s);let t=0;for(let e=0;e<s;e++)t+=a[e]*o[e];n.update(t,i,1)}}}function ld(e,t,n,i){let r;function a(t){if("highp"===t){if(e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.HIGH_FLOAT).precision>0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT).precision>0)return"highp";t="mediump"}return"mediump"===t&&e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_FLOAT).precision>0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let s=void 0!==n.precision?n.precision:"highp",o=a(s);return o!==s&&(Q("WebGLRenderer:",s,"not supported, using",o,"instead."),s=o),{isWebGL2:!0,getMaxAnisotropy:function(){if(void 0!==r)return r;if(!0===t.has("EXT_texture_filter_anisotropic")){let n=t.get("EXT_texture_filter_anisotropic");r=e.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else r=0;return r},getMaxPrecision:a,textureFormatReadable:function(t){return 1023===t||i.convert(t)===e.getParameter(e.IMPLEMENTATION_COLOR_READ_FORMAT)},textureTypeReadable:function(n){let r=1016===n&&(t.has("EXT_color_buffer_half_float")||t.has("EXT_color_buffer_float"));return 1009===n||i.convert(n)===e.getParameter(e.IMPLEMENTATION_COLOR_READ_TYPE)||1015===n||!!r},precision:s,logarithmicDepthBuffer:!0===n.logarithmicDepthBuffer,reversedDepthBuffer:!0===n.reversedDepthBuffer&&t.has("EXT_clip_control"),maxTextures:e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),maxVertexTextures:e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS),maxTextureSize:e.getParameter(e.MAX_TEXTURE_SIZE),maxCubemapSize:e.getParameter(e.MAX_CUBE_MAP_TEXTURE_SIZE),maxAttributes:e.getParameter(e.MAX_VERTEX_ATTRIBS),maxVertexUniforms:e.getParameter(e.MAX_VERTEX_UNIFORM_VECTORS),maxVaryings:e.getParameter(e.MAX_VARYING_VECTORS),maxFragmentUniforms:e.getParameter(e.MAX_FRAGMENT_UNIFORM_VECTORS),maxSamples:e.getParameter(e.MAX_SAMPLES),samples:e.getParameter(e.SAMPLES)}}function lp(e){let t=this,n=null,i=0,r=!1,a=!1,s=new iD,o=new ey,l={value:null,needsUpdate:!1};function u(e,n,i,r){let a=null!==e?e.length:0,u=null;if(0!==a){if(u=l.value,!0!==r||null===u){let t=i+4*a,r=n.matrixWorldInverse;o.getNormalMatrix(r),(null===u||u.length<t)&&(u=new Float32Array(t));for(let t=0,n=i;t!==a;++t,n+=4)s.copy(e[t]).applyMatrix4(r,o),s.normal.toArray(u,n),u[n+3]=s.constant}l.value=u,l.needsUpdate=!0}return t.numPlanes=a,t.numIntersection=0,u}this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(e,t){let n=0!==e.length||t||0!==i||r;return r=t,i=e.length,n},this.beginShadows=function(){a=!0,u(null)},this.endShadows=function(){a=!1},this.setGlobalState=function(e,t){n=u(e,t,0)},this.setState=function(s,o,c){let h=s.clippingPlanes,d=s.clipIntersection,p=s.clipShadows,f=e.get(s);if(r&&null!==h&&0!==h.length&&(!a||p)){let e=a?0:i,t=4*e,r=f.clippingState||null;l.value=r,r=u(h,o,t,c);for(let e=0;e!==t;++e)r[e]=n[e];f.clippingState=r,this.numIntersection=d?this.numPlanes:0,this.numPlanes+=e}else a?u(null):(l.value!==n&&(l.value=n,l.needsUpdate=i>0),t.numPlanes=i,t.numIntersection=0)}}function lf(e){let t=new WeakMap;function n(e,t){return 303===t?e.mapping=301:304===t&&(e.mapping=302),e}function i(e){let n=e.target;n.removeEventListener("dispose",i);let r=t.get(n);void 0!==r&&(t.delete(n),r.dispose())}return{get:function(r){if(r&&r.isTexture){let a=r.mapping;if(303===a||304===a)if(t.has(r))return n(t.get(r).texture,r.mapping);else{let a=r.image;if(!a||!(a.height>0))return null;{let s=new nV(a.height);return s.fromEquirectangularTexture(e,r),t.set(r,s),r.addEventListener("dispose",i),n(s.texture,r.mapping)}}}return r},dispose:function(){t=new WeakMap}}}let lm=[.125,.215,.35,.446,.526,.582],lg=new sS,lv=new tZ,lx=null,ly=0,l_=0,lb=!1,lS=new eg;class lM{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._sizeLods=[],this._sigmas=[],this._lodMeshes=[],this._backgroundBox=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._blurMaterial=null,this._ggxMaterial=null}fromScene(e,t=0,n=.1,i=100,r={}){let{size:a=256,position:s=lS}=r;lx=this._renderer.getRenderTarget(),ly=this._renderer.getActiveCubeFace(),l_=this._renderer.getActiveMipmapLevel(),lb=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(a);let o=this._allocateTargets();return o.depthBuffer=!0,this._sceneToCubeUV(e,n,i,o,s),t>0&&this._blur(o,0,0,t),this._applyPMREM(o),this._cleanup(o),o}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){null===this._cubemapMaterial&&(this._cubemapMaterial=lC(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){null===this._equirectMaterial&&(this._equirectMaterial=lE(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),null!==this._cubemapMaterial&&this._cubemapMaterial.dispose(),null!==this._equirectMaterial&&this._equirectMaterial.dispose(),null!==this._backgroundBox&&(this._backgroundBox.geometry.dispose(),this._backgroundBox.material.dispose())}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){null!==this._blurMaterial&&this._blurMaterial.dispose(),null!==this._ggxMaterial&&this._ggxMaterial.dispose(),null!==this._pingPongRenderTarget&&this._pingPongRenderTarget.dispose();for(let e=0;e<this._lodMeshes.length;e++)this._lodMeshes[e].geometry.dispose()}_cleanup(e){this._renderer.setRenderTarget(lx,ly,l_),this._renderer.xr.enabled=lb,e.scissorTest=!1,lT(e,0,0,e.width,e.height)}_fromTexture(e,t){301===e.mapping||302===e.mapping?this._setSize(0===e.image.length?16:e.image[0].width||e.image[0].image.width):this._setSize(e.image.width/4),lx=this._renderer.getRenderTarget(),ly=this._renderer.getActiveCubeFace(),l_=this._renderer.getActiveMipmapLevel(),lb=this._renderer.xr.enabled,this._renderer.xr.enabled=!1;let n=t||this._allocateTargets();return this._textureToCubeUV(e,n),this._applyPMREM(n),this._cleanup(n),n}_allocateTargets(){let e=3*Math.max(this._cubeSize,112),t=4*this._cubeSize,n={magFilter:1006,minFilter:1006,generateMipmaps:!1,type:1016,format:1023,colorSpace:U,depthBuffer:!1},i=lw(e,t,n);if(null===this._pingPongRenderTarget||this._pingPongRenderTarget.width!==e||this._pingPongRenderTarget.height!==t){var r,a;null!==this._pingPongRenderTarget&&this._dispose(),this._pingPongRenderTarget=lw(e,t,n);let{_lodMax:i}=this;({lodMeshes:this._lodMeshes,sizeLods:this._sizeLods,sigmas:this._sigmas}=function(e){let t=[],n=[],i=[],r=e,a=e-4+1+lm.length;for(let s=0;s<a;s++){let a=Math.pow(2,r);t.push(a);let o=1/a;s>e-4?o=lm[s-e+4-1]:0===s&&(o=0),n.push(o);let l=1/(a-2),u=-l,c=1+l,h=[u,u,c,u,c,c,u,u,c,c,u,c],d=new Float32Array(108),p=new Float32Array(72),f=new Float32Array(36);for(let e=0;e<6;e++){let t=e%3*2/3-1,n=e>2?0:-1,i=[t,n,0,t+2/3,n,0,t+2/3,n+1,0,t,n,0,t+2/3,n+1,0,t,n+1,0];
36d.set(i,18*e),p.set(h,12*e);let r=[e,e,e,e,e,e];f.set(r,6*e)}let m=new nf;m.setAttribute("position",new t8(d,3)),m.setAttribute("uv",new t8(p,2)),m.setAttribute("faceIndex",new t8(f,1)),i.push(new nE(m,null)),r>4&&r--}return{lodMeshes:i,sizeLods:t,sigmas:n}}(i)),this._blurMaterial=(r=i,new nN({name:"SphericalGaussianBlur",defines:{n:20,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${r}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:new Float32Array(20)},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:new eg(0,1,0)}},vertexShader:lA(),fragmentShader:` 37 38 precision mediump float; 39 precision mediump int; 40 41 varying vec3 vOutputDirection; 42 43 uniform sampler2D envMap; 44 uniform int samples; 45 uniform float weights[ n ]; 46 uniform bool latitudinal; 47 uniform float dTheta; 48 uniform float mipInt; 49 uniform vec3 poleAxis; 50 51 #define ENVMAP_TYPE_CUBE_UV 52 #include <cube_uv_reflection_fragment> 53 54 vec3 getSample( float theta, vec3 axis ) { 55 56 float cosTheta = cos( theta ); 57 // Rodrigues' axis-angle rotation 58 vec3 sampleDirection = vOutputDirection * cosTheta 59 + cross( axis, vOutputDirection ) * sin( theta ) 60 + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); 61 62 return bilinearCubeUV( envMap, sampleDirection, mipInt ); 63 64 } 65 66 void main() { 67 68 vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); 69 70 if ( all( equal( axis, vec3( 0.0 ) ) ) ) { 71 72 axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); 73 74 } 75 76 axis = normalize( axis ); 77 78 gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); 79 gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); 80 81 for ( int i = 1; i < n; i++ ) { 82 83 if ( i >= samples ) { 84 85 break; 86 87 } 88 89 float theta = dTheta * float( i ); 90 gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); 91 gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); 92 93 } 94 95 } 96 `,blending:0,depthTest:!1,depthWrite:!1})),this._ggxMaterial=(a=i,new nN({name:"PMREMGGXConvolution",defines:{GGX_SAMPLES:256,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${a}.0`},uniforms:{envMap:{value:null},roughness:{value:0},mipInt:{value:0}},vertexShader:lA(),fragmentShader:` 97 98 precision highp float; 99 precision highp int; 100 101 varying vec3 vOutputDirection; 102 103 uniform sampler2D envMap; 104 uniform float roughness; 105 uniform float mipInt; 106 107 #define ENVMAP_TYPE_CUBE_UV 108 #include <cube_uv_reflection_fragment> 109 110 #define PI 3.14159265359 111 112 // Van der Corput radical inverse 113 float radicalInverse_VdC(uint bits) { 114 bits = (bits << 16u) | (bits >> 16u); 115 bits = ((bits & 0x55555555u) << 1u) | ((bits & 0xAAAAAAAAu) >> 1u); 116 bits = ((bits & 0x33333333u) << 2u) | ((bits & 0xCCCCCCCCu) >> 2u); 117 bits = ((bits & 0x0F0F0F0Fu) << 4u) | ((bits & 0xF0F0F0F0u) >> 4u); 118 bits = ((bits & 0x00FF00FFu) << 8u) | ((bits & 0xFF00FF00u) >> 8u); 119 return float(bits) * 2.3283064365386963e-10; // / 0x100000000 120 } 121 122 // Hammersley sequence 123 vec2 hammersley(uint i, uint N) { 124 return vec2(float(i) / float(N), radicalInverse_VdC(i)); 125 } 126 127 // GGX VNDF importance sampling (Eric Heitz 2018) 128 // "Sampling the GGX Distribution of Visible Normals" 129 // https://jcgt.org/published/0007/04/01/ 130 vec3 importanceSampleGGX_VNDF(vec2 Xi, vec3 V, float roughness) { 131 float alpha = roughness * roughness; 132 133 // Section 3.2: Transform view direction to hemisphere configuration 134 vec3 Vh = normalize(vec3(alpha * V.x, alpha * V.y, V.z)); 135 136 // Section 4.1: Orthonormal basis 137 float lensq = Vh.x * Vh.x + Vh.y * Vh.y; 138 vec3 T1 = lensq > 0.0 ? vec3(-Vh.y, Vh.x, 0.0) / sqrt(lensq) : vec3(1.0, 0.0, 0.0); 139 vec3 T2 = cross(Vh, T1); 140 141 // Section 4.2: Parameterization of projected area 142 float r = sqrt(Xi.x); 143 float phi = 2.0 * PI * Xi.y; 144 float t1 = r * cos(phi); 145 float t2 = r * sin(phi); 146 float s = 0.5 * (1.0 + Vh.z); 147 t2 = (1.0 - s) * sqrt(1.0 - t1 * t1) + s * t2; 148 149 // Section 4.3: Reprojection onto hemisphere 150 vec3 Nh = t1 * T1 + t2 * T2 + sqrt(max(0.0, 1.0 - t1 * t1 - t2 * t2)) * Vh; 151 152 // Section 3.4: Transform back to ellipsoid configuration 153 return normalize(vec3(alpha * Nh.x, alpha * Nh.y, max(0.0, Nh.z))); 154 } 155 156 void main() { 157 vec3 N = normalize(vOutputDirection); 158 vec3 V = N; // Assume view direction equals normal for pre-filtering 159 160 vec3 prefilteredColor = vec3(0.0); 161 float totalWeight = 0.0; 162 163 // For very low roughness, just sample the environment directly 164 if (roughness < 0.001) { 165 gl_FragColor = vec4(bilinearCubeUV(envMap, N, mipInt), 1.0); 166 return; 167 } 168 169 // Tangent space basis for VNDF sampling 170 vec3 up = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); 171 vec3 tangent = normalize(cross(up, N)); 172 vec3 bitangent = cross(N, tangent); 173
174 for(uint i = 0u; i < uint(GGX_SAMPLES); i++) { 175 vec2 Xi = hammersley(i, uint(GGX_SAMPLES)); 176 177 // For PMREM, V = N, so in tangent space V is always (0, 0, 1) 178 vec3 H_tangent = importanceSampleGGX_VNDF(Xi, vec3(0.0, 0.0, 1.0), roughness); 179 180 // Transform H back to world space 181 vec3 H = normalize(tangent * H_tangent.x + bitangent * H_tangent.y + N * H_tangent.z); 182 vec3 L = normalize(2.0 * dot(V, H) * H - V); 183 184 float NdotL = max(dot(N, L), 0.0); 185 186 if(NdotL > 0.0) { 187 // Sample environment at fixed mip level 188 // VNDF importance sampling handles the distribution filtering 189 vec3 sampleColor = bilinearCubeUV(envMap, L, mipInt); 190 191 // Weight by NdotL for the split-sum approximation 192 // VNDF PDF naturally accounts for the visible microfacet distribution 193 prefilteredColor += sampleColor * NdotL; 194 totalWeight += NdotL; 195 } 196 } 197 198 if (totalWeight > 0.0) { 199 prefilteredColor = prefilteredColor / totalWeight; 200 } 201 202 gl_FragColor = vec4(prefilteredColor, 1.0); 203 } 204 `,blending:0,depthTest:!1,depthWrite:!1}))}return i}_compileMaterial(e){let t=new nE(new nf,e);this._renderer.compile(t,lg)}_sceneToCubeUV(e,t,n,i,r){let a=new nk(90,1,t,n),s=[1,-1,1,1,1,1],o=[1,1,1,-1,-1,-1],l=this._renderer,u=l.autoClear,c=l.toneMapping;l.getClearColor(lv),l.toneMapping=0,l.autoClear=!1,l.state.buffers.depth.getReversed()&&(l.setRenderTarget(i),l.clearDepth(),l.setRenderTarget(null)),null===this._backgroundBox&&(this._backgroundBox=new nE(new nA,new tQ({name:"PMREM.Backgroun
204d",side:1,depthWrite:!1,depthTest:!1})));let h=this._backgroundBox,d=h.material,p=!1,f=e.background;f?f.isColor&&(d.color.copy(f),e.background=null,p=!0):(d.color.copy(lv),p=!0);for(let t=0;t<6;t++){let n=t%3;0===n?(a.up.set(0,s[t],0),a.position.set(r.x,r.y,r.z),a.lookAt(r.x+o[t],r.y,r.z)):1===n?(a.up.set(0,0,s[t]),a.position.set(r.x,r.y,r.z),a.lookAt(r.x,r.y+o[t],r.z)):(a.up.set(0,s[t],0),a.position.set(r.x,r.y,r.z),a.lookAt(r.x,r.y,r.z+o[t]));let u=this._cubeSize;lT(i,n*u,t>2?u:0,u,u),l.setRenderTarget(i),p&&l.render(h,a),l.render(e,a)}l.toneMapping=c,l.autoClear=u,e.background=f}_textureToCubeUV(e,t){let n=this._renderer,i=301===e.mapping||302===e.mapping;i?(null===this._cubemapMaterial&&(this._cubemapMaterial=lC()),this._cubemapMaterial.uniforms.flipEnvMap.value=!1===e.isRenderTargetTexture?-1:1):null===this._equirectMaterial&&(this._equirectMaterial=lE());let r=i?this._cubemapMaterial:this._equirectMaterial,a=this._lodMeshes[0];a.material=r,r.uniforms.envMap.value=e;let s=this._cubeSize;lT(t,0,0,3*s,2*s),n.setRenderTarget(t),n.render(a,lg)}_applyPMREM(e){let t=this._renderer,n=t.autoClear;t.autoClear=!1;let i=this._lodMeshes.length;for(let t=1;t<i;t++)this._applyGGXFilter(e,t-1,t);t.autoClear=n}_applyGGXFilter(e,t,n){let i=this._renderer,r=this._pingPongRenderTarget,a=this._ggxMaterial,s=this._lodMeshes[n];s.material=a;let o=a.uniforms,l=n/(this._lodMeshes.length-1),u=t/(this._lodMeshes.length-1),c=Math.sqrt(l*l-u*u),{_lodMax:h}=this,d=this._sizeLods[n],p=3*d*(n>h-4?n-h+4:0),f=4*(this._cubeSize-d);o.envMap.value=e.texture,o.roughness.value=c*(0+1.25*l),o.mipInt.value=h-t,lT(r,p,f,3*d,2*d),i.setRenderTarget(r),i.render(s,lg),o.envMap.value=r.texture,o.roughness.value=0,o.mipInt.value=h-n,lT(e,p,f,3*d,2*d),i.setRenderTarget(e),i.render(s,lg)}_blur(e,t,n,i,r){let a=this._pingPongRenderTarget;this._halfBlur(e,a,t,n,i,"latitudinal",r),this._halfBlur(a,e,n,n,i,"longitudinal",r)}_halfBlur(e,t,n,i,r,a,s){let o=this._renderer,l=this._blurMaterial;"latitudinal"!==a&&"longitudinal"!==a&&ee("blur direction must be either latitudinal or longitudinal!");let u=this._lodMeshes[i];u.material=l;let c=l.uniforms,h=this._sizeLods[n]-1,d=isFinite(r)?Math.PI/(2*h):2*Math.PI/39,p=r/d,f=isFinite(r)?1+Math.floor(3*p):20;f>20&&Q(`sigmaRadians, ${r}, is too large and will clip, as it requested ${f} samples when the maximum is set to 20`);let m=[],g=0;for(let e=0;e<20;++e){let t=e/p,n=Math.exp(-t*t/2);m.push(n),0===e?g+=n:e<f&&(g+=2*n)}for(let e=0;e<m.length;e++)m[e]=m[e]/g;c.envMap.value=e.texture,c.samples.value=f,c.weights.value=m,c.latitudinal.value="latitudinal"===a,s&&(c.poleAxis.value=s);let{_lodMax:v}=this;c.dTheta.value=d,c.mipInt.value=v-n;let x=this._sizeLods[i],y=4*(this._cubeSize-x);lT(t,3*x*(i>v-4?i-v+4:0),y,3*x,2*x),o.setRenderTarget(t),o.render(u,lg)}}function lw(e,t,n){let i=new eU(e,t,n);return i.texture.mapping=306,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function lT(e,t,n,i,r){e.viewport.set(t,n,i,r),e.scissor.set(t,n,i,r)}function lE(){return new nN({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:lA(),fragmentShader:` 205 206 precision mediump float; 207 precision mediump int; 208 209 varying vec3 vOutputDirection; 210 211 uniform sampler2D envMap; 212 213 #include <common> 214 215 void main() { 216 217 vec3 outputDirection = normalize( vOutputDirection ); 218 vec2 uv = equirectUv( outputDirection ); 219 220 gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); 221 222 } 223 `,blending:0,depthTest:!1,depthWrite:!1})}function lC(){return new nN({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:lA(),fragmentShader:` 224 225 precision mediump float; 226 precision mediump int; 227 228 uniform float flipEnvMap; 229 230 varying vec3 vOutputDirection; 231 232 uniform samplerCube envMap; 233 234 void main() { 235 236 gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); 237 238 } 239 `,blending:0,depthTest:!1,depthWrite:!1})}function lA(){return` 240 241 precision mediump float; 242 precision mediump int; 243 244 attribute float faceIndex; 245 246 varying vec3 vOutputDirection; 247 248 // RH coordinate system; PMREM face-indexing convention 249 vec3 getDirection( vec2 uv, float face ) { 250 251 uv = 2.0 * uv - 1.0; 252 253 vec3 direction = vec3( uv, 1.0 ); 254 255 if ( face == 0.0 ) { 256 257 direction = direction.zyx; // ( 1, v, u ) pos x 258 259 } else if ( face == 1.0 ) { 260 261 direction = direction.xzy; 262 direction.xz *= -1.0; // ( -u, 1, -v ) pos y 263 264 } else if ( face == 2.0 ) { 265 266 direction.x *= -1.0; // ( -u, v, 1 ) pos z 267 268 } else if ( face == 3.0 ) { 269 270 direction = direction.zyx; 271 direction.xz *= -1.0; // ( -1, v, -u ) neg x 272 273 } else if ( face == 4.0 ) { 274 275 direction = direction.xzy; 276 direction.xy *= -1.0; // ( -u, -1, v ) neg y 277 278 } else if ( face == 5.0 ) { 279 280 direction.z *= -1.0; // ( u, v, -1 ) neg z 281 282 } 283 284 return direction; 285 286 } 287 288 void main() { 289 290 vOutputDirection = getDirection( uv, faceIndex ); 291 gl_Position = vec4( position, 1.0 ); 292 293 } 294 `}function lR(e){let t=new WeakMap,n=null;function i(e){let n=e.target;n.removeEventListener("dispose",i);let r=t.get(n);void 0!==r&&(t.delete(n),r.dispose())}return{get:function(r){if(r&&r.isTexture){let a=r.mapping,s=303===a||304===a,o=301===a||302===a;if(s||o){let a=t.get(r),l=void 0!==a?a.texture.pmremVersion:0;if(r.isRenderTargetTexture&&r.pmremVersion!==l)return null===n&&(n=new lM(e)),(a=s?n.fromEquirectangular(r,a):n.fromCubemap(r,a)).texture.pmremVersion=r.pmremVersion,t.set(r,a),a.texture;{if(void 0!==a)return a.texture;
294let l=r.image;return s&&l&&l.height>0||o&&l&&function(e){let t=0;for(let n=0;n<6;n++)void 0!==e[n]&&t++;return 6===t}(l)?(null===n&&(n=new lM(e)),(a=s?n.fromEquirectangular(r):n.fromCubemap(r)).texture.pmremVersion=r.pmremVersion,t.set(r,a),r.addEventListener("dispose",i),a.texture):null}}}return r},dispose:function(){t=new WeakMap,null!==n&&(n.dispose(),n=null)}}}function lL(e){let t={};function n(n){if(void 0!==t[n])return t[n];let i=e.getExtension(n);return t[n]=i,i}return{has:function(e){return null!==n(e)},init:function(){n("EXT_color_buffer_float"),n("WEBGL_clip_cull_distance"),n("OES_texture_float_linear"),n("EXT_color_buffer_half_float"),n("WEBGL_multisampled_render_to_texture"),n("WEBGL_render_shared_exponent")},get:function(e){let t=n(e);return null===t&&et("WebGLRenderer: "+e+" extension not supported."),t}}}function lP(e,t,n,i){let r={},a=new WeakMap;function s(e){let o=e.target;for(let e in null!==o.index&&t.remove(o.index),o.attributes)t.remove(o.attributes[e]);o.removeEventListener("dispose",s),delete r[o.id];let l=a.get(o);l&&(t.remove(l),a.delete(o)),i.releaseStatesOfGeometry(o),!0===o.isInstancedBufferGeometry&&delete o._maxInstanceCount,n.memory.geometries--}function o(e){let n=[],i=e.index,r=e.attributes.position,s=0;if(null!==i){let e=i.array;s=i.version;for(let t=0,i=e.length;t<i;t+=3){let i=e[t+0],r=e[t+1],a=e[t+2];n.push(i,r,r,a,a,i)}}else{if(void 0===r)return;let e=r.array;s=r.version;for(let t=0,i=e.length/3-1;t<i;t+=3){let e=t+0,i=t+1,r=t+2;n.push(e,i,i,r,r,e)}}let o=new(H(n)?nr:nn)(n,1);o.version=s;let l=a.get(e);l&&t.remove(l),a.set(e,o)}return{get:function(e,t){return!0===r[t.id]||(t.addEventListener("dispose",s),r[t.id]=!0,n.memory.geometries++),t},update:function(n){let i=n.attributes;for(let n in i)t.update(i[n],e.ARRAY_BUFFER)},getWireframeAttribute:function(e){let t=a.get(e);if(t){let n=e.index;null!==n&&t.version<n.version&&o(e)}else o(e);return a.get(e)}}}function lI(e,t,n){let i,r,a;function s(t,s,o){0!==o&&(e.drawElementsInstanced(i,s,r,t*a,o),n.update(s,i,o))}this.setMode=function(e){i=e},this.setIndex=function(e){r=e.type,a=e.bytesPerElement},this.render=function(t,s){e.drawElements(i,s,r,t*a),n.update(s,i,1)},this.renderInstances=s,this.renderMultiDraw=function(e,a,s){if(0===s)return;t.get("WEBGL_multi_draw").multiDrawElementsWEBGL(i,a,0,r,e,0,s);let o=0;for(let e=0;e<s;e++)o+=a[e];n.update(o,i,1)},this.renderMultiDrawInstances=function(e,o,l,u){if(0===l)return;let c=t.get("WEBGL_multi_draw");if(null===c)for(let t=0;t<e.length;t++)s(e[t]/a,o[t],u[t]);else{c.multiDrawElementsInstancedWEBGL(i,o,0,r,e,0,u,0,l);let t=0;for(let e=0;e<l;e++)t+=o[e]*u[e];n.update(t,i,1)}}}function lN(e){let t={frame:0,calls:0,triangles:0,points:0,lines:0};return{memory:{geometries:0,textures:0},render:t,programs:null,autoReset:!0,reset:function(){t.calls=0,t.triangles=0,t.points=0,t.lines=0},update:function(n,i,r){switch(t.calls++,i){case e.TRIANGLES:t.triangles+=n/3*r;break;case e.LINES:t.lines+=n/2*r;break;case e.LINE_STRIP:t.lines+=r*(n-1);break;case e.LINE_LOOP:t.lines+=r*n;break;case e.POINTS:t.points+=r*n;break;default:ee("WebGLInfo: Unknown draw mode:",i)}}}}function lD(e,t,n){let i=new WeakMap,r=new eN;return{update:function(a,s,o){let l=a.morphTargetInfluences,u=s.morphAttributes.position||s.morphAttributes.normal||s.morphAttributes.color,c=void 0!==u?u.length:0,h=i.get(s);if(void 0===h||h.count!==c){void 0!==h&&h.texture.dispose();let e=void 0!==s.morphAttributes.position,n=void 0!==s.morphAttributes.normal,a=void 0!==s.morphAttributes.color,o=s.morphAttributes.position||[],l=s.morphAttributes.normal||[],u=s.morphAttributes.color||[],d=0;!0===e&&(d=1),!0===n&&(d=2),!0===a&&(d=3);let p=s.attributes.position.count*d,f=1;p>t.maxTextureSize&&(f=Math.ceil(p/t.maxTextureSize),p=t.maxTextureSize);let m=new Float32Array(p*f*4*c),g=new eF(m,p,f,c);g.type=1015,g.needsUpdate=!0;let v=4*d;for(let t=0;t<c;t++){let i=o[t],s=l[t],c=u[t],h=p*f*4*t;for(let t=0;t<i.count;t++){let o=t*v;!0===e&&(r.fromBufferAttribute(i,t),m[h+o+0]=r.x,m[h+o+1]=r.y,m[h+o+2]=r.z,m[h+o+3]=0),!0===n&&(r.fromBufferAttribute(s,t),m[h+o+4]=r.x,m[h+o+5]=r.y,m[h+o+6]=r.z,m[h+o+7]=0),!0===a&&(r.fromBufferAttribute(c,t),m[h+o+8]=r.x,m[h+o+9]=r.y,m[h+o+10]=r.z,m[h+o+11]=4===c.itemSize?r.w:1)}}h={count:c,texture:g,size:new ef(p,f)},i.set(s,h),s.addEventListener("dispose",function e(){g.dispose(),i.delete(s),s.removeEventListener("dispose",e)})}if(!0===a.isInstancedMesh&&null!==a.morphTexture)o.getUniforms().setValue(e,"morphTexture",a.morphTexture,n);else{let t=0;for(let e=0;e<l.length;e++)t+=l[e];let n=s.morphTargetsRelative?1:1-t;o.getUniforms().setValue(e,"morphTargetBaseInfluence",n),o.getUniforms().setValue(e,"morphTargetInfluences",l)}o.getUniforms().setValue(e,"morphTargetsTexture",h.texture,n),o.getUniforms().setValue(e,"morphTargetsTextureSize",h.size)}}}function lU(e,t,n,i){let r=new WeakMap;function a(e){let t=e.target;t.removeEventListener("dispose",a),n.remove(t.instanceMatrix),null!==t.instanceColor&&n.remove(t.instanceColor)}return{update:function(s){let o=i.render.frame,l=s.geometry,u=t.get(s,l);if(r.get(u)!==o&&(t.update(u),r.set(u,o)),s.isInstancedMesh&&(!1===s.hasEventListener("dispose",a)&&s.addEventListener("dispose",a),r.get(s)!==o&&(n.update(s.instanceMatrix,e.ARRAY_BUFFER),null!==s.instanceColor&&n.update(s.instanceColor,e.ARRAY_BUFFER),r.set(s,o))),s.isSkinnedMesh){let e=s.skeleton;
294r.get(e)!==o&&(e.update(),r.set(e,o))}return u},dispose:function(){r=new WeakMap}}}let lF={1:"LINEAR_TONE_MAPPING",2:"REINHARD_TONE_MAPPING",3:"CINEON_TONE_MAPPING",4:"ACES_FILMIC_TONE_MAPPING",6:"AGX_TONE_MAPPING",7:"NEUTRAL_TONE_MAPPING",5:"CUSTOM_TONE_MAPPING"};function lO(e,t,n,i,r){let a,s=new eU(t,n,{type:e,depthBuffer:i,stencilBuffer:r}),o=new eU(t,n,{type:1016,depthBuffer:!1,stencilBuffer:!1}),l=new nf;l.setAttribute("position",new ns([-1,3,0,-1,-1,0,3,-1,0],3)),l.setAttribute("uv",new ns([0,2,0,0,2,0],2));let u=new aN({uniforms:{tDiffuse:{value:null}},vertexShader:` 295 precision highp float; 296 297 uniform mat4 modelViewMatrix; 298 uniform mat4 projectionMatrix; 299 300 attribute vec3 position; 301 attribute vec2 uv; 302 303 varying vec2 vUv; 304 305 void main() { 306 vUv = uv; 307 gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 308 }`,fragmentShader:` 309 precision highp float; 310 311 uniform sampler2D tDiffuse; 312 313 varying vec2 vUv; 314 315 #include <tonemapping_pars_fragment> 316 #include <colorspace_pars_fragment> 317 318 void main() { 319 gl_FragColor = texture2D( tDiffuse, vUv ); 320 321 #ifdef LINEAR_TONE_MAPPING 322 gl_FragColor.rgb = LinearToneMapping( gl_FragColor.rgb ); 323 #elif defined( REINHARD_TONE_MAPPING ) 324 gl_FragColor.rgb = ReinhardToneMapping( gl_FragColor.rgb ); 325 #elif defined( CINEON_TONE_MAPPING ) 326 gl_FragColor.rgb = CineonToneMapping( gl_FragColor.rgb ); 327 #elif defined( ACES_FILMIC_TONE_MAPPING ) 328 gl_FragColor.rgb = ACESFilmicToneMapping( gl_FragColor.rgb ); 329 #elif defined( AGX_TONE_MAPPING ) 330 gl_FragColor.rgb = AgXToneMapping( gl_FragColor.rgb ); 331 #elif defined( NEUTRAL_TONE_MAPPING ) 332 gl_FragColor.rgb = NeutralToneMapping( gl_FragColor.rgb ); 333 #elif defined( CUSTOM_TONE_MAPPING ) 334 gl_FragColor.rgb = CustomToneMapping( gl_FragColor.rgb ); 335 #endif 336 337 #ifdef SRGB_TRANSFER 338 gl_FragColor = sRGBTransferOETF( gl_FragColor ); 339 #endif 340 }`,depthTest:!1,depthWrite:!1}),c=new nE(l,u),h=new sS(-1,1,1,-1,0,1),d=null,p=null,f=!1,m=null,g=[],v=!1;this.setSize=function(e,t){s.setSize(e,t),o.setSize(e,t);for(let n=0;n<g.length;n++){let i=g[n];i.setSize&&i.setSize(e,t)}},this.setEffects=function(e){v=(g=e).length>0&&!0===g[0].isRenderPass;let t=s.width,n=s.height;for(let e=0;e<g.length;e++){let i=g[e];i.setSize&&i.setSize(t,n)}},this.begin=function(e,t){if(f||0===e.toneMapping&&0===g.length)return!1;if(m=t,null!==t){let e=t.width,n=t.height;(s.width!==e||s.height!==n)&&this.setSize(e,n)}return!1===v&&e.setRenderTarget(s),a=e.toneMapping,e.toneMapping=0,!0},this.hasRenderPass=function(){return v},this.end=function(e,t){e.toneMapping=a,f=!0;let n=s,i=o;for(let r=0;r<g.length;r++){let a=g[r];if(!1!==a.enabled&&(a.render(e,i,n,t),!1!==a.needsSwap)){let e=n;n=i,i=e}}if(d!==e.outputColorSpace||p!==e.toneMapping){d=e.outputColorSpace,p=e.toneMapping,u.defines={},eM.getTransfer(d)===O&&(u.defines.SRGB_TRANSFER="");let t=lF[p];t&&(u.defines[t]=""),u.needsUpdate=!0}u.uniforms.tDiffuse.value=n.texture,e.setRenderTarget(m),e.render(c,h),m=null,f=!1},this.isCompositing=function(){return f},this.dispose=function(){s.dispose(),o.dispose(),l.dispose(),u.dispose()}}let lk=new eI,lz=new rM(1,1),lB=new eF,lV=new ek,lH=new nB,lj=[],lG=[],lW=new Float32Array(16),lX=new Float32Array(9),lq=new Float32Array(4);function lY(e,t,n){let i=e[0];if(i<=0||i>0)return e;let r=t*n,a=lj[r];if(void 0===a&&(a=new Float32Array(r),lj[r]=a),0!==t){i.toArray(a,0);for(let i=1,r=0;i!==t;++i)r+=n,e[i].toArray(a,r)}return a}function lZ(e,t){if(e.length!==t.length)return!1;for(let n=0,i=e.length;n<i;n++)if(e[n]!==t[n])return!1;return!0}function lJ(e,t){for(let n=0,i=t.length;n<i;n++)e[n]=t[n]}function l$(e,t){let n=lG[t];void 0===n&&(n=new Int32Array(t),lG[t]=n);for(let i=0;i!==t;++i)n[i]=e.allocateTextureUnit();return n}function lK(e,t){let n=this.cache;n[0]!==t&&(e.uniform1f(this.addr,t),n[0]=t)}function lQ(e,t){let n=this.cache;if(void 0!==t.x)(n[0]!==t.x||n[1]!==t.y)&&(e.uniform2f(this.addr,t.x,t.y),n[0]=t.x,n[1]=t.y);else{if(lZ(n,t))return;e.uniform2fv(this.addr,t),lJ(n,t)}}function l0(e,t){let n=this.cache;if(void 0!==t.x)(n[0]!==t.x||n[1]!==t.y||n[2]!==t.z)&&(e.uniform3f(this.addr,t.x,t.y,t.z),n[0]=t.x,n[1]=t.y,n[2]=t.z);else if(void 0!==t.r)(n[0]!==t.r||n[1]!==t.g||n[2]!==t.b)&&(e.uniform3f(this.addr,t.r,t.g,t.b),n[0]=t.r,n[1]=t.g,n[2]=t.b);else{if(lZ(n,t))return;e.uniform3fv(this.addr,t),lJ(n,t)}}function l1(e,t){let n=this.cache;if(void 0!==t.x)(n[0]!==t.x||n[1]!==t.y||n[2]!==t.z||n[3]!==t.w)&&(e.uniform4f(this.addr,t.x,t.y,t.z,t.w),n[0]=t.x,n[1]=t.y,n[2]=t.z,n[3]=t.w);else{if(lZ(n,t))return;e.uniform4fv(this.addr,t),lJ(n,t)}}function l2(e,t){let n=this.cache,i=t.elements;if(void 0===i){if(lZ(n,t))return;e.uniformMatrix2fv(this.addr,!1,t),lJ(n,t)}else{if(lZ(n,i))return;lq.set(i),e.uniformMatrix2fv(this.addr,!1,lq),lJ(n,i)}}function l3(e,t){let n=this.cache,i=t.elements;if(void 0===i){if(lZ(n,t))return;e.uniformMatrix3fv(this.addr,!1,t),lJ(n,t)}else{if(lZ(n,i))return;lX.set(i),e.uniformMatrix3fv(this.addr,!1,lX),lJ(n,i)}}function l5(e,t){let n=this.cache,i=t.elements;if(void 0===i){if(lZ(n,t))return;e.uniformMatrix4fv(this.addr,!1,t),lJ(n,t)}else{if(lZ(n,i))return;lW.set(i),e.uniformMatrix4fv(this.addr,!1,lW),lJ(n,i)}}function l4(e,t){let n=this.cache;n[0]!==t&&(e.uniform1i(this.addr,t),n[0]=t)}function l6(e,t){let n=this.cache;if(void 0!==t.x)(n[0]!==t.x||n[1]!==t.y)&&(e.uniform2i(this.addr,t.x,t.y),n[0]=t.x,n[1]=t.y);else{if(lZ(n,t))return;e.uniform2iv(this.addr,t),lJ(n,t)}}function l8(e,t){let n=this.cache;if(void 0!==t.x)(n[0]!==t.x||n[1]!==t.y||n[2]!==t.z)&&(e.uniform3i(this.addr,t.x,t.y,t.z),n[0]=t.x,n[1]=t.y,n[2]=t.z);else{if(lZ(n,t))return;e.uniform3iv(this.addr,t),lJ(n,t)}}function l7(e,t){let n=this.cache;if(void 0!==t.x)(n[0]!==t.x||n[1]!==t.y||n[2]!==t.z||n[3]!==t.w)&&(e.uniform4i(this.addr,t.x,t.y,t.z,t.w),n[0]=t.x,n[1]=t.y,n[2]=t.z,n[3]=t.w);else{if(lZ(n,t))return;e.uniform4iv(this.addr,t),lJ(n,t)}}function l9(e,t){let n=this.cache;n[0]!==t&&(e.uniform1ui(this.addr,t),n[0]=t)}function ue(e,t){let n=this.cache;if(void 0!==t.x)(n[0]!==t.x||n[1]!==t.y)&&(e.uniform2ui(this.addr,t.x,t.y),n[0]=t.x,n[1]=t.y);else{if(lZ(n,t))return;e.uniform2uiv(this.addr,t),lJ(n,t)}}function ut(e,t){let n=this.cache;if(void 0!==t.x)(n[0]!==t.x||n[1]!==t.y||n[2]!==t.z)&&(e.uniform3ui(this.addr,t.x,t.y,t.z),n[0]=t.x,n[1]=t.y,n[2]=t.z);else{if(lZ(n,t))return;e.uniform3uiv(this.addr,t),lJ(n,t)}}function un(e,t){let n=this.cache;if(void 0!==t.x)(n[0]!==t.x||n[1]!==t.y||n[2]!==t.z||n[3]!==t.w)&&(e.uniform4ui(this.addr,t.x,t.y,t.z,t.w),n[0]=t.x,n[1]=t.y,n[2]=t.z,n[3]=t.w);else{if(lZ(n,t))return;e.uniform4uiv(this.addr,t),lJ(n,t)}}
340function ui(e,t,n){let i,r=this.cache,a=n.allocateTextureUnit();r[0]!==a&&(e.uniform1i(this.addr,a),r[0]=a),this.type===e.SAMPLER_2D_SHADOW?(lz.compareFunction=n.isReversedDepthBuffer()?518:515,i=lz):i=lk,n.setTexture2D(t||i,a)}function ur(e,t,n){let i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(e.uniform1i(this.addr,r),i[0]=r),n.setTexture3D(t||lV,r)}function ua(e,t,n){let i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(e.uniform1i(this.addr,r),i[0]=r),n.setTextureCube(t||lH,r)}function us(e,t,n){let i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(e.uniform1i(this.addr,r),i[0]=r),n.setTexture2DArray(t||lB,r)}function uo(e,t){e.uniform1fv(this.addr,t)}function ul(e,t){let n=lY(t,this.size,2);e.uniform2fv(this.addr,n)}function uu(e,t){let n=lY(t,this.size,3);e.uniform3fv(this.addr,n)}function uc(e,t){let n=lY(t,this.size,4);e.uniform4fv(this.addr,n)}function uh(e,t){let n=lY(t,this.size,4);e.uniformMatrix2fv(this.addr,!1,n)}function ud(e,t){let n=lY(t,this.size,9);e.uniformMatrix3fv(this.addr,!1,n)}function up(e,t){let n=lY(t,this.size,16);e.uniformMatrix4fv(this.addr,!1,n)}function uf(e,t){e.uniform1iv(this.addr,t)}function um(e,t){e.uniform2iv(this.addr,t)}function ug(e,t){e.uniform3iv(this.addr,t)}function uv(e,t){e.uniform4iv(this.addr,t)}function ux(e,t){e.uniform1uiv(this.addr,t)}function uy(e,t){e.uniform2uiv(this.addr,t)}function u_(e,t){e.uniform3uiv(this.addr,t)}function ub(e,t){e.uniform4uiv(this.addr,t)}function uS(e,t,n){let i,r=this.cache,a=t.length,s=l$(n,a);lZ(r,s)||(e.uniform1iv(this.addr,s),lJ(r,s)),i=this.type===e.SAMPLER_2D_SHADOW?lz:lk;for(let e=0;e!==a;++e)n.setTexture2D(t[e]||i,s[e])}function uM(e,t,n){let i=this.cache,r=t.length,a=l$(n,r);lZ(i,a)||(e.uniform1iv(this.addr,a),lJ(i,a));for(let e=0;e!==r;++e)n.setTexture3D(t[e]||lV,a[e])}function uw(e,t,n){let i=this.cache,r=t.length,a=l$(n,r);lZ(i,a)||(e.uniform1iv(this.addr,a),lJ(i,a));for(let e=0;e!==r;++e)n.setTextureCube(t[e]||lH,a[e])}function uT(e,t,n){let i=this.cache,r=t.length,a=l$(n,r);lZ(i,a)||(e.uniform1iv(this.addr,a),lJ(i,a));for(let e=0;e!==r;++e)n.setTexture2DArray(t[e]||lB,a[e])}class uE{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.type=t.type,this.setValue=function(e){switch(e){case 5126:return lK;case 35664:return lQ;case 35665:return l0;case 35666:return l1;case 35674:return l2;case 35675:return l3;case 35676:return l5;case 5124:case 35670:return l4;case 35667:case 35671:return l6;case 35668:case 35672:return l8;case 35669:case 35673:return l7;case 5125:return l9;case 36294:return ue;case 36295:return ut;case 36296:return un;case 35678:case 36198:case 36298:case 36306:case 35682:return ui;case 35679:case 36299:case 36307:return ur;case 35680:case 36300:case 36308:case 36293:return ua;case 36289:case 36303:case 36311:case 36292:return us}}(t.type)}}class uC{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.type=t.type,this.size=t.size,this.setValue=function(e){switch(e){case 5126:return uo;case 35664:return ul;case 35665:return uu;case 35666:return uc;case 35674:return uh;case 35675:return ud;case 35676:return up;case 5124:case 35670:return uf;case 35667:case 35671:return um;case 35668:case 35672:return ug;case 35669:case 35673:return uv;case 5125:return ux;case 36294:return uy;case 36295:return u_;case 36296:return ub;case 35678:case 36198:case 36298:case 36306:case 35682:return uS;case 35679:case 36299:case 36307:return uM;case 35680:case 36300:case 36308:case 36293:return uw;case 36289:case 36303:case 36311:case 36292:return uT}}(t.type)}}class uA{constructor(e){this.id=e,this.seq=[],this.map={}}setValue(e,t,n){let i=this.seq;for(let r=0,a=i.length;r!==a;++r){let a=i[r];a.setValue(e,t[a.id],n)}}}let uR=/(\w+)(\])?(\[|\.)?/g;function uL(e,t){e.seq.push(t),e.map[t.id]=t}class uP{constructor(e,t){this.seq=[],this.map={};const n=e.getProgramParameter(t,e.ACTIVE_UNIFORMS);for(let i=0;i<n;++i){const n=e.getActiveUniform(t,i),r=e.getUniformLocation(t,n.name);!function(e,t,n){let i=e.name,r=i.length;for(uR.lastIndex=0;;){let a=uR.exec(i),s=uR.lastIndex,o=a[1],l="]"===a[2],u=a[3];if(l&&(o|=0),void 0===u||"["===u&&s+2===r){uL(n,void 0===u?new uE(o,e,t):new uC(o,e,t));break}{let e=n.map[o];void 0===e&&uL(n,e=new uA(o)),n=e}}}(n,r,this)}const i=[],r=[];for(const t of this.seq)t.type===e.SAMPLER_2D_SHADOW||t.type===e.SAMPLER_CUBE_SHADOW||t.type===e.SAMPLER_2D_ARRAY_SHADOW?i.push(t):r.push(t);i.length>0&&(this.seq=i.concat(r))}setValue(e,t,n,i){let r=this.map[t];void 0!==r&&r.setValue(e,n,i)}setOptional(e,t,n){let i=t[n];void 0!==i&&this.setValue(e,n,i)}static upload(e,t,n,i){for(let r=0,a=t.length;r!==a;++r){let a=t[r],s=n[a.id];!1!==s.needsUpdate&&a.setValue(e,s.value,i)}}static seqWithValue(e,t){let n=[];for(let i=0,r=e.length;i!==r;++i){let r=e[i];r.id in t&&n.push(r)}return n}}function uI(e,t,n){let i=e.createShader(t);return e.shaderSource(i,n),e.compileShader(i),i}let uN=0,uD=new ey;
340function uU(e,t,n){let i=e.getShaderParameter(t,e.COMPILE_STATUS),r=(e.getShaderInfoLog(t)||"").trim();if(i&&""===r)return"";let a=/ERROR: 0:(\d+)/.exec(r);if(!a)return r;{let i=parseInt(a[1]);return n.toUpperCase()+"\n\n"+r+"\n\n"+function(e,t){let n=e.split("\n"),i=[],r=Math.max(t-6,0),a=Math.min(t+6,n.length);for(let e=r;e<a;e++){let r=e+1;i.push(`${r===t?">":" "} ${r}: ${n[e]}`)}return i.join("\n")}(e.getShaderSource(t),i)}}let uF={1:"Linear",2:"Reinhard",3:"Cineon",4:"ACESFilmic",6:"AgX",7:"Neutral",5:"Custom"},uO=new eg;function uk(e){return""!==e}function uz(e,t){let n=t.numSpotLightShadows+t.numSpotLightMaps-t.numSpotLightShadowsWithMaps;return e.replace(/NUM_DIR_LIGHTS/g,t.numDirLights).replace(/NUM_SPOT_LIGHTS/g,t.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,t.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,n).replace(/NUM_RECT_AREA_LIGHTS/g,t.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,t.numPointLights).replace(/NUM_HEMI_LIGHTS/g,t.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,t.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,t.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,t.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,t.numPointLightShadows)}function uB(e,t){return e.replace(/NUM_CLIPPING_PLANES/g,t.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,t.numClippingPlanes-t.numClipIntersection)}let uV=/^[ \t]*#include +<([\w\d./]+)>/gm;function uH(e){return e.replace(uV,uG)}let uj=new Map;function uG(e,t){let n=li[t];if(void 0===n){let e=uj.get(t);if(void 0!==e)n=li[e],Q('WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',t,e);else throw Error("Can not resolve #include <"+t+">")}return uH(n)}let uW=/#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 uX(e){return e.replace(uW,uq)}function uq(e,t,n,i){let r="";for(let e=parseInt(t);e<parseInt(n);e++)r+=i.replace(/\[\s*i\s*\]/g,"[ "+e+" ]").replace(/UNROLLED_LOOP_INDEX/g,e);return r}function uY(e){let t=`precision ${e.precision} float; 341 precision ${e.precision} int; 342 precision ${e.precision} sampler2D; 343 precision ${e.precision} samplerCube; 344 precision ${e.precision} sampler3D; 345 precision ${e.precision} sampler2DArray; 346 precision ${e.precision} sampler2DShadow; 347 precision ${e.precision} samplerCubeShadow; 348 precision ${e.precision} sampler2DArrayShadow; 349 precision ${e.precision} isampler2D; 350 precision ${e.precision} isampler3D; 351 precision ${e.precision} isamplerCube; 352 precision ${e.precision} isampler2DArray; 353 precision ${e.precision} usampler2D; 354 precision ${e.precision} usampler3D; 355 precision ${e.precision} usamplerCube; 356 precision ${e.precision} usampler2DArray; 357 `;return"highp"===e.precision?t+="\n#define HIGH_PRECISION":"mediump"===e.precision?t+="\n#define MEDIUM_PRECISION":"lowp"===e.precision&&(t+="\n#define LOW_PRECISION"),t}let uZ={1:"SHADOWMAP_TYPE_PCF",3:"SHADOWMAP_TYPE_VSM"},uJ={301:"ENVMAP_TYPE_CUBE",302:"ENVMAP_TYPE_CUBE",306:"ENVMAP_TYPE_CUBE_UV"},u$={302:"ENVMAP_MODE_REFRACTION"},uK={0:"ENVMAP_BLENDING_MULTIPLY",1:"ENVMAP_BLENDING_MIX",2:"ENVMAP_BLENDING_ADD"};function uQ(e,t,n,i){var r,a;let s,o,l,u,c=e.getContext(),h=n.defines,d=n.vertexShader,p=n.fragmentShader,f=uZ[n.shadowMapType]||"SHADOWMAP_TYPE_BASIC",m=!1===n.envMap?"ENVMAP_TYPE_CUBE":uJ[n.envMapMode]||"ENVMAP_TYPE_CUBE",g=!1===n.envMap?"ENVMAP_MODE_REFLECTION":u$[n.envMapMode]||"ENVMAP_MODE_REFLECTION",v=!1===n.envMap?"ENVMAP_BLENDING_NONE":uK[n.combine]||"ENVMAP_BLENDING_NONE",x=function(e){let t=e.envMapCubeUVHeight;if(null===t)return null;let n=Math.log2(t)-2;return{texelWidth:1/(3*Math.max(Math.pow(2,n),112)),texelHeight:1/t,maxMip:n}}(n),y=[n.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",n.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(uk).join("\n"),_=function(e){let t=[];for(let n in e){let i=e[n];!1!==i&&t.push("#define "+n+" "+i)}return t.join("\n")}(h),b=c.createProgram(),S=n.glslVersion?"#version "+n.glslVersion+"\n":"";if(n.isRawShaderMaterial)(s=["#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,_].filter(uk).join("\n")).length>0&&(s+="\n"),(o=["#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,_].filter(uk).join("\n")).length>0&&(o+="\n");else{let e,t,i,l,u;s=[uY(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,_,n.extensionCl
vendor: 5,447 bytes, line 357
357ipCullDistance?"#define USE_CLIP_DISTANCE":"",n.batching?"#define USE_BATCHING":"",n.batchingColor?"#define USE_BATCHING_COLOR":"",n.instancing?"#define USE_INSTANCING":"",n.instancingColor?"#define USE_INSTANCING_COLOR":"",n.instancingMorph?"#define USE_INSTANCING_MORPH":"",n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+g:"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.displacementMap?"#define USE_DISPLACEMENTMAP":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.mapUv?"#define MAP_UV "+n.mapUv:"",n.alphaMapUv?"#define ALPHAMAP_UV "+n.alphaMapUv:"",n.lightMapUv?"#define LIGHTMAP_UV "+n.lightMapUv:"",n.aoMapUv?"#define AOMAP_UV "+n.aoMapUv:"",n.emissiveMapUv?"#define EMISSIVEMAP_UV "+n.emissiveMapUv:"",n.bumpMapUv?"#define BUMPMAP_UV "+n.bumpMapUv:"",n.normalMapUv?"#define NORMALMAP_UV "+n.normalMapUv:"",n.displacementMapUv?"#define DISPLACEMENTMAP_UV "+n.displacementMapUv:"",n.metalnessMapUv?"#define METALNESSMAP_UV "+n.metalnessMapUv:"",n.roughnessMapUv?"#define ROUGHNESSMAP_UV "+n.roughnessMapUv:"",n.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+n.anisotropyMapUv:"",n.clearcoatMapUv?"#define CLEARCOATMAP_UV "+n.clearcoatMapUv:"",n.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+n.clearcoatNormalMapUv:"",n.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+n.clearcoatRoughnessMapUv:"",n.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+n.iridescenceMapUv:"",n.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+n.iridescenceThicknessMapUv:"",n.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+n.sheenColorMapUv:"",n.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+n.sheenRoughnessMapUv:"",n.specularMapUv?"#define SPECULARMAP_UV "+n.specularMapUv:"",n.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+n.specularColorMapUv:"",n.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+n.specularIntensityMapUv:"",n.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+n.transmissionMapUv:"",n.thicknessMapUv?"#define THICKNESSMAP_UV "+n.thicknessMapUv:"",n.vertexTangents&&!1===n.flatShading?"#define USE_TANGENT":"",n.vertexColors?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.flatShading?"#define FLAT_SHADED":"",n.skinning?"#define USE_SKINNING":"",n.morphTargets?"#define USE_MORPHTARGETS":"",n.morphNormals&&!1===n.flatShading?"#define USE_MORPHNORMALS":"",n.morphColors?"#define USE_MORPHCOLORS":"",n.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+n.morphTextureStride:"",n.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+n.morphTargetsCount:"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+f:"",n.sizeAttenuation?"#define USE_SIZEATTENUATION":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.logarithmicDepthBuffer?"#define USE_LOGARITHMIC_DEPTH_BUFFER":"",n.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","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","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#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","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif","\n"].filter(uk).join("\n"),o=[uY(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,_,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.alph
357aToCoverage?"#define ALPHA_TO_COVERAGE":"",n.map?"#define USE_MAP":"",n.matcap?"#define USE_MATCAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+m:"",n.envMap?"#define "+g:"",n.envMap?"#define "+v:"",x?"#define CUBEUV_TEXEL_WIDTH "+x.texelWidth:"",x?"#define CUBEUV_TEXEL_HEIGHT "+x.texelHeight:"",x?"#define CUBEUV_MAX_MIP "+x.maxMip+".0":"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoat?"#define USE_CLEARCOAT":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.dispersion?"#define USE_DISPERSION":"",n.iridescence?"#define USE_IRIDESCENCE":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaTest?"#define USE_ALPHATEST":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.sheen?"#define USE_SHEEN":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.vertexTangents&&!1===n.flatShading?"#define USE_TANGENT":"",n.vertexColors||n.instancingColor||n.batchingColor?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.gradientMap?"#define USE_GRADIENTMAP":"",n.flatShading?"#define FLAT_SHADED":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+f:"",n.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",n.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",n.logarithmicDepthBuffer?"#define USE_LOGARITHMIC_DEPTH_BUFFER":"",n.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",0!==n.toneMapping?"#define TONE_MAPPING":"",0!==n.toneMapping?li.tonemapping_pars_fragment:"",0!==n.toneMapping?(r="toneMapping",void 0===(e=uF[a=n.toneMapping])?(Q("WebGLProgram: Unsupported toneMapping:",a),"vec3 "+r+"( vec3 color ) { return LinearToneMapping( color ); }"):"vec3 "+r+"( vec3 color ) { return "+e+"ToneMapping( color ); }"):"",n.dithering?"#define DITHERING":"",n.opaque?"#define OPAQUE":"",li.colorspace_pars_fragment,(t=function(e){eM._getMatrix(uD,eM.workingColorSpace,e);let t=`mat3( ${uD.elements.map(e=>e.toFixed(4))} )`;switch(eM.getTransfer(e)){case F:return[t,"LinearTransferOETF"];case O:return[t,"sRGBTransferOETF"];default:return Q("WebGLProgram: Unsupported color space: ",e),[t,"LinearTransferOETF"]}}(n.outputColorSpace),`vec4 linearToOutputTexel( vec4 value ) { 358 return ${t[1]}( vec4( value.rgb * ${t[0]}, value.a ) ); 359}`),(eM.getLuminanceCoefficients(uO),i=uO.x.toFixed(4),l=uO.y.toFixed(4),u=uO.z.toFixed(4),`float luminance( const in vec3 rgb ) { 360 const vec3 weights = vec3( ${i}, ${l}, ${u} ); 361 return dot( weights, rgb ); 362}`),n.useDepthPacking?"#define DEPTH_PACKING "+n.depthPacking:"","\n"].filter(uk).join("\n")}d=uB(d=uz(d=uH(d),n),n),p=uB(p=uz(p=uH(p),n),n),d=uX(d),p=uX(p),!0!==n.isRawShaderMaterial&&(S="#version 300 es\n",s=[y,"#define attribute in\n#define varying out\n#define texture2D texture"].join("\n")+"\n"+s,o=["#define varying in",
362n.glslVersion===k?"":"layout(location = 0) out highp vec4 pc_fragColor;",n.glslVersion===k?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth\n#define texture2D texture\n#define textureCube texture\n#define texture2DProj textureProj\n#define texture2DLodEXT textureLod\n#define texture2DProjLodEXT textureProjLod\n#define textureCubeLodEXT textureLod\n#define texture2DGradEXT textureGrad\n#define texture2DProjGradEXT textureProjGrad\n#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+o);let M=S+s+d,w=S+o+p,T=uI(c,c.VERTEX_SHADER,M),E=uI(c,c.FRAGMENT_SHADER,w);function C(t){if(e.debug.checkShaderErrors){let n=c.getProgramInfoLog(b)||"",i=c.getShaderInfoLog(T)||"",r=c.getShaderInfoLog(E)||"",a=n.trim(),l=i.trim(),u=r.trim(),h=!0,d=!0;if(!1===c.getProgramParameter(b,c.LINK_STATUS))if(h=!1,"function"==typeof e.debug.onShaderError)e.debug.onShaderError(c,b,T,E);else{let e=uU(c,T,"vertex"),n=uU(c,E,"fragment");ee("THREE.WebGLProgram: Shader Error "+c.getError()+" - VALIDATE_STATUS "+c.getProgramParameter(b,c.VALIDATE_STATUS)+"\n\nMaterial Name: "+t.name+"\nMaterial Type: "+t.type+"\n\nProgram Info Log: "+a+"\n"+e+"\n"+n)}else""!==a?Q("WebGLProgram: Program Info Log:",a):(""===l||""===u)&&(d=!1);d&&(t.diagnostics={runnable:h,programLog:a,vertexShader:{log:l,prefix:s},fragmentShader:{log:u,prefix:o}})}c.deleteShader(T),c.deleteShader(E),l=new uP(c,b),u=function(e,t){let n={},i=e.getProgramParameter(t,e.ACTIVE_ATTRIBUTES);for(let r=0;r<i;r++){let i=e.getActiveAttrib(t,r),a=i.name,s=1;i.type===e.FLOAT_MAT2&&(s=2),i.type===e.FLOAT_MAT3&&(s=3),i.type===e.FLOAT_MAT4&&(s=4),n[a]={type:i.type,location:e.getAttribLocation(t,a),locationSize:s}}return n}(c,b)}c.attachShader(b,T),c.attachShader(b,E),void 0!==n.index0AttributeName?c.bindAttribLocation(b,0,n.index0AttributeName):!0===n.morphTargets&&c.bindAttribLocation(b,0,"position"),c.linkProgram(b),this.getUniforms=function(){return void 0===l&&C(this),l},this.getAttributes=function(){return void 0===u&&C(this),u};let A=!1===n.rendererExtensionParallelShaderCompile;return this.isReady=function(){return!1===A&&(A=c.getProgramParameter(b,37297)),A},this.destroy=function(){i.releaseStatesOfProgram(this),c.deleteProgram(b),this.program=void 0},this.type=n.shaderType,this.name=n.shaderName,this.id=uN++,this.cacheKey=t,this.usedTimes=1,this.program=b,this.vertexShader=T,this.fragmentShader=E,this}let u0=0;class u1{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){let t=e.vertexShader,n=e.fragmentShader,i=this._getShaderStage(t),r=this._getShaderStage(n),a=this._getShaderCacheForMaterial(e);return!1===a.has(i)&&(a.add(i),i.usedTimes++),!1===a.has(r)&&(a.add(r),r.usedTimes++),this}remove(e){for(let t of this.materialCache.get(e))t.usedTimes--,0===t.usedTimes&&this.shaderCache.delete(t.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){let t=this.materialCache,n=t.get(e);return void 0===n&&(n=new Set,t.set(e,n)),n}_getShaderStage(e){let t=this.shaderCache,n=t.get(e);return void 0===n&&(n=new u2(e),t.set(e,n)),n}}class u2{constructor(e){this.id=u0++,this.code=e,this.usedTimes=0}}function u3(e,t,n,i,r,a,s){let o=new tf,l=new u1,u=new Set,c=[],h=new Map,d=r.logarithmicDepthBuffer,p=r.precision,f={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distance",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 m(e){return(u.add(e),0===e)?"uv":`uv${e}`}return{getParameters:function(a,o,c,h,g){let v,x,y,_,b=h.fog,S=g.geometry,M=a.isMeshStandardMaterial?h.environment:null,w=(a.isMeshStandardMaterial?n:t).get(a.envMap||M),T=w&&306===w.mapping?w.image.height:null,E=f[a.type];null!==a.precision&&(p=r.getMaxPrecision(a.precision))!==a.precision&&Q("WebGLProgram.getParameters:",a.precision,"not supported, using",p,"instead.");let C=S.morphAttributes.position||S.morphAttributes.normal||S.morphAttributes.color,A=void 0!==C?C.length:0,R=0;
vendor: 5,086 bytes, line 362
362if(void 0!==S.morphAttributes.position&&(R=1),void 0!==S.morphAttributes.normal&&(R=2),void 0!==S.morphAttributes.color&&(R=3),E){let e=la[E];v=e.vertexShader,x=e.fragmentShader}else v=a.vertexShader,x=a.fragmentShader,l.update(a),y=l.getVertexShaderID(a),_=l.getFragmentShaderID(a);let L=e.getRenderTarget(),P=e.state.buffers.depth.getReversed(),I=!0===g.isInstancedMesh,N=!0===g.isBatchedMesh,D=!!a.map,F=!!a.matcap,k=!!w,z=!!a.aoMap,B=!!a.lightMap,V=!!a.bumpMap,H=!!a.normalMap,j=!!a.displacementMap,G=!!a.emissiveMap,W=!!a.metalnessMap,X=!!a.roughnessMap,q=a.anisotropy>0,Y=a.clearcoat>0,Z=a.dispersion>0,J=a.iridescence>0,$=a.sheen>0,K=a.transmission>0,ee=q&&!!a.anisotropyMap,et=Y&&!!a.clearcoatMap,en=Y&&!!a.clearcoatNormalMap,ei=Y&&!!a.clearcoatRoughnessMap,er=J&&!!a.iridescenceMap,ea=J&&!!a.iridescenceThicknessMap,es=$&&!!a.sheenColorMap,eo=$&&!!a.sheenRoughnessMap,el=!!a.specularMap,eu=!!a.specularColorMap,ec=!!a.specularIntensityMap,eh=K&&!!a.transmissionMap,ed=K&&!!a.thicknessMap,ep=!!a.gradientMap,ef=!!a.alphaMap,em=a.alphaTest>0,eg=!!a.alphaHash,ev=!!a.extensions,ex=0;a.toneMapped&&(null===L||!0===L.isXRRenderTarget)&&(ex=e.toneMapping);let ey={shaderID:E,shaderType:a.type,shaderName:a.name,vertexShader:v,fragmentShader:x,defines:a.defines,customVertexShaderID:y,customFragmentShaderID:_,isRawShaderMaterial:!0===a.isRawShaderMaterial,glslVersion:a.glslVersion,precision:p,batching:N,batchingColor:N&&null!==g._colorsTexture,instancing:I,instancingColor:I&&null!==g.instanceColor,instancingMorph:I&&null!==g.morphTexture,outputColorSpace:null===L?e.outputColorSpace:!0===L.isXRRenderTarget?L.texture.colorSpace:U,alphaToCoverage:!!a.alphaToCoverage,map:D,matcap:F,envMap:k,envMapMode:k&&w.mapping,envMapCubeUVHeight:T,aoMap:z,lightMap:B,bumpMap:V,normalMap:H,displacementMap:j,emissiveMap:G,normalMapObjectSpace:H&&1===a.normalMapType,normalMapTangentSpace:H&&0===a.normalMapType,metalnessMap:W,roughnessMap:X,anisotropy:q,anisotropyMap:ee,clearcoat:Y,clearcoatMap:et,clearcoatNormalMap:en,clearcoatRoughnessMap:ei,dispersion:Z,iridescence:J,iridescenceMap:er,iridescenceThicknessMap:ea,sheen:$,sheenColorMap:es,sheenRoughnessMap:eo,specularMap:el,specularColorMap:eu,specularIntensityMap:ec,transmission:K,transmissionMap:eh,thicknessMap:ed,gradientMap:ep,opaque:!1===a.transparent&&1===a.blending&&!1===a.alphaToCoverage,alphaMap:ef,alphaTest:em,alphaHash:eg,combine:a.combine,mapUv:D&&m(a.map.channel),aoMapUv:z&&m(a.aoMap.channel),lightMapUv:B&&m(a.lightMap.channel),bumpMapUv:V&&m(a.bumpMap.channel),normalMapUv:H&&m(a.normalMap.channel),displacementMapUv:j&&m(a.displacementMap.channel),emissiveMapUv:G&&m(a.emissiveMap.channel),metalnessMapUv:W&&m(a.metalnessMap.channel),roughnessMapUv:X&&m(a.roughnessMap.channel),anisotropyMapUv:ee&&m(a.anisotropyMap.channel),clearcoatMapUv:et&&m(a.clearcoatMap.channel),clearcoatNormalMapUv:en&&m(a.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:ei&&m(a.clearcoatRoughnessMap.channel),iridescenceMapUv:er&&m(a.iridescenceMap.channel),iridescenceThicknessMapUv:ea&&m(a.iridescenceThicknessMap.channel),sheenColorMapUv:es&&m(a.sheenColorMap.channel),sheenRoughnessMapUv:eo&&m(a.sheenRoughnessMap.channel),specularMapUv:el&&m(a.specularMap.channel),specularColorMapUv:eu&&m(a.specularColorMap.channel),specularIntensityMapUv:ec&&m(a.specularIntensityMap.channel),transmissionMapUv:eh&&m(a.transmissionMap.channel),thicknessMapUv:ed&&m(a.thicknessMap.channel),alphaMapUv:ef&&m(a.alphaMap.channel),vertexTangents:!!S.attributes.tangent&&(H||q),vertexColors:a.vertexColors,vertexAlphas:!0===a.vertexColors&&!!S.attributes.color&&4===S.attributes.color.itemSize,pointsUvs:!0===g.isPoints&&!!S.attributes.uv&&(D||ef),fog:!!b,useFog:!0===a.fog,fogExp2:!!b&&b.isFogExp2,flatShading:!0===a.flatShading&&!1===a.wireframe,sizeAttenuation:!0===a.sizeAttenuation,logarithmicDepthBuffer:d,reversedDepthBuffer:P,skinning:!0===g.isSkinnedMesh,morphTargets:void 0!==S.morphAttributes.position,morphNormals:void 0!==S.morphAttributes.normal,morphColors:void 0!==S.morphAttributes.color,morphTargetsCount:A,morphTextureStride:R,numDirLights:o.directional.length,numPointLights:o.point.length,numSpotLights:o.spot.length,numSpotLightMaps:o.spotLightMap.length,numRectAreaLights:o.rectArea.length,numHemiLights:o.hemi.length,numDirLightShadows:o.directionalShadowMap.length,numPointLightShadows:o.pointShadowMap.length,numSpotLightShadows:o.spotShadowMap.length,numSpotLightShadowsWithMaps:o.numSpotLightShadowsWithMaps,numLightProbes:o.numLightProbes,numClippingPlanes:s.numPlanes,numClipIntersection:s.numIntersection,dithering:a.dithering,shadowMapEnabled:e.shadowMap.enabled&&c.length>0,shadowMapType:e.shadowMap.type,toneMapping:ex,decodeVideoTexture:D&&!0===a.map.isVideoTexture&&eM.getTransfer(a.map.colorSpace)===O,decodeVideoTextureEmissive:G&&!0===a.emissiveMap.isVideoTexture&&eM.getTransfer(a.emissiveMap.colorSpace)===O,premultipliedAlpha:a.premultipliedAlpha,doubleSided:2===a.side,flipSided:1===a.side,useDepthPacking:a.depthPacking>=0,depthPacking:a.depthPacking||0,index0AttributeName:a.index0AttributeName,extensionCl
vendor: 4,445 bytes, line 362
362ipCullDistance:ev&&!0===a.extensions.clipCullDistance&&i.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(ev&&!0===a.extensions.multiDraw||N)&&i.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:i.has("KHR_parallel_shader_compile"),customProgramCacheKey:a.customProgramCacheKey()};return ey.vertexUv1s=u.has(1),ey.vertexUv2s=u.has(2),ey.vertexUv3s=u.has(3),u.clear(),ey},getProgramCacheKey:function(t){var n,i,r,a;let s=[];if(t.shaderID?s.push(t.shaderID):(s.push(t.customVertexShaderID),s.push(t.customFragmentShaderID)),void 0!==t.defines)for(let e in t.defines)s.push(e),s.push(t.defines[e]);return!1===t.isRawShaderMaterial&&(n=s,i=t,n.push(i.precision),n.push(i.outputColorSpace),n.push(i.envMapMode),n.push(i.envMapCubeUVHeight),n.push(i.mapUv),n.push(i.alphaMapUv),n.push(i.lightMapUv),n.push(i.aoMapUv),n.push(i.bumpMapUv),n.push(i.normalMapUv),n.push(i.displacementMapUv),n.push(i.emissiveMapUv),n.push(i.metalnessMapUv),n.push(i.roughnessMapUv),n.push(i.anisotropyMapUv),n.push(i.clearcoatMapUv),n.push(i.clearcoatNormalMapUv),n.push(i.clearcoatRoughnessMapUv),n.push(i.iridescenceMapUv),n.push(i.iridescenceThicknessMapUv),n.push(i.sheenColorMapUv),n.push(i.sheenRoughnessMapUv),n.push(i.specularMapUv),n.push(i.specularColorMapUv),n.push(i.specularIntensityMapUv),n.push(i.transmissionMapUv),n.push(i.thicknessMapUv),n.push(i.combine),n.push(i.fogExp2),n.push(i.sizeAttenuation),n.push(i.morphTargetsCount),n.push(i.morphAttributeCount),n.push(i.numDirLights),n.push(i.numPointLights),n.push(i.numSpotLights),n.push(i.numSpotLightMaps),n.push(i.numHemiLights),n.push(i.numRectAreaLights),n.push(i.numDirLightShadows),n.push(i.numPointLightShadows),n.push(i.numSpotLightShadows),n.push(i.numSpotLightShadowsWithMaps),n.push(i.numLightProbes),n.push(i.shadowMapType),n.push(i.toneMapping),n.push(i.numClippingPlanes),n.push(i.numClipIntersection),n.push(i.depthPacking),r=s,a=t,o.disableAll(),a.instancing&&o.enable(0),a.instancingColor&&o.enable(1),a.instancingMorph&&o.enable(2),a.matcap&&o.enable(3),a.envMap&&o.enable(4),a.normalMapObjectSpace&&o.enable(5),a.normalMapTangentSpace&&o.enable(6),a.clearcoat&&o.enable(7),a.iridescence&&o.enable(8),a.alphaTest&&o.enable(9),a.vertexColors&&o.enable(10),a.vertexAlphas&&o.enable(11),a.vertexUv1s&&o.enable(12),a.vertexUv2s&&o.enable(13),a.vertexUv3s&&o.enable(14),a.vertexTangents&&o.enable(15),a.anisotropy&&o.enable(16),a.alphaHash&&o.enable(17),a.batching&&o.enable(18),a.dispersion&&o.enable(19),a.batchingColor&&o.enable(20),a.gradientMap&&o.enable(21),r.push(o.mask),o.disableAll(),a.fog&&o.enable(0),a.useFog&&o.enable(1),a.flatShading&&o.enable(2),a.logarithmicDepthBuffer&&o.enable(3),a.reversedDepthBuffer&&o.enable(4),a.skinning&&o.enable(5),a.morphTargets&&o.enable(6),a.morphNormals&&o.enable(7),a.morphColors&&o.enable(8),a.premultipliedAlpha&&o.enable(9),a.shadowMapEnabled&&o.enable(10),a.doubleSided&&o.enable(11),a.flipSided&&o.enable(12),a.useDepthPacking&&o.enable(13),a.dithering&&o.enable(14),a.transmission&&o.enable(15),a.sheen&&o.enable(16),a.opaque&&o.enable(17),a.pointsUvs&&o.enable(18),a.decodeVideoTexture&&o.enable(19),a.decodeVideoTextureEmissive&&o.enable(20),a.alphaToCoverage&&o.enable(21),r.push(o.mask),s.push(e.outputColorSpace)),s.push(t.customProgramCacheKey),s.join()},getUniforms:function(e){let t,n=f[e.type];if(n){let e=la[n];t=nI.clone(e.uniforms)}else t=e.uniforms;return t},acquireProgram:function(t,n){let i=h.get(n);return void 0!==i?++i.usedTimes:(i=new uQ(e,n,t,a),c.push(i),h.set(n,i)),i},releaseProgram:function(e){if(0==--e.usedTimes){let t=c.indexOf(e);c[t]=c[c.length-1],c.pop(),h.delete(e.cacheKey),e.destroy()}},releaseShaderCache:function(e){l.remove(e)},programs:c,dispose:function(){l.dispose()}}}function u5(){let e=new WeakMap;return{has:function(t){return e.has(t)},get:function(t){let n=e.get(t);return void 0===n&&(n={},e.set(t,n)),n},remove:function(t){e.delete(t)},update:function(t,n,i){e.get(t)[n]=i},dispose:function(){e=new WeakMap}}}function u4(e,t){return e.groupOrder!==t.groupOrder?e.groupOrder-t.groupOrder:e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.material.id!==t.material.id?e.material.id-t.material.id:e.z!==t.z?e.z-t.z:e.id-t.id}function u6(e,t){return e.groupOrder!==t.groupOrder?e.groupOrder-t.groupOrder:e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.z!==t.z?t.z-e.z:e.id-t.id}function u8(){let e=[],t=0,n=[],i=[],r=[];function a(n,i,r,a,s,o){let l=e[t];
362return void 0===l?(l={id:n.id,object:n,geometry:i,material:r,groupOrder:a,renderOrder:n.renderOrder,z:s,group:o},e[t]=l):(l.id=n.id,l.object=n,l.geometry=i,l.material=r,l.groupOrder=a,l.renderOrder=n.renderOrder,l.z=s,l.group=o),t++,l}return{opaque:n,transmissive:i,transparent:r,init:function(){t=0,n.length=0,i.length=0,r.length=0},push:function(e,t,s,o,l,u){let c=a(e,t,s,o,l,u);s.transmission>0?i.push(c):!0===s.transparent?r.push(c):n.push(c)},unshift:function(e,t,s,o,l,u){let c=a(e,t,s,o,l,u);s.transmission>0?i.unshift(c):!0===s.transparent?r.unshift(c):n.unshift(c)},finish:function(){for(let n=t,i=e.length;n<i;n++){let t=e[n];if(null===t.id)break;t.id=null,t.object=null,t.geometry=null,t.material=null,t.group=null}},sort:function(e,t){n.length>1&&n.sort(e||u4),i.length>1&&i.sort(t||u6),r.length>1&&r.sort(t||u6)}}}function u7(){let e=new WeakMap;return{get:function(t,n){let i,r=e.get(t);return void 0===r?(i=new u8,e.set(t,[i])):n>=r.length?(i=new u8,r.push(i)):i=r[n],i},dispose:function(){e=new WeakMap}}}function u9(){let e={};return{get:function(t){let n;if(void 0!==e[t.id])return e[t.id];switch(t.type){case"DirectionalLight":n={direction:new eg,color:new tZ};break;case"SpotLight":n={position:new eg,direction:new eg,color:new tZ,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":n={position:new eg,color:new tZ,distance:0,decay:0};break;case"HemisphereLight":n={direction:new eg,skyColor:new tZ,groundColor:new tZ};break;case"RectAreaLight":n={color:new tZ,position:new eg,halfWidth:new eg,halfHeight:new eg}}return e[t.id]=n,n}}}let ce=0;function ct(e,t){return 2*!!t.castShadow-2*!!e.castShadow+ +!!t.map-!!e.map}function cn(e){let t,n=new u9,i=(t={},{get:function(e){let n;if(void 0!==t[e.id])return t[e.id];switch(e.type){case"DirectionalLight":case"SpotLight":n={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ef};break;case"PointLight":n={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ef,shadowCameraNear:1,shadowCameraFar:1e3}}return t[e.id]=n,n}}),r={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-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,numLightProbes:0};for(let e=0;e<9;e++)r.probe.push(new eg);let a=new eg,s=new ti,o=new ti;return{setup:function(t){let a=0,s=0,o=0;for(let e=0;e<9;e++)r.probe[e].set(0,0,0);let l=0,u=0,c=0,h=0,d=0,p=0,f=0,m=0,g=0,v=0,x=0;t.sort(ct);for(let e=0,y=t.length;e<y;e++){let y=t[e],_=y.color,b=y.intensity,S=y.distance,M=null;if(y.shadow&&y.shadow.map&&(M=1030===y.shadow.map.texture.format?y.shadow.map.texture:y.shadow.map.depthTexture||y.shadow.map.texture),y.isAmbientLight)a+=_.r*b,s+=_.g*b,o+=_.b*b;else if(y.isLightProbe){for(let e=0;e<9;e++)r.probe[e].addScaledVector(y.sh.coefficients[e],b);x++}else if(y.isDirectionalLight){let e=n.get(y);if(e.color.copy(y.color).multiplyScalar(y.intensity),y.castShadow){let e=y.shadow,t=i.get(y);t.shadowIntensity=e.intensity,t.shadowBias=e.bias,t.shadowNormalBias=e.normalBias,t.shadowRadius=e.radius,t.shadowMapSize=e.mapSize,r.directionalShadow[l]=t,r.directionalShadowMap[l]=M,r.directionalShadowMatrix[l]=y.shadow.matrix,p++}r.directional[l]=e,l++}else if(y.isSpotLight){let e=n.get(y);e.position.setFromMatrixPosition(y.matrixWorld),e.color.copy(_).multiplyScalar(b),e.distance=S,e.coneCos=Math.cos(y.angle),e.penumbraCos=Math.cos(y.angle*(1-y.penumbra)),e.decay=y.decay,r.spot[c]=e;let t=y.shadow;if(y.map&&(r.spotLightMap[g]=y.map,g++,t.updateMatrices(y),y.castShadow&&v++),r.spotLightMatrix[c]=t.matrix,y.castShadow){let e=i.get(y);e.shadowIntensity=t.intensity,e.shadowBias=t.bias,e.shadowNormalBias=t.normalBias,e.shadowRadius=t.radius,e.shadowMapSize=t.mapSize,r.spotShadow[c]=e,r.spotShadowMap[c]=M,m++}c++}else if(y.isRectAreaLight){let e=n.get(y);e.color.copy(_).multiplyScalar(b),e.halfWidth.set(.5*y.width,0,0),e.halfHeight.set(0,.5*y.height,0),r.rectArea[h]=e,h++}else if(y.isPointLight){let e=n.get(y);if(e.color.copy(y.color).multiplyScalar(y.intensity),e.distance=y.distance,e.decay=y.decay,y.castShadow){let e=y.shadow,t=i.get(y);t.shadowIntensity=e.intensity,t.shadowBias=e.bias,t.shadowNormalBias=e.n
362ormalBias,t.shadowRadius=e.radius,t.shadowMapSize=e.mapSize,t.shadowCameraNear=e.camera.near,t.shadowCameraFar=e.camera.far,r.pointShadow[u]=t,r.pointShadowMap[u]=M,r.pointShadowMatrix[u]=y.shadow.matrix,f++}r.point[u]=e,u++}else if(y.isHemisphereLight){let e=n.get(y);e.skyColor.copy(y.color).multiplyScalar(b),e.groundColor.copy(y.groundColor).multiplyScalar(b),r.hemi[d]=e,d++}}h>0&&(!0===e.has("OES_texture_float_linear")?(r.rectAreaLTC1=lr.LTC_FLOAT_1,r.rectAreaLTC2=lr.LTC_FLOAT_2):(r.rectAreaLTC1=lr.LTC_HALF_1,r.rectAreaLTC2=lr.LTC_HALF_2)),r.ambient[0]=a,r.ambient[1]=s,r.ambient[2]=o;let y=r.hash;(y.directionalLength!==l||y.pointLength!==u||y.spotLength!==c||y.rectAreaLength!==h||y.hemiLength!==d||y.numDirectionalShadows!==p||y.numPointShadows!==f||y.numSpotShadows!==m||y.numSpotMaps!==g||y.numLightProbes!==x)&&(r.directional.length=l,r.spot.length=c,r.rectArea.length=h,r.point.length=u,r.hemi.length=d,r.directionalShadow.length=p,r.directionalShadowMap.length=p,r.pointShadow.length=f,r.pointShadowMap.length=f,r.spotShadow.length=m,r.spotShadowMap.length=m,r.directionalShadowMatrix.length=p,r.pointShadowMatrix.length=f,r.spotLightMatrix.length=m+g-v,r.spotLightMap.length=g,r.numSpotLightShadowsWithMaps=v,r.numLightProbes=x,y.directionalLength=l,y.pointLength=u,y.spotLength=c,y.rectAreaLength=h,y.hemiLength=d,y.numDirectionalShadows=p,y.numPointShadows=f,y.numSpotShadows=m,y.numSpotMaps=g,y.numLightProbes=x,r.version=ce++)},setupView:function(e,t){let n=0,i=0,l=0,u=0,c=0,h=t.matrixWorldInverse;for(let t=0,d=e.length;t<d;t++){let d=e[t];if(d.isDirectionalLight){let e=r.directional[n];e.direction.setFromMatrixPosition(d.matrixWorld),a.setFromMatrixPosition(d.target.matrixWorld),e.direction.sub(a),e.direction.transformDirection(h),n++}else if(d.isSpotLight){let e=r.spot[l];e.position.setFromMatrixPosition(d.matrixWorld),e.position.applyMatrix4(h),e.direction.setFromMatrixPosition(d.matrixWorld),a.setFromMatrixPosition(d.target.matrixWorld),e.direction.sub(a),e.direction.transformDirection(h),l++}else if(d.isRectAreaLight){let e=r.rectArea[u];e.position.setFromMatrixPosition(d.matrixWorld),e.position.applyMatrix4(h),o.identity(),s.copy(d.matrixWorld),s.premultiply(h),o.extractRotation(s),e.halfWidth.set(.5*d.width,0,0),e.halfHeight.set(0,.5*d.height,0),e.halfWidth.applyMatrix4(o),e.halfHeight.applyMatrix4(o),u++}else if(d.isPointLight){let e=r.point[i];e.position.setFromMatrixPosition(d.matrixWorld),e.position.applyMatrix4(h),i++}else if(d.isHemisphereLight){let e=r.hemi[c];e.direction.setFromMatrixPosition(d.matrixWorld),e.direction.transformDirection(h),c++}}},state:r}}function ci(e){let t=new cn(e),n=[],i=[],r={lightsArray:n,shadowsArray:i,camera:null,lights:t,transmissionRenderTarget:{}};return{init:function(e){r.camera=e,n.length=0,i.length=0},state:r,setupLights:function(){t.setup(n)},setupLightsView:function(e){t.setupView(n,e)},pushLight:function(e){n.push(e)},pushShadow:function(e){i.push(e)}}}function cr(e){let t=new WeakMap;return{get:function(n,i=0){let r,a=t.get(n);return void 0===a?(r=new ci(e),t.set(n,[r])):i>=a.length?(r=new ci(e),a.push(r)):r=a[i],r},dispose:function(){t=new WeakMap}}}let ca=[new eg(1,0,0),new eg(-1,0,0),new eg(0,1,0),new eg(0,-1,0),new eg(0,0,1),new eg(0,0,-1)],cs=[new eg(0,-1,0),new eg(0,-1,0),new eg(0,0,1),new eg(0,0,-1),new eg(0,-1,0),new eg(0,-1,0)],co=new ti,cl=new eg,cu=new eg;function cc(e,t,n){let i=new ik,r=new ef,a=new ef,s=new eN,o=new aB,l=new aV,u={},c=n.maxTextureSize,h={0:1,1:0,2:2},d=new nN({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new ef},radius:{value:4}},vertexShader:"void main() {\n gl_Position = vec4( position, 1.0 );\n}",fragmentShader:"uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\nvoid main() {\n const float samples = float( VSM_SAMPLES );\n float mean = 0.0;\n float squared_mean = 0.0;\n float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n float uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n for ( float i = 0.0; i < samples; i ++ ) {\n float uvOffset = uvStart + i * uvStride;\n #ifdef HORIZONTAL_PASS\n vec2 distribution = texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ).rg;\n mean += distribution.x;\n squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n #else\n float depth = texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ).r;\n mean += depth;\n squared_mean += depth * depth;\n #endif\n }\n mean = mean / samples;\n squared_mean = squared_mean / samples;\n float std_dev = sqrt( max( 0.0, squared_mean - mean * mean ) );\n gl_FragColor = vec4( mean, std_dev, 0.0, 1.0 );\n}"}),p=d.clone();p.defines.HORIZONTAL_PASS=1;let f=new nf;f.setAttribute("position",new t8(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let m=new nE(f,d),g=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=1;let v=this.type;function x(t,n,i,r){let a=null,s=!0===i.isPointLight?t.customDistanceMaterial:t.customDepthMaterial;if(void 0!==s)a=s;else if(a=!0===i.isPointLight?l:o,e.localClippingEnabled&&!0===n.clipShadows&&Array.isArray(n.clippingPlanes)&&0!==n.clippingPlanes.length||n.displacementMap&&0!==n.displacementScale||n.alphaMap&&n.alphaTest>0||n.map&&n.alphaTest>0||!0===n.alphaToCoverage){let e=a.uuid,t=n.uuid,i=u[e];void 0===i&&(i={},u[e]=i);let r=i[t];void 0===r&&(r=a.clone(),i[t]=r,n.addEventListener("dispose",y)),a=r}return a.visible=n.visible,a.wireframe=n.wireframe,3===r?a.side=null!==n.shadowSide?n.shadowSide:n.side:a.side=null!==n.shadowSide?n.shadowSide:h[n.side],a.alphaMap=n.alphaMap,a.alphaTest=!0===n.alphaToCoverage?.5:n.alphaTest,a.map=n.map,a.clipShadows=n.clipShadows,a.clippingPlanes=n.clippingPlanes,a.clipIntersection=n.clipIntersection,a.displacementMap=n.displacementMap,a.displacementScale=n.displacementScale,a.displacementBias=n.displacementBias,a.wireframeLinewidth=n.wireframeLinewidth,a.linewidth=n.linewidth,!0===i.isPointLight&&!0===a.isMeshDistanceMaterial&&(e.properties.get(a).light=i),a}function y(e){for(let t in e.target.removeEventListener("dispose",y),u){let n=u[t],i=e.target.uuid;i in n&&(n[i].dispose(),delete n[i])}}this.render=function(n,o,l){if(!1===g.enabled||!1===g.autoUpdate&&!1===g.needsUpdate||0===n.length)return;2===n.type&&(Q("WebGLShadowMap: PCFSoftShadowMap has been deprecated. Using PCFShadowMap instead."),n.type=1);let u=e.getRenderTarget(),h=e.getActiveCubeFace(),f=e.getActiveMipmapLevel(),y=e.state;y.setBlending(0),!0===y.buffers.depth.getReversed()?y.buffers.color.setClear(0,0,0,0):y.buffers.color.setClear(1,1,1,1),y.buffers.depth.setTest(!0),y.setScissorTest(!1);let _=v!==this.type;_&&o.traverse(function(e){e.material&&(Array.isArray(e.material)?e.material.forEach(e
362=>e.needsUpdate=!0):e.material.needsUpdate=!0)});for(let u=0,h=n.length;u<h;u++){let h=n[u],f=h.shadow;if(void 0===f){Q("WebGLShadowMap:",h,"has no shadow.");continue}if(!1===f.autoUpdate&&!1===f.needsUpdate)continue;r.copy(f.mapSize);let g=f.getFrameExtents();if(r.multiply(g),a.copy(f.mapSize),(r.x>c||r.y>c)&&(r.x>c&&(a.x=Math.floor(c/g.x),r.x=a.x*g.x,f.mapSize.x=a.x),r.y>c&&(a.y=Math.floor(c/g.y),r.y=a.y*g.y,f.mapSize.y=a.y)),null===f.map||!0===_){if(null!==f.map&&(null!==f.map.depthTexture&&(f.map.depthTexture.dispose(),f.map.depthTexture=null),f.map.dispose()),3===this.type){if(h.isPointLight){Q("WebGLShadowMap: VSM shadow maps are not supported for PointLights. Use PCF or BasicShadowMap instead.");continue}f.map=new eU(r.x,r.y,{format:1030,type:1016,minFilter:1006,magFilter:1006,generateMipmaps:!1}),f.map.texture.name=h.name+".shadowMap",f.map.depthTexture=new rM(r.x,r.y,1015),f.map.depthTexture.name=h.name+".shadowMapDepth",f.map.depthTexture.format=1026,f.map.depthTexture.compareFunction=null,f.map.depthTexture.minFilter=1003,f.map.depthTexture.magFilter=1003}else{h.isPointLight?(f.map=new nV(r.x),f.map.depthTexture=new rw(r.x,1014)):(f.map=new eU(r.x,r.y),f.map.depthTexture=new rM(r.x,r.y,1014)),f.map.depthTexture.name=h.name+".shadowMap",f.map.depthTexture.format=1026;let t=e.state.buffers.depth.getReversed();1===this.type?(f.map.depthTexture.compareFunction=t?518:515,f.map.depthTexture.minFilter=1006,f.map.depthTexture.magFilter=1006):(f.map.depthTexture.compareFunction=null,f.map.depthTexture.minFilter=1003,f.map.depthTexture.magFilter=1003)}f.camera.updateProjectionMatrix()}let v=f.map.isWebGLCubeRenderTarget?6:1;for(let n=0;n<v;n++){if(f.map.isWebGLCubeRenderTarget)e.setRenderTarget(f.map,n),e.clear();else{0===n&&(e.setRenderTarget(f.map),e.clear());let t=f.getViewport(n);s.set(a.x*t.x,a.y*t.y,a.x*t.z,a.y*t.w),y.viewport(s)}if(h.isPointLight){let e=f.camera,t=f.matrix,i=h.distance||e.far;i!==e.far&&(e.far=i,e.updateProjectionMatrix()),cl.setFromMatrixPosition(h.matrixWorld),e.position.copy(cl),cu.copy(e.position),cu.add(ca[n]),e.up.copy(cs[n]),e.lookAt(cu),e.updateMatrixWorld(),t.makeTranslation(-cl.x,-cl.y,-cl.z),co.multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse),f._frustum.setFromProjectionMatrix(co,e.coordinateSystem,e.reversedDepth)}else f.updateMatrices(h);i=f.getFrustum(),function n(r,a,s,o,l){if(!1===r.visible)return;if(r.layers.test(a.layers)&&(r.isMesh||r.isLine||r.isPoints)&&(r.castShadow||r.receiveShadow&&3===l)&&(!r.frustumCulled||i.intersectsObject(r))){r.modelViewMatrix.multiplyMatrices(s.matrixWorldInverse,r.matrixWorld);let n=t.update(r),i=r.material;if(Array.isArray(i)){let t=n.groups;for(let u=0,c=t.length;u<c;u++){let c=t[u],h=i[c.materialIndex];if(h&&h.visible){let t=x(r,h,o,l);r.onBeforeShadow(e,r,a,s,n,t,c),e.renderBufferDirect(s,null,n,t,r,c),r.onAfterShadow(e,r,a,s,n,t,c)}}}else if(i.visible){let t=x(r,i,o,l);r.onBeforeShadow(e,r,a,s,n,t,null),e.renderBufferDirect(s,null,n,t,r,null),r.onAfterShadow(e,r,a,s,n,t,null)}}let u=r.children;for(let e=0,t=u.length;e<t;e++)n(u[e],a,s,o,l)}(o,l,f.camera,h,this.type)}!0!==f.isPointLightShadow&&3===this.type&&function(n,i){let a=t.update(m);d.defines.VSM_SAMPLES!==n.blurSamples&&(d.defines.VSM_SAMPLES=n.blurSamples,p.defines.VSM_SAMPLES=n.blurSamples,d.needsUpdate=!0,p.needsUpdate=!0),null===n.mapPass&&(n.mapPass=new eU(r.x,r.y,{format:1030,type:1016})),d.uniforms.shadow_pass.value=n.map.depthTexture,d.uniforms.resolution.value=n.mapSize,d.uniforms.radius.value=n.radius,e.setRenderTarget(n.mapPass),e.clear(),e.renderBufferDirect(i,null,a,d,m,null),p.uniforms.shadow_pass.value=n.mapPass.texture,p.uniforms.resolution.value=n.mapSize,p.uniforms.radius.value=n.radius,e.setRenderTarget(n.map),e.clear(),e.renderBufferDirect(i,null,a,p,m,null)}(f,l),f.needsUpdate=!1}v=this.type,g.needsUpdate=!1,e.setRenderTarget(u,h,f)}}let ch={0:1,2:6,4:7,3:5,1:0,6:2,7:4,5:3};function cd(e,t){let n=new function(){let t=!1,n=new eN,i=null,r=new eN(0,0,0,0);return{setMask:function(n){i===n||t||(e.colorMask(n,n,n,n),i=n)},setLocked:function(e){t=e},setClear:function(t,i,a,s,o){!0===o&&(t*=s,i*=s,a*=s),n.set(t,i,a,s),!1===r.equals(n)&&(e.clearColor(t,i,a,s),r.copy(n))},reset:function(){t=!1,i=null,r.set(-1,0,0,0)}}},i=new function(){let n=!1,i=!1,r=null,a=null,s=null;return{setReversed:function(e){if(i!==e){let n=t.get("EXT_clip_control");e?n.clipControlEXT(n.LOWER_LEFT_EXT,n.ZERO_TO_ONE_EXT):n.clipControlEXT(n.LOWER_LEFT_EXT,n.NEGATIVE_ONE_TO_ONE_EXT),i=e;let r=s;s=null,this.setClear(r)}},getReversed:function(){return i},setTest:function(t){t?z(e.DEPTH_TEST):B(e.DEPTH_TEST)},setMask:function(t){r===t||n||(e.depthMask(t),r=t)},setFunc:function(t){if(i&&(t=ch[t]),a!==t){switch(t){case 0:e.depthFunc(e.NEVER);break;case 1:e.depthFunc(e.ALWAYS);break;case 2:e.depthFunc(e.LESS);break;case 3:default:e.depthFunc(e.LEQUAL);break;case 4:e.depthFunc(e.EQUAL);break;case 5:e.depthFunc(e.GEQUAL);break;case 6:e.depthFunc(e.GREATER);break;case 7:e.depthFunc(e.NOTEQUAL)}a=t}},setLocked:function(e){n=e},setClear:function(t){s!==t&&(i&&(t=1-t),e.clearDepth(t),s=t)},reset:function(){n=!1,r=null,a=null,s=null,i=!1}}},r=new function(){let t=!1,n=null,i=null,r=null,a=null,s=null,o=null,l=null,u=null;return{setTest:function(n){t||(n?z(e.STENCIL_TEST):B(e.STENCIL_TEST))},setMask:function(i){n===i||t||(e.stencilMask(i),n=i)},setFunc:function(t,n,s){(i!==t||r!==n||a!==s)&&(e.stencilFunc(t,n,s),i=t,r=n,a=s)},setOp:function(t,n,i){(s!==t||o!==n||l!==i)&&(e.stencilOp(t,n,i),s=t,o=n,l=i)},setLocked:function(e){t=e},setClear:function(t){u!==t&&(e.clearStencil(t),u=t)},reset:function(){t=!1,n=null,i=null,r=null,a=null,s=null,o=null,l=null,u=null}}},a=new WeakMap,s=new WeakMap,o={},l={},u=new WeakMap,c=[],h=null,d=!1,p=null,f=null,m=null,g=null,v=null,x=null,y=null,_=new tZ(0,0,0),b=0,S=!1,M=null,w=null,T=null,E=null,C=null,A=e.getParameter(e.MAX_COMBINED_TEXTURE_IMAGE_UNITS),R=!1,L=e.getParameter(e.VERSION);-1!==L.indexOf("WebGL")?R=parseFloat(/^WebGL (\d)/.exec(L)[1])>=1:-1!==L.indexOf("OpenGL ES")&&(R=parseFloat(/^OpenGL ES (\d)/.exec(L)[1])>=2);let P=null,I={},N=e.getParameter(e.SCISSOR_BOX),D=e.getParameter(e.VIEWPORT),U=new eN().fromArray(N),F=new eN().fromArray(D);function O(t,n,i,r){let a=new Uint8Array(4),s=e.createTexture();e.bindTexture(t,s),e.texParameteri(t,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(t,e.TEXTURE_MAG_FILTER,e.NEAREST);for(let s=0;s<i;s++)t===e.TEXTURE_3D||t===e.TEXTURE_2D_ARRAY?e.texImage3D(n,0,e.RGBA,1,1,r,0,e.RGBA,e.UNSIGNED_BYTE,a):e.texImage2D(n+s,0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,a);return s}let k={};function z(t){!0!==o[t]&&(e.enable(t),o[t]=!0)}function B(t){!1!==o[t]&&(e.disable(t),o[t]=!1)}k[e.TEXTURE_2D]=O(e.TEXTURE_2D,e.TEXTURE_2D,1),k[e.TEXTURE_CUBE_MAP]=O(e.TEXTURE_CUBE_MAP,e.TEXTURE_CUBE_MAP_POSITIVE_X,6),k[e.TEXTURE_2D_ARRAY]=O(e.TEXTURE_2D_ARRAY,e.TEXTURE_2D_ARRAY,1,1),k[e.TEXTURE_3D]=O(e.TEXTURE_3D,e.TEXTURE_3D,1,1),n.setClear(0,0,0,1),i.setClear(1),r.setClear(0),z(e.DEPTH_TEST),i.setFunc(3),G(!1),W(1),z(e.CULL_FACE),j(0);let V={100:e.FUNC_ADD,101:e.FUNC_SUBTRACT,102:e.FUNC_REVERSE_SUBTRACT};V[103]=e.MIN,V[104]=e.MAX;let H={200:e.ZERO,201:e.ONE,202:e.SRC_COLOR,204:e.SRC_ALPHA,210:e.SRC_ALPHA_SATURATE,208:e.DST_COLOR,206:e.DST_ALPHA,203:e.ONE_MINUS_SRC_COLOR,205:e.ONE_MINUS_SRC_ALPHA,209:e.ONE_MINUS_DST_COLOR,207:e.ONE_MINUS_DST_ALPHA,211:e.CONSTANT_COLOR,212:e.ONE_MINUS_CONSTANT_COLOR,213:e.CONSTANT_ALPHA,214:e.ONE_MINUS_CONSTANT_ALPHA};function j(t,n,i,r,a,s,o,l,u,c){if(0===t){!0===d&&(B(e.BLEND),d=!1);return}if(!1===d&&(z(e.BLEND),d=!0),5!==t){if(t!==p||c!==S){if((100!==f||100!==v)&&(e.blendEquation(e.FUNC_ADD),f=100,v=100),c)switch(t){case 1:e.blendFuncSeparate(e.ONE,e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE_MINUS_SRC_ALPHA);break;case 2:e.blendFunc(e.ONE,e.ONE);break;case 3:e.blendFuncSeparate(e.ZERO,e.ONE_MINUS_SRC_COLOR,e.ZERO,e.ONE);break;case 4:e.blendFuncSeparate(e.DST_COLOR,e.ONE_MINUS_SRC_ALPHA,e.ZERO,e.ONE);break;default:ee("WebGLState: Invalid blending: ",t)}else switch(t){case 1:e.blendFuncSeparate(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE_MINUS_SRC_ALPHA);break;case 2:e.blendFuncSeparate(e.SRC_ALPHA,e.ONE,e.ONE,e.ONE);break;case 3:ee("WebGLState: SubtractiveBlending requires material.premultipliedAlpha = true");break;case 4:ee("WebGLState: MultiplyBlending requires material.premultipliedAlpha = true");break;default:ee("WebGLState: Invalid blending: ",t)}m=null,g=null,x=null,y=null,_.set(0,0,0),b=0,p=t,S=c}return}a=a||n,s=s||i,o=o||r,(n!==f||a!==v)&&(e.blendEquationSeparate(V[n],V[a]),f=n,v=a),(i!==m||r!==g||s!==x||o!==y)&&(e.blendFuncSeparate(H[i],H[r],H[s],H[o]),m=i,g=r,x=s,y=o),(!1===l.equals(_)||u!==b)&&(e.blendColor
362(l.r,l.g,l.b,u),_.copy(l),b=u),p=t,S=!1}function G(t){M!==t&&(t?e.frontFace(e.CW):e.frontFace(e.CCW),M=t)}function W(t){0!==t?(z(e.CULL_FACE),t!==w&&(1===t?e.cullFace(e.BACK):2===t?e.cullFace(e.FRONT):e.cullFace(e.FRONT_AND_BACK))):B(e.CULL_FACE),w=t}function X(t,n,i){t?(z(e.POLYGON_OFFSET_FILL),(E!==n||C!==i)&&(e.polygonOffset(n,i),E=n,C=i)):B(e.POLYGON_OFFSET_FILL)}return{buffers:{color:n,depth:i,stencil:r},enable:z,disable:B,bindFramebuffer:function(t,n){return l[t]!==n&&(e.bindFramebuffer(t,n),l[t]=n,t===e.DRAW_FRAMEBUFFER&&(l[e.FRAMEBUFFER]=n),t===e.FRAMEBUFFER&&(l[e.DRAW_FRAMEBUFFER]=n),!0)},drawBuffers:function(t,n){let i=c,r=!1;if(t){void 0===(i=u.get(n))&&(i=[],u.set(n,i));let a=t.textures;if(i.length!==a.length||i[0]!==e.COLOR_ATTACHMENT0){for(let t=0,n=a.length;t<n;t++)i[t]=e.COLOR_ATTACHMENT0+t;i.length=a.length,r=!0}}else i[0]!==e.BACK&&(i[0]=e.BACK,r=!0);r&&e.drawBuffers(i)},useProgram:function(t){return h!==t&&(e.useProgram(t),h=t,!0)},setBlending:j,setMaterial:function(t,a){2===t.side?B(e.CULL_FACE):z(e.CULL_FACE);let s=1===t.side;a&&(s=!s),G(s),1===t.blending&&!1===t.transparent?j(0):j(t.blending,t.blendEquation,t.blendSrc,t.blendDst,t.blendEquationAlpha,t.blendSrcAlpha,t.blendDstAlpha,t.blendColor,t.blendAlpha,t.premultipliedAlpha),i.setFunc(t.depthFunc),i.setTest(t.depthTest),i.setMask(t.depthWrite),n.setMask(t.colorWrite);let o=t.stencilWrite;r.setTest(o),o&&(r.setMask(t.stencilWriteMask),r.setFunc(t.stencilFunc,t.stencilRef,t.stencilFuncMask),r.setOp(t.stencilFail,t.stencilZFail,t.stencilZPass)),X(t.polygonOffset,t.polygonOffsetFactor,t.polygonOffsetUnits),!0===t.alphaToCoverage?z(e.SAMPLE_ALPHA_TO_COVERAGE):B(e.SAMPLE_ALPHA_TO_COVERAGE)},setFlipSided:G,setCullFace:W,setLineWidth:function(t){t!==T&&(R&&e.lineWidth(t),T=t)},setPolygonOffset:X,setScissorTest:function(t){t?z(e.SCISSOR_TEST):B(e.SCISSOR_TEST)},activeTexture:function(t){void 0===t&&(t=e.TEXTURE0+A-1),P!==t&&(e.activeTexture(t),P=t)},bindTexture:function(t,n,i){void 0===i&&(i=null===P?e.TEXTURE0+A-1:P);let r=I[i];void 0===r&&(r={type:void 0,texture:void 0},I[i]=r),(r.type!==t||r.texture!==n)&&(P!==i&&(e.activeTexture(i),P=i),e.bindTexture(t,n||k[t]),r.type=t,r.texture=n)},unbindTexture:function(){let t=I[P];void 0!==t&&void 0!==t.type&&(e.bindTexture(t.type,null),t.type=void 0,t.texture=void 0)},compressedTexImage2D:function(){try{e.compressedTexImage2D(...arguments)}catch(e){ee("WebGLState:",e)}},compressedTexImage3D:function(){try{e.compressedTexImage3D(...arguments)}catch(e){ee("WebGLState:",e)}},texImage2D:function(){try{e.texImage2D(...arguments)}catch(e){ee("WebGLState:",e)}},texImage3D:function(){try{e.texImage3D(...arguments)}catch(e){ee("WebGLState:",e)}},updateUBOMapping:function(t,n){let i=s.get(n);void 0===i&&(i=new WeakMap,s.set(n,i));let r=i.get(t);void 0===r&&(r=e.getUniformBlockIndex(n,t.name),i.set(t,r))},uniformBlockBinding:function(t,n){let i=s.get(n).get(t);a.get(n)!==i&&(e.uniformBlockBinding(n,i,t.__bindingPointIndex),a.set(n,i))},texStorage2D:function(){try{e.texStorage2D(...arguments)}catch(e){ee("WebGLState:",e)}},texStorage3D:function(){try{e.texStorage3D(...arguments)}catch(e){ee("WebGLState:",e)}},texSubImage2D:function(){try{e.texSubImage2D(...arguments)}catch(e){ee("WebGLState:",e)}},texSubImage3D:function(){try{e.texSubImage3D(...arguments)}catch(e){ee("WebGLState:",e)}},compressedTexSubImage2D:function(){try{e.compressedTexSubImage2D(...arguments)}catch(e){ee("WebGLState:",e)}},compressedTexSubImage3D:function(){try{e.compressedTexSubImage3D(...arguments)}catch(e){ee("WebGLState:",e)}},scissor:function(t){!1===U.equals(t)&&(e.scissor(t.x,t.y,t.z,t.w),U.copy(t))},viewport:function(t){!1===F.equals(t)&&(e.viewport(t.x,t.y,t.z,t.w),F.copy(t))},reset:function(){e.disable(e.BLEND),e.disable(e.CULL_FACE),e.disable(e.DEPTH_TEST),e.disable(e.POLYGON_OFFSET_FILL),e.disable(e.SCISSOR_TEST),e.disable(e.STENCIL_TEST),e.disable(e.SAMPLE_ALPHA_TO_COVERAGE),e.blendEquation(e.FUNC_ADD),e.blendFunc(e.ONE,e.ZERO),e.blendFuncSeparate(e.ONE,e.ZERO,e.ONE,e.ZERO),e.blendColor(0,0,0,0),e.colorMask(!0,!0,!0,!0),e.clearColor(0,0,0,0),e.depthMask(!0),e.depthFunc(e.LESS),i.setReversed(!1),e.clearDepth(1),e.stencilMask(0xffffffff),e.stencilFunc(e.ALWAYS,0,0xffffffff),e.stencilOp(e.KEEP,e.KEEP,e.KEEP),e.clearStencil(0),e.cullFace(e.BACK),e.frontFace(e.CCW),e.polygonOffset(0,0),e.activeTexture(e.TEXTURE0),e.bindFramebuffer(e.FRAMEBUFFER,null),e.bindFramebuffer(e.DRAW_FRAMEBUFFER,null),e.bindFramebuffer(e.READ_FRAMEBUFFER,null),e.useProgram(null),e.lineWidth(1),e.scissor(0,0,e.canvas.width,e.canvas.height),e.viewport(0,0,e.canvas.width,e.canvas.height),o={},P=null,I={},l={},u=new WeakMap,c=[],h=null,d=!1,p=null,f=null,m=null,g=null,v=null,x=null,y=null,_=new tZ(0,0,0),b=0,S=!1,M=null,w=null,T=null,E=null,C=null,U.set(0,0,e.canvas.width,e.canvas.height),F.set(0,0,e.canvas.width,e.canvas.height),n.reset(),i.reset(),r.reset()}}}function cp(e,t,n,i,r,a,s){let o,l=t.has("WEBGL_multisampled_render_to_texture")?t.get("WEBGL_multisampled_render_to_texture"):null,u="u">typeof navigator&&/OculusBrowser/g.test(navigator.userAgent),c=new ef,h=new WeakMap,d=new WeakMap,p=!1;try{p="u">typeof OffscreenCanvas&&null!==new OffscreenCanvas(1,1).getContext("2d")}catch(e){}function f(e,t){return p?new OffscreenCanvas(e,t):X("canvas")}
362function m(e,t,n){let i=1,r=W(e);if((r.width>n||r.height>n)&&(i=n/Math.max(r.width,r.height)),i<1)if("u">typeof HTMLImageElement&&e instanceof HTMLImageElement||"u">typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"u">typeof ImageBitmap&&e instanceof ImageBitmap||"u">typeof VideoFrame&&e instanceof VideoFrame){let n=Math.floor(i*r.width),a=Math.floor(i*r.height);void 0===o&&(o=f(n,a));let s=t?f(n,a):o;return s.width=n,s.height=a,s.getContext("2d").drawImage(e,0,0,n,a),Q("WebGLRenderer: Texture has been resized from ("+r.width+"x"+r.height+") to ("+n+"x"+a+")."),s}else"data"in e&&Q("WebGLRenderer: Image in DataTexture is too big ("+r.width+"x"+r.height+").");return e}function g(e){return e.generateMipmaps}function v(t){e.generateMipmap(t)}function x(n,i,r,a,s=!1){if(null!==n){if(void 0!==e[n])return e[n];Q("WebGLRenderer: Attempt to use non-existing WebGL internal format '"+n+"'")}let o=i;if(i===e.RED&&(r===e.FLOAT&&(o=e.R32F),r===e.HALF_FLOAT&&(o=e.R16F),r===e.UNSIGNED_BYTE&&(o=e.R8)),i===e.RED_INTEGER&&(r===e.UNSIGNED_BYTE&&(o=e.R8UI),r===e.UNSIGNED_SHORT&&(o=e.R16UI),r===e.UNSIGNED_INT&&(o=e.R32UI),r===e.BYTE&&(o=e.R8I),r===e.SHORT&&(o=e.R16I),r===e.INT&&(
362o=e.R32I)),i===e.RG&&(r===e.FLOAT&&(o=e.RG32F),r===e.HALF_FLOAT&&(o=e.RG16F),r===e.UNSIGNED_BYTE&&(o=e.RG8)),i===e.RG_INTEGER&&(r===e.UNSIGNED_BYTE&&(o=e.RG8UI),r===e.UNSIGNED_SHORT&&(o=e.RG16UI),r===e.UNSIGNED_INT&&(o=e.RG32UI),r===e.BYTE&&(o=e.RG8I),r===e.SHORT&&(o=e.RG16I),r===e.INT&&(o=e.RG32I)),i===e.RGB_INTEGER&&(r===e.UNSIGNED_BYTE&&(o=e.RGB8UI),r===e.UNSIGNED_SHORT&&(o=e.RGB16UI),r===e.UNSIGNED_INT&&(o=e.RGB32UI),r===e.BYTE&&(o=e.RGB8I),r===e.SHORT&&(o=e.RGB16I),r===e.INT&&(o=e.RGB32I)),i===e.RGBA_INTEGER&&(r===e.UNSIGNED_BYTE&&(o=e.RGBA8UI),r===e.UNSIGNED_SHORT&&(o=e.RGBA16UI),r===e.UNSIGNED_INT&&(o=e.RGBA32UI),r===e.BYTE&&(o=e.RGBA8I),r===e.SHORT&&(o=e.RGBA16I),r===e.INT&&(o=e.RGBA32I)),i===e.RGB&&(r===e.UNSIGNED_INT_5_9_9_9_REV&&(o=e.RGB9_E5),r===e.UNSIGNED_INT_10F_11F_11F_REV&&(o=e.R11F_G11F_B10F)),i===e.RGBA){let t=s?F:eM.getTransfer(a);r===e.FLOAT&&(o=e.RGBA32F),r===e.HALF_FLOAT&&(o=e.RGBA16F),r===e.UNSIGNED_BYTE&&(o=t===O?e.SRGB8_ALPHA8:e.RGBA8),r===e.UNSIGNED_SHORT_4_4_4_4&&(o=e.RGBA4),r===e.UNSIGNED_SHORT_5_5_5_1&&(o=e.RGB5_A1)}return(o===e.R16F||o===e.R32F||o===e.RG16F||o===e.RG32F||o===e.RGBA16F||o===e.RGBA32F)&&t.get("EXT_color_buffer_float"),o}function y(t,n){let i;return t?null===n||1014===n||1020===n?i=e.DEPTH24_STENCIL8:1015===n?i=e.DEPTH32F_STENCIL8:1012===n&&(i=e.DEPTH24_STENCIL8,Q("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):null===n||1014===n||1020===n?i=e.DEPTH_COMPONENT24:1015===n?i=e.DEPTH_COMPONENT32F:1012===n&&(i=e.DEPTH_COMPONENT16),i}function _(e,t){return!0===g(e)||e.isFramebufferTexture&&1003!==e.minFilter&&1006!==e.minFilter?Math.log2(Math.max(t.width,t.height))+1:void 0!==e.mipmaps&&e.mipmaps.length>0?e.mipmaps.length:e.isCompressedTexture&&Array.isArray(e.image)?t.mipmaps.length:1}function b(e){let t=e.target;t.removeEventListener("dispose",b),function(e){let t=i.get(e);if(void 0===t.__webglInit)return;let n=e.source,r=d.get(n);if(r){let i=r[t.__cacheKey];i.usedTimes--,0===i.usedTimes&&M(e),0===Object.keys(r).length&&d.delete(n)}i.remove(e)}(t),t.isVideoTexture&&h.delete(t)}function S(t){let n=t.target;n.removeEventListener("dispose",S),function(t){let n=i.get(t);if(t.depthTexture&&(t.depthTexture.dispose(),i.remove(t.depthTexture)),t.isWebGLCubeRenderTarget)for(let t=0;t<6;t++){if(Array.isArray(n.__webglFramebuffer[t]))for(let i=0;i<n.__webglFramebuffer[t].length;i++)e.deleteFramebuffer(n.__webglFramebuffer[t][i]);else e.deleteFramebuffer(n.__webglFramebuffer[t]);n.__webglDepthbuffer&&e.deleteRenderbuffer(n.__webglDepthbuffer[t])}else{if(Array.isArray(n.__webglFramebuffer))for(let t=0;t<n.__webglFramebuffer.length;t++)e.deleteFramebuffer(n.__webglFramebuffer[t]);else e.deleteFramebuffer(n.__webglFramebuffer);if(n.__webglDepthbuffer&&e.deleteRenderbuffer(n.__webglDepthbuffer),n.__webglMultisampledFramebuffer&&e.deleteFramebuffer(n.__webglMultisampledFramebuffer),n.__webglColorRenderbuffer)for(let t=0;t<n.__webglColorRenderbuffer.length;t++)n.__webglColorRenderbuffer[t]&&e.deleteRenderbuffer(n.__webglColorRenderbuffer[t]);n.__webglDepthRenderbuffer&&e.deleteRenderbuffer(n.__webglDepthRenderbuffer)}let r=t.textures;for(let t=0,n=r.length;t<n;t++){let n=i.get(r[t]);n.__webglTexture&&(e.deleteTexture(n.__webglTexture),s.memory.textures--),i.remove(r[t])}i.remove(t)}(n)}function M(t){let n=i.get(t);e.deleteTexture(n.__webglTexture);let r=t.source,a=d.get(r);delete a[n.__cacheKey],s.memory.textures--}let w=0;function T(t,r){var a;let o,l=i.get(t);if(t.isVideoTexture&&(a=t,o=s.render.frame,h.get(a)!==o&&(h.set(a,o),a.update())),!1===t.isRenderTargetTexture&&!0!==t.isExternalTexture&&t.version>0&&l.__version!==t.version){let e=t.image;if(null===e)Q("WebGLRenderer: Texture marked for update but no image data found.");else{if(!1!==e.complete)return void I(l,t,r);Q("WebGLRenderer: Texture marked for update but image is incomplete")}}else t.isExternalTexture&&(l.__webglTexture=t.sourceTexture?t.sourceTexture:null);n.bindTexture(e.TEXTURE_2D,l.__webglTexture,e.TEXTURE0+r)}let E={1e3:e.REPEAT,1001:e.CLAMP_TO_EDGE,1002:e.MIRRORED_REPEAT},C={1003:e.NEAREST,1004:e.NEAREST_MIPMAP_NEAREST,1005:e.NEAREST_MIPMAP_LINEAR,1006:e.LINEAR,1007:e.LINEAR_MIPMAP_NEAREST,1008:e.LINEAR_MIPMAP_LINEAR},A={512:e.NEVER,519:e.ALWAYS,513:e.LESS,515:e.LEQUAL,514:e.EQUAL,518:e.GEQUAL,516:e.GREATER,517:e.NOTEQUAL};function R(n,a){if((1015===a.type&&!1===t.has("OES_texture_float_linear")&&(1006===a.magFilter||1007===a.magFilter||1005===a.magFilter||1008===a.magFilter||1006===a.minFilter||1007===a.minFilter||1005===a.minFilter||1008===a.minFilter)&&Q("WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),e.texParameteri(n,e.TEXTURE_WRAP_S,E[a.wrapS]),e.texParameteri(n,e.TEXTURE_WRAP_T,E[a.wrapT]),(n===e.TEXTURE_3D||n===e.TEXTURE_2D_ARRAY)&&e.texParameteri(n,e.TEXTURE_WRAP_R,E[a.wrapR]),e.texParameteri(n,e.TEXTURE_MAG_FILTER,C[a.magFilter]),e.texParameteri(n,e.TEXTURE_MIN_FILTER,C[a.minFilter]),a.compareFunction&&(e.texParameteri(n,e.TEXTURE_COMPARE_MODE,e.COMPARE_REF_TO_TEXTURE),e.texParameteri(n,e.TEXTURE_COMPARE_FUNC,A[a.compareFunction])),!0===t.has("EXT_texture_filter_anisotropic"))&&1003!==a.magFilter&&(1005===a.minFilter||1008===a.minFilter)&&(1015!==a.type||!1!==t.has("OES_texture_float_linear"))&&(a.anisotropy>1||i.get(a).__currentAnisotropy)){let s=t.get("EXT_texture_filter_anisotropic");e.texParameterf(n,s.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(a.anisotropy,r.getMaxAnisotropy())),i.get(a).__currentAnisotropy=a.anisotropy}}function L(t,n){let i,r=!1;void 0===t.__webglInit&&(t.__webglInit=!0,n.addEventListener("dispose",b));let a=n.source,o=d.get(a);void 0===o&&(o={},d.set(a,o));let l=((i=[]).push(n.wrapS),i.push(n.wrapT),i.push(n.wrapR||0),i.push(n.magFilter),i.push(n.minFilter),i.push(n.anisotropy),i.push(n.internalFormat),i.push(n.format),i.push(n.type),i.push(n.generateMipmaps),i.push(n.premultiplyAlpha),i.push(n.flipY),i.push(n.unpackAlignment),i.push(n.colorSpace),i.join());if(l!==t.__cacheKey){void 0===o[l]&&(o[l]={texture:e.createTexture(),usedTimes:0},s.memory.textures++,r=!0),o[l].usedTimes++;let i=o[t.__cacheKey];void 0!==i&&(o[t.__cacheKey].usedTimes--,0===i.usedTimes&&M(n)),t.__cacheKey=l,t.__webglTexture=o[l].texture}return r}function P(e,t,n){return Math.floor(Math.floor(e/n)/t)}
362function I(t,s,o){let l=e.TEXTURE_2D;(s.isDataArrayTexture||s.isCompressedArrayTexture)&&(l=e.TEXTURE_2D_ARRAY),s.isData3DTexture&&(l=e.TEXTURE_3D);let u=L(t,s),c=s.source;n.bindTexture(l,t.__webglTexture,e.TEXTURE0+o);let h=i.get(c);if(c.version!==h.__version||!0===u){let t;n.activeTexture(e.TEXTURE0+o);let i=eM.getPrimaries(eM.workingColorSpace),d=""===s.colorSpace?null:eM.getPrimaries(s.colorSpace),p=""===s.colorSpace||i===d?e.NONE:e.BROWSER_DEFAULT_WEBGL;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,s.flipY),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,s.premultiplyAlpha),e.pixelStorei(e.UNPACK_ALIGNMENT,s.unpackAlignment),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,p);let f=m(s.image,!1,r.maxTextureSize);f=G(s,f);let b=a.convert(s.format,s.colorSpace),S=a.convert(s.type),M=x(s.internalFormat,b,S,s.colorSpace,s.isVideoTexture);R(l,s);let w=s.mipmaps,T=!0!==s.isVideoTexture,E=void 0===h.__version||!0===u,C=c.dataReady,A=_(s,f);if(s.isDepthTexture)M=y(1027===s.format,s.type),E&&(T?n.texStorage2D(e.TEXTURE_2D,1,M,f.width,f.height):n.texImage2D(e.TEXTURE_2D,0,M,f.width,f.height,0,b,S,null));else if(s.isDataTexture)if(w.length>0){T&&E&&n.texStorage2D(e.TEXTURE_2D,A,M,w[0].width,w[0].height);for(let i=0,r=w.length;i<r;i++)t=w[i],T?C&&n.texSubImage2D(e.TEXTURE_2D,i,0,0,t.width,t.height,b,S,t.data):n.texImage2D(e.TEXTURE_2D,i,M,t.width,t.height,0,b,S,t.data);s.generateMipmaps=!1}else T?(E&&n.texStorage2D(e.TEXTURE_2D,A,M,f.width,f.height),C&&function(t,i,r,a){let s=t.updateRanges;if(0===s.length)n.texSubImage2D(e.TEXTURE_2D,0,0,0,i.width,i.height,r,a,i.data);else{s.sort((e,t)=>e.start-t.start);let o=0;for(let e=1;e<s.length;e++){let t=s[o],n=s[e],r=t.start+t.count,a=P(n.start,i.width,4),l=P(t.start,i.width,4);n.start<=r+1&&a===l&&P(n.start+n.count-1,i.width,4)===a?t.count=Math.max(t.count,n.start+n.count-t.start):s[++o]=n}s.length=o+1;let l=e.getParameter(e.UNPACK_ROW_LENGTH),u=e.getParameter(e.UNPACK_SKIP_PIXELS),c=e.getParameter(e.UNPACK_SKIP_ROWS);e.pixelStorei(e.UNPACK_ROW_LENGTH,i.width);for(let t=0,o=s.length;t<o;t++){let o=s[t],l=Math.floor(o.start/4),u=Math.ceil(o.count/4),c=l%i.width,h=Math.floor(l/i.width);e.pixelStorei(e.UNPACK_SKIP_PIXELS,c),e.pixelStorei(e.UNPACK_SKIP_ROWS,h),n.texSubImage2D(e.TEXTURE_2D,0,c,h,u,1,r,a,i.data)}t.clearUpdateRanges(),e.pixelStorei(e.UNPACK_ROW_LENGTH,l),e.pixelStorei(e.UNPACK_SKIP_PIXELS,u),e.pixelStorei(e.UNPACK_SKIP_ROWS,c)}}(s,f,b,S)):n.texImage2D(e.TEXTURE_2D,0,M,f.width,f.height,0,b,S,f.data);else if(s.isCompressedTexture)if(s.isCompressedArrayTexture){T&&E&&n.texStorage3D(e.TEXTURE_2D_ARRAY,A,M,w[0].width,w[0].height,f.depth);for(let i=0,r=w.length;i<r;i++)if(t=w[i],1023!==s.format)if(null!==b)if(T){if(C)if(s.layerUpdates.size>0){let r=o9(t.width,t.height,s.format,s.type);for(let a of s.layerUpdates){let s=t.data.subarray(a*r/t.data.BYTES_PER_ELEMENT,(a+1)*r/t.data.BYTES_PER_ELEMENT);n.compressedTexSubImage3D(e.TEXTURE_2D_ARRAY,i,0,0,a,t.width,t.height,1,b,s)}s.clearLayerUpdates()}else n.compressedTexSubImage3D(e.TEXTURE_2D_ARRAY,i,0,0,0,t.width,t.height,f.depth,b,t.data)}else n.compressedTexImage3D(e.TEXTURE_2D_ARRAY,i,M,t.width,t.height,f.depth,0,t.data,0,0);else Q("WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else T?C&&n.texSubImage3D(e.TEXTURE_2D_ARRAY,i,0,0,0,t.width,t.height,f.depth,b,S,t.data):n.texImage3D(e.TEXTURE_2D_ARRAY,i,M,t.width,t.height,f.depth,0,b,S,t.data)}else{T&&E&&n.texStorage2D(e.TEXTURE_2D,A,M,w[0].width,w[0].height);for(let i=0,r=w.length;i<r;i++)t=w[i],1023!==s.format?null!==b?T?C&&n.compressedTexSubImage2D(e.TEXTURE_2D,i,0,0,t.width,t.height,b,t.data):n.compressedTexImage2D(e.TEXTURE_2D,i,M,t.width,t.height,0,t.data):Q("WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):T?C&&n.texSubImage2D(e.TEXTURE_2D,i,0,0,t.width,t.height,b,S,t.data):n.texImage2D(e.TEXTURE_2D,i,M,t.width,t.height,0,b,S,t.data)}else if(s.isDataArrayTexture)if(T){if(E&&n.texStorage3D(e.TEXTURE_2D_ARRAY,A,M,f.width,f.height,f.depth),C)if(s.layerUpdates.size>0){let t=o9(f.width,f.height,s.format,s.type);for(let i of s.layerUpdates){let r=f.data.subarray(i*t/f.data.BYTES_PER_ELEMENT,(i+1)
362*t/f.data.BYTES_PER_ELEMENT);n.texSubImage3D(e.TEXTURE_2D_ARRAY,0,0,0,i,f.width,f.height,1,b,S,r)}s.clearLayerUpdates()}else n.texSubImage3D(e.TEXTURE_2D_ARRAY,0,0,0,0,f.width,f.height,f.depth,b,S,f.data)}else n.texImage3D(e.TEXTURE_2D_ARRAY,0,M,f.width,f.height,f.depth,0,b,S,f.data);else if(s.isData3DTexture)T?(E&&n.texStorage3D(e.TEXTURE_3D,A,M,f.width,f.height,f.depth),C&&n.texSubImage3D(e.TEXTURE_3D,0,0,0,0,f.width,f.height,f.depth,b,S,f.data)):n.texImage3D(e.TEXTURE_3D,0,M,f.width,f.height,f.depth,0,b,S,f.data);else if(s.isFramebufferTexture){if(E)if(T)n.texStorage2D(e.TEXTURE_2D,A,M,f.width,f.height);else{let t=f.width,i=f.height;for(let r=0;r<A;r++)n.texImage2D(e.TEXTURE_2D,r,M,t,i,0,b,S,null),t>>=1,i>>=1}}else if(w.length>0){if(T&&E){let t=W(w[0]);n.texStorage2D(e.TEXTURE_2D,A,M,t.width,t.height)}for(let i=0,r=w.length;i<r;i++)t=w[i],T?C&&n.texSubImage2D(e.TEXTURE_2D,i,0,0,b,S,t):n.texImage2D(e.TEXTURE_2D,i,M,b,S,t);s.generateMipmaps=!1}else if(T){if(E){let t=W(f);n.texStorage2D(e.TEXTURE_2D,A,M,t.width,t.height)}C&&n.texSubImage2D(e.TEXTURE_2D,0,0,0,b,S,f)}else n.texImage2D(e.TEXTURE_2D,0,M,b,S,f);g(s)&&v(l),h.__version=c.version,s.onUpdate&&s.onUpdate(s)}t.__version=s.version}function N(t,r,s,o,u,c){let h=a.convert(s.format,s.colorSpace),d=a.convert(s.type),p=x(s.internalFormat,h,d,s.colorSpace),f=i.get(r),m=i.get(s);if(m.__renderTarget=r,!f.__hasExternalTextures){let t=Math.max(1,r.width>>c),i=Math.max(1,r.height>>c);u===e.TEXTURE_3D||u===e.TEXTURE_2D_ARRAY?n.texImage3D(u,c,p,t,i,r.depth,0,h,d,null):n.texImage2D(u,c,p,t,i,0,h,d,null)}n.bindFramebuffer(e.FRAMEBUFFER,t),j(r)?l.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,o,u,m.__webglTexture,0,H(r)):(u===e.TEXTURE_2D||u>=e.TEXTURE_CUBE_MAP_POSITIVE_X&&u<=e.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&e.framebufferTexture2D(e.FRAMEBUFFER,o,u,m.__webglTexture,c),n.bindFramebuffer(e.FRAMEBUFFER,null)}function D(t,n,i){if(e.bindRenderbuffer(e.RENDERBUFFER,t),n.depthBuffer){let r=n.depthTexture,a=r&&r.isDepthTexture?r.type:null,s=y(n.stencilBuffer,a),o=n.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT;j(n)?l.renderbufferStorageMultisampleEXT(e.RENDERBUFFER,H(n),s,n.width,n.height):i?e.renderbufferStorageMultisample(e.RENDERBUFFER,H(n),s,n.width,n.height):e.renderbufferStorage(e.RENDERBUFFER,s,n.width,n.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,o,e.RENDERBUFFER,t)}else{let t=n.textures;for(let r=0;r<t.length;r++){let s=t[r],o=a.convert(s.format,s.colorSpace),u=a.convert(s.type),c=x(s.internalFormat,o,u,s.colorSpace);j(n)?l.renderbufferStorageMultisampleEXT(e.RENDERBUFFER,H(n),c,n.width,n.height):i?e.renderbufferStorageMultisample(e.RENDERBUFFER,H(n),c,n.width,n.height):e.renderbufferStorage(e.RENDERBUFFER,c,n.width,n.height)}}e.bindRenderbuffer(e.RENDERBUFFER,null)}function k(t,r,s){let o=!0===r.isWebGLCubeRenderTarget;if(n.bindFramebuffer(e.FRAMEBUFFER,t),!(r.depthTexture&&r.depthTexture.isDepthTexture))throw Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");let u=i.get(r.depthTexture);if(u.__renderTarget=r,u.__webglTexture&&r.depthTexture.image.width===r.width&&r.depthTexture.image.height===r.height||(r.depthTexture.image.width=r.width,r.depthTexture.image.height=r.height,r.depthTexture.needsUpdate=!0),o){if(void 0===u.__webglInit&&(u.__webglInit=!0,r.depthTexture.addEventListener("dispose",b)),void 0===u.__webglTexture){let t;u.__webglTexture=e.createTexture(),n.bindTexture(e.TEXTURE_CUBE_MAP,u.__webglTexture),R(e.TEXTURE_CUBE_MAP,r.depthTexture);let i=a.convert(r.depthTexture.format),s=a.convert(r.depthTexture.type);1026===r.depthTexture.format?t=e.DEPTH_COMPONENT24:1027===r.depthTexture.format&&(t=e.DEPTH24_STENCIL8);for(let n=0;n<6;n++)e.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+n,0,t,r.width,r.height,0,i,s,null)}}else T(r.depthTexture,0);let c=u.__webglTexture,h=H(r),d=o?e.TEXTURE_CUBE_MAP_POSITIVE_X+s:e.TEXTURE_2D,p=1027===r.depthTexture.format?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT;if(1026===r.depthTexture.format)j(r)?l.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,p,d,c,0,h):e.framebufferTexture2D(e.FRAMEBUFFER,p,d,c,0);else if(1027===r.depthTexture.format)j(r)?l.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,p,d,c,0,h):e.framebufferTexture2D(e.FRAMEBUFFER,p,d,c,0);else throw Error("Unknown depthTexture format")}
362function z(t){let r=i.get(t),a=!0===t.isWebGLCubeRenderTarget;if(r.__boundDepthTexture!==t.depthTexture){let e=t.depthTexture;if(r.__depthDisposeCallback&&r.__depthDisposeCallback(),e){let t=()=>{delete r.__boundDepthTexture,delete r.__depthDisposeCallback,e.removeEventListener("dispose",t)};e.addEventListener("dispose",t),r.__depthDisposeCallback=t}r.__boundDepthTexture=e}if(t.depthTexture&&!r.__autoAllocateDepthBuffer)if(a)for(let e=0;e<6;e++)k(r.__webglFramebuffer[e],t,e);else{let e=t.texture.mipmaps;e&&e.length>0?k(r.__webglFramebuffer[0],t,0):k(r.__webglFramebuffer,t,0)}else if(a){r.__webglDepthbuffer=[];for(let i=0;i<6;i++)if(n.bindFramebuffer(e.FRAMEBUFFER,r.__webglFramebuffer[i]),void 0===r.__webglDepthbuffer[i])r.__webglDepthbuffer[i]=e.createRenderbuffer(),D(r.__webglDepthbuffer[i],t,!1);else{let n=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,a=r.__webglDepthbuffer[i];e.bindRenderbuffer(e.RENDERBUFFER,a),e.framebufferRenderbuffer(e.FRAMEBUFFER,n,e.RENDERBUFFER,a)}}else{let i=t.texture.mipmaps;if(i&&i.length>0?n.bindFramebuffer(e.FRAMEBUFFER,r.__webglFramebuffer[0]):n.bindFramebuffer(e.FRAMEBUFFER,r.__webglFramebuffer),void 0===r.__webglDepthbuffer)r.__webglDepthbuffer=e.createRenderbuffer(),D(r.__webglDepthbuffer,t,!1);else{let n=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,i=r.__webglDepthbuffer;e.bindRenderbuffer(e.RENDERBUFFER,i),e.framebufferRenderbuffer(e.FRAMEBUFFER,n,e.RENDERBUFFER,i)}}n.bindFramebuffer(e.FRAMEBUFFER,null)}let B=[],V=[];function H(e){return Math.min(r.maxSamples,e.samples)}function j(e){let n=i.get(e);return e.samples>0&&!0===t.has("WEBGL_multisampled_render_to_texture")&&!1!==n.__useRenderToTexture}function G(e,t){let n=e.colorSpace,i=e.format,r=e.type;return!0===e.isCompressedTexture||!0===e.isVideoTexture||n!==U&&""!==n&&(eM.getTransfer(n)===O?(1023!==i||1009!==r)&&Q("WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):ee("WebGLTextures: Unsupported texture color space:",n)),t}function W(e){return"u">typeof HTMLImageElement&&e instanceof HTMLImageElement?(c.width=e.naturalWidth||e.width,c.height=e.naturalHeight||e.height):"u">typeof VideoFrame&&e instanceof VideoFrame?(c.width=e.displayWidth,c.height=e.displayHeight):(c.width=e.width,c.height=e.height),c}this.allocateTextureUnit=function(){let e=w;return e>=r.maxTextures&&Q("WebGLTextures: Trying to use "+e+" texture units while this GPU supports only "+r.maxTextures),w+=1,e},this.resetTextureUnits=function(){w=0},this.setTexture2D=T,this.setTexture2DArray=function(t,r){let a=i.get(t);!1===t.isRenderTargetTexture&&t.version>0&&a.__version!==t.version?I(a,t,r):(t.isExternalTexture&&(a.__webglTexture=t.sourceTexture?t.sourceTexture:null),n.bindTexture(e.TEXTURE_2D_ARRAY,a.__webglTexture,e.TEXTURE0+r))},this.setTexture3D=function(t,r){let a=i.get(t);!1===t.isRenderTargetTexture&&t.version>0&&a.__version!==t.version?I(a,t,r):n.bindTexture(e.TEXTURE_3D,a.__webglTexture,e.TEXTURE0+r)},this.setTextureCube=function(t,s){let o=i.get(t);!0!==t.isCubeDepthTexture&&t.version>0&&o.__version!==t.version?function(t,s,o){if(6!==s.image.length)return;let l=L(t,s),u=s.source;n.bindTexture(e.TEXTURE_CUBE_MAP,t.__webglTexture,e.TEXTURE0+o);let c=i.get(u);if(u.version!==c.__version||!0===l){let t;n.activeTexture(e.TEXTURE0+o);let i=eM.getPrimaries(eM.workingColorSpace),h=""===s.colorSpace?null:eM.getPrimaries(s.colorSpace),d=""===s.colorSpace||i===h?e.NONE:e.BROWSER_DEFAULT_WEBGL;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,s.flipY),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,s.premultiplyAlpha),e.pixelStorei(e.UNPACK_ALIGNMENT,s.unpackAlignment),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,d);let p=s.isCompressedTexture||s.image[0].isCompressedTexture,f=s.image[0]&&s.image[0].isDataTexture,y=[];for(let e=0;e<6;e++)p||f?y[e]=f?s.image[e].image:s.image[e]:y[e]=m(s.image[e],!0,r.maxCubemapSize),y[e]=G(s,y[e]);let b=y[0],S=a.convert(s.format,s.colorSpace),M=a.convert(s.type),w=x(s.internalFormat,S,M,s.colorSpace),T=!0!==s.isVideoTexture,E=void 0===c.__version||!0===l,C=u.dataReady,A=_(s,b);if(R(e.TEXTURE_CUBE_MAP,s),p){T&&E&&n.texStorage2D(e.TEXTURE_CUBE_MAP,A,w,b.width,b.height);for(let i=0;i<6;i++){t=y[i].mipmaps;for(let r=0;r<t.length;r++){let a=t[r];1023!==s.format?null!==S?T?C&&n.compressedTexSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+i,r,0,0,a.width,a.height,S,a.data):n.compressedTexImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+i,r,w,a.width,a.height,0,a.data):Q("WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):T?C&&n.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+i,r,0,0,a.width,a.height,S,M,a.data):n.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+i,r,w,a.width,a.height,0,S,M,a.data)}}}else{if(t=s.mipmaps,T&&E){t.length>0&&A++;let i=W(y[0]);n.texStorage2D(e.TEXTURE_CUBE_MAP,A,w,i.width,i.height)}for(let i=0;i<6;i++)if(f){T?C&&n.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+i,0,0,0,y[i].width,y[i].height,S,M,y[i].data):n.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+i,0,w,y[i].width,y[i].height,0,S,M,y[i].data);for(let r=0;r<t.length;r++){let a=t[r].image[i].image;T?C&&n.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+i,r+1,0,0,a.width,a.height,S,M,a.data):n.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+i,r+1,w,a.width,a.height,0,S,M,a.data)}}else{T?C&&n.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+i,0,0,0,S,M,y[i]):n.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+i,0,w,S,M,y[i]);for(let r=0;r<t.length;r++){let a=t[r];T?C&&n.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+i,r+1,0,0,S,M,a.image[i]):n.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+i,r+1,w,S,M,a.image[i])}}}
vendor: 4,517 bytes, line 362
362g(s)&&v(e.TEXTURE_CUBE_MAP),c.__version=u.version,s.onUpdate&&s.onUpdate(s)}t.__version=s.version}(o,t,s):n.bindTexture(e.TEXTURE_CUBE_MAP,o.__webglTexture,e.TEXTURE0+s)},this.rebindTextures=function(t,n,r){let a=i.get(t);void 0!==n&&N(a.__webglFramebuffer,t,t.texture,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,0),void 0!==r&&z(t)},this.setupRenderTarget=function(t){let r=t.texture,o=i.get(t),l=i.get(r);t.addEventListener("dispose",S);let u=t.textures,c=!0===t.isWebGLCubeRenderTarget,h=u.length>1;if(!h&&(void 0===l.__webglTexture&&(l.__webglTexture=e.createTexture()),l.__version=r.version,s.memory.textures++),c){o.__webglFramebuffer=[];for(let t=0;t<6;t++)if(r.mipmaps&&r.mipmaps.length>0){o.__webglFramebuffer[t]=[];for(let n=0;n<r.mipmaps.length;n++)o.__webglFramebuffer[t][n]=e.createFramebuffer()}else o.__webglFramebuffer[t]=e.createFramebuffer()}else{if(r.mipmaps&&r.mipmaps.length>0){o.__webglFramebuffer=[];for(let t=0;t<r.mipmaps.length;t++)o.__webglFramebuffer[t]=e.createFramebuffer()}else o.__webglFramebuffer=e.createFramebuffer();if(h)for(let t=0,n=u.length;t<n;t++){let n=i.get(u[t]);void 0===n.__webglTexture&&(n.__webglTexture=e.createTexture(),s.memory.textures++)}if(t.samples>0&&!1===j(t)){o.__webglMultisampledFramebuffer=e.createFramebuffer(),o.__webglColorRenderbuffer=[],n.bindFramebuffer(e.FRAMEBUFFER,o.__webglMultisampledFramebuffer);for(let n=0;n<u.length;n++){let i=u[n];o.__webglColorRenderbuffer[n]=e.createRenderbuffer(),e.bindRenderbuffer(e.RENDERBUFFER,o.__webglColorRenderbuffer[n]);let r=a.convert(i.format,i.colorSpace),s=a.convert(i.type),l=x(i.internalFormat,r,s,i.colorSpace,!0===t.isXRRenderTarget),c=H(t);e.renderbufferStorageMultisample(e.RENDERBUFFER,c,l,t.width,t.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0+n,e.RENDERBUFFER,o.__webglColorRenderbuffer[n])}e.bindRenderbuffer(e.RENDERBUFFER,null),t.depthBuffer&&(o.__webglDepthRenderbuffer=e.createRenderbuffer(),D(o.__webglDepthRenderbuffer,t,!0)),n.bindFramebuffer(e.FRAMEBUFFER,null)}}if(c){n.bindTexture(e.TEXTURE_CUBE_MAP,l.__webglTexture),R(e.TEXTURE_CUBE_MAP,r);for(let n=0;n<6;n++)if(r.mipmaps&&r.mipmaps.length>0)for(let i=0;i<r.mipmaps.length;i++)N(o.__webglFramebuffer[n][i],t,r,e.COLOR_ATTACHMENT0,e.TEXTURE_CUBE_MAP_POSITIVE_X+n,i);else N(o.__webglFramebuffer[n],t,r,e.COLOR_ATTACHMENT0,e.TEXTURE_CUBE_MAP_POSITIVE_X+n,0);g(r)&&v(e.TEXTURE_CUBE_MAP),n.unbindTexture()}else if(h){for(let r=0,a=u.length;r<a;r++){let a=u[r],s=i.get(a),l=e.TEXTURE_2D;(t.isWebGL3DRenderTarget||t.isWebGLArrayRenderTarget)&&(l=t.isWebGL3DRenderTarget?e.TEXTURE_3D:e.TEXTURE_2D_ARRAY),n.bindTexture(l,s.__webglTexture),R(l,a),N(o.__webglFramebuffer,t,a,e.COLOR_ATTACHMENT0+r,l,0),g(a)&&v(l)}n.unbindTexture()}else{let i=e.TEXTURE_2D;if((t.isWebGL3DRenderTarget||t.isWebGLArrayRenderTarget)&&(i=t.isWebGL3DRenderTarget?e.TEXTURE_3D:e.TEXTURE_2D_ARRAY),n.bindTexture(i,l.__webglTexture),R(i,r),r.mipmaps&&r.mipmaps.length>0)for(let n=0;n<r.mipmaps.length;n++)N(o.__webglFramebuffer[n],t,r,e.COLOR_ATTACHMENT0,i,n);else N(o.__webglFramebuffer,t,r,e.COLOR_ATTACHMENT0,i,0);g(r)&&v(i),n.unbindTexture()}t.depthBuffer&&z(t)},this.updateRenderTargetMipmap=function(t){let r=t.textures;for(let a=0,s=r.length;a<s;a++){let s=r[a];if(g(s)){let r=t.isWebGLCubeRenderTarget?e.TEXTURE_CUBE_MAP:t.isWebGL3DRenderTarget?e.TEXTURE_3D:t.isWebGLArrayRenderTarget||t.isCompressedArrayTexture?e.TEXTURE_2D_ARRAY:e.TEXTURE_2D,a=i.get(s).__webglTexture;n.bindTexture(r,a),v(r),n.unbindTexture()}}},this.updateMultisampleRenderTarget=function(t){if(t.samples>0){if(!1===j(t)){let r=t.textures,a=t.width,s=t.height,o=e.COLOR_BUFFER_BIT,l=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,c=i.get(t),h=r.length>1;if(h)for(let t=0;t<r.length;t++)n.bindFramebuffer(e.FRAMEBUFFER,c.__webglMultisampledFramebuffer),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0+t,e.RENDERBUFFER,null),n.bindFramebuffer(e.FRAMEBUFFER,c.__webglFramebuffer),e.framebufferTexture2D(e.DRAW_FRAMEBUFFER,e.COLOR_ATTACHMENT0+t,e.TEXTURE_2D,null,0);n.bindFramebuffer(e.READ_FRAMEBUFFER,c.__webglMultisampledFramebuffer);let d=t.texture.mipmaps;d&&d.length>0?n.bindFramebuffer(e.DRAW_FRAMEBUFFER,c.__webglFramebuffer[0]):n.bindFramebuffer(e.DRAW_FRAMEBUFFER,c.__webglFramebuffer);for(let n=0;n<r.length;n++){if(t.resolveDepthBuffer&&(t.depthBuffer&&(o|=e.DEPTH_BUFFER_BIT),t.stencilBuffer&&t.resolveStencilBuffer&&(o|=e.STENCIL_BUFFER_BIT)),h){e.framebufferRenderbuffer(e.READ_FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.RENDERBUFFER,c.__webglColorRen
362derbuffer[n]);let t=i.get(r[n]).__webglTexture;e.framebufferTexture2D(e.DRAW_FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0)}e.blitFramebuffer(0,0,a,s,0,0,a,s,o,e.NEAREST),!0===u&&(B.length=0,V.length=0,B.push(e.COLOR_ATTACHMENT0+n),t.depthBuffer&&!1===t.resolveDepthBuffer&&(B.push(l),V.push(l),e.invalidateFramebuffer(e.DRAW_FRAMEBUFFER,V)),e.invalidateFramebuffer(e.READ_FRAMEBUFFER,B))}if(n.bindFramebuffer(e.READ_FRAMEBUFFER,null),n.bindFramebuffer(e.DRAW_FRAMEBUFFER,null),h)for(let t=0;t<r.length;t++){n.bindFramebuffer(e.FRAMEBUFFER,c.__webglMultisampledFramebuffer),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0+t,e.RENDERBUFFER,c.__webglColorRenderbuffer[t]);let a=i.get(r[t]).__webglTexture;n.bindFramebuffer(e.FRAMEBUFFER,c.__webglFramebuffer),e.framebufferTexture2D(e.DRAW_FRAMEBUFFER,e.COLOR_ATTACHMENT0+t,e.TEXTURE_2D,a,0)}n.bindFramebuffer(e.DRAW_FRAMEBUFFER,c.__webglMultisampledFramebuffer)}else if(t.depthBuffer&&!1===t.resolveDepthBuffer&&u){let n=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT;e.invalidateFramebuffer(e.DRAW_FRAMEBUFFER,[n])}}},this.setupDepthRenderbuffer=z,this.setupFrameBufferTexture=N,this.useMultisampledRTT=j,this.isReversedDepthBuffer=function(){return n.buffers.depth.getReversed()}}function cf(e,t){return{convert:function(n,i=""){let r,a=eM.getTransfer(i);if(1009===n)return e.UNSIGNED_BYTE;if(1017===n)return e.UNSIGNED_SHORT_4_4_4_4;if(1018===n)return e.UNSIGNED_SHORT_5_5_5_1;if(35902===n)return e.UNSIGNED_INT_5_9_9_9_REV;if(35899===n)return e.UNSIGNED_INT_10F_11F_11F_REV;if(1010===n)return e.BYTE;if(1011===n)return e.SHORT;if(1012===n)return e.UNSIGNED_SHORT;if(1013===n)return e.INT;if(1014===n)return e.UNSIGNED_INT;if(1015===n)return e.FLOAT;if(1016===n)return e.HALF_FLOAT;if(1021===n)return e.ALPHA;if(1022===n)return e.RGB;if(1023===n)return e.RGBA;if(1026===n)return e.DEPTH_COMPONENT;if(1027===n)return e.DEPTH_STENCIL;if(1028===n)return e.RED;if(1029===n)return e.RED_INTEGER;if(1030===n)return e.RG;if(1031===n)return e.RG_INTEGER;if(1033===n)return e.RGBA_INTEGER;if(33776===n||33777===n||33778===n||33779===n)if(a===O){if(null===(r=t.get("WEBGL_compressed_texture_s3tc_srgb")))return null;if(33776===n)return r.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(33777===n)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(33778===n)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(33779===n)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else{if(null===(r=t.get("WEBGL_compressed_texture_s3tc")))return null;if(33776===n)return r.COMPRESSED_RGB_S3TC_DXT1_EXT;if(33777===n)return r.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(33778===n)return r.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(33779===n)return r.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(35840===n||35841===n||35842===n||35843===n){if(null===(r=t.get("WEBGL_compressed_texture_pvrtc")))return null;if(35840===n)return r.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(35841===n)return r.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(35842===n)return r.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(35843===n)return r.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(36196===n||37492===n||37496===n||37488===n||37489===n||37490===n||37491===n){if(null===(r=t.get("WEBGL_compressed_texture_etc")))return null;if(36196===n||37492===n)return a===O?r.COMPRESSED_SRGB8_ETC2:r.COMPRESSED_RGB8_ETC2;if(37496===n)return a===O?r.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:r.COMPRESSED_RGBA8_ETC2_EAC;if(37488===n)return r.COMPRESSED_R11_EAC;if(37489===n)return r.COMPRESSED_SIGNED_R11_EAC;if(37490===n)return r.COMPRESSED_RG11_EAC;if(37491===n)return r.COMPRESSED_SIGNED_RG11_EAC}if(37808===n||37809===n||37810===n||37811===n||37812===n||37813===n||37814===n||37815===n||37816===n||37817===n||37818===n||37819===n||37820===n||37821===n){if(null===(r=t.get("WEBGL_compressed_texture_astc")))return null;if(37808===n)return a===O?r.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:r.COMPRESSED_RGBA_ASTC_4x4_KHR;if(37809===n)return a===O?r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:r.COMPRESSED_RGBA_ASTC_5x4_KHR;if(37810===n)return a===O?r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:r.COMPRESSED_RGBA_ASTC_5x5_KHR;if(37811===n)return a===O?r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:r.COMPRESSED_RGBA_ASTC_6x5_KHR;if(37812===n)return a===O?r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:r.COMPRESSED_RGBA_ASTC_6x6_KHR;if(37813===n)return a===O?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:r.COMPRESSED_RGBA_ASTC_8x5_KHR;if(37814===n)return a===O?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:r.COMPRESSED_RGBA_ASTC_8x6_KHR;if(37815===n)return a===O?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:r.COMPRESSED_RGBA_ASTC_8x8_KHR;if(37816===n)return a===O?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:r.COMPRESSED_RGBA_ASTC_10x5_KHR;if(37817===n)return a===O?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:r.COMPRESSED_RGBA_ASTC_10x6_KHR;if(37818===n)return a===O?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:r.COMPRESSED_RGBA_ASTC_10x8_KHR;if(37819===n)return a===O?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:r.COMPRESSED_RGBA_ASTC_10x10_KHR;if(37820===n)return a===O?r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:r.COMPRESSED_RGBA_ASTC_12x10_KHR;if(37821===n)return a===O?r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:r.COMPRESSED_RGBA_ASTC_12x12_KHR}if(36492===n||36494===n||36495===n){if(null===(r=t.get("EXT_texture_compression_bptc")))return null;if(36492===n)return a===O?r.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:r.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(36494===n)return r.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(36495===n)return r.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}if(36283===n||36284===n||36285===n||36286===n){if(null===(r=t.get("EXT_texture_compression_rgtc")))return null;
362if(36283===n)return r.COMPRESSED_RED_RGTC1_EXT;if(36284===n)return r.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(36285===n)return r.COMPRESSED_RED_GREEN_RGTC2_EXT;if(36286===n)return r.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}return 1020===n?e.UNSIGNED_INT_24_8:void 0!==e[n]?e[n]:null}}}let cm=` 363void main() { 364 365 gl_Position = vec4( position, 1.0 ); 366 367}`,cg=` 368uniform sampler2DArray depthColor; 369uniform float depthWidth; 370uniform float depthHeight; 371 372void main() { 373 374 vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight ); 375 376 if ( coord.x >= 1.0 ) { 377 378 gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r; 379 380 } else { 381 382 gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r; 383 384 } 385 386}`;class cv{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t){if(null===this.texture){let n=new rT(e.texture);(e.depthNear!==t.depthNear||e.depthFar!==t.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=n}}getMesh(e){if(null!==this.texture&&null===this.mesh){let t=e.cameras[0].viewport,n=new nN({vertexShader:cm,fragmentShader:cg,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new nE(new ab(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class cx extends en{constructor(e,t){super();const n=this;let i=null,r=1,a=null,s="local-floor",o=1,l=null,u=null,c=null,h=null,d=null,p=null;const f="u">typeof XRWebGLBinding,m=new cv,g={},v=t.getContextAttributes();let x=null,y=null;const _=[],b=[],S=new ef;let M=null;const w=new nk;w.viewport=new eN;const T=new nk;T.viewport=new eN;const E=[w,T],C=new sW;let A=null,R=null;function L(e){let t=b.indexOf(e.inputSource);if(-1===t)return;let n=_[t];void 0!==n&&(n.update(e.inputSource,e.frame,l||a),n.dispatchEvent({type:e.type,data:e.inputSource}))}function P(){i.removeEventListener("select",L),i.removeEventListener("selectstart",L),i.removeEventListener("selectend",L),i.removeEventListener("squeeze",L),i.removeEventListener("squeezestart",L),i.removeEventListener("squeezeend",L),i.removeEventListener("end",P),i.removeEventListener("inputsourceschange",I);for(let e=0;e<_.length;e++){let t=b[e];null!==t&&(b[e]=null,_[e].disconnect(t))}for(let e in A=null,R=null,m.reset(),g)delete g[e];e.setRenderTarget(x),d=null,h=null,c=null,i=null,y=null,O.stop(),n.isPresenting=!1,e.setPixelRatio(M),e.setSize(S.width,S.height,!1),n.dispatchEvent({type:"sessionend"})}function I(e){for(let t=0;t<e.removed.length;t++){let n=e.removed[t],i=b.indexOf(n);i>=0&&(b[i]=null,_[i].disconnect(n))}for(let t=0;t<e.added.length;t++){let n=e.added[t],i=b.indexOf(n);if(-1===i){for(let e=0;e<_.length;e++)if(e>=b.length){b.push(n),i=e;break}else if(null===b[e]){b[e]=n,i=e;break}if(-1===i)break}let r=_[i];r&&r.connect(n)}}this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(e){let t=_[e];return void 0===t&&(t=new nG,_[e]=t),t.getTargetRaySpace()},this.getControllerGrip=function(e){let t=_[e];return void 0===t&&(t=new nG,_[e]=t),t.getGripSpace()},this.getHand=function(e){let t=_[e];return void 0===t&&(t=new nG,_[e]=t),t.getHandSpace()},this.setFramebufferScaleFactor=function(e){r=e,!0===n.isPresenting&&Q("WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(e){s=e,!0===n.isPresenting&&Q("WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||a},this.setReferenceSpace=function(e){l=e},this.getBaseLayer=function(){return null!==h?h:d},this.getBinding=function(){return null===c&&f&&(c=new XRWebGLBinding(i,t)),c},this.getFrame=function(){return p},this.getSession=function(){return i},this.setSession=async function(u){if(null!==(i=u)){if(x=e.getRenderTarget(),i.addEventListener("select",L),i.addEventListener("selectstart",L),i.addEventListener("selectend",L),i.addEventListener("squeeze",L),i.addEventListener("squeezestart",L),i.addEventListener("squeezeend",L),i.addEventListener("end",P),i.addEventListener("inputsourceschange",I),!0!==v.xrC
386ompatible&&await t.makeXRCompatible(),M=e.getPixelRatio(),e.getSize(S),f&&"createProjectionLayer"in XRWebGLBinding.prototype){let n=null,a=null,s=null;v.depth&&(s=v.stencil?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT24,n=v.stencil?1027:1026,a=v.stencil?1020:1014);let o={colorFormat:t.RGBA8,depthFormat:s,scaleFactor:r};h=(c=this.getBinding()).createProjectionLayer(o),i.updateRenderState({layers:[h]}),e.setPixelRatio(1),e.setSize(h.textureWidth,h.textureHeight,!1),y=new eU(h.textureWidth,h.textureHeight,{format:1023,type:1009,depthTexture:new rM(h.textureWidth,h.textureHeight,a,void 0,void 0,void 0,void 0,void 0,void 0,n),stencilBuffer:v.stencil,colorSpace:e.outputColorSpace,samples:4*!!v.antialias,resolveDepthBuffer:!1===h.ignoreDepthValues,resolveStencilBuffer:!1===h.ignoreDepthValues})}else{let n={antialias:v.antialias,alpha:!0,depth:v.depth,stencil:v.stencil,framebufferScaleFactor:r};d=new XRWebGLLayer(i,t,n),i.updateRenderState({baseLayer:d}),e.setPixelRatio(1),e.setSize(d.framebufferWidth,d.framebufferHeight,!1),y=new eU(d.framebufferWidth,d.framebufferHeight,{format:1023,type:1009,colorSpace:e.outputColorSpace,stencilBuffer:v.stencil,resolveDepthBuffer:!1===d.ignoreDepthValues,resolveStencilBuffer:!1===d.ignoreDepthValues})}y.isXRRenderTarget=!0,this.setFoveation(o),l=null,a=await i.requestReferenceSpace(s),O.setContext(i),O.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(null!==i)return i.environmentBlendMode},this.getDepthTexture=function(){return m.getDepthTexture()};const N=new eg,D=new eg;function U(e,t){null===t?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}this.updateCamera=function(e){var t,n,r;if(null===i)return;let a=e.near,s=e.far;null!==m.texture&&(m.depthNear>0&&(a=m.depthNear),m.depthFar>0&&(s=m.depthFar)),C.near=T.near=w.near=a,C.far=T.far=w.far=s,(A!==C.near||R!==C.far)&&(i.updateRenderState({depthNear:C.near,depthFar:C.far}),A=C.near,R=C.far),C.layers.mask=6|e.layers.mask,w.layers.mask=3&C.layers.mask,T.layers.mask=5&C.layers.mask;let o=e.parent,l=C.cameras;U(C,o);for(let e=0;e<l.length;e++)U(l[e],o);2===l.length?function(e,t,n){N.setFromMatrixPosition(t.matrixWorld),D.setFromMatrixPosition(n.matrixWorld);let i=N.distanceTo(D),r=t.projectionMatrix.elements,a=n.projectionMatrix.elements,s=r[14]/(r[10]-1),o=r[14]/(r[10]+1),l=(r[9]+1)/r[5],u=(r[9]-1)/r[5],c=(r[8]-1)/r[0],h=(a[8]+1)/a[0],d=i/(-c+h),p=-(d*c);if(t.matrixWorld.decompose(e.position,e.quaternion,e.scale),e.translateX(p),e.translateZ(d),e.matrixWorld.compose(e.position,e.quaternion,e.scale),e.matrixWorldInverse.copy(e.matrixWorld).invert(),-1===r[10])e.projectionMatrix.copy(t.projectionMatrix),e.projectionMatrixInverse.copy(t.projectionMatrixInverse);else{let t=s+d,n=o+d;e.projectionMatrix.makePerspective(s*c-p,s*h+(i-p),l*o/n*t,u*o/n*t,t,n),e.projectionMatrixInverse.copy(e.projectionMatrix).invert()}}(C,w,T):C.projectionMatrix.copy(w.projectionMatrix),t=e,n=C,null===(r=o)?t.matrix.copy(n.matrixWorld):(t.matrix.copy(r.matrixWorld),t.matrix.invert(),t.matrix.multiply(n.matrixWorld)),t.matrix.decompose(t.position,t.quaternion,t.scale),t.updateMatrixWorld(!0),t.projectionMatrix.copy(n.projectionMatrix),t.projectionMatrixInverse.copy(n.projectionMatrixInverse),t.isPerspectiveCamera&&(t.fov=2*es*Math.atan(1/t.projectionMatrix.elements[5]),t.zoom=1)},this.getCamera=function(){return C},this.getFoveation=function(){if(null!==h||null!==d)return o},this.setFoveation=function(e){o=e,null!==h&&(h.fixedFoveation=e),null!==d&&void 0!==d.fixedFoveation&&(d.fixedFoveation=e)},this.hasDepthSensing=function(){return null!==m.texture},this.getDepthSensingMesh=function(){return m.getMesh(C)},this.getCameraTexture=function(e){return g[e]};let F=null;const O=new lt;O.setAnimationLoop(function(t,r){if(u=r.getViewerPose(l||a),p=r,null!==u){let t=u.views;null!==d&&(e.setRenderTargetFramebuffer(y,d.framebuffer),e.setRenderTarget(y));let r=!1;t.length!==C.cameras.length&&(C.cameras.length=0,r=!0);for(let n=0;n<t.length;n++){let i=t[n],a=null;if(null!==d)a=d.getViewport(i);else{let t=c.getViewSubImage(h,i);a=t.viewport,0===n&&(e.setRenderTargetTextures(y,t.colorTexture,t.depthStencilTexture),e.setRenderTarget(y))}let s=E[n];void 0===s&&((s=new nk).layers.enable(n),s.viewport=new eN,E[n]=s),s.matrix.fromArray(i.transform.matrix),s.matrix.decompose(s.position,s.quaternion,s.scale),s.projectionMatrix.fromArray(i.projectionMatrix),s.projectionMatrixInverse.copy(s.projectionMatrix).invert(),s.viewport.set(a.x,a.y,a.width,a.height),0===n&&(C.matrix.copy(s.matrix
386),C.matrix.decompose(C.position,C.quaternion,C.scale)),!0===r&&C.cameras.push(s)}let a=i.enabledFeatures;if(a&&a.includes("depth-sensing")&&"gpu-optimized"==i.depthUsage&&f){let e=(c=n.getBinding()).getDepthInformation(t[0]);e&&e.isValid&&e.texture&&m.init(e,i.renderState)}if(a&&a.includes("camera-access")&&f){e.state.unbindTexture(),c=n.getBinding();for(let e=0;e<t.length;e++){let n=t[e].camera;if(n){let e=g[n];e||(e=new rT,g[n]=e);let t=c.getCameraImage(n);e.sourceTexture=t}}}}for(let e=0;e<_.length;e++){let t=b[e],n=_[e];null!==t&&void 0!==n&&n.update(t,r,l||a)}F&&F(t,r),r.detectedPlanes&&n.dispatchEvent({type:"planesdetected",data:r}),p=null}),this.setAnimationLoop=function(e){F=e},this.dispose=function(){}}}let cy=new tp,c_=new ti;function cb(e,t){function n(e,t){!0===e.matrixAutoUpdate&&e.updateMatrix(),t.value.copy(e.matrix)}function i(e,i){e.opacity.value=i.opacity,i.color&&e.diffuse.value.copy(i.color),i.emissive&&e.emissive.value.copy(i.emissive).multiplyScalar(i.emissiveIntensity),i.map&&(e.map.value=i.map,n(i.map,e.mapTransform)),i.alphaMap&&(e.alphaMap.value=i.alphaMap,n(i.alphaMap,e.alphaMapTransform)),i.bumpMap&&(e.bumpMap.value=i.bumpMap,n(i.bumpMap,e.bumpMapTransform),e.bumpScale.value=i.bumpScale,1===i.side&&(e.bumpScale.value*=-1)),i.normalMap&&(e.normalMap.value=i.normalMap,n(i.normalMap,e.normalMapTransform),e.normalScale.value.copy(i.normalScale),1===i.side&&e.normalScale.value.negate()),i.displacementMap&&(e.displacementMap.value=i.displacementMap,n(i.displacementMap,e.displacementMapTransform),e.displacementScale.value=i.displacementScale,e.displacementBias.value=i.displacementBias),i.emissiveMap&&(e.emissiveMap.value=i.emissiveMap,n(i.emissiveMap,e.emissiveMapTransform)),i.specularMap&&(e.specularMap.value=i.specularMap,n(i.specularMap,e.specularMapTransform)),i.alphaTest>0&&(e.alphaTest.value=i.alphaTest);let r=t.get(i),a=r.envMap,s=r.envMapRotation;a&&(e.envMap.value=a,cy.copy(s),cy.x*=-1,cy.y*=-1,cy.z*=-1,a.isCubeTexture&&!1===a.isRenderTargetTexture&&(cy.y*=-1,cy.z*=-1),e.envMapRotation.value.setFromMatrix4(c_.makeRotationFromEuler(cy)),e.flipEnvMap.value=a.isCubeTexture&&!1===a.isRenderTargetTexture?-1:1,e.reflectivity.value=i.reflectivity,e.ior.value=i.ior,e.refractionRatio.value=i.refractionRatio),i.lightMap&&(e.lightMap.value=i.lightMap,e.lightMapIntensity.value=i.lightMapIntensity,n(i.lightMap,e.lightMapTransform)),i.aoMap&&(e.aoMap.value=i.aoMap,e.aoMapIntensity.value=i.aoMapIntensity,n(i.aoMap,e.aoMapTransform))}return{refreshFogUniforms:function(t,n){n.color.getRGB(t.fogColor.value,nP(e)),n.isFog?(t.fogNear.value=n.near,t.fogFar.value=n.far):n.isFogExp2&&(t.fogDensity.value=n.density)},refreshMaterialUniforms:function(e,r,a,s,o){var l,u,c,h,d,p,f,m,g,v,x,y,_,b,S,M,w,T,E,C,A,R,L;let P;r.isMeshBasicMaterial||r.isMeshLambertMaterial?i(e,r):r.isMeshToonMaterial?(i(e,r),l=e,(u=r).gradientMap&&(l.gradientMap.value=u.gradientMap)):r.isMeshPhongMaterial?(i(e,r),c=e,h=r,c.specular.value.copy(h.specular),c.shininess.value=Math.max(h.shininess,1e-4)):r.isMeshStandardMaterial?(i(e,r),d=e,p=r,d.metalness.value=p.metalness,p.metalnessMap&&(d.metalnessMap.value=p.metalnessMap,n(p.metalnessMap,d.metalnessMapTransform)),d.roughness.value=p.roughness,p.roughnessMap&&(d.roughnessMap.value=p.roughnessMap,n(p.roughnessMap,d.roughnessMapTransform)),p.envMap&&(d.envMapIntensity.value=p.envMapIntensity),r.isMeshPhysicalMaterial&&(f=e,m=r,g=o,f.ior.value=m.ior,m.sheen>0&&(f.sheenColor.value.copy(m.sheenColor).multiplyScalar(m.sheen),f.sheenRoughness.value=m.sheenRoughness,m.sheenColorMap&&(f.sheenColorMap.value=m.sheenColorMap,n(m.sheenColorMap,f.sheenColorMapTransform)),m.sheenRoughnessMap&&(f.sheenRoughnessMap.value=m.sheenRoughnessMap,n(m.sheenRoughnessMap,f.sheenRoughnessMapTransform))),m.clearcoat>0&&(f.clearcoat.value=m.clearcoat,f.clearcoatRoughness.value=m.clearcoatRoughness,m.clearcoatMap&&(f.clearcoatMap.value=m.clearcoatMap,n(m.clearcoatMap,f.clearcoatMapTransform)),m.clearcoatRoughnessMap&&(f.clearcoatRoughnessMap.value=m.clearcoatRoughnessMap,n(m.clearcoatRoughnessMap,f.clearcoatRoughnessMapTransform)),m.clearcoatNormalMap&&(f.clearcoatNormalMap.value=m.clearcoatNormalMap,n(m.clearcoatNormalMap,f.clearcoatNormalMapTransform),f.clearcoatNormalScale.value.copy(m.clearcoatNormalScale),1===m.side&&f.clearcoatNormalScale.value.negate())),m.dispersion>
3860&&(f.dispersion.value=m.dispersion),m.iridescence>0&&(f.iridescence.value=m.iridescence,f.iridescenceIOR.value=m.iridescenceIOR,f.iridescenceThicknessMinimum.value=m.iridescenceThicknessRange[0],f.iridescenceThicknessMaximum.value=m.iridescenceThicknessRange[1],m.iridescenceMap&&(f.iridescenceMap.value=m.iridescenceMap,n(m.iridescenceMap,f.iridescenceMapTransform)),m.iridescenceThicknessMap&&(f.iridescenceThicknessMap.value=m.iridescenceThicknessMap,n(m.iridescenceThicknessMap,f.iridescenceThicknessMapTransform))),m.transmission>0&&(f.transmission.value=m.transmission,f.transmissionSamplerMap.value=g.texture,f.transmissionSamplerSize.value.set(g.width,g.height),m.transmissionMap&&(f.transmissionMap.value=m.transmissionMap,n(m.transmissionMap,f.transmissionMapTransform)),f.thickness.value=m.thickness,m.thicknessMap&&(f.thicknessMap.value=m.thicknessMap,n(m.thicknessMap,f.thicknessMapTransform)),f.attenuationDistance.value=m.attenuationDistance,f.attenuationColor.value.copy(m.attenuationColor)),m.anisotropy>0&&(f.anisotropyVector.value.set(m.anisotropy*Math.cos(m.anisotropyRotation),m.anisotropy*Math.sin(m.anisotropyRotation)),m.anisotropyMap&&(f.anisotropyMap.value=m.anisotropyMap,n(m.anisotropyMap,f.anisotropyMapTransform))),f.specularIntensity.value=m.specularIntensity,f.specularColor.value.copy(m.specularColor),m.specularColorMap&&(f.specularColorMap.value=m.specularColorMap,n(m.specularColorMap,f.specularColorMapTransform)),m.specularIntensityMap&&(f.specularIntensityMap.value=m.specularIntensityMap,n(m.specularIntensityMap,f.specularIntensityMapTransform)))):r.isMeshMatcapMaterial?(i(e,r),v=e,(x=r).matcap&&(v.matcap.value=x.matcap)):r.isMeshDepthMaterial?i(e,r):r.isMeshDistanceMaterial?(i(e,r),y=e,_=r,P=t.get(_).light,y.referencePosition.value.setFromMatrixPosition(P.matrixWorld),y.nearDistance.value=P.shadow.camera.near,y.farDistance.value=P.shadow.camera.far):r.isMeshNormalMaterial?i(e,r):r.isLineBasicMaterial?(b=e,S=r,b.diffuse.value.copy(S.color),b.opacity.value=S.opacity,S.map&&(b.map.value=S.map,n(S.map,b.mapTransform)),r.isLineDashedMaterial&&(M=e,w=r,M.dashSize.value=w.dashSize,M.totalSize.value=w.dashSize+w.gapSize,M.scale.value=w.scale)):r.isPointsMaterial?(T=e,E=r,C=a,A=s,T.diffuse.value.copy(E.color),T.opacity.value=E.opacity,T.size.value=E.size*C,T.scale.value=.5*A,E.map&&(T.map.value=E.map,n(E.map,T.uvTransform)),E.alphaMap&&(T.alphaMap.value=E.alphaMap,n(E.alphaMap,T.alphaMapTransform)),E.alphaTest>0&&(T.alphaTest.value=E.alphaTest)):r.isSpriteMaterial?(R=e,L=r,R.diffuse.value.copy(L.color),R.opacity.value=L.opacity,R.rotation.value=L.rotation,L.map&&(R.map.value=L.map,n(L.map,R.mapTransform)),L.alphaMap&&(R.alphaMap.value=L.alphaMap,n(L.alphaMap,R.alphaMapTransform)),L.alphaTest>0&&(R.alphaTest.value=L.alphaTest)):r.isShadowMaterial?(e.color.value.copy(r.color),e.opacity.value=r.opacity):r.isShaderMaterial&&(r.uniformsNeedUpdate=!1)}}}function cS(e,t,n,i){let r={},a={},s=[],o=e.getParameter(e.MAX_UNIFORM_BUFFER_BINDINGS);function l(e){let t={boundary:0,storage:0};return"number"==typeof e||"boolean"==typeof e?(t.boundary=4,t.storage=4):e.isVector2?(t.boundary=8,t.storage=8):e.isVector3||e.isColor?(t.boundary=16,t.storage=12):e.isVector4?(t.boundary=16,t.storage=16):e.isMatrix3?(t.boundary=48,t.storage=48):e.isMatrix4?(t.boundary=64,t.storage=64):e.isTexture?Q("WebGLRenderer: Texture samplers can not be part of an uniforms group."):Q("WebGLRenderer: Unsupported uniform value type.",e),t}function u(t){let n=t.target;n.removeEventListener("dispose",u);let i=s.indexOf(n.__bindingPointIndex);s.splice(i,1),e.deleteBuffer(r[n.id]),delete r[n.id],delete a[n.id]}return{bind:function(e,t){let n=t.program;i.uniformBlockBinding(e,n)},update:function(n,c){var h;let d,p,f,m,g=r[n.id];void 0===g&&(function(e){let t=e.uniforms,n=0;for(let e=0,i=t.length;e<i;e++){let i=Array.isArray(t[e])?t[e]:[t[e]];for(let e=0,t=i.length;e<t;e++){let t=i[e],r=Array.isArray(t.value)?t.value:[t.value];for(let e=0,i=r.length;e<i;e++){let i=l(r[e]),a=n%16,s=a%i.boundary,o=a+s;n+=s,0!==o&&16-o<i.storage&&(n+=16-o),t.__data=new Float32Array(i.storage/Float32Array.BYTES_PER_ELEMENT),t.__offset=n,n+=i.storage}}}let i=n%16;i>0&&(n+=16-i),e.__size=n,e.__cache={}}(n),(h=n).__bindingPointIndex=d=function(){for(let e=0;e<o;e++)if(-1===s.indexOf(e))return s.push(e),e;return ee("WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}(),p=e.createBuffer(),f=h.__size,m=h.usage,e.bindBuffer(e.UNIFORM_BUFFER,p),e.bufferData(e.UNIFORM_BUFFER,f,m),e.bindBuffer(e.UNIFORM_BUFFER,null),e.bindBufferBase(e.UNIFORM_BUFFER,d,p),g=p,r[n.id]=g,n.addEventListener("dispose",u));let v=c.program;i.updateUBOMapping(n,v);let x=t.render.frame;a[n.id]!==x&&(function(t){let n=r[t.id],i=t.uniforms,a=t.__cache;e.bindBuffer(e.UNIFORM_BUFFER,n);for(let t=0,n=i.length;t<n;t++){let n=Array.isArray(i[t])?i[t]:[i[t]];for(let i=0,r=n.length;i<r;i++){let r=n[i];if(!0===function(e,t,n,i){let r=e.value,a=t+"_"+n;if(void 0===i[a])return"number"==typeof r||"boolean"==typeof r?i[a]=r:i[a]=r.clone(),!0;{let e=i[a];if("number"==typeof r||"boolean"==typeof r){if(e!==r)return i[a]=r,!0}else if(!1===e.equals(r))return e.copy(r),!0}return!1}(r,t,i,a)){let t=r.__offset,n=Array.isArray(r.value)?r.value:[r.value],i=0;for(let a=0;a<n.length;a++){let s=n[a],o=l(s);"number"==typeof s||"boolean"==typeof s?(r.__data[0]=s,e.bufferSubData(e.UNIFORM_BUFFER,t+i,r.__data)):s.isMatrix3?(r.__data[0]=s.elements[0],r.__data[1]=s.elements[1],r.__data[2]=s.elements[2],r.__data[3]=0,r.__data[4]=s.elements[3],r.__data[5]=s.elements[4],r.__data[6]=s.elements[5],r.__data[7]=0,r.__data[8]=s.elements[6],r.__data[9]=s.elements[7],r.__data[10]=s.elements[8],r.__data[11]=0):(s.toArray(r.__data,i),i+=o.storage/Float32Array.BYTES_PER_ELEMENT)}e.bufferSubData(e.UNIFORM_BUFFER,t,r.__data)}}}e.bindBuffer(e.UNIFORM_BUFFER,null)}(n),a[n.id]=x)},dispose:function(){for(let t in r)e.deleteBuffer(r[t]);s=[],r={},a={}}}}let cM=new Uint16Array([12469,15057,12620,14925,13266,14620,13807,14376,14323,13990,14545,13625,14713,13328,14840,12882,14931,12528,14996,12233,15039,11829,15066,11525,15080,11295,15085,10976,15082,10705,15073,10495,13880,14564,13898,14542,13977,14430,14158,14124,14393,13732,14556,13410,14702,12996,14814,12596,14891,12291,14937,11834,14957,11489,14958,11194,14943,10803,14921,10506,14893,10278,14858,9960,14484,14039,14487,14025,14499,13941,14524,13740,14574,13468,14654,13106,14743,12678,14818,12344,14867,11893,14889,11509,14893,11180,14881,10
386751,14852,10428,14812,10128,14765,9754,14712,9466,14764,13480,14764,13475,14766,13440,14766,13347,14769,13070,14786,12713,14816,12387,14844,11957,14860,11549,14868,11215,14855,10751,14825,10403,14782,10044,14729,9651,14666,9352,14599,9029,14967,12835,14966,12831,14963,12804,14954,12723,14936,12564,14917,12347,14900,11958,14886,11569,14878,11247,14859,10765,14828,10401,14784,10011,14727,9600,14660,9289,14586,8893,14508,8533,15111,12234,15110,12234,15104,12216,15092,12156,15067,12010,15028,11776,14981,11500,14942,11205,14902,10752,14861,10393,14812,9991,14752,9570,14682,9252,14603,8808,14519,8445,14431,8145,15209,11449,15208,11451,15202,11451,15190,11438,15163,11384,15117,11274,15055,10979,14994,10648,14932,10343,14871,9936,14803,9532,14729,9218,14645,8742,14556,8381,14461,8020,14365,7603,15273,10603,15272,10607,15267,10619,15256,10631,15231,10614,15182,10535,15118,10389,15042,10167,14963,9787,14883,9447,14800,9115,14710,8665,14615,8318,14514,7911,14411,7507,14279,7198,15314,9675,15313,9683,15309,9712,15298,9759,15277,9797,15229,9773,15166,9668,15084,9487,14995,9274,14898,8910,14800,8539,14697,8234,14590,7790,14479,7409,14367,7067,14178,6621,15337,8619,15337,8631,15333,8677,15325,8769,15305,8871,15264,8940,15202,8909,15119,8775,15022,8565,14916,8328,14804,8009,14688,7614,14569,7287,14448,6888,14321,6483,14088,6171,15350,7402,15350,7419,15347,7480,15340,7613,15322,7804,15287,7973,15229,8057,15148,8012,15046,7846,14933,7611,14810,7357,14682,7069,14552,6656,14421,6316,14251,5948,14007,5528,15356,5942,15356,5977,15353,6119,15348,6294,15332,6551,15302,6824,15249,7044,15171,7122,15070,7050,14949,6861,14818,6611,14679,6349,14538,6067,14398,5651,14189,5311,13935,4958,15359,4123,15359,4153,15356,4296,15353,4646,15338,5160,15311,5508,15263,5829,15188,6042,15088,6094,14966,6001,14826,5796,14678,5543,14527,5287,14377,4985,14133,4586,13869,4257,15360,1563,15360,1642,15358,2076,15354,2636,15341,3350,15317,4019,15273,4429,15203,4732,15105,4911,14981,4932,14836,4818,14679,4621,14517,4386,14359,4156,14083,3795,13808,3437,15360,122,15360,137,15358,285,15355,636,15344,1274,15322,2177,15281,2765,15215,3223,15120,3451,14995,3569,14846,3567,14681,3466,14511,3305,14344,3121,14037,2800,13753,2467,15360,0,15360,1,15359,21,15355,89,15346,253,15325,479,15287,796,15225,1148,15133,1492,15008,1749,14856,1882,14685,1886,14506,1783,14324,1608,13996,1398,13702,1183]),cw=null;class cT{constructor(e={}){let t,n,i,r,a,s,o,l,u,c,h,d,p,f,m,g,v,x,y,_,b,S,M,w,T;const{canvas:E=q(),context:C=null,depth:A=!0,stencil:R=!1,alpha:L=!1,antialias:P=!1,premultipliedAlpha:I=!0,preserveDrawingBuffer:N=!1,powerPreference:F="default",failIfMajorPerformanceCaveat:O=!1,reversedDepthBuffer:k=!1,outputBufferType:z=1009}=e;if(this.isWebGLRenderer=!0,null!==C){if("u">typeof WebGLRenderingContext&&C instanceof WebGLRenderingContext)throw Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");t=C.getContextAttributes().alpha}else t=L;const B=new Set([1033,1031,1029]),V=new Set([1009,1014,1012,1020,1017,1018]),H=new Uint32Array(4),j=new Int32Array(4);let G=null,W=null;const X=[],Y=[];let Z=null;this.domElement=E,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.toneMapping=0,this.toneMappingExposure=1,this.transmissionResolutionScale=1;const J=this;let $=!1;this._outputColorSpace=D;let en=0,ei=0,er=null,ea=-1,es=null;const eo=new eN,el=new eN;let eu=null;const ec=new tZ(0);let eh=0,ed=E.width,ep=E.height,ef=1,em=null,ev=null;const ex=new eN(0,0,ed,ep),ey=new eN(0,0,ed,ep);let e_=!1;const eb=new ik;let eS=!1,ew=!1;const eT=new ti,eE=new eg,eC=new eN,eA={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let eR=!1;function eL(){return null===er?ef:1}let eP=C;function eI(e,t){return E.getContext(e,t)}try{if("setAttribute"in E&&E.setAttribute("data-engine","three.js r182"),E.addEventListener("webglcontextlost",eO,!1),E.addEventListener("webglcontextrestored",ek,!1),E.addEventListener("webglcontextcreationerror",ez,!1),null===eP){const e="webgl2";if(eP=eI(e,{alpha:!0,depth:A,stencil:R,antialias:P,premultipliedAlpha:I,preserveDrawingBuffer:N,powerPreference:F,failIfMajorPerformanceCaveat:O}),null===eP)if(eI(e))throw Error("Error creating WebGL context with your selected attributes.");else throw Error("Error creating WebGL context.")}}catch(e){throw ee("WebGLRenderer: "+e.message),e}function eD(){(n=new lL(eP)).init(),M=new cf(eP,n),i=new ld(eP,n,e,M),r=new cd(eP,n),i.reversedDepthBuffer&&k&&r.buffers.depth.setReversed(!0),a=new lN(eP),s=new u5,o=new cp(eP,n,r,s,i,M,a),l=new lf(J),u=new lR(J),c=new ln(eP),w=new lc(eP,c),h=new lP(eP,c,a,w),d=new lU(eP,h,c,a),_=new lD(eP,i,o),v=new lp(s),p=new u3(J,l,u,n,i,w,v),f=new cb(J,s),m=new u7,g=new cr(n),y=new lu(J,l,u,r,d,t,I),x=new cc(J,d,i),T=new cS(eP,a,i,r),b=new lh(eP,n,a),S=new lI(eP,n,a),a.programs=p.programs,J.capabilities=i,J.extensions=n,J.properties=s,J.renderLists=m,J.shadowMap=x,J.state=r,J.info=a}eD(),1009!==z&&(Z=new lO(z,E.width,E.height,A,R));const eF=new cx(J,eP);function eO(e){e.preventDefault(),K("WebGLRenderer: Context Lost."),$=!0}function ek(){K("WebGLRenderer: Context Restored."),$=!1;let e=a.autoReset,t=x.enabled,n=x.autoUpdate,i=x.needsUpdate,r=x.type;eD(),a.autoReset=e,x.enabled=t,x.autoUpdate=n,x.needsUpdate=i,x.type=r}function ez(e){ee("WebGLRenderer: A WebGL context could not be created. Reason: ",e.statusMessage)}function eB(e){var t,n;let i,r=e.target;r.removeEventListener("dispose",eB),n=t=r,void 0!==(i=s.get(n).programs)&&(i.forEach(function(e){p.releaseProgram(e)}),n.isShaderMaterial&&p.releaseShaderCache(n)),s.remove(t)}function eV(e,t,n){!0===e.transparent&&2===e.side&&!1===e.forceSinglePass?(e.side=1,e.needsUpdate=!0,e$(e,t,n),e.side=0,e.needsUpdate=!0,e$(e,t,n),e.side=2):e$(e,t,n)}this.xr=eF,this.getContext=function(){return eP},this.getContextAttributes=function(){return eP.getContextAttributes()},this.forceContextLoss=function(){let e=n.get("WEBGL_lose_context");e&&e.loseContext()},this.forceContextRestore=function(){let e=n.get("WEBGL_lose_context");e&&e.restoreContext()},this.getPixelRatio=function(){return ef},this.setPixelRatio=function(e){void 0!==e&&(ef=e,this.setSize(ed,ep,!1))}
386,this.getSize=function(e){return e.set(ed,ep)},this.setSize=function(e,t,n=!0){eF.isPresenting?Q("WebGLRenderer: Can't change size while VR device is presenting."):(ed=e,ep=t,E.width=Math.floor(e*ef),E.height=Math.floor(t*ef),!0===n&&(E.style.width=e+"px",E.style.height=t+"px"),null!==Z&&Z.setSize(E.width,E.height),this.setViewport(0,0,e,t))},this.getDrawingBufferSize=function(e){return e.set(ed*ef,ep*ef).floor()},this.setDrawingBufferSize=function(e,t,n){ed=e,ep=t,ef=n,E.width=Math.floor(e*n),E.height=Math.floor(t*n),this.setViewport(0,0,e,t)},this.setEffects=function(e){if(1009===z)return void console.error("THREE.WebGLRenderer: setEffects() requires outputBufferType set to HalfFloatType or FloatType.");if(e){for(let t=0;t<e.length;t++)if(!0===e[t].isOutputPass){console.warn("THREE.WebGLRenderer: OutputPass is not needed in setEffects(). Tone mapping and color space conversion are applied automatically.");break}}Z.setEffects(e||[])},this.getCurrentViewport=function(e){return e.copy(eo)},this.getViewport=function(e){return e.copy(ex)},this.setViewport=function(e,t,n,i){e.isVector4?ex.set(e.x,e.y,e.z,e.w):ex.set(e,t,n,i),r.viewport(eo.copy(ex).multiplyScalar(ef).round())},this.getScissor=function(e){return e.copy(ey)},this.setScissor=function(e,t,n,i){e.isVector4?ey.set(e.x,e.y,e.z,e.w):ey.set(e,t,n,i),r.scissor(el.copy(ey).multiplyScalar(ef).round())},this.getScissorTest=function(){return e_},this.setScissorTest=function(e){r.setScissorTest(e_=e)},this.setOpaqueSort=function(e){em=e},this.setTransparentSort=function(e){ev=e},this.getClearColor=function(e){return e.copy(y.getClearColor())},this.setClearColor=function(){y.setClearColor(...arguments)},this.getClearAlpha=function(){return y.getClearAlpha()},this.setClearAlpha=function(){y.setClearAlpha(...arguments)},this.clear=function(e=!0,t=!0,n=!0){let i=0;if(e){let e=!1;if(null!==er){let t=er.texture.format;e=B.has(t)}if(e){let e=er.texture.type,t=V.has(e),n=y.getClearColor(),i=y.getClearAlpha(),r=n.r,a=n.g,s=n.b;t?(H[0]=r,H[1]=a,H[2]=s,H[3]=i,eP.clearBufferuiv(eP.COLOR,0,H)):(j[0]=r,j[1]=a,j[2]=s,j[3]=i,eP.clearBufferiv(eP.COLOR,0,j))}else i|=eP.COLOR_BUFFER_BIT}t&&(i|=eP.DEPTH_BUFFER_BIT),n&&(i|=eP.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(0xffffffff)),eP.clear(i)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){E.removeEventListener("webglcontextlost",eO,!1),E.removeEventListener("webglcontextrestored",ek,!1),E.removeEventListener("webglcontextcreationerror",ez,!1),y.dispose(),m.dispose(),g.dispose(),s.dispose(),l.dispose(),u.dispose(),d.dispose(),w.dispose(),T.dispose(),p.dispose(),eF.dispose(),eF.removeEventListener("sessionstart",ej),eF.removeEventListener("sessionend",eG),eW.stop()},this.renderBufferDirect=function(e,t,a,d,p,m){let g;null===t&&(t=eA);let x=p.isMesh&&0>p.matrixWorld.determinant(),y=function(e,t,n,a,c){var h,d;!0!==t.isScene&&(t=eA),o.resetTextureUnits();let p=t.fog,m=a.isMeshStandardMaterial?t.environment:null,g=null===er?J.outputColorSpace:!0===er.isXRRenderTarget?er.texture.colorSpace:U,x=(a.isMeshStandardMaterial?u:l).get(a.envMap||m),y=!0===a.vertexColors&&!!n.attributes.color&&4===n.attributes.color.itemSize,b=!!n.attributes.tangent&&(!!a.normalMap||a.anisotropy>0),S=!!n.morphAttributes.position,M=!!n.morphAttributes.normal,w=!!n.morphAttributes.color,E=0;a.toneMapped&&(null===er||!0===er.isXRRenderTarget)&&(E=J.toneMapping);let C=n.morphAttributes.position||n.morphAttributes.normal||n.morphAttributes.color,A=void 0!==C?C.length:0,R=s.get(a),L=W.state.lights;if(!0===eS&&(!0===ew||e!==es)){let t=e===es&&a.id===ea;v.setState(a,e,t)}let P=!1;a.version===R.__version?R.needsLights&&R.lightsStateVersion!==L.state.version||R.outputColorSpace!==g||c.isBatchedMesh&&!1===R.batching?P=!0:c.isBatchedMesh||!0!==R.batching?c.isBatchedMesh&&!0===R.batchingColor&&null===c.colorTexture||c.isBatchedMesh&&!1===R.batchingColor&&null!==c.colorTexture||c.isInstancedMesh&&!1===R.instancing?P=!0:c.isInstancedMesh||!0!==R.instancing?c.isSkinnedMesh&&
386!1===R.skinning?P=!0:c.isSkinnedMesh||!0!==R.skinning?c.isInstancedMesh&&!0===R.instancingColor&&null===c.instanceColor||c.isInstancedMesh&&!1===R.instancingColor&&null!==c.instanceColor||c.isInstancedMesh&&!0===R.instancingMorph&&null===c.morphTexture||c.isInstancedMesh&&!1===R.instancingMorph&&null!==c.morphTexture||R.envMap!==x||!0===a.fog&&R.fog!==p||void 0!==R.numClippingPlanes&&(R.numClippingPlanes!==v.numPlanes||R.numIntersection!==v.numIntersection)||R.vertexAlphas!==y||R.vertexTangents!==b||R.morphTargets!==S||R.morphNormals!==M||R.morphColors!==w||R.toneMapping!==E?P=!0:R.morphTargetsCount!==A&&(P=!0):P=!0:P=!0:P=!0:(P=!0,R.__version=a.version);let I=R.currentProgram;!0===P&&(I=e$(a,t,c));let N=!1,D=!1,F=!1,O=I.getUniforms(),k=R.uniforms;if(r.useProgram(I.program)&&(N=!0,D=!0,F=!0),a.id!==ea&&(ea=a.id,D=!0),N||es!==e){r.buffers.depth.getReversed()&&!0!==e.reversedDepth&&(e._reversedDepth=!0,e.updateProjectionMatrix()),O.setValue(eP,"projectionMatrix",e.projectionMatrix),O.setValue(eP,"viewMatrix",e.matrixWorldInverse);let t=O.map.cameraPosition;void 0!==t&&t.setValue(eP,eE.setFromMatrixPosition(e.matrixWorld)),i.logarithmicDepthBuffer&&O.setValue(eP,"logDepthBufFC",2/(Math.log(e.far+1)/Math.LN2)),(a.isMeshPhongMaterial||a.isMeshToonMaterial||a.isMeshLambertMaterial||a.isMeshBasicMaterial||a.isMeshStandardMaterial||a.isShaderMaterial)&&O.setValue(eP,"isOrthographic",!0===e.isOrthographicCamera),es!==e&&(es=e,D=!0,F=!0)}if(R.needsLights&&(L.state.directionalShadowMap.length>0&&O.setValue(eP,"directionalShadowMap",L.state.directionalShadowMap,o),L.state.spotShadowMap.length>0&&O.setValue(eP,"spotShadowMap",L.state.spotShadowMap,o),L.state.pointShadowMap.length>0&&O.setValue(eP,"pointShadowMap",L.state.pointShadowMap,o)),c.isSkinnedMesh){O.setOptional(eP,c,"bindMatrix"),O.setOptional(eP,c,"bindMatrixInverse");let e=c.skeleton;e&&(null===e.boneTexture&&e.computeBoneTexture(),O.setValue(eP,"boneTexture",e.boneTexture,o))}c.isBatchedMesh&&(O.setOptional(eP,c,"batchingTexture"),O.setValue(eP,"batchingTexture",c._matricesTexture,o),O.setOptional(eP,c,"batchingIdTexture"),O.setValue(eP,"batchingIdTexture",c._indirectTexture,o),O.setOptional(eP,c,"batchingColorTexture"),null!==c._colorsTexture&&O.setValue(eP,"batchingColorTexture",c._colorsTexture,o));let z=n.morphAttributes;if((void 0!==z.position||void 0!==z.normal||void 0!==z.color)&&_.update(c,n,I),(D||R.receiveShadow!==c.receiveShadow)&&(R.receiveShadow=c.receiveShadow,O.setValue(eP,"receiveShadow",c.receiveShadow)),a.isMeshGouraudMaterial&&null!==a.envMap&&(k.envMap.value=x,k.flipEnvMap.value=x.isCubeTexture&&!1===x.isRenderTargetTexture?-1:1),a.isMeshStandardMaterial&&null===a.envMap&&null!==t.environment&&(k.envMapIntensity.value=t.environmentIntensity),void 0!==k.dfgLUT&&(k.dfgLUT.value=(null===cw&&((cw=new ix(cM,16,16,1030,1016)).name="DFG_LUT",cw.minFilter=1006,cw.magFilter=1006,cw.wrapS=1001,cw.wrapT=1001,cw.generateMipmaps=!1,cw.needsUpdate=!0),cw)),D&&(O.setValue(eP,"toneMappingExposure",J.toneMappingExposure),R.needsLights&&(h=k,d=F,h.ambientLightColor.needsUpdate=d,h.lightProbe.needsUpdate=d,h.directionalLights.needsUpdate=d,h.directionalLightShadows.needsUpdate=d,h.pointLights.needsUpdate=d,h.pointLightShadows.needsUpdate=d,h.spotLights.needsUpdate=d,h.spotLightShadows.needsUpdate=d,h.rectAreaLights.needsUpdate=d,h.hemisphereLights.needsUpdate=d),p&&!0===a.fog&&f.refreshFogUniforms(k,p),f.refreshMaterialUniforms(k,a,ef,ep,W.state.transmissionRenderTarget[e.id]),uP.upload(eP,eK(R),k,o)),a.isShaderMaterial&&!0===a.uniformsNeedUpdate&&(uP.upload(eP,eK(R),k,o),a.uniformsNeedUpdate=!1),a.isSpriteMaterial&&O.setValue(eP,"center",c.center),O.setValue(eP,"modelViewMatrix",c.modelViewMatrix),O.setValue(eP,"normalMatrix",c.normalMatrix),O.setValue(eP,"modelMatrix",c.matrixWorld),a.isShaderMaterial||a.isRawShaderMaterial){let e=a.uniformsGroups;for(let t=0,n=e.length;t<n;t++){let n=e[t];T.update(n,I),T.bind(n,I)}}return I}(e,t,a,d,p);r.setMaterial(d,x);let M=a.index,E=1;if(!0===d.wireframe){if(void 0===(M=h.getWireframeAttribute(a)))return;E=2}let C=a.drawRange,A=a.attributes.position,R=C.start*E,L=(C.start+C.count)*E;null!==m&&(R=Math.max(R,m.start*E),L=Math.min(L,(m.start+m.count)*E)),null!==M?(R=Math.max(R,0),L=Math.min(L,M.count)):null!=A&&(R=Math.max(R,0),L=Math.min(L,A.count));let P=L-R;if(P<0||P===1/0)return;w.setup(p,d,y,a,M);let I=b;if(null!==M&&(g=c.get(M),(I=S).setIndex(g)),p.isMesh)!0===d.wireframe?(r.setLineWidth(d.wireframeLinewidth*eL()),I.setMode(eP.LINES)):I.setMode(eP.TRIANGLES);else if(p.isLine){let e=d.linewidth;void 0===e&&(e=1),r.setLineWidth(e*eL()),p.isLineSegments?I.setMode(eP.LINES):p.isLine
386Loop?I.setMode(eP.LINE_LOOP):I.setMode(eP.LINE_STRIP)}else p.isPoints?I.setMode(eP.POINTS):p.isSprite&&I.setMode(eP.TRIANGLES);if(p.isBatchedMesh)if(null!==p._multiDrawInstances)et("WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection."),I.renderMultiDrawInstances(p._multiDrawStarts,p._multiDrawCounts,p._multiDrawCount,p._multiDrawInstances);else if(n.get("WEBGL_multi_draw"))I.renderMultiDraw(p._multiDrawStarts,p._multiDrawCounts,p._multiDrawCount);else{let e=p._multiDrawStarts,t=p._multiDrawCounts,n=p._multiDrawCount,i=M?c.get(M).bytesPerElement:1,r=s.get(d).currentProgram.getUniforms();for(let a=0;a<n;a++)r.setValue(eP,"_gl_DrawID",a),I.render(e[a]/i,t[a])}else if(p.isInstancedMesh)I.renderInstances(R,P,p.count);else if(a.isInstancedBufferGeometry){let e=void 0!==a._maxInstanceCount?a._maxInstanceCount:1/0,t=Math.min(a.instanceCount,e);I.renderInstances(R,P,t)}else I.render(R,P)},this.compile=function(e,t,n=null){null===n&&(n=e),(W=g.get(n)).init(t),Y.push(W),n.traverseVisible(function(e){e.isLight&&e.layers.test(t.layers)&&(W.pushLight(e),e.castShadow&&W.pushShadow(e))}),e!==n&&e.traverseVisible(function(e){e.isLight&&e.layers.test(t.layers)&&(W.pushLight(e),e.castShadow&&W.pushShadow(e))}),W.setupLights();let i=new Set;return e.traverse(function(e){if(!(e.isMesh||e.isPoints||e.isLine||e.isSprite))return;let t=e.material;if(t)if(Array.isArray(t))for(let r=0;r<t.length;r++){let a=t[r];eV(a,n,e),i.add(a)}else eV(t,n,e),i.add(t)}),W=Y.pop(),i},this.compileAsync=function(e,t,i=null){let r=this.compile(e,t,i);return new Promise(t=>{function i(){(r.forEach(function(e){s.get(e).currentProgram.isReady()&&r.delete(e)}),0===r.size)?t(e):setTimeout(i,10)}null!==n.get("KHR_parallel_shader_compile")?i():setTimeout(i,10)})};let eH=null;function ej(){eW.stop()}function eG(){eW.start()}const eW=new lt;function eX(e,t,n,i){if(!1===e.visible)return;if(e.layers.test(t.layers)){if(e.isGroup)n=e.renderOrder;else if(e.isLOD)!0===e.autoUpdate&&e.update(t);else if(e.isLight)W.pushLight(e),e.castShadow&&W.pushShadow(e);else if(e.isSprite){if(!e.frustumCulled||eb.intersectsSprite(e)){i&&eC.setFromMatrixPosition(e.matrixWorld).applyMatrix4(eT);let t=d.update(e),r=e.material;r.visible&&G.push(e,t,r,n,eC.z,null)}}else if((e.isMesh||e.isLine||e.isPoints)&&(!e.frustumCulled||eb.intersectsObject(e))){let t=d.update(e),r=e.material;if(i&&(void 0!==e.boundingSphere?(null===e.boundingSphere&&e.computeBoundingSphere(),eC.copy(e.boundingSphere.center)):(null===t.boundingSphere&&t.computeBoundingSphere(),eC.copy(t.boundingSphere.center)),eC.applyMatrix4(e.matrixWorld).applyMatrix4(eT)),Array.isArray(r)){let i=t.groups;for(let a=0,s=i.length;a<s;a++){let s=i[a],o=r[s.materialIndex];o&&o.visible&&G.push(e,t,o,n,eC.z,s)}}else r.visible&&G.push(e,t,r,n,eC.z,null)}}let r=e.children;for(let e=0,a=r.length;e<a;e++)eX(r[e],t,n,i)}function eq(e,t,n,i){let{opaque:a,transmissive:s,transparent:o}=e;W.setupLightsView(n),!0===eS&&v.setGlobalState(J.clippingPlanes,n),i&&r.viewport(eo.copy(i)),a.length>0&&eZ(a,t,n),s.length>0&&eZ(s,t,n),o.length>0&&eZ(o,t,n),r.buffers.depth.setTest(!0),r.buffers.depth.setMask(!0),r.buffers.color.setMask(!0),r.setPolygonOffset(!1)}function eY(e,t,r,a){if(null!==(!0===r.isScene?r.overrideMaterial:null))return;if(void 0===W.state.transmissionRenderTarget[a.id]){let e=n.has("EXT_color_buffer_half_float")||n.has("EXT_color_buffer_float");W.state.transmissionRenderTarget[a.id]=new eU(1,1,{generateMipmaps:!0,type:e?1016:1009,minFilter:1008,samples:i.samples,stencilBuffer:R,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:eM.workingColorSpace})}let s=W.state.transmissionRenderTarget[a.id],l=a.viewport||eo;s.setSize(l.z*J.transmissionResolutionScale,l.w*J.transmissionResolutionScale);let u=J.getRenderTarget(),c=J.getActiveCubeFace(),h=J.getActiveMipmapLevel();J.setRenderTarget(s),J.getClearColor(ec),(eh=J.getClearAlpha())<1&&J.setClearColor(0xffffff,.5),J.clear(),eR&&y.render(r);let d=J.toneMapping;J.toneMapping=0;let p=a.viewport;if(void 0!==a.viewport&&(a.viewport=void 0),W.setupLightsView(a),!0===eS&&v.setGlobalState(J.clippingPlanes,a),eZ(e,r,a),o.updateMultisampleRenderTarget(s),o.updateRenderTargetMipmap(s),!1===n.has("WEBGL_multisampled_render_to_texture")){let e=!1;for(let n=0,i=t.length;n<i;n++){let{object:i,geometry:s,material:o,group:l}=t[n];
386if(2===o.side&&i.layers.test(a.layers)){let t=o.side;o.side=1,o.needsUpdate=!0,eJ(i,r,a,s,o,l),o.side=t,o.needsUpdate=!0,e=!0}}!0===e&&(o.updateMultisampleRenderTarget(s),o.updateRenderTargetMipmap(s))}J.setRenderTarget(u,c,h),J.setClearColor(ec,eh),void 0!==p&&(a.viewport=p),J.toneMapping=d}function eZ(e,t,n){let i=!0===t.isScene?t.overrideMaterial:null;for(let r=0,a=e.length;r<a;r++){let a=e[r],{object:s,geometry:o,group:l}=a,u=a.material;!0===u.allowOverride&&null!==i&&(u=i),s.layers.test(n.layers)&&eJ(s,t,n,o,u,l)}}function eJ(e,t,n,i,r,a){e.onBeforeRender(J,t,n,i,r,a),e.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse,e.matrixWorld),e.normalMatrix.getNormalMatrix(e.modelViewMatrix),r.onBeforeRender(J,t,n,i,e,a),!0===r.transparent&&2===r.side&&!1===r.forceSinglePass?(r.side=1,r.needsUpdate=!0,J.renderBufferDirect(n,t,i,r,e,a),r.side=0,r.needsUpdate=!0,J.renderBufferDirect(n,t,i,r,e,a),r.side=2):J.renderBufferDirect(n,t,i,r,e,a),e.onAfterRender(J,t,n,i,r,a)}function e$(e,t,n){var i;!0!==t.isScene&&(t=eA);let r=s.get(e),a=W.state.lights,o=W.state.shadowsArray,c=a.state.version,h=p.getParameters(e,a.state,o,t,n),d=p.getProgramCacheKey(h),f=r.programs;r.environment=e.isMeshStandardMaterial?t.environment:null,r.fog=t.fog,r.envMap=(e.isMeshStandardMaterial?u:l).get(e.envMap||r.environment),r.envMapRotation=null!==r.environment&&null===e.envMap?t.environmentRotation:e.envMapRotation,void 0===f&&(e.addEventListener("dispose",eB),r.programs=f=new Map);let m=f.get(d);if(void 0!==m){if(r.currentProgram===m&&r.lightsStateVersion===c)return eQ(e,h),m}else h.uniforms=p.getUniforms(e),e.onBeforeCompile(h,J),m=p.acquireProgram(h,d),f.set(d,m),r.uniforms=h.uniforms;let g=r.uniforms;return(e.isShaderMaterial||e.isRawShaderMaterial)&&!0!==e.clipping||(g.clippingPlanes=v.uniform),eQ(e,h),r.needsLights=(i=e).isMeshLambertMaterial||i.isMeshToonMaterial||i.isMeshPhongMaterial||i.isMeshStandardMaterial||i.isShadowMaterial||i.isShaderMaterial&&!0===i.lights,r.lightsStateVersion=c,r.needsLights&&(g.ambientLightColor.value=a.state.ambient,g.lightProbe.value=a.state.probe,g.directionalLights.value=a.state.directional,g.directionalLightShadows.value=a.state.directionalShadow,g.spotLights.value=a.state.spot,g.spotLightShadows.value=a.state.spotShadow,g.rectAreaLights.value=a.state.rectArea,g.ltc_1.value=a.state.rectAreaLTC1,g.ltc_2.value=a.state.rectAreaLTC2,g.pointLights.value=a.state.point,g.pointLightShadows.value=a.state.pointShadow,g.hemisphereLights.value=a.state.hemi,g.directionalShadowMap.value=a.state.directionalShadowMap,g.directionalShadowMatrix.value=a.state.directionalShadowMatrix,g.spotShadowMap.value=a.state.spotShadowMap,g.spotLightMatrix.value=a.state.spotLightMatrix,g.spotLightMap.value=a.state.spotLightMap,g.pointShadowMap.value=a.state.pointShadowMap,g.pointShadowMatrix.value=a.state.pointShadowMatrix),r.currentProgram=m,r.uniformsList=null,m}function eK(e){if(null===e.uniformsList){let t=e.currentProgram.getUniforms();e.uniformsList=uP.seqWithValue(t.seq,e.uniforms)}return e.uniformsList}function eQ(e,t){let n=s.get(e);n.outputColorSpace=t.outputColorSpace,n.batching=t.batching,n.batchingColor=t.batchingColor,n.instancing=t.instancing,n.instancingColor=t.instancingColor,n.instancingMorph=t.instancingMorph,n.skinning=t.skinning,n.morphTargets=t.morphTargets,n.morphNormals=t.morphNormals,n.morphColors=t.morphColors,n.morphTargetsCount=t.morphTargetsCount,n.numClippingPlanes=t.numClippingPlanes,n.numIntersection=t.numClipIntersection,n.vertexAlphas=t.vertexAlphas,n.vertexTangents=t.vertexTangents,n.toneMapping=t.toneMapping}eW.setAnimationLoop(function(e){eH&&eH(e)}),"u">typeof self&&eW.setContext(self),this.setAnimationLoop=function(e){eH=e,eF.setAnimationLoop(e),null===e?eW.stop():eW.start()},eF.addEventListener("sessionstart",ej),eF.addEventListener("sessionend",eG),this.render=function(e,t){if(void 0!==t&&!0!==t.isCamera)return void ee("WebGLRenderer.render: camera is not an instance of THREE.Camera.");if(!0===$)return;let n=!0===eF.enabled&&!0===eF.isPresenting,i=null!==Z&&(null===er||n)&&Z.begin(J,er);if(!0===e.matrixWorldAutoUpdate&&e.updateMatrixWorld(),null===t.parent&&!0===t.matrixWorldAutoUpdate&&t.updateMatrixWorld(),!0===eF.enabled&&!0===eF.isPresenting&&(null===Z||!1===Z.isCompositing(
386))&&(!0===eF.cameraAutoUpdate&&eF.updateCamera(t),t=eF.getCamera()),!0===e.isScene&&e.onBeforeRender(J,e,t,er),(W=g.get(e,Y.length)).init(t),Y.push(W),eT.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),eb.setFromProjectionMatrix(eT,2e3,t.reversedDepth),ew=this.localClippingEnabled,eS=v.init(this.clippingPlanes,ew),(G=m.get(e,X.length)).init(),X.push(G),!0===eF.enabled&&!0===eF.isPresenting){let e=J.xr.getDepthSensingMesh();null!==e&&eX(e,t,-1/0,J.sortObjects)}eX(e,t,0,J.sortObjects),G.finish(),!0===J.sortObjects&&G.sort(em,ev),(eR=!1===eF.enabled||!1===eF.isPresenting||!1===eF.hasDepthSensing())&&y.addToRenderList(G,e),this.info.render.frame++,!0===eS&&v.beginShadows();let r=W.state.shadowsArray;if(x.render(r,e,t),!0===eS&&v.endShadows(),!0===this.info.autoReset&&this.info.reset(),!1===(i&&Z.hasRenderPass())){let n=G.opaque,i=G.transmissive;if(W.setupLights(),t.isArrayCamera){let r=t.cameras;if(i.length>0)for(let t=0,a=r.length;t<a;t++)eY(n,i,e,r[t]);eR&&y.render(e);for(let t=0,n=r.length;t<n;t++){let n=r[t];eq(G,e,n,n.viewport)}}else i.length>0&&eY(n,i,e,t),eR&&y.render(e),eq(G,e,t)}null!==er&&0===ei&&(o.updateMultisampleRenderTarget(er),o.updateRenderTargetMipmap(er)),i&&Z.end(J),!0===e.isScene&&e.onAfterRender(J,e,t),w.resetDefaultState(),ea=-1,es=null,Y.pop(),Y.length>0?(W=Y[Y.length-1],!0===eS&&v.setGlobalState(J.clippingPlanes,W.state.camera)):W=null,X.pop(),G=X.length>0?X[X.length-1]:null},this.getActiveCubeFace=function(){return en},this.getActiveMipmapLevel=function(){return ei},this.getRenderTarget=function(){return er},this.setRenderTargetTextures=function(e,t,n){let i=s.get(e);i.__autoAllocateDepthBuffer=!1===e.resolveDepthBuffer,!1===i.__autoAllocateDepthBuffer&&(i.__useRenderToTexture=!1),s.get(e.texture).__webglTexture=t,s.get(e.depthTexture).__webglTexture=i.__autoAllocateDepthBuffer?void 0:n,i.__hasExternalTextures=!0},this.setRenderTargetFramebuffer=function(e,t){let n=s.get(e);n.__webglFramebuffer=t,n.__useDefaultFramebuffer=void 0===t};const e0=eP.createFramebuffer();this.setRenderTarget=function(e,t=0,n=0){er=e,en=t,ei=n;let i=null,a=!1,l=!1;if(e){let u=s.get(e);if(void 0!==u.__useDefaultFramebuffer){r.bindFramebuffer(eP.FRAMEBUFFER,u.__webglFramebuffer),eo.copy(e.viewport),el.copy(e.scissor),eu=e.scissorTest,r.viewport(eo),r.scissor(el),r.setScissorTest(eu),ea=-1;return}if(void 0===u.__webglFramebuffer)o.setupRenderTarget(e);else if(u.__hasExternalTextures)o.rebindTextures(e,s.get(e.texture).__webglTexture,s.get(e.depthTexture).__webglTexture);else if(e.depthBuffer){let t=e.depthTexture;if(u.__boundDepthTexture!==t){if(null!==t&&s.has(t)&&(e.width!==t.image.width||e.height!==t.image.height))throw Error("WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.");o.setupDepthRenderbuffer(e)}}let c=e.texture;(c.isData3DTexture||c.isDataArrayTexture||c.isCompressedArrayTexture)&&(l=!0);let h=s.get(e).__webglFramebuffer;e.isWebGLCubeRenderTarget?(i=Array.isArray(h[t])?h[t][n]:h[t],a=!0):i=e.samples>0&&!1===o.useMultisampledRTT(e)?s.get(e).__webglMultisampledFramebuffer:Array.isArray(h)?h[n]:h,eo.copy(e.viewport),el.copy(e.scissor),eu=e.scissorTest}else eo.copy(ex).multiplyScalar(ef).floor(),el.copy(ey).multiplyScalar(ef).floor(),eu=e_;if(0!==n&&(i=e0),r.bindFramebuffer(eP.FRAMEBUFFER,i)&&r.drawBuffers(e,i),r.viewport(eo),r.scissor(el),r.setScissorTest(eu),a){let i=s.get(e.texture);eP.framebufferTexture2D(eP.FRAMEBUFFER,eP.COLOR_ATTACHMENT0,eP.TEXTURE_CUBE_MAP_POSITIVE_X+t,i.__webglTexture,n)}else if(l)for(let i=0;i<e.textures.length;i++){let r=s.get(e.textures[i]);eP.framebufferTextureLayer(eP.FRAMEBUFFER,eP.COLOR_ATTACHMENT0+i,r.__webglTexture,n,t)}else if(null!==e&&0!==n){let t=s.get(e.texture);eP.framebufferTexture2D(eP.FRAMEBUFFER,eP.COLOR_ATTACHMENT0,eP.TEXTURE_2D,t.__webglTexture,n)}ea=-1},this.readRenderTargetPixels=function(e,t,n,a,o,l,u,c=0){if(!(e&&e.isWebGLRenderTarget))return void ee("WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let h=s.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&void 0!==u&&(h=h[u]),h){r.bindFramebuffer(eP.FRAMEBUFFER,h);try{let r=e.textures[c],s=r.format,u=r.type;if(!i.textureFormatReadable(s))return void ee("WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");if(!i.textureTypeReadable(u))return void ee("WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");t>=0&&t<=e.width-a&&n>=0&&n<=e.height-o&&(e.textures.length>1&&eP.readBuffer(eP.COLOR_ATTACHMENT0+c),eP.readPixels(t,n,a,o,M.convert(s),M.convert(u),l))}finally{let e=null!==er?s.get(er).__webglFramebuffer:null;r.bindFramebuffer(eP.FRAMEBUFFER,e)}}},this.readRenderTargetPixelsAsync=async function(e,t,n,a,o,l,u,c=0){if(!(e&&e.isWebGLRenderTarget))throw Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let h=s.get(e).__webglFramebuffer;
386if(e.isWebGLCubeRenderTarget&&void 0!==u&&(h=h[u]),h)if(t>=0&&t<=e.width-a&&n>=0&&n<=e.height-o){var d;r.bindFramebuffer(eP.FRAMEBUFFER,h);let u=e.textures[c],p=u.format,f=u.type;if(!i.textureFormatReadable(p))throw Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!i.textureTypeReadable(f))throw Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");let m=eP.createBuffer();eP.bindBuffer(eP.PIXEL_PACK_BUFFER,m),eP.bufferData(eP.PIXEL_PACK_BUFFER,l.byteLength,eP.STREAM_READ),e.textures.length>1&&eP.readBuffer(eP.COLOR_ATTACHMENT0+c),eP.readPixels(t,n,a,o,M.convert(p),M.convert(f),0);let g=null!==er?s.get(er).__webglFramebuffer:null;r.bindFramebuffer(eP.FRAMEBUFFER,g);let v=eP.fenceSync(eP.SYNC_GPU_COMMANDS_COMPLETE,0);return eP.flush(),await (d=eP,new Promise(function(e,t){setTimeout(function n(){switch(d.clientWaitSync(v,d.SYNC_FLUSH_COMMANDS_BIT,0)){case d.WAIT_FAILED:t();break;case d.TIMEOUT_EXPIRED:setTimeout(n,4);break;default:e()}},4)})),eP.bindBuffer(eP.PIXEL_PACK_BUFFER,m),eP.getBufferSubData(eP.PIXEL_PACK_BUFFER,0,l),eP.deleteBuffer(m),eP.deleteSync(v),l}else throw Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(e,t=null,n=0){let i=Math.pow(2,-n),a=Math.floor(e.image.width*i),s=Math.floor(e.image.height*i),l=null!==t?t.x:0,u=null!==t?t.y:0;o.setTexture2D(e,0),eP.copyTexSubImage2D(eP.TEXTURE_2D,n,0,0,l,u,a,s),r.unbindTexture()};const e1=eP.createFramebuffer(),e2=eP.createFramebuffer();this.copyTextureToTexture=function(e,t,n=null,i=null,a=0,l=null){let u,c,h,d,p,f,m,g,v,x;null===l&&(0!==a?(et("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),l=a,a=0):l=0);let y=e.isCompressedTexture?e.mipmaps[l]:e.image;if(null!==n)u=n.max.x-n.min.x,c=n.max.y-n.min.y,h=n.isBox3?n.max.z-n.min.z:1,d=n.min.x,p=n.min.y,f=n.isBox3?n.min.z:0;else{let t=Math.pow(2,-a);u=Math.floor(y.width*t),c=Math.floor(y.height*t),h=e.isDataArrayTexture?y.depth:e.isData3DTexture?Math.floor(y.depth*t):1,d=0,p=0,f=0}null!==i?(m=i.x,g=i.y,v=i.z):(m=0,g=0,v=0);let _=M.convert(t.format),b=M.convert(t.type);t.isData3DTexture?(o.setTexture3D(t,0),x=eP.TEXTURE_3D):t.isDataArrayTexture||t.isCompressedArrayTexture?(o.setTexture2DArray(t,0),x=eP.TEXTURE_2D_ARRAY):(o.setTexture2D(t,0),x=eP.TEXTURE_2D),eP.pixelStorei(eP.UNPACK_FLIP_Y_WEBGL,t.flipY),eP.pixelStorei(eP.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),eP.pixelStorei(eP.UNPACK_ALIGNMENT,t.unpackAlignment);let S=eP.getParameter(eP.UNPACK_ROW_LENGTH),w=eP.getParameter(eP.UNPACK_IMAGE_HEIGHT),T=eP.getParameter(eP.UNPACK_SKIP_PIXELS),E=eP.getParameter(eP.UNPACK_SKIP_ROWS),C=eP.getParameter(eP.UNPACK_SKIP_IMAGES);eP.pixelStorei(eP.UNPACK_ROW_LENGTH,y.width),eP.pixelStorei(eP.UNPACK_IMAGE_HEIGHT,y.height),eP.pixelStorei(eP.UNPACK_SKIP_PIXELS,d),eP.pixelStorei(eP.UNPACK_SKIP_ROWS,p),eP.pixelStorei(eP.UNPACK_SKIP_IMAGES,f);let A=e.isDataArrayTexture||e.isData3DTexture,R=t.isDataArrayTexture||t.isData3DTexture;if(e.isDepthTexture){let n=s.get(e),i=s.get(t),o=s.get(n.__renderTarget),x=s.get(i.__renderTarget);r.bindFramebuffer(eP.READ_FRAMEBUFFER,o.__webglFramebuffer),r.bindFramebuffer(eP.DRAW_FRAMEBUFFER,x.__webglFramebuffer);for(let n=0;n<h;n++)A&&(eP.framebufferTextureLayer(eP.READ_FRAMEBUFFER,eP.COLOR_ATTACHMENT0,s.get(e).__webglTexture,a,f+n),eP.framebufferTextureLayer(eP.DRAW_FRAMEBUFFER,eP.COLOR_ATTACHMENT0,s.get(t).__webglTexture,l,v+n)),eP.blitFramebuffer(d,p,u,c,m,g,u,c,eP.DEPTH_BUFFER_BIT,eP.NEAREST);r.bindFramebuffer(eP.READ_FRAMEBUFFER,null),r.bindFramebuffer(eP.DRAW_FRAMEBUFFER,null)}else if(0!==a||e.isRenderTargetTexture||s.has(e)){let n=s.get(e),i=s.get(t);r.bindFramebuffer(eP.READ_FRAMEBUFFER,e1),r.bindFramebuffer(eP.DRAW_FRAMEBUFFER,e2);for(let e=0;e<h;e++)A?eP.framebufferTextureLayer(eP.READ_FRAMEBUFFER,eP.COLOR_ATTACHMENT0,n.__webglTexture,a,f+e):eP.framebufferTexture2D(eP.READ_FRAMEBUFFER,eP.COLOR_ATTACHMENT0,eP.TEXTURE_2D,n.__webglTexture,a),R?eP.framebufferTextureLayer(eP.DRAW_FRAMEBUFFER,eP.COLOR_ATTACHMENT0,i.__webglTexture,l,v+e):eP.framebufferTexture2D(eP.DRAW_FRAMEBUFFER,eP.COLOR_ATTACHMENT0,eP.TEXTURE_2D,i.__webglTexture,l),0!==a?eP.blitFramebuffer(d,p,u,c,m,g,u,c,eP.COLOR_BUFFER_BIT,eP.NEAREST):R?eP.copyTexSubImage3D(x,l,m,g,v+e,d,p,u,c):eP.copyTexSubImage2D(x,l,m,g,d,p,u,c);r.bindFramebuffer(eP.READ_FRAMEBUFFER,null),r.bindFramebuffer(eP.DRAW_FRAMEBUFFER,null)}else R?e.isDataTexture||e.isData3DTexture?eP.texSubImage3D(x,l,m,g,v,u,c,h,_,b,y.data):t.isCompressedArrayTexture?eP.compressedTexSubImage3D(x,l,m,g,v,u,c,h,_,y.data):eP.texSubImage3D(x,l,m,g,v,u,c,h,_,b,y):e.isDataTexture?eP.texSubImage2D(eP.TEXTURE_2D,l,m,g,u,c,_,b,y.data):e.isCompressedTexture?eP.compressedTexSubImage2D(eP.TEXTURE_2D,l,m,g,y.width,y.height,_,y.data):eP.texSubImage2D(eP.TEXTURE_2D,l,m,g,u,c,_,b,y);eP.pixelStorei(eP.UNPACK_ROW_LENGTH,S),eP.pixelStorei(eP.UNPACK_IMAGE_HEIGHT,w),eP.pixelStorei(eP.UNPACK_SKIP_PIXELS,T),eP.pixelStorei(eP.UNPACK_SKIP_ROWS,E),eP.pixelStorei(eP.UNPACK_SKIP_IMAGES,C),0===l&&t.generateMipmaps&&eP.generateMipmap(x),r.unbindTexture()},this.initRenderTarget=function(e){void 0===s.get(e).__webglFramebuffer&&o.setupRenderTarget(e)},this.initTexture=function(e){e.isCubeTexture?o.setTextureCube(e,0):e.isData3DTexture?o.setTexture3D(e,0):e.isDataArrayTexture||e.isCompressedArrayTexture?o.setTexture2DArray(e,0):o.setTexture2D(e,0),r.unbindTexture()},this.resetState=function(){en=0,ei=0,er=null,r.reset(),w.reset()},"u">typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return 2e3}get outputColorSpace(){return this._outputColorSpace}
386set outputColorSpace(e){this._outputColorSpace=e;let t=this.getContext();t.drawingBufferColorSpace=eM._getDrawingBufferColorSpace(e),t.unpackColorSpace=eM._getUnpackColorSpace()}}e.s(["PMREMGenerator",()=>lM,"ShaderChunk",()=>li,"ShaderLib",()=>la,"UniformsLib",()=>lr,"WebGLRenderer",()=>cT,"WebGLUtils",()=>cf],8560);var cE=e.i(30224);let cC=e=>{let t,n=new Set,i=(e,i)=>{let r="function"==typeof e?e(t):e;if(!Object.is(r,t)){let e=t;t=(null!=i?i:"object"!=typeof r||null===r)?r:Object.assign({},t,r),n.forEach(n=>n(t,e))}},r=()=>t,a={setState:i,getState:r,getInitialState:()=>s,subscribe:e=>(n.add(e),()=>n.delete(e))},s=t=e(i,r,a);return a},{useSyncExternalStoreWithSelector:cA}=cE.default,cR=(e,t)=>{let n=e?cC(e):cC,i=(e,i=t)=>(function(e,t=e=>e,n){let i=cA(e.subscribe,e.getState,e.getInitialState,t,n);return R.default.useDebugValue(i),i})(n,e,i);return Object.assign(i,n),i},cL=[];function cP(e,t,n=(e,t)=>e===t){if(e===t)return!0;if(!e||!t)return!1;let i=e.length;if(t.length!==i)return!1;for(let r=0;r<i;r++)if(!n(e[r],t[r]))return!1;return!0}function cI(e,t=null,n=!1,i={}){for(let r of(null===t&&(t=[e]),cL))if(cP(t,r.keys,r.equal)){if(n)return;if(Object.prototype.hasOwnProperty.call(r,"error"))throw r.error;if(Object.prototype.hasOwnProperty.call(r,"response"))return i.lifespan&&i.lifespan>0&&(r.timeout&&clearTimeout(r.timeout),r.timeout=setTimeout(r.remove,i.lifespan)),r.response;if(!n)throw r.promise}let r={keys:t,equal:i.equal,remove:()=>{let e=cL.indexOf(r);-1!==e&&cL.splice(e,1)},promise:("object"==typeof e&&"function"==typeof e.then?e:e(...t)).then(e=>{r.response=e,i.lifespan&&i.lifespan>0&&(r.timeout=setTimeout(r.remove,i.lifespan))}).catch(e=>r.error=e)};if(cL.push(r),!n)throw r.promise}var cN=e.i(89499),cD=R;function cU(e,t,n){if(!e)return;if(!0===n(e))return e;let i=t?e.return:e.child;for(;i;){let e=cU(i,t,n);if(e)return e;i=t?null:i.sibling}}function cF(e){try{return Object.defineProperties(e,{_currentRenderer:{get:()=>null,set(){}},_currentRenderer2:{get:()=>null,set(){}}})}catch(t){return e}}"u">typeof window&&((null==(y=window.document)?void 0:y.createElement)||(null==(_=window.navigator)?void 0:_.product)==="ReactNative")?cD.useLayoutEffect:cD.useEffect;let cO=cF(cD.createContext(null));class ck extends cD.Component{render(){return cD.createElement(cO.Provider,{value:this._reactInternals},this.props.children)}}function cz(){let e=cD.useContext(cO);if(null===e)throw Error("its-fine: useFiber must be called within a <FiberProvider />!");let t=cD.useId();return cD.useMemo(()=>{for(let n of[e,null==e?void 0:e.alternate]){if(!n)continue;let e=cU(n,!1,e=>{let n=e.memoizedState;for(;n;){if(n.memoizedState===t)return!0;n=n.next}});if(e)return e}},[e,t])}let cB=Symbol.for("react.context"),cV=e=>null!==e&&"object"==typeof e&&"$$typeof"in e&&e.$$typeof===cB;function cH(e){let t=e.root;for(;t.getState().previousRoot;)t=t.getState().previousRoot;return t}R.act;let cj=e=>null!=e&&("string"==typeof e||"number"==typeof e||e.isColor),cG="u">typeof window&&((null==(m=window.document)?void 0:m.createElement)||(null==(g=window.navigator)?void 0:g.product)==="ReactNative")?R.useLayoutEffect:R.useEffect;function cW(e){let t=R.useRef(e);return cG(()=>void(t.current=e),[e]),t}function cX({set:e}){return cG(()=>(e(new Promise(()=>null)),()=>e(!1)),[e]),null}let cq=((v=class extends R.Component{constructor(...e){super(...e),this.state={error:!1}}componentDidCatch(e){this.props.set(e)}render(){return this.state.error?null:this.props.children}}).getDerivedStateFromError=()=>({error:!0}),v);function cY(e){var t;let n="u">typeof window?null!=(t=window.devicePixelRatio)?t:2:1;return Array.isArray(e)?Math.min(Math.max(e[0],n),e[1]):e}function cZ(e){var t;return null==(t=e.__r3f)?void 0:t.root.getState()}let cJ={obj:e=>e===Object(e)&&!cJ.arr(e)&&"function"!=typeof e,fun:e=>"function"==typeof e,str:e=>"string"==typeof e,num:e=>"number"==typeof e,boo:e=>"boolean"==typeof e,und:e=>void 0===e,nul:e=>null===e,arr:e=>Array.isArray(e),equ(e,t,{arrays:n="shallow",objects:i="reference",strict:r=!0}={}){let a;if(typeof e!=typeof t||!!e!=!!t)return!1;if(cJ.str(e)||cJ.num(e)||cJ.boo(e))return e===t;let s=cJ.obj(e);if(s&&"reference"===i)return e===t;let o=cJ.arr(e);if(o&&"reference"===n)return e===t;if((o||s)&&e===t)return!0;for(a in e)if(!(a in t))return!1;if(s&&"shallow"===n&&"shallow"===i){for(a in r?t:e)if(!cJ.equ(e[a],t[a],{strict:r,objects:"reference"}))return!1}else for(a in r?t:e)if(e[a]!==t[a])return!1;if(cJ.und(a)){if(o&&0===e.length&&0===t.length||s&&0===Object.keys(e).length&&0===Object.keys(t).length)return!0;
386if(e!==t)return!1}return!0}},c$=["children","key","ref"];function cK(e,t,n,i){let r=null==e?void 0:e.__r3f;return!r&&(r={root:t,type:n,parent:null,children:[],props:function(e){let t={};for(let n in e)c$.includes(n)||(t[n]=e[n]);return t}(i),object:e,eventCount:0,handlers:{},isHidden:!1},e&&(e.__r3f=r)),r}function cQ(e,t){if(!t.includes("-")||t in e)return{root:e,key:t,target:e[t]};let n=e,i=t.split("-");for(let r of i){if("object"!=typeof n||null===n){if(void 0!==n)return{root:n,key:i.slice(i.indexOf(r)).join("-"),target:void 0};return{root:e,key:t,target:void 0}}t=r,e=n,n=n[t]}return{root:e,key:t,target:n}}let c0=/-\d+$/;function c1(e,t){if(cJ.str(t.props.attach)){if(c0.test(t.props.attach)){let n=t.props.attach.replace(c0,""),{root:i,key:r}=cQ(e.object,n);Array.isArray(i[r])||(i[r]=[])}let{root:n,key:i}=cQ(e.object,t.props.attach);t.previousAttach=n[i],n[i]=t.object}else cJ.fun(t.props.attach)&&(t.previousAttach=t.props.attach(e.object,t.object))}function c2(e,t){if(cJ.str(t.props.attach)){let{root:n,key:i}=cQ(e.object,t.props.attach),r=t.previousAttach;void 0===r?delete n[i]:n[i]=r}else null==t.previousAttach||t.previousAttach(e.object,t.object);delete t.previousAttach}let c3=[...c$,"args","dispose","attach","object","onUpdate","dispose"],c5=new Map,c4=["map","emissiveMap","sheenColorMap","specularColorMap","envMap"],c6=/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/;function c8(e,t){var n,i;let r=e.__r3f,a=r&&cH(r).getState(),s=null==r?void 0:r.eventCount;for(let n in t){let s=t[n];if(c3.includes(n))continue;if(r&&c6.test(n)){"function"==typeof s?r.handlers[n]=s:delete r.handlers[n],r.eventCount=Object.keys(r.handlers).length;continue}if(void 0===s)continue;let{root:o,key:l,target:u}=cQ(e,n);if(void 0===u&&("object"!=typeof o||null===o))throw Error(`R3F: Cannot set "${n}". Ensure it is an object before setting "${l}".`);u instanceof tf&&s instanceof tf?u.mask=s.mask:u instanceof tZ&&cj(s)?u.set(s):null!==u&&"object"==typeof u&&"function"==typeof u.set&&"function"==typeof u.copy&&null!=s&&s.constructor&&u.constructor===s.constructor?u.copy(s):null!==u&&"object"==typeof u&&"function"==typeof u.set&&Array.isArray(s)?"function"==typeof u.fromArray?u.fromArray(s):u.set(...s):null!==u&&"object"==typeof u&&"function"==typeof u.set&&"number"==typeof s?"function"==typeof u.setScalar?u.setScalar(s):u.set(s):(o[l]=s,a&&!a.linear&&c4.includes(l)&&null!=(i=o[l])&&i.isTexture&&1023===o[l].format&&1009===o[l].type&&(o[l].colorSpace=D))}if(null!=r&&r.parent&&null!=a&&a.internal&&null!=(n=r.object)&&n.isObject3D&&s!==r.eventCount){let e=r.object,t=a.internal.interaction.indexOf(e);t>-1&&a.internal.interaction.splice(t,1),r.eventCount&&null!==e.raycast&&a.internal.interaction.push(e)}return r&&void 0===r.props.attach&&(r.object.isBufferGeometry?r.props.attach="geometry":r.object.isMaterial&&(r.props.attach="material")),r&&c7(r),e}function c7(e){var t;if(!e.parent)return;null==e.props.onUpdate||e.props.onUpdate(e.object);let n=null==(t=e.root)||null==t.getState?void 0:t.getState();n&&0===n.internal.frames&&n.invalidate()}let c9=e=>null==e?void 0:e.isObject3D;function he(e){return(e.eventObject||e.object).uuid+"/"+e.index+e.instanceId}function ht(e,t,n,i){let r=n.get(t);r&&(n.delete(t),0===n.size&&(e.delete(i),r.target.releasePointerCapture(i)))}let hn=e=>!!(null!=e&&e.render),hi=R.createContext(null);function hr(){let e=R.useContext(hi);if(!e)throw Error("R3F: Hooks can only be used within the Canvas component!");return e}let ha=new WeakMap;function hs(e,t){return function(n,...i){var r;let a;return"function"==typeof n&&(null==n||null==(r=n.prototype)?void 0:r.constructor)===n?(a=ha.get(n))||(a=new n,ha.set(n,a)):a=n,e&&e(a),Promise.all(i.map(e=>new Promise((n,i)=>a.load(e,e=>{var t;let i;c9(null==e?void 0:e.scene)&&Object.assign(e,(t=e.scene,i={nodes:{},materials:{},meshes:{}},t&&t.traverse(e=>{e.name&&(i.nodes[e.name]=e),e.material&&!i.materials[e.material.name]&&(i.materials[e.material.name]=e.material),e.isMesh&&!i.meshes[e.name]&&(i.meshes[e.name]=e)}),i)),n(e)},t,t=>i(Error(`Could not load ${e}: ${null==t?void 0:t.message}`))))))}}function ho(e,t,n,i){let r=Array.isArray(t)?t:[t],a=cI(hs(n,i),[e,...r],!1,{equal:cJ.equ});return Array.isArray(t)?a:a[0]}ho.preload=function(e,t,n){let i,r=Array.isArray(t)?t:[t];cI(hs(n),[e,...r],!0,i)},ho.clear=function(e,t){var n=[e,...Array.isArray(t)?t:[t]];if(void 0===n||0===n.length)cL.splice(0,cL.length);else{let e=cL.find(e=>cP(n,e.keys,e.equal));e&&e.remove()}};
386var hl={exports:{}},hu={exports:{}};hu.exports;let hc=(w||(w=1,M||(M=1,hu.exports=function(e){function t(e,t,n,i){return new iJ(e,t,n,i)}function n(){}function i(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function r(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do(4098&(t=e).flags)!=0&&(n=t.return),e=t.return;while(e)}return 3===t.tag?n:null}function a(e){if(r(e)!==e)throw Error(i(188))}function s(e){var t=e.alternate;if(!t){if(null===(t=r(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,s=t;;){var o=n.return;if(null===o)break;var l=o.alternate;if(null===l){if(null!==(s=o.return)){n=s;continue}break}if(o.child===l.child){for(l=o.child;l;){if(l===n)return a(o),e;if(l===s)return a(o),t;l=l.sibling}throw Error(i(188))}if(n.return!==s.return)n=o,s=l;else{for(var u=!1,c=o.child;c;){if(c===n){u=!0,n=o,s=l;break}if(c===s){u=!0,s=o,n=l;break}c=c.sibling}if(!u){for(c=l.child;c;){if(c===n){u=!0,n=l,s=o;break}if(c===s){u=!0,s=l,n=o;break}c=c.sibling}if(!u)throw Error(i(189))}}if(n.alternate!==s)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}function o(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=r_&&e[r_]||e["@@iterator"])?e:null}function l(e){if(null==e)return null;if("function"==typeof e)return e.$$typeof===rb?null:e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case rl:return"Fragment";case rc:return"Profiler";case ru:return"StrictMode";case rf:return"Suspense";case rm:return"SuspenseList";case rx:return"Activity"}if("object"==typeof e)switch(e.$$typeof){case ro:return"Portal";case rd:return e.displayName||"Context";case rh:return(e._context.displayName||"Context")+".Consumer";case rp:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case rg:return null!==(t=e.displayName||null)?t:l(e.type)||"Memo";case rv:t=e._payload,e=e._init;try{return l(e(t))}catch{}}return null}function u(e){return{current:e}}function c(e){0>sw||(e.current=sM[sw],sM[sw]=null,sw--)}function h(e,t){sM[++sw]=e.current,e.current=t}function d(e){var t=42&e;if(0!==t)return t;switch(e&-e){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:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return 261888&e;case 262144:case 524288:case 1048576:case 2097152:return 3932160&e;case 4194304:case 8388608:case 0x1000000:case 0x2000000:return 0x3c00000&e;case 0x4000000:return 0x4000000;case 0x8000000:return 0x8000000;case 0x10000000:return 0x10000000;case 0x20000000:return 0x20000000;case 0x40000000:return 0;default:return e}}function p(e,t,n){var i=e.pendingLanes;if(0===i)return 0;var r=0,a=e.suspendedLanes,s=e.pingedLanes;e=e.warmLanes;var o=0x7ffffff&i;return 0!==o?0!=(i=o&~a)?r=d(i):0!=(s&=o)?r=d(s):n||0!=(n=o&~e)&&(r=d(n)):0!=(o=i&~a)?r=d(o):0!==s?r=d(s):n||0!=(n=i&~e)&&(r=d(n)),0===r?0:0!==t&&t!==r&&(t&a)==0&&((a=r&-r)>=(n=t&-t)||32===a&&(4194048&n)!=0)?t:r}function f(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)==0}function m(){var e=sP;return(0x3c00000&(sP<<=1))==0&&(sP=4194304),e}function g(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function v(e,t){e.pendingLanes|=t,0x10000000!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function x(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var i=31-sE(t);e.entangledLanes|=t,e.entanglements[i]=0x40000000|e.entanglements[i]|261930&n}function y(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var i=31-sE(n),r=1<<i;r&t|e[i]&t&&(e[i]|=t),n&=~r}}function _(e,t){var n=t&-t;return((n=(42&n)!=0?1:b(n))&(e.suspendedLanes|t))!=0?0:n}function b(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;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 0x1000000:case 0x2000000:e=128;break;case 0x10000000:e=0x8000000;break;default:e=0}return e}function S(e){return 2<(e&=-e)?8<e?(0x7ffffff&e)!=0?32:0x10000000:8:2}function M(e){if("function"==typeof sV&&sH(e),sG&&"function"==typeof sG.setStrictMode)try{sG.setStrictMode(sj,e)}catch{}}function w(e){if(void 0===a9)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);a9=t&&t[1]||"",se=-1<e.stack.indexOf(` 387 at`)?" (<anonymous>)":-1<e.stack.indexOf("@")?"@unknown:0:0":""}return` 388`+a9+e+se}function T(e,t){if(!e||sY)return"";sY=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var i={DetermineComponentFrameRoot:function(){try{if(t){var n=function(){throw Error()};if(Object.defineProperty(n.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(n,[])}catch(e){var i=e}Reflect.construct(e,[],n)}
388else{try{n.call()}catch(e){i=e}e.call(n.prototype)}}else{try{throw Error()}catch(e){i=e}(n=e())&&"function"==typeof n.catch&&n.catch(function(){})}}catch(e){if(e&&i&&"string"==typeof e.stack)return[e.stack,i.stack]}return[null,null]}};i.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var r=Object.getOwnPropertyDescriptor(i.DetermineComponentFrameRoot,"name");r&&r.configurable&&Object.defineProperty(i.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var a=i.DetermineComponentFrameRoot(),s=a[0],o=a[1];if(s&&o){var l=s.split(` 389`),u=o.split(` 390`);for(r=i=0;i<l.length&&!l[i].includes("DetermineComponentFrameRoot");)i++;for(;r<u.length&&!u[r].includes("DetermineComponentFrameRoot");)r++;if(i===l.length||r===u.length)for(i=l.length-1,r=u.length-1;1<=i&&0<=r&&l[i]!==u[r];)r--;for(;1<=i&&0<=r;i--,r--)if(l[i]!==u[r]){if(1!==i||1!==r)do if(i--,r--,0>r||l[i]!==u[r]){var c=` 391`+l[i].replace(" at new "," at ");return e.displayName&&c.includes("<anonymous>")&&(c=c.replace("<anonymous>",e.displayName)),c}while(1<=i&&0<=r)break}}}finally{sY=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?w(n):""}function E(e){try{var t="",n=null;do t+=function(e,t){switch(e.tag){case 26:case 27:case 5:return w(e.type);case 16:return w("Lazy");case 13:return e.child!==t&&null!==t?w("Suspense Fallback"):w("Suspense");case 19:return w("SuspenseList");case 0:case 15:return T(e.type,!1);case 11:return T(e.type.render,!1);case 1:return T(e.type,!0);case 31:return w("Activity");default:return""}}(e,n),n=e,e=e.return;while(e)return t}catch(e){return` 392Error generating stack: `+e.message+` 393`+e.stack}}function C(e,t){if("object"==typeof e&&null!==e){var n=sZ.get(e);return void 0!==n?n:(t={value:e,source:t,stack:E(t)},sZ.set(e,t),t)}return{value:e,source:t,stack:E(t)}}function L(e,t){sJ[s$++]=sQ,sJ[s$++]=sK,sK=e,sQ=t}function P(e,t,n){s0[s1++]=s3,s0[s1++]=s5,s0[s1++]=s2,s2=e;var i=s3;e=s5;var r=32-sE(i)-1;i&=~(1<<r),n+=1;var a=32-sE(t)+r;if(30<a){var s=r-r%5;a=(i&(1<<s)-1).toString(32),i>>=s,r-=s,s3=1<<32-sE(t)+r|n<<r|i,s5=a+e}else s3=1<<a|n<<r|i,s5=e}function I(e){null!==e.return&&(L(e,1),P(e,1,0))}function N(e){for(;e===sK;)sK=sJ[--s$],sJ[s$]=null,sQ=sJ[--s$],sJ[s$]=null;for(;e===s2;)s2=s0[--s1],s0[s1]=null,s5=s0[--s1],s0[s1]=null,s3=s0[--s1],s0[s1]=null}function D(e,t){s0[s1++]=s3,s0[s1++]=s5,s0[s1++]=s2,s3=t.id,s5=t.overflow,s2=e}function U(e,t){h(s8,t),h(s6,e),h(s4,null),e=rA(t),c(s4),h(s4,e)}function F(){c(s4),c(s6),c(s8)}function O(e){null!==e.memoizedState&&h(s7,e);var t=s4.current,n=rR(t,e.type);t!==n&&(h(s6,e),h(s4,n))}function k(e){s6.current===e&&(c(s4),c(s6)),s7.current===e&&(c(s7),rB?r4._currentValue=r5:r4._currentValue2=r5)}function z(e){var t=Error(i(418,1<arguments.length&&void 0!==arguments[1]&&arguments[1]?"text":"HTML",""));throw W(C(t,e)),or}function B(e,t){if(!rj)throw Error(i(175));aX(e.stateNode,e.type,e.memoizedProps,t,e)||z(e,!0)}function V(e){for(s9=e.return;s9;)switch(s9.tag){case 5:case 31:case 13:oi=!1;return;case 27:case 3:oi=!0;return;default:s9=s9.return}}function H(e){if(!rj||e!==s9)return!1;if(!ot)return V(e),ot=!0,!1;var t=e.tag;if(sv?3!==t&&27!==t&&(5!==t||a7(e.type)&&!rU(e.type,e.memoizedProps))&&oe&&z(e):3!==t&&(5!==t||a7(e.type)&&!rU(e.type,e.memoizedProps))&&oe&&z(e),V(e),13===t){if(!rj)throw Error(i(316));if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));oe=a$(e)}else if(31===t){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));oe=aJ(e)}else oe=sv&&27===t?aF(e.type,oe):s9?aU(e.stateNode):null;return!0}function j(){rj&&(oe=s9=null,ot=!1)}function G(){var e=on;return null!==e&&(null===lI?lI=e:lI.push.apply(lI,e),on=null),e}function W(e){null===on?on=[e]:on.push(e)}function X(e,t,n){rB?(h(oa,t._currentValue),t._currentValue=n):(h(oa,t._currentValue2),t._currentValue2=n)}function q(e){var t=oa.current;rB?e._currentValue=t:e._currentValue2=t,c(oa)}function Y(e,t,n){for(;null!==e;){var i=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==i&&(i.childLanes|=t)):null!==i&&(i.childLanes&t)!==t&&(i.childLanes|=t),e===n)break;e=e.return}}function Z(e,t,n,r){var a=e.child;for(null!==a&&(a.return=e);null!==a;){var s=a.dependencies;if(null!==s){var o=a.child;s=s.firstContext;o:for(;null!==s;){var l=s;s=a;for(var u=0;u<t.length;u++)if(l.context===t[u]){s.lanes|=n,null!==(l=s.alternate)&&(l.lanes|=n),Y(s.return,n,e),r||(o=null);break o}s=l.next}}else if(18===a.tag){if(null===(o=a.return))throw Error(i(341));o.lanes|=n,null!==(s=o.alternate)&&(s.lanes|=n),Y(o,n,e),o=null}else o=a.child;if(null!==o)o.return=a;else for(o=a;null!==o;){if(o===e){o=null;break}if(null!==(a=o.sibling)){a.return=o.return,o=a;break}o=o.return}a=o}}function J(e,t,n,r){e=null;for(var a=t,s=!1;null!==a;){if(!s){if((524288&a.flags)!=0)s=!0;else if((262144&a.flags)!=0)break}if(10===a.tag){var o=a.alternate;if(null===o)throw Error(i(387));if(null!==(o=o.memoizedProps)){var l=a.type;sW(a.pendingProps.value,o.value)||(null!==e?e.push(l):e=[l])}}else if(a===s7.current){if(null===(o=a.alternate))throw Error(i(387));o.memoizedState.memoizedState!==a.memoizedState.memoizedState&&(null!==e?e.push(r4):e=[r4])}a=a.return}null!==e&&Z(t,e,n,r),t.flags|=262144}function $(e){for(e=e.firstContext;null!==e;){var t=e.context;if(!sW(rB?t._currentValue:t._currentValue2,e.memoizedValue))return!0;e=e.next}return!1}
393function K(e){os=e,oo=null,null!==(e=e.dependencies)&&(e.firstContext=null)}function Q(e){return et(os,e)}function ee(e,t){return null===os&&K(e),et(e,t)}function et(e,t){var n=rB?t._currentValue:t._currentValue2;if(t={context:t,memoizedValue:n,next:null},null===oo){if(null===e)throw Error(i(308));oo=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else oo=oo.next=t;return n}function en(){return{controller:new ol,data:new Map,refCount:0}}function ei(e){e.refCount--,0===e.refCount&&ou(oc,function(){e.controller.abort()})}function er(){}function ea(e){e!==op&&null===e.next&&(null===op?od=op=e:op=op.next=e),om=!0,of||(of=!0,r8?r7(function(){(6&lm)!=0?sI(sO,eo):el()}):sI(sO,eo))}function es(e,t){if(!og&&om){og=!0;do for(var n=!1,i=od;null!==i;){if(!t)if(0!==e){var r=i.pendingLanes;if(0===r)var a=0;else{var s=i.suspendedLanes,o=i.pingedLanes;a=0xc000095&(a=(1<<31-sE(42|e)+1)-1&(r&~(s&~o)))?0xc000095&a|1:a?2|a:0}0!==a&&(n=!0,eh(i,a))}else a=lx,(3&(a=p(i,i===lg?a:0,null!==i.cancelPendingCommit||i.timeoutHandle!==rz)))==0||f(i,a)||(n=!0,eh(i,a));i=i.next}while(n)og=!1}}function eo(){el()}function el(){om=of=!1;var e=0;0!==ov&&rZ()&&(e=ov);for(var t=sF(),n=null,i=od;null!==i;){var r=i.next,a=eu(i,t);0===a?(i.next=null,null===n?od=r:n.next=r,null===r&&(op=n)):(n=i,(0!==e||(3&a)!=0)&&(om=!0)),i=r}0!==lz&&5!==lz||es(e,!1),0!==ov&&(ov=0)}function eu(e,t){for(var n=e.suspendedLanes,i=e.pingedLanes,r=e.expirationTimes,a=-0x3c00001&e.pendingLanes;0<a;){var s=31-sE(a),o=1<<s,l=r[s];-1===l?((o&n)==0||(o&i)!=0)&&(r[s]=function(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return -1}}(o,t)):l<=t&&(e.expiredLanes|=o),a&=~o}if(t=lg,n=lx,n=p(e,e===t?n:0,null!==e.cancelPendingCommit||e.timeoutHandle!==rz),i=e.callbackNode,0===n||e===t&&(2===ly||9===ly)||null!==e.cancelPendingCommit)return null!==i&&null!==i&&sN(i),e.callbackNode=null,e.callbackPriority=0;if((3&n)==0||f(e,n)){if((t=n&-n)===e.callbackPriority)return t;switch(null!==i&&sN(i),S(n)){case 2:case 8:n=sk;break;case 32:default:n=sz;break;case 0x10000000:n=sB}return n=sI(n,i=ec.bind(null,e)),e.callbackPriority=t,e.callbackNode=n,t}return null!==i&&null!==i&&sN(i),e.callbackPriority=2,e.callbackNode=null,2}function ec(e,t){if(0!==lz&&5!==lz)return e.callbackNode=null,e.callbackPriority=0,null;var n=e.callbackNode;if(iV()&&e.callbackNode!==n)return null;var i=lx;return 0===(i=p(e,e===lg?i:0,null!==e.cancelPendingCommit||e.timeoutHandle!==rz))?null:(iy(e,i,t),eu(e,sF()),null!=e.callbackNode&&e.callbackNode===n?ec.bind(null,e):null)}function eh(e,t){if(iV())return null;iy(e,t,!0)}function ed(){if(0===ov){var e=o_;0===e&&(e=sR,(261888&(sR<<=1))==0&&(sR=256)),ov=e}return ov}function ep(){if(0==--oy&&null!==ox){null!==ob&&(ob.status="fulfilled");var e=ox;ox=null,o_=0,ob=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function ef(){var e=oM.current;return null!==e?e:lg.pooledCache}function em(e,t){null===t?h(oM,oM.current):h(oM,t.pool)}function eg(){var e=ef();return null===e?null:{parent:rB?oh._currentValue:oh._currentValue2,pool:e}}function ev(e,t){if(sW(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;for(i=0;i<n.length;i++){var r=n[i];if(!sq.call(t,r)||!sW(e[r],t[r]))return!1}return!0}function ex(e){return"fulfilled"===(e=e.status)||"rejected"===e}function ey(e,t,n){switch(void 0===(n=e[n])?e.push(t):n!==t&&(t.then(er,er),t=n),t.status){case"fulfilled":return t.value;case"rejected":throw eS(e=t.reason),e;default:if("string"==typeof t.status)t.then(er,er);else{if(null!==(e=lg)&&100<e.shellSuspendCounter)throw Error(i(482));(e=t).status="pending",e.then(function(e){if("pending"===t.status){var n=t;n.status="fulfilled",n.value=e}},function(e){if("pending"===t.status){var n=t;n.status="rejected",n.reason=e}})}switch(t.status){case"fulfilled":return t.value;case"rejected":throw eS(e=t.reason),e}throw oA=t,ow}}function e_(e){try{return(0,e._init)(e._payload)}catch(e){throw null!==e&&"object"==typeof e&&"function"==typeof e.then?(oA=e,ow):e}}function eb(){if(null===oA)throw Error(i(459));var e=oA;return oA=null,e}function eS(e){if(e===ow||e===oE)throw Error(i(483))}function eM(e){var t=oL;return oL+=1,null===oR&&(oR=[]),ey(oR,e,t)}function ew(e,t){e.ref=void 0!==(t=t.props.ref)?t:null}function eT(e,t){throw t.$$typeof===ra?Error(i(525)):Error(i(31,"[object Object]"===(e=Object.prototype.toString.call(t))?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function eE(e){function n(t,n){if(e){var i=t.deletions;null===i?(t.deletions=[n],t.flags|=16):i.push(n)}}function r(t,i){if(!e)return null;for(;null!==i;)n(t,i),i=i.sibling;return null}function a(e){for(var t=new Map;null!==e;)null!==e.key?t.set(e.key,e):t.set(e.index,e),e=e.sibling;return t}function s(e,t){return(e=iK(e,t)).index=0,e.sibling=null,e}function l(t,n,i){return t.index=i,e?null!==(i=t.alternate)?(i=i.index)<n?(t.flags|=0x4000002,n):i:(t.flags|=0x4000002,n):(t.flags|=1048576,n)}function u(t){return e&&null===t.alternate&&(t.flags|=0x4000002),t}function c(e,t,n,i){return null===t||6!==t.tag?(t=i2(n,e.mode,i)).return=e:(t=s(t,n)).return=e,t}function h(e,t,n,i){var r=n.type;return r===rl?p(e,t,n.props.children,i,n.key):(null!==t&&(t.elementType===r||"object"==typeof r&&null!==r&&r.$$typeof===rv&&e_(r)===t.type)?ew(t=s(t,n.props),n):ew(t=i0(n.type,n.key,n.props,null,e.mode,i),n),t.return=e,t)}function d(e,t,n,i){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?(t=i5(n,e.mode,i)).return=e:(t=s(t,n.children||[])).return=e,t}function p(e,t,n,i,r){return null===t||7!==t.tag?(t=i1(n,e.mode,i,r)).return=e:(t=s(t,n)).return=e,t}function f(e,t,n){if("string"==typeof t&&""!==t||"number"==typeof t||"bigint"==typeof t)return(t=i2(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case rs:return ew(n=i0(t.type,t.key,t.props,null,e.mode,n),t),n.return=e,n;case ro:return(t=i5(t,e.mode,n)).return=e,t;case rv:return f(e,t=e_(t),n)}if(rS(t)||o(t))return(t=i1(t,e.mode,n,null)).return=e,t;if("function"==typeof t.then)return f(e,eM(t),n);if(t.$$typeof===rd)return f(e,ee(e,t),n);eT(e,t)}return null}function m(e,t,n,i){var r=null!==t?t.key:null;if("string"==typeof n&&""!==n||"number"==typeof n||"bigint"==typeof n)return null!==r?null:c(e,t,""+n,i);if("object"==typeof n&&null!==n){switch(n.$$typeof){case rs:return n.key===r?h(e,t,n,i):null;case ro:return n.key===r?d(e,t,n,i):null;case rv:return m(e,t,n=e_(n),i)}if(rS(n)||o(n))return null!==r?null:p(e,t,n,i,null);if("function"==typeof n.then)return m(e,t,eM(n),i);if(n.$$typeof===rd)return m(e,t,ee(e,n),i);eT(e,n)}return null}function g(e,t,n,i,r){if("string"==typeof i&&""!==i||"number"==typeof i||"bigint"==typeof i)return c(t,e=e.get(n)||null,""+i,r);if("object"==typeof i&&null!==i){switch(i.$$typeof){case rs:return h(t,e=e.get(null===i.key?n:i.key)||null,i,r);case ro:return d(t,e=e.get(null===i.key?n:i.key)||null,i,r);case rv:return g(e,t,n,i=e_(i),r)}if(rS(i)||o(i))return p(t,e=e.get(n)||null,i,r,null);if("function"==typeof i.then)return g(e,t,n,eM(i),r);if(i.$$typeof===rd)return g(e,t,n,ee(t,i),r);eT(t,i)}return null}return function(c,h,d,p){try{oL=0;var v=function t(c,h,d,p){if("object"==typeof d&&null!==d&&d.type===rl&&null===d.key&&(d=d.props.children),"object"==typeof d&&null!==d){switch(d.$$typeof){case rs:o:{for(var v=d.
vendor: 4,240 bytes, line 393
393key;null!==h;){if(h.key===v){if((v=d.type)===rl){if(7===h.tag){r(c,h.sibling),(p=s(h,d.props.children)).return=c,c=p;break o}}else if(h.elementType===v||"object"==typeof v&&null!==v&&v.$$typeof===rv&&e_(v)===h.type){r(c,h.sibling),ew(p=s(h,d.props),d),p.return=c,c=p;break o}r(c,h);break}n(c,h),h=h.sibling}d.type===rl?(p=i1(d.props.children,c.mode,p,d.key)).return=c:(ew(p=i0(d.type,d.key,d.props,null,c.mode,p),d),p.return=c),c=p}return u(c);case ro:o:{for(v=d.key;null!==h;){if(h.key===v)if(4===h.tag&&h.stateNode.containerInfo===d.containerInfo&&h.stateNode.implementation===d.implementation){r(c,h.sibling),(p=s(h,d.children||[])).return=c,c=p;break o}else{r(c,h);break}n(c,h),h=h.sibling}(p=i5(d,c.mode,p)).return=c,c=p}return u(c);case rv:return t(c,h,d=e_(d),p)}if(rS(d))return function(t,i,s,o){for(var u=null,c=null,h=i,d=i=0,p=null;null!==h&&d<s.length;d++){h.index>d?(p=h,h=null):p=h.sibling;var v=m(t,h,s[d],o);if(null===v){null===h&&(h=p);break}e&&h&&null===v.alternate&&n(t,h),i=l(v,i,d),null===c?u=v:c.sibling=v,c=v,h=p}if(d===s.length)return r(t,h),ot&&L(t,d),u;if(null===h){for(;d<s.length;d++)null!==(h=f(t,s[d],o))&&(i=l(h,i,d),null===c?u=h:c.sibling=h,c=h);return ot&&L(t,d),u}for(h=a(h);d<s.length;d++)null!==(p=g(h,t,d,s[d],o))&&(e&&null!==p.alternate&&h.delete(null===p.key?d:p.key),i=l(p,i,d),null===c?u=p:c.sibling=p,c=p);return e&&h.forEach(function(e){return n(t,e)}),ot&&L(t,d),u}(c,h,d,p);if(o(d)){if("function"!=typeof(v=o(d)))throw Error(i(150));return function(t,s,o,u){if(null==o)throw Error(i(151));for(var c=null,h=null,d=s,p=s=0,v=null,x=o.next();null!==d&&!x.done;p++,x=o.next()){d.index>p?(v=d,d=null):v=d.sibling;var y=m(t,d,x.value,u);if(null===y){null===d&&(d=v);break}e&&d&&null===y.alternate&&n(t,d),s=l(y,s,p),null===h?c=y:h.sibling=y,h=y,d=v}if(x.done)return r(t,d),ot&&L(t,p),c;if(null===d){for(;!x.done;p++,x=o.next())null!==(x=f(t,x.value,u))&&(s=l(x,s,p),null===h?c=x:h.sibling=x,h=x);return ot&&L(t,p),c}for(d=a(d);!x.done;p++,x=o.next())null!==(x=g(d,t,p,x.value,u))&&(e&&null!==x.alternate&&d.delete(null===x.key?p:x.key),s=l(x,s,p),null===h?c=x:h.sibling=x,h=x);return e&&d.forEach(function(e){return n(t,e)}),ot&&L(t,p),c}(c,h,d=v.call(d),p)}if("function"==typeof d.then)return t(c,h,eM(d),p);if(d.$$typeof===rd)return t(c,h,ee(c,d),p);eT(c,d)}return"string"==typeof d&&""!==d||"number"==typeof d||"bigint"==typeof d?(d=""+d,null!==h&&6===h.tag?(r(c,h.sibling),(p=s(h,d)).return=c):(r(c,h),(p=i2(d,c.mode,p)).return=c),u(c=p)):r(c,h)}(c,h,d,p);return oR=null,v}catch(e){if(e===ow||e===oE)throw e;var x=t(29,e,null,c.mode);return x.lanes=p,x.return=c,x}finally{}}}function eC(){for(var e=oD,t=oU=oD=0;t<e;){var n=oN[t];oN[t++]=null;var i=oN[t];oN[t++]=null;var r=oN[t];oN[t++]=null;var a=oN[t];if(oN[t++]=null,null!==i&&null!==r){var s=i.pending;null===s?r.next=r:(r.next=s.next,s.next=r),i.pending=r}0!==a&&eP(n,r,a)}}function eA(e,t,n,i){oN[oD++]=e,oN[oD++]=t,oN[oD++]=n,oN[oD++]=i,oU|=i,e.lanes|=i,null!==(e=e.alternate)&&(e.lanes|=i)}function eR(e,t,n,i){return eA(e,t,n,i),eI(e)}function eL(e,t){return eA(e,null,null,t),eI(e)}function eP(e,t,n){e.lanes|=n;var i=e.alternate;null!==i&&(i.lanes|=n);for(var r=!1,a=e.return;null!==a;)a.childLanes|=n,null!==(i=a.alternate)&&(i.childLanes|=n),22===a.tag&&(null===(e=a.stateNode)||1&e._visibility||(r=!0)),e=a,a=a.return;return 3===e.tag?(a=e.stateNode,r&&null!==t&&(r=31-sE(n),null===(i=(e=a.hiddenUpdates)[r])?e[r]=[t]:i.push(t),t.lane=0x20000000|n),a):null}function eI(e){if(50<lX)throw lX=0,lq=null,Error(i(185));for(var t=e.return;null!==t;)t=(e=t).return;return 3===e.tag?e.stateNode:null}function eN(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function eD(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function eU(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function eF(e,t,n){var i=e.updateQueue;if(null===i)return null;if(i=i.shared,(2&lm)!=0){var r=i.pending;return null===r?t.next=t:(t.next=r.next,r.next=t),i.pending=t,t=eI(e),eP(e,null,n),t}return eA(e,i,t,n),eI(e)}
393function eO(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,(4194048&n)!=0)){var i=t.lanes;i&=e.pendingLanes,n|=i,t.lanes=n,y(e,n)}}function ek(e,t){var n=e.updateQueue,i=e.alternate;if(null!==i&&n===(i=i.updateQueue)){var r=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var s={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};null===a?r=a=s:a=a.next=s,n=n.next}while(null!==n)null===a?r=a=t:a=a.next=t}else r=a=t;n={baseState:i.baseState,firstBaseUpdate:r,lastBaseUpdate:a,shared:i.shared,callbacks:i.callbacks},e.updateQueue=n;return}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function ez(){if(oO){var e=ob;if(null!==e)throw e}}function eB(e,t,n,i){oO=!1;var r=e.updateQueue;oF=!1;var a=r.firstBaseUpdate,s=r.lastBaseUpdate,o=r.shared.pending;if(null!==o){r.shared.pending=null;var l=o,u=l.next;l.next=null,null===s?a=u:s.next=u,s=l;var c=e.alternate;null!==c&&(o=(c=c.updateQueue).lastBaseUpdate)!==s&&(null===o?c.firstBaseUpdate=u:o.next=u,c.lastBaseUpdate=l)}if(null!==a){var h=r.baseState;for(s=0,c=u=l=null,o=a;;){var d=-0x20000001&o.lane,p=d!==o.lane;if(p?(lx&d)===d:(i&d)===d){0!==d&&d===o_&&(oO=!0),null!==c&&(c=c.next={lane:0,tag:o.tag,payload:o.payload,callback:null,next:null});o:{var f=e,m=o;switch(d=t,m.tag){case 1:if("function"==typeof(f=m.payload)){h=f.call(n,h,d);break o}h=f;break o;case 3:f.flags=-65537&f.flags|128;case 0:if(null==(d="function"==typeof(f=m.payload)?f.call(n,h,d):f))break o;h=rr({},h,d);break o;case 2:oF=!0}}null!==(d=o.callback)&&(e.flags|=64,p&&(e.flags|=8192),null===(p=r.callbacks)?r.callbacks=[d]:p.push(d))}else p={lane:d,tag:o.tag,payload:o.payload,callback:o.callback,next:null},null===c?(u=c=p,l=h):c=c.next=p,s|=d;if(null===(o=o.next)){if(null===(o=r.shared.pending))break;o=(p=o).next,p.next=null,r.lastBaseUpdate=p,r.shared.pending=null}}null===c&&(l=h),r.baseState=l,r.firstBaseUpdate=u,r.lastBaseUpdate=c,null===a&&(r.shared.lanes=0),lE|=s,e.lanes=s,e.memoizedState=h}}function eV(e,t){if("function"!=typeof e)throw Error(i(191,e));e.call(t)}function eH(e,t){var n=e.callbacks;if(null!==n)for(e.callbacks=null,e=0;e<n.length;e++)eV(n[e],t)}function ej(e,t){h(oz,e=lw),h(ok,t),lw=e|t.baseLanes}function eG(){h(oz,lw),h(ok,ok.current)}function eW(){lw=oz.current,c(ok),c(oz)}function eX(e){var t=e.alternate;h(oH,1&oH.current),h(oB,e),null===oV&&(null===t||null!==ok.current||null!==t.memoizedState)&&(oV=e)}function eq(e){h(oH,oH.current),h(oB,e),null===oV&&(oV=e)}function eY(e){22===e.tag?(h(oH,oH.current),h(oB,e),null===oV&&(oV=e)):eZ()}function eZ(){h(oH,oH.current),h(oB,oB.current)}function eJ(e){c(oB),oV===e&&(oV=null),c(oH)}function e$(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||aR(n)||aL(n)))return t}else if(19===t.tag&&("forwards"===t.memoizedProps.revealOrder||"backwards"===t.memoizedProps.revealOrder||"unstable_legacy-backwards"===t.memoizedProps.revealOrder||"together"===t.memoizedProps.revealOrder)){if((128&t.flags)!=0)return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function eK(){throw Error(i(321))}function eQ(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!sW(e[n],t[n]))return!1;return!0}function e0(e,t,n,i,r,a){return oj=a,oG=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,rM.H=null===e||null===e.memoizedState?o1:o2,oZ=!1,a=n(i,r),oZ=!1,oY&&(a=e2(t,n,i,r)),e1(e),a}function e1(e){rM.H=o0;var t=null!==oW&&null!==oW.next;if(oj=0,oX=oW=oG=null,oq=!1,o$=0,oK=null,t)throw Error(i(300));null===e||o6||null!==(e=e.dependencies)&&$(e)&&(o6=!0)}function e2(e,t,n,r){oG=e;var a=0;do{if(oY&&(oK=null),o$=0,oY=!1,25<=a)throw Error(i(301));if(a+=1,oX=oW=null,null!=e.updateQueue){var s=e.updateQueue;s.lastEffect=null,s.events=null,s.stores=null,null!=s.memoCache&&(s.memoCache.index=0)}rM.H=o3,s=t(n,r)}while(oY)return s}function e3(){var e=rM.H,t=e.useState()[0];return t="function"==typeof t.then?te(t):t,e=e.useState()[0],(null!==oW?oW.memoizedState:null)!==e&&(oG.flags|=1024),t}function e5(){var e=0!==oJ;return oJ=0,e}function e4(e,t,n){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n}function e6(e){if(oq){for(e=e.memoizedState;null!==e;){var t=e.queue;
393null!==t&&(t.pending=null),e=e.next}oq=!1}oj=0,oX=oW=oG=null,oY=!1,o$=oJ=0,oK=null}function e8(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===oX?oG.memoizedState=oX=e:oX=oX.next=e,oX}function e7(){if(null===oW){var e=oG.alternate;e=null!==e?e.memoizedState:null}else e=oW.next;var t=null===oX?oG.memoizedState:oX.next;if(null!==t)oX=t,oW=e;else{if(null===e)throw null===oG.alternate?Error(i(467)):Error(i(310));e={memoizedState:(oW=e).memoizedState,baseState:oW.baseState,baseQueue:oW.baseQueue,queue:oW.queue,next:null},null===oX?oG.memoizedState=oX=e:oX=oX.next=e}return oX}function e9(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function te(e){var t=o$;return o$+=1,null===oK&&(oK=[]),e=ey(oK,e,t),t=oG,(null===oX?t.memoizedState:oX.next)===null&&(rM.H=null===(t=t.alternate)||null===t.memoizedState?o1:o2),e}function tt(e){if(null!==e&&"object"==typeof e){if("function"==typeof e.then)return te(e);if(e.$$typeof===rd)return Q(e)}throw Error(i(438,String(e)))}function tn(e){var t=null,n=oG.updateQueue;if(null!==n&&(t=n.memoCache),null==t){var i=oG.alternate;null!==i&&null!==(i=i.updateQueue)&&null!=(i=i.memoCache)&&(t={data:i.data.map(function(e){return e.slice()}),index:0})}if(null==t&&(t={data:[],index:0}),null===n&&(n=e9(),oG.updateQueue=n),n.memoCache=t,void 0===(n=t.data[t.index]))for(n=t.data[t.index]=Array(e),i=0;i<e;i++)n[i]=ry;return t.index++,n}function ti(e,t){return"function"==typeof t?t(e):t}function tr(e){return ta(e7(),oW,e)}function ta(e,t,n){var r=e.queue;if(null===r)throw Error(i(311));r.lastRenderedReducer=n;var a=e.baseQueue,s=r.pending;if(null!==s){if(null!==a){var o=a.next;a.next=s.next,s.next=o}t.baseQueue=a=s,r.pending=null}if(s=e.baseState,null===a)e.memoizedState=s;else{t=a.next;var l=o=null,u=null,c=t,h=!1;do{var d=-0x20000001&c.lane;if(d!==c.lane?(lx&d)===d:(oj&d)===d){var p=c.revertLane;if(0===p)null!==u&&(u=u.next={lane:0,revertLane:0,gesture:null,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),d===o_&&(h=!0);else if((oj&p)===p){c=c.next,p===o_&&(h=!0);continue}else d={lane:0,revertLane:c.revertLane,gesture:null,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null},null===u?(l=u=d,o=s):u=u.next=d,oG.lanes|=p,lE|=p;d=c.action,oZ&&n(s,d),s=c.hasEagerState?c.eagerState:n(s,d)}else p={lane:d,revertLane:c.revertLane,gesture:c.gesture,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null},null===u?(l=u=p,o=s):u=u.next=p,oG.lanes|=d,lE|=d;c=c.next}while(null!==c&&c!==t)if(null===u?o=s:u.next=l,!sW(s,e.memoizedState)&&(o6=!0,h&&null!==(n=ob)))throw n;e.memoizedState=s,e.baseState=o,e.baseQueue=u,r.lastRenderedState=s}return null===a&&(r.lanes=0),[e.memoizedState,r.dispatch]}function ts(e){var t=e7(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,s=t.memoizedState;if(null!==a){n.pending=null;var o=a=a.next;do s=e(s,o.action),o=o.next;while(o!==a)sW(s,t.memoizedState)||(o6=!0),t.memoizedState=s,null===t.baseQueue&&(t.baseState=s),n.lastRenderedState=s}return[s,r]}function to(e,t,n){var r=oG,a=e7(),s=ot;if(s){if(void 0===n)throw Error(i(407));n=n()}else n=t();var o=!sW((oW||a).memoizedState,n);if(o&&(a.memoizedState=n,o6=!0),a=a.queue,tI(tc.bind(null,r,a,e),[e]),a.getSnapshot!==t||o||null!==oX&&1&oX.memoizedState.tag){if(r.flags|=2048,tC(9,{destroy:void 0},tu.bind(null,r,a,n,t),null),null===lg)throw Error(i(349));s||(127&oj)!=0||tl(r,t,n)}return n}function tl(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=oG.updateQueue)?(t=e9(),oG.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function tu(e,t,n,i){t.value=n,t.getSnapshot=i,th(t)&&td(e)}function tc(e,t,n){return n(function(){th(t)&&td(e)})}function th(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!sW(e,n)}catch{return!0}}function td(e){var t=eL(e,2);null!==t&&ix(t,e,2)}function tp(e){var t=e8();if("function"==typeof e){var n=e;if(e=n(),oZ){M(!0);try{n()}finally{M(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:ti,lastRenderedState:e},t}function tf(e,t,n,i){return e.baseState=n,ta(e,oW,"function"==typeof i?i:ti)}function tm(e,t,n,r,a){if(tQ(e))throw Error(i(485));if(null!==(e=t.action)){var s={payload:a,action:e,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(e){s.listeners.push(e)}};null!==rM.T?n(!0):s.isTransition=!1,r(s),null===(n=t.pending)?(s.next=t.pending=s,tg(t,s)):(s.next=n.next,t.pending=n.next=s)}}function tg(e,t){var n=t.action,i=t.payload,r=e.state;if(t.isTransition){var a=rM.T,s={};rM.T=s;try{var o=n(r,i),l=rM.S;null!==l&&l(s,o),tv(e,t,o)}catch(n){ty(e,t,n)}finally{null!==a&&null!==s.types&&(a.types=s.types),rM.T=a}}else try{a=n(r,i),tv(e,t,a)}catch(n){ty(e,t,n)}}function tv(e,t,n){null!==n&&"object"==typeof n&&"function"==typeof n.then?n.then(function(n){tx(e,t,n)},function(n){return ty(e,t,n)}):tx(e,t,n)}function tx(e,t,n){t.status="fulfilled",t.value=n,t_(t),e.state=n,null!==(t=e.pending)&&((n=t.next)===t?e.pending=null:(n=n.next,t.next=n,tg(e,n)))}function ty(e,t,n){var i=e.pending;if(e.pending=null,null!==i){i=i.next;do t.status="rejected",t.reason=n,t_(t),t=t.next;while(t!==i)}e.action=null}function t_(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function tb(e,t){return t}function tS(e,t){if(ot){var n=lg.formState;if(null!==n){o:{var i=oG;if(ot){if(oe){var r=aN(oe,oi);if(r){oe=aU(r),i=aD(r);break o}}z(i)}i=!1}i&&(t=n[0])}}(n=e8()).memoizedState=n.baseState=t,i={pending:null,lanes:0,dispatch:null,lastRenderedReducer:tb,lastRenderedState:t},n.queue=i,n=tJ.bind(null,oG,i),i.dispatch=n,i=tp(!1);var a=tK.bind(null,oG,!1,i.queue);return i=e8(),r={state:t,dispatch:null,action:e,pending:null},i.queue=r,n=tm.bind(null,oG,r,a,n),r.dispatch=n,i.memoizedState=e,[t,n,!1]}function tM(e){return tw(e7(),oW,e)}function tw(e,t,n){if(t=ta(e,t,tb)[0],e=tr(ti)[0],"object"==typeof t&&null!==t&&"function"==typeof t.then)try{var i=te(t)}catch(e){throw e===ow?oE:e}else i=t;var r=(t=e7()).queue,a=r.dispatch;return n!==t.memoizedState&&(oG.flags|=2048,tC(9,{destroy:void 0},tT.bind(null,r,n),null)),[i,a,e]}function tT(e,t){e.action=t}function tE(e){var t=e7(),n=oW;if(null!==n)return tw(t,n,e);e7(),t=t.memoizedState;var i=(n=e7()).queue.dispatch;return n.memoizedState=e,[t,i,!1]}function tC(e,t,n,i){return e={tag:e,create:n,deps:i,inst:t,next:null},null===(t=oG.updateQueue)&&(t=e9(),oG.updateQueue=t),null===(n=t.lastEffect)?t.lastEffect=e.next=e:(i=n.next,n.next=e,e.next=i,t.lastEffect=e),e}function tA(){return e7().memoizedState}function tR(e,t,n,i){var r=e8();oG.flags|=e,r.memoizedState=tC(1|t,{destroy:void 0},n,void 0===i?null:i)}function tL(e,t,n,i){var r=e7();i=void 0===i?null:i;var a=r.memoizedState.inst;null!==oW&&null!==i&&eQ(i,oW.memoizedState.deps)?r.memoizedState=tC(t,a,n,i):(oG.flags|=e,r.memoizedState=tC(1|t,a,n,i))}function tP(e,t){tR(8390656,8,e,t)}function tI(e,t){tL(2048,8,e,t)}function tN(e){var t=e7().memoizedState;return function(e){oG.flags|=4;var t=oG.updateQueue;if(null===t)t=e9(),oG.updateQueue=t,t.events=[e];else{var n=t.events;null===n?t.events=[e]:n.push(e)}}({ref:t,nextImpl:e}),function(){if((2&lm)!=0)throw Error(i(440));return t.impl.apply(void 0,arguments)}}function tD(e,t){return tL(4,2,e,t)}function tU(e,t){return tL(4,4,e,t)}function tF(e,t){if("function"==typeof t){var n=t(e=e());return function(){"function"==typeof n?n():t(null)}}if(null!=t)return t.current=e=e(),function(){t.current=null}}function tO(e,t,n){n=null!=n?n.concat([e]):null,tL(4,4,tF.bind(null,t,e),n)}function tk(){}function tz(e,t){var n=e7();t=void 0===t?null:t;var i=n.memoizedState;return null!==t&&eQ(t,i[1])?i[0]:(n.memoizedState=[e,t],e)}function tB(e,t){var n=e7();t=void 0===t?null:t;var i=n.memoizedState;if(null!==t&&eQ(t,i[1]))return i[0];if(i=e(),oZ){M(!0);try{e()}finally{M(!1)}}return n.memoizedState=[i,t],i}
393function tV(e,t,n){return void 0===n||(0x40000000&oj)!=0&&(261930&lx)==0?e.memoizedState=t:(e.memoizedState=n,e=iv(),oG.lanes|=e,lE|=e,n)}function tH(e,t,n,i){return sW(n,t)?n:null!==ok.current?(sW(e=tV(e,n,i),t)||(o6=!0),e):(42&oj)==0||(0x40000000&oj)!=0&&(261930&lx)==0?(o6=!0,e.memoizedState=n):(e=iv(),oG.lanes|=e,lE|=e,t)}function tj(e,t,n,i,r){var a=rq();rX(0!==a&&8>a?a:8);var s=rM.T,o={};rM.T=o,tK(e,!1,t,n);try{var l=r(),u=rM.S;if(null!==u&&u(o,l),null!==l&&"object"==typeof l&&"function"==typeof l.then){var c,h,d=(c=[],h={status:"pending",value:null,reason:null,then:function(e){c.push(e)}},l.then(function(){h.status="fulfilled",h.value=i;for(var e=0;e<c.length;e++)(0,c[e])(i)},function(e){for(h.status="rejected",h.reason=e,e=0;e<c.length;e++)(0,c[e])(void 0)}),h);t$(e,t,d,ig(e))}else t$(e,t,i,ig(e))}catch(n){t$(e,t,{then:function(){},status:"rejected",reason:n},ig())}finally{rX(a),null!==s&&null!==o.types&&(s.types=o.types),rM.T=s}}function tG(e){var t=e.memoizedState;if(null!==t)return t;var n={};return(t={memoizedState:r5,baseState:r5,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ti,lastRenderedState:r5},next:null}).next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ti,lastRenderedState:n},next:null},e.memoizedState=t,null!==(e=e.alternate)&&(e.memoizedState=t),t}function tW(){return Q(r4)}function tX(){return e7().memoizedState}function tq(){return e7().memoizedState}function tY(e){for(var t=e.return;null!==t;){switch(t.tag){case 24:case 3:var n=ig(),i=eF(t,e=eU(n),n);null!==i&&(ix(i,t,n),eO(i,t,n)),t={cache:en()},e.payload=t;return}t=t.return}}function tZ(e,t,n){var i=ig();n={lane:i,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},tQ(e)?t0(t,n):null!==(n=eR(e,t,n,i))&&(ix(n,e,i),t1(n,t,i))}function tJ(e,t,n){t$(e,t,n,ig())}function t$(e,t,n,i){var r={lane:i,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(tQ(e))t0(t,r);else{var a=e.alternate;if(0===e.lanes&&(null===a||0===a.lanes)&&null!==(a=t.lastRenderedReducer))try{var s=t.lastRenderedState,o=a(s,n);if(r.hasEagerState=!0,r.eagerState=o,sW(o,s))return eA(e,t,r,0),null===lg&&eC(),!1}catch{}finally{}if(null!==(n=eR(e,t,r,i)))return ix(n,e,i),t1(n,t,i),!0}return!1}function tK(e,t,n,r){if(r={lane:2,revertLane:ed(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},tQ(e)){if(t)throw Error(i(479))}else null!==(t=eR(e,n,r,2))&&ix(t,e,2)}function tQ(e){var t=e.alternate;return e===oG||null!==t&&t===oG}function t0(e,t){oY=oq=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function t1(e,t,n){if((4194048&n)!=0){var i=t.lanes;i&=e.pendingLanes,t.lanes=n|=i,y(e,n)}}function t2(e,t,n,i){n=null==(n=n(i,t=e.memoizedState))?t:rr({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}function t3(e,t,n,i,r,a,s){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(i,a,s):!t.prototype||!t.prototype.isPureReactComponent||!ev(n,i)||!ev(r,a)}function t5(e,t,n,i){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,i),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,i),t.state!==e&&o5.enqueueReplaceState(t,t.state,null)}function t4(e,t){var n=t;if("ref"in t)for(var i in n={},t)"ref"!==i&&(n[i]=t[i]);if(e=e.defaultProps)for(var r in n===t&&(n=rr({},n)),e)void 0===n[r]&&(n[r]=e[r]);return n}function t6(e,t){try{(0,e.onUncaughtError)(t.value,{componentStack:t.stack})}catch(e){setTimeout(function(){throw e})}}function t8(e,t,n){try{(0,e.onCaughtError)(n.value,{componentStack:n.stack,errorBoundary:1===t.tag?t.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function t7(e,t,n){return(n=eU(n)).tag=3,n.payload={element:null},n.callback=function(){t6(e,t)},n}function t9(e){return(e=eU(e)).tag=3,e}function ne(e,t,n,i){var r=n.type.getDerivedStateFromError;if("function"==typeof r){var a=i.value;e.payload=function(){return r(a)},e.callback=function(){t8(t,n,i)}}var s=n.stateNode;null!==s&&"function"==typeof s.componentDidCatch&&(e.callback=function(){t8(t,n,i),"function"!=typeof r&&(null===lk?lk=new Set([this]):lk.add(this));var e=i.stack;this.componentDidCatch(i.value,{componentStack:null!==e?e:""})})}function nt(e,t,n,i){t.child=null===e?oI(t,null,n,i):oP(t,e.child,n,i)}function nn(e,t,n,i,r){n=n.render;var a=t.ref;if("ref"in i){var s={};for(var o in i)"ref"!==o&&(s[o]=i[o])}else s=i;return K(t),i=e0(e,t,n,s,a,r),o=e5(),null===e||o6?(ot&&o&&I(t),t.flags|=1,nt(e,t,i,r),t.child):(e4(e,t,r),nw(e,t,r))}function ni(e,t,n,i,r){if(null===e){var a=n.type;return"function"!=typeof a||i$(a)||void 0!==a.defaultProps||null!==n.compare?((e=i0(n.type,null,i,t,t.mode,r)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,nr(e,t,a,i,r))}
393if(a=e.child,!nT(e,r)){var s=a.memoizedProps;if((n=null!==(n=n.compare)?n:ev)(s,i)&&e.ref===t.ref)return nw(e,t,r)}return t.flags|=1,(e=iK(a,i)).ref=t.ref,e.return=t,t.child=e}function nr(e,t,n,i,r){if(null!==e){var a=e.memoizedProps;if(ev(a,i)&&e.ref===t.ref)if(o6=!1,t.pendingProps=i=a,!nT(e,r))return t.lanes=e.lanes,nw(e,t,r);else(131072&e.flags)!=0&&(o6=!0)}return nh(e,t,n,i,r)}function na(e,t,n,i){var r=i.children,a=null!==e?e.memoizedState:null;if(null===e&&null===t.stateNode&&(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),"hidden"===i.mode){if((128&t.flags)!=0){if(a=null!==a?a.baseLanes|n:n,null!==e){for(i=t.child=e.child,r=0;null!==i;)r=r|i.lanes|i.childLanes,i=i.sibling;i=r&~a}else i=0,t.child=null;return no(e,t,a,n,i)}if((0x20000000&n)==0)return i=t.lanes=0x20000000,no(e,t,null!==a?a.baseLanes|n:n,n,i);t.memoizedState={baseLanes:0,cachePool:null},null!==e&&em(t,null!==a?a.cachePool:null),null!==a?ej(t,a):eG(),eY(t)}else null!==a?(em(t,a.cachePool),ej(t,a),eZ(),t.memoizedState=null):(null!==e&&em(t,null),eG(),eZ());return nt(e,t,r,n),t.child}function ns(e,t){return null!==e&&22===e.tag||null!==t.stateNode||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function no(e,t,n,i,r){var a=ef();return t.memoizedState={baseLanes:n,cachePool:a=null===a?null:{parent:rB?oh._currentValue:oh._currentValue2,pool:a}},null!==e&&em(t,null),eG(),eY(t),null!==e&&J(e,t,i,!0),t.childLanes=r,null}function nl(e,t){return(t=ny({mode:t.mode,children:t.children},e.mode)).ref=e.ref,e.child=t,t.return=e,t}function nu(e,t,n){return oP(t,e.child,null,n),e=nl(t,t.pendingProps),e.flags|=2,eJ(t),t.memoizedState=null,e}function nc(e,t){var n=t.ref;if(null===n)null!==e&&null!==e.ref&&(t.flags|=4194816);else{if("function"!=typeof n&&"object"!=typeof n)throw Error(i(284));(null===e||e.ref!==n)&&(t.flags|=4194816)}}function nh(e,t,n,i,r){return K(t),n=e0(e,t,n,i,void 0,r),i=e5(),null===e||o6?(ot&&i&&I(t),t.flags|=1,nt(e,t,n,r),t.child):(e4(e,t,r),nw(e,t,r))}function nd(e,t,n,i,r,a){return K(t),t.updateQueue=null,n=e2(t,i,n,r),e1(e),i=e5(),null===e||o6?(ot&&i&&I(t),t.flags|=1,nt(e,t,n,a),t.child):(e4(e,t,a),nw(e,t,a))}function np(e,t,n,i,r){if(K(t),null===t.stateNode){var a=sT,s=n.contextType;"object"==typeof s&&null!==s&&(a=Q(s)),t.memoizedState=null!==(a=new n(i,a)).state&&void 0!==a.state?a.state:null,a.updater=o5,t.stateNode=a,a._reactInternals=t,(a=t.stateNode).props=i,a.state=t.memoizedState,a.refs={},eN(t),s=n.contextType,a.context="object"==typeof s&&null!==s?Q(s):sT,a.state=t.memoizedState,"function"==typeof(s=n.getDerivedStateFromProps)&&(t2(t,n,s,i),a.state=t.memoizedState),"function"==typeof n.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(s=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),s!==a.state&&o5.enqueueReplaceState(a,a.state,null),eB(t,i,a,r),ez(),a.state=t.memoizedState),"function"==typeof a.componentDidMount&&(t.flags|=4194308),i=!0}else if(null===e){a=t.stateNode;var o=t.memoizedProps,l=t4(n,o);a.props=l;var u=a.context,c=n.contextType;s=sT,"object"==typeof c&&null!==c&&(s=Q(c));var h=n.getDerivedStateFromProps;c="function"==typeof h||"function"==typeof a.getSnapshotBeforeUpdate,o=t.pendingProps!==o,c||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(o||u!==s)&&t5(t,a,i,s),oF=!1;var d=t.memoizedState;a.state=d,eB(t,i,a,r),ez(),u=t.memoizedState,o||d!==u||oF?("function"==typeof h&&(t2(t,n,h,i),u=t.memoizedState),(l=oF||t3(t,n,l,i,d,u,s))?(c||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||("function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),"function"==typeof a.componentDidMount&&(t.flags|=4194308)):("function"==typeof a.componentDidMount&&(t.flags|=4194308),t.memoizedProps=i,t.memoizedState=u),a.props=i,a.state=u,a.context=s,i=l):("function"==typeof a.componentDidMount&&(t.flags|=4194308),i=!1)}else{a=t.stateNode,eD(e,t),c=t4(n,s=t.memoizedProps),a.props=c,h=t.pendingProps,d=a.context,u=n.contextType,l=sT,"object"==typeof u&&null!==u&&(l=Q(u)),(u="function"==typeof(o=n.getDerivedStateFromProps)||"function"==typeof a.getSnapshotBeforeUpdate)||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(s!==h||d!==l)&&t5(t,a,i,l),oF=!1,d=t.memoizedState,a.state=d,eB(t,i,a,r),ez();var p=t.memoizedState;
393s!==h||d!==p||oF||null!==e&&null!==e.dependencies&&$(e.dependencies)?("function"==typeof o&&(t2(t,n,o,i),p=t.memoizedState),(c=oF||t3(t,n,c,i,d,p,l)||null!==e&&null!==e.dependencies&&$(e.dependencies))?(u||"function"!=typeof a.UNSAFE_componentWillUpdate&&"function"!=typeof a.componentWillUpdate||("function"==typeof a.componentWillUpdate&&a.componentWillUpdate(i,p,l),"function"==typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(i,p,l)),"function"==typeof a.componentDidUpdate&&(t.flags|=4),"function"==typeof a.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof a.componentDidUpdate||s===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),t.memoizedProps=i,t.memoizedState=p),a.props=i,a.state=p,a.context=l,i=c):("function"!=typeof a.componentDidUpdate||s===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),i=!1)}return a=i,nc(e,t),i=(128&t.flags)!=0,a||i?(a=t.stateNode,n=i&&"function"!=typeof n.getDerivedStateFromError?null:a.render(),t.flags|=1,null!==e&&i?(t.child=oP(t,e.child,null,r),t.child=oP(t,null,n,r)):nt(e,t,n,r),t.memoizedState=a.state,e=t.child):e=nw(e,t,r),e}function nf(e,t,n,i){return j(),t.flags|=256,nt(e,t,n,i),t.child}function nm(e){return{baseLanes:e,cachePool:eg()}}function ng(e,t,n){return e=null!==e?e.childLanes&~n:0,t&&(e|=lR),e}function nv(e,t,n){var r,a=t.pendingProps,s=!1,o=(128&t.flags)!=0;if((r=o)||(r=(null===e||null!==e.memoizedState)&&(2&oH.current)!=0),r&&(s=!0,t.flags&=-129),r=(32&t.flags)!=0,t.flags&=-33,null===e){if(ot){if(s?eX(t):eZ(),(e=oe)?null!==(e=aW(e,oi))&&(t.memoizedState={dehydrated:e,treeContext:null!==s2?{id:s3,overflow:s5}:null,retryLane:0x20000000,hydrationErrors:null},(n=i3(e)).return=t,t.child=n,s9=t,oe=null):e=null,null===e)throw z(t);return aL(e)?t.lanes=32:t.lanes=0x20000000,null}var l=a.children;return a=a.fallback,s?(eZ(),l=ny({mode:"hidden",children:l},s=t.mode),a=i1(a,s,n,null),l.return=t,a.return=t,l.sibling=a,t.child=l,(a=t.child).memoizedState=nm(n),a.childLanes=ng(e,r,n),t.memoizedState=o8,ns(null,a)):(eX(t),nx(t,l))}var u=e.memoizedState;if(null!==u&&null!==(l=u.dehydrated)){if(o)256&t.flags?(eX(t),t.flags&=-257,t=n_(e,t,n)):null!==t.memoizedState?(eZ(),t.child=e.child,t.flags|=128,t=null):(eZ(),l=a.fallback,s=t.mode,a=ny({mode:"visible",children:a.children},s),l=i1(l,s,n,null),l.flags|=2,a.return=t,l.return=t,a.sibling=l,t.child=a,oP(t,e.child,null,n),(a=t.child).memoizedState=nm(n),a.childLanes=ng(e,r,n),t.memoizedState=o8,t=ns(null,a));else if(eX(t),aL(l))r=aP(l).digest,(a=Error(i(419))).stack="",a.digest=r,W({value:a,source:null,stack:null}),t=n_(e,t,n);else if(o6||J(e,t,n,!1),r=(n&e.childLanes)!=0,o6||r){if(null!==(r=lg)&&0!==(a=_(r,n))&&a!==u.retryLane)throw u.retryLane=a,eL(e,a),ix(r,e,a),o4;aR(l)||iR(),t=n_(e,t,n)}else aR(l)?(t.flags|=192,t.child=e.child,t=null):(e=u.treeContext,rj&&(oe=aB(l),s9=t,ot=!0,on=null,oi=!1,null!==e&&D(t,e)),t=nx(t,a.children),t.flags|=4096);return t}return s?(eZ(),l=a.fallback,s=t.mode,o=(u=e.child).sibling,(a=iK(u,{mode:"hidden",children:a.children})).subtreeFlags=0x3e00000&u.subtreeFlags,null!==o?l=iK(o,l):(l=i1(l,s,n,null),l.flags|=2),l.return=t,a.return=t,a.sibling=l,t.child=a,ns(null,a),a=t.child,null===(l=e.child.memoizedState)?l=nm(n):(null!==(s=l.cachePool)?(u=rB?oh._currentValue:oh._currentValue2,s=s.parent!==u?{parent:u,pool:u}:s):s=eg(),l={baseLanes:l.baseLanes|n,cachePool:s}),a.memoizedState=l,a.childLanes=ng(e,r,n),t.memoizedState=o8,ns(e.child,a)):(eX(t),e=(n=e.child).sibling,(n=iK(n,{mode:"visible",children:a.children})).return=t,n.sibling=null,null!==e&&(null===(r=t.deletions)?(t.deletions=[e],t.flags|=16):r.push(e)),t.child=n,t.memoizedState=null,n)}function nx(e,t){return(t=ny({mode:"visible",children:t},e.mode)).return=e,e.child=t}function ny(e,n){return(e=t(22,e,null,n)).lanes=0,e}function n_(e,t,n){return oP(t,e.child,null,n),e=nx(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function nb(e,t,n){e.lanes|=t;var i=e.alternate;null!==i&&(i.lanes|=t),Y(e.return,t,n)}function nS(e,t,n,i,r,a){var s=e.memoizedState;null===s?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:i,tail:n,tailMode:r,treeForkCount:a}:(s.isBackwards=t,s.rendering=null,s.renderingStartTime=0,s.last=i,s.tail=n,s.tailMode=r,s.treeForkCount=a)}function nM(e,t,n){var i=t.pendingProps,r=i.revealOrder,a=i.tail;i=i.children;var s=oH.current,o=(2&s)!=0;if(o?(s=1&s|2,t.flags|=128):s&=1,h(oH,s),nt(e,t,i,n),i=ot?sQ:0,!o&&null!==e&&(128&e.flags)!=0)o:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&nb(e,n,t);else if(19===e.tag)nb(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break;for(;null===e.sibling;){if(null===e.return||e.return===t)break o;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(r){case"forwards":for(n=t.child,r=null;null!==n;)null!==(e=n.alternate)&&null===e$(e)&&(r=n),n=n.sibling;null===(n=r)?(r=t.child,t.child=null):(r=n.sibling,n.sibling=null),nS(t,!1,r,n,a,i);break;case"backwards":case"unstable_legacy-backwards":for(n=null,r=t.child,t.child=null;null!==r;){if(null!==(e=r.alternate)&&null===e$(e)){t.child=r;break}e=r.sibling,r.sibling=n,n=r,r=e}nS(t,!0,n,null,a,i);break;case"together":nS(t,!1,null,null,void 0,i);break;default:t.memoizedState=null}return t.child}function nw(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),lE|=t.lanes,(n&t.childLanes)==0){if(null===e)return null;else if(J(e,t,n,!1),(n&t.childLanes)==0)return null}if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=iK(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=iK(e,e.pendingProps)).return=t;n.sibling=null}return t.child}
393function nT(e,t){return(e.lanes&t)!=0||!!(null!==(e=e.dependencies)&&$(e))}function nE(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps)o6=!0;else{if(!nT(e,n)&&(128&t.flags)==0)return o6=!1,function(e,t,n){switch(t.tag){case 3:U(t,t.stateNode.containerInfo),X(t,oh,e.memoizedState.cache),j();break;case 27:case 5:O(t);break;case 4:U(t,t.stateNode.containerInfo);break;case 10:X(t,t.type,t.memoizedProps.value);break;case 31:if(null!==t.memoizedState)return t.flags|=128,eq(t),null;break;case 13:var i=t.memoizedState;if(null!==i)return null!==i.dehydrated?(eX(t),t.flags|=128,null):(n&t.child.childLanes)!=0?nv(e,t,n):(eX(t),null!==(e=nw(e,t,n))?e.sibling:null);eX(t);break;case 19:var r=(128&e.flags)!=0;if((i=(n&t.childLanes)!=0)||(J(e,t,n,!1),i=(n&t.childLanes)!=0),r){if(i)return nM(e,t,n);t.flags|=128}if(null!==(r=t.memoizedState)&&(r.rendering=null,r.tail=null,r.lastEffect=null),h(oH,oH.current),i)break;return null;case 22:return t.lanes=0,na(e,t,n,t.pendingProps);case 24:X(t,oh,e.memoizedState.cache)}return nw(e,t,n)}(e,t,n);o6=(131072&e.flags)!=0}else o6=!1,ot&&(1048576&t.flags)!=0&&P(t,sQ,t.index);switch(t.lanes=0,t.tag){case 16:o:{var r=t.pendingProps;if(e=e_(t.elementType),t.type=e,"function"==typeof e)i$(e)?(r=t4(e,r),t.tag=1,t=np(null,t,e,r,n)):(t.tag=0,t=nh(null,t,e,r,n));else{if(null!=e){var a=e.$$typeof;if(a===rp){t.tag=11,t=nn(null,t,e,r,n);break o}if(a===rg){t.tag=14,t=ni(null,t,e,r,n);break o}}throw Error(i(306,t=l(e)||e,""))}}return t;case 0:return nh(e,t,t.type,t.pendingProps,n);case 1:return a=t4(r=t.type,t.pendingProps),np(e,t,r,a,n);case 3:o:{if(U(t,t.stateNode.containerInfo),null===e)throw Error(i(387));var s=t.pendingProps;r=(a=t.memoizedState).element,eD(e,t),eB(t,s,null,n);var o=t.memoizedState;if(X(t,oh,s=o.cache),s!==a.cache&&Z(t,[oh],n,!0),ez(),s=o.element,rj&&a.isDehydrated)if(a={element:s,isDehydrated:!1,cache:o.cache},t.updateQueue.baseState=a,t.memoizedState=a,256&t.flags){t=nf(e,t,s,n);break o}else if(s!==r){W(r=C(Error(i(424)),t)),t=nf(e,t,s,n);break o}else for(rj&&(oe=ak(t.stateNode.containerInfo),s9=t,ot=!0,on=null,oi=!0),n=oI(t,null,s,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling;else{if(j(),s===r){t=nw(e,t,n);break o}nt(e,t,s,n)}t=t.child}return t;case 26:if(si)return nc(e,t),null===e?(n=ss(t.type,null,t.pendingProps,null))?t.memoizedState=n:ot||(t.stateNode=sd(t.type,t.pendingProps,s8.current,t)):t.memoizedState=ss(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:if(sv)return O(t),null===e&&sv&&ot&&(r=t.stateNode=sx(t.type,t.pendingProps,s8.current,s4.current,!1),s9=t,oi=!0,oe=aV(t.type,r,oe)),nt(e,t,t.pendingProps.children,n),nc(e,t),null===e&&(t.flags|=4194304),t.child;case 5:return null===e&&ot&&(st(t.type,t.pendingProps,s4.current),(a=r=oe)&&(null!==(r=aH(r,t.type,t.pendingProps,oi))?(t.stateNode=r,s9=t,oe=aO(r),oi=!1,a=!0):a=!1),a||z(t)),O(t),a=t.type,s=t.pendingProps,o=null!==e?e.memoizedProps:null,r=s.children,rU(a,s)?r=null:null!==o&&rU(a,o)&&(t.flags|=32),null!==t.memoizedState&&(a=e0(e,t,e3,null,null,n),rB?r4._currentValue=a:r4._currentValue2=a),nc(e,t),nt(e,t,r,n),t.child;case 6:return null===e&&ot&&(sn(t.pendingProps,s4.current),(e=n=oe)&&(null!==(n=aj(n,t.pendingProps,oi))?(t.stateNode=n,s9=t,oe=null,e=!0):e=!1),e||z(t)),null;case 13:return nv(e,t,n);case 4:return U(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=oP(t,null,r,n):nt(e,t,r,n),t.child;case 11:return nn(e,t,t.type,t.pendingProps,n);case 7:return nt(e,t,t.pendingProps,n),t.child;case 8:case 12:return nt(e,t,t.pendingProps.children,n),t.child;case 10:return r=t.pendingProps,X(t,t.type,r.value),nt(e,t,r.children,n),t.child;case 9:return a=t.type._context,r=t.pendingProps.children,K(t),r=r(a=Q(a)),t.flags|=1,nt(e,t,r,n),t.child;case 14:return ni(e,t,t.type,t.pendingProps,n);case 15:return nr(e,t,t.type,t.pendingProps,n);case 19:return nM(e,t,n);case 31:var u=e,c=t,d=n,p=c.pendingProps,f=(128&c.flags)!=0;if(c.flags&=-129,null===u){if(ot){if("hidden"===p.mode)return u=nl(c,p),c.lanes=0x20000000,ns(null,u);if(eq(c),(u=oe)?null!==(u=aG(u,oi))&&(c.memoizedState={dehydrated:u,treeContext:null!==s2?{id:s3,overflow:s5}:null,retryLane:0x20000000,hydrationErrors:null},(d=i3(u)).return=c,c.child=d,s9=c,oe=null):u=null,null===u)throw z(c);return c.lanes=0x20000000,null}return nl(c,p)}var m=u.memoizedState;if(null!==m){var g=m.dehydrated;if(eq(c),f)if(256&c.flags)c.flags&=-257,c=nu(u,c,d);else if(null!==c.memoizedState)c.child=u.child,c.flags|=128,c=null;else throw Error(i(558));else if(o6||J(u,c,d,!1),f=(d&u.childLanes)!=0,o6||f){if(null!==(p=lg)&&0!==(g=_(p,d))&&g!==m.retryLane)throw m.retryLane=g,eL(u,g),ix(p,u,g),o4;iR(),c=nu(u,c,d)}else u=m.treeContext,rj&&(oe=az(g),s9=c,ot=!0,on=null,oi=!1,null!==u&&D(c,u)),c=nl(c,p),c.flags|=4096;return c}return(u=iK(u.child,{mode:p.mode,children:p.children})).ref=c.ref,c.child=u,u.return=c,u;case 22:return na(e,t,n,t.pendingProps);case 24:return K(t),r=Q(oh),null===e?(null===(a=ef())&&(a=lg,s=en(),a.pooledCache=s,s.refCount++,null!==s&&(a.pooledCacheLanes|=n),a=s),t.memoizedState={parent:r,cache:a},eN(t),X(t,oh,a)):((e.lanes&n)!=0&&(eD(e,t),eB(t,null,null,n),ez()),a=e.memoizedState,s=t.memoizedState,a.parent!==r?(a={parent:r,cache:r},t.memoizedState=a,0===t.lanes&&(t.memoizedState=t.updateQueue.baseState=a),X(t,oh,r)):(X(t,oh,r=s.cache),r!==a.cache&&Z(t,[oh],n,!0))),nt(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(i(156,t.tag))}function nC(e){e.flags|=4}function nA(e){rH&&(e.flags|=8)}function nR(e,t){if(null!==e&&e.child===t.child)return!1;if((16&t.flags)!=0)return!0;for(e=t.child;null!==e;){if((8218&e.flags)!=0||(8218&e.subtreeFlags)!=0)return!0;e=e.sibling}return!1}function nL(e,t,n,i){if(rV)for(n=t.child;null!==n;){if(5===n.tag||6===n.tag)rN(e,n.stateNode);else if(!(4===n.tag||sv&&27===n.tag)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}else if(rH)for(var r=t.child;null!==r;){if(5===r.tag){var a=r.stateNode;n&&i&&(a=aC(a,r.type,r.memoizedProps)),rN(e,a)}else if(6===r.tag)a=r.stateNode,n&&i&&(a=aA(a,r.memoizedProps)),rN(e,a);else if(4!==r.tag){if(22===r.tag&&null!==r.memoizedState)null!==(a=r.child)&&(a.return=r),nL(e,r,!0,!0);else if(null!==r.child){r.child.return=r,r=r.child;continue}}if(r===t)break;for(;null===r.sibling;){if(null===r.return||r.return===t)return;r=r.return}r.sibling.return=r.return,r=r.sibling}}function nP(e,t){if(rH&&nR(e,t)){var n=(e=t.stateNode).containerInfo,i=aM();(function e(t,n,i,r){var a=!1;if(rH)for(var s=n.child;null!==s;){if(5===s.tag){var o=s.stateNode;
393i&&r&&(o=aC(o,s.type,s.memoizedProps)),aw(t,o)}else if(6===s.tag)o=s.stateNode,i&&r&&(o=aA(o,s.memoizedProps)),aw(t,o);else if(4!==s.tag){if(22===s.tag&&null!==s.memoizedState)null!==(a=s.child)&&(a.return=s),e(t,s,!0,!0),a=!0;else if(null!==s.child){s.child.return=s,s=s.child;continue}}if(s===n)break;for(;null===s.sibling;){if(null===s.return||s.return===n)return a;s=s.return}s.sibling.return=s.return,s=s.sibling}return a})(i,t,!1,!1),e.pendingChildren=i,nC(t),aT(n,i)}}function nI(e,t,n,i){if(rV)e.memoizedProps!==i&&nC(t);else if(rH){var r=e.stateNode,a=e.memoizedProps;if((e=nR(e,t))||a!==i){var s=s4.current;(a=aS(r,n,a,i,!e,null))===r?t.stateNode=r:(nA(t),rD(a,n,i,s)&&nC(t),t.stateNode=a,e&&nL(a,t,!1,!1))}else t.stateNode=r}}function nN(e,t,n,i,r){if((32&e.mode)!=0&&(null===n?r$(t,i):rK(t,n,i))){if(e.flags|=0x1000000,(0x13ffff40&r)===r||rQ(t,i))if(r0(e.stateNode,t,i))e.flags|=8192;else if(iE())e.flags|=8192;else throw oA=oC,oT}else e.flags&=-0x1000001}function nD(e,t){if(sf(t)){if(e.flags|=0x1000000,!sm(t))if(iE())e.flags|=8192;else throw oA=oC,oT}else e.flags&=-0x1000001}function nU(e,t){null!==t&&(e.flags|=4),16384&e.flags&&(t=22!==e.tag?m():0x20000000,e.lanes|=t,lL|=t)}function nF(e,t){if(!ot)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var i=null;null!==n;)null!==n.alternate&&(i=n),n=n.sibling;null===i?t||null===e.tail?e.tail=null:e.tail.sibling=null:i.sibling=null}}function nO(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,i=0;if(t)for(var r=e.child;null!==r;)n|=r.lanes|r.childLanes,i|=0x3e00000&r.subtreeFlags,i|=0x3e00000&r.flags,r.return=e,r=r.sibling;else for(r=e.child;null!==r;)n|=r.lanes|r.childLanes,i|=r.subtreeFlags,i|=r.flags,r.return=e,r=r.sibling;return e.subtreeFlags|=i,e.childLanes=n,t}function nk(e,t){switch(N(t),t.tag){case 3:q(oh),F();break;case 26:case 27:case 5:k(t);break;case 4:F();break;case 31:null!==t.memoizedState&&eJ(t);break;case 13:eJ(t);break;case 19:c(oH);break;case 10:q(t.type);break;case 22:case 23:eJ(t),eW(),null!==e&&c(oM);break;case 24:q(oh)}}function nz(e,t){try{var n=t.updateQueue,i=null!==n?n.lastEffect:null;if(null!==i){var r=i.next;n=r;do{if((n.tag&e)===e){i=void 0;var a=n.create;n.inst.destroy=i=a()}n=n.next}while(n!==r)}}catch(e){iG(t,t.return,e)}}function nB(e,t,n){try{var i=t.updateQueue,r=null!==i?i.lastEffect:null;if(null!==r){var a=r.next;i=a;do{if((i.tag&e)===e){var s=i.inst,o=s.destroy;if(void 0!==o){s.destroy=void 0,r=t;try{o()}catch(e){iG(r,n,e)}}}i=i.next}while(i!==a)}}catch(e){iG(t,t.return,e)}}function nV(e){var t=e.updateQueue;if(null!==t){var n=e.stateNode;try{eH(t,n)}catch(t){iG(e,e.return,t)}}}function nH(e,t,n){n.props=t4(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){iG(e,t,n)}}function nj(e,t){try{var n=e.ref;if(null!==n){switch(e.tag){case 26:case 27:case 5:var i=rC(e.stateNode);break;default:i=e.stateNode}"function"==typeof n?e.refCleanup=n(i):n.current=i}}catch(n){iG(e,t,n)}}function nG(e,t){var n=e.ref,i=e.refCleanup;if(null!==n)if("function"==typeof i)try{i()}catch(n){iG(e,t,n)}finally{e.refCleanup=null,null!=(e=e.alternate)&&(e.refCleanup=null)}else if("function"==typeof n)try{n(null)}catch(n){iG(e,t,n)}else n.current=null}function nW(e){var t=e.type,n=e.memoizedProps,i=e.stateNode;try{ac(i,t,n,e)}catch(t){iG(e,e.return,t)}}function nX(e,t,n){try{ah(e.stateNode,e.type,n,t,e)}catch(t){iG(e,e.return,t)}}function nq(e){return 5===e.tag||3===e.tag||!!si&&26===e.tag||!!sv&&27===e.tag&&sS(e.type)||4===e.tag}function nY(e){o:for(;;){for(;null===e.sibling;){if(null===e.return||nq(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(sv&&27===e.tag&&sS(e.type)||2&e.flags||null===e.child||4===e.tag)continue o;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function nZ(e,t,n){var i=e.tag;if(5===i||6===i)e=e.stateNode,t?ad(n,e,t):ao(n,e);else if(4!==i&&(sv&&27===i&&sS(e.type)&&(n=e.stateNode),null!==(e=e.child)))for(nZ(e,t,n),e=e.sibling;null!==e;)nZ(e,t,n),e=e.sibling}function nJ(e,t,n){e=e.containerInfo;try{aE(e,n)}catch(e){iG(t,t.return,e)}}function n$(e){var t=e.stateNode,n=e.memoizedProps;
393try{sy(e.type,n,t,e)}catch(t){iG(e,e.return,t)}}function nK(e,t,n){var i=n.flags;switch(n.tag){case 0:case 11:case 15:n8(e,n),4&i&&nz(5,n);break;case 1:if(n8(e,n),4&i)if(e=n.stateNode,null===t)try{e.componentDidMount()}catch(e){iG(n,n.return,e)}else{var r=t4(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(r,t,e.__reactInternalSnapshotBeforeUpdate)}catch(e){iG(n,n.return,e)}}64&i&&nV(n),512&i&&nj(n,n.return);break;case 3:if(n8(e,n),64&i&&null!==(i=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 27:case 5:e=rC(n.child.stateNode);break;case 1:e=n.child.stateNode}try{eH(i,e)}catch(e){iG(n,n.return,e)}}break;case 27:sv&&null===t&&4&i&&n$(n);case 26:case 5:if(n8(e,n),null===t){if(4&i)nW(n);else if(64&i){e=n.type,t=n.memoizedProps,r=n.stateNode;try{aK(r,e,t,n)}catch(e){iG(n,n.return,e)}}}512&i&&nj(n,n.return);break;case 12:default:n8(e,n);break;case 31:n8(e,n),4&i&&n1(e,n);break;case 13:n8(e,n),4&i&&n2(e,n),64&i&&null!==(i=n.memoizedState)&&null!==(i=i.dehydrated)&&aI(i,n=iY.bind(null,n));break;case 22:if(!(i=null!==n.memoizedState||o7)){t=null!==t&&null!==t.memoizedState||o9,r=o7;var a=o9;o7=i,(o9=t)&&!a?function e(t,n,i){for(i=i&&(8772&n.subtreeFlags)!=0,n=n.child;null!==n;){var r=n.alternate,a=t,s=n,o=s.flags;switch(s.tag){case 0:case 11:case 15:e(a,s,i),nz(4,s);break;case 1:if(e(a,s,i),"function"==typeof(a=(r=s).stateNode).componentDidMount)try{a.componentDidMount()}catch(e){iG(r,r.return,e)}if(null!==(a=(r=s).updateQueue)){var l=r.stateNode;try{var u=a.shared.hiddenCallbacks;if(null!==u)for(a.shared.hiddenCallbacks=null,a=0;a<u.length;a++)eV(u[a],l)}catch(e){iG(r,r.return,e)}}i&&64&o&&nV(s),nj(s,s.return);break;case 27:sv&&n$(s);case 26:case 5:e(a,s,i),i&&null===r&&4&o&&nW(s),nj(s,s.return);break;case 12:default:e(a,s,i);break;case 31:e(a,s,i),i&&4&o&&n1(a,s);break;case 13:e(a,s,i),i&&4&o&&n2(a,s);break;case 22:null===s.memoizedState&&e(a,s,i),nj(s,s.return);case 30:}n=n.sibling}}(e,n,(8772&n.subtreeFlags)!=0):n8(e,n),o7=r,o9=a}case 30:}}function nQ(e,t,n){for(n=n.child;null!==n;)n0(e,t,n),n=n.sibling}function n0(e,t,n){if(sG&&"function"==typeof sG.onCommitFiberUnmount)try{sG.onCommitFiberUnmount(sj,n)}catch{}switch(n.tag){case 26:if(si){o9||nG(n,t),nQ(e,t,n),n.memoizedState?sl(n.memoizedState):n.stateNode&&sh(n.stateNode);break}case 27:if(sv){o9||nG(n,t);var i=li,r=lr;sS(n.type)&&(li=n.stateNode,lr=!1),nQ(e,t,n),s_(n.stateNode),li=i,lr=r;break}case 5:o9||nG(n,t);case 6:if(rV){if(i=li,r=lr,li=null,nQ(e,t,n),li=i,lr=r,null!==li)if(lr)try{am(li,n.stateNode)}catch(e){iG(n,t,e)}else try{af(li,n.stateNode)}catch(e){iG(n,t,e)}}else nQ(e,t,n);break;case 18:rV&&null!==li&&(lr?a4(li,n.stateNode):a5(li,n.stateNode));break;case 4:rV?(i=li,r=lr,li=n.stateNode.containerInfo,lr=!0,nQ(e,t,n),li=i,lr=r):(rH&&nJ(n.stateNode,n,aM()),nQ(e,t,n));break;case 0:case 11:case 14:case 15:nB(2,n,t),o9||nB(4,n,t),nQ(e,t,n);break;case 1:o9||(nG(n,t),"function"==typeof(i=n.stateNode).componentWillUnmount&&nH(n,t,i)),nQ(e,t,n);break;case 21:default:nQ(e,t,n);break;case 22:o9=(i=o9)||null!==n.memoizedState,nQ(e,t,n),o9=i}}function n1(e,t){if(rj&&null===t.memoizedState&&null!==(e=t.alternate)&&null!==(e=e.memoizedState)){e=e.dehydrated;try{a0(e)}catch(e){iG(t,t.return,e)}}}function n2(e,t){if(rj&&null===t.memoizedState&&null!==(e=t.alternate)&&null!==(e=e.memoizedState)&&null!==(e=e.dehydrated))try{a1(e)}catch(e){iG(t,t.return,e)}}function n3(e,t){var n=function(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return null===t&&(t=e.stateNode=new lt),t;case 22:return null===(t=(e=e.stateNode)._retryCache)&&(t=e._retryCache=new lt),t;default:throw Error(i(435,e.tag))}}(e);t.forEach(function(t){if(!n.has(t)){n.add(t);var i=iZ.bind(null,e,t);t.then(i,i)}})}function n5(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var a=n[r],s=e,o=t;if(rV){var l=o;o:for(;null!==l;){switch(l.tag){case 27:if(sv){if(sS(l.type)){li=l.stateNode,lr=!1;break o}break}case 5:li=l.stateNode,lr=!1;break o;case 3:case 4:li=l.stateNode.containerInfo,lr=!0;break o}l=l.return}if(null===li)throw Error(i(160));n0(s,o,a),li=null,lr=!1}else n0(s,o,a);null!==(s=a.alternate)&&(s.return=null),a.return=null}if(13886&t.subtreeFlags)for(t=t.child;null!==t;)n4(t,e),t=t.sibling}function n4(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:n5(t,e),n6(e),4&r&&(nB(3,e,e.return),nz(3,e),nB(5,e,e.return));break;case 1:n5(t,e),n6(e),512&r&&(o9||null===n||nG(n,n.return)),64&r&&o7&&null!==(e=e.updateQueue)&&null!==(r=e.callbacks)&&(n=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=null===n?r:n.concat(r));break;case 26:if(si){var a=la;if(n5(t,e),n6(e),512&r&&(o9||null===n||nG(n,n.return)),4&r){r=null!==n?n.memoizedState:null;var s=e.memoizedState;null===n?null===s?null===e.stateNode?e.stateNode=su(a,e.type,e.memoizedProps,e):sc(a,e.type,e.stateNode):e.stateNode=so(a,s,e.memoizedProps):r!==s?(null===r?null!==n.stateNode&&sh(n.stateNode):sl(r),null===s?sc(a,e.type,e.stateNode):so(a,s,e.memoizedProps)):null===s&&null!==e.stateNode&&nX(e,e.memoizedProps,n.memoizedProps)}break}case 27:if(sv){n5(t,e),n6(e),512&r&&(o9||null===n||nG(n,n.return)),null!==n&&4&r&&nX(e,e.memoizedProps,n.memoizedProps);break}case 5:if(n5(t,e),n6(e),512&r&&(o9||null===n||nG(n,n.return)),rV){if(32&e.flags){a=e.stateNode;try{ag(a)}catch(t){iG(e,e.return,t)}}4&r&&null!=e.stateNode&&(a=e.memoizedProps,nX(e,a,null!==n?n.memoizedProps:a)),1024&r&&(le=!0)}else rH&&null!==e.alternate&&(e.alternate.stateNode=e.stateNode);break;case 6:if(n5(t,e),n6(e),4&r&&rV){if(null===e.stateNode)throw Error(i(162));r=e.memoizedProps,n=null!==n?n.memoizedProps:r,a=e.stateNode;try{au(a,n,r)}catch(t){iG(e,e.return,t)}}break;case 3:if(si?(sp(),a=la,la=sa(t.containerInfo),n5(t,e),la=a):n5(t,e),n6(e),4&r){if(rV&&rj&&null!==n&&n.memoizedState.isDehydrated)try{aQ(t.containerInfo)}catch(t){iG(e,e.return,t)}if(rH){r=t.containerInfo,n=t.pendingChildren;try{aE(r,n)}catch(t){iG(e,e.return,t)}}}le&&(le=!1,function e(t){if(1024&t.subtreeFlags)for(t=t.child;null!==t;){var n=t;e(n),5===n.tag&&1024&n.flags&&r6(n.stateNode),t=t.sibling}}(e));break;case 4:si?(n=la,la=sa(e.stateNode.containerInfo),n5(t,e),n6(e),la=n):(n5(t,e),n6(e)),4&r&&rH&&nJ(e.stateNode,e,e.stateNode.pendingChildren);break;case 12:default:n5(t,e),n6(e);break;case 31:case 19:n5(t,e),n6(e),4&r&&null!==(r=e.updateQueue)&&(e.updateQueue=null,n3(e,r));break;case 13:n5(t,e),n6(e),8192&e.child.flags&&null!==e.memoizedState!=(null!==n&&null!==n.memoizedState)&&(lD=sF()),4&r&&null!==(r=e.updateQueue)&&(e.updateQueue=null,n3(e,r));break;case 22:a=null!==e.memoizedState;var o=null!==n&&null!==n.memoizedState,l=o7,u=o9;if(o7=l||a,o9=u||o,n5(t,e),o9=u,o7=l,n6(e),8192&r&&((t=e.stateNode)._visibility=a?-2&t._visibility:1|t._visibility,a&&(null===n||o||o7||o9||function e(t){for(t=t.child;null!==t;){var n=t;switch(n.tag){case 0:case 11:case 14:case 15:nB(4,n,n.return),e(n);break;case 1:nG(n,n.return);var i=n.stateNode;"function"==typeof i.componentWillUnmount&&nH(n,n.return,i),e(n);break;case 27:sv&&s_(n.stateNode);case 26:case 5:nG(n,n.return),e(n);break;case 22:null===n.memoizedState&&e(n);break;default:e(n)}t=t.sibling}}(e)),rV)){o:if(n=null,rV)for(t=e;;){if(5===t.tag||si&&26===t.tag){if(null===n){o=n=t;try{s=o.stateNode,a?av(s):ay(o.stateNode,o.memoizedProps)}catch(e){iG(o,o.return,e)}}}else if(6===t.tag){if(null===n){o=t;try{var c=o.stateNode;a?ax(c):a_(c,o.memoizedProps)}catch(e){iG(o,o.return,e)}}}else if(18===t.tag){if(null===n){o=t;try{var h=o.stateNode;a?a6(h):a8(o.stateNode)}catch(e){iG(o,o.return,e)}}}else if((22!==t.tag&&23!==t.tag||null===t.memoizedState||t===e)&&null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break o;for(;null===t.sibling;){if(null===t.return||t.return===e)break o;n===t&&(n=null),t=t.return}n===t&&(n=null),t.sibling.return=t.return,t=t.sibling}}4&r&&null!==(r=e.updateQueue)&&null!==(n=r.retryQueue)&&(r.retryQueue=null,n3(e,n));case 30:case 21:}}function n6(e){var t=e.flags;if(2&t){try{for(var n,r=e.return;null!==r;){if(nq(r)){n=r;break}r=r.return}if(rV){if(null==n)throw Error(i(160));switch(n.tag){case 27:if(sv){var a=n.stateNode,s=nY(e);nZ(e,s,a);break}case 5:var o=n.stateNode;32&n.flags&&(ag(o),n.flags&=-33);var l=nY(e);nZ(e,l,o);break;case 3:case 4:var u=n.stateNode.containerInfo,c=nY(e);!function e(t,n,i){var r=t.tag;if(5===r||6===r)t=t.stateNode,n?ap(i,t,n):al(i,t);else if(4!==r&&(sv&&27===r&&sS(t.type)&&(i=t.stateNode,n=null),null!==(t=t.child)))for(e(t,n,i),t=t.sibling;null!==t;)e(t,n,i),t=t.sibling}(e,c,u);break;default:throw Error(i(161))}}}catch(t){iG(e,e.return,t)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function n8(e,t){if(8772&t.subtreeFlags)for(t=t.child;null!==t;)nK(e,t.alternate,t),t=t.sibling}function n7(e,t){var n=null;null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),e=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(e=t.memoizedState.cachePool.pool),e!==n&&(null!=e&&e.refCount++,null!=n&&ei(n))}function n9(e,t){e=null,null!==t.alternate&&(e=t.alternate.memoizedState.cache),(t=t.memoizedState.cache)!==e&&(t.refCount++,null!=e&&ei(e))}function ie(e,t,n,i){if(10256&t.subtreeFlags)for(t=t.child;null!==t;)it(e,t,n,i),t=t.sibling}function it(e,t,n,i){var r=t.flags;switch(t.tag){case 0:case 11:case 15:ie(e,t,n,i),2048&r&&nz(9,t);break;case 1:case 31:case 13:default:ie(e,t,n,i);break;case 3:ie(e,t,n,i),2048&r&&(e=null,null!==t.alternate&&(e=t.alternate.memoizedState.cache),(t=t.memoizedState.cache)!==e&&(t.refCount++,null!=e&&ei(e)));break;case 12:if(2048&r){ie(e,t,n,i),e=t.stateNode;try{var a=t.memoizedProps,s=a.id,o=a.onPostCommit;"function"==typeof o&&o(s,null===t.alternate?"mount":"update",e.passiveEffectDuration,-0)}catch(e){iG(t,t.return,e)}}else ie(e,t,n,i);break;case 23:break;case 22:a=t.stateNode,s=t.alternate,null!==t.memoizedState?2&a._visibility?ie(e,t,n,i):ii(e,t):2&a._visibility?ie(e,t,n,i):(a._visibility|=2,function e(t,n,i,r,a){for(a=a&&(10256&n.subtreeFlags)!=0,n=n.child;null!==n;){var s=n,o=s.flags;switch(s.tag){case 0:case 11:case 15:e(t,s,i,r,a),nz(8,s);break;case 23:break;case 22:var l=s.stateNode;null!==s.memoizedState?2&l._visibility?e(t,s,i,r,a):ii(t,s):(l._visibility|=2,e(t,s,i,r,a)),a&&2048&o&&n7(s.alternate,s);break;case 24:e(t,s,i,r,a),a&&2048&o&&n9(s.alternate,s);break;default:e(t,s,i,r,a)}n=n.sibling}}(e,t,n,i,(10256&t.subtreeFlags)!=0)),2048&r&&n7(s,t);break;case 24:ie(e,t,n,i),2048&r&&n9(t.alternate,t)}}function ii(e,t){if(10256&t.subtreeFlags)for(t=t.child;null!==t;){var n=t,i=n.flags;switch(n.tag){case 22:ii(e,n),2048&i&&n7(n.alternate,n);break;case 24:ii(e,n),2048&i&&n9(n.alternate,n);break;default:ii(e,n)}t=t.sibling}}function ir(e,t,n){if(e.subtreeFlags&ls)for(e=e.child;null!==e;
393)ia(e,t,n),e=e.sibling}function ia(e,t,n){switch(e.tag){case 26:if(ir(e,t,n),e.flags&ls)if(null!==e.memoizedState)sg(n,la,e.memoizedState,e.memoizedProps);else{var i=e.stateNode,r=e.type;e=e.memoizedProps,((0x13ffff40&t)===t||rQ(r,e))&&r2(n,i,r,e)}break;case 5:ir(e,t,n),e.flags&ls&&(i=e.stateNode,r=e.type,e=e.memoizedProps,((0x13ffff40&t)===t||rQ(r,e))&&r2(n,i,r,e));break;case 3:case 4:si?(i=la,la=sa(e.stateNode.containerInfo),ir(e,t,n),la=i):ir(e,t,n);break;case 22:null===e.memoizedState&&(null!==(i=e.alternate)&&null!==i.memoizedState?(i=ls,ls=0x1000000,ir(e,t,n),ls=i):ir(e,t,n));break;default:ir(e,t,n)}}function is(e){var t=e.alternate;if(null!==t&&null!==(e=t.child)){t.child=null;do t=e.sibling,e.sibling=null,e=t;while(null!==e)}}function io(e){var t=e.deletions;if((16&e.flags)!=0){if(null!==t)for(var n=0;n<t.length;n++){var i=t[n];ln=i,iu(i,e)}is(e)}if(10256&e.subtreeFlags)for(e=e.child;null!==e;)il(e),e=e.sibling}function il(e){switch(e.tag){case 0:case 11:case 15:io(e),2048&e.flags&&nB(9,e,e.return);break;case 3:case 12:default:io(e);break;case 22:var t=e.stateNode;null!==e.memoizedState&&2&t._visibility&&(null===e.return||13!==e.return.tag)?(t._visibility&=-3,function e(t){var n=t.deletions;if((16&t.flags)!=0){if(null!==n)for(var i=0;i<n.length;i++){var r=n[i];ln=r,iu(r,t)}is(t)}for(t=t.child;null!==t;){switch((n=t).tag){case 0:case 11:case 15:nB(8,n,n.return),e(n);break;case 22:2&(i=n.stateNode)._visibility&&(i._visibility&=-3,e(n));break;default:e(n)}t=t.sibling}}(e)):io(e)}}function iu(e,t){for(;null!==ln;){var n=ln;switch(n.tag){case 0:case 11:case 15:nB(8,n,t);break;case 23:case 22:if(null!==n.memoizedState&&null!==n.memoizedState.cachePool){var i=n.memoizedState.cachePool.pool;null!=i&&i.refCount++}break;case 24:ei(n.memoizedState.cache)}if(null!==(i=n.child))i.return=n,ln=i;else for(n=e;null!==ln;){var r=(i=ln).sibling,a=i.return;if(function e(t){var n=t.alternate;null!==n&&(t.alternate=null,e(n)),t.child=null,t.deletions=null,t.sibling=null,5===t.tag&&null!==(n=t.stateNode)&&rJ(n),t.stateNode=null,t.return=null,t.dependencies=null,t.memoizedProps=null,t.memoizedState=null,t.pendingProps=null,t.stateNode=null,t.updateQueue=null}(i),i===n){ln=null;break}if(null!==r){r.return=a,ln=r;break}ln=a}}}function ic(e){var t=rG(e);if(null!=t){if("string"!=typeof t.memoizedProps["data-testname"])throw Error(i(364));return t}if(null===(e=ae(e)))throw Error(i(362));return e.stateNode.current}function ih(e,t){var n=e.tag;switch(t.$$typeof){case ll:if(e.type===t.value)return!0;break;case lu:o:{for(t=t.value,e=[e,0],n=0;n<e.length;){var r=e[n++],a=r.tag,s=e[n++],o=t[s];if(5!==a&&26!==a&&27!==a||!ai(r)){for(;null!=o&&ih(r,o);)o=t[++s];if(s===t.length){t=!0;break o}for(r=r.child;null!==r;)e.push(r,s),r=r.sibling}}t=!1}return t;case lc:if((5===n||26===n||27===n)&&ar(e.stateNode,t.value))return!0;break;case ld:if((5===n||6===n||26===n||27===n)&&null!==(e=an(e))&&0<=e.indexOf(t.value))return!0;break;case lh:if((5===n||26===n||27===n)&&"string"==typeof(e=e.memoizedProps["data-testname"])&&e.toLowerCase()===t.value.toLowerCase())return!0;break;default:throw Error(i(365))}return!1}function id(e){switch(e.$$typeof){case ll:return"<"+(l(e.value)||"Unknown")+">";case lu:return":has("+(id(e)||"")+")";case lc:return'[role="'+e.value+'"]';case ld:return'"'+e.value+'"';case lh:return'[data-testname="'+e.value+'"]';default:throw Error(i(365))}}function ip(e,t){var n=[];e=[e,0];for(var i=0;i<e.length;){var r=e[i++],a=r.tag,s=e[i++],o=t[s];if(5!==a&&26!==a&&27!==a||!ai(r)){for(;null!=o&&ih(r,o);)o=t[++s];if(s===t.length)n.push(r);else for(r=r.child;null!==r;)e.push(r,s),r=r.sibling}}return n}function im(e,t){if(!r9)throw Error(i(363));e=ip(e=ic(e),t),t=[],e=Array.from(e);for(var n=0;n<e.length;){var r=e[n++],a=r.tag;if(5===a||26===a||27===a)ai(r)||t.push(r.stateNode);else for(r=r.child;null!==r;)e.push(r),r=r.sibling}return t}function ig(){return(2&lm)!=0&&0!==lx?lx&-lx:null!==rM.T?ed():rY()}function iv(){if(0===lR)if((0x20000000&lx)==0||ot){var e=sL;(3932160&(sL<<=1))==0&&(sL=262144),lR=e}else lR=0x20000000;return null!==(e=oB.current)&&(e.flags|=32),lR}function ix(e,t,n){(e===lg&&(2===ly||9===ly)||null!==e.cancelPendingCommit)&&(iw(e,0),ib(e,lx,lR,!1)),v(e,n),((2&lm)==0||e!==lg)&&(e===lg&&((2&lm)==0&&(lC|=n),4===lT&&ib(e,lx,lR,!1)),ea(e))}function iy(e,t,n){if((6&lm)!=0)throw Error(i(327));for(var r=!n&&(127&t)==0&&(t&e.expiredLanes)==0||f(e,t),a=r?function(e,t){var n=lm;lm|=2;var r=iC(),a=iA();lg!==e||lx!==t?(lO=null,lF=sF()+500,iw(e,t)):lS=f(e,t);o:for(;;)try{if(0!==ly&&null!==lv){t=lv;var s=l_;l:switch(ly){case 1:ly=0,l_=null,iN(e,t,s,1);break;case 2:case 9:if(ex(s)){ly=0,l_=null,iI(t);break}t=function(){2!==ly&&9!==ly||lg!==e||(ly=7),ea(e)},s.then(t,t);break o;case 3:ly=7;break o;case 4:ly=5;break o;case 7:ex(s)?(ly=0,l_=null,iI(t)):(ly=0,l_=null,iN(e,t,s,7));break;case 5:var o=null;switch(lv.tag){case 26:o=lv.memoizedState;case 5:case 27:var l=lv,u=l.type,c=l.pendingProps;if(o?sm(o):r0(l.stateNode,u,c)){ly=0,l_=null;var h=l.sibling;if(null!==h)lv=h;else{var d=l.return;null!==d?(lv=d,iD(d)):lv=null}break l}}ly=0,l_=null,iN(e,t,s,5);break;
393case 6:ly=0,l_=null,iN(e,t,s,6);break;case 8:iM(),lT=6;break o;default:throw Error(i(462))}}for(;null!==lv&&!sD();)iP(lv);break}catch(t){iT(e,t)}return oo=os=null,rM.H=r,rM.A=a,lm=n,null!==lv?0:(lg=null,lx=0,eC(),lT)}(e,t):iL(e,t,!0),s=r;;){if(0===a)lS&&!r&&ib(e,t,0,!1);else{if(n=e.current.alternate,s&&!function(e){for(var t=e;;){var n=t.tag;if((0===n||11===n||15===n)&&16384&t.flags&&null!==(n=t.updateQueue)&&null!==(n=n.stores))for(var i=0;i<n.length;i++){var r=n[i],a=r.getSnapshot;r=r.value;try{if(!sW(a(),r))return!1}catch{return!1}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}(n)){a=iL(e,t,!1),s=!1;continue}if(2===a){if(s=t,e.errorRecoveryDisabledLanes&s)var o=0;else o=0!=(o=-0x20000001&e.pendingLanes)?o:0x20000000&o?0x20000000:0;if(0!==o){t=o;o:{a=lP;var l=rj&&e.current.memoizedState.isDehydrated;if(l&&(iw(e,o).flags|=256),2!==(o=iL(e,o,!1))){if(lM&&!l){e.errorRecoveryDisabledLanes|=s,lC|=s,a=4;break o}s=lI,lI=a,null!==s&&(null===lI?lI=s:lI.push.apply(lI,s))}a=o}if(s=!1,2!==a)continue}}if(1===a){iw(e,0),ib(e,t,0,!0);break}o:{switch(r=e,s=a){case 0:case 1:throw Error(i(345));case 4:if((4194048&t)!==t)break;case 6:ib(r,t,lR,!lb);break o;case 2:lI=null;break;case 3:case 5:break;default:throw Error(i(329))}if((0x3c00000&t)===t&&10<(a=lD+300-sF())){if(ib(r,t,lR,!lb),0!==p(r,0,!0))break o;lH=t,r.timeoutHandle=rO(i_.bind(null,r,n,lI,lO,lN,t,lR,lC,lL,lb,s,"Throttled",-0,0),a);break o}i_(r,n,lI,lO,lN,t,lR,lC,lL,lb,s,null,-0,0)}}break}ea(e)}function i_(e,t,n,i,r,a,s,o,l,u,c,h,d,p){if(e.timeoutHandle=rz,8192&(h=t.subtreeFlags)||(0x1002000&h)==0x1002000){ia(t,a,h=r1());var f=(0x3c00000&a)===a?lD-sF():(4194048&a)===a?lU-sF():0;if(null!==(f=r3(h,f))){lH=a,e.cancelPendingCommit=f(iF.bind(null,e,t,a,n,i,r,s,o,l,c,h,null,d,p)),ib(e,a,s,!u);return}}iF(e,t,a,n,i,r,s,o,l)}function ib(e,t,n,i){t&=~lA,t&=~lC,e.suspendedLanes|=t,e.pingedLanes&=~t,i&&(e.warmLanes|=t),i=e.expirationTimes;for(var r=t;0<r;){var a=31-sE(r),s=1<<a;i[a]=-1,r&=~s}0!==n&&x(e,n,t)}function iS(){return(6&lm)!=0||(es(0,!1),!1)}function iM(){if(null!==lv){if(0===ly)var e=lv.return;else e=lv,oo=os=null,e6(e),oR=null,oL=0,e=lv;for(;null!==e;)nk(e.alternate,e),e=e.return;lv=null}}function iw(e,t){var n=e.timeoutHandle;n!==rz&&(e.timeoutHandle=rz,rk(n)),null!==(n=e.cancelPendingCommit)&&(e.cancelPendingCommit=null,n()),lH=0,iM(),lg=e,lv=n=iK(e.current,null),lx=t,ly=0,l_=null,lb=!1,lS=f(e,t),lM=!1,lL=lR=lA=lC=lE=lT=0,lI=lP=null,lN=!1,(8&t)!=0&&(t|=32&t);var i=e.entangledLanes;if(0!==i)for(e=e.entanglements,i&=t;0<i;){var r=31-sE(i),a=1<<r;t|=e[r],i&=~a}return lw=t,eC(),n}function iT(e,t){oG=null,rM.H=o0,t===ow||t===oE?(t=eb(),ly=3):t===oT?(t=eb(),ly=4):ly=t===o4?8:null!==t&&"object"==typeof t&&"function"==typeof t.then?6:1,l_=t,null===lv&&(lT=1,t6(e,C(t,e.current)))}function iE(){var e=oB.current;return null===e||((4194048&lx)===lx?null===oV:((0x3c00000&lx)===lx||(0x20000000&lx)!=0)&&e===oV)}function iC(){var e=rM.H;return rM.H=o0,null===e?o0:e}function iA(){var e=rM.A;return rM.A=lo,e}function iR(){lT=4,lb||(4194048&lx)!==lx&&null!==oB.current||(lS=!0),(0x7ffffff&lE)==0&&(0x7ffffff&lC)==0||null===lg||ib(lg,lx,lR,!1)}function iL(e,t,n){var i=lm;lm|=2;var r=iC(),a=iA();(lg!==e||lx!==t)&&(lO=null,iw(e,t)),t=!1;var s=lT;o:for(;;)try{if(0!==ly&&null!==lv){var o=lv,l=l_;switch(ly){case 8:iM(),s=6;break o;case 3:case 2:case 9:case 6:null===oB.current&&(t=!0);var u=ly;if(ly=0,l_=null,iN(e,o,l,u),n&&lS){s=0;break o}break;default:u=ly,ly=0,l_=null,iN(e,o,l,u)}}(function(){for(;null!==lv;)iP(lv)})(),s=lT;break}catch(t){iT(e,t)}return t&&e.shellSuspendCounter++,oo=os=null,lm=i,rM.H=r,rM.A=a,null===lv&&(lg=null,lx=0,eC()),s}function iP(e){var t=nE(e.alternate,e,lw);e.memoizedProps=e.pendingProps,null===t?iD(e):lv=t}function iI(e){var t=e,n=t.alternate;switch(t.tag){case 15:case 0:t=nd(n,t,t.pendingProps,t.type,void 0,lx);break;case 11:t=nd(n,t,t.pendingProps,t.type.render,t.ref,lx);break;case 5:e6(t);default:nk(n,t),t=nE(n,t=lv=iQ(t,lw),lw)}e.memoizedProps=e.pendingProps,null===t?iD(e):lv=t}function iN(e,t,n,r){oo=os=null,e6(t),oR=null,oL=0;var a=t.return;try{if(function(e,t,n,r,a){if(n.flags|=32768,null!==r&&"object"==typeof r&&"function"==typeof r.then){if(null!==(t=n.alternate)&&J(t,n,a,!0),null!==(n=oB.current)){switch(n.tag){case 31:case 13:return null===oV?iR():null===n.alternate&&0===lT&&(lT=3),n.flags&=-257,n.flags|=65536,n.lanes=a,r===oC?n.flags|=16384:(null===(t=n.updateQueue)?n.updateQueue=new Set([r]):t.add(r),iW(e,r,a)),!1;case 22:return n.flags|=65536,r===oC?n.flags|=16384:(null===(t=n.updateQueue)?(t={transitions:null,markerInstances:null,retryQueue:new Set([r])},n.updateQueue=t):null===(n=t.retryQueue)?t.retryQueue=new Set([r]):n.add(r),iW(e,r,a)),!1}throw Error(i(435,n.tag))}return iW(e,r,a),iR(),!1}if(ot)return null!==(t=oB.current)?((65536&t.flags)==0&&(t.flags|=256),t.flags|=65536,t.lanes=a,r!==or&&W(C(e=Error(i(422),{cause:r}),n))):(r!==or&&W(C(t=Error(i(423),{cause:r}),n)),e=e.current.alternate,e.flags|=65536,a&=-a,e.lanes|=a,r=C(r,n),a=t7(e.stateNode,r,a),ek(e,a),4!==lT&&(lT=2)),!1;var s=Error(i(520),{cause:r});if(s=C(s,n),null===lP?lP=[s]:lP.push(s),4!==lT&&(lT=2),null===t)return!0;r=C(r,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=a&-a,n.lanes|=e,e=t7(n.stateNode,r,e),ek(n,e),!1;case 1:if(t=n.type,s=n.stateNode,(128&n.flags)==0&&("function"==typeof t.getDerivedStateFromError||null!==s&&"function"==typeof s.componentDidCatch&&(null===lk||!lk.has(s))))return n.flags|=65536,a&=-a,n.lanes|=a,ne(a=t9(a),e,n,r),ek(n,a),!1}n=n.return}while(null!==n)return!1}(e,a,t,n,lx)){lT=1,t6(e,C(n,e.current)),lv=null;return}}catch(t){if(null!==a)throw lv=a,t;lT=1,t6(e,C(n,e.current)),lv=null;return}32768&t.flags?(ot||1===r?e=!0:lS||(0x20000000&lx)!=0?e=!1:(lb=e=!0,(2===r||9===r||3===r||6===r)&&null!==(r=oB.current)&&13===r.tag&&(r.flags|=16384)),iU(t,e)):iD(t)}function iD(e){var t=e;do{if((32768&t.flags)!=0)return void iU(t,lb);e=t.return;var n=function(e,t,n){var r=t.pendingProps;switch(N(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:case 1:return nO(t),null;case 3:return n=t.stateNode,r=null,null!==e&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),q(oh),F(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(null===e||null===e.child)&&(H(t)?nC(t):null===e||e.memoizedState.isDehydrated&&(256&t.flags)==0||(t.flags|=1024,G())),nP(e,t),nO(t),null;case 26:if(si){var a=t.type,s=t.memoizedState;return null===e?(nC(t),null!==s?(nO(t),nD(t,s)):(nO(t),nN(t,a,null,r,n))):s?s!==e.memoizedState?(nC(t),nO(t),nD(t,s)):(nO(t),t.flags&=-0x1000001):(s=e.memoizedProps,rV?s!==r&&nC(t):nI(e,t,a,r),nO(t),nN(t,a,s,r,n
393)),null}case 27:if(sv){if(k(t),n=s8.current,a=t.type,null!==e&&null!=t.stateNode)rV?e.memoizedProps!==r&&nC(t):nI(e,t,a,r);else{if(!r){if(null===t.stateNode)throw Error(i(166));return nO(t),null}e=s4.current,H(t)?B(t,e):(t.stateNode=e=sx(a,r,n,e,!0),nC(t))}return nO(t),null}case 5:if(k(t),a=t.type,null!==e&&null!=t.stateNode)nI(e,t,a,r);else{if(!r){if(null===t.stateNode)throw Error(i(166));return nO(t),null}if(s=s4.current,H(t))B(t,s),a2(t.stateNode,a,r,s)&&(t.flags|=64);else{var o=rI(a,r,s8.current,s,t);nA(t),nL(o,t,!1,!1),t.stateNode=o,rD(o,a,r,s)&&nC(t)}}return nO(t),nN(t,t.type,null===e?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&null!=t.stateNode)n=e.memoizedProps,rV?n!==r&&nC(t):rH&&(n!==r?(e=s8.current,n=s4.current,nA(t),t.stateNode=rF(r,e,n,t)):t.stateNode=e.stateNode);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));if(e=s8.current,n=s4.current,H(t)){if(!rj)throw Error(i(176));if(e=t.stateNode,n=t.memoizedProps,r=null,null!==(a=s9))switch(a.tag){case 27:case 5:r=a.memoizedProps}aq(e,n,t,r)||z(t,!0)}else nA(t),t.stateNode=rF(r,e,n,t)}return nO(t),null;case 31:if(n=t.memoizedState,null===e||null!==e.memoizedState){if(r=H(t),null!==n){if(null===e){if(!r)throw Error(i(318));if(!rj)throw Error(i(556));if(!(e=null!==(e=t.memoizedState)?e.dehydrated:null))throw Error(i(557));aY(e,t)}else j(),(128&t.flags)==0&&(t.memoizedState=null),t.flags|=4;nO(t),e=!1}else n=G(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return 256&t.flags?(eJ(t),t):(eJ(t),null);if((128&t.flags)!=0)throw Error(i(558))}return nO(t),null;case 13:if(r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(a=H(t),null!==r&&null!==r.dehydrated){if(null===e){if(!a)throw Error(i(318));if(!rj)throw Error(i(344));if(!(a=null!==(a=t.memoizedState)?a.dehydrated:null))throw Error(i(317));aZ(a,t)}else j(),(128&t.flags)==0&&(t.memoizedState=null),t.flags|=4;nO(t),a=!1}else a=G(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return 256&t.flags?(eJ(t),t):(eJ(t),null)}return eJ(t),(128&t.flags)!=0?(t.lanes=n,t):(n=null!==r,e=null!==e&&null!==e.memoizedState,n&&(r=t.child,a=null,null!==r.alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(a=r.alternate.memoizedState.cachePool.pool),s=null,null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(s=r.memoizedState.cachePool.pool),s!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),nU(t,t.updateQueue),nO(t),null);case 4:return F(),nP(e,t),null===e&&rW(t.stateNode.containerInfo),nO(t),null;case 10:return q(t.type),nO(t),null;case 19:if(c(oH),null===(r=t.memoizedState))return nO(t),null;if(a=(128&t.flags)!=0,null===(s=r.rendering))if(a)nF(r,!1);else{if(0!==lT||null!==e&&(128&e.flags)!=0)for(e=t.child;null!==e;){if(null!==(s=e$(e))){for(t.flags|=128,nF(r,!1),t.updateQueue=e=s.updateQueue,nU(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)iQ(n,e),n=n.sibling;return h(oH,1&oH.current|2),ot&&L(t,r.treeForkCount),t.child}e=e.sibling}null!==r.tail&&sF()>lF&&(t.flags|=128,a=!0,nF(r,!1),t.lanes=4194304)}else{if(!a)if(null!==(e=e$(s))){if(t.flags|=128,a=!0,t.updateQueue=e=e.updateQueue,nU(t,e),nF(r,!0),null===r.tail&&"hidden"===r.tailMode&&!s.alternate&&!ot)return nO(t),null}else 2*sF()-r.renderingStartTime>lF&&0x20000000!==n&&(t.flags|=128,a=!0,nF(r,!1),t.lanes=4194304);r.isBackwards?(s.sibling=t.child,t.child=s):(null!==(e=r.last)?e.sibling=s:t.child=s,r.last=s)}return null!==r.tail?(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=sF(),e.sibling=null,n=oH.current,h(oH,a?1&n|2:1&n),ot&&L(t,r.treeForkCount),e):(nO(t),null);case 22:case 23:return eJ(t),eW(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?(0x20000000&n)!=0&&(128&t.flags)==0&&(nO(t),6&t.subtreeFlags&&(t.flags|=8192)):nO(t),null!==(n=t.updateQueue)&&nU(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&c(oM),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),q(oh),nO(t),null;case 25:case 30:return null}throw Error(i(156,t.tag))}(t.alternate,t,lw);if(null!==n){lv=n;return}if(null!==(t=t.sibling)){lv=t;return}lv=t=e}while(null!==t)0===lT&&(lT=5)}function iU(e,t){do{var n=function(e,t){switch(N(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return q(oh),F(),(65536&(e=t.flags))!=0&&(128&e)==0?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return k(t),null;case 31:if(null!==t.memoizedState){if(eJ(t),null===t.alternate)throw Error(i(340));j()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;
393case 13:if(eJ(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(i(340));j()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return c(oH),null;case 4:return F(),null;case 10:return q(t.type),null;case 22:case 23:return eJ(t),eW(),null!==e&&c(oM),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return q(oh),null;default:return null}}(e.alternate,e);if(null!==n){n.flags&=32767,lv=n;return}if(null!==(n=e.return)&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&null!==(e=e.sibling)){lv=e;return}lv=e=n}while(null!==e)lT=6,lv=null}function iF(e,t,n,r,a,s,o,l,u){e.cancelPendingCommit=null;do iV();while(0!==lz)if((6&lm)!=0)throw Error(i(327));if(null!==t){if(t===e.current)throw Error(i(177));if(function(e,t,n,i,r,a){var s=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var o=e.entanglements,l=e.expirationTimes,u=e.hiddenUpdates;for(n=s&~n;0<n;){var c=31-sE(n),h=1<<c;o[c]=0,l[c]=-1;var d=u[c];if(null!==d)for(u[c]=null,c=0;c<d.length;c++){var p=d[c];null!==p&&(p.lane&=-0x20000001)}n&=~h}0!==i&&x(e,i,0),0!==a&&0===r&&0!==e.tag&&(e.suspendedLanes|=a&~(s&~t))}(e,n,s=t.lanes|t.childLanes|oU,o,l,u),e===lg&&(lv=lg=null,lx=0),lV=t,lB=e,lH=n,lj=s,lG=a,lW=r,(10256&t.subtreeFlags)!=0||(10256&t.flags)!=0?(e.callbackNode=null,e.callbackPriority=0,sI(sz,function(){return iH(),null})):(e.callbackNode=null,e.callbackPriority=0),r=(13878&t.flags)!=0,(13878&t.subtreeFlags)!=0||r){r=rM.T,rM.T=null,a=rq(),rX(2),o=lm,lm|=4;try{!function(e,t){for(rL(e.containerInfo),ln=t;null!==ln;)if(t=(e=ln).child,(1028&e.subtreeFlags)!=0&&null!==t)t.return=e,ln=t;else for(;null!==ln;){var n=(e=ln).alternate;switch(t=e.flags,e.tag){case 0:if((4&t)!=0&&null!==(t=null!==(t=e.updateQueue)?t.events:null))for(var r=0;r<t.length;r++){var a=t[r];a.ref.impl=a.nextImpl}break;case 11:case 15:case 5:case 26:case 27:case 6:case 4:case 17:break;case 1:if((1024&t)!=0&&null!==n){t=void 0,r=e,a=n.memoizedProps,n=n.memoizedState;var s=r.stateNode;try{var o=t4(r.type,a);t=s.getSnapshotBeforeUpdate(o,n),s.__reactInternalSnapshotBeforeUpdate=t}catch(e){iG(r,r.return,e)}}break;case 3:(1024&t)!=0&&rV&&ab(e.stateNode.containerInfo);break;default:if((1024&t)!=0)throw Error(i(163))}if(null!==(t=e.sibling)){t.return=e.return,ln=t;break}ln=e.return}}(e,t,n)}finally{lm=o,rX(a),rM.T=r}}lz=1,iO(),ik(),iz()}}function iO(){if(1===lz){lz=0;var e=lB,t=lV,n=(13878&t.flags)!=0;if((13878&t.subtreeFlags)!=0||n){n=rM.T,rM.T=null;var i=rq();rX(2);var r=lm;lm|=4;try{n4(t,e),rP(e.containerInfo)}finally{lm=r,rX(i),rM.T=n}}e.current=t,lz=2}}function ik(){if(2===lz){lz=0;var e=lB,t=lV,n=(8772&t.flags)!=0;if((8772&t.subtreeFlags)!=0||n){n=rM.T,rM.T=null;var i=rq();rX(2);var r=lm;lm|=4;try{nK(e,t.alternate,t)}finally{lm=r,rX(i),rM.T=n}}lz=3}}function iz(){if(4===lz||3===lz){lz=0,sU();var e=lB,t=lV,n=lH,i=lW;(10256&t.subtreeFlags)!=0||(10256&t.flags)!=0?lz=5:(lz=0,lV=lB=null,iB(e,e.pendingLanes));var r=e.pendingLanes;if(0===r&&(lk=null),S(n),t=t.stateNode,sG&&"function"==typeof sG.onCommitFiberRoot)try{sG.onCommitFiberRoot(sj,t,void 0,(128&t.current.flags)==128)}catch{}if(null!==i){t=rM.T,r=rq(),rX(2),rM.T=null;try{for(var a=e.onRecoverableError,s=0;s<i.length;s++){var o=i[s];a(o.value,{componentStack:o.stack})}}finally{rM.T=t,rX(r)}}(3&lH)!=0&&iV(),ea(e),r=e.pendingLanes,(261930&n)!=0&&(42&r)!=0?e===lq?lX++:(lX=0,lq=e):lX=0,rj&&a3(),es(0,!1)}}function iB(e,t){0==(e.pooledCacheLanes&=t)&&null!=(t=e.pooledCache)&&(e.pooledCache=null,ei(t))}function iV(){return iO(),ik(),iz(),iH()}function iH(){if(5!==lz)return!1;var e=lB,t=lj;lj=0;var n=S(lH),r=32>n?32:n;n=rM.T;var a=rq();try{rX(r),rM.T=null,r=lG,lG=null;var s=lB,o=lH;if(lz=0,lV=lB=null,lH=0,(6&lm)!=0)throw Error(i(331));var l=lm;if(lm|=4,il(s.current),it(s,s.current,o,r),lm=l,es(0,!1),sG&&"function"==typeof sG.onPostCommitFiberRoot)try{sG.onPostCommitFiberRoot(sj,s)}catch{}return!0}finally{rX(a),rM.T=n,iB(e,t)}}function ij(e,t,n){t=C(n,t),t=t7(e.stateNode,t,2),null!==(e=eF(e,t,2))&&(v(e,2),ea(e))}function iG(e,t,n){if(3===e.tag)ij(e,e,n);else for(;null!==t;){if(3===t.tag){ij(t,e,n);break}if(1===t.tag){var i=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof i.componentDidCatch&&(null===lk||!lk.has(i))){e=C(n,e),null!==(i=eF(t,n=t9(2),2))&&(ne(n,i,t,e),v(i,2),ea(i));break}}t=t.return}}function iW(e,t,n){var i=e.pingCache;
393if(null===i){i=e.pingCache=new lf;var r=new Set;i.set(t,r)}else void 0===(r=i.get(t))&&(r=new Set,i.set(t,r));r.has(n)||(lM=!0,r.add(n),e=iX.bind(null,e,t,n),t.then(e,e))}function iX(e,t,n){var i=e.pingCache;null!==i&&i.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,lg===e&&(lx&n)===n&&(4===lT||3===lT&&(0x3c00000&lx)===lx&&300>sF()-lD?(2&lm)==0&&iw(e,0):lA|=n,lL===lx&&(lL=0)),ea(e)}function iq(e,t){0===t&&(t=m()),null!==(e=eL(e,t))&&(v(e,t),ea(e))}function iY(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),iq(e,n)}function iZ(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;null!==a&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}null!==r&&r.delete(t),iq(e,n)}function iJ(e,t,n,i){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,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 i$(e){return!(!(e=e.prototype)||!e.isReactComponent)}function iK(e,n){var i=e.alternate;return null===i?((i=t(e.tag,n,e.key,e.mode)).elementType=e.elementType,i.type=e.type,i.stateNode=e.stateNode,i.alternate=e,e.alternate=i):(i.pendingProps=n,i.type=e.type,i.flags=0,i.subtreeFlags=0,i.deletions=null),i.flags=0x3e00000&e.flags,i.childLanes=e.childLanes,i.lanes=e.lanes,i.child=e.child,i.memoizedProps=e.memoizedProps,i.memoizedState=e.memoizedState,i.updateQueue=e.updateQueue,n=e.dependencies,i.dependencies=null===n?null:{lanes:n.lanes,firstContext:n.firstContext},i.sibling=e.sibling,i.index=e.index,i.ref=e.ref,i.refCleanup=e.refCleanup,i}function iQ(e,t){e.flags&=0x3e00002;var n=e.alternate;return null===n?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,e.dependencies=null===(t=n.dependencies)?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function i0(e,n,r,a,s,o){var l=0;if(a=e,"function"==typeof e)i$(e)&&(l=1);else if("string"==typeof e)l=si&&sv?sr(e,r,s4.current)?26:sb(e)?27:5:si?sr(e,r,s4.current)?26:5:sv&&sb(e)?27:5;else o:switch(e){case rx:return(e=t(31,r,n,s)).elementType=rx,e.lanes=o,e;case rl:return i1(r.children,s,o,n);case ru:l=8,s|=24;break;case rc:return(e=t(12,r,n,2|s)).elementType=rc,e.lanes=o,e;case rf:return(e=t(13,r,n,s)).elementType=rf,e.lanes=o,e;case rm:return(e=t(19,r,n,s)).elementType=rm,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case rd:l=10;break o;case rh:l=9;break o;case rp:l=11;break o;case rg:l=14;break o;case rv:l=16,a=null;break o}l=29,r=Error(i(130,null===e?"null":typeof e,"")),a=null}return(n=t(l,r,n,s)).elementType=e,n.type=a,n.lanes=o,n}function i1(e,n,i,r){return(e=t(7,e,r,n)).lanes=i,e}function i2(e,n,i){return(e=t(6,e,null,n)).lanes=i,e}function i3(e){var n=t(18,null,null,0);return n.stateNode=e,n}function i5(e,n,i){return(n=t(4,null!==e.children?e.children:[],e.key,n)).lanes=i,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function i4(e,t,n,i,r,a,s,o,l){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=rz,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=g(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=g(0),this.hiddenUpdates=g(null),this.identifierPrefix=i,this.onUncaughtError=r,this.onCaughtError=a,this.onRecoverableError=s,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=l,this.incompleteTransitions=new Map}function i6(e,n,i,r,a,s,o,l,u,c,h,d){return e=new i4(e,n,i,o,u,c,h,d,l),n=1,!0===s&&(n|=24),s=t(3,null,null,n),e.current=s,s.stateNode=e,n=en(),n.refCount++,e.pooledCache=n,n.refCount++,s.memoizedState={element:r,isDehydrated:i,cache:n},eN(s),e}function i8(e){var t=e._reactInternals;if(void 0===t)throw"function"==typeof e.render?Error(i(188)):Error(i(268,e=Object.keys(e).join(",")));return null===(e=null!==(e=s(t))?function e(t){var n=t.tag;if(5===n||26===n||27===n||6===n)return t;for(t=t.child;null!==t;){if(null!==(n=e(t)))return n;t=t.sibling}return null}(e):null)?null:rC(e.stateNode)}function i7(e,t,n,i,r,a){r=sT,null===i.context?i.context=r:i.pendingContext=r,(i=eU(t)).payload={element:n},null!==(a=void 0===a?null:a)&&(i.callback=a),null!==(n=eF(e,i,t))&&(ix(n,e,t),eO(n,e,t))}function i9(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function re(e,t){i9(e,t),(e=e.alternate)&&i9(e,t)}var rt={},rn=R.default,ri=cN.default,rr=Object.assign,ra=Symbol.for("react.element"),rs=Symbol.for("react.transitional.element"),ro=Symbol.for("react.portal"),rl=Symbol.for("react.fragment"),ru=Symbol.for("react.strict_mode"),rc=Symbol.for("react.profiler"),rh=Symbol.for("react.consumer"),rd=Symbol.for("react.context"),rp=Symbol.for("react.forward_ref"),rf=Symbol.for("react.suspense"),rm=Symbol.for("react.suspense_list"),rg=Symbol.for("react.memo"),rv=Symbol.for("react.lazy"),rx=Symbol.for("react.activity"),ry=Symbol.for("react.memo_cache_sentinel"),r_=Symbol.iterator,rb=Symbol.for("react.client.reference"),rS=Array.isArray,rM=rn.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,rw=e.rendererVersion,rT=e.rendererPackageName,rE=e.extraDevToolsConfig,rC=e.getPublicInstance,rA=e.getRootHostContext,rR=e.getChildHostContext,rL=e.prepareForCommit,rP=e.resetAfterCommit,rI=e.createInstance;e.cloneMutableInstance;var rN=e.appendInitialChild,rD=e.finalizeInitialChildren,rU=e.shouldSetTextContent,rF=e.createTextInstance;e.cloneMutableTextInstance;var rO=e.scheduleTimeout,rk=e.cancelTimeout,rz=e.noTimeout,rB=e.isPrimaryRenderer;e.warnsIfNotActing;var rV=e.supportsMutation,rH=e.supportsPersistence,rj=e.supportsHydration,rG=e.getInstanceFromNode;e.beforeActiveInstanceBlur;var rW=e.preparePortalMount;
393e.prepareScopeUpdate,e.getInstanceFromScope;var rX=e.setCurrentUpdatePriority,rq=e.getCurrentUpdatePriority,rY=e.resolveUpdatePriority;e.trackSchedulerEvent,e.resolveEventType,e.resolveEventTimeStamp;var rZ=e.shouldAttemptEagerTransition,rJ=e.detachDeletedInstance;e.requestPostPaintCallback;var r$=e.maySuspendCommit,rK=e.maySuspendCommitOnUpdate,rQ=e.maySuspendCommitInSyncRender,r0=e.preloadInstance,r1=e.startSuspendingCommit,r2=e.suspendInstance;e.suspendOnActiveViewTransition;var r3=e.waitForCommitToBeReady;e.getSuspendedCommitReason;var r5=e.NotPendingTransition,r4=e.HostTransitionContext,r6=e.resetFormInstance;e.bindToConsole;var r8=e.supportsMicrotasks,r7=e.scheduleMicrotask,r9=e.supportsTestSelectors,ae=e.findFiberRoot,at=e.getBoundingRect,an=e.getTextContent,ai=e.isHiddenSubtree,ar=e.matchAccessibilityRole,aa=e.setFocusIfFocusable,as=e.setupIntersectionObserver,ao=e.appendChild,al=e.appendChildToContainer,au=e.commitTextUpdate,ac=e.commitMount,ah=e.commitUpdate,ad=e.insertBefore,ap=e.insertInContainerBefore,af=e.removeChild,am=e.removeChildFromContainer,ag=e.resetTextContent,av=e.hideInstance,ax=e.hideTextInstance,ay=e.unhideInstance,a_=e.unhideTextInstance;e.cancelViewTransitionName,e.cancelRootViewTransitionName,e.restoreRootViewTransitionName,e.cloneRootViewTransitionContainer,e.removeRootViewTransitionClone,e.measureClonedInstance,e.hasInstanceChanged,e.hasInstanceAffectedParent,e.startViewTransition,e.startGestureTransition,e.stopViewTransition,e.getCurrentGestureOffset,e.createViewTransitionInstance;var ab=e.clearContainer;e.createFragmentInstance,e.updateFragmentInstanceFiber,e.commitNewChildToFragmentInstance,e.deleteChildFromFragmentInstance;var aS=e.cloneInstance,aM=e.createContainerChildSet,aw=e.appendChildToContainerChildSet,aT=e.finalizeContainerChildren,aE=e.replaceContainerChildren,aC=e.cloneHiddenInstance,aA=e.cloneHiddenTextInstance,aR=e.isSuspenseInstancePending,aL=e.isSuspenseInstanceFallback,aP=e.getSuspenseInstanceFallbackErrorDetails,aI=e.registerSuspenseInstanceRetry,aN=e.canHydrateFormStateMarker,aD=e.isFormStateMarkerMatching,aU=e.getNextHydratableSibling,aF=e.getNextHydratableSiblingAfterSingleton,aO=e.getFirstHydratableChild,ak=e.getFirstHydratableChildWithinContainer,az=e.getFirstHydratableChildWithinActivityInstance,aB=e.getFirstHydratableChildWithinSuspenseInstance,aV=e.getFirstHydratableChildWithinSingleton,aH=e.canHydrateInstance,aj=e.canHydrateTextInstance,aG=e.canHydrateActivityInstance,aW=e.canHydrateSuspenseInstance,aX=e.hydrateInstance,aq=e.hydrateTextInstance,aY=e.hydrateActivityInstance,aZ=e.hydrateSuspenseInstance,aJ=e.getNextHydratableInstanceAfterActivityInstance,a$=e.getNextHydratableInstanceAfterSuspenseInstance,aK=e.commitHydratedInstance,aQ=e.commitHydratedContainer,a0=e.commitHydratedActivityInstance,a1=e.commitHydratedSuspenseInstance,a2=e.finalizeHydratedChildren,a3=e.flushHydrationEvents;e.clearActivityBoundary;var a5=e.clearSuspenseBoundary;e.clearActivityBoundaryFromContainer;var a4=e.clearSuspenseBoundaryFromContainer,a6=e.hideDehydratedBoundary,a8=e.unhideDehydratedBoundary,a7=e.shouldDeleteUnhydratedTailInstances;e.diffHydratedPropsForDevWarnings,e.diffHydratedTextForDevWarnings,e.describeHydratableInstanceForDevWarnings;var a9,se,st=e.validateHydratableInstance,sn=e.validateHydratableTextInstance,si=e.supportsResources,sr=e.isHostHoistableType,sa=e.getHoistableRoot,ss=e.getResource,so=e.acquireResource,sl=e.releaseResource,su=e.hydrateHoistable,sc=e.mountHoistable,sh=e.unmountHoistable,sd=e.createHoistableInstance,sp=e.prepareToCommitHoistables,sf=e.mayResourceSuspendCommit,sm=e.preloadResource,sg=e.suspendResource,sv=e.supportsSingletons,sx=e.resolveSingletonInstance,sy=e.acquireSingletonInstance,s_=e.releaseSingletonInstance,sb=e.isHostSingletonType,sS=e.isSingletonScope,sM=[],sw=-1,sT={},sE=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(sC(e)/sA|0)|0},sC=Math.log,sA=Math.LN2,sR=256,sL=262144,sP=4194304,sI=ri.unstable_scheduleCallback,sN=ri.unstable_cancelCallback,sD=ri.unstable_shouldYield,sU=ri.unstable_requestPaint,sF=ri.unstable_now,sO=ri.unstable_ImmediatePriority,sk=ri.unstable_UserBlockingPriority,sz=ri.unstable_NormalPriority,sB=ri.unstable_IdlePriority,sV=ri.log,sH=ri.unstable_setDisableYieldValue,sj=null,sG=null,sW="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},sX="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof A.default&&"function"==typeof A.default.emit)return void A.default.emit("uncaughtException",e);console.error(e)},sq=Object.prototype.hasOwnProperty,sY=!1,sZ=new WeakMap,sJ=[],s$=0,sK=null,sQ=0,s0=[],s1=0,s2=null,s3=1,s5="",s4=u(null),s6=u(null),s8=u(null),s7=u(null),s9=null,oe=null,ot=!1,on=null,oi=!1,or=Error(i(519)),oa=u(null),os=null,oo=null,ol="u">typeof AbortController?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(t,n){e.push(n)}};this.abort=function(){t.aborted=!0,e.forEach(function(e){return e()})}},ou=ri.unstable_scheduleCallback,oc=ri.unstable_NormalPriority,oh={$$typeof:rd,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0},od=null,op=null,of=!1,om=!1,og=!1,ov=0,ox=null,oy=0,o_=0,ob=null,oS=rM.S;rM.S=function(e,t){lU=sF(),"object"==typeof t&&null!==t&&"function"==typeof t.then&&function(e,t){if(null===ox){var n=ox=[];oy=0,o_=ed(),ob={status:"pending",value:void 0,then:function(e){n.push(e)}}}oy++,t.then(ep,ep)}(0,t),null!==oS&&oS(e,t)};var oM=u(null),ow=Error(i(460)),oT=Error(i(474)),oE=Error(i(542)),oC={then:function(){}}
393,oA=null,oR=null,oL=0,oP=eE(!0),oI=eE(!1),oN=[],oD=0,oU=0,oF=!1,oO=!1,ok=u(null),oz=u(0),oB=u(null),oV=null,oH=u(0),oj=0,oG=null,oW=null,oX=null,oq=!1,oY=!1,oZ=!1,oJ=0,o$=0,oK=null,oQ=0,o0={readContext:Q,use:tt,useCallback:eK,useContext:eK,useEffect:eK,useImperativeHandle:eK,useLayoutEffect:eK,useInsertionEffect:eK,useMemo:eK,useReducer:eK,useRef:eK,useState:eK,useDebugValue:eK,useDeferredValue:eK,useTransition:eK,useSyncExternalStore:eK,useId:eK,useHostTransitionStatus:eK,useFormState:eK,useActionState:eK,useOptimistic:eK,useMemoCache:eK,useCacheRefresh:eK};o0.useEffectEvent=eK;var o1={readContext:Q,use:tt,useCallback:function(e,t){return e8().memoizedState=[e,void 0===t?null:t],e},useContext:Q,useEffect:tP,useImperativeHandle:function(e,t,n){n=null!=n?n.concat([e]):null,tR(4194308,4,tF.bind(null,t,e),n)},useLayoutEffect:function(e,t){return tR(4194308,4,e,t)},useInsertionEffect:function(e,t){tR(4,2,e,t)},useMemo:function(e,t){var n=e8();t=void 0===t?null:t;var i=e();return n.memoizedState=[i,t],i},useReducer:function(e,t,n){var i=e8();if(void 0!==n)var r=n(t);else r=t;return i.memoizedState=i.baseState=r,i.queue=e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:r},e=e.dispatch=tZ.bind(null,oG,e),[i.memoizedState,e]},useRef:function(e){return e8().memoizedState={current:e}},useState:function(e){var t=(e=tp(e)).queue,n=tJ.bind(null,oG,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:tk,useDeferredValue:function(e,t){return tV(e8(),e,t)},useTransition:function(){var e=tp(!1);return e=tj.bind(null,oG,e.queue,!0,!1),e8().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=oG,a=e8();if(ot){if(void 0===n)throw Error(i(407));n=n()}else{if(n=t(),null===lg)throw Error(i(349));(127&lx)!=0||tl(r,t,n)}a.memoizedState=n;var s={value:n,getSnapshot:t};return a.queue=s,tP(tc.bind(null,r,s,e),[e]),r.flags|=2048,tC(9,{destroy:void 0},tu.bind(null,r,s,n,t),null),n},useId:function(){var e=e8(),t=lg.identifierPrefix;if(ot){var n=s5,i=s3;t="_"+t+"R_"+(n=(i&~(1<<32-sE(i)-1)).toString(32)+n),0<(n=oJ++)&&(t+="H"+n.toString(32)),t+="_"}else t="_"+t+"r_"+(n=oQ++).toString(32)+"_";return e.memoizedState=t},useHostTransitionStatus:tW,useFormState:tS,useActionState:tS,useOptimistic:function(e){var t=e8();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=tK.bind(null,oG,!0,n),n.dispatch=t,[e,t]},useMemoCache:tn,useCacheRefresh:function(){return e8().memoizedState=tY.bind(null,oG)},useEffectEvent:function(e){var t=e8(),n={impl:e};return t.memoizedState=n,function(){if((2&lm)!=0)throw Error(i(440));return n.impl.apply(void 0,arguments)}}},o2={readContext:Q,use:tt,useCallback:tz,useContext:Q,useEffect:tI,useImperativeHandle:tO,useInsertionEffect:tD,useLayoutEffect:tU,useMemo:tB,useReducer:tr,useRef:tA,useState:function(){return tr(ti)},useDebugValue:tk,useDeferredValue:function(e,t){return tH(e7(),oW.memoizedState,e,t)},useTransition:function(){var e=tr(ti)[0],t=e7().memoizedState;return["boolean"==typeof e?e:te(e),t]},useSyncExternalStore:to,useId:tX,useHostTransitionStatus:tW,useFormState:tM,useActionState:tM,useOptimistic:function(e,t){return tf(e7(),oW,e,t)},useMemoCache:tn,useCacheRefresh:tq};o2.useEffectEvent=tN;var o3={readContext:Q,use:tt,useCallback:tz,useContext:Q,useEffect:tI,useImperativeHandle:tO,useInsertionEffect:tD,useLayoutEffect:tU,useMemo:tB,useReducer:ts,useRef:tA,useState:function(){return ts(ti)},useDebugValue:tk,useDeferredValue:function(e,t){var n=e7();return null===oW?tV(n,e,t):tH(n,oW.memoizedState,e,t)},useTransition:function(){var e=ts(ti)[0],t=e7().memoizedState;return["boolean"==typeof e?e:te(e),t]},useSyncExternalStore:to,useId:tX,useHostTransitionStatus:tW,useFormState:tE,useActionState:tE,useOptimistic:function(e,t){var n=e7();return null!==oW?tf(n,oW,e,t):(n.baseState=e,[e,n.queue.dispatch])},useMemoCache:tn,useCacheRefresh:tq};o3.useEffectEvent=tN;var o5={enqueueSetState:function(e,t,n){e=e._reactInternals;var i=ig(),r=eU(i);
393r.payload=t,null!=n&&(r.callback=n),null!==(t=eF(e,r,i))&&(ix(t,e,i),eO(t,e,i))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var i=ig(),r=eU(i);r.tag=1,r.payload=t,null!=n&&(r.callback=n),null!==(t=eF(e,r,i))&&(ix(t,e,i),eO(t,e,i))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=ig(),i=eU(n);i.tag=2,null!=t&&(i.callback=t),null!==(t=eF(e,i,n))&&(ix(t,e,n),eO(t,e,n))}},o4=Error(i(461)),o6=!1,o8={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null},o7=!1,o9=!1,le=!1,lt="function"==typeof WeakSet?WeakSet:Set,ln=null,li=null,lr=!1,la=null,ls=8192,lo={getCacheForType:function(e){var t=Q(oh),n=t.data.get(e);return void 0===n&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return Q(oh).controller.signal}},ll=0,lu=1,lc=2,lh=3,ld=4;if("function"==typeof Symbol&&Symbol.for){var lp=Symbol.for;ll=lp("selector.component"),lu=lp("selector.has_pseudo_class"),lc=lp("selector.role"),lh=lp("selector.test_id"),ld=lp("selector.text")}var lf="function"==typeof WeakMap?WeakMap:Map,lm=0,lg=null,lv=null,lx=0,ly=0,l_=null,lb=!1,lS=!1,lM=!1,lw=0,lT=0,lE=0,lC=0,lA=0,lR=0,lL=0,lP=null,lI=null,lN=!1,lD=0,lU=0,lF=1/0,lO=null,lk=null,lz=0,lB=null,lV=null,lH=0,lj=0,lG=null,lW=null,lX=0,lq=null;return rt.attemptContinuousHydration=function(e){if(13===e.tag||31===e.tag){var t=eL(e,0x4000000);null!==t&&ix(t,e,0x4000000),re(e,0x4000000)}},rt.attemptHydrationAtCurrentPriority=function(e){if(13===e.tag||31===e.tag){var t=ig(),n=eL(e,t=b(t));null!==n&&ix(n,e,t),re(e,t)}},rt.attemptSynchronousHydration=function(e){switch(e.tag){case 3:if((e=e.stateNode).current.memoizedState.isDehydrated){var t=d(e.pendingLanes);if(0!==t){for(e.pendingLanes|=2,e.entangledLanes|=2;t;){var n=1<<31-sE(t);e.entanglements[1]|=n,t&=~n}ea(e),(6&lm)==0&&(lF=sF()+500,es(0,!1))}}break;case 31:case 13:null!==(t=eL(e,2))&&ix(t,e,2),iS(),re(e,2)}},rt.batchedUpdates=function(e,t){return e(t)},rt.createComponentSelector=function(e){return{$$typeof:ll,value:e}},rt.createContainer=function(e,t,n,i,r,a,s,o,l,u){return i6(e,t,!1,null,n,i,a,null,s,o,l,u)},rt.createHasPseudoClassSelector=function(e){return{$$typeof:lu,value:e}},rt.createHydrationContainer=function(e,t,n,i,r,a,s,o,l,u,c,h,d,p){var f;return(e=i6(n,i,!0,e,r,a,o,p,l,u,c,h)).context=sT,n=e.current,(r=eU(i=b(i=ig()))).callback=null!=(f=t)?f:null,eF(n,r,i),t=i,e.current.lanes=t,v(e,t),ea(e),e},rt.createPortal=function(e,t,n){var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:ro,key:null==i?null:""+i,children:e,containerInfo:t,implementation:n}},rt.createRoleSelector=function(e){return{$$typeof:lc,value:e}},rt.createTestNameSelector=function(e){return{$$typeof:lh,value:e}},rt.createTextSelector=function(e){return{$$typeof:ld,value:e}},rt.defaultOnCaughtError=function(e){console.error(e)},rt.defaultOnRecoverableError=function(e){sX(e)},rt.defaultOnUncaughtError=function(e){sX(e)},rt.deferredUpdates=function(e){var t=rM.T,n=rq();try{return rX(32),rM.T=null,e()}finally{rX(n),rM.T=t}},rt.discreteUpdates=function(e,t,n,i,r){var a=rM.T,s=rq();try{return rX(2),rM.T=null,e(t,n,i,r)}finally{rX(s),rM.T=a,0===lm&&(lF=sF()+500)}},rt.findAllNodes=im,rt.findBoundingRects=function(e,t){if(!r9)throw Error(i(363));t=im(e,t),e=[];for(var n=0;n<t.length;n++)e.push(at(t[n]));for(t=e.length-1;0<t;t--){n=e[t];for(var r=n.x,a=r+n.width,s=n.y,o=s+n.height,l=t-1;0<=l;l--)if(t!==l){var u=e[l],c=u.x,h=c+u.width,d=u.y,p=d+u.height;if(r>=c&&s>=d&&a<=h&&o<=p){e.splice(t,1);break}if(r!==c||n.width!==u.width||p<s||d>o){if(!(s!==d||n.height!==u.height||h<r||c>a)){c>r&&(u.width+=c-r,u.x=r),h<a&&(u.width=a-c),e.splice(t,1);break}}else{d>s&&(u.height+=d-s,u.y=s),p<o&&(u.height=o-d),e.splice(t,1);break}}}return e},rt.findHostInstance=i8,rt.findHostInstanceWithNoPortals=function(e){return null===(e=null!==(e=s(e))?function e(t){var n=t.tag;if(5===n||26===n||27===n||6===n)return t;for(t=t.child;null!==t;){if(4!==t.tag&&null!==(n=e(t)))return n;t=t.sibling}return null}(e):null)?null:rC(e.stateNode)},rt.findHostInstanceWithWarning=function(e){return i8(e)},rt.flushPassiveEffects=iV,rt.flushSyncFromReconciler=function(e){var t=lm;lm|=1;var n=rM.T,i=rq();try{if(rX(2),rM.T=null,e)return e()}finally{rX(i),rM.T=n,(6&(lm=t))==0&&es(0,!1)}},rt.flushSyncWork=iS,rt.focusWithin=function(e,t){if(!r9)throw Error(i(363));for(t=Array.from(t=ip(e=ic(e),t)),e=0;e<t.length;){var n=t[e++],r=n.tag;if(!ai(n)){if((5===r||26===r||27===r)&&aa(n.stateNode))return!0;for(n=n.child;null!==n;)t.push(n),n=n.sibling}}return!1},rt.getFindAllNodesFailureDescription=function(e,t){if(!r9)throw Error(i(363));var n=0,r=[];e=[ic(e),0];for(var a=0;a<e.length;){var s=e[a++],o=s.tag,l=e[a++],u=t[l];if((5!==o&&26!==o&&27!==o||!ai(s))&&(ih(s,u)&&(r.push(id(u)),++l>n&&(n=l)),l<t.length))for(s=s.child;null!==s;)e.push(s,l),s=s.sibling}if(n<t.length){for(e=[];n<t.length;n++)e.push(id(t[n]));return`findAllNodes was able to match part of the selector: 394 `+r.join(" > ")+` 395 396No matching component was found for: 397 `+e.join(" > ")}return null},rt.getPublicRootInstance=function(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 27:case 5:return rC(e.child.stateNode);default:return e.child.stateNode}},rt.injectIntoDevTools=function(){var e={bundleType:0,version:rw,rendererPackageName:rT,currentDispatcherRef:rM,reconcilerVersion:"19.2.0"};if(null!==rE&&(e.rendererConfig=rE),typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")e=!1;else{var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;
397if(t.isDisabled||!t.supportsFiber)e=!0;else{try{sj=t.inject(e),sG=t}catch{}e=!!t.checkDCE}}return e},rt.isAlreadyRendering=function(){return(6&lm)!=0},rt.observeVisibleRects=function(e,t,n,r){if(!r9)throw Error(i(363));var a=as(e=im(e,t),n,r).disconnect;return{disconnect:function(){a()}}},rt.shouldError=function(){return null},rt.shouldSuspend=function(){return!1},rt.startHostTransition=function(e,t,r,a){if(5!==e.tag)throw Error(i(476));var s=tG(e).queue;tj(e,s,t,r5,null===r?n:function(){var t=tG(e);return null===t.next&&(t=e.alternate.memoizedState),t$(e,t.next.queue,{},ig()),r(a)})},rt.updateContainer=function(e,t,n,i){var r=t.current,a=ig();return i7(r,a,e,t,n,i),a},rt.updateContainerSync=function(e,t,n,i){return i7(t.current,2,e,t,n,i),2},rt},hu.exports.default=hu.exports,Object.defineProperty(hu.exports,"__esModule",{value:!0})),hl.exports=hu.exports),(b=hl.exports)&&b.__esModule&&Object.prototype.hasOwnProperty.call(b,"default"))?b.default:b,hh={},hd=/^three(?=[A-Z])/,hp=e=>`${e[0].toUpperCase()}${e.slice(1)}`,hf=0;function hm(e,t){let n=hp(e),i=hh[n];if("primitive"!==e&&!i)throw Error(`R3F: ${n} 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("primitive"===e&&!t.object)throw Error("R3F: Primitives without 'object' are invalid!");if(void 0!==t.args&&!Array.isArray(t.args))throw Error("R3F: The args prop must be an array!")}function hg(e){if(e.isHidden){var t;e.props.attach&&null!=(t=e.parent)&&t.object?c1(e.parent,e):c9(e.object)&&!1!==e.props.visible&&(e.object.visible=!0),e.isHidden=!1,c7(e)}}function hv(e,t,n){let i=t.root.getState();if(e.parent||e.object===i.scene){if(!t.object){var r,a;let e=hh[hp(t.type)];t.object=null!=(r=t.props.object)?r:new e(...null!=(a=t.props.args
397)?a:[]),t.object.__r3f=t}if(c8(t.object,t.props),t.props.attach)c1(e,t);else if(c9(t.object)&&c9(e.object)){let i=e.object.children.indexOf(null==n?void 0:n.object);if(n&&-1!==i){let n=e.object.children.indexOf(t.object);-1!==n?(e.object.children.splice(n,1),e.object.children.splice(n<i?i-1:i,0,t.object)):(t.object.parent=e.object,e.object.children.splice(i,0,t.object),t.object.dispatchEvent({type:"added"}),e.object.dispatchEvent({type:"childadded",child:t.object}))}else e.object.add(t.object)}for(let e of t.children)hv(t,e);c7(t)}}function hx(e,t){t&&(t.parent=e,e.children.push(t),hv(e,t))}function hy(e,t,n){if(!t||!n)return;t.parent=e;let i=e.children.indexOf(n);-1!==i?e.children.splice(i,0,t):e.children.push(t),hv(e,t,n)}function h_(e){if("function"==typeof e.dispose){let t=()=>{try{e.dispose()}catch{}};"u">typeof IS_REACT_ACT_ENVIRONMENT?t():(0,cN.unstable_scheduleCallback)(cN.unstable_IdlePriority,t)}}function hb(e,t,n){if(!t)return;t.parent=null;let i=e.children.indexOf(t);-1!==i&&e.children.splice(i,1),t.props.attach?c2(e,t):c9(t.object)&&c9(e.object)&&(e.object.remove(t.object),function(e,t){let{internal:n}=e.getState();n.interaction=n.interaction.filter(e=>e!==t),n.initialHits=n.initialHits.filter(e=>e!==t),n.hovered.forEach((e,i)=>{(e.eventObject===t||e.object===t)&&n.hovered.delete(i)}),n.capturedMap.forEach((e,i)=>{ht(n.capturedMap,t,e,i)})}(cH(t),t.object));let r=null!==t.props.dispose&&!1!==n;for(let e=t.children.length-1;e>=0;e--){let n=t.children[e];hb(t,n,r)}t.children.length=0,delete t.object.__r3f,r&&"primitive"!==t.type&&"Scene"!==t.object.type&&h_(t.object),void 0===n&&c7(t)}let hS=[],hM=()=>{},hw={},hT=0,hE=(S={isPrimaryRenderer:!1,warnsIfNotActing:!1,supportsMutation:!0,supportsPersistence:!1,supportsHydration:!1,createInstance:function(e,t,n){var i;return hm(e=hp(e)in hh?e:e.replace(hd,""),t),"primitive"===e&&null!=(i=t.object)&&i.__r3f&&delete t.object.__r3f,cK(t.object,n,e,t)},removeChild:hb,appendChild:hx,appendInitialChild:hx,insertBefore:hy,appendChildToContainer(e,t){let n=e.getState().scene.__r3f;t&&n&&hx(n,t)},removeChildFromContainer(e,t){let n=e.getState().scene.__r3f;t&&n&&hb(n,t)},insertInContainerBefore(e,t,n){let i=e.getState().scene.__r3f;t&&n&&i&&hy(i,t,n)},getRootHostContext:()=>hw,getChildHostContext:()=>hw,commitUpdate(e,t,n,i,r){var a,s,o;hm(t,i);let l=!1;if("primitive"===e.type&&n.object!==i.object||(null==(a=i.args)?void 0:a.length)!==(null==(s=n.args)?void 0:s.length)?l=!0:null!=(o=i.args)&&o.some((e,t)=>{var i;return e!==(null==(i=n.args)?void 0:i[t])})&&(l=!0),l)hS.push([e,{...i},r]);else{let t=function(e,t){let n={};for(let i in t)if(!c3.includes(i)&&!cJ.equ(t[i],e.props[i]))for(let e in n[i]=t[i],t)e.startsWith(`${i}-`)&&(n[e]=t[e]);for(let i in e.props){if(c3.includes(i)||t.hasOwnProperty(i))continue;let{root:r,key:a}=cQ(e.object,i);if(r.constructor&&0===r.constructor.length){let e=function(e){let t=c5.get(e.constructor);try{t||(t=new e.constructor,c5.set(e.constructor,t))}catch(e){}return t}(r);cJ.und(e)||(n[a]=e[a])}else n[a]=0}return n}(e,i);Object.keys(t).length&&(Object.assign(e.props,t),c8(e.object,t))}(null===r.sibling||(4&r.flags)==0)&&function(){for(let[e]of hS){let t=e.parent;if(t)for(let n of(e.props.attach?c2(t,e):c9(e.object)&&c9(t.object)&&t.object.remove(e.object),e.children))n.props.attach?c2(e,n):c9(n.object)&&c9(e.object)&&e.object.remove(n.object);e.isHidden&&hg(e),e.object.__r3f&&delete e.object.__r3f,"primitive"!==e.type&&h_(e.object)}for(let[i,r,a]of hS){i.props=r;let s=i.parent;if(s){let r=hh[hp(i.type)];i.object=null!=(e=i.props.object)?e:new r(...null!=(t=i.props.args)?t:[]),i.object.__r3f=i;var e,t,n=i.object;for(let e of[a,a.alternate])if(null!==e)if("function"==typeof e.ref){null==e.refCleanup||e.refCleanup();let t=e.ref(n);"function"==typeof t&&(e.refCleanup=t)}else e.ref&&(e.ref.current=n);for(let e of(c8(i.object,i.props),i.props.attach?c1(s,i):c9(i.object)&&c9(s.object)&&s.object.add(i.object),i.children))e.props.attach?c1(i,e):c9(e.object)&&c9(i.object)&&i.object.add(e.object);c7(i)}}hS.length=0}()},finalizeInitialChildren:()=>!1,commitMount(){},getPublicInstance:e=>null==e?void 0:e.object,prepareForCommit:()=>null,preparePortalMount:e=>cK(e.getState().scene,e,"",{}),resetAfterCommit:()=>{},shouldSetTextContent:()=>!1,clearContainer:()=>!1,hideInstance:function(e){if(!e.isHidden){var t;e.props.attach&&null!=(t=e.parent)&&t.object?c2(e.parent,e):c9(e.object)&&(e.object.visible=!1),e.isHidden=!0,c7(e)}},unhideInstance:hg,createTextInstance:hM,hideTextInstance:hM,unhideTextInstance:hM,scheduleTimeout:"function"==typeof setTimeout?setTimeout:void 0,cancelTimeout:"function"==typeof clearTimeout?clearTimeout:void 0,noTimeout:-1,getInstanceFromNode:()=>null,beforeActiveInstanceBlur(){},afterActiveInstanceBlur(){},detachDeletedInstance(){}
397,prepareScopeUpdate(){},getInstanceFromScope:()=>null,shouldAttemptEagerTransition:()=>!1,trackSchedulerEvent:()=>{},resolveEventType:()=>null,resolveEventTimeStamp:()=>-1.1,requestPostPaintCallback(){},maySuspendCommit:()=>!1,preloadInstance:()=>!0,suspendInstance(){},waitForCommitToBeReady:()=>null,NotPendingTransition:null,HostTransitionContext:R.createContext(null),setCurrentUpdatePriority(e){hT=e},getCurrentUpdatePriority:()=>hT,resolveUpdatePriority(){var e;if(0!==hT)return hT;switch("u">typeof window&&(null==(e=window.event)?void 0:e.type)){case"click":case"contextmenu":case"dblclick":case"pointercancel":case"pointerdown":case"pointerup":return 2;case"pointermove":case"pointerout":case"pointerover":case"pointerenter":case"pointerleave":case"wheel":return 8;default:return 32}},resetFormInstance(){},rendererPackageName:"@react-three/fiber",rendererVersion:"9.5.0",applyViewTransitionName(e,t,n){},restoreViewTransitionName(e,t){},cancelViewTransitionName(e,t,n){},cancelRootViewTransitionName(e){},restoreRootViewTransitionName(e){},InstanceMeasurement:null,measureInstance:e=>null,wasInstanceInViewport:e=>!0,hasInstanceChanged:(e,t)=>!1,hasInstanceAffectedParent:(e,t)=>!1,suspendOnActiveViewTransition(e,t){},startGestureTransition:()=>null,startViewTransition:()=>null,stopViewTransition(e){},createViewTransitionInstance:e=>null,getCurrentGestureOffset(e){throw Error("startGestureTransition is not yet supported in react-three-fiber.")},cloneMutableInstance:(e,t)=>e,cloneMutableTextInstance:e=>e,cloneRootViewTransitionContainer(e){throw Error("Not implemented.")},removeRootViewTransitionClone(e,t){throw Error("Not implemented.")},createFragmentInstance:e=>null,updateFragmentInstanceFiber(e,t){},commitNewChildToFragmentInstance(e,t){},deleteChildFromFragmentInstance(e,t){},measureClonedInstance:e=>null,maySuspendCommitOnUpdate:(e,t,n)=>!1,maySuspendCommitInSyncRender:(e,t)=>!1,startSuspendingCommit:()=>null,getSuspendedCommitReason:(e,t)=>null},(x=hc(S)).injectIntoDevTools(),x),hC=new Map,hA={objects:"shallow",strict:!1};function hR({store:e,children:t,onCreated:n,rootElement:i}){return cG(()=>{let t=e.getState();t.set(e=>({internal:{...e.internal,active:!0}})),n&&n(t),e.getState().events.connected||null==t.events.connect||t.events.connect(i)},[]),(0,T.jsx)(hi.Provider,{value:e,children:t})}function hL(e,t){let n=hC.get(e),i=null==n?void 0:n.fiber;if(i){let r=null==n?void 0:n.store.getState();r&&(r.internal.active=!1),hE.updateContainer(null,i,null,()=>{r&&setTimeout(()=>{try{null==r.events.disconnect||r.events.disconnect(),null==(n=r.gl)||null==(i=n.renderLists)||null==i.dispose||i.dispose(),null==(a=r.gl)||null==a.forceContextLoss||a.forceContextLoss(),null!=(s=r.gl)&&s.xr&&r.xr.disconnect();var n,i,a,s,o=r.scene;for(let e in"Scene"!==o.type&&(null==o.dispose||o.dispose()),o){let t=o[e];(null==t?void 0:t.type)!=="Scene"&&(null==t||null==t.dispose||t.dispose())}hC.delete(e),t&&t(e)}catch(e){}},500)})}}let hP=new Set,hI=new Set,hN=new Set;function hD(e,t){if(e.size)for(let{callback:n}of e.values())n(t)}function hU(e,t){switch(e){case"before":return hD(hP,t);case"after":return hD(hI,t);case"tail":return hD(hN,t)}}function hF(e,t,n){let i=t.clock.getDelta();"never"===t.frameloop&&"number"==typeof e&&(i=e-t.clock.elapsedTime,t.clock.oldTime=t.clock.elapsedTime,t.clock.elapsedTime=e),s=t.internal.subscribers;for(let e=0;e<s.length;e++)(o=s[e]).ref.current(o.store.getState(),i,n);return!t.internal.priority&&t.gl.render&&t.gl.render(t.scene,t.camera),t.internal.frames=Math.max(0,t.internal.frames-1),"always"===t.frameloop?1:t.internal.frames}let hO=!1,hk=!1;function hz(e){for(let n of(u=requestAnimationFrame(hz),hO=!0,l=0,hU("before",e),hk=!0,hC.values())){var t;(c=n.store.getState()).internal.active&&("always"===c.frameloop||c.internal.frames>0)&&!(null!=(t=c.gl.xr)&&t.isPresenting)&&(l+=hF(e,c))}if(hk=!1,hU("after",e),0===l)return hU("tail",e),hO=!1,cancelAnimationFrame(u)}function hB(e,t=1){var n;if(!e)return hC.forEach(e=>hB(e.store.getState(),t));(null==(n=e.gl.xr)||!n.isPresenting)&&e.internal.active&&"never"!==e.frameloop&&(t>1?e.internal.frames=Math.min(60,e.internal.frames+t):hk?e.internal.frames=2:e.internal.frames=1,hO||(hO=!0,requestAnimationFrame(hz)))}function hV(e,t=!0,n,i){if(t&&hU("before",e),n)hF(e,n,i);else for(let t of hC.values())hF(e,t.store.getState());t&&hU("after",e)}
397let hH={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 hj(e){let{handlePointer:t}=function(e){function t(e){return e.filter(e=>["Move","Over","Enter","Out","Leave"].some(t=>{var n;return null==(n=e.__r3f)?void 0:n.handlers["onPointer"+t]}))}function n(t){let{internal:n}=e.getState();for(let e of n.hovered.values())if(!t.length||!t.find(t=>t.object===e.object&&t.index===e.index&&t.instanceId===e.instanceId)){let i=e.eventObject.__r3f;if(n.hovered.delete(he(e)),null!=i&&i.eventCount){let n=i.handlers,r={...e,intersections:t};null==n.onPointerOut||n.onPointerOut(r),null==n.onPointerLeave||n.onPointerLeave(r)}}}function i(e,t){for(let n=0;n<t.length;n++){let i=t[n].__r3f;null==i||null==i.handlers.onPointerMissed||i.handlers.onPointerMissed(e)}}return{handlePointer:function(r){switch(r){case"onPointerLeave":case"onPointerCancel":return()=>n([]);case"onLostPointerCapture":return t=>{let{internal:i}=e.getState();"pointerId"in t&&i.capturedMap.has(t.pointerId)&&requestAnimationFrame(()=>{i.capturedMap.has(t.pointerId)&&(i.capturedMap.delete(t.pointerId),n([]))})}}return function(a){let{onPointerMissed:s,internal:o}=e.getState();o.lastEvent.current=a;let l="onPointerMove"===r,u="onClick"===r||"onContextMenu"===r||"onDoubleClick"===r,c=function(t,n){let i=e.getState(),r=new Set,a=[],s=n?n(i.internal.interaction):i.internal.interaction;for(let e=0;e<s.length;e++){let t=cZ(s[e]);t&&(t.raycaster.camera=void 0)}i.previousRoot||null==i.events.compute||i.events.compute(t,i);let o=s.flatMap(function(e){let n=cZ(e);if(!n||!n.events.enabled||null===n.raycaster.camera)return[];if(void 0===n.raycaster.camera){var i;null==n.events.compute||n.events.compute(t,n,null==(i=n.previousRoot)?void 0:i.getState()),void 0===n.raycaster.camera&&(n.raycaster.camera=null)}return n.raycaster.camera?n.raycaster.intersectObject(e,!0):[]}).sort((e,t)=>{let n=cZ(e.object),i=cZ(t.object);return n&&i&&i.events.priority-n.events.priority||e.distance-t.distance}).filter(e=>{let t=he(e);return!r.has(t)&&(r.add(t),!0)});for(let e of(i.events.filter&&(o=i.events.filter(o,i)),o)){let t=e.object;for(;t;){var l;null!=(l=t.__r3f)&&l.eventCount&&a.push({...e,eventObject:t}),t=t.parent}}if("pointerId"in t&&i.internal.capturedMap.has(t.pointerId))for(let e of i.internal.capturedMap.get(t.pointerId).values())r.has(he(e.intersection))||a.push(e.intersection);return a}(a,l?t:void 0),h=u?function(t){let{internal:n}=e.getState(),i=t.offsetX-n.initialClick[0],r=t.offsetY-n.initialClick[1];return Math.round(Math.sqrt(i*i+r*r))}(a):0;"onPointerDown"===r&&(o.initialClick=[a.offsetX,a.offsetY],o.initialHits=c.map(e=>e.eventObject)),u&&!c.length&&h<=2&&(i(a,o.interaction),s&&s(a)),l&&n(c),!function(e,t,i,r){if(e.length){let a={stopped:!1};for(let s of e){let o=cZ(s.object);if(o||s.object.traverseAncestors(e=>{let t=cZ(e);if(t)return o=t,!1}),o){let{raycaster:l,pointer:u,camera:c,internal:h}=o,d=new eg(u.x,u.y,0).unproject(c),p=e=>{var t,n;return null!=(t=null==(n=h.capturedMap.get(e))?void 0:n.has(s.eventObject))&&t},f=e=>{let n={intersection:s,target:t.target};h.capturedMap.has(e)?h.capturedMap.get(e).set(s.eventObject,n):h.capturedMap.set(e,new Map([[s.eventObject,n]])),t.target.setPointerCapture(e)},m=e=>{let t=h.capturedMap.get(e);t&&ht(h.capturedMap,s.eventObject,t,e)},g={};for(let e in t){let n=t[e];"function"!=typeof n&&(g[e]=n)}let v={...s,...g,pointer:u,intersections:e,stopped:a.stopped,delta:i,unprojectedPoint:d,ray:l.ray,camera:c,stopPropagation(){let i="pointerId"in t&&h.capturedMap.get(t.pointerId);(!i||i.has(s.eventObject))&&(v.stopped=a.stopped=!0,h.hovered.size&&Array.from(h.hovered.values()).find(e=>e.eventObject===s.eventObject)&&n([...e.slice(0,e.indexOf(s)),s]))},target:{hasPointerCapture:p,setPointerCapture:f,releasePointerCapture:m},currentTarget:{hasPointerCapture:p,setPointerCapture:f,releasePointerCapture:m},nativeEvent:t};if(r(v),!0===a.stopped)break}}}}(c,a,h,function(e){let t=e.eventObject,n=t.__r3f;if(!(null!=n&&n.eventCount))return;let s=n.handlers;if(l){if(s.onPointerOver||s.onPointerEnter||s.onPointerOut||s.onPointerLeave){let t=he(e),n=o.hovered.get(t);n?n.stopped&&e.stopPropagation():(o.hovered.set(t,e),null==s.onPointerOver||s.onPointerOver(e),null==s.onPointerEnter||s.onPointerEnter(e))}null==s.onPointerMove||s.onPointerMove(e)}else{let n=s[r];n?(!u||o.initialHits.includes(t))&&(i(a,o.interaction.filter(e=>!o.initialHits.includes(e))),n(e)):u&&o.initialHits.includes(t)&&i(a,o.interaction.filter(e=>!o.initialHits.includes(e)))}})}}}}(e);return{priority:1,enabled:!0,compute(e,t,n){t.pointer.set(e.offsetX/t.size.width*2-1,-(2*(e.offsetY/t.size.height))+1),t.raycaster.setFromCamera(t.pointer,t.camera)},connected:void 0,handlers:Object.keys(hH).reduce((e,n)=>({...e,[n]:t(n)}),{}),update:()=>{var t;let{events:n,internal:i}=e.getState();null!=(t=i.lastEvent)&&t.current&&n.handlers&&n.handlers.onPointerMove(i.lastEvent.current)},connect:t=>
397{let{set:n,events:i}=e.getState();if(null==i.disconnect||i.disconnect(),n(e=>({events:{...e.events,connected:t}})),i.handlers)for(let e in i.handlers){let n=i.handlers[e],[r,a]=hH[e];t.addEventListener(r,n,{passive:a})}},disconnect:()=>{let{set:t,events:n}=e.getState();if(n.connected){if(n.handlers)for(let e in n.handlers){let t=n.handlers[e],[i]=hH[e];n.connected.removeEventListener(i,t)}t(e=>({events:{...e.events,connected:void 0}}))}}}}e.i(8560),e.s(["ACESFilmicToneMapping",()=>4,"AddEquation",()=>100,"AddOperation",()=>2,"AdditiveAnimationBlendMode",()=>2501,"AdditiveBlending",()=>2,"AgXToneMapping",()=>6,"AlphaFormat",()=>1021,"AlwaysCompare",()=>519,"AlwaysDepth",()=>1,"AlwaysStencilFunc",()=>519,"AmbientLight",()=>sT,"AnimationAction",()=>oa,"AnimationClip",()=>a8,"AnimationLoader",()=>sa,"AnimationMixer",()=>oo,"AnimationObjectGroup",()=>or,"AnimationUtils",()=>aY,"ArcCurve",()=>rz,"ArrayCamera",()=>sW,"ArrowHelper",()=>o4,"AttachedBindMode",()=>I,"Audio",()=>sQ,"AudioAnalyser",()=>s4,"AudioContext",()=>sz,"AudioListener",()=>sK,"AudioLoader",()=>sB,"AxesHelper",()=>o6,"BackSide",()=>1,"BasicDepthPacking",()=>3200,"BasicShadowMap",()=>0,"BatchedMesh",()=>i5,"Bone",()=>iv,"BooleanKeyframeTrack",()=>a0,"Box2",()=>ow,"Box3",()=>eB,"Box3Helper",()=>o2,"BoxGeometry",()=>nA,"BoxHelper",()=>o1,"BufferAttribute",()=>t8,"BufferGeometry",()=>nf,"BufferGeometryLoader",()=>sI,"ByteType",()=>1010,"Cache",()=>a7,"Camera",()=>nD,"CameraHelper",()=>oK,"CanvasTexture",()=>rS,"CapsuleGeometry",()=>rE,"CatmullRomCurve3",()=>rW,"CineonToneMapping",()=>3,"CircleGeometry",()=>rC,"ClampToEdgeWrapping",()=>1001,"Clock",()=>sX,"Color",()=>tZ,"ColorKeyframeTrack",()=>a1,"ColorManagement",()=>eM,"CompressedArrayTexture",()=>r_,"CompressedCubeTexture",()=>rb,"CompressedTexture",()=>ry,"CompressedTextureLoader",()=>ss,"ConeGeometry",()=>rR,"ConstantAlphaFactor",()=>213,"ConstantColorFactor",()=>211,"Controls",()=>o7,"CubeCamera",()=>nz,"CubeDepthTexture",()=>rw,"CubeReflectionMapping",()=>301,"CubeRefractionMapping",()=>302,"CubeTexture",()=>nB,"CubeTextureLoader",()=>su,"CubeUVReflectionMapping",()=>306,"CubicBezierCurve",()=>rZ,"CubicBezierCurve3",()=>rJ,"CubicInterpolant",()=>aJ,"CullFaceBack",()=>1,"CullFaceFront",()=>2,"CullFaceFrontBack",()=>3,"CullFaceNone",()=>0,"Curve",()=>rO,"CurvePath",()=>r3,"CustomBlending",()=>5,"CustomToneMapping",()=>5,"CylinderGeometry",()=>rA,"Cylindrical",()=>ob,"Data3DTexture",()=>ek,"DataArrayTexture",()=>eF,"DataTexture",()=>ix,"DataTextureLoader",()=>sc,"DataUtils",()=>t3,"DecrementStencilOp",()=>7683,"DecrementWrapStencilOp",()=>34056,"DefaultLoadingManager",()=>se,"DepthFormat",()=>1026,"DepthStencilFormat",()=>1027,"DepthTexture",()=>rM,"DetachedBindMode",()=>N,"DirectionalLight",()=>sw,"DirectionalLightHelper",()=>oZ,"DiscreteInterpolant",()=>aK,"DodecahedronGeometry",()=>rP,"DoubleSide",()=>2,"DstAlphaFactor",()=>206,"DstColorFactor",()=>208,"DynamicCopyUsage",()=>35050,"DynamicDrawUsage",()=>35048,"DynamicReadUsage",()=>35049,"EdgesGeometry",()=>rF,"EllipseCurve",()=>rk,"EqualCompare",()=>514,"EqualDepth",()=>4,"EqualStencilFunc",()=>514,"EquirectangularReflectionMapping",()=>303,"EquirectangularRefractionMapping",()=>304,"Euler",()=>tp,"EventDispatcher",()=>en,"ExternalTexture",()=>rT,"ExtrudeGeometry",()=>ag,"FileLoader",()=>sr,"Float16BufferAttribute",()=>na,"Float32BufferAttribute",()=>ns,"FloatType",()=>1015,"Fog",()=>nX,"FogExp2",()=>nW,"FramebufferTexture",()=>rx,"FrontSide",()=>0,"Frustum",()=>ik,"FrustumArray",()=>iV,"GLBufferAttribute",()=>op,"GLSL1",()=>"100","GLSL3",()=>k,"GreaterCompare",()=>516,"GreaterDepth",()=>6,"GreaterEqualCompare",()=>518,"GreaterEqualDepth",()=>5,"GreaterEqualStencilFunc",()=>518,"GreaterStencilFunc",()=>516,"GridHelper",()=>oG,"Group",()=>nH,"HalfFloatType",()=>1016,"HemisphereLight",()=>sp,"HemisphereLightHelper",()=>oj,"IcosahedronGeometry",()=>ax,"ImageBitmapLoader",()=>sk,"ImageLoader",()=>sl,"ImageUtils",()=>eE,"IncrementStencilOp",()=>7682,"IncrementWrapStencilOp",()=>34055,"InstancedBufferAttribute",()=>iS,"InstancedBufferGeometry",()=>sP,"InstancedInterleavedBuffer",()=>od,"InstancedMesh",()=>iL,"Int16BufferAttribute",()=>nt,"Int32BufferAttribute",()=>ni,"Int8BufferAttribute",()=>t7,"IntType",()=>1013,"InterleavedBuffer",()=>nY,"InterleavedBufferAttribute",()=>nJ,"Interpolant",()=>aZ,"InterpolateDiscrete",()=>2300,"InterpolateLinear",()=>2301,"InterpolateSmooth",()=>2302,"InterpolationSamplingMode",()=>V,"InterpolationSamplingType",()=>B,"InvertStencilOp",()=>5386,"KeepStencilOp",()=>7680,"KeyframeTrack",()=>aQ,"LOD",()=>ia,"LatheGeometry",()=>ay,"Layers",()=>tf,"LessCompare",()=>513,"LessDepth",()=>2,"LessEqualCompare",()=>515,"LessEqualDepth",()=>3,"LessEqualStencilFunc",()=>515,"LessStencilFunc",()=>513,"Light",()=>sd,"LightProbe",()=>sA,"Line",()=>ri,"Line3",()=>oI,"LineBasicMaterial",()=>i4,"LineCurve",()=>r$,"LineCurve3",()=>rK,"LineDashedMaterial",()=>aj,"LineLoop",()=>rl,"LineSegments",()=>ro,"LinearFilter",()=>1006,"LinearInterpolant",()=>a$,"LinearMipMapLinearFilter",()=>1008,"LinearMipMapNearestFilter",()=>1007,"LinearMipmapLinearFilter",()=>1008,"LinearMipmapNearestFilter",()=>1007,"LinearSRGBColorSpace",()=>U,"LinearToneMapping",()=>1,"LinearTransfer",()=>
397F,"Loader",()=>st,"LoaderUtils",()=>sL,"LoadingManager",()=>a9,"LoopOnce",()=>2200,"LoopPingPong",()=>2202,"LoopRepeat",()=>2201,"MOUSE",()=>L,"Material",()=>tK,"MaterialLoader",()=>sR,"MathUtils",()=>ep,"Matrix2",()=>oS,"Matrix3",()=>ey,"Matrix4",()=>ti,"MaxEquation",()=>104,"Mesh",()=>nE,"MeshBasicMaterial",()=>tQ,"MeshDepthMaterial",()=>aB,"MeshDistanceMaterial",()=>aV,"MeshLambertMaterial",()=>az,"MeshMatcapMaterial",()=>aH,"MeshNormalMaterial",()=>ak,"MeshPhongMaterial",()=>aF,"MeshPhysicalMaterial",()=>aU,"MeshStandardMaterial",()=>aD,"MeshToonMaterial",()=>aO,"MinEquation",()=>103,"MirroredRepeatWrapping",()=>1002,"MixOperation",()=>1,"MultiplyBlending",()=>4,"MultiplyOperation",()=>0,"NearestFilter",()=>1003,"NearestMipMapLinearFilter",()=>1005,"NearestMipMapNearestFilter",()=>1004,"NearestMipmapLinearFilter",()=>1005,"NearestMipmapNearestFilter",()=>1004,"NeutralToneMapping",()=>7,"NeverCompare",()=>512,"NeverDepth",()=>0,"NeverStencilFunc",()=>512,"NoBlending",()=>0,"NoColorSpace",()=>"","NoNormalPacking",()=>"","NoToneMapping",()=>0,"NormalAnimationBlendMode",()=>2500,"NormalBlending",()=>1,"NormalGAPacking",()=>"ga","NormalRGPacking",()=>"rg","NotEqualCompare",()=>517,"NotEqualDepth",()=>7,"NotEqualStencilFunc",()=>517,"NumberKeyframeTrack",()=>a2,"Object3D",()=>tL,"ObjectLoader",()=>sN,"ObjectSpaceNormalMap",()=>1,"OctahedronGeometry",()=>a_,"OneFactor",()=>201,"OneMinusConstantAlphaFactor",()=>214,"OneMinusConstantColorFactor",()=>212,"OneMinusDstAlphaFactor",()=>207,"OneMinusDstColorFactor",()=>209,"OneMinusSrcAlphaFactor",()=>205,"OneMinusSrcColorFactor",()=>203,"OrthographicCamera",()=>sS,"PCFShadowMap",()=>1,"PCFSoftShadowMap",()=>2,"PMREMGenerator",()=>lM,"Path",()=>r5,"PerspectiveCamera",()=>nk,"Plane",()=>iD,"PlaneGeometry",()=>ab,"PlaneHelper",()=>o3,"PointLight",()=>sb,"PointLightHelper",()=>oz,"Points",()=>rf,"PointsMaterial",()=>ru,"PolarGridHelper",()=>oW,"PolyhedronGeometry",()=>rL,"PositionalAudio",()=>s5,"PropertyBinding",()=>oi,"PropertyMixer",()=>s6,"QuadraticBezierCurve",()=>rQ,"QuadraticBezierCurve3",()=>r0,"Quaternion",()=>em,"QuaternionKeyframeTrack",()=>a5,"QuaternionLinearInterpolant",()=>a3,"R11_EAC_Format",()=>37488,"RED_GREEN_RGTC2_Format",()=>36285,"RED_RGTC1_Format",()=>36283,"REVISION",()=>"182","RG11_EAC_Format",()=>37490,"RGBADepthPacking",()=>3201,"RGBAFormat",()=>1023,"RGBAIntegerFormat",()=>1033,"RGBA_ASTC_10x10_Format",()=>37819,"RGBA_ASTC_10x5_Format",()=>37816,"RGBA_ASTC_10x6_Format",()=>37817,"RGBA_ASTC_10x8_Format",()=>37818,"RGBA_ASTC_12x10_Format",()=>37820,"RGBA_ASTC_12x12_Format",()=>37821,"RGBA_ASTC_4x4_Format",()=>37808,"RGBA_ASTC_5x4_Format",()=>37809,"RGBA_ASTC_5x5_Format",()=>37810,"RGBA_ASTC_6x5_Format",()=>37811,"RGBA_ASTC_6x6_Format",()=>37812,"RGBA_ASTC_8x5_Format",()=>37813,"RGBA_ASTC_8x6_Format",()=>37814,"RGBA_ASTC_8x8_Format",()=>37815,"RGBA_BPTC_Format",()=>36492,"RGBA_ETC2_EAC_Format",()=>37496,"RGBA_PVRTC_2BPPV1_Format",()=>35843,"RGBA_PVRTC_4BPPV1_Format",()=>35842,"RGBA_S3TC_DXT1_Format",()=>33777,"RGBA_S3TC_DXT3_Format",()=>33778,"RGBA_S3TC_DXT5_Format",()=>33779,"RGBDepthPacking",()=>3202,"RGBFormat",()=>1022,"RGBIntegerFormat",()=>1032,"RGB_BPTC_SIGNED_Format",()=>36494,"RGB_BPTC_UNSIGNED_Format",()=>36495,"RGB_ETC1_Format",()=>36196,"RGB_ETC2_Format",()=>37492,"RGB_PVRTC_2BPPV1_Format",()=>35841,"RGB_PVRTC_4BPPV1_Format",()=>35840,"RGB_S3TC_DXT1_Format",()=>33776,"RGDepthPacking",()=>3203,"RGFormat",()=>1030,"RGIntegerFormat",()=>1031,"RawShaderMaterial",()=>aN,"Ray",()=>tn,"Raycaster",()=>om,"RectAreaLight",()=>sE,"RedFormat",()=>1028,"RedIntegerFormat",()=>1029,"ReinhardToneMapping",()=>2,"RenderTarget",()=>eD,"RenderTarget3D",()=>ol,"RepeatWrapping",()=>1e3,"ReplaceStencilOp",()=>7681,"ReverseSubtractEquation",()=>102,"RingGeometry",()=>aS,"SIGNED_R11_EAC_Format",()=>37489,"SIGNED_RED_GREEN_RGTC2_Format",()=>36286,"SIGNED_RED_RGTC1_Format",()=>36284,"SIGNED_RG11_EAC_Format",()=>37491,"SRGBColorSpace",()=>D,"SRGBTransfer",()=>O,"Scene",()=>nq,"ShaderChunk",()=>li,"ShaderLib",()=>la,"ShaderMaterial",()=>nN,"ShadowMaterial",()=>aI,"Shape",()=>r4,"ShapeGeometry",()=>aM,"ShapePath",()=>o8,"ShapeUtils",()=>ap,"ShortType",()=>1011,"Skeleton",()=>ib,"SkeletonHelper",()=>ok,"SkinnedMesh",()=>ig,"Source",()=>eA,"Sphere",()=>e5,"SphereGeometry",()=>aw,"Spherical",()=>o_,"SphericalHarmonics3",()=>sC,"SplineCurve",()=>r1,"SpotLight",()=>sy,"SpotLightHelper",()=>oD,"Sprite",()=>ie,"SpriteMaterial",()=>n$,"SrcAlphaFactor",()=>204,"SrcAlphaSaturateFactor",()=>210,"SrcColorFactor",()=>202,"StaticCopyUsage",()=>35046,"StaticDrawUsage",()=>35044,"StaticReadUsage",()=>35045,"StereoCamera",()=>sG,"StreamCopyUsage",()=>35042,"StreamDrawUsage",()=>35040,"StreamReadUsage",()=>35041,"StringKeyframeTrack",()=>a4,"SubtractEquation",()=>101,"SubtractiveBlending",()=>3,"TOUCH",()=>P,"TangentSpaceNormalMap",()=>0,"TetrahedronGeometry",()=>aT,"Texture",()=>eI,"TextureLoader",()=>sh,"TextureUtils",()=>le,"Timer",()=>ox,"TimestampQuery",()=>z,"TorusGeometry",()=>aE,"TorusKnotGeometry",()=>aC,"Triangle",()=>tG,"TriangleFanDrawMode",()=>2,"TriangleStripDrawMode",()=>1,"TrianglesDrawMode",()=>0,"TubeGeometry",()=>aA,"UVMapping",()=>300,"Uint16BufferAttribute",()=>nn,"Uint32BufferAttribute",()=>nr,"Uint8BufferAttribute",()=>t9,"Uint8ClampedBufferAttribute",()=>ne,"Uniform",()=>ou,"UniformsGroup",()=>oh,"UniformsLib",()=>lr,"UniformsUtils",()=>nI,"UnsignedByteType",()=>1009,"UnsignedInt101111Type",()=>35899,"UnsignedInt248Type",()=>1020,"UnsignedInt5999Type",()=>35902,"UnsignedIntType",()=>1014,"UnsignedShort4444Type",()=>1017,"UnsignedShort5551Type",()=>1018,"UnsignedShortType",()=>1012,"VSMShadowMap",()=>3,"Vector2",()=>ef,"Vector3",()=>eg,"Vector4",()=>eN,"VectorKeyframeTrack",()=>a6,"VideoFrameTexture",()=>rv,"VideoTexture",()=>rg,"WebGL3DRenderTarget",()=>ez,"WebGLArrayRenderTarget",()=>eO,"WebGLCoordinateSystem",()=>
3972e3,"WebGLCubeRenderTarget",()=>nV,"WebGLRenderTarget",()=>eU,"WebGLRenderer",()=>cT,"WebGLUtils",()=>cf,"WebGPUCoordinateSystem",()=>2001,"WebXRController",()=>nG,"WireframeGeometry",()=>aR,"WrapAroundEnding",()=>2402,"ZeroCurvatureEnding",()=>2400,"ZeroFactor",()=>200,"ZeroSlopeEnding",()=>2401,"ZeroStencilOp",()=>0,"createCanvasElement",()=>q,"error",()=>ee,"getConsoleFunction",()=>$,"log",()=>K,"setConsoleFunction",()=>J,"warn",()=>Q,"warnOnce",()=>et],32009);var hG=e.i(32009);function hW(e,t){let n;return(...i)=>{window.clearTimeout(n),n=window.setTimeout(()=>e(...i),t)}}let hX=["x","y","top","bottom","left","right","width","height"];function hq({ref:e,children:t,fallback:n,resize:i,style:r,gl:a,events:s=hj,eventSource:o,eventPrefix:l,shadows:u,linear:c,flat:h,legacy:d,orthographic:p,frameloop:f,dpr:m,performance:g,raycaster:v,camera:x,scene:y,onPointerMissed:_,onCreated:b,...S}){let M,w,E;R.useMemo(()=>(function(e){if("function"==typeof e){let t=`${hf++}`;return hh[t]=e,t}Object.assign(hh,e)})(hG),[]);let C=(M=cz(),w=function(){let e=cz(),[t]=cD.useState(()=>new Map);t.clear();let n=e;for(;n;){let e=n.type;cV(e)&&e!==cO&&!t.has(e)&&t.set(e,cD.use(cF(e))),n=n.return}return t}(),E=cD.useMemo(()=>Array.from(w.keys()).reduce((e,t)=>n=>cD.createElement(e,null,cD.createElement(t.Provider,{...n,value:w.get(t)})),e=>cD.createElement(ck,{...e})),[w]),R.useMemo(()=>({children:e})=>{let t=cU(M,!0,e=>e.type===R.StrictMode)?R.StrictMode:R.Fragment;return(0,T.jsx)(t,{children:(0,T.jsx)(E,{children:e})})},[M,E])),[A,L]=function({debounce:e,scroll:t,polyfill:n,offsetSize:i}={debounce:0,scroll:!1,offsetSize:!1}){var r,a,s;let o=n||("u"<typeof window?class{}:window.ResizeObserver);if(!o)throw Error("This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills");let[l,u]=(0,R.useState)({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),c=(0,R.useRef)({element:null,scrollContainers:null,resizeObserver:null,lastBounds:l,orientationHandler:null}),h=e?"number"==typeof e?e:e.scroll:null,d=e?"number"==typeof e?e:e.resize:null,p=(0,R.useRef)(!1);(0,R.useEffect)(()=>(p.current=!0,()=>void(p.current=!1)));let[f,m,g]=(0,R.useMemo)(()=>{let e=()=>{let e,t;if(!c.current.element)return;let{left:n,top:r,width:a,height:s,bottom:o,right:l,x:h,y:d}=c.current.element.getBoundingClientRect(),f={left:n,top:r,width:a,height:s,bottom:o,right:l,x:h,y:d};c.current.element instanceof HTMLElement&&i&&(f.height=c.current.element.offsetHeight,f.width=c.current.element.offsetWidth),Object.freeze(f),p.current&&(e=c.current.lastBounds,t=f,!hX.every(n=>e[n]===t[n]))&&u(c.current.lastBounds=f)};return[e,d?hW(e,d):e,h?hW(e,h):e]},[u,i,h,d]);function v(){c.current.scrollContainers&&(c.current.scrollContainers.forEach(e=>e.removeEventListener("scroll",g,!0)),c.current.scrollContainers=null),c.current.resizeObserver&&(c.current.resizeObserver.disconnect(),c.current.resizeObserver=null),c.current.orientationHandler&&("orientation"in screen&&"removeEventListener"in screen.orientation?screen.orientation.removeEventListener("change",c.current.orientationHandler):"onorientationchange"in window&&window.removeEventListener("orientationchange",c.current.orientationHandler))}function x(){c.current.element&&(c.current.resizeObserver=new o(g),c.current.resizeObserver.observe(c.current.element),t&&c.current.scrollContainers&&c.current.scrollContainers.forEach(e=>e.addEventListener("scroll",g,{capture:!0,passive:!0})),c.current.orientationHandler=()=>{g()},"orientation"in screen&&"addEventListener"in screen.orientation?screen.orientation.addEventListener("change",c.current.orientationHandler):"onorientationchange"in window&&window.addEventListener("orientationchange",c.current.orientationHandler))}return r=g,a=!!t,(0,R.useEffect)(()=>{if(a)return window.addEventListener("scroll",r,{capture:!0,passive:!0}),()=>void window.removeEventListener("scroll",r,!0)},[r,a]),s=m,(0,R.useEffect)(()=>(window.addEventListener("resize",s),()=>void window.removeEventListener("resize",s)),[s]),(0,R.useEffect)(()=>{v(),x()},[t,g,m]),(0,R.useEffect)(()=>v,[]),[e=>{e&&e!==c.current.element&&(v(),c.current.element=e,c.current.scrollC
397ontainers=function e(t){let n=[];if(!t||t===document.body)return n;let{overflow:i,overflowX:r,overflowY:a}=window.getComputedStyle(t);return[i,r,a].some(e=>"auto"===e||"scroll"===e)&&n.push(t),[...n,...e(t.parentElement)]}(e),x())},l,f]}({scroll:!0,debounce:{scroll:50,resize:0},...i}),P=R.useRef(null),I=R.useRef(null);R.useImperativeHandle(e,()=>P.current);let N=cW(_),[F,O]=R.useState(!1),[k,z]=R.useState(!1);if(F)throw F;if(k)throw k;let B=R.useRef(null);cG(()=>{let e=P.current;if(L.width>0&&L.height>0&&e){let n,i,r,_,S,M,w,E,A,P,F,k,V,H,j,G,W;B.current||(_=null==(r=hC.get(e))?void 0:r.fiber,S=null==r?void 0:r.store,r&&console.warn("R3F.createRoot should only be called once!"),M="function"==typeof reportError?reportError:console.error,H=S||(F=(P=(A=(w=(e,t)=>{let n,i=new eg,r=new eg,a=new eg;function s(e=t().camera,n=r,o=t().size){let{width:l,height:u,top:c,left:h}=o,d=l/u;n.isVector3?a.copy(n):a.set(...n);let p=e.getWorldPosition(i).distanceTo(a);if(e&&e.isOrthographicCamera)return{width:l/e.zoom,height:u/e.zoom,top:c,left:h,factor:1,distance:p,aspect:d};{let t=2*Math.tan(e.fov*Math.PI/180/2)*p,n=l/u*t;return{width:n,height:t,top:c,left:h,factor:l/n,distance:p,aspect:d}}}let o=t=>e(e=>({performance:{...e.performance,current:t}})),l=new ef;return{set:e,get:t,gl:null,camera:null,raycaster:null,events:{priority:1,enabled:!0,connected:!1},scene:null,xr:null,invalidate:(e=1)=>hB(t(),e),advance:(e,n)=>hV(e,n,t()),legacy:!1,linear:!1,flat:!1,controls:null,clock:new sX,pointer:l,mouse:l,frameloop:"always",onPointerMissed:void 0,performance:{current:1,min:.5,max:1,debounce:200,regress:()=>{let e=t();n&&clearTimeout(n),e.performance.current!==e.performance.min&&o(e.performance.min),n=setTimeout(()=>o(t().performance.max),e.performance.debounce)}},size:{width:0,height:0,top:0,left:0},viewport:{initialDpr:0,dpr:0,width:0,height:0,top:0,left:0,aspect:0,distance:0,factor:0,getCurrentViewport:s},setEvents:t=>e(e=>({...e,events:{...e.events,...t}})),setSize:(n,i,a=0,o=0)=>{let l=t().camera,u={width:n,height:i,top:a,left:o};e(e=>({size:u,viewport:{...e.viewport,...s(l,r,u)}}))},setDpr:t=>e(e=>{let n=cY(t);return{viewport:{...e.viewport,dpr:n,initialDpr:e.viewport.initialDpr||n}}}),setFrameloop:(n="always")=>{let i=t().clock;i.stop(),i.elapsedTime=0,"never"!==n&&(i.start(),i.elapsedTime=0),e(()=>({frameloop:n}))},previousRoot:void 0,internal:{interaction:[],hovered:new Map,subscribers:[],initialClick:[0,0],initialHits:[],capturedMap:new Map,lastEvent:R.createRef(),active:!1,frames:0,priority:0,subscribe:(e,n,i)=>{let r=t().internal;return r.priority=r.priority+ +(n>0),r.subscribers.push({ref:e,priority:n,store:i}),r.subscribers=r.subscribers.sort((e,t)=>e.priority-t.priority),()=>{let i=t().internal;null!=i&&i.subscribers&&(i.priority=i.priority-(n>0),i.subscribers=i.subscribers.filter(t=>t.ref!==e))}}}}})?cR(w,E):cR).getState()).size,k=P.viewport.dpr,V=P.camera,A.subscribe(()=>{let{camera:e,size:t,viewport:n,gl:i,set:r}=A.getState();if(t.width!==F.width||t.height!==F.height||n.dpr!==k){F=t,k=n.dpr;!e.manual&&(e&&e.isOrthographicCamera?(e.left=-(t.width/2),e.right=t.width/2,e.top=t.height/2,e.bottom=-(t.height/2)):e.aspect=t.width/t.height,e.updateProjectionMatrix());n.dpr>0&&i.setPixelRatio(n.dpr);let r="u">typeof HTMLCanvasElement&&i.domElement instanceof HTMLCanvasElement;i.setSize(t.width,t.height,r)}e!==V&&(V=e,r(t=>({viewport:{...t.viewport,...t.viewport.getCurrentViewport(e)}})))}),A.subscribe(e=>hB(e)),A),j=_||hE.createContainer(H,1,null,!1,null,"",M,M,M,null),r||hC.set(e,{fiber:j,store:H}),G=!1,W=null,B.current={async configure(t={}){var r,a;let s;W=new Promise(e=>s=e);let{gl:o,size:l,scene:u,events:c,onCreated:h,shadows:d=!1,linear:p=!1,flat:f=!1,legacy:m=!1,orthographic:g=!1,frameloop:v="always",dpr:x=[1,2],performance:y,raycaster:_,camera:b,onPointerMissed:S}=t,M=H.getState(),w=M.gl;if(!M.gl){let t={canvas:e,powerPreference:"high-performance",antialias:!0,alpha:!0},n="function"==typeof o?await o(t):o;w=hn(n)?n:new cT({...t,...o}),M.set({gl:w})}let T=M.raycaster;T||M.set({raycaster:T=new om});let{params:E,...C}=_||{};if(cJ.equ(C,T,hA)||c8(T,{...C}),cJ.equ(E,T.params,hA)||c8(T,{params:{...T.params,...E}}),!M.camera||M.camera===i&&!cJ.equ(i,b,hA)){i=b;
397let e=null==b?void 0:b.isCamera,t=e?b:g?new sS(0,0,0,0,.1,1e3):new nk(75,0,.1,1e3);!e&&(t.position.z=5,b&&(c8(t,b),!t.manual&&("aspect"in b||"left"in b||"right"in b||"bottom"in b||"top"in b)&&(t.manual=!0,t.updateProjectionMatrix())),M.camera||null!=b&&b.rotation||t.lookAt(0,0,0)),M.set({camera:t}),T.camera=t}if(!M.scene){let e;null!=u&&u.isScene?cK(e=u,H,"",{}):(cK(e=new nq,H,"",{}),u&&c8(e,u)),M.set({scene:e})}c&&!M.events.handlers&&M.set({events:c(H)});let A=function(e,t){if(!t&&"u">typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement&&e.parentElement){let{width:t,height:n,top:i,left:r}=e.parentElement.getBoundingClientRect();return{width:t,height:n,top:i,left:r}}return!t&&"u">typeof OffscreenCanvas&&e instanceof OffscreenCanvas?{width:e.width,height:e.height,top:0,left:0}:{width:0,height:0,top:0,left:0,...t}}(e,l);if(cJ.equ(A,M.size,hA)||M.setSize(A.width,A.height,A.top,A.left),x&&M.viewport.dpr!==cY(x)&&M.setDpr(x),M.frameloop!==v&&M.setFrameloop(v),M.onPointerMissed||M.set({onPointerMissed:S}),y&&!cJ.equ(y,M.performance,hA)&&M.set(e=>({performance:{...e.performance,...y}})),!M.xr){let e=(e,t)=>{let n=H.getState();"never"!==n.frameloop&&hV(e,!0,n,t)},t=()=>{let t=H.getState();t.gl.xr.enabled=t.gl.xr.isPresenting,t.gl.xr.setAnimationLoop(t.gl.xr.isPresenting?e:null),t.gl.xr.isPresenting||hB(t)},n={connect(){let e=H.getState().gl;e.xr.addEventListener("sessionstart",t),e.xr.addEventListener("sessionend",t)},disconnect(){let e=H.getState().gl;e.xr.removeEventListener("sessionstart",t),e.xr.removeEventListener("sessionend",t)}};"function"==typeof(null==(r=w.xr)?void 0:r.addEventListener)&&n.connect(),M.set({xr:n})}if(w.shadowMap){let e=w.shadowMap.enabled,t=w.shadowMap.type;w.shadowMap.enabled=!!d,cJ.boo(d)?w.shadowMap.type=2:cJ.str(d)?w.shadowMap.type=null!=(a=({basic:0,percentage:1,soft:2,variance:3})[d])?a:2:cJ.obj(d)&&Object.assign(w.shadowMap,d),(e!==w.shadowMap.enabled||t!==w.shadowMap.type)&&(w.shadowMap.needsUpdate=!0)}return eM.enabled=!m,G||(w.outputColorSpace=p?U:D,w.toneMapping=4*!f),M.legacy!==m&&M.set(()=>({legacy:m})),M.linear!==p&&M.set(()=>({linear:p})),M.flat!==f&&M.set(()=>({flat:f})),!o||cJ.fun(o)||hn(o)||cJ.equ(o,w,hA)||c8(w,o),n=h,G=!0,s(),this},render(t){return G||W||this.configure(),W.then(()=>{hE.updateContainer((0,T.jsx)(hR,{store:H,children:t,onCreated:n,rootElement:e}),j,null,()=>void 0)}),H},unmount(){hL(e)}}),async function(){await B.current.configure({gl:a,scene:y,events:s,shadows:u,linear:c,flat:h,legacy:d,orthographic:p,frameloop:f,dpr:m,performance:g,raycaster:v,camera:x,size:L,onPointerMissed:(...e)=>null==N.current?void 0:N.current(...e),onCreated:e=>{null==e.events.connect||e.events.connect(o?o&&o.hasOwnProperty("current")?o.current:o:I.current),l&&e.setEvents({compute:(e,t)=>{let n=e[l+"X"],i=e[l+"Y"];t.pointer.set(n/t.size.width*2-1,-(2*(i/t.size.height))+1),t.raycaster.setFromCamera(t.pointer,t.camera)}}),null==b||b(e)}}),B.current.render((0,T.jsx)(C,{children:(0,T.jsx)(cq,{set:z,children:(0,T.jsx)(R.Suspense,{fallback:(0,T.jsx)(cX,{set:O}),children:null!=t?t:null})})}))}()}}),R.useEffect(()=>{let e=P.current;if(e)return()=>hL(e)},[]);let V=o?"none":"auto";return(0,T.jsx)("div",{ref:I,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:V,...r},...S,children:(0,T.jsx)("div",{ref:A,style:{width:"100%",height:"100%"},children:(0,T.jsx)("canvas",{ref:P,style:{display:"block"},children:n})})})}function hY(e){return(0,T.jsx)(ck,{children:(0,T.jsx)(hq,{...e})})}let hZ=({vertexShader:e,fragmentShader:t,uniforms:n})=>{let i=(0,R.useRef)(null),{size:r}=function(e=e=>e,t){return hr()(e,void 0)}();return!function(e,t=0){let n=hr(),i=n.getState().internal.subscribe,r=cW(e);cG(()=>i(r,t,n),[t,i,n])}(e=>{if(i.current){let t=i.current.material;t.uniforms.u_time.value=e.clock.elapsedTime,t.uniforms.u_resolution.value.set(r.width,r.height,1)}}),(0,T.jsxs)("mesh",{ref:i,children:[(0,T.jsx)("planeGeometry",{args:[2,2]}),(0,T.jsx)("shaderMaterial",{vertexShader:e,fragmentShader:t,uniforms:n,side:0,depthTest:!1,depthWrite:!1})]})},hJ=` 398 varying vec2 vUv; 399 void main() { 400 vUv = uv;
401 gl_Position = vec4(position, 1.0); 402 } 403`,h$=` 404 precision highp float; 405 varying vec2 vUv; 406 uniform float u_time; 407 uniform vec3 u_resolution; 408 409 float lightImpulses(vec2 v, float time) { 410 float streak = 0.0; 411 for (int j = 0; j < 4; j++) { 412 float seed = float(j) * 1.37; 413 float phase = dot(v, normalize(vec2(sin(seed*12.3), cos(seed*4.7)))); 414 float speed = 0.4 + fract(sin(seed*77.7)*43758.5); 415 float pulse = exp(-30.0 * pow(fract(phase*0.2 + time*speed) - 0.5, 2.0)); 416 streak += pulse; 417 } 418 return streak; 419 } 420 421 vec4 getScene(vec2 fragCoord, vec2 resolution) { 422 float i = .13, a; 423 vec2 r = resolution; 424 vec2 p = (fragCoord+fragCoord - r) / r.y / .9; 425 vec2 d = vec2(-1,1); 426 vec2 b = p - i*d; 427 vec2 c = p * mat2(1, 1, d/(.1 + i/dot(b,b))); 428 vec2 v = c * mat2(cos(.5*log(a=dot(c,c))))/i; 429 vec2 w = vec2(0.0); 430 431 for(; i++<9.; w += 1.1+sin(v)) 432 v += 0.9* sin(v.yx/i+u_time) / i + .3; 433 434 i = length(5.0); 435 436 vec4 base = 0.9 - exp( -exp( c.x * vec4(0.0,0.0,0,0) ) 437 / vec4(length(w)) 438 / ( 2. + i*i/4. - i ) 439 / ( .5 + 1. / a ) 440 / ( .03 + abs( length(p)-.7 ) ) 441 ); 442 443 float streak = lightImpulses(v, u_time); 444 base.rgb += streak * 0.015; 445 446 return base; 447 } 448 449 void mainImage(out vec4 fragColor, in vec2 fragCoord) { 450 vec2 r = u_resolution.xy; 451 vec2 uv = fragCoord / r; 452 453 float ChromaticAberration = 10.0; 454 vec2 texel = 1.0 / r; 455 vec2 coords = (uv - 0.5) * 2.0; 456 float coordDot = dot(coords, coords); 457 vec2 precompute = ChromaticAberration * coordDot * coords; 458 459 vec2 uvR = uv - texel * precompute; 460 vec2 uvB = uv + texel * precompute; 461 462 vec2 fragCoordR = uvR * r; 463 vec2 fragCoordB = uvB * r; 464 465 vec4 colR = getScene(fragCoordR, r); 466 vec4 colG = getScene(fragCoord , r); 467 vec4 colB = getScene(fragCoordB, r); 468 469 fragColor = vec4(colR.r, colG.g, colB.b, 1.0); 470 } 471 472 void main() { 473 vec4 fragColor; 474 vec2 fragCoord = vUv * u_resolution.xy; 475 mainImage(fragColor, fragCoord); 476 gl_FragColor = fragColor; 477 } 478`;function hK({className:e}){let[t,n]=(0,R.useState)(!1);(0,R.useEffect)(()=>{n(!0)},[]);let i=(0,R.useMemo)(()=>({u_time:{value:0},u_resolution:{value:new eg(1,1,1)}}),[]);return t?(0,T.jsx)("div",{className:(0,C.cn)("absolute inset-0 w-full h-full bg-neutral-950",e),children:(0,T.jsx)(hY,{children:(0,T.jsx)(hZ,{vertexShader:hJ,fragmentShader:h$,uniforms:i})})}):(0,T.jsx)("div",{className:(0,C.cn)("absolute inset-0 w-full h-full bg-black",e)})}var hQ=e.i(31178),h0=e.i(47414),h1=e.i(74008),h2=e.i(21476),h3=e.i(72846),h5=R,h4=e.i(37806);function h6(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}class h8 extends h5.Component{getSnapshotBeforeUpdate(e){let t=this.props.childRef.current;if(t&&e.isPresent&&!this.props.isPresent&&!1!==this.props.pop){let e=t.offsetParent,n=(0,h3.isHTMLElement)(e)&&e.offsetWidth||0,i=(0,h3.isHTMLElement)(e)&&e.offsetHeight||0,r=this.props.sizeRef.current;r.height=t.offsetHeight||0,r.width=t.offsetWidth||0,r.top=t.offsetTop,r.left=t.offsetLeft,r.right=n-r.width-r.left,r.bottom=i-r.height-r.top}return null}componentDidUpdate(){}render(){return this.props.children}}function h7({children:e,isPresent:t,anchorX:n,anchorY:i,root:r,pop:a}){let s=(0,h5.useId)(),o=(0,h5.useRef)(null),l=(0,h5.useRef)({width:0,height:0,top:0,left:0,right:0,bottom:0}),{nonce:u}=(0,h5.useContext)(h4.MotionConfigContext),c=function(...e){return R.useCallback(function(...e){return t=>{let n=!1,i=e.map(e=>{let i=h6(e,t);return n||"function"!=typeof i||(n=!0),i});if(n)return()=>{for(let t=0;t<i.length;t++){let n=i[t];"function"==typeof n?n():h6(e[t],null)}}}}(...e),e)}(o,e.props?.ref??e?.ref);return(0,h5.useInsertionEffect)(()=>{let{width:e,height:c,top:h,left:d,right:p,bottom:f}=l.current;if(t||!1===a||!o.current||!e||!c)return;let m="left"===n?`left: ${d}`:`right: ${p}`,g="bottom"===i?`bottom: ${f}`:`top: ${h}`;o.current.dataset.motionPopId=s;let v=document.createElement("style");u&&(v.nonce=u);let x=r??document.head;return x.appendChild(v),v.sheet&&v.sheet.insertRule(` 479 [data-motion-pop-id="${s}"] { 480 position: absolute !important; 481 width: ${e}px !important; 482 height: ${c}px !important; 483 ${m}px !important; 484 ${g}px !important; 485 } 486 `),()=>{x.contains(v)&&x.removeChild(v)}},[t]),(0,T.jsx)(h8,{isPresent:t,childRef:o,sizeRef:l,pop:a,children:!1===a?e:h5.cloneElement(e,{ref:c})})}let h9=({children:e,initial:t,isPresent:n,onExitComplete:i,custom:r,presenceAffectsLayout:a,mode:s,anchorX:o,anchorY:l,root:u})=>{let c=(0,h0.useConstant)(de),h=(0,R.useId)(),d=!0,p=(0,R.useMemo)(()=>(d=!1,{id:h,initial:t,isPresent:n,custom:r,onExitComplete:e=>
486{for(let t of(c.set(e,!0),c.values()))if(!t)return;i&&i()},register:e=>(c.set(e,!1),()=>c.delete(e))}),[n,c,i]);return a&&d&&(p={...p}),(0,R.useMemo)(()=>{c.forEach((e,t)=>c.set(t,!1))},[n]),R.useEffect(()=>{n||c.size||!i||i()},[n]),e=(0,T.jsx)(h7,{pop:"popLayout"===s,isPresent:n,anchorX:o,anchorY:l,root:u,children:e}),(0,T.jsx)(h2.PresenceContext.Provider,{value:p,children:e})};function de(){return new Map}var dt=e.i(64978);let dn=e=>e.key||"";function di(e){let t=[];return R.Children.forEach(e,e=>{(0,R.isValidElement)(e)&&t.push(e)}),t}let dr=({children:e,custom:t,initial:n=!0,onExitComplete:i,presenceAffectsLayout:r=!0,mode:a="sync",propagate:s=!1,anchorX:o="left",anchorY:l="top",root:u})=>{let[c,h]=(0,dt.usePresence)(s),d=(0,R.useMemo)(()=>di(e),[e]),p=s&&!c?[]:d.map(dn),f=(0,R.useRef)(!0),m=(0,R.useRef)(d),g=(0,h0.useConstant)(()=>new Map),v=(0,R.useRef)(new Set),[x,y]=(0,R.useState)(d),[_,b]=(0,R.useState)(d);(0,h1.useIsomorphicLayoutEffect)(()=>{f.current=!1,m.current=d;for(let e=0;e<_.length;e++){let t=dn(_[e]);p.includes(t)?(g.delete(t),v.current.delete(t)):!0!==g.get(t)&&g.set(t,!1)}},[_,p.length,p.join("-")]);let S=[];if(d!==x){let e=[...d];for(let t=0;t<_.length;t++){let n=_[t],i=dn(n);p.includes(i)||(e.splice(t,0,n),S.push(n))}return"wait"===a&&S.length&&(e=S),b(di(e)),y(d),null}let{forceRender:M}=(0,R.useContext)(hQ.LayoutGroupContext);return(0,T.jsx)(T.Fragment,{children:_.map(e=>{let x=dn(e),y=(!s||!!c)&&(d===_||p.includes(x));return(0,T.jsx)(h9,{isPresent:y,initial:(!f.current||!!n)&&void 0,custom:t,presenceAffectsLayout:r,mode:a,root:u,onExitComplete:y?void 0:()=>{if(v.current.has(x)||(v.current.add(x),!g.has(x)))return;g.set(x,!0);let e=!0;g.forEach(t=>{t||(e=!1)}),e&&(M?.(),b(m.current),s&&h?.(),i&&i())},anchorX:o,anchorY:l,children:e},x)})})};var da=e.i(82735),ds=e.i(75254);let dl=(0,ds.default)("arrow-up",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);var du=e.i(78583);let dc=(0,ds.default)("shield-check",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);var dh=e.i(43531);function dd({fileName:e,fileType:t,lines:n,variant:i="dark",uploadDuration:r=1500,startDelay:a=300,scanSpeed:s=200,className:o,onScanStart:l,onItemDetected:u,onScanComplete:c,onRedactionComplete:h,onCollapseComplete:d,issuesFound:p=0}){let f="dark"===i,[m,g]=(0,R.useState)("uploading"),[v,x]=(0,R.useState)(0),[y,_]=(0,R.useState)(-1),[b,S]=(0,R.useState)(new Set),[M,w]=(0,R.useState)(new Set),[A,L]=(0,R.useState)(new Set),P=(0,R.useMemo)(()=>{let e=[];return n.forEach((t,n)=>{t.sensitiveRanges?.forEach((t,i)=>{e.push({lineIndex:n,range:t,key:`${n}-${i}`})})}),e},[n]),I=p||P.length;(0,R.useEffect)(()=>{let e,t;if("uploading"!==m)return;let n=i=>{t||(t=i);let a=Math.min((i-t)/r*100,100);x(a),a<100?e=requestAnimationFrame(n):g("expanding")},i=setTimeout(()=>{e=requestAnimationFrame(n)},a);return()=>{clearTimeout(i),cancelAnimationFrame(e)}},[m,r,a]),(0,R.useEffect)(()=>{if("expanding"!==m)return;let e=setTimeout(()=>{g("scanning"),l?.()},500);return()=>clearTimeout(e)},[m,l]),(0,R.useEffect)(()=>{if("scanning"===m)if(y<n.length-1){let e=setTimeout(()=>{let e=y+1;_(e),P.filter(t=>t.lineIndex===e).forEach(e=>{setTimeout(()=>{S(t=>new Set([...t,e.key])),u?.(e.range.type)},.4*s)})},s);return()=>clearTimeout(e)}else{let e=setTimeout(()=>{c?.(),g("redacting")},400);return()=>clearTimeout(e)}},[m,y,n.length,s,P,c,u]),(0,R.useEffect)(()=>{if("redacting"!==m)return;let e=P.filter(e=>!A.has(e.key)&&!M.has(e.key)),t=P.filter(e=>A.has(e.key)&&!M.has(e.key));if(e.length>0){let t=setTimeout(()=>{L(t=>new Set([...t,e[0].key]))},250);return()=>clearTimeout(t)}if(t.length>0){let e=setTimeout(()=>{w(e=>new Set([...e,t[0].key]))},200);return()=>clearTimeout(e)}{h?.();let e=setTimeout(()=>{g("collapsing")},300);return()=>clearTimeout(e)}},[m,A,M,P,h]),(0,R.useEffect)(()=>{if("collapsing"!==m)return;let e=setTimeout(()=>{g("complete"),d?.()},600);return()=>clearTimeout(e)},[m,d]);let N=(0,R.useCallback)((e,t)=>{if(!e.sensitiveRanges||0===e.sensitiveRanges.length)return(0,T.jsx)("span",{className:f?"text-[#AAAAAA]":"text-[#4A4A4A]",children:e.text});let n=[],i=0;
486return e.sensitiveRanges.forEach((r,a)=>{let s=`${t}-${a}`,o=b.has(s),l=A.has(s),u=M.has(s);r.start>i&&n.push((0,T.jsx)("span",{className:f?"text-[#AAAAAA]":"text-[#4A4A4A]",children:e.text.slice(i,r.start)},`text-${i}`)),n.push((0,T.jsx)("span",{className:"relative inline",children:(0,T.jsx)(dr,{mode:"wait",children:u?(0,T.jsx)(E.motion.span,{initial:{filter:"blur(4px)",opacity:0,scale:.92},animate:{filter:"blur(0px)",opacity:1,scale:1},transition:{duration:.25,ease:"easeOut"},className:"inline-flex items-center bg-[#333333] text-[#888888] rounded px-1 py-0.5 font-mono text-[0.8em]",children:r.redactedText},"redacted"):l?(0,T.jsx)(E.motion.span,{animate:{filter:"blur(4px)",opacity:.5},transition:{duration:.2},className:(0,C.cn)("inline rounded px-0.5","bg-[#FF4444]/20 text-[#FF6666]"),children:e.text.slice(r.start,r.end)},"blurring"):o?(0,T.jsxs)(E.motion.span,{initial:{backgroundColor:"transparent"},animate:{backgroundColor:"rgba(255, 68, 68, 0.2)"},transition:{duration:.2},className:"inline relative rounded px-0.5 text-[#FF6666]",children:[e.text.slice(r.start,r.end),(0,T.jsx)(E.motion.span,{className:"absolute inset-0 rounded pointer-events-none",initial:{boxShadow:"0 0 0 0 rgba(255, 68, 68, 0)"},animate:{boxShadow:["0 0 0 0 rgba(255, 68, 68, 0.4)","0 0 10px 3px rgba(255, 68, 68, 0.25)","0 0 0 0 rgba(255, 68, 68, 0)"]},transition:{duration:.6,repeat:1}})]},"highlighted"):(0,T.jsx)("span",{className:f?"text-[#AAAAAA]":"text-[#4A4A4A]",children:e.text.slice(r.start,r.end)},"normal")})},`range-${s}`)),i=r.end}),i<e.text.length&&n.push((0,T.jsx)("span",{className:f?"text-[#AAAAAA]":"text-[#4A4A4A]",children:e.text.slice(i)},"text-end")),(0,T.jsx)(T.Fragment,{children:n})},[b,A,M,f]),D="expanding"===m||"scanning"===m||"redacting"===m,U="collapsing"===m||"complete"===m;return(0,T.jsxs)("div",{className:(0,C.cn)("w-full",o),children:[(0,T.jsxs)(E.motion.div,{initial:{opacity:0,x:-12},animate:{opacity:1,x:0},transition:{duration:.3},className:"flex items-center gap-3",children:[(0,T.jsx)("div",{className:(0,C.cn)("flex items-center justify-center w-9 h-9 rounded-lg",f?"bg-[#1A1A1A] border border-[#333333]":"bg-[#EDEBE6] border border-[#D5D1C9]"),children:U?I>0?(0,T.jsx)(dc,{className:"w-4 h-4 text-[#FF6B6B]"}):(0,T.jsx)(dh.Check,{className:"w-4 h-4 text-[#44FF44]"}):"scanning"===m||"redacting"===m?(0,T.jsx)(E.motion.div,{animate:{opacity:[1,.5,1]},transition:{duration:1.5,repeat:1/0,ease:"easeInOut"},children:(0,T.jsx)(dc,{className:(0,C.cn)("w-4 h-4",f?"text-[#FFAA00]":"text-[#B8860B]")})}):(0,T.jsx)(du.FileText,{className:(0,C.cn)("w-4 h-4",f?"text-white":"text-[#6B7280]")})}),(0,T.jsxs)("div",{className:"flex flex-col min-w-0",children:[(0,T.jsx)("span",{className:(0,C.cn)("text-sm font-medium truncate",f?"text-white":"text-[#1F1E1D]"),children:e}),(0,T.jsx)(dr,{mode:"wait",children:"uploading"===m?(0,T.jsxs)(E.motion.div,{className:"flex items-center gap-2",children:[(0,T.jsx)("div",{className:(0,C.cn)("h-1 w-24 rounded-full overflow-hidden",f?"bg-[#333333]":"bg-[#D5D1C9]"),children:(0,T.jsx)(E.motion.div,{className:"h-full rounded-full bg-white",style:{width:`${v}%`}})}),(0,T.jsxs)("span",{className:(0,C.cn)("text-xs",f?"text-[#888888]":"text-[#6B7280]"),children:[Math.round(v),"%"]})]},"upload"):U?(0,T.jsx)(E.motion.span,{initial:{opacity:0}
486,animate:{opacity:1},transition:{duration:.3},className:(0,C.cn)("text-xs",I>0?"text-[#FF6B6B]":"text-[#44FF44]"),children:I>0?`${I} issue${I>1?"s":""} redacted`:"Clean"},"summary"):(0,T.jsx)(E.motion.span,{initial:{opacity:0},animate:{opacity:1},className:(0,C.cn)("text-xs",f?"text-[#FFAA00]":"text-[#B8860B]"),children:"expanding"===m?"Opening file...":"Scanning..."},"scanning")})]})]}),(0,T.jsx)(dr,{children:D&&(0,T.jsx)(E.motion.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.4,ease:[.4,0,.2,1]},className:"overflow-hidden",children:(0,T.jsxs)("div",{className:(0,C.cn)("mt-3 rounded-lg border overflow-hidden relative",f?"bg-[#0D0D0D] border-[#222222]":"bg-[#F5F3EE] border-[#D5D1C9]"),children:[(0,T.jsxs)("div",{className:(0,C.cn)("flex items-center gap-2 px-3 py-1.5 border-b text-[10px] font-medium uppercase tracking-wider",f?"border-[#222222] text-[#555555] bg-[#111111]":"border-[#D5D1C9] text-[#8A8580] bg-[#EDEBE6]"),children:[(0,T.jsx)(du.FileText,{className:"w-3 h-3"}),e]}),(0,T.jsxs)("div",{className:"relative p-3",style:{paddingTop:12,paddingBottom:12},children:["scanning"===m&&y>=0&&(0,T.jsx)(E.motion.div,{className:"absolute left-0 right-0 h-[2px] pointer-events-none z-10",style:{background:"linear-gradient(90deg, transparent 0%, rgba(255,170,0,0.6) 20%, rgba(255,170,0,0.8) 50%, rgba(255,170,0,0.6) 80%, transparent 100%)",boxShadow:"0 0 8px 2px rgba(255, 170, 0, 0.3)"},animate:{top:12+22*y+11},transition:{duration:s/1e3*.8,ease:"linear"}}),n.map((e,t)=>(0,T.jsxs)(E.motion.div,{initial:{opacity:0}
486,animate:{opacity:1},transition:{delay:.05*t,duration:.2},className:(0,C.cn)("font-mono text-[11px] sm:text-xs leading-[22px] whitespace-nowrap overflow-hidden text-ellipsis","scanning"===m&&y===t&&"brightness-110"),style:{height:22},children:[(0,T.jsx)("span",{className:(0,C.cn)("inline-block w-6 text-right mr-3 select-none",f?"text-[#444444]":"text-[#B0ACA7]"),children:t+1}),N(e,t)]},t))]})]})})})]})}function dp({segments:e,typingSpeed:t=35,startDelay:n=0,scanDelay:i=800,redactionDelay:r=300,className:a,onTypingComplete:s,onScanComplete:o,onRedactionComplete:l,onItemDetected:u,cursorColor:c="white"}){let[h,d]=(0,R.useState)("typing"),[p,f]=(0,R.useState)(0),[m,g]=(0,R.useState)(new Set),[v,x]=(0,R.useState)(new Set),[y,_]=(0,R.useState)(new Set),b=(0,R.useMemo)(()=>e.map(e=>e.text).join(""),[e]),S=(0,R.useMemo)(()=>{let t=[];return e.forEach((e,n)=>{e.isPII&&t.push(n)}),t},[e]);(0,R.useEffect)(()=>{if("typing"!==h)return;let e=setTimeout(()=>{p<b.length?f(e=>e+1):(s?.(),setTimeout(()=>d("scanning"),i))},0===p?n:t);return()=>clearTimeout(e)},[h,p,b.length,t,n,i,s]),(0,R.useEffect)(()=>{if("scanning"!==h)return;let t=S.filter(e=>!m.has(e));if(t.length>0){let n=setTimeout(()=>{let n=t[0];g(e=>new Set([...e,n]));let i=e[n];i?.type&&u?.(i.type,n)},400);return()=>clearTimeout(n)}o?.(),setTimeout(()=>d("redacting"),r)},[h,m,S,r,o,u,e]),(0,R.useEffect)(()=>{if("redacting"!==h)return;let e=S.filter(e=>!v.has(e)&&!y.has(e)),t=S.filter(e=>v.has(e)&&!y.has(e));if(e.length>0){let t=setTimeout(()=>{x(t=>new Set([...t,e[0]]))},300);return()=>clearTimeout(t)}if(t.length>0){let e=setTimeout(()=>{_(e=>new Set([...e,t[0]]))},220);return()=>clearTimeout(e)}d("complete"),l?.()},[h,v,y,S,l]);let M=(()=>{let t=0,n=[];for(let i=0;i<e.length;i++){let r=e[i],a=t,s=t+r.text.length;if(a>=p)break;let o=r.text.slice(0,Math.max(0,p-a));n.push({segment:r,displayText:o,index:i}),t=s}return n})();return(0,T.jsxs)("span",{className:(0,C.cn)("inline relative",a),children:["scanning"===h&&(0,T.jsx)(E.motion.span,{className:"absolute left-0 right-0 h-[1px] pointer-events-none z-10",style:{background:"linear-gradient(90deg, transparent 0%, rgba(255,170,0,0.5) 30%, rgba(255,170,0,0.7) 50%, rgba(255,170,0,0.5) 70%, transparent 100%)",boxShadow:"0 0 6px 1px rgba(255, 170, 0, 0.2)"},initial:{top:"0%"},animate:{top:"100%"},transition:{duration:(400*S.length+r)/1e3,ease:"linear"}}),M.map(({segment:e,displayText:t,index:n})=>{let i=m.has(n),r=v.has(n),a=y.has(n);return e.isPII?(0,T.jsx)("span",{className:"relative inline",children:(0,T.jsx)(dr,{mode:"wait",children:a?(0,T.jsx)(E.motion.span,{initial:{filter:"blur(4px)",opacity:0,scale:.92},animate:{filter:"blur(0px)",opacity:1,scale:1},transition:{duration:.25,ease:"easeOut"},className:"inline-flex items-center gap-1 bg-[#333333] text-[#888888] rounded px-1.5 py-0.5 font-mono text-[0.85em]",children:e.redactedText||"â¢â¢â¢â¢â¢â¢â¢â¢"},"redacted"):r?(0,T.jsx)(E.motion.span,{animate:{filter:"blur(4px)",opacity:.4},transition:{duration:.2},className:"relative inline bg-[#FF4444]/20 text-[#FF6666] rounded px-0.5",children:t},"blurring"):(0,T.jsxs)(E.motion.span,{className:(0,C.cn)("relative inline transition-all duration-300",i&&"bg-[#FF4444]/20 text-[#FF6666] rounded px-0.5"),initial:{backgroundColor:"transparent"},animate:{backgroundColor:i?"rgba(255, 68, 68, 0.2)":"transparent",scale:i?[1,1.03,1]:1},transition:{backgroundColor:{duration:.2},scale:{duration:.3,ease:"easeOut"}},children:[t,i&&(0,T.jsx)(E.motion.span,{className:"absolute inset-0 rounded pointer-events-none",initial:{boxShadow:"0 0 0 0 rgba(255, 68, 68, 0)"},animate:{boxShadow:["0 0 0 0 rgba(255, 68, 68, 0.5)","0 0 12px 4px rgba(255, 68, 68, 0.3)","0 0 0 0 rgba(255, 68, 68, 0)"]},transition:{duration:.6,repeat:1}})]},"original")})},n):(0,T.jsx)("span",{children:t},n)}),"typing"===h&&p<b.length&&(0,T.jsx)("span",{className:"typing-cursor",style:{color:c},children:"|"})]})}var df=e.i(83086);let dm=(0,ds.default)("key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]]),dg=(0,ds.default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]),dv=(0,ds.default)("mail",[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]]),dx=(0,ds.default)("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}
486]]),dy=(0,ds.default)("credit-card",[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}]]),d_={key:dm,user:dg,mail:dv,file:du.FileText,hash:dx,"credit-card":dy};function db({apiKeysCount:e=0,emailsCount:t=0,detectedItems:n,isVisible:i,isScanning:r=!1,scanProgress:a=0,discoveredItems:s,variant:o="dark",className:l}){let u="dark"===o,c=n||[...e>0?[{type:"API keys",count:e}]:[],...t>0?[{type:"emails",count:t}]:[]],h=c.reduce((e,t)=>e+t.count,0);return(0,T.jsx)(E.motion.div,{initial:{opacity:0,y:16,scale:.92},animate:{opacity:+!!i,y:16*!i,scale:i?1:.92},transition:{duration:.5,ease:[.34,1.56,.64,1]},className:(0,C.cn)("rounded-xl border overflow-hidden",u?"bg-[#0A0A0A] border-[#222222]":"bg-[#FAF9F6] border-[#E8E5DE]",l),children:(0,T.jsx)("div",{className:"px-4 py-3",children:r?(0,T.jsxs)("div",{className:"space-y-2.5",children:[(0,T.jsxs)("div",{className:"flex items-center gap-3",children:[(0,T.jsx)("div",{className:(0,C.cn)("flex items-center justify-center w-8 h-8 rounded-full",u?"bg-[#FFAA00]/10":"bg-[#FFAA00]/15"),children:(0,T.jsx)(E.motion.div,{animate:{opacity:[1,.5,1]},transition:{duration:1.5,repeat:1/0,ease:"easeInOut"},children:(0,T.jsx)(df.Sparkles,{className:"w-4 h-4 text-[#FFAA00]"})})}),(0,T.jsxs)("div",{className:"flex flex-col",children:[(0,T.jsx)("span",{className:(0,C.cn)("text-sm font-medium",u?"text-white":"text-[#1F1E1D]"),children:"Scanning for sensitive data..."}),(0,T.jsx)("span",{className:(0,C.cn)("text-xs font-medium",u?"text-[#FFAA00]":"text-[#B8860B]"),children:"Analyzing content"})]})]}),(0,T.jsx)("div",{className:(0,C.cn)("h-1 rounded-full overflow-hidden mx-11",u?"bg-[#1A1A1A]":"bg-[#E8E5DE]"),children:(0,T.jsx)(E.motion.div,{className:"h-full rounded-full bg-[#FFAA00]",initial:{width:"0%"},animate:{width:`${Math.min(a,100)}%`},transition:{duration:.3,ease:"easeOut"}})}),s&&s.length>0&&(0,T.jsx)("div",{className:"flex flex-wrap gap-1.5 ml-11",children:(0,T.jsx)(dr,{children:s.map((e,t)=>{let n=e.icon?d_[e.icon]:dc;return(0,T.jsxs)(E.motion.div,{initial:{opacity:0,scale:.8,x:-4},animate:{opacity:1,scale:1,x:0},transition:{duration:.25,ease:"easeOut"},className:(0,C.cn)("inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-[10px] font-medium",u?"bg-[#FFAA00]/10 text-[#FFAA00] border border-[#FFAA00]/20":"bg-[#FFAA00]/10 text-[#B8860B] border border-[#FFAA00]/20"),children:[(0,T.jsx)(n,{className:"w-2.5 h-2.5"}),"+",e.count," ",e.type]},`${e.type}-${t}`)})})})]}):h>0?(0,T.jsxs)("div",{className:"space-y-2",children:[(0,T.jsxs)("div",{className:"flex items-center gap-3",children:[(0,T.jsx)("div",{className:(0,C.cn)("flex items-center justify-center w-8 h-8 rounded-full",u?"bg-[#44FF44]/10":"bg-[#22AA22]/10"),children:(0,T.jsx)(dc,{className:(0,C.cn)("w-4 h-4",u?"text-[#44FF44]":"text-[#22AA22]")})}),(0,T.jsxs)("div",{className:"flex flex-col",children:[(0,T.jsxs)("span",{className:(0,C.cn)("text-sm font-medium",u?"text-white":"text-[#1F1E1D]"),children:[h," item",h>1?"s":""," redacted"]}),(0,T.jsx)("span",{className:(0,C.cn)("text-xs font-medium",u?"text-[#44FF44]":"text-[#22AA22]"),children:"Safe to send"})]})]}),(0,T.jsx)("div",{className:"flex flex-wrap gap-1.5 ml-11",children:c.map((e,t)=>{let n=e.icon?d_[e.icon]:dc;return(0,T.jsxs)(E.motion.div,{initial:{opacity:0,scale:.8},animate:{opacity:1,scale:1},transition:{delay:.1*t,duration:.25},className:(0,C.cn)("inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-[10px] font-medium border",u?"bg-[#1A1A1A] border-[#333333] text-[#888888]":"bg-[#EDEBE6] border-[#D5D1C9] text-[#6B7280]"),children:[(0,T.jsx)(n,{className:(0,C.cn)("w-2.5 h-2.5",u?"text-[#44FF44]":"text-[#22AA22]")}),e.count," ",e.type]},`${e.type}-${t}`)})})]}):(0,T.jsxs)("div",{className:"flex items-center gap-3",children:[(0,T.jsx)("div",{className:(0,C.cn)("flex items-center justify-center w-8 h-8 rounded-full",u?"bg-[#44FF44]/10":"bg-[#22AA22]/10"),children:(0,T.jsx)(dc,{className:(0,C.cn)("w-4 h-4",u?"text-[#44FF44]":"text-[#22AA22]")})}),(0,T.jsxs)("div",{className:"flex flex-col",children:[(0,T.jsx)("span",{className:(0,C.cn)("text-sm font-medium",u?"text-white":"text-[#1F1E1D]"),children:"No sensitive data detected."}),(0,T.jsx)("span",{className:(0,C.cn)("text-xs font-medium",u?"text-[#44FF44]":"text-[#22AA22]"),children:"Safe to send"})]})]})})})}let dS=({className:e})=>
486(0,T.jsx)("svg",{viewBox:"0 0 96 96",className:e,fill:"currentColor",children:(0,T.jsx)("path",{d:"M81.8463 40.9249C82.5136 38.9461 82.854 36.8743 82.8544 34.7888C82.8541 31.338 81.9225 27.9494 80.1553 24.9715C76.6043 18.8727 70.0171 15.1074 62.888 15.1074C61.4836 15.1074 60.083 15.2537 58.7097 15.544C56.8625 13.4905 54.5951 11.8468 52.0571 10.721C49.519 9.59532 46.768 9.01324 43.9853 9.01318H43.8603L43.8134 9.01346C35.1788 9.01346 27.5214 14.5109 24.8671 22.6155C22.1194 23.1707 19.5238 24.2987 17.2537 25.9239C14.9837 27.5491 13.0918 29.6341 11.7045 32.0392C9.94269 35.035 9.01426 38.4369 9.01318 41.9006C9.01386 46.7684 10.8452 51.4627 14.1525 55.0746C13.4849 57.0534 13.1444 59.1252 13.1441 61.2108C13.1444 64.6616 14.076 68.0501 15.8432 71.0281C17.9446 74.6382 21.1538 77.4965 25.008 79.1909C28.8621 80.8852 33.1621 81.328 37.2877 80.4553C39.1352 82.5088 41.4027 84.1526 43.9409 85.2783C46.4791 86.4041 49.2303 86.9862 52.0132 86.9864H52.1382L52.1889 86.9861C60.8282 86.9861 68.4831 81.4884 71.1375 73.3765C73.8851 72.8211 76.4808 71.693 78.7508 70.0677C81.0209 68.4425 82.9129 66.3576 84.3003 63.9525C86.0602 60.9593 86.9869 57.5603 86.9864 54.0998C86.9857 49.2321 85.1544 44.5379 81.8471 40.926L81.8463 40.9249ZM52.1431 81.8888H52.1227C48.6658 81.8877 45.3186 80.6911 42.6632 78.507C42.8209 78.4233 42.9767 78.3361 43.1306 78.2457L58.8653 69.278C59.2579 69.0574 59.5844 68.7383 59.8116 68.3529C60.0388 67.9675 60.1585 67.5297 60.1586 67.0839V45.1814L66.8093 48.9704C66.8442 48.9876 66.8743 49.013 66.8969 49.0444C66.9194 49.0757 66.9338 49.1121 66.9387 49.1503V67.2763C66.9296 75.3351 60.3112 81.8725 52.1431 81.8888ZM20.3248 68.4801C19.0251 66.2627 18.3403 63.7467 18.3394 61.1852C18.3394 60.3497 18.4134 59.5121 18.5574 58.6889C18.6744 58.7581 18.8785 58.8811 19.025 58.9641L34.7597 67.9319C35.152 68.1578 35.5981 68.2769 36.0524 68.2768C36.5066 68.2767 36.9527 68.1574 37.3448 67.9313L56.5552 56.9867V64.565L56.5555 64.5781C56.5555 64.6146 56.5469 64.6506 56.5304 64.6832C56.5139 64.7159 56.4899 64.7443 56.4603 64.7662L40.554 73.8279C38.3034 75.1059 35.7522 75.779 33.1554 75.7797C30.5559 75.7793 28.0021 75.1046 25.7501 73.8233C23.4982 72.542 21.6272 70.6991 20.3248 68.4793V68.4801ZM16.1853 34.5871C17.9134 31.6254 20.6422 29.3576 23.894 28.1807C23.894 28.3144 23.8863 28.5512 23.8863 28.7156V46.6514L23.886 46.6661C23.8861 47.1114 24.0056 47.5488 24.2324 47.9338C24.4592 48.3188 24.7853 48.6378 25.1774 48.8582L44.3878 59.8012L37.7374 63.5902C37.7046 63.6116 37.667 63.6246 37.6278 63.6281C37.5887 63.6316 37.5493 63.6255 37.5131 63.6104L21.6052 54.5411C19.3564 53.2557 17.4894 51.4097 16.1915 49.188C14.8935 46.9664 14.2102 44.4472 14.2099 41.8829C14.2109 39.3226 14.8923 36.8073 16.1861 34.5879L16.1853 34.5871ZM70.8271 47.1335L51.6167 36.1891L58.2674 32.4015C58.3002 32.3801 58.3378 32.3671 58.377 32.3636C58.4161 32.3601 58.4555 32.3662 58.4917 32.3813L74.3994 41.443C76.65 42.7264 78.519 44.5714 79.8185 46.7928C81.118 49.0142 81.8024 51.5338 81.8029 54.0987C81.8029 60.2207 77.9314 65.6986 72.11 67.8129V49.3409C72.1109 49.3341 72.1108 49.327 72.1108 49.3202C72.1107 48.8765 71.992 48.4407 71.7666 48.0567C71.5412 47.6728 71.2171 47.3543 70.8271 47.1335ZM77.4466 37.3033C77.2919 37.2098 77.1361 37.1182 76.9792 37.0284L61.2446 28.0604C60.8522 27.8348 60.4063 27.7159 59.9523 27.7158C59.4982 27.7159 59.0523 27.8348 58.66 28.0604L39.4493 39.005V31.4267L39.4491 31.4136C39.4491 31.3395 39.4847 31.2699 39.5445 31.2255L55.4508 22.1715C57.7007 20.8916 60.2521 20.2179 62.8491 20.2177C71.0277 20.2177 77.6601 26.7619 77.6601 34.8316C77.6597 35.6597 77.5883 36.4863 77.4466 37.3025V37.3033ZM35.8335 50.8103L29.1815 47.0213C29.1465 47.0041 29.1165 46.9787 29.0939 46.9473C29.0713 46.9159 29.057 46.8795 29.0521 46.8414V28.7151C29.0557 20.6498 35.6881 14.111 43.8631 14.111C47.3254 14.1117 50.6782 15.3085 53.3397 17.4936C53.22 17.5582 53.0111 17.6719 52.8723 17.755L37.1376 26.7227C36.745 26.9431 36.4186 27.2621 36.1915 27.6474C35.9643 28.0326 35.8446 28.4703 35.8445 28.916V28.9304L35.8335 50.8103ZM39.4463 43.1247L48.0023 38.2488L56.5582 43.1215V52.8702L48.0023 57.7432L39.4463 52.8702V43.1247Z"})}),dM=[{text:"import boto3"},{text:"import os"},{text:""},{text:"AWS_KEY = 'AKIAIOSFODNN7EXAMPLE'",sensitiveRanges:[{start:11,end:31,type:"api_key",redactedText:"[AWS_KEY]"}]},{text:"SECRET = 'wJalrXUtnFEMI/K7MDENG'",sensitiveRanges:[{start:10,end:32,type:"api_key",redactedText:"[AWS_SECRET]"}]},{text:"s3 = boto3.client('s3')"}];function dw({className:e,fileName:t="config.py",onAnimationComplete:n}){let[i,r]=(0,R.useState)(!1),[a,s]=(0,R.useState)("file"),[o,l]=(0,R.useState)(!1),[u,c]=(0,R.useState)(!1),[h,d]=(0,R.useState)(0),[p,f]=(0,R.useState)([]),m=(0,R.useMemo)(()=>[{text:"Why does this function timeout? ",isPII:!1},{text:"client = boto3.client('s3', aws_access_key_id='",isPII:!1},{text:"AKIAIOSFODNN7EXAMPLE",isPII:!0,redactedText:"[AWS_KEY]",type:"api_key"},{text:"')",isPII:!1}],[]),g=e=>({api_key:"key",email:"mail",name:"user",internal_id:"hash",card:"credit-card",ssn:"file"})[e]||"file",v=e=>({api_key:"AWS credential",email:"email",name:"name",internal_id:"internal ID",card:"card number",ssn:"SSN"})[e]||e,x=(0,R.useCallback)(()=>{l(!0),c(!0),d(10)},[]),y=(0,R.useCallback)(e=>{d(e=>Math.min(e+15,55)),f(t=>{let n=v(e);return t.find(e=>e.type===n)?t.map(e=>e.type===n?{...e,count:e.count+1}:e):[...t,{type:n,count:1,icon:g(e)}]})},[]),_=(0,R.useCallback)(()=>{d(50)},[]),b=(0,R.useCallback)(()=>{r(!0),s("typing"),d(60)},[]),S=(0,R.useCallback)(()=>{s("scanning"),d(70)},[]),M=(0,R.useCallback)(e=>{d(e=>Math.min(e+10,90)),f(t=>{let n=v(e);return t.find(e=>e.type===n)?t.map(e=>e.type===n?{...e,count:e.count+1}:e):[...t,{type:n,count:1,icon:g(e)}]})},[]),w=(0,R.useCallback)(()=>{d(90)},[]),A=(0,R.useCallback)(()=>{s("complete"),c(!1),d(100)},[]);return(0,R.useEffect)(()=>
486{if("complete"===a&&n){let e=setTimeout(()=>{n()},1200);return()=>clearTimeout(e)}},[a,n]),(0,T.jsxs)(E.motion.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5,delay:.3},className:(0,C.cn)("relative w-full",e),children:[(0,T.jsxs)("div",{className:"rounded-3xl bg-[#2F2F2F] overflow-hidden shadow-xl min-h-[280px]",children:[(0,T.jsxs)("div",{className:"flex items-center gap-2 px-5 py-3 border-b border-[#424242]",children:[(0,T.jsx)(dS,{className:"w-5 h-5 text-white"}),(0,T.jsx)("span",{className:"text-sm font-medium text-white",children:"ChatGPT"}),(0,T.jsx)("span",{className:"text-xs text-[#8E8E8E] ml-auto",children:"GPT-4o"})]}),(0,T.jsxs)("div",{className:"p-5",children:[(0,T.jsx)("div",{className:"mb-4",children:(0,T.jsx)(dd,{fileName:t,fileType:"python",lines:dM,variant:"dark",uploadDuration:1500,startDelay:300,scanSpeed:200,onScanStart:x,onItemDetected:y,onScanComplete:_,onCollapseComplete:b,issuesFound:2})}),(0,T.jsx)("div",{className:"min-h-[60px] mb-4",children:(0,T.jsx)("p",{className:"text-white text-[15px] leading-relaxed",children:i&&(0,T.jsx)(dp,{segments:m,typingSpeed:25,startDelay:200,onTypingComplete:S,onScanComplete:w,onRedactionComplete:A,onItemDetected:M})})}),(0,T.jsxs)("div",{className:"flex items-center justify-between pt-3 border-t border-[#424242]",children:[(0,T.jsx)("div",{className:"flex items-center gap-1",children:(0,T.jsx)("button",{className:"h-9 w-9 rounded-full flex items-center justify-center text-[#8E8E8E] hover:bg-[#424242] transition-colors",children:(0,T.jsx)(da.Paperclip,{className:"w-5 h-5"})})}),(0,T.jsx)("button",{className:"h-9 w-9 rounded-full flex items-center justify-center bg-white text-black",children:(0,T.jsx)(dl,{className:"w-5 h-5"})})]})]})]}),(0,T.jsx)("div",{className:"mt-4",children:(0,T.jsx)(db,{isVisible:o,isScanning:u,scanProgress:h,discoveredItems:u?p:void 0,detectedItems:u?void 0:p})})]})}let dT=(0,ds.default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);var dE=e.i(64659);let dC=({className:e})=>
486(0,T.jsx)("svg",{viewBox:"0 0 96 96",className:e,fill:"currentColor",children:(0,T.jsx)("path",{d:"M24.3215 60.8553L39.6531 52.2522L39.9096 51.5024L39.6531 51.088H38.9033L36.3382 50.9302L27.5772 50.6934L19.9805 50.3777L12.6205 49.9831L10.7657 49.5884L9.0293 47.2995L9.20688 46.1551L10.7657 45.1093L12.9954 45.3066L17.9284 45.642L25.3278 46.1551L30.6949 46.4708L38.6468 47.2995H39.9096L40.0872 46.7865L39.6531 46.4708L39.3177 46.1551L31.6617 40.9656L23.3744 35.4801L19.0333 32.323L16.6853 30.7248L15.5013 29.2251L14.9883 25.9497L17.1194 23.6016L19.9805 23.7989L20.7106 23.9962L23.6111 26.2259L29.8069 31.0207L37.897 36.9798L39.0809 37.9664L39.5545 37.6309L39.6137 37.3941L39.0809 36.5062L34.6807 28.5543L29.9845 20.4642L27.8929 17.1098L27.3405 15.0971C27.1431 14.2684 27.005 13.5778 27.005 12.7293L29.432 9.4341L30.7738 9L34.0098 9.4341L35.3713 10.618L37.384 15.2155L40.6397 22.4571L45.6911 32.3033L47.171 35.2236L47.9602 37.9269L48.2562 38.7556H48.7692V38.2821L49.1836 32.7374L49.9532 25.9299L50.703 17.169L50.9595 14.7025L52.1829 11.7427L54.6099 10.1444L56.5041 11.0521L58.0629 13.2818L57.8459 14.7222L56.9185 20.7405L55.1032 30.1723L53.9193 36.4865H54.6099L55.3991 35.6972L58.5957 31.4548L63.9628 24.746L66.3306 22.0822L69.093 19.1422L70.8689 17.7412H74.2233L76.6898 21.4113L75.5848 25.1998L72.1318 29.5803L69.2706 33.2899L65.1664 38.8148L62.6013 43.2348L62.8381 43.5899L63.4497 43.5307L72.7237 41.5576L77.7356 40.6499L83.7143 39.6238L86.4176 40.8867L86.7136 42.1692L85.6481 44.7936L79.255 46.3721L71.7568 47.8717L60.5886 50.5158L60.4505 50.6145L60.6083 50.8118L65.64 51.2854L67.7907 51.4037H73.0592L82.8659 52.1338L85.431 53.8308L86.9701 55.9026L86.7136 57.4812L82.7672 59.4938L77.4396 58.231L65.0086 55.2712L60.7465 54.2057H60.1545V54.5608L63.7062 58.0336L70.2178 63.9137L78.367 71.4908L78.7814 73.3653L77.7356 74.8452L76.6306 74.6873L69.4679 69.3005L66.7055 66.8735L60.4505 61.6051H60.0361V62.1576L61.4766 64.2689L69.093 75.7134L69.4877 79.2257L68.9352 80.3701L66.962 81.0607L64.7915 80.6661L60.3321 74.4111L55.7346 67.3668L52.025 61.0526L51.5712 61.3091L49.3809 84.8887L48.3549 86.0923L45.987 87L44.0139 85.5004L42.9681 83.0734L44.0139 78.2785L45.2767 72.0235L46.3028 67.0511L47.2302 60.875L47.7826 58.8229L47.7432 58.6848L47.2894 58.744L42.6326 65.1371L35.5489 74.7071L29.9451 80.7055L28.6033 81.2383L26.2749 80.0347L26.492 77.8839L27.7943 75.9699L35.5489 66.104L40.2254 59.9871L43.2443 56.4551L43.2246 55.9421H43.047L22.447 69.3203L18.7768 69.7938L17.1983 68.3139L17.3956 65.8869L18.1454 65.0976L24.3412 60.8356L24.3215 60.8553Z"})}),dA=[{text:"Name,Card,Amount,Vendor,Invoice"},{text:"Sarah Chen,4242-8910,$2847,Acme,INV-0892",sensitiveRanges:[{start:0,end:10,type:"name",redactedText:"[NAME]"},{start:11,end:20,type:"card",redactedText:"[CARD]"},{start:33,end:41,type:"internal_id",redactedText:"[INV_ID]"}]},{text:"James Park,5111-3456,$1203,Global,INV-0893",sensitiveRanges:[{start:0,end:10,type:"name",redactedText:"[NAME]"},{start:11,end:20,type:"card",redactedText:"[CARD]"},{start:34,end:42,type:"internal_id",redactedText:"[INV_ID]"}]},{text:"Mike Torres,9876-1122,$945,Vendor,INV-0894",sensitiveRanges:[{start:0,end:11,type:"name",redactedText:"[NAME]"},{start:12,end:21,type:"card",redactedText:"[CARD]"},{start:34,end:42,type:"internal_id",redactedText:"[INV_ID]"}]}];function dR({className:e,fileName:t="Q4_expenses.csv",onAnimationComplete:n}){let[i,r]=(0,R.useState)(!1),[a,s]=(0,R.useState)("file"),[o,l]=(0,R.useState)(!1),[u,c]=(0,R.useState)(!1),[h,d]=(0,R.useState)(0),[p,f]=(0,R.useState)([]),m=(0,R.useMemo)(()=>[{text:"Summarize this expense: ",isPII:!1},{text:"Sarah Chen",isPII:!0,redactedText:"[NAME]",type:"name"},{text:" - Card ending ",isPII:!1},{text:"4242",isPII:!0,redactedText:"[CARD]",type:"api_key"},{text:" - $2,847 at Vendor ",isPII:!1},{text:"INV-2024-0892",isPII:!0,redactedText:"[INVOICE_ID]",type:"internal_id"}],[]),g=e=>({api_key:"key",email:"mail",name:"user",internal_id:"hash",card:"credit-card",ssn:"file"})[e]||"file",v=e=>({api_key:"payment info",email:"email",name:"employee name",internal_id:"internal ID",card:"card number",ssn:"SSN"})[e]||e,x=(0,R.useCallback)(()=>{l(!0),c(!0),d(10)},[]),y=(0,R.useCallback)(e=>{d(e=>Math.min(e+8,55)),f(t=>{let n=v(e);return t.find(e=>e.type===n)?t.map(e=>e.type===n?{...e,count:e.count+1}:e):[...t,{type:n,count:1,icon:g(e)}]})},[]),_=(0,R.useCallback)(()=>{d(50)},[]),b=(0,R.useCallback)(()=>{r(!0),s("typing"),d(60)},[]),S=(0,R.useCallback)(()=>{s("scanning"),d(70)},[]),M=(0,R.useCallback)(e=>{d(e=>Math.min(e+8,90)),f(t=>{let n=v(e);return t.find(e=>e.type===n)?t.map(e=>e.type===n?{...e,count:e.count+1}:e):[...t,{type:n,count:1,icon:g(e)}]})},[]),w=(0,R.useCallback)(()=>{d(90)},[]),A=(0,R.useCallback)(()=>{s("complete"),c(!1),d(100)},[]);return(0,R.useEffect)(()=>
486{if("complete"===a&&n){let e=setTimeout(()=>{n()},1200);return()=>clearTimeout(e)}},[a,n]),(0,T.jsxs)(E.motion.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5},className:(0,C.cn)("relative w-full",e),children:[(0,T.jsxs)("div",{className:"rounded-3xl bg-[#FAF9F6] border border-[#E8E5DE] shadow-[0_2px_8px_rgba(0,0,0,0.08)] overflow-hidden min-h-[280px]",children:[(0,T.jsxs)("div",{className:"flex items-center gap-2 px-5 py-3 border-b border-[#E8E5DE]",children:[(0,T.jsx)(dC,{className:"w-5 h-5 text-[#CC785C]"}),(0,T.jsx)("span",{className:"text-sm font-medium text-[#1F1E1D]",children:"Claude"})]}),(0,T.jsxs)("div",{className:"p-5",children:[(0,T.jsx)("div",{className:"mb-4",children:(0,T.jsx)(dd,{fileName:t,fileType:"csv",lines:dA,variant:"light",uploadDuration:1500,startDelay:300,scanSpeed:200,onScanStart:x,onItemDetected:y,onScanComplete:_,onCollapseComplete:b,issuesFound:9})}),(0,T.jsx)("div",{className:"min-h-[60px] mb-4",children:(0,T.jsx)("p",{className:"text-[#1F1E1D] text-[15px] leading-relaxed",children:i&&(0,T.jsx)(dp,{segments:m,typingSpeed:25,startDelay:200,cursorColor:"#1F1E1D",onTypingComplete:S,onScanComplete:w,onRedactionComplete:A,onItemDetected:M})})}),(0,T.jsxs)("div",{className:"flex items-center justify-between pt-3 border-t border-[#E8E5DE]",children:[(0,T.jsx)("div",{className:"flex items-center gap-1",children:(0,T.jsx)("button",{className:"h-9 w-9 rounded-full flex items-center justify-center text-[#6B7280] hover:bg-[#EAE7E0] transition-colors",children:(0,T.jsx)(dT,{className:"w-5 h-5"})})}),(0,T.jsxs)("div",{className:"flex items-center gap-2",children:[(0,T.jsxs)("button",{className:"h-8 px-3 rounded-full flex items-center gap-1 text-[#6B7280] bg-[#EAE7E0] hover:bg-[#DDD9D0] transition-colors",children:[(0,T.jsx)("span",{className:"text-xs font-medium",children:"Claude 4 Sonnet"}),(0,T.jsx)(dE.ChevronDown,{className:"w-3 h-3"})]}),(0,T.jsx)("button",{className:"h-9 w-9 rounded-full flex items-center justify-center bg-[#CC785C] text-white",children:(0,T.jsx)(dl,{className:"w-5 h-5"})})]})]})]})]}),(0,T.jsx)("div",{className:"mt-4",children:(0,T.jsx)(db,{isVisible:o,isScanning:u,scanProgress:h,discoveredItems:u?p:void 0,detectedItems:u?void 0:p,variant:"light"})})]})}let dL=(0,ds.default)("mic",[["path",{d:"M12 19v3",key:"npa21l"}],["path",{d:"M19 10v2a7 7 0 0 1-14 0v-2",key:"1vc78b"}],["rect",{x:"9",y:"2",width:"6",height:"13",rx:"3",key:"s6n7sd"}]]),dP=({className:e})=>(0,T.jsxs)("svg",{viewBox:"0 0 96 96",className:e,children:[(0,T.jsx)("defs",{children:(0,T.jsxs)("linearGradient",{id:"gemini-gradient",x1:"0%",y1:"0%",x2:"100%",y2:"100%",children:[(0,T.jsx)("stop",{offset:"0%",stopColor:"#4285F4"}),(0,T.jsx)("stop",{offset:"35%",stopColor:"#9B72CB"}),(0,T.jsx)("stop",{offset:"70%",stopColor:"#D96570"}),(0,T.jsx)("stop",{offset:"100%",stopColor:"#D96570"})]})}),(0,T.jsx)("path",{d:"M47.919 6C46.56 28.53 28.53 46.56 6 47.919V48.081C28.53 49.44 46.56 67.47 47.919 90H48.081C49.44 67.47 67.47 49.44 90 48.081V47.919C67.47 46.56 49.44 28.53 48.081 6H47.919Z",fill:"url(#gemini-gradient)"})]}),dI=[{text:"CONFIDENTIAL - HR Case #4892"},{text:""},{text:"Employee: James Morrison (EMP-4892)",sensitiveRanges:[{start:10,end:25,type:"name",redactedText:"[NAME]"},{start:27,end:35,type:"internal_id",redactedText:"[EMP_ID]"}]},{text:"Manager: Lisa Park (EMP-2011)",sensitiveRanges:[{start:9,end:18,type:"name",redactedText:"[NAME]"},{start:20,end:28,type:"internal_id",redactedText:"[EMP_ID]"}]},{text:"Filed: 2024-10-15, Dept: Engineering"},{text:"SSN on file: 412-55-6789",sensitiveRanges:[{start:13,end:24,type:"ssn",redactedText:"[SSN]"}]}];function dN({className:e,fileName:t="HR_case_notes.docx",onAnimationComplete:n}){let[i,r]=(0,R.useState)(!1),[a,s]=(0,R.useState)("file"),[o,l]=(0,R.useState)(!1),[u,c]=(0,R.useState)(!1),[h,d]=(0,R.useState)(0),[p,f]=(0,R.useState)([]),m=(0,R.useMemo)(()=>[{text:"Help me write a response to this complaint: ",isPII:!1},{text:"James Morrison",isPII:!0,redactedText:"[NAME]",type:"name"},{text:" (Emp ID: ",isPII:!1},{text:"EMP-4892",isPII:!0,redactedText:"[EMP_ID]",type:"internal_id"},{text:") reported manager ",isPII:!1},{text:"Lisa Park",isPII:!0,redactedText:"[NAME]",type:"name"}],[]),g=e=>({api_key:"key",email:"mail",name:"user",internal_id:"hash",card:"credit-card",ssn:"file"})[e]||"file",v=e=>({api_key:"API key",email:"email",name:"employee name",internal_id:"employee ID",card:"card number",ssn:"SSN"})[e]||e,x=(0,R.useCallback)(()=>{l(!0),c(!0),d(10)},[]),y=(0,R.useCallback)(e=>{d(e=>Math.min(e+10,55)),f(t=>{let n=v(e);return t.find(e=>e.type===n)?t.map(e=>e.type===n?{...e,count:e.count+1}:e):[...t,{type:n,count:1,icon:g(e)}]})},[]),_=(0,R.useCallback)(()=>{d(50)},[]),b=(0,R.useCallback)(()=>{r(!0),s("typing"),d(60)},[]),S=(0,R.useCallback)(()=>{s("scanning"),d(70)},[]),M=(0,R.useCallback)(e=>{d(e=>Math.min(e+8,90)),f(t=>{let n=v(e);return t.find(e=>e.type===n)?t.map(e=>e.type===n?{...e,count:e.count+1}:e):[...t,{type:n,count:1,icon:g(e)}]})},[]),w=(0,R.useCallback)(()=>{d(90)},[]),A=(0,R.useCallback)(()=>{s("complete"),c(!1),d(100)},[]);return(0,R.useEffect)(()=>
486{if("complete"===a&&n){let e=setTimeout(()=>{n()},1200);return()=>clearTimeout(e)}},[a,n]),(0,T.jsxs)(E.motion.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5},className:(0,C.cn)("relative w-full",e),children:[(0,T.jsxs)("div",{className:"rounded-3xl bg-[#1E1F20] border border-[#3C4043] shadow-xl overflow-hidden min-h-[280px]",children:[(0,T.jsxs)("div",{className:"flex items-center gap-2 px-5 py-3 border-b border-[#3C4043]",children:[(0,T.jsx)(dP,{className:"w-5 h-5"}),(0,T.jsx)("span",{className:"text-sm font-medium text-white",children:"Gemini"}),(0,T.jsx)("span",{className:"text-xs text-[#8E8E8E] ml-auto",children:"2.0 Flash"})]}),(0,T.jsxs)("div",{className:"p-5",children:[(0,T.jsx)("div",{className:"mb-4",children:(0,T.jsx)(dd,{fileName:t,fileType:"docx",lines:dI,variant:"dark",uploadDuration:1500,startDelay:300,scanSpeed:200,onScanStart:x,onItemDetected:y,onScanComplete:_,onCollapseComplete:b,issuesFound:5})}),(0,T.jsx)("div",{className:"min-h-[60px] mb-4",children:(0,T.jsx)("p",{className:"text-white text-[15px] leading-relaxed",children:i&&(0,T.jsx)(dp,{segments:m,typingSpeed:25,startDelay:200,onTypingComplete:S,onScanComplete:w,onRedactionComplete:A,onItemDetected:M})})}),(0,T.jsxs)("div",{className:"flex items-center justify-between pt-3 border-t border-[#3C4043]",children:[(0,T.jsxs)("div",{className:"flex items-center gap-1",children:[(0,T.jsx)("button",{className:"h-9 w-9 rounded-full flex items-center justify-center text-[#8E8E8E] hover:bg-[#3C4043] transition-colors",children:(0,T.jsx)(dT,{className:"w-5 h-5"})}),(0,T.jsx)("button",{className:"h-9 w-9 rounded-full flex items-center justify-center text-[#8E8E8E] hover:bg-[#3C4043] transition-colors",children:(0,T.jsx)(dL,{className:"w-5 h-5"})})]}),(0,T.jsx)("button",{className:"h-9 w-9 rounded-full flex items-center justify-center bg-[#4285F4] text-white",children:(0,T.jsx)(dl,{className:"w-5 h-5"})})]})]})]}),(0,T.jsx)("div",{className:"mt-4",children:(0,T.jsx)(db,{isVisible:o,isScanning:u,scanProgress:h,discoveredItems:u?p:void 0,detectedItems:u?void 0:p})})]})}let dD=["chatgpt","claude","gemini"];function dU({className:e}){let[t,n]=(0,R.useState)(0),[i,r]=(0,R.useState)(!0),a=(0,R.useCallback)(()=>{r(!1)},[]);(0,R.useEffect)(()=>{if(!i){let e=setTimeout(()=>{n(e=>(e+1)%dD.length),r(!0)},2e3);return()=>clearTimeout(e)}},[i]);let s=dD[t];return(0,T.jsxs)("div",{className:(0,C.cn)("relative w-full",e),children:[(0,T.jsx)("div",{className:"flex justify-center gap-2 mb-4",children:dD.map((e,i)=>(0,T.jsx)("button",{onClick:()=>{n(i),r(!0)},className:(0,C.cn)("w-2 h-2 rounded-full transition-all duration-300",i===t?"bg-white w-6":"bg-white/30 hover:bg-white/50"),"aria-label":`Switch to ${e}`},e))}),(0,T.jsxs)(dr,{mode:"wait",children:["chatgpt"===s&&(0,T.jsx)(E.motion.div,{initial:{opacity:0,x:20},animate:{opacity:1,x:0},exit:{opacity:0,x:-20},transition:{duration:.4},children:(0,T.jsx)(dw,{onAnimationComplete:a})},"chatgpt"),"claude"===s&&(0,T.jsx)(E.motion.div,{initial:{opacity:0,x:20},animate:{opacity:1,x:0},exit:{opacity:0,x:-20},transition:{duration:.4},children:(0,T.jsx)(dR,{onAnimationComplete:a})},"claude"),"gemini"===s&&(0,T.jsx)(E.motion.div,{initial:{opacity:0,x:20},animate:{opacity:1,x:0},exit:{opacity:0,x:-20},transition:{duration:.4},children:(0,T.jsx)(dN,{onAnimationComplete:a})},"gemini")]})]})}function dF({className:e}){return(0,T.jsxs)("section",{className:(0,C.cn)("relative min-h-screen flex flex-col items-center justify-center px-4 py-20 overflow-hidden",e),children:[(0,T.jsx)(hK,{className:"z-0"}),(0,T.jsx)("div",{className:"absolute bottom-0 left-0 right-0 h-32 z-[1] pointer-events-none",style:{background:"linear-gradient(to bottom, transparent 0%, black 100%)"}}),(0,T.jsxs)("div",{className:"relative z-10 w-full max-w-[1400px] mx-auto grid grid-cols-1 xl:grid-cols-[1fr_1.3fr] gap-8 xl:gap-12 items-center px-4",children:[(0,T.jsxs)("div",{className:"text-center xl:text-left",children:[(0,T.jsx)(E.motion.h1,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.6,delay:.2},className:"text-3xl md:text-5xl xl:text-6xl font-normal pb-4 bg-clip-text text-transparent bg-gradient-to-b from-neutral-100 to-neutral-300",children:"Stop sensitive data from leaking into AI"}),(0,T.jsx)(E.motion.p,{initial:{opacity:0,y:20}
486,animate:{opacity:1,y:0},transition:{duration:.6,delay:.3},className:"text-sm md:text-lg font-normal text-neutral-400 mt-6 max-w-xl mx-auto xl:mx-0",children:"The browser-native LLM firewall that scans prompts and file uploads in real time. It redacts secrets, PII, and internal identifiers before they reach ChatGPT, Claude, or any AI tool. AI-powered prompt detection runs on-device â your prompts never leave the browser."}),(0,T.jsxs)(E.motion.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.6,delay:.4},className:"flex flex-col sm:flex-row items-center xl:items-start justify-center xl:justify-start gap-4 mt-10",children:[(0,T.jsx)("a",{href:"https://app.obfusca.ai/signup",className:"px-8 py-3 bg-white text-black font-medium rounded-full hover:bg-[#CCCCCC] transition-colors",children:"Start free trial"}),(0,T.jsx)("a",{href:"/demo",className:"px-8 py-3 bg-transparent text-white font-medium rounded-full border border-[#333333] hover:border-[#555555] transition-colors",children:"Book a demo"})]}),(0,T.jsxs)(E.motion.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.6,delay:.5},className:"flex items-center justify-center xl:justify-start gap-6 mt-8",children:[(0,T.jsxs)("div",{className:"flex items-center gap-2",children:[(0,T.jsx)("img",{src:"https://deifkwefumgah.cloudfront.net/shadcnblocks/block/compliance/GDPR.svg",alt:"GDPR Compliant",className:"w-8 h-8 invert"}),(0,T.jsx)("span",{className:"text-xs text-white uppercase tracking-wider font-medium",children:"GDPR"})]}),(0,T.jsx)("div",{className:"w-px h-4 bg-[#555555]"}),(0,T.jsxs)("div",{className:"flex items-center gap-2",children:[(0,T.jsx)("img",{src:"https://deifkwefumgah.cloudfront.net/shadcnblocks/block/compliance/CCPA.svg",alt:"CCPA Compliant",className:"w-8 h-8 invert"}),(0,T.jsx)("span",{className:"text-xs text-white uppercase tracking-wider font-medium",children:"CCPA"})]})]})]}),(0,T.jsx)("div",{className:"flex justify-center xl:justify-end",children:(0,T.jsx)(dU,{className:"w-full max-w-2xl"})})]})]})}e.s(["HeroSection",()=>dF],87781)},876,e=>{"use strict";var t=e.i(43476),n=e.i(46932),i=e.i(98919),r=e.i(78583);let a=(0,e.i(75254).default)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);var s=e.i(83086),o=e.i(75157);let l=[{icon:(0,t.jsx)(i.Shield,{className:"w-6 h-6"}),title:"Context-Aware Detection",description:"Pattern matching catches known secrets instantly. Semantic analysis understands context to catch what patterns miss, all before data leaves your browser."},{icon:(0,t.jsx)(s.Sparkles,{className:"w-6 h-6"}),title:"Smart Replacements",description:"Mask, generate format-preserving dummies, or set custom replacements for each detection. Preview changes live before sending."},{icon:(0,t.jsx)(r.FileText,{className:"w-6 h-6"}),title:"File Protection",description:"Scan PDFs, spreadsheets, and 50+ file types. Download redacted versions or let Obfusca auto-upload the protected file back to the chat."},{icon:(0,t.jsx)(a,{className:"w-6 h-6"}),title:"Policies & Visibility",description:"Define rules in plain language, or write semantic rules that understand intent, not just keywords. See exactly what was caught, where, and why."}];function u({className:e,features:i=l}){return(0,t.jsx)("section",{className:(0,o.cn)("py-24 px-4 bg-black",e),children:(0,t.jsx)("div",{className:"max-w-6xl mx-auto",children:(0,t.jsx)(n.motion.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-100px"},transition:{duration:.6},className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8 md:gap-12",children:i.map((e,i)=>(0,t.jsxs)(n.motion.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-100px"},transition:{duration:.6,delay:.1*i},className:"flex flex-col items-center text-center p-6",children:[(0,t.jsx)("div",{className:"flex items-center justify-center w-14 h-14 rounded-full bg-[#111111] border border-[#222222] mb-6",children:(0,t.jsx)("div",{className:"text-white",children:e.icon})}),(0,t.jsx)("h3",{className:"text-lg font-normal bg-clip-text text-transparent bg-gradient-to-b from-neutral-100 to-neutral-300 mb-3",children:e.title}),(0,t.jsx)("p",{className:"text-neutral-400 text-sm font-normal leading-relaxed",children:e.description})]},i))})})})}e.s(["FeatureBullets",()=>u],876)},54349,e=>{"use strict";
486var t=e.i(43476),n=e.i(86427),i=e.i(65566),r=e.i(71645),a=e.i(60830),s=e.i(87022);function o(e,t){let n,i=()=>{let{currentTime:i}=t,r=(null===i?0:i.value)/100;n!==r&&e(r),n=r};return s.frame.preUpdate(i,!0),()=>(0,s.cancelFrame)(i)}var l=e.i(30551),u=e.i(61327),c=e.i(83920),h=e.i(25791);let d=()=>({current:0,offset:[],progress:0,scrollLength:0,targetOffset:0,targetLength:0,containerLength:0,velocity:0}),p={x:{length:"Width",position:"Left"},y:{length:"Height",position:"Top"}};function f(e,t,n,i){let r=n[t],{length:a,position:s}=p[t],o=r.current,l=n.time;r.current=e[`scroll${s}`],r.scrollLength=e[`scroll${a}`]-e[`client${a}`],r.offset.length=0,r.offset[0]=0,r.offset[1]=r.scrollLength,r.progress=(0,c.progress)(0,r.scrollLength,r.current);let u=i-l;r.velocity=u>50?0:(0,h.velocityPerSecond)(r.current-o,u)}e.i(47167);var m=e.i(44230),g=e.i(15923),v=e.i(76959),x=e.i(72846);let y={start:0,center:.5,end:1};function _(e,t,n=0){let i=0;if(e in y&&(e=y[e]),"string"==typeof e){let t=parseFloat(e);e.endsWith("px")?i=t:e.endsWith("%")?e=t/100:e.endsWith("vw")?i=t/100*document.documentElement.clientWidth:e.endsWith("vh")?i=t/100*document.documentElement.clientHeight:e=t}return"number"==typeof e&&(i=t*e),n+i}let b=[0,0],S=[[0,0],[1,1]],M={x:0,y:0},w=new WeakMap,T=new WeakMap,E=new WeakMap,C=new WeakMap,A=new WeakMap,R=e=>e===document.scrollingElement?window:e;function L(e,{container:t=document.scrollingElement,trackContentSize:n=!1,...i}={}){if(!t)return a.noop;let r=E.get(t);r||(r=new Set,E.set(t,r));let o=function(e,t,n,i={}){return{measure:t=>{!function(e,t=e,n){if(n.x.targetOffset=0,n.y.targetOffset=0,t!==e){let i=t;for(;i&&i!==e;)n.x.targetOffset+=i.offsetLeft,n.y.targetOffset+=i.offsetTop,i=i.offsetParent}n.x.targetLength=t===e?t.scrollWidth:t.clientWidth,n.y.targetLength=t===e?t.scrollHeight:t.clientHeight,n.x.containerLength=e.clientWidth,n.y.containerLength=e.clientHeight}(e,i.target,n),f(e,"x",n,t),f(e,"y",n,t),n.time=t,(i.offset||i.target)&&function(e,t,n){let{offset:i=S}=n,{target:r=e,axis:a="y"}=n,s="y"===a?"height":"width",o=r!==e?function(e,t){let n={x:0,y:0},i=e;for(;i&&i!==t;)if((0,x.isHTMLElement)(i))n.x+=i.offsetLeft,n.y+=i.offsetTop,i=i.offsetParent;else if("svg"===i.tagName){let e=i.getBoundingClientRect(),t=(i=i.parentElement).getBoundingClientRect();n.x+=e.left-t.left,n.y+=e.top-t.top}else if(i instanceof SVGGraphicsElement){let{x:e,y:t}=i.getBBox();n.x+=e,n.y+=t;let r=null,a=i.parentNode;for(;!r;)"svg"===a.tagName&&(r=a),a=i.parentNode;i=r}else break;return n}(r,e):M,l=r===e?{width:e.scrollWidth,height:e.scrollHeight}:"getBBox"in r&&"svg"!==r.tagName?r.getBBox():{width:r.clientWidth,height:r.clientHeight},u={width:e.clientWidth,height:e.clientHeight};t[a].offset.length=0;let c=!t[a].interpolate,h=i.length;for(let e=0;e<h;e++){let n=function(e,t,n,i){let r=Array.isArray(e)?e:b,a=0;return"number"==typeof e?r=[e,e]:"string"==typeof e&&(r=(e=e.trim()).includes(" ")?e.split(" "):[e,y[e]?e:"0"]),(a=_(r[0],n,i))-_(r[1],t)}(i[e],u[s],l[s],o[a]);c||n===t[a].interpolatorOffsets[e]||(c=!0),t[a].offset[e]=n}c&&(t[a].interpolate=(0,m.interpolate)(t[a].offset,(0,g.defaultOffset)(i),{clamp:!1}),t[a].interpolatorOffsets=[...t[a].offset]),t[a].progress=(0,v.clamp)(0,1,t[a].interpolate(t[a].current))}(e,n,i)},notify:()=>t(n)}}(t,e,{time:0,x:d(),y:d()},i);if(r.add(o),!w.has(t)){let e=()=>{for(let e of r)e.measure(s.frameData.timestamp);s.frame.preUpdate(n)},n=()=>{for(let e of r)e.notify()},i=()=>s.frame.read(e);w.set(t,i);let a=R(t);window.addEventListener("resize",i,{passive:!0}),t!==document.documentElement&&T.set(t,(0,u.resize)(t,i)),a.addEventListener("scroll",i,{passive:!0}),i()}if(n&&!A.has(t)){let e=w.get(t),n={width:t.scrollWidth,height:t.scrollHeight};C.set(t,n);let i=s.frame.read(()=>{let i=t.scrollWidth,r=t.scrollHeight;(n.width!==i||n.height!==r)&&(e(),n.width=i,n.height=r)},!0);A.set(t,i)}let l=w.get(t);return s.frame.read(l,!1,!0),()=>{(0,s.cancelFrame)(l);let e=E.get(t);if(!e||(e.delete(o),e.size))return;let n=w.get(t);w.delete(t),n&&(R(t).removeEventListener("scroll",n),T.get(t)?.(),window.removeEventListener("resize",n));let i=A.get(t);i&&((0,s.cancelFrame)(i),A.delete(t)),C.delete(t)}}let P=new Map;function I({source:e,container:t,...n}){var i;let r,a,{axis:s}=n;e&&(t=e);let o=P.get(t)??new Map;P.set(t,o);let u=n.target??"self",c=o.get(u)??{},h=s+(n.offset??[]).join(",");return c[h]||(c[h]=!n.target&&(0,l.supportsScrollTimeline)()?new ScrollTimeline({source:t,axis:s}):(i={container:t,...n},r={value:0},a=L(e=>{r.value=100*e[i.axis].progress},i),{currentTime:r,cancel:a})),c[h]}var N=e.i(47414),D=e.i(74008);let U=()=>({scrollX:(0,n.motionValue)(0),scrollY:(0,n.motionValue)(0),scrollXProgress:(0,n.motionValue)(0),scrollYProgress:(0,n.motionValue)(0)}),F=e=>!!e&&!e.current;var O=e.i(37806);function k(e,t){let i=function(e){let t=(0,N.useConstant)(()=>(0,n.motionValue)(e)),{isStatic:i}=(0,r.useContext)(O.MotionConfigContext);if(i){let[,n]=(0,r.useState)(e);(0,r.useEffect)(()=>t.on("change",n),[])}return t}(t()),a=()=>i.set(t());return a(),(0,D.useIsomorphicLayoutEffect)(()=>{let t=()=>s.frame.preRender(a,!1,!0),n=e.map(e=>e.on("change",t));return()=>
486{n.forEach(e=>e()),(0,s.cancelFrame)(a)}}),i}function z(e,t,i,r){if("function"==typeof e){let t;return n.collectMotionValues.current=[],e(),t=k(n.collectMotionValues.current,e),n.collectMotionValues.current=void 0,t}if(void 0!==i&&!Array.isArray(i)&&"function"!=typeof t){var a=e,s=t,o=i,l=r;let n=(0,N.useConstant)(()=>Object.keys(o)),u=(0,N.useConstant)(()=>({}));for(let e of n)u[e]=z(a,s,o[e],l);return u}let u="function"==typeof t?t:function(...e){let t=!Array.isArray(e[0]),n=t?0:-1,i=e[0+n],r=e[1+n],a=e[2+n],s=e[3+n],o=(0,m.interpolate)(r,a,s);return t?o(i):o}(t,i,r);return Array.isArray(e)?B(e,u):B([e],([e])=>u(e))}function B(e,t){let n=(0,N.useConstant)(()=>[]);return k(e,()=>{n.length=0;let i=e.length;for(let t=0;t<i;t++)n[t]=e[t].get();return t(n)})}var V=e.i(75157),H=e.i(46932);let j={duration:0,ease:"linear"},G=[{name:"ChatGPT",y:364},{name:"Claude",y:438.5},{name:"Gemini",y:514},{name:"Grok",y:587.5},{name:"Perplexity",y:663}],W=()=>(0,t.jsx)("g",{transform:"translate(-14, -14) scale(0.29)",children:(0,t.jsx)("path",{d:"M81.8463 40.9249C82.5136 38.9461 82.854 36.8743 82.8544 34.7888C82.8541 31.338 81.9225 27.9494 80.1553 24.9715C76.6043 18.8727 70.0171 15.1074 62.888 15.1074C61.4836 15.1074 60.083 15.2537 58.7097 15.544C56.8625 13.4905 54.5951 11.8468 52.0571 10.721C49.519 9.59532 46.768 9.01324 43.9853 9.01318H43.8603L43.8134 9.01346C35.1788 9.01346 27.5214 14.5109 24.8671 22.6155C22.1194 23.1707 19.5238 24.2987 17.2537 25.9239C14.9837 27.5491 13.0918 29.6341 11.7045 32.0392C9.94269 35.035 9.01426 38.4369 9.01318 41.9006C9.01386 46.7684 10.8452 51.4627 14.1525 55.0746C13.4849 57.0534 13.1444 59.1252 13.1441 61.2108C13.1444 64.6616 14.076 68.0501 15.8432 71.0281C17.9446 74.6382 21.1538 77.4965 25.008 79.1909C28.8621 80.8852 33.1621 81.328 37.2877 80.4553C39.1352 82.5088 41.4027 84.1526 43.9409 85.2783C46.4791 86.4041 49.2303 86.9862 52.0132 86.9864H52.1382L52.1889 86.9861C60.8282 86.9861 68.4831 81.4884 71.1375 73.3765C73.8851 72.8211 76.4808 71.693 78.7508 70.0677C81.0209 68.4425 82.9129 66.3576 84.3003 63.9525C86.0602 60.9593 86.9869 57.5603 86.9864 54.0998C86.9857 49.2321 85.1544 44.5379 81.8471 40.926L81.8463 40.9249ZM52.1431 81.8888H52.1227C48.6658 81.8877 45.3186 80.6911 42.6632 78.507C42.8209 78.4233 42.9767 78.3361 43.1306 78.2457L58.8653 69.278C59.2579 69.0574 59.5844 68.7383 59.8116 68.3529C60.0388 67.9675 60.1585 67.5297 60.1586 67.0839V45.1814L66.8093 48.9704C66.8442 48.9876 66.8743 49.013 66.8969 49.0444C66.9194 49.0757 66.9338 49.1121 66.9387 49.1503V67.2763C66.9296 75.3351 60.3112 81.8725 52.1431 81.8888ZM20.3248 68.4801C19.0251 66.2627 18.3403 63.7467 18.3394 61.1852C18.3394 60.3497 18.4134 59.5121 18.5574 58.6889C18.6744 58.7581 18.8785 58.8811 19.025 58.9641L34.7597 67.9319C35.152 68.1578 35.5981 68.2769 36.0524 68.2768C36.5066 68.2767 36.9527 68.1574 37.3448 67.9313L56.5552 56.9867V64.565L56.5555 64.5781C56.5555 64.6146 56.5469 64.6506 56.5304 64.6832C56.5139 64.7159 56.4899 64.7443 56.4603 64.7662L40.554 73.8279C38.3034 75.1059 35.7522 75.779 33.1554 75.7797C30.5559 75.7793 28.0021 75.1046 25.7501 73.8233C23.4982 72.542 21.6272 70.6991 20.3248 68.4793V68.4801ZM16.1853 34.5871C17.9134 31.6254 20.6422 29.3576 23.894 28.1807C23.894 28.3144 23.8863 28.5512 23.8863 28.7156V46.6514L23.886 46.6661C23.8861 47.1114 24.0056 47.5488 24.2324 47.9338C24.4592 48.3188 24.7853 48.6378 25.1774 48.8582L44.3878 59.8012L37.7374 63.5902C37.7046 63.6116 37.667 63.6246 37.6278 63.6281C37.5887 63.6316 37.5493 63.6255 37.5131 63.6104L21.6052 54.5411C19.3564 53.2557 17.4894 51.4097 16.1915 49.188C14.8935 46.9664 14.2102 44.4472 14.2099 41.8829C14.2109 39.3226 14.8923 36.8073 16.1861 34.5879L16.1853 34.5871ZM70.8271 47.1335L51.6167 36.1891L58.2674 32.4015C58.3002 32.3801 58.3378 32.3671 58.377 32.3636C58.4161 32.3601 58.4555 32.3662 58.4917 32.3813L74.3994 41.443C76.65 42.7264 78.519 44.5714 79.8185 46.7928C81.118 49.0142 81.8024 51.5338 81.8029 54.0987C81.8029 60.2207 77.9314 65.6986 72.11 67.8129V49.3409C72.1109 49.3341 72.1108 49.327 72.1108 49.3202C72.1107 48.8765 71.992 48.4407 71.7666 48.0567C71.5412 47.6728 71.2171 47.3543 70.8271 47.1335ZM77.4466 37.3033C77.2919 37.2098 77.1361 37.1182 76.9792 37.0284L61.2446 28.0604C60.8522 27.8348 60.4063 27.7159 59.9523 27.7158C59.4982 27.7159 59.0523 27.8348 58.66 28.0604L39.4493 39.005V31.4267L39.4491 31.4136C39.4491 31.3395 39.4847 31.2699 39.5445 31.2255L55.4508 22.1715C57.7007 20.8916 60.2521 20.2179 62.8491 20.2177C71.0277 20.2177 77.6601 26.7619 77.6601 34.8316C77.6597 35.6597 77.5883 36.4863 77.4466 37.3025V37.3033ZM35.8335 50.8103L29.1815 47.0213C29.1465 47.0041 29.1165 46.9787 29.0939 46.9473C29.0713 46.9159 29.057 46.8795 29.0521 46.8414V28.7151C29.0557 20.6498 35.6881 14.111 43.8631 14.111C47.3254 14.1117 50.6782 15.3085 53.3397 17.4936C53.22 17.5582 53.0111 17.6719 52.8723 17.755L37.1376 26.7227C36.745 26.9431 36.4186 27.2621 36.1915 27.6474C35.9643 28.0326 35.8446 28.4703 35.8445 28.916V28.9304L35.8335 50.8103ZM39.4463 43.1247L48.0023 38.2488L56.5582 43.1215V52.8702L48.0023 57.7432L39.4463 52.8702V43.1247Z",fill:"#000000"})}),X=()=>(0,t.jsx)("g",{transform:"translate(-14, -14) scale(0.29)",children:(0,t.jsx)("path",{d:"M24.3215 60.8553L39.6531 52.2522L39.9096 51.5024L39.6531 51.088H38.9033L36.3382 50.9302L27.5772 50.6934L19.9805 50.3777L12.6205 49.9831L10.7657 49.5884L9.0293 47.2995L9.20688 46.1551L10.7657 45.1093L12.9954 45.3066L17.9284 45.642L25.3278 46.1551L30.6949 46.4708L38.6468 47.2995H39.9096L40.0872 46.7865L39.6531 46.4708L39.3177 46.1551L31.6617 40.9656L23.3744 35.4801L19.0333 32.323L16.6853 30.7248L15.5013 29.2251L14.9883 25.9497L17.1194 23.6016L19.9805 23.7989L20.7106 23.99
48662L23.6111 26.2259L29.8069 31.0207L37.897 36.9798L39.0809 37.9664L39.5545 37.6309L39.6137 37.3941L39.0809 36.5062L34.6807 28.5543L29.9845 20.4642L27.8929 17.1098L27.3405 15.0971C27.1431 14.2684 27.005 13.5778 27.005 12.7293L29.432 9.4341L30.7738 9L34.0098 9.4341L35.3713 10.618L37.384 15.2155L40.6397 22.4571L45.6911 32.3033L47.171 35.2236L47.9602 37.9269L48.2562 38.7556H48.7692V38.2821L49.1836 32.7374L49.9532 25.9299L50.703 17.169L50.9595 14.7025L52.1829 11.7427L54.6099 10.1444L56.5041 11.0521L58.0629 13.2818L57.8459 14.7222L56.9185 20.7405L55.1032 30.1723L53.9193 36.4865H54.6099L55.3991 35.6972L58.5957 31.4548L63.9628 24.746L66.3306 22.0822L69.093 19.1422L70.8689 17.7412H74.2233L76.6898 21.4113L75.5848 25.1998L72.1318 29.5803L69.2706 33.2899L65.1664 38.8148L62.6013 43.2348L62.8381 43.5899L63.4497 43.5307L72.7237 41.5576L77.7356 40.6499L83.7143 39.6238L86.4176 40.8867L86.7136 42.1692L85.6481 44.7936L79.255 46.3721L71.7568 47.8717L60.5886 50.5158L60.4505 50.6145L60.6083 50.8118L65.64 51.2854L67.7907 51.4037H73.0592L82.8659 52.1338L85.431 53.8308L86.9701 55.9026L86.7136 57.4812L82.7672 59.4938L77.4396 58.231L65.0086 55.2712L60.7465 54.2057H60.1545V54.5608L63.7062 58.0336L70.2178 63.9137L78.367 71.4908L78.7814 73.3653L77.7356 74.8452L76.6306 74.6873L69.4679 69.3005L66.7055 66.8735L60.4505 61.6051H60.0361V62.1576L61.4766 64.2689L69.093 75.7134L69.4877 79.2257L68.9352 80.3701L66.962 81.0607L64.7915 80.6661L60.3321 74.4111L55.7346 67.3668L52.025 61.0526L51.5712 61.3091L49.3809 84.8887L48.3549 86.0923L45.987 87L44.0139 85.5004L42.9681 83.0734L44.0139 78.2785L45.2767 72.0235L46.3028 67.0511L47.2302 60.875L47.7826 58.8229L47.7432 58.6848L47.2894 58.744L42.6326 65.1371L35.5489 74.7071L29.9451 80.7055L28.6033 81.2383L26.2749 80.0347L26.492 77.8839L27.7943 75.9699L35.5489 66.104L40.2254 59.9871L43.2443 56.4551L43.2246 55.9421H43.047L22.447 69.3203L18.7768 69.7938L17.1983 68.3139L17.3956 65.8869L18.1454 65.0976L24.3412 60.8356L24.3215 60.8553Z",fill:"#000000"})}),q=()=>(0,t.jsx)("g",{transform:"translate(-14, -14) scale(0.29)",children:(0,t.jsx)("path",{d:"M47.919 6C46.56 28.53 28.53 46.56 6 47.919V48.081C28.53 49.44 46.56 67.47 47.919 90H48.081C49.44 67.47 67.47 49.44 90 48.081V47.919C67.47 46.56 49.44 28.53 48.081 6H47.919Z",fill:"#000000"})}),Y=()=>(0,t.jsxs)("g",{transform:"translate(-14, -14) scale(0.29)",children:[(0,t.jsx)("path",{d:"M48.1546 82.2857L15.8758 35.1814H30.2197L62.5023 82.2857H48.1546Z",fill:"#000000"}),(0,t.jsx)("path",{d:"M15.8574 82.2857L30.209 61.3432L37.3863 71.8166L30.2163 82.2857H15.8574Z",fill:"#000000"}),(0,t.jsx)("path",{d:"M40.9773 45.6283L65.7843 9.42859H80.1431L48.1546 56.1047L40.9773 45.6283Z",fill:"#000000"}),(0,t.jsx)("path",{d:"M68.3827 82.2857V31.8279L80.1431 14.667V82.2857H68.3827Z",fill:"#000000"})]}),Z=()=>(0,t.jsx)("g",{transform:"translate(-14, -14) scale(0.29)",children:(0,t.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M23.3332 8.38696L46.1628 29.6814V9.00035H49.6981V29.6809L72.5274 8.38703V31.9797L82.0396 31.9798V65.954H72.5274V87.1553L49.6981 66.7992V87.0003H46.1628V66.7991L23.3333 87.1552V65.9541H13.9604V31.9798L23.3332 31.9797V8.38696ZM43.3964 35.5148L17.4957 35.515V62.4188H23.3292L23.3337 53.9632L43.3964 35.5148ZM26.8685 55.5155V79.2665L46.1628 62.0626L46.1626 37.7739L26.8685 55.5155ZM49.6981 62.0626V37.7741L68.9921 55.5155V79.2664L49.6981 62.0626ZM72.5274 62.4188H78.5043V35.515L52.4641 35.5148L72.5274 53.9636V62.4188ZM52.4168 31.9795L68.9921 16.519V31.9795L52.4168 31.9795ZM43.4436 31.9795L26.8685 16.519V31.9795H43.4436Z",fill:"#000000"})}),J=()=>(0,t.jsx)("g",{transform:"translate(-14, -14) scale(0.29)",children:(0,t.jsx)("path",{d:"M92.8171 20.3656C91.8791 19.897 91.4753 20.79 90.927 21.2432C90.7392 21.3895 90.5802 21.5794 90.4219 21.7548C89.0509 23.2472 87.4489 24.2276 85.3561 24.1105C82.297 23.9351 79.6843 24.9153 77.3754 27.2999C76.8847 24.3593 75.2541 22.6028 72.7719 21.4769C71.4731 20.8917 70.1599 20.3061 69.2505 19.0333C68.6156 18.1265 68.4423 17.1167 68.1249 16.1218C67.923 15.5223 67.7204 14.9075 67.0422 14.8047C66.3062 14.6877 66.0171 15.3166 65.729 15.8439C64.5743 17.9948 64.127 20.3649 64.1706 22.7641C64.2719 28.1634 66.5086 32.4643 70.9538 35.5228C71.4588 35.874 71.5884 36.225 71.4302 36.7371C71.127 37.7908 70.7662 38.8147 70.4488 39.8684C70.2467 40.5415 69.943 40.6877 69.2362 40.3952C66.7974 39.3568 64.6899 37.8199 62.8281 35.9622C59.6675 32.8454 56.8102 29.4071 53.2454 26.7147C52.4204 26.0929 51.5731 25.5024 50.7053 24.9444C47.0685 21.3453 51.1817 18.3893 52.1341 18.0386C53.1298 17.6725 52.4806 16.4145 49.2618 16.4291C46.0435 16.4436 43.0993 17.5409 39.3473 19.0041C38.7987 19.2239 38.2217 19.3848 37.6297 19.5159C34.2238 18.8574 30.6881 18.7112 26.9933 19.1353C20.0369 19.925 14.4811 23.2759 10.397 28.9968C5.49036 35.8747 4.33545 43.6874 5.7499 51.8371C7.23632 60.4254 11.5369 67.5365 18.1468 73.0966C25.0019 78.8605 32.8964 81.6848 41.9014 81.1434C47.371 80.8218 53.4616 80.0758 60.331 74.1496C62.0629 75.0272 63.8811 75.3787 66.8975 75.642C69.2212 75.8618 71.4581 7
4865.5249 73.19 75.1596C75.9033 74.5744 75.7157 72.0137 74.7341 71.5459C66.7826 67.7713 68.5281 69.3075 66.9409 68.0638C70.4573 63.8241 75.526 59.4401 78.3515 47.5644C79.029 44.7168 79.4534 41.5352 79.4534 38.5525C79.4534 37.9551 79.583 37.6603 80.3049 37.587C82.2963 37.3526 84.2301 36.7973 86.0053 35.8019C91.1574 32.9341 93.2358 28.2229 93.7265 22.5753C93.7985 21.7123 93.7122 20.8189 92.8171 20.3656ZM47.92 71.1937C40.2131 65.0199 36.4755 62.9856 34.9314 63.0735C33.4884 63.1615 33.7479 64.8441 34.0654 65.9413C34.3971 67.0242 34.8306 67.7701 35.4364 68.7211C35.8549 69.3505 36.1438 70.2864 35.0182 70.9894C32.536 72.5544 28.2207 70.4625 28.0184 70.3598C22.9962 67.3458 18.7964 63.3662 15.8377 57.9236C12.9804 52.6851 11.3205 47.0674 11.0466 41.0683C10.9744 39.6201 11.3932 39.1074 12.8071 38.8445C14.6687 38.493 16.5881 38.4197 18.4499 38.6976C26.3151 39.8684 33.0113 43.453 38.6254 49.1297C41.8295 52.3628 44.2539 56.226 46.7511 60.0005C49.4065 64.0095 52.264 67.8284 55.9008 70.9595C57.1853 72.0567 58.2097 72.8909 59.1913 73.5057C56.2325 73.8418 51.2966 73.9152 47.92 71.1937ZM51.6476 46.6978C51.7697 46.1934 52.2152 45.8237 52.7547 45.8237C52.8877 45.8241 53.0196 45.8487 53.1441 45.8966C53.3031 45.9554 53.4472 46.0433 53.5628 46.1745C53.7647 46.3797 53.8803 46.6722 53.8803 46.9792C53.8803 47.6232 53.3753 48.135 52.7404 48.135C52.4724 48.1375 52.2125 48.0414 52.0084 47.8644C51.8044 47.6873 51.6698 47.4411 51.6295 47.1711C51.6046 47.0137 51.6107 46.8527 51.6476 46.6978ZM62.7156 53.1288C62.1046 53.3668 61.4964 53.5537 60.9087 53.578C59.8117 53.6363 58.6141 53.1828 57.9649 52.6268C56.9549 51.7638 56.2332 51.2813 55.9301 49.7736C55.8002 49.1297 55.8722 48.135 55.9878 47.5644C56.2475 46.3353 55.9587 45.5451 55.1076 44.8283C54.4151 44.2431 53.5342 44.0823 52.5676 44.0823C52.2068 44.0823 51.875 43.9215 51.6295 43.7899C51.2253 43.5853 50.8936 43.073 51.211 42.4437C51.3123 42.2391 51.803 41.7414 51.9186 41.654C53.2315 40.8929 54.7473 41.1417 56.1467 41.7123C57.4456 42.2537 58.4272 43.2484 59.8414 44.6529C61.2845 46.3499 61.5443 46.8184 62.3672 48.0913C63.0169 49.086 63.6084 50.1105 64.0126 51.2806C64.2182 51.8926 64.0292 52.4132 63.4637 52.7805C63.2337 52.9298 62.9693 53.0299 62.7156 53.1288Z",fill:"#000000"})}),$=e=>{switch(e){case"ChatGPT":return(0,t.jsx)(W,{});case"Claude":return(0,t.jsx)(X,{});case"Gemini":return(0,t.jsx)(q,{});case"Grok":return(0,t.jsx)(Y,{});case"Perplexity":return(0,t.jsx)(Z,{});case"DeepSeek":return(0,t.jsx)(J,{});default:return null}},K=({pathLengths:e,title:n,description:i,className:r,showIcons:a=!0,showCenterLogo:s=!0})=>(0,t.jsxs)("div",{className:(0,V.cn)("relative",r),children:[(0,t.jsx)("p",{className:"text-lg md:text-7xl font-normal pb-4 text-center bg-clip-text text-transparent bg-gradient-to-b from-neutral-100 to-neutral-300",children:n||"Secure AI Data Flow"}),(0,t.jsx)("p",{className:"text-xs md:text-xl font-normal text-center text-neutral-400 mt-4 max-w-lg mx-auto",children:i||"Obfusca adds a real-time safety layer to your AI workflows, so sensitive data stays protected."}),(0,t.jsx)("div",{className:"w-full h-[890px] -top-60 md:-top-40 flex items-center justify-center bg-red-transparent absolute",children:s&&(0,t.jsx)("button",{className:"font-bold bg-white rounded-full md:px-4 md:py-2 px-2 py-1 md:mt-34 mt-14 z-30 md:text-base text-black text-xs w-fit mx-auto",children:"Obfusca.ai"})}),(0,t.jsxs)("svg",{width:"1440",height:"890",viewBox:"0 0 1440 890",xmlns:"http://www.w3.org/2000/svg",className:"absolute -top-60 md:-top-40 w-full",children:[(0,t.jsxs)("defs",{children:[(0,t.jsxs)("linearGradient",{id:"gradient1",x1:"0%",y1:"0%",x2:"100%",y2:"0%",children:[(0,t.jsx)("stop",{offset:"0%",stopColor:"#FF4444"}),(0,t.jsx)("stop",{offset:"45%",stopColor:"#FF6666"}),(0,t.jsx)("stop",{offset:"50%",stopColor:"#FFFFFF"}),(0,t.jsx)("stop",{offset:"55%",stopColor:"#6699FF"}),(0,t.jsx)("stop",{offset:"100%",stopColor:"#4488FF"})]}),(0,t.jsxs)("linearGradient",{id:"gradient2",x1:"0%",y1:"0%",x2:"100%",y2:"0%",children:[(0,t.jsx)("stop",{offset:"0%",stopColor:"#FF5555"}),(0,t.jsx)("stop",{offset:"45%",stopColor:"#FF7777"}),(0,t.jsx)("stop",{offset:"50%",stopColor:"#FFFFFF"}),(0,t.jsx)("stop",{offset:"55%",stopColor:"#7799FF"}),(0,t.jsx)("stop",{offset:"100%",stopColor:"#5599FF"})]}),(0,t.jsxs)("linearGradient",{id:"gradient3",x1:"0%",y1:"0%",x2:"100%",y2:"0%",children:[(0,t.jsx)("stop",{offset:"0%",stopColor:"#FF6666"}),(0,t.jsx)("stop",{offset:"45%",stopColor:"#FF8888"}),(0,t.jsx)("stop",{offset:"50%",stopColor:"#FFFFFF"}),(0,t.jsx)("stop",{offset:"55%",stopColor:"#88AAFF"}),(0,t.jsx)("stop",{offset:"100%",stopColor:"#66AAFF"})]}),(0,t.jsxs)("linearGradient",{id:"gradient4",x1:"0%",y1:"0%",x2:"100%",y2:"0%",children:[(0,t.jsx)("stop",{offset:"0%",stopColor:"#FF7777"}),(0,t.jsx)("stop",{offset:"45%",stopColor:"#FF9999"}),(0,t.jsx)("stop",{offset:"50%",stopColor:"#FFFFFF"}),(0,t.jsx)("stop",{offset:"55%",stopColor:"#99BBFF"}),(0,t.jsx)("stop",{offset:"100%",stopColor:"#77BBFF"})]}),(0,t.jsxs)("linearGradient",{id:"gradient5",x1:"0%",y1:"0%",x2:"100%",y2:"0%",children:[(0,t.jsx)("stop",{offset:"0%",stopColor:"#FF8888"}),(0,t.jsx)("stop",{offset:"45%",stopColor:"#FFAAAA"}),(0,t.jsx)("stop",{offset:"50%",stopColor:"#FFFFFF"}),(0,t.jsx)("stop",{offset:"55%",stopColor:"#AACCFF"}),(0,t.jsx)("stop",{offset:"100%",stopColor:"#88CCFF"})]}),(0,t.jsx)("filter",{id:"blurMe",children:(0,t.jsx)("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"5"})}),(0,t.jsx)("filter",{id:"badgeShadow",x:"-50%",y:"-50%",width:"200%",height:"200%",children:(0,t.jsx)("feDropShadow",{dx:"0",dy:"1",stdDeviation:"2",floodColor:"#4488FF",floodOpacity:"0.4"})})]}),(0,t.jsx)(H.motion.path,{d:"M0 663C145.5 663 191 666.265 269 647C326.5 630 339.5 621 397.5 566C439 531.5 455 529.5 490 523C509.664 519.348 521 503.736 538 504.236C553.591 504.236 562.429 514.739 584.66 522.749C592.042 525.408 600.2 526.237 607.356 523.019C624.755 515.195 641.446 496.324 657 496.735C673.408 496.735 693.545 519.572 712.903 526.769C718.727 528.934 725.184 528.395 730.902 525.965C751.726 517.115 764.085 497.106 782 496.735C794.831 496.47 804.103 508.859 822.469 518.515C835.13 525.171 850.214 526.815 862.827 520.069C875.952 513.049 889.748 502.706 903.5 503.736C922.677 505.171 935.293 510.562 945.817 515.673C954.234 519.76 963.095 522.792 972.199 524.954C996.012 530.611 1007.42 534.118 1034 549C1077.5 573.359 1082.5 594.5 1140 629C1206 670 1328.5 662.5 1440 662.5",stroke:"url
486(#gradient1)",strokeWidth:"2",fill:"none",initial:{pathLength:0},style:{pathLength:e[0]},transition:j}),(0,t.jsx)(H.motion.path,{d:"M0 587.5C147 587.5 277 587.5 310 573.5C348 563 392.5 543.5 408 535C434 523.5 426 526.235 479 515.235C494 512.729 523 510.435 534.5 512.735C554.5 516.735 555.5 523.235 576 523.735C592 523.735 616 496.735 633 497.235C648.671 497.235 661.31 515.052 684.774 524.942C692.004 527.989 700.2 528.738 707.349 525.505C724.886 517.575 741.932 498.33 757.5 498.742C773.864 498.742 791.711 520.623 810.403 527.654C816.218 529.841 822.661 529.246 828.451 526.991C849.246 518.893 861.599 502.112 879.5 501.742C886.47 501.597 896.865 506.047 907.429 510.911C930.879 521.707 957.139 519.639 982.951 520.063C1020.91 520.686 1037.5 530.797 1056.5 537C1102.24 556.627 1116.5 570.704 1180.5 579.235C1257.5 589.5 1279 587 1440 588",stroke:"url(#gradient2)",strokeWidth:"2",fill:"none",initial:{pathLength:0},style:{pathLength:e[1]},transition:j}),(0,t.jsx)(H.motion.path,{d:"M0 514C147.5 514.333 294.5 513.735 380.5 513.735C405.976 514.94 422.849 515.228 436.37 515.123C477.503 514.803 518.631 506.605 559.508 511.197C564.04 511.706 569.162 512.524 575 513.735C588 516.433 616 521.702 627.5 519.402C647.5 515.402 659 499.235 680.5 499.235C700.5 499.235 725 529.235 742 528.735C757.654 528.735 768.77 510.583 791.793 500.59C798.991 497.465 807.16 496.777 814.423 499.745C832.335 507.064 850.418 524.648 866 524.235C882.791 524.235 902.316 509.786 921.814 505.392C926.856 504.255 932.097 504.674 937.176 505.631C966.993 511.248 970.679 514.346 989.5 514.735C1006.3 515.083 1036.5 513.235 1055.5 513.235C1114.5 513.235 1090.5 513.235 1124 513.235C1177.5 513.235 1178.99 514.402 1241 514.402C1317.5 514.402 1274.5 512.568 1440 513.235",stroke:"url(#gradient3)",strokeWidth:"2",fill:"none",initial:{pathLength:0},style:{pathLength:e[2]},transition:j}),(0,t.jsx)(H.motion.path,{d:"M0 438.5C150.5 438.5 261 438.318 323.5 456.5C351 464.5 387.517 484.001 423.5 494.5C447.371 501.465 472 503.735 487 507.735C503.786 512.212 504.5 516.808 523 518.735C547 521.235 564.814 501.235 584.5 501.235C604.5 501.235 626 529.069 643 528.569C658.676 528.569 672.076 511.63 695.751 501.972C703.017 499.008 711.231 498.208 718.298 501.617C735.448 509.889 751.454 529.98 767 529.569C783.364 529.569 801.211 507.687 819.903 500.657C825.718 498.469 832.141 499.104 837.992 501.194C859.178 508.764 873.089 523.365 891 523.735C907.8 524.083 923 504.235 963 506.735C1034.5 506.735 1047.5 492.68 1071 481.5C1122.5 457 1142.23 452.871 1185 446.5C1255.5 436 1294 439 1439.5 439",stroke:"url(#gradient4)",strokeWidth:"2",fill:"none",initial:{pathLength:0},style:{pathLength:e[3]},transition:j}),(0,t.jsx)(H.motion.path,{d:"M0.5 364C145.288 362.349 195 361.5 265.5 378C322 391.223 399.182 457.5 411 467.5C424.176 478.649 456.916 491.677 496.259 502.699C498.746 503.396 501.16 504.304 503.511 505.374C517.104 511.558 541.149 520.911 551.5 521.236C571.5 521.236 590 498.736 611.5 498.736C631.5 498.736 652.5 529.236 669.5 528.736C685.171 528.736 697.81 510.924 721.274 501.036C728.505 497.988 736.716 497.231 743.812 500.579C761.362 508.857 778.421 529.148 794 528.736C810.375 528.736 829.35 508.68 848.364 502.179C854.243 500.169 860.624 500.802 866.535 502.718C886.961 509.338 898.141 519.866 916 520.236C932.8 520.583 934.5 510.236 967.5 501.736C1011.5 491 1007.5 493.5 1029.5 480C1069.5 453.5 1072 440.442 1128.5 403.5C1180.5 369.5 1275 360.374 1439 364",stroke:"url(#gradient5)",strokeWidth:"2",fill:"none",initial:{pathLength:0},style:{pathLength:e[4]},transition:j}),(0,t.jsx)("path",{d:"M0 663C145.5 663 191 666.265 269 647C326.5 630 339.5 621 397.5 566C439 531.5 455 529.5 490 523C509.664 519.348 521 503.736 538 504.236C553.591 504.236 562.429 514.739 584.66 522.749C592.042 525.408 600.2 526.237 607.356 523.019C624.755 515.195 641.446 496.324 657 496.735C673.408 496.735 693.545 519.572 712.903 526.769C718.727 528.934 725.184 528.395 730.902 525.965C751.726 517.115 764.085 497.106 782 496.735C794.831 496.47 804.103 508.859 822.469 518.515C835.13 525.171 850.214 526.815 862.827 520.069C875.952 513.049 889.748 502.706 903.5 503.736C922.677 505.171 935.293 510.562 945.817 515.673C954.234 519.76 963.095 522.792 972.199 524.954C996.012 530.611 1007.42 534.118 1034 549C1077.5 573.359 1082.5 594.5 1140 629C1206 670 1328.5 662.5 1440 662.5",stroke:"url
486(#gradient1)",strokeWidth:"2",fill:"none",pathLength:1,filter:"url(#blurMe)"}),(0,t.jsx)("path",{d:"M0 587.5C147 587.5 277 587.5 310 573.5C348 563 392.5 543.5 408 535C434 523.5 426 526.235 479 515.235C494 512.729 523 510.435 534.5 512.735C554.5 516.735 555.5 523.235 576 523.735C592 523.735 616 496.735 633 497.235C648.671 497.235 661.31 515.052 684.774 524.942C692.004 527.989 700.2 528.738 707.349 525.505C724.886 517.575 741.932 498.33 757.5 498.742C773.864 498.742 791.711 520.623 810.403 527.654C816.218 529.841 822.661 529.246 828.451 526.991C849.246 518.893 861.599 502.112 879.5 501.742C886.47 501.597 896.865 506.047 907.429 510.911C930.879 521.707 957.139 519.639 982.951 520.063C1020.91 520.686 1037.5 530.797 1056.5 537C1102.24 556.627 1116.5 570.704 1180.5 579.235C1257.5 589.5 1279 587 1440 588",stroke:"url(#gradient2)",strokeWidth:"2",fill:"none",pathLength:1,filter:"url(#blurMe)"}),(0,t.jsx)("path",{d:"M0 514C147.5 514.333 294.5 513.735 380.5 513.735C405.976 514.94 422.849 515.228 436.37 515.123C477.503 514.803 518.631 506.605 559.508 511.197C564.04 511.706 569.162 512.524 575 513.735C588 516.433 616 521.702 627.5 519.402C647.5 515.402 659 499.235 680.5 499.235C700.5 499.235 725 529.235 742 528.735C757.654 528.735 768.77 510.583 791.793 500.59C798.991 497.465 807.16 496.777 814.423 499.745C832.335 507.064 850.418 524.648 866 524.235C882.791 524.235 902.316 509.786 921.814 505.392C926.856 504.255 932.097 504.674 937.176 505.631C966.993 511.248 970.679 514.346 989.5 514.735C1006.3 515.083 1036.5 513.235 1055.5 513.235C1114.5 513.235 1090.5 513.235 1124 513.235C1177.5 513.235 1178.99 514.402 1241 514.402C1317.5 514.402 1274.5 512.568 1440 513.235",stroke:"url(#gradient3)",strokeWidth:"2",fill:"none",pathLength:1,filter:"url(#blurMe)"}),(0,t.jsx)("path",{d:"M0 438.5C150.5 438.5 261 438.318 323.5 456.5C351 464.5 387.517 484.001 423.5 494.5C447.371 501.465 472 503.735 487 507.735C503.786 512.212 504.5 516.808 523 518.735C547 521.235 564.814 501.235 584.5 501.235C604.5 501.235 626 529.069 643 528.569C658.676 528.569 672.076 511.63 695.751 501.972C703.017 499.008 711.231 498.208 718.298 501.617C735.448 509.889 751.454 529.98 767 529.569C783.364 529.569 801.211 507.687 819.903 500.657C825.718 498.469 832.141 499.104 837.992 501.194C859.178 508.764 873.089 523.365 891 523.735C907.8 524.083 923 504.235 963 506.735C1034.5 506.735 1047.5 492.68 1071 481.5C1122.5 457 1142.23 452.871 1185 446.5C1255.5 436 1294 439 1439.5 439",stroke:"url(#gradient4)",strokeWidth:"2",fill:"none",pathLength:1,filter:"url(#blurMe)"}),(0,t.jsx)("path",{d:"M0.5 364C145.288 362.349 195 361.5 265.5 378C322 391.223 399.182 457.5 411 467.5C424.176 478.649 456.916 491.677 496.259 502.699C498.746 503.396 501.16 504.304 503.511 505.374C517.104 511.558 541.149 520.911 551.5 521.236C571.5 521.236 590 498.736 611.5 498.736C631.5 498.736 652.5 529.236 669.5 528.736C685.171 528.736 697.81 510.924 721.274 501.036C728.505 497.988 736.716 497.231 743.812 500.579C761.362 508.857 778.421 529.148 794 528.736C810.375 528.736 829.35 508.68 848.364 502.179C854.243 500.169 860.624 500.802 866.535 502.718C886.961 509.338 898.141 519.866 916 520.236C932.8 520.583 934.5 510.236 967.5 501.736C1011.5 491 1007.5 493.5 1029.5 480C1069.5 453.5 1072 440.442 1128.5 403.5C1180.5 369.5 1275 360.374 1439 364",stroke:"url(#gradient5)",strokeWidth:"2",fill:"none",pathLength:1,filter:"url(#blurMe)"}),a&&G.map(e=>(0,t.jsxs)("g",{transform:`translate(40, ${e.y})`,children:[(0,t.jsx)("circle",{cx:0,cy:0,r:"24",fill:"#FFFFFF",stroke:"#FF4444",strokeWidth:"2"}),$(e.name)]},e.name)),a&&G.map(e=>(0,t.jsxs)("g",{transform:`translate(1400, ${e.y})`,children:[(0,t.jsx)("circle",{cx:0,cy:0,r:"24",fill:"#FFFFFF",stroke:"#4488FF",strokeWidth:"2"}),$(e.name),(0,t.jsxs)("g",{transform:"translate(16, -16)",filter:"url(#badgeShadow)",children:[(0,t.jsx)("circle",{cx:0,cy:0,r:"13",fill:"#FFFFFF"}),(0,t.jsxs)("g",{transform:"scale(0.92) translate(-12, -12)",children:[(0,t.jsx)("path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",fill:"#4488FF",stroke:"#FFFFFF",strokeWidth:"0.8"}
486),(0,t.jsx)("path",{d:"M9 12l2 2 4-4",fill:"none",stroke:"#FFFFFF",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round"})]})]})]},`secure-${e.name}`))]})]});function Q(){let e=r.default.useRef(null),{scrollYProgress:n}=function({container:e,target:t,...n}={}){let s=(0,N.useConstant)(U),l=(0,r.useRef)(null),u=(0,r.useRef)(!1),c=(0,r.useCallback)(()=>(l.current=function(e,{axis:t="y",container:n=document.scrollingElement,...i}={}){var r,s;let l;if(!n)return a.noop;let u={axis:t,container:n,...i};return"function"==typeof e?(r=e,s=u,2===r.length?L(e=>{r(e[s.axis].progress,e)},s):o(r,I(s))):(l=I(u),e.attachTimeline({timeline:u.target?void 0:l,observe:e=>(e.pause(),o(t=>{e.time=e.iterationDuration*t},l))}))}((e,{x:t,y:n})=>{s.scrollX.set(t.current),s.scrollXProgress.set(t.progress),s.scrollY.set(n.current),s.scrollYProgress.set(n.progress)},{...n,container:e?.current||void 0,target:t?.current||void 0}),()=>{l.current?.()}),[e,t,JSON.stringify(n.offset)]);return(0,D.useIsomorphicLayoutEffect)(()=>{if(u.current=!1,!(F(e)||F(t)))return c();u.current=!0},[c]),(0,r.useEffect)(()=>u.current?((0,i.invariant)(!F(e),"Container ref is defined but not hydrated","use-scroll-ref"),(0,i.invariant)(!F(t),"Target ref is defined but not hydrated","use-scroll-ref"),c()):void 0,[c]),s}({target:e,offset:["start end","end start"]}),s=z(n,[.3,.7],[.2,1.2]),l=z(n,[.3,.7],[.15,1.2]),u=z(n,[.3,.7],[.1,1.2]),c=z(n,[.3,.7],[.05,1.2]),h=z(n,[.3,.7],[0,1.2]);return(0,t.jsx)("div",{className:"min-h-screen bg-black w-full rounded-md relative py-20",ref:e,children:(0,t.jsx)(K,{pathLengths:[s,l,u,c,h]})})}e.s(["ObfuscaSecurityFunnelDemo",()=>Q],54349)},42549,e=>{"use strict";var t=e.i(43476),n=e.i(75157),i=e.i(7033);let r=[{icon:i.ChatGPTLogo,text:"ChatGPT"},{icon:i.ClaudeLogo,text:"Claude"},{icon:i.GeminiLogo,text:"Gemini"},{icon:i.GrokLogo,text:"Grok"},{icon:i.DeepseekLogo,text:"DeepSeek"},{icon:i.PerplexityLogo,text:"Perplexity"}],a=[{icon:i.CopilotLogo,text:"Copilot"},{icon:i.GithubCopilotLogo,text:"GitHub Copilot"},{icon:i.MistralLogo,text:"Mistral"},{icon:i.CohereLogo,text:"Cohere"},{icon:i.NotionLogo,text:"Notion AI"}],s=({list:e,reverse:n=!1,duration:i=25})=>{let r=[...e,...e];return(0,t.jsxs)("div",{className:"flex overflow-hidden",children:[(0,t.jsx)("div",{className:"flex gap-3 shrink-0",style:{animation:`${n?"marquee-reverse":"marquee"} ${i}s linear infinite`},children:r.map((e,n)=>{let i=e.icon;return(0,t.jsxs)("div",{className:"inline-flex h-10 shrink-0 items-center gap-2 rounded-full bg-[#111111] p-1",children:[(0,t.jsx)("div",{className:"flex size-8 overflow-hidden rounded-full",children:(0,t.jsx)(i,{className:"m-auto block size-full object-contain object-center"})}),(0,t.jsx)("p",{className:"pr-2 text-sm font-medium text-white whitespace-nowrap",children:e.text})]},`list-a-${n}`)})}),(0,t.jsx)("div",{className:"flex gap-3 shrink-0",style:{animation:`${n?"marquee-reverse":"marquee"} ${i}s linear infinite`},children:r.map((e,n)=>{let i=e.icon;return(0,t.jsxs)("div",{className:"inline-flex h-10 shrink-0 items-center gap-2 rounded-full bg-[#111111] p-1",children:[(0,t.jsx)("div",{className:"flex size-8 overflow-hidden rounded-full",children:(0,t.jsx)(i,{className:"m-auto block size-full object-contain object-center"})}),(0,t.jsx)("p",{className:"pr-2 text-sm font-medium text-white whitespace-nowrap",children:e.text})]},`list-b-${n}`)})})]})};function o({className:e}){return(0,t.jsx)("section",{className:(0,n.cn)("pt-0 pb-20 -mt-44 bg-black relative z-10",e),children:(0,t.jsx)("div",{className:"max-w-[95rem] mx-auto px-4",children:(0,t.jsxs)("div",{className:"grid w-full grid-cols-1 items-start justify-between overflow-hidden rounded-3xl border border-[#222222] bg-[#0A0A0A] pr-0 md:grid-cols-[minmax(18.75rem,25rem)_1fr] md:p-8",children:[(0,t.jsxs)("div",{className:"order-2 flex flex-col gap-2 p-6 pt-10 md:order-1 md:p-0",children:[(0,t.jsx)("h3",{className:"text-lg leading-relaxed font-normal text-white",children:"Protects all your AI tools"}),(0,t.jsx)("p",{className:"text-sm leading-relaxed text-neutral-400",children:"Obfusca protects all 11 major AI platforms: ChatGPT, Claude, Gemini, Grok, DeepSeek, GitHub Copilot, Microsoft Copilot, Perplexity, Mistral, Cohere, and Notion AI."})]}),(0,t.jsxs)("div",{className:"relative order-1 p-4 pb-0 md:order-2 md:p-0 overflow-hidden",children:[(0,t.jsx)(s,{list:r,duration:30}),(0,t.jsx)("div",{className:"ml-8 pt-3",children:(0,t.jsx)(s,{list:a,reverse:!0,duration:35})})]})]})})})}e.s(["Integrations",()=>o])},59729,e=>{"use strict";var t=e.i(43476);let n=(0,e.i(75254).default)("arrow-up-right",[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]);var i=e.i(75157),r=e.i(79853),a=e.i(71645),s=e.i(30030),o=e.i(75830),l=e.i(20783),u=e.i(81140),c=e.i(69340),h=e.i(48425),d=e.i(34620),p=e.i(96626),f=e.i(10772),m="Collapsible",[g,v]=(0,s.createContextScope)(m),[x,y]=g(m),_=a.forwardRef((e,n
486)=>{let{__scopeCollapsible:i,open:r,defaultOpen:s,disabled:o,onOpenChange:l,...u}=e,[d,p]=(0,c.useControllableState)({prop:r,defaultProp:s??!1,onChange:l,caller:m});return(0,t.jsx)(x,{scope:i,disabled:o,contentId:(0,f.useId)(),open:d,onOpenToggle:a.useCallback(()=>p(e=>!e),[p]),children:(0,t.jsx)(h.Primitive.div,{"data-state":E(d),"data-disabled":o?"":void 0,...u,ref:n})})});_.displayName=m;var b="CollapsibleTrigger",S=a.forwardRef((e,n)=>{let{__scopeCollapsible:i,...r}=e,a=y(b,i);return(0,t.jsx)(h.Primitive.button,{type:"button","aria-controls":a.contentId,"aria-expanded":a.open||!1,"data-state":E(a.open),"data-disabled":a.disabled?"":void 0,disabled:a.disabled,...r,ref:n,onClick:(0,u.composeEventHandlers)(e.onClick,a.onOpenToggle)})});S.displayName=b;var M="CollapsibleContent",w=a.forwardRef((e,n)=>{let{forceMount:i,...r}=e,a=y(M,e.__scopeCollapsible);return(0,t.jsx)(p.Presence,{present:i||a.open,children:({present:e})=>(0,t.jsx)(T,{...r,ref:n,present:e})})});w.displayName=M;var T=a.forwardRef((e,n)=>{let{__scopeCollapsible:i,present:r,children:s,...o}=e,u=y(M,i),[c,p]=a.useState(r),f=a.useRef(null),m=(0,l.useComposedRefs)(n,f),g=a.useRef(0),v=g.current,x=a.useRef(0),_=x.current,b=u.open||c,S=a.useRef(b),w=a.useRef(void 0);return a.useEffect(()=>{let e=requestAnimationFrame(()=>S.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,d.useLayoutEffect)(()=>{let e=f.current;if(e){w.current=w.current||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration="0s",e.style.animationName="none";let t=e.getBoundingClientRect();g.current=t.height,x.current=t.width,S.current||(e.style.transitionDuration=w.current.transitionDuration,e.style.animationName=w.current.animationName),p(r)}},[u.open,r]),(0,t.jsx)(h.Primitive.div,{"data-state":E(u.open),"data-disabled":u.disabled?"":void 0,id:u.contentId,hidden:!b,...o,ref:m,style:{"--radix-collapsible-content-height":v?`${v}px`:void 0,"--radix-collapsible-content-width":_?`${_}px`:void 0,...e.style},children:b&&s})});function E(e){return e?"open":"closed"}var C=e.i(86318),A="Accordion",R=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[L,P,I]=(0,o.createCollection)(A),[N,D]=(0,s.createContextScope)(A,[I,v]),U=v(),F=a.default.forwardRef((e,n)=>{let{type:i,...r}=e;return(0,t.jsx)(L.Provider,{scope:e.__scopeAccordion,children:"multiple"===i?(0,t.jsx)(H,{...r,ref:n}):(0,t.jsx)(V,{...r,ref:n})})});F.displayName=A;var[O,k]=N(A),[z,B]=N(A,{collapsible:!1}),V=a.default.forwardRef((e,n)=>{let{value:i,defaultValue:r,onValueChange:s=()=>{},collapsible:o=!1,...l}=e,[u,h]=(0,c.useControllableState)({prop:i,defaultProp:r??"",onChange:s,caller:A});return(0,t.jsx)(O,{scope:e.__scopeAccordion,value:a.default.useMemo(()=>u?[u]:[],[u]),onItemOpen:h,onItemClose:a.default.useCallback(()=>o&&h(""),[o,h]),children:(0,t.jsx)(z,{scope:e.__scopeAccordion,collapsible:o,children:(0,t.jsx)(W,{...l,ref:n})})})}),H=a.default.forwardRef((e,n)=>{let{value:i,defaultValue:r,onValueChange:s=()=>{},...o}=e,[l,u]=(0,c.useControllableState)({prop:i,defaultProp:r??[],onChange:s,caller:A}),h=a.default.useCallback(e=>u((t=[])=>[...t,e]),[u]),d=a.default.useCallback(e=>u((t=[])=>t.filter(t=>t!==e)),[u]);return(0,t.jsx)(O,{scope:e.__scopeAccordion,value:l,onItemOpen:h,onItemClose:d,children:(0,t.jsx)(z,{scope:e.__scopeAccordion,collapsible:!0,children:(0,t.jsx)(W,{...o,ref:n})})})}),[j,G]=N(A),W=a.default.forwardRef((e,n)=>{let{__scopeAccordion:i,disabled:r,dir:s,orientation:o="vertical",...c}=e,d=a.default.useRef(null),p=(0,l.useComposedRefs)(d,n),f=P(i),m="ltr"===(0,C.useDirection)(s),g=(0,u.composeEventHandlers)(e.onKeyDown,e=>{if(!R.includes(e.key))return;let t=e.target,n=f().filter(e=>!e.ref.current?.disabled),i=n.findIndex(e=>e.ref.current===t),r=n.length;if(-1===i)return;e.preventDefault();let a=i,s=r-1,l=()=>{(a=i+1)>s&&(a=0)},u=()=>{(a=i-1)<0&&(a=s)};switch(e.key){case"Home":a=0;break;case"End":a=s;break;case"ArrowRight":"horizontal"===o&&(m?l():u());break;case"ArrowDown":"vertical"===o&&l();break;case"ArrowLeft":"horizontal"===o&&(m?u():l());break;case"ArrowUp":"vertical"===o&&u()}let c=a%r;n[c].ref.current?.focus()});return(0,t.jsx)(j,{scope:i,disabled:r,direction:s,orientation:o,children:(0,t.jsx)(L.Slot,{scope:i,children:(0,t.jsx)(h.Primitive.div,{...c,"data-orientation":o,ref:p,onKeyDown:r?void 0:g})})})}
486),X="AccordionItem",[q,Y]=N(X),Z=a.default.forwardRef((e,n)=>{let{__scopeAccordion:i,value:r,...a}=e,s=G(X,i),o=k(X,i),l=U(i),u=(0,f.useId)(),c=r&&o.value.includes(r)||!1,h=s.disabled||e.disabled;return(0,t.jsx)(q,{scope:i,open:c,disabled:h,triggerId:u,children:(0,t.jsx)(_,{"data-orientation":s.orientation,"data-state":en(c),...l,...a,ref:n,disabled:h,open:c,onOpenChange:e=>{e?o.onItemOpen(r):o.onItemClose(r)}})})});Z.displayName=X;var J="AccordionHeader",$=a.default.forwardRef((e,n)=>{let{__scopeAccordion:i,...r}=e,a=G(A,i),s=Y(J,i);return(0,t.jsx)(h.Primitive.h3,{"data-orientation":a.orientation,"data-state":en(s.open),"data-disabled":s.disabled?"":void 0,...r,ref:n})});$.displayName=J;var K="AccordionTrigger",Q=a.default.forwardRef((e,n)=>{let{__scopeAccordion:i,...r}=e,a=G(A,i),s=Y(K,i),o=B(K,i),l=U(i);return(0,t.jsx)(L.ItemSlot,{scope:i,children:(0,t.jsx)(S,{"aria-disabled":s.open&&!o.collapsible||void 0,"data-orientation":a.orientation,id:s.triggerId,...l,...r,ref:n})})});Q.displayName=K;var ee="AccordionContent",et=a.default.forwardRef((e,n)=>{let{__scopeAccordion:i,...r}=e,a=G(A,i),s=Y(ee,i),o=U(i);return(0,t.jsx)(w,{role:"region","aria-labelledby":s.triggerId,"data-orientation":a.orientation,...o,...r,ref:n,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...e.style}})});function en(e){return e?"open":"closed"}et.displayName=ee,e.s(["Accordion",()=>F,"AccordionContent",()=>et,"AccordionHeader",()=>$,"AccordionItem",()=>Z,"AccordionTrigger",()=>Q,"Content",()=>et,"Header",()=>$,"Item",()=>Z,"Root",()=>F,"Trigger",()=>Q,"createAccordionScope",()=>D],67660);var ei=e.i(67660),ei=ei,er=e.i(64659);let ea=ei.Root,es=a.forwardRef(({className:e,...n},r)=>(0,t.jsx)(ei.Item,{ref:r,className:(0,i.cn)("border-b border-[#222222]",e),...n}));es.displayName="AccordionItem";let eo=a.forwardRef(({className:e,children:n,...r},a)=>(0,t.jsx)(ei.Header,{className:"flex",children:(0,t.jsxs)(ei.Trigger,{ref:a,className:(0,i.cn)("flex flex-1 items-center justify-between py-4 font-medium transition-all hover:text-[#888888] [&[data-state=open]>svg]:rotate-180",e),...r,children:[n,(0,t.jsx)(er.ChevronDown,{className:"h-4 w-4 shrink-0 transition-transform duration-200 text-[#888888]"})]})}));eo.displayName=ei.Trigger.displayName;let el=a.forwardRef(({className:e,children:n,...r},a)=>(0,t.jsx)(ei.Content,{ref:a,className:"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",...r,children:(0,t.jsx)("div",{className:(0,i.cn)("pb-4 pt-0",e),children:n})}));el.displayName=ei.Content.displayName;let eu=[{question:"How does Obfusca detect sensitive data?",answer:"Obfusca combines fast pattern matching with validation (SSNs with area/group checks, credit cards with Luhn, API keys, AWS credentials, private keys, and more) with AI-powered semantic detection that catches what patterns miss, like spoken-out SSNs, partial card info, or confidential business metrics. All prompt and message detection runs on-device in your browser, with no external AI service. File scanning uses a combination of local and server-side processing."},{question:"Which AI tools does Obfusca protect?",answer:"Obfusca supports 11 AI platforms: ChatGPT, Claude, Gemini, Grok, DeepSeek, GitHub Copilot, Microsoft Copilot, Perplexity, Mistral, Cohere, and Notion AI. Each platform has specific interception handling for both text input and file uploads. We continuously update coverage as new AI tools emerge."},{question:"Can employees still use AI tools with Obfusca?",answer:"Absolutely. Obfusca enables safe AI usage, not blanket blocking. You configure four actions per detection type: block (prevents sending), warn (shows a warning, user can proceed with one click), redact (replaces sensitive data with realistic dummies), or allow (logs silently). Monitor mode lets you log everything without any blocking during initial rollout."},{question:"How do I set up policies?",answer:"Apply a protection profile from the Policies dashboard in one click. Four profiles are available: Personal Protection (24 semantic rules for personal data), Business Standard (tech and legal detection), Strict Compliance (healthcare, finance, and legal with everything blocked), and Monitor Only (logs without blocking). Then fine-tune individual actions or add custom regex, keyword, and semantic rules as needed."},{question:"Does Obfusca store my data or prompts?",answer:"No. Obfusca never stores raw prompts or files. Only anonymized metadata, detection summaries, and content hashes are kept for your security dashboard. The one exception is bypass incidents: when a user explicitly overrides protection, detection details are logged for admin review. All scanning happens in the browser. For enterprises, we offer single-tenant and private deployment options."},{question:"Is there a free trial?",answer:"Yes. Every new account gets a 30-day free trial with full access to all Individual plan features, including block, redact, warn, and allow enforcement, custom patterns, personal semantic detection (24 rules), and the detection dashboard. After 30 days, subscribe at $12/month to continue."}];function ec({className:e}){return(0,t.jsx)("section",{className:(0,i.cn)("py-20 bg-black",e),children:(0,t.jsx)("div",{className:"max-w-[85rem] mx-auto px-4",children:(0,t.jsxs)("div",{className:"grid grid-cols-1 gap-8 lg:grid-cols-5 lg:gap-12 xl:grid-cols-12 xl:gap-16",children:[(0,t.jsxs)("div",{className:"flex flex-col justify-between lg:col-span-2 xl:col-span-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"mb-8 flex items-start gap-3 sm:gap-4 lg:mb-12",children:[(0,t.jsx)("div",{className:"h-12 w-12 flex-shrink-0 overflow-hidden rounded-xl bg-[#111111] flex items-center justify-center sm:h-16 sm:w-16",children:(0,t.jsx)(r.ObfuscaLogoIcon,{className:"h-8 w-8 sm:h-10 sm:w-10 text-white"})}),(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("h2",{className:"mb-1 text-lg font-normal text-white sm:text-xl",children:"Obfusca Support"}),(0,t.jsx)("p",{className:"text-sm text-neutral-400 sm:text-base",children:"Security Team"})]})]}),(0,t.jsxs)("div",{className:"space-y-4 lg:space-y-6",children:[(0,t.jsx)("h3",{className:"text-lg font-normal text-white sm:text-xl",children:"Still have questions?"}),(0,t.jsx)("p",{className:"text-sm leading-relaxed text-neutral-400 sm:text-base",children:"Can't find what you're looking for? Our security experts are here to help you understand how Obfusca can protect your organization's sensitive data from AI leaks."})]})]}),(0,t.jsx)("div",{className:"py-4 mt-8",children:(0,t.jsxs)("a",{href:"/demo",className:"group flex h-auto p-0 text-start text-base font-normal text-white sm:text-xl",children:[(0,t.jsx)("span",{className:"border-b-2 border-[#222222] pb-0.5 transition-colors hover:border-white",children:"Contact us"}),(0,t.jsx)(n,{className:"ml-1 h-6 w-5 transition-transform group-hover:translate-x-0.5 group-hover:-translate-y-0.5"})]})})]}),(0,t.jsxs)("div",{className:"lg:col-span-3 xl:col-span-8",children:[(0,t.jsx)("div",{className:"mb-8 md:text-center lg:mb-16 lg:text-left",children:(0,t.jsx)("h1",{className:"text-4xl font-normal pb-4 bg-clip-text text-transparent bg-gradient-to-b from-neutral-100 to-neutral-300 sm:text-6xl",children:"FAQ"})}),(0,t.jsx)("div",{className:"max-w-none",children:(0,t.jsx)(ea,{type:"single",collapsible:!0,defaultValue:"item-0",className:"space-y-0",children:eu.map((e,n)=>(0,t.jsxs)(es,{value:`item-${n}`,className:(0,i.cn)("border-0",n!==eu.length-1&&"border-b border-[#222222]"),children:[(0,t.jsx)(eo,{className:"justify-between py-6 text-left text-lg font-normal text-white hover:text-neutral-400 hover:no-underline sm:text-xl lg:py-8 lg:text-xl",children:(0,t.jsx)("span",{className:"pr-4",children:e.question})}),(0,t.jsx)(el,{className:"pt-0 pr-8 pb-6 text-sm leading-relaxed text-neutral-400 sm:text-base lg:pb-8",children:e.answer})]},n))})})]})]})})})}e.s(["FaqSection",()=>ec],59729)}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.