@needle-tools/engine 3.5.9-alpha → 3.5.9-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/dist/needle-engine.js +134 -134
- package/dist/needle-engine.light.js +143 -143
- package/dist/needle-engine.light.min.js +3 -3
- package/dist/needle-engine.light.umd.cjs +4 -4
- package/dist/needle-engine.min.js +4 -4
- package/dist/needle-engine.umd.cjs +5 -5
- package/lib/engine/api.d.ts +1 -0
- package/lib/engine/api.js +1 -0
- package/lib/engine/api.js.map +1 -1
- package/lib/engine/engine_element.d.ts +4 -1
- package/lib/engine/engine_element.js +17 -13
- package/lib/engine/engine_element.js.map +1 -1
- package/lib/engine/engine_element_attributes.d.ts +37 -0
- package/lib/engine/engine_element_attributes.js +2 -0
- package/lib/engine/engine_element_attributes.js.map +1 -0
- package/lib/engine/engine_gltf_builtin_components.js +7 -0
- package/lib/engine/engine_gltf_builtin_components.js.map +1 -1
- package/package.json +3 -2
- package/plugins/next/next.js +1 -1
- package/src/engine/api.ts +1 -0
- package/src/engine/engine_element.ts +22 -14
- package/src/engine/engine_element_attributes.ts +42 -0
- package/src/engine/engine_gltf_builtin_components.ts +9 -1
|
@@ -3946,7 +3946,7 @@ irradiance += getLightProbeIrradiance( lightProbe, geometry.normal );
|
|
|
3946
3946
|
}
|
|
3947
3947
|
`,n}async function e7(){try{let t=await(await fetch("https://urls.needle.tools/analytics-endpoint")).text();if(t){Kh&&console.log("Analytics backend url",t);const i=window.location.href;let s="api/v1/register/web-request";t.endsWith("/")||(s="/"+s);const r=Ol()?"commercial":"non-commercial",o=`${t}${s}?type=${r}&url=${encodeURIComponent(i)}&hostname=${encodeURIComponent(window.location.hostname)}&pathname=${encodeURIComponent(window.location.pathname)}&search=${encodeURIComponent(window.location.search)}&hash=${encodeURIComponent(window.location.hash)}`;Kh&&console.log("Sending non-commercial usage message to analytics backend",o),fetch(o,{mode:"no-cors"}).catch(a=>{Kh&&console.log("Failed to send non-commercial usage message to analytics backend",a)})}}catch(n){Kh&&console.log("Failed to send non-commercial usage message to analytics backend",n)}}const Gh=ce("debugloadingbar"),Hp=ce("debugloadingbarrendering");class t7{constructor(){u(this,"className");u(this,"additionalClasses")}}let Vp=0,TR;function j1(n){Gh&&console.log(n.progress.loaded.toFixed(0)+"/"+n.progress.total.toFixed(0),n);const e=n.count,t=n.progress.total;t===0||t===void 0?(TR!==n.name&&(Vp=0),TR=n.name,Vp+=(1-Vp)*.001,Gh&&Vo("Loading "+n.name+" did not report total size")):Vp=n.progress.loaded/t;const i=n.index/e+Vp/e;return Ze.clamp01(i)}const v_=class{constructor(e,t){u(this,"loadingProgress",0);u(this,"_element");u(this,"_progress",0);u(this,"_allowCustomLoadingElement",!0);u(this,"_loadingElement");u(this,"_loadingTextContainer",null);u(this,"_loadingBar",null);u(this,"_messageContainer",null);u(this,"_loadingElementOptions");u(this,"_progressLoop");this._element=e,this._loadingElementOptions=t}onLoadingBegin(e){if(Gh&&console.warn("Begin Loading"),!this._loadingElement){for(let t=0;t<this._element.children.length;t++){const i=this._element.children[t];if(i.classList.contains(v_.LoadingContainerClassName)){if(!this._allowCustomLoadingElement){Gh&&console.warn("Remove custom loading container"),this._element.removeChild(i);continue}this._loadingElement=this.createLoadingElement(i)}}this._loadingElement||(this._loadingElement=this.createLoadingElement())}this._progress=0,this.loadingProgress=0,this._loadingElement.style.display="flex",this._element.appendChild(this._loadingElement),this.smoothProgressLoop(),this.setMessage(e??"")}onLoadingUpdate(e,t){var s;if(!((s=this._loadingElement)!=null&&s.parentElement))return;let i=0;typeof e=="number"?i=e:("index"in e&&(i=j1(e)),!t&&"name"in e&&this.setMessage("loading "+e.name)),this.loadingProgress=i,t&&this.setMessage(t),this.updateDisplay()}onLoadingFinished(){Gh&&console.warn("Finished Loading"),Hp||(this.loadingProgress=1,this.onDoneLoading())}setMessage(e){this._messageContainer&&(this._messageContainer.innerText=e)}smoothProgressLoop(){if(this._progressLoop)return;let e=1/12;Hp&&(e=1/500,typeof Hp=="number"&&(e*=Hp)),this._progressLoop=setInterval(()=>{this.loadingProgress>=.95&&!Hp&&(e=.9),this._progress=Ze.lerp(this._progress,this.loadingProgress,e*this.loadingProgress),this.updateDisplay()},e)}onDoneLoading(){this._loadingElement&&(Gh&&console.log("Hiding loading element"),this._loadingElement.style.display="none",this._loadingElement.remove()),this._progressLoop&&clearInterval(this._progressLoop),this._progressLoop=null}updateDisplay(){const e=this._progress,t=(e*100).toFixed(0)+"%";this._loadingBar&&(this._loadingBar.style.width=e*100+"%"),this._loadingTextContainer&&(this._loadingTextContainer.textContent=t)}createLoadingElement(e){var d,f;Gh&&!e&&console.log("Creating loading element"),this._loadingElement=e||document.createElement("div");const t=this._element.getAttribute("loading-style"),i=Ol();if(!e&&(this._loadingElement.style.position="absolute",this._loadingElement.style.width="100%",this._loadingElement.style.height="100%",this._loadingElement.style.left="0",this._loadingElement.style.top="0",t==="light"?this._loadingElement.style.backgroundColor="#ddd":this._loadingElement.style.backgroundColor="#222",this._loadingElement.style.display="flex",this._loadingElement.style.alignItems="center",this._loadingElement.style.justifyContent="center",this._loadingElement.style.zIndex="1000",this._loadingElement.style.flexDirection="column",this._loadingElement.style.pointerEvents="none",this._loadingElement.style.color="white",t==="light"?this._loadingElement.style.color="rgba(0,0,0,.8)":this._loadingElement.style.color="rgba(255,255,255,.5)",i&&this._element)){const p=this._element.getAttribute("loading-background-color");p&&(this._loadingElement.style.backgroundColor=p);const g=this._element.getAttribute("loading-text-color");g&&(this._loadingElement.style.color=g)}const s=((d=this._loadingElementOptions)==null?void 0:d.className)??v_.LoadingContainerClassName;if(this._loadingElement.classList.add(s),(f=this._loadingElementOptions)!=null&&f.additionalClasses)for(const p of this._loadingElementOptions.additionalClasses)this._loadingElement.classList.add(p);const r=document.createElement("div"),o=30;r.style.display="flex",r.style.width=o+"%",r.style.height="2px",t==="light"?r.style.backgroundColor="rgba(0,0,0,.2)":r.style.backgroundColor="rgba(255,255,255,.2)",this._loadingElement.appendChild(r);const a=document.createElement("img"),c=64;if(a.style.width=`${c}px`,a.style.height=`${c}px`,a.style.position="absolute",a.style.left="50%",a.style.transform=`translate(-${c*.5}px, -${c+32}px)`,a.addEventListener("click",()=>window.open("https://needle.tools","_blank")),a.style.cursor="pointer",a.style.userSelect="none",a.style.pointerEvents="all",a.style.objectFit="contain",a.src=gF,i&&this._element){const p=this._element.getAttribute("loading-logo-src");p&&(a.src=p)}r.appendChild(a),this._loadingBar=document.createElement("div"),r.appendChild(this._loadingBar);const l=function(p){return Ze.lerp(o*.5,100-o*.5,p)+"%"};if(this._loadingBar.style.background=`linear-gradient(90deg, #02022B ${l(0)}, #0BA398 ${l(.4)}, #99CC33 ${l(.5)}, #D7DB0A ${l(1)})`,this._loadingBar.style.backgroundAttachment="fixed",this._loadingBar.style.width="0%",this._loadingBar.style.height="100%",i&&this._element){const p=this._element.getAttribute("primary-color"),g=this._element.getAttribute("secondary-color");p&&g?this._loadingBar.style.background=`linear-gradient(90deg, ${p} ${l(0)}, ${g} ${l(1)})`:p?this._loadingBar.style.background=p:g&&(this._loadingBar.style.background=g)}this._loadingTextContainer=document.createElement("div"),this._loadingTextContainer.style.display="flex",this._loadingTextContainer.style.justifyContent="center",this._loadingTextContainer.style.marginTop="1.2em",this._loadingElement.appendChild(this._loadingTextContainer);const h=document.createElement("div");if(this._messageContainer=h,h.style.display="flex",h.style.fontSize=".8em",h.style.paddingTop=".5em",h.style.fontWeight="200",h.style.fontFamily="Roboto, sans-serif, Arial",h.style.justifyContent="center",this._loadingElement.appendChild(h),i&&this._element){const p=this._element.getAttribute("loading-text-color");p&&(h.style.color=p)}if(!IS()){const p=document.createElement("div");p.style.paddingTop=".6em",p.style.fontSize=".8em",p.innerText="NON COMMERCIAL",this._loadingElement.appendChild(p)}return this._loadingElement}};let Lg=v_;u(Lg,"LoadingContainerClassName","loading");const vw=new WeakMap;class W1 extends Cs{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,i,s){const r=new Rn(this.manager);r.setPath(this.path),r.setResponseType("arraybuffer"),r.setRequestHeader(this.requestHeader),r.setWithCredentials(this.withCredentials),r.load(e,o=>{this.decodeDracoFile(o,t).catch(s)},i,s)}decodeDracoFile(e,t,i,s){const r={attributeIDs:i||this.defaultAttributeIDs,attributeTypes:s||this.defaultAttributeTypes,useUniqueIDs:!!i};return this.decodeGeometry(e,r).then(t)}decodeGeometry(e,t){const i=JSON.stringify(t);if(vw.has(e)){const c=vw.get(e);if(c.key===i)return c.promise;if(e.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let s;const r=this.workerNextTaskID++,o=e.byteLength,a=this._getWorker(r,o).then(c=>(s=c,new Promise((l,h)=>{s._callbacks[r]={resolve:l,reject:h},s.postMessage({type:"decode",id:r,taskConfig:t,buffer:e},[e])}))).then(c=>this._createGeometry(c.geometry));return a.catch(()=>!0).then(()=>{s&&r&&this._releaseTask(s,r)}),vw.set(e,{key:i,promise:a}),a}_createGeometry(e){const t=new vt;e.index&&t.setIndex(new ht(e.index.array,1));for(let i=0;i<e.attributes.length;i++){const s=e.attributes[i],r=s.name,o=s.array,a=s.itemSize;t.setAttribute(r,new ht(o,a))}return t}_loadLibrary(e,t){const i=new Rn(this.manager);return i.setPath(this.decoderPath),i.setResponseType(t),i.setWithCredentials(this.withCredentials),new Promise((s,r)=>{i.load(e,s,void 0,r)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const e=typeof WebAssembly!="object"||this.decoderConfig.type==="js",t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(i=>{const s=i[0];e||(this.decoderConfig.wasmBinary=i[1]);const r=i7.toString(),o=["/* draco decoder */",s,"","/* worker */",r.substring(r.indexOf("{")+1,r.lastIndexOf("}"))].join(`
|
|
3948
3948
|
`);this.workerSourceURL=URL.createObjectURL(new Blob([o]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const s=new Worker(this.workerSourceURL);s._callbacks={},s._taskCosts={},s._taskLoad=0,s.postMessage({type:"init",decoderConfig:this.decoderConfig}),s.onmessage=function(r){const o=r.data;switch(o.type){case"decode":s._callbacks[o.id].resolve(o);break;case"error":s._callbacks[o.id].reject(o);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+o.type+'"')}},this.workerPool.push(s)}else this.workerPool.sort(function(s,r){return s._taskLoad>r._taskLoad?-1:1});const i=this.workerPool[this.workerPool.length-1];return i._taskCosts[e]=t,i._taskLoad+=t,i})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this}}function i7(){let n,e;onmessage=function(o){const a=o.data;switch(a.type){case"init":n=a.decoderConfig,e=new Promise(function(h){n.onModuleLoaded=function(d){h({draco:d})},DracoDecoderModule(n)});break;case"decode":const c=a.buffer,l=a.taskConfig;e.then(h=>{const d=h.draco,f=new d.Decoder,p=new d.DecoderBuffer;p.Init(new Int8Array(c),c.byteLength);try{const g=t(d,f,p,l),m=g.attributes.map(A=>A.array.buffer);g.index&&m.push(g.index.array.buffer),self.postMessage({type:"decode",id:a.id,geometry:g},m)}catch(g){console.error(g),self.postMessage({type:"error",id:a.id,error:g.message})}finally{d.destroy(p),d.destroy(f)}});break}};function t(o,a,c,l){const h=l.attributeIDs,d=l.attributeTypes;let f,p;const g=a.GetEncodedGeometryType(c);if(g===o.TRIANGULAR_MESH)f=new o.Mesh,p=a.DecodeBufferToMesh(c,f);else if(g===o.POINT_CLOUD)f=new o.PointCloud,p=a.DecodeBufferToPointCloud(c,f);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!p.ok()||f.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+p.error_msg());const m={index:null,attributes:[]};for(const A in h){const v=self[d[A]];let b,y;if(l.useUniqueIDs)y=h[A],b=a.GetAttributeByUniqueId(f,y);else{if(y=a.GetAttributeId(f,o[h[A]]),y===-1)continue;b=a.GetAttribute(f,y)}m.attributes.push(s(o,a,f,A,v,b))}return g===o.TRIANGULAR_MESH&&(m.index=i(o,a,f)),o.destroy(f),m}function i(o,a,c){const h=c.num_faces()*3,d=h*4,f=o._malloc(d);a.GetTrianglesUInt32Array(c,d,f);const p=new Uint32Array(o.HEAPF32.buffer,f,h).slice();return o._free(f),{array:p,itemSize:1}}function s(o,a,c,l,h,d){const f=d.num_components(),g=c.num_points()*f,m=g*h.BYTES_PER_ELEMENT,A=r(o,h),v=o._malloc(m);a.GetAttributeDataArrayForAllPoints(c,d,A,m,v);const b=new h(o.HEAPF32.buffer,v,g).slice();return o._free(v),{name:l,array:b,itemSize:f}}function r(o,a){switch(a){case Float32Array:return o.DT_FLOAT32;case Int8Array:return o.DT_INT8;case Int16Array:return o.DT_INT16;case Int32Array:return o.DT_INT32;case Uint8Array:return o.DT_UINT8;case Uint16Array:return o.DT_UINT16;case Uint32Array:return o.DT_UINT32}}}class n7{constructor(e=4){this.pool=e,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0}_initWorker(e){if(!this.workers[e]){const t=this.workerCreator();t.addEventListener("message",this._onMessage.bind(this,e)),this.workers[e]=t}}_getIdleWorker(){for(let e=0;e<this.pool;e++)if(!(this.workerStatus&1<<e))return e;return-1}_onMessage(e,t){const i=this.workersResolve[e];if(i&&i(t),this.queue.length){const{resolve:s,msg:r,transfer:o}=this.queue.shift();this.workersResolve[e]=s,this.workers[e].postMessage(r,o)}else this.workerStatus^=1<<e}setWorkerCreator(e){this.workerCreator=e}setWorkerLimit(e){this.pool=e}postMessage(e,t){return new Promise(i=>{const s=this._getIdleWorker();s!==-1?(this._initWorker(s),this.workerStatus|=1<<s,this.workersResolve[s]=i,this.workers[s].postMessage(e,t)):this.queue.push({resolve:i,msg:e,transfer:t})})}dispose(){this.workers.forEach(e=>e.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const s7=0,r7=2,o7=1,a7=2,c7=0,AF=9,q1=15,vF=16,X1=22,yF=37,Y1=43,_F=76,bF=83,xF=97,wF=100,CF=103,SF=109;class l7{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}}class jp{constructor(e,t,i,s){this._dataView=new DataView(e.buffer,e.byteOffset+t,i),this._littleEndian=s,this._offset=0}_nextUint8(){const e=this._dataView.getUint8(this._offset);return this._offset+=1,e}_nextUint16(){const e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}_nextUint32(){const e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint64(){const e=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,e}_nextInt32(){const e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}_skip(e){return this._offset+=e,this}_scan(e,t=0){const i=this._offset;let s=0;for(;this._dataView.getUint8(this._offset)!==t&&s<e;)s++,this._offset++;return s<e&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+i,s)}}const Is=[171,75,84,88,32,50,48,187,13,10,26,10];function PR(n){return typeof TextDecoder<"u"?new TextDecoder().decode(n):Buffer.from(n).toString("utf8")}function h7(n){const e=new Uint8Array(n.buffer,n.byteOffset,Is.length);if(e[0]!==Is[0]||e[1]!==Is[1]||e[2]!==Is[2]||e[3]!==Is[3]||e[4]!==Is[4]||e[5]!==Is[5]||e[6]!==Is[6]||e[7]!==Is[7]||e[8]!==Is[8]||e[9]!==Is[9]||e[10]!==Is[10]||e[11]!==Is[11])throw new Error("Missing KTX 2.0 identifier.");const t=new l7,i=17*Uint32Array.BYTES_PER_ELEMENT,s=new jp(n,Is.length,i,!0);t.vkFormat=s._nextUint32(),t.typeSize=s._nextUint32(),t.pixelWidth=s._nextUint32(),t.pixelHeight=s._nextUint32(),t.pixelDepth=s._nextUint32(),t.layerCount=s._nextUint32(),t.faceCount=s._nextUint32();const r=s._nextUint32();t.supercompressionScheme=s._nextUint32();const o=s._nextUint32(),a=s._nextUint32(),c=s._nextUint32(),l=s._nextUint32(),h=s._nextUint64(),d=s._nextUint64(),f=new jp(n,Is.length+i,3*r*8,!0);for(let K=0;K<r;K++)t.levels.push({levelData:new Uint8Array(n.buffer,n.byteOffset+f._nextUint64(),f._nextUint64()),uncompressedByteLength:f._nextUint64()});const p=new jp(n,o,a,!0),g={vendorId:p._skip(4)._nextUint16(),descriptorType:p._nextUint16(),versionNumber:p._nextUint16(),descriptorBlockSize:p._nextUint16(),colorModel:p._nextUint8(),colorPrimaries:p._nextUint8(),transferFunction:p._nextUint8(),flags:p._nextUint8(),texelBlockDimension:[p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8()],bytesPlane:[p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8()],samples:[]},m=(g.descriptorBlockSize/4-6)/4;for(let K=0;K<m;K++){const J={bitOffset:p._nextUint16(),bitLength:p._nextUint8(),channelType:p._nextUint8(),samplePosition:[p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&J.channelType?(J.sampleLower=p._nextInt32(),J.sampleUpper=p._nextInt32()):(J.sampleLower=p._nextUint32(),J.sampleUpper=p._nextUint32()),g.samples[K]=J}t.dataFormatDescriptor.length=0,t.dataFormatDescriptor.push(g);const A=new jp(n,c,l,!0);for(;A._offset<l;){const K=A._nextUint32(),J=A._scan(K),ue=PR(J),he=A._scan(K-J.byteLength);t.keyValue[ue]=ue.match(/^ktx/i)?PR(he):he,A._offset%4&&A._skip(4-A._offset%4)}if(d<=0)return t;const v=new jp(n,h,d,!0),b=v._nextUint16(),y=v._nextUint16(),_=v._nextUint32(),C=v._nextUint32(),S=v._nextUint32(),T=v._nextUint32(),x=[];for(let K=0;K<r;K++)x.push({imageFlags:v._nextUint32(),rgbSliceByteOffset:v._nextUint32(),rgbSliceByteLength:v._nextUint32(),alphaSliceByteOffset:v._nextUint32(),alphaSliceByteLength:v._nextUint32()});const M=h+v._offset,P=M+_,k=P+C,G=k+S,z=new Uint8Array(n.buffer,n.byteOffset+M,_),L=new Uint8Array(n.buffer,n.byteOffset+P,C),H=new Uint8Array(n.buffer,n.byteOffset+k,S),Z=new Uint8Array(n.buffer,n.byteOffset+G,T);return t.globalData={endpointCount:b,selectorCount:y,imageDescs:x,endpointsData:z,selectorsData:L,tablesData:H,extendedData:Z},t}let yw,ec,PS;const _w={env:{emscripten_notify_memory_growth:function(n){PS=new Uint8Array(ec.exports.memory.buffer)}}};class u7{init(){return yw||(yw=typeof fetch<"u"?fetch("data:application/wasm;base64,"+RR).then(e=>e.arrayBuffer()).then(e=>WebAssembly.instantiate(e,_w)).then(this._init):WebAssembly.instantiate(Buffer.from(RR,"base64"),_w).then(this._init),yw)}_init(e){ec=e.instance,_w.env.emscripten_notify_memory_growth(0)}decode(e,t=0){if(!ec)throw new Error("ZSTDDecoder: Await .init() before decoding.");const i=e.byteLength,s=ec.exports.malloc(i);PS.set(e,s),t=t||Number(ec.exports.ZSTD_findDecompressedSize(s,i));const r=ec.exports.malloc(t),o=ec.exports.ZSTD_decompress(r,t,s,i),a=PS.slice(r,r+o);return ec.exports.free(s),ec.exports.free(r),a}}const RR="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQhBSAGQQR2IQRBICAAdCIAQQFyIQkgASgCACEPQQAhAiADIQYCQANAIAlBAkggAiAPS3JFBEAgAiEHAkAgCARAA0AgBEH//wNxQf//A0YEQCAHQRhqIQcgBiAQSQR/IAZBAmoiBigAACAFdgUgBUEQaiEFIARBEHYLIQQMAQsLA0AgBEEDcSIIQQNGBEAgBUECaiEFIARBAnYhBCAHQQNqIQcMAQsLIAcgCGoiByAPSw0EIAVBAmohBQNAIAIgB0kEQCANIAJBAXRqQQA7AQAgAkEBaiECDAELCyAGIA5LQQAgBiAFQQN1aiIHIAxLG0UEQCAHKAAAIAVBB3EiBXYhBAwCCyAEQQJ2IQQLIAYhBwsCfyALQX9qIAQgAEF/anEiBiAAQQF0QX9qIgggCWsiEUkNABogBCAIcSIEQQAgESAEIABIG2shBiALCyEIIA0gAkEBdGogBkF/aiIEOwEAIAlBASAGayAEIAZBAUgbayEJA0AgCSAASARAIABBAXUhACALQX9qIQsMAQsLAn8gByAOS0EAIAcgBSAIaiIFQQN1aiIGIAxLG0UEQCAFQQdxDAELIAUgDCIGIAdrQQN0awshBSACQQFqIQIgBEUhCCAGKAAAIAVBH3F2IQQMAQsLQWwgCUEBRyAFQSBKcg0BGiABIAJBf2o2AgAgBiAFQQdqQQN1aiADawwBC0FQCyEAIApBEGokACAACwkAQQFBBSAAGwsMACAAIAEoAAA2AAALqgMBCn8jAEHwAGsiCiQAIAJBAWohDiAAQQhqIQtBgIAEIAVBf2p0QRB1IQxBACECQQEhBkEBIAV0IglBf2oiDyEIA0AgAiAORkUEQAJAIAEgAkEBdCINai8BACIHQf//A0YEQCALIAhBA3RqIAI2AgQgCEF/aiEIQQEhBwwBCyAGQQAgDCAHQRB0QRB1ShshBgsgCiANaiAHOwEAIAJBAWohAgwBCwsgACAFNgIEIAAgBjYCACAJQQN2IAlBAXZqQQNqIQxBACEAQQAhBkEAIQIDQCAGIA5GBEADQAJAIAAgCUYNACAKIAsgAEEDdGoiASgCBCIGQQF0aiICIAIvAQAiAkEBajsBACABIAUgAhAUayIIOgADIAEgAiAIQf8BcXQgCWs7AQAgASAEIAZBAnQiAmooAgA6AAIgASACIANqKAIANgIEIABBAWohAAwBCwsFIAEgBkEBdGouAQAhDUEAIQcDQCAHIA1ORQRAIAsgAkEDdGogBjYCBANAIAIgDGogD3EiAiAISw0ACyAHQQFqIQcMAQsLIAZBAWohBgwBCwsgCkHwAGokAAsjAEIAIAEQCSAAhUKHla+vmLbem55/fkLj3MqV/M7y9YV/fAsQACAAQn43AwggACABNgIACyQBAX8gAARAIAEoAgQiAgRAIAEoAgggACACEQEADwsgABAmCwsfACAAIAEgAi8BABAINgIAIAEQBBogACACQQRqNgIEC0oBAX9BoCAoAgAiASAAaiIAQX9MBEBBiCBBMDYCAEF/DwsCQCAAPwBBEHRNDQAgABBmDQBBiCBBMDYCAEF/DwtBoCAgADYCACABC9cBAQh/Qbp/IQoCQCACKAIEIgggAigCACIJaiIOIAEgAGtLDQBBbCEKIAkgBCADKAIAIgtrSw0AIAAgCWoiBCACKAIIIgxrIQ0gACABQWBqIg8gCyAJQQAQKSADIAkgC2o2AgACQAJAIAwgBCAFa00EQCANIQUMAQsgDCAEIAZrSw0CIAcgDSAFayIAaiIBIAhqIAdNBEAgBCABIAgQDxoMAgsgBCABQQAgAGsQDyEBIAIgACAIaiIINgIEIAEgAGshBAsgBCAPIAUgCEEBECkLIA4hCgsgCgubAgEBfyMAQYABayINJAAgDSADNgJ8AkAgAkEDSwRAQX8hCQwBCwJAAkACQAJAIAJBAWsOAwADAgELIAZFBEBBuH8hCQwEC0FsIQkgBS0AACICIANLDQMgACAHIAJBAnQiAmooAgAgAiAIaigCABA7IAEgADYCAEEBIQkMAwsgASAJNgIAQQAhCQwCCyAKRQRAQWwhCQwCC0EAIQkgC0UgDEEZSHINAUEIIAR0QQhqIQBBACECA0AgAiAATw0CIAJBQGshAgwAAAsAC0FsIQkgDSANQfwAaiANQfgAaiAFIAYQFSICEAMNACANKAJ4IgMgBEsNACAAIA0gDSgCfCAHIAggAxAYIAEgADYCACACIQkLIA1BgAFqJAAgCQsLACAAIAEgAhALGgsQACAALwAAIAAtAAJBEHRyCy8AAn9BuH8gAUEISQ0AGkFyIAAoAAQiAEF3Sw0AGkG4fyAAQQhqIgAgACABSxsLCwkAIAAgATsAAAsDAAELigYBBX8gACAAKAIAIgVBfnE2AgBBACAAIAVBAXZqQYQgKAIAIgQgAEYbIQECQAJAIAAoAgQiAkUNACACKAIAIgNBAXENACACQQhqIgUgA0EBdkF4aiIDQQggA0EISxtnQR9zQQJ0QYAfaiIDKAIARgRAIAMgAigCDDYCAAsgAigCCCIDBEAgAyACKAIMNgIECyACKAIMIgMEQCADIAIoAgg2AgALIAIgAigCACAAKAIAQX5xajYCAEGEICEAAkACQCABRQ0AIAEgAjYCBCABKAIAIgNBAXENASADQQF2QXhqIgNBCCADQQhLG2dBH3NBAnRBgB9qIgMoAgAgAUEIakYEQCADIAEoAgw2AgALIAEoAggiAwRAIAMgASgCDDYCBAsgASgCDCIDBEAgAyABKAIINgIAQYQgKAIAIQQLIAIgAigCACABKAIAQX5xajYCACABIARGDQAgASABKAIAQQF2akEEaiEACyAAIAI2AgALIAIoAgBBAXZBeGoiAEEIIABBCEsbZ0Efc0ECdEGAH2oiASgCACEAIAEgBTYCACACIAA2AgwgAkEANgIIIABFDQEgACAFNgIADwsCQCABRQ0AIAEoAgAiAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAigCACABQQhqRgRAIAIgASgCDDYCAAsgASgCCCICBEAgAiABKAIMNgIECyABKAIMIgIEQCACIAEoAgg2AgBBhCAoAgAhBAsgACAAKAIAIAEoAgBBfnFqIgI2AgACQCABIARHBEAgASABKAIAQQF2aiAANgIEIAAoAgAhAgwBC0GEICAANgIACyACQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgIoAgAhASACIABBCGoiAjYCACAAIAE2AgwgAEEANgIIIAFFDQEgASACNgIADwsgBUEBdkF4aiIBQQggAUEISxtnQR9zQQJ0QYAfaiICKAIAIQEgAiAAQQhqIgI2AgAgACABNgIMIABBADYCCCABRQ0AIAEgAjYCAAsLDgAgAARAIABBeGoQJQsLgAIBA38CQCAAQQ9qQXhxQYQgKAIAKAIAQQF2ayICEB1Bf0YNAAJAQYQgKAIAIgAoAgAiAUEBcQ0AIAFBAXZBeGoiAUEIIAFBCEsbZ0Efc0ECdEGAH2oiASgCACAAQQhqRgRAIAEgACgCDDYCAAsgACgCCCIBBEAgASAAKAIMNgIECyAAKAIMIgFFDQAgASAAKAIINgIAC0EBIQEgACAAKAIAIAJBAXRqIgI2AgAgAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAygCACECIAMgAEEIaiIDNgIAIAAgAjYCDCAAQQA2AgggAkUNACACIAM2AgALIAELtwIBA38CQAJAIABBASAAGyICEDgiAA0AAkACQEGEICgCACIARQ0AIAAoAgAiA0EBcQ0AIAAgA0EBcjYCACADQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgEoAgAgAEEIakYEQCABIAAoAgw2AgALIAAoAggiAQRAIAEgACgCDDYCBAsgACgCDCIBBEAgASAAKAIINgIACyACECchAkEAIQFBhCAoAgAhACACDQEgACAAKAIAQX5xNgIAQQAPCyACQQ9qQXhxIgMQHSICQX9GDQIgAkEHakF4cSIAIAJHBEAgACACaxAdQX9GDQMLAkBBhCAoAgAiAUUEQEGAICAANgIADAELIAAgATYCBAtBhCAgADYCACAAIANBAXRBAXI2AgAMAQsgAEUNAQsgAEEIaiEBCyABC7kDAQJ/IAAgA2ohBQJAIANBB0wEQANAIAAgBU8NAiAAIAItAAA6AAAgAEEBaiEAIAJBAWohAgwAAAsACyAEQQFGBEACQCAAIAJrIgZBB00EQCAAIAItAAA6AAAgACACLQABOgABIAAgAi0AAjoAAiAAIAItAAM6AAMgAEEEaiACIAZBAnQiBkHAHmooAgBqIgIQFyACIAZB4B5qKAIAayECDAELIAAgAhAMCyACQQhqIQIgAEEIaiEACwJAAkACQAJAIAUgAU0EQCAAIANqIQEgBEEBRyAAIAJrQQ9Kcg0BA0AgACACEAwgAkEIaiECIABBCGoiACABSQ0ACwwFCyAAIAFLBEAgACEBDAQLIARBAUcgACACa0EPSnINASAAIQMgAiEEA0AgAyAEEAwgBEEIaiEEIANBCGoiAyABSQ0ACwwCCwNAIAAgAhAHIAJBEGohAiAAQRBqIgAgAUkNAAsMAwsgACEDIAIhBANAIAMgBBAHIARBEGohBCADQRBqIgMgAUkNAAsLIAIgASAAa2ohAgsDQCABIAVPDQEgASACLQAAOgAAIAFBAWohASACQQFqIQIMAAALAAsLQQECfyAAIAAoArjgASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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",bw=new WeakMap;let xw=0,ww;class Lo extends Cs{constructor(e){super(e),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new n7,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER<"u"&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(e){return this.transcoderPath=e,this}setWorkerLimit(e){return this.workerPool.setWorkerLimit(e),this}detectSupport(e){return this.workerConfig={astcSupported:e.extensions.has("WEBGL_compressed_texture_astc"),etc1Supported:e.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:e.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:e.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:e.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:e.extensions.has("WEBGL_compressed_texture_pvrtc")||e.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},e.capabilities.isWebGL2&&(this.workerConfig.etc1Supported=!1),this}init(){if(!this.transcoderPending){const e=new Rn(this.manager);e.setPath(this.transcoderPath),e.setWithCredentials(this.withCredentials);const t=e.loadAsync("basis_transcoder.js"),i=new Rn(this.manager);i.setPath(this.transcoderPath),i.setResponseType("arraybuffer"),i.setWithCredentials(this.withCredentials);const s=i.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([t,s]).then(([r,o])=>{const a=Lo.BasisWorker.toString(),c=["/* constants */","let _EngineFormat = "+JSON.stringify(Lo.EngineFormat),"let _TranscoderFormat = "+JSON.stringify(Lo.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(Lo.BasisFormat),"/* basis_transcoder.js */",r,"/* worker */",a.substring(a.indexOf("{")+1,a.lastIndexOf("}"))].join(`
|
|
3949
|
-
`);this.workerSourceURL=URL.createObjectURL(new Blob([c])),this.transcoderBinary=o,this.workerPool.setWorkerCreator(()=>{const l=new Worker(this.workerSourceURL),h=this.transcoderBinary.slice(0);return l.postMessage({type:"init",config:this.workerConfig,transcoderBinary:h},[h]),l})}),xw>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),xw++}return this.transcoderPending}load(e,t,i,s){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const r=new Rn(this.manager);r.setResponseType("arraybuffer"),r.setWithCredentials(this.withCredentials),r.load(e,o=>{if(bw.has(o))return bw.get(o).promise.then(t).catch(s);this._createTexture(o).then(a=>t?t(a):null).catch(s)},i,s)}_createTextureFrom(e,t){const{mipmaps:i,width:s,height:r,format:o,type:a,error:c,dfdTransferFn:l,dfdFlags:h}=e;if(a==="error")return Promise.reject(c);const d=t.layerCount>1?new m2(i,s,r,t.layerCount,o,mi):new uc(i,s,r,o,mi);return d.minFilter=i.length===1?Vt:Qo,d.magFilter=Vt,d.generateMipmaps=!1,d.needsUpdate=!0,d.encoding=l===a7?yt:an,d.premultiplyAlpha=!!(h&o7),d}async _createTexture(e,t={}){const i=h7(new Uint8Array(e));if(i.vkFormat!==c7)return f7(i);const s=t,r=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:e,taskConfig:s},[e])).then(o=>this._createTextureFrom(o.data,i));return bw.set(e,{promise:r}),r}dispose(){return this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),xw--,this}}Lo.BasisFormat={ETC1S:0,UASTC_4x4:1};Lo.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16};Lo.EngineFormat={RGBAFormat:Mi,RGBA_ASTC_4x4_Format:R0,RGBA_BPTC_Format:B0,RGBA_ETC2_EAC_Format:P0,RGBA_PVRTC_4BPPV1_Format:M0,RGBA_S3TC_DXT5_Format:Sg,RGB_ETC1_Format:BE,RGB_ETC2_Format:T0,RGB_PVRTC_4BPPV1_Format:I0,RGB_S3TC_DXT1_Format:Cg};Lo.BasisWorker=function(){let n,e,t;const i=_EngineFormat,s=_TranscoderFormat,r=_BasisFormat;self.addEventListener("message",function(g){const m=g.data;switch(m.type){case"init":n=m.config,o(m.transcoderBinary);break;case"transcode":e.then(()=>{try{const{width:A,height:v,hasAlpha:b,mipmaps:y,format:_,dfdTransferFn:C,dfdFlags:S}=a(m.buffer),T=[];for(let x=0;x<y.length;++x)T.push(y[x].data.buffer);self.postMessage({type:"transcode",id:m.id,width:A,height:v,hasAlpha:b,mipmaps:y,format:_,dfdTransferFn:C,dfdFlags:S},T)}catch(A){console.error(A),self.postMessage({type:"error",id:m.id,error:A.message})}});break}});function o(g){e=new Promise(m=>{t={wasmBinary:g,onRuntimeInitialized:m},BASIS(t)}).then(()=>{t.initializeBasis(),t.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")})}function a(g){const m=new t.KTX2File(new Uint8Array(g));function A(){m.close(),m.delete()}if(!m.isValid())throw A(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");const v=m.isUASTC()?r.UASTC_4x4:r.ETC1S,b=m.getWidth(),y=m.getHeight(),_=m.getLayers()||1,C=m.getLevels(),S=m.getHasAlpha(),T=m.getDFDTransferFunc(),x=m.getDFDFlags(),{transcoderFormat:M,engineFormat:P}=d(v,b,y,S);if(!b||!y||!C)throw A(),new Error("THREE.KTX2Loader: Invalid texture");if(!m.startTranscoding())throw A(),new Error("THREE.KTX2Loader: .startTranscoding failed");const k=[];for(let G=0;G<C;G++){const z=[];let L,H;for(let Z=0;Z<_;Z++){const K=m.getImageLevelInfo(G,Z,0);L=K.origWidth,H=K.origHeight;const J=new Uint8Array(m.getImageTranscodedSizeInBytes(G,Z,0,M));if(!m.transcodeImage(J,G,Z,0,M,0,-1,-1))throw A(),new Error("THREE.KTX2Loader: .transcodeImage failed.");z.push(J)}k.push({data:p(z),width:L,height:H})}return A(),{width:b,height:y,hasAlpha:S,mipmaps:k,format:P,dfdTransferFn:T,dfdFlags:x}}const c=[{if:"astcSupported",basisFormat:[r.UASTC_4x4],transcoderFormat:[s.ASTC_4x4,s.ASTC_4x4],engineFormat:[i.RGBA_ASTC_4x4_Format,i.RGBA_ASTC_4x4_Format],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[r.ETC1S,r.UASTC_4x4],transcoderFormat:[s.BC7_M5,s.BC7_M5],engineFormat:[i.RGBA_BPTC_Format,i.RGBA_BPTC_Format],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[r.ETC1S,r.UASTC_4x4],transcoderFormat:[s.BC1,s.BC3],engineFormat:[i.RGB_S3TC_DXT1_Format,i.RGBA_S3TC_DXT5_Format],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[r.ETC1S,r.UASTC_4x4],transcoderFormat:[s.ETC1,s.ETC2],engineFormat:[i.RGB_ETC2_Format,i.RGBA_ETC2_EAC_Format],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[r.ETC1S,r.UASTC_4x4],transcoderFormat:[s.ETC1],engineFormat:[i.RGB_ETC1_Format],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[r.ETC1S,r.UASTC_4x4],transcoderFormat:[s.PVRTC1_4_RGB,s.PVRTC1_4_RGBA],engineFormat:[i.RGB_PVRTC_4BPPV1_Format,i.RGBA_PVRTC_4BPPV1_Format],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0}],l=c.sort(function(g,m){return g.priorityETC1S-m.priorityETC1S}),h=c.sort(function(g,m){return g.priorityUASTC-m.priorityUASTC});function d(g,m,A,v){let b,y;const _=g===r.ETC1S?l:h;for(let C=0;C<_.length;C++){const S=_[C];if(n[S.if]&&S.basisFormat.includes(g)&&!(v&&S.transcoderFormat.length<2)&&!(S.needsPowerOfTwo&&!(f(m)&&f(A))))return b=S.transcoderFormat[v?1:0],y=S.engineFormat[v?1:0],{transcoderFormat:b,engineFormat:y}}return console.warn("THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32."),b=s.RGBA32,y=i.RGBAFormat,{transcoderFormat:b,engineFormat:y}}function f(g){return g<=2?!0:(g&g-1)===0&&g!==0}function p(g){let m=0;for(const b of g)m+=b.byteLength;const A=new Uint8Array(m);let v=0;for(const b of g)A.set(b,v),v+=b.byteLength;return A}};const BR={[SF]:Mi,[xF]:Mi,[yF]:Mi,[Y1]:Mi,[CF]:jh,[bF]:jh,[vF]:jh,[X1]:jh,[wF]:Cl,[_F]:Cl,[q1]:Cl,[AF]:Cl},Cw={[SF]:vn,[xF]:Pn,[yF]:mi,[Y1]:mi,[CF]:vn,[bF]:Pn,[vF]:mi,[X1]:mi,[wF]:vn,[_F]:Pn,[q1]:mi,[AF]:mi},d7={[Y1]:yt,[X1]:yt,[q1]:yt};async function f7(n){const{vkFormat:e,pixelWidth:t,pixelHeight:i,pixelDepth:s}=n;if(BR[e]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");const r=n.levels[0];let o,a;if(n.supercompressionScheme===s7)o=r.levelData;else if(n.supercompressionScheme===r7)ww||(ww=new Promise(async l=>{const h=new u7;await h.init(),l(h)})),o=(await ww).decode(r.levelData,r.uncompressedByteLength);else throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");Cw[e]===vn?a=new Float32Array(o.buffer,o.byteOffset,o.byteLength/Float32Array.BYTES_PER_ELEMENT):Cw[e]===Pn?a=new Uint16Array(o.buffer,o.byteOffset,o.byteLength/Uint16Array.BYTES_PER_ELEMENT):a=o;const c=s===0?new Fo(a,t,i):new Km(a,t,i,s);return c.type=Cw[e],c.format=BR[e],c.encoding=d7[e]||an,c.needsUpdate=!0,Promise.resolve(c)}var p7=function(){var n="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb",e="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb",t=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),i=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var s=WebAssembly.validate(t)?e:n,r,o=WebAssembly.instantiate(a(s),{}).then(function(v){r=v.instance,r.exports.__wasm_call_ctors()});function a(v){for(var b=new Uint8Array(v.length),y=0;y<v.length;++y){var _=v.charCodeAt(y);b[y]=_>96?_-97:_>64?_-39:_+4}for(var C=0,y=0;y<v.length;++y)b[C++]=b[y]<60?i[b[y]]:(b[y]-60)*64+b[++y];return b.buffer.slice(0,C)}function c(v,b,y,_,C,S){var T=r.exports.sbrk,x=y+3&-4,M=T(x*_),P=T(C.length),k=new Uint8Array(r.exports.memory.buffer);k.set(C,P);var G=v(M,y,_,P,C.length);if(G==0&&S&&S(M,x,_),b.set(k.subarray(M,M+y*_)),T(M-T(0)),G!=0)throw new Error("Malformed buffer data: "+G)}var l={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},h={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},d=[],f=0;function p(v){var b={object:new Worker(v),pending:0,requests:{}};return b.object.onmessage=function(y){var _=y.data;b.pending-=_.count,b.requests[_.id][_.action](_.value),delete b.requests[_.id]},b}function g(v){for(var b="var instance; var ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(a(s))+"]), {}).then(function(result) { instance = result.instance; instance.exports.__wasm_call_ctors(); });self.onmessage = workerProcess;"+c.toString()+A.toString(),y=new Blob([b],{type:"text/javascript"}),_=URL.createObjectURL(y),C=0;C<v;++C)d[C]=p(_);URL.revokeObjectURL(_)}function m(v,b,y,_,C){for(var S=d[0],T=1;T<d.length;++T)d[T].pending<S.pending&&(S=d[T]);return new Promise(function(x,M){var P=new Uint8Array(y),k=f++;S.pending+=v,S.requests[k]={resolve:x,reject:M},S.object.postMessage({id:k,count:v,size:b,source:P,mode:_,filter:C},[P.buffer])})}function A(v){o.then(function(){var b=v.data;try{var y=new Uint8Array(b.count*b.size);c(r.exports[b.mode],y,b.count,b.size,b.source,r.exports[b.filter]),self.postMessage({id:b.id,count:b.count,action:"resolve",value:y},[y.buffer])}catch(_){self.postMessage({id:b.id,count:b.count,action:"reject",value:_})}})}return{ready:o,supported:!0,useWorkers:function(v){g(v)},decodeVertexBuffer:function(v,b,y,_,C){c(r.exports.meshopt_decodeVertexBuffer,v,b,y,_,r.exports[l[C]])},decodeIndexBuffer:function(v,b,y,_){c(r.exports.meshopt_decodeIndexBuffer,v,b,y,_)},decodeIndexSequence:function(v,b,y,_){c(r.exports.meshopt_decodeIndexSequence,v,b,y,_)},decodeGltfBuffer:function(v,b,y,_,C,S){c(r.exports[h[C]],v,b,y,_,r.exports[l[S]])},decodeGltfBufferAsync:function(v,b,y,_,C){return d.length>0?m(v,b,y,h[_],l[C]):o.then(function(){var S=new Uint8Array(v*b);return c(r.exports[h[_]],S,v,b,y,r.exports[l[C]]),S})}}}();const nf=ce("debugdecoders"),DR="https://www.gstatic.com/draco/versioned/decoders/1.4.1/",kR="https://www.gstatic.com/basis-universal/versioned/2021-04-15-ba1c3e4/";let ko,Sw,wl;function OR(n){n!==void 0&&typeof n=="string"&&(ko||(ko=new W1),nf&&console.log("Setting draco decoder path to",n),ko.setDecoderPath(n))}function LR(n){n!==void 0&&typeof n=="string"&&(ko||(ko=new W1),nf&&console.log("Setting draco decoder type to",n),ko.setDecoderConfig({type:n}))}function FR(n){n!==void 0&&typeof n=="string"&&(wl||(wl=new Lo),nf&&console.log("Setting ktx2 transcoder path to",n),wl.setTranscoderPath(n))}function _A(n,e){ko||(ko=new W1,ko.setDecoderPath(DR),ko.setDecoderConfig({type:"js"}),nf&&console.log("Setting draco decoder path to",DR)),wl||(wl=new Lo,wl.setTranscoderPath(kR),nf&&console.log("Setting ktx2 transcoder path to",kR),e.renderer&&wl.detectSupport(e.renderer)),Sw||(Sw=p7,nf&&console.log("Using the default meshopt decoder")),n.setDRACOLoader(ko),n.setKTX2Loader(wl),n.setMeshoptDecoder(Sw)}class g7{constructor(){u(this,"_context")}get context(){return this._context??_t.Current}get isStateMachineBehaviour(){return!0}}class n0{constructor(e,t,i,s){u(this,"_name");u(this,"_nameHash");u(this,"_normalizedTime");u(this,"_length");u(this,"_speed");this._name=e.name,this._nameHash=e.hash,this._normalizedTime=t,this._length=i,this._speed=s}get name(){return this._name}get nameHash(){return this._nameHash}get normalizedTime(){return this._normalizedTime}get length(){return this._length}get speed(){return this._speed}}function EF(n,e){return{name:"",isLooping:!1,guid:(e==null?void 0:e.generateUUID())??Fs.generateUUID(),index:-1,clip:new lo(n,1,[])}}var _l=(n=>(n[n.If=1]="If",n[n.IfNot=2]="IfNot",n[n.Greater=3]="Greater",n[n.Less=4]="Less",n[n.Equals=6]="Equals",n[n.NotEqual=7]="NotEqual",n))(_l||{}),J1=(n=>(n[n.Float=1]="Float",n[n.Int=3]="Int",n[n.Bool=4]="Bool",n[n.Trigger=9]="Trigger",n))(J1||{});const Ko=ce("debuganimatorcontroller"),ry=ce("debugrootmotion");class mu{constructor(e){u(this,"normalizedStartOffset",0);u(this,"_speed",1);u(this,"animator");u(this,"model");u(this,"_mixer");u(this,"_activeState");u(this,"_activeStates",[]);u(this,"rootMotionHandler");this.model=e,Ko&&console.log(this)}play(e,t=-1,i=Number.NEGATIVE_INFINITY,s=0){if(t<0)t=0;else if(t>=this.model.layers.length){console.warn("invalid layer");return}const o=this.model.layers[t].stateMachine;for(const a of o.states)if(a.name===e||a.hash===e){Ko&&console.log("transition to ",a),this.transitionTo(a,s,i);return}console.warn("Could not find "+e+" to play")}reset(){this.setStartTransition()}setBool(e,t){var s,r;const i=typeof e=="string"?"name":"hash";return(r=(s=this.model)==null?void 0:s.parameters)==null?void 0:r.filter(o=>o[i]===e).forEach(o=>o.value=t)}getBool(e){var i,s,r;const t=typeof e=="string"?"name":"hash";return((r=(s=(i=this.model)==null?void 0:i.parameters)==null?void 0:s.find(o=>o[t]===e))==null?void 0:r.value)??!1}setFloat(e,t){var s,r;const i=typeof e=="string"?"name":"hash";return(r=(s=this.model)==null?void 0:s.parameters)==null?void 0:r.filter(o=>o[i]===e).forEach(o=>o.value=t)}getFloat(e){var i,s,r;const t=typeof e=="string"?"name":"hash";return((r=(s=(i=this.model)==null?void 0:i.parameters)==null?void 0:s.find(o=>o[t]===e))==null?void 0:r.value)??0}setInteger(e,t){var s,r;const i=typeof e=="string"?"name":"hash";return(r=(s=this.model)==null?void 0:s.parameters)==null?void 0:r.filter(o=>o[i]===e).forEach(o=>o.value=t)}getInteger(e){var i,s,r;const t=typeof e=="string"?"name":"hash";return((r=(s=(i=this.model)==null?void 0:i.parameters)==null?void 0:s.find(o=>o[t]===e))==null?void 0:r.value)??0}setTrigger(e){var i,s;Ko&&console.log("SET TRIGGER",e);const t=typeof e=="string"?"name":"hash";return(s=(i=this.model)==null?void 0:i.parameters)==null?void 0:s.filter(r=>r[t]===e).forEach(r=>r.value=!0)}resetTrigger(e){var i,s;const t=typeof e=="string"?"name":"hash";return(s=(i=this.model)==null?void 0:i.parameters)==null?void 0:s.filter(r=>r[t]===e).forEach(r=>r.value=!1)}isInTransition(){return this._activeStates.length>1}setSpeed(e){this._speed=e}FindState(e){return this.findState(e)}findState(e){if(!e)return null;if(Array.isArray(this.model.layers)){for(const t of this.model.layers)for(const i of t.stateMachine.states)if(i.name===e)return i}return null}get context(){var e;return(e=this.animator)==null?void 0:e.context}bind(e){this.animator=e,this._mixer=new Y_(this.animator.gameObject),this.createActions(this.animator)}clone(){if(typeof this.model=="string")return console.warn("AnimatorController has not been resolved, can not create model from string",this.model),null;const e=w_(this.model,(i,s,r)=>r==null?!0:!(r.type==="Object3D"||r.isObject3D===!0||aO(r)||r.tracks!==void 0));return console.assert(e!==this.model),new mu(e)}update(){var t,i;if(!this.animator||(this.evaluateTransitions(),this.updateActiveStates(),!this._activeState))return;const e=this.animator.context.time.deltaTime;this.animator.applyRootMotion&&((t=this.rootMotionHandler)==null||t.onBeforeUpdate()),this._mixer.update(e),this.animator.applyRootMotion&&((i=this.rootMotionHandler)==null||i.onAfterUpdate())}updateActiveStates(){for(let e=0;e<this._activeStates.length;e++){const t=this._activeStates[e],i=t.motion;if(!i.action)this._activeStates.splice(e,1),e--;else{const s=i.action;s.getEffectiveWeight()<=0&&!s.isRunning()&&(Ko&&console.debug("REMOVE",t.name,s.getEffectiveWeight(),s.isRunning(),s.isScheduled()),this._activeStates.splice(e,1),e--)}}}setStartTransition(){for(const e of this.model.layers){const t=e.stateMachine;t.defaultState===void 0&&(Ko&&console.warn("AnimatorController default state is undefined, will assign state 0 as default",e),t.defaultState=0);const i=t.states[t.defaultState];this.transitionTo(i,0,this.normalizedStartOffset)}}evaluateTransitions(){var r;let e=!1;if(!this._activeState){if(this.setStartTransition(),!this._activeState)return;e=!0}const t=this._activeState,i=t.motion.action;for(const o of t.transitions){if(!o.hasExitTime&&o.conditions.length<=0)continue;let a=!0;for(const c of o.conditions)if(!this.evaluateCondition(c)){a=!1;break}if(a){for(const c of o.conditions){const l=this.model.parameters.find(h=>h.name===c.parameter);(l==null?void 0:l.type)===J1.Trigger&&(l.value=!1)}if(i){const c=t.motion.clip.duration,l=c<=0?1:Math.abs(i.time/c);let h=!1;if(o.hasExitTime?i.timeScale>0?h=l>=o.exitTime:i.timeScale<0&&(h=1-l>=o.exitTime):h=!0,h){i.clampWhenFinished=!0,Ko&&console.log("transition to "+o.destinationState,o,l,o.exitTime,o.hasExitTime),this.transitionTo(o.destinationState,o.duration,o.offset);return}}else{this.transitionTo(o.destinationState,o.duration,o.offset);return}}}let s=!1;if(t.motion.isLooping&&i&&(i.time>=i.getClip().duration?(s=!0,i.reset(),i.time=0,i.play()):i.time<=0&&i.timeScale<0&&(s=!0,i.reset(),i.time=i.getClip().duration,i.play())),!s&&t&&!e&&i&&this.animator&&t.behaviours){const o=i==null?void 0:i.getClip().duration,a=i.time/o,c=new n0(this._activeState,a,o,this._speed);for(const l of t.behaviours)l.instance&&((r=l.instance.onStateUpdate)==null||r.call(l.instance,this.animator,c,0))}}getState(e,t){return typeof e=="number"&&(e==-1&&(e=this.model.layers[t].stateMachine.defaultState,e===void 0&&(Ko&&console.warn("AnimatorController default state is undefined: ",this.model,"Layer: "+t),e=0)),e=this.model.layers[t].stateMachine.states[e]),e}transitionTo(e,t,i){var l,h,d,f,p,g,m,A;if(!this.animator)return;const s=0;if(e=this.getState(e,s),!(e!=null&&e.motion)||!e.motion.clip)return;const r=this._activeState===e;if(r){const v=e.motion;!v.action_loopback&&v.clip&&(this._mixer.uncacheAction(v.clip,this.animator.gameObject),v.action_loopback=this.createAction(v.clip))}if((l=this._activeState)!=null&&l.behaviours&&this._activeState.motion.action){const v=(h=this._activeState)==null?void 0:h.motion.clip.duration,b=this._activeState.motion.action.time/v,y=new n0(this._activeState,b,v,this._speed);for(const _ of this._activeState.behaviours)(f=(d=_.instance)==null?void 0:d.onStateExit)==null||f.call(_.instance,this.animator,y,s)}const o=(p=this._activeState)==null?void 0:p.motion.action;o&&o.fadeOut(t),r&&(e.motion.action=e.motion.action_loopback,e.motion.action_loopback=o);const a=this._activeState;this._activeState=e;const c=(g=e.motion)==null?void 0:g.action;if(c){i=Math.max(0,Math.min(1,i)),c.isRunning()&&c.stop(),c.reset(),c.timeScale=this._speed,e.speed!==void 0&&(c.timeScale*=e.speed),c.enabled=!0;const v=e.motion.clip.duration;if(c.time=i*v,c.timeScale<0&&(c.time=v-c.time),c.clampWhenFinished=!0,c.setLoop(om,0),t>0?c.fadeIn(t):c.setEffectiveWeight(1),c.play(),this.rootMotionHandler&&this.rootMotionHandler.onStart(c),this._activeStates.includes(e)||this._activeStates.push(e),this._activeState.behaviours){const b=new n0(e,i,v,this._speed);for(const y of this._activeState.behaviours)(A=(m=y.instance)==null?void 0:m.onStateEnter)==null||A.call(y.instance,this.animator,b,s)}}else Ko&&(e.__warned_no_motion||(e.__warned_no_motion=!0,console.warn("No action",e.motion,this)));Ko&&console.log("TRANSITION FROM "+(a==null?void 0:a.name)+" TO "+e.name,t,o,c,c==null?void 0:c.getEffectiveTimeScale(),c==null?void 0:c.getEffectiveWeight(),c==null?void 0:c.isRunning(),c==null?void 0:c.isScheduled(),c==null?void 0:c.paused)}createAction(e){var i,s;if(this._mixer.existingAction(e)&&this._mixer.uncacheAction(e,(i=this.animator)==null?void 0:i.gameObject),(s=this.animator)!=null&&s.applyRootMotion){this.rootMotionHandler||(this.rootMotionHandler=new m7(this));const r=this.animator.gameObject;return this.rootMotionHandler.createClip(this._mixer,r,e)}else return this._mixer.clipAction(e)}evaluateCondition(e){const t=this.model.parameters.find(i=>i.name===e.parameter);if(!t)return!1;switch(e.mode){case _l.If:return t.value===!0;case _l.IfNot:return t.value===!1;case _l.Greater:return t.value>e.threshold;case _l.Less:return t.value<e.threshold;case _l.Equals:return t.value===e.threshold;case _l.NotEqual:return t.value!==e.threshold}return!1}createActions(e){var t,i;for(const s of this.model.layers){const r=s.stateMachine;for(let o=0;o<r.states.length;o++){const a=r.states[o];a.transitions||(a.transitions=[]);for(const c of a.transitions)c.conditions||(c.conditions=[]);if(a.motion||(a.motion=EF(a.name)),this.animator&&a.motion.clips){const c=(t=a.motion.clips)==null?void 0:t.find(l=>{var h,d;return l.node.name===((d=(h=this.animator)==null?void 0:h.gameObject)==null?void 0:d.name)});a.motion.clip=c==null?void 0:c.clip}if(!a.motion.clip){const c=new lo(void 0,void 0,[]);a.motion.clip=c}if((i=a.motion)!=null&&i.clip){const c=a.motion.clip,l=this.createAction(c);a.motion.action=l}if(a.behaviours&&Array.isArray(a.behaviours))for(const c of a.behaviours){if(!(c!=null&&c.typeName))continue;const l=Q.get(c.typeName),h=new l;h.isStateMachineBehaviour&&(h._context=this.context??void 0,pu(h,c.properties),c.instance=h),Ko&&console.log("Created animator controller behaviour",a.name,c.typeName,c.properties,h)}}}}*enumerateActions(){for(const e of this.model.layers){const t=e.stateMachine;for(let i=0;i<t.states.length;i++){const s=t.states[i];s!=null&&s.motion&&(s.motion.action&&(yield s.motion.action),s.motion.action_loopback&&(yield s.motion.action_loopback))}}}}class UR{constructor(e,t){u(this,"track");u(this,"createdInterpolant");u(this,"originalEvaluate");u(this,"customEvaluate");this.track=e;const i=e,s=i.createInterpolant.bind(e);i.createInterpolant=()=>(i.createInterpolant=s,this.createdInterpolant=s(),this.originalEvaluate=this.createdInterpolant.evaluate.bind(this.createdInterpolant),this.customEvaluate=r=>{if(!this.originalEvaluate)return;const o=this.originalEvaluate(r);return t(r,o)},this.createdInterpolant.evaluate=this.customEvaluate,this.createdInterpolant)}evaluate(e){this.customEvaluate&&this.customEvaluate(e)}dispose(){this.createdInterpolant&&this.originalEvaluate&&(this.createdInterpolant.evaluate=this.originalEvaluate),this.track=void 0,this.createdInterpolant=null,this.originalEvaluate=void 0,this.customEvaluate=void 0}}const gn=class{constructor(e,t,i,s,r){u(this,"_action");u(this,"root");u(this,"clip");u(this,"positionWrapper",null);u(this,"rotationWrapper",null);u(this,"context");u(this,"positionChange",new E);u(this,"rotationChange",new xe);if(this.context=e,this.root=t,this.clip=i,gn.firstKeyframeRotation[i.uuid]||(gn.firstKeyframeRotation[i.uuid]=new xe),r){const o=r.values;gn.firstKeyframeRotation[i.uuid].set(o[0],o[1],o[2],o[3])}gn.spaceRotation[i.uuid]||(gn.spaceRotation[i.uuid]=new xe),gn.effectiveSpaceRotation[i.uuid]||(gn.effectiveSpaceRotation[i.uuid]=new xe),gn.clipOffsetRotation[i.uuid]=new xe,r&&gn.clipOffsetRotation[i.uuid].set(r.values[0],r.values[1],r.values[2],r.values[3]).invert(),this.handlePosition(i,s),this.handleRotation(i,r)}set action(e){this._action=e}get action(){return this._action}onStart(e){if(e.getClip()!==this.clip)return;const t=gn.lastObjRotation[this.root.uuid];if(gn.spaceRotation[this.clip.uuid].copy(t),ry){const i=new _n().setFromQuaternion(t);console.log("START",this.clip.name,Ze.toDegrees(i.y))}}getClipRotationOffset(){return gn.clipOffsetRotation[this.clip.uuid]}handlePosition(e,t){if(t){const i=this.root;ry&&i.add(new Nf),gn.lastObjPosition[i.uuid]||(gn.lastObjPosition[i.uuid]=new E);const s=new E,r=new E;let o=0;this.positionWrapper=new UR(t,(a,c)=>{const l=this.action.getEffectiveWeight();if(ry&&i.position.length()>8&&i.position.set(0,i.position.y,0),a>o){s.set(c[0],c[1],c[2]),s.sub(r),s.multiplyScalar(l),s.applyQuaternion(this.getClipRotationOffset());const h=this.clip.uuid;s.applyQuaternion(gn.spaceRotation[h]),this.positionChange.copy(s)}return r.fromArray(c),o=a,c[0]=0,c[1]=0,c[2]=0,c})}}handleRotation(e,t){if(t){if(ry){const a=t.values,c=new _n().setFromQuaternion(new xe(a[0],a[1],a[2],a[3]));console.log(e.name,t.name,"FIRST ROTATION IN TRACK",Ze.toDegrees(c.y));const l=t.values.length-4,h=new xe().set(a[l],a[l+1],a[l+2],a[l+3]),d=new _n().setFromQuaternion(h);console.log(e.name,t.name,"LAST ROTATION IN TRACK",Ze.toDegrees(d.y))}const i=this.root;gn.lastObjRotation[i.uuid]||(gn.lastObjRotation[i.uuid]=new xe);let s=0;const r=new xe,o=new xe;this.rotationWrapper=new UR(t,(a,c)=>(a>s&&(o.set(c[0],c[1],c[2],c[3]),r.invert(),o.multiply(r),this.rotationChange.copy(o)),r.fromArray(c),s=a,c[0]=0,c[1]=0,c[2]=0,c[3]=1,c))}}onBeforeUpdate(){this.positionChange.set(0,0,0),this.rotationChange.set(0,0,0,1)}onAfterUpdate(){if(!this.action)return;const e=this.action.getEffectiveWeight();this.positionChange.multiplyScalar(e),this.rotationChange.slerp(gn.identityQuaternion,1-e)}};let Io=gn;u(Io,"lastObjPosition",{}),u(Io,"lastObjRotation",{}),u(Io,"firstKeyframeRotation",{}),u(Io,"spaceRotation",{}),u(Io,"effectiveSpaceRotation",{}),u(Io,"clipOffsetRotation",{}),u(Io,"identityQuaternion",new xe);class m7{constructor(e){u(this,"controller");u(this,"handler",[]);u(this,"root");u(this,"summedPosition",new E);u(this,"summedRotation",new xe);this.controller=e}createClip(e,t,i){this.root=t,t&&"name"in t&&t.name;const s=this.findRootTrack(i,".position"),r=this.findRootTrack(i,".quaternion"),o=new Io(this.controller.context,t,i,s,r);this.handler.push(o);const a=e.clipAction(i);return o.action=a,a}onStart(e){for(const t of this.handler)t.onStart(e)}onBeforeUpdate(){for(const e of this.handler)e.onBeforeUpdate()}onAfterUpdate(){this.summedPosition.set(0,0,0),this.summedRotation.set(0,0,0,1);for(const e of this.handler)e.onAfterUpdate(),this.summedPosition.add(e.positionChange),this.summedRotation.multiply(e.rotationChange);this.root.position.add(this.summedPosition),this.root.quaternion.multiply(this.summedRotation),Io.lastObjRotation[this.root.uuid].copy(this.root.quaternion)}findRootTrack(e,t){const i=e.tracks;if(!i)return null;for(const s of i)if(s.name.endsWith(t))return s;return null}}const Wf=function(n){return w(n)},w=function(n){if(n===void 0&&(n=null),!Array.isArray(n))n=NR(n);else for(let e=0;e<n.length;e++){const t=n[e];n[e]=NR(t)}return function(e,t){Object.getOwnPropertyDescriptor(e,"$serializedTypes")||(e.$serializedTypes={});const i=e.$serializedTypes=e.$serializedTypes||{};i[t]=n}};function NR(n){var e,t;switch((t=(e=n==null?void 0:n.prototype)==null?void 0:e.constructor)==null?void 0:t.name){case"Number":case"String":case"Boolean":return null}return n}var A7=Object.defineProperty,v7=Object.getOwnPropertyDescriptor,Ab=(n,e,t,i)=>{for(var s=i>1?void 0:i?v7(e,t):e,r=n.length-1,o;r>=0;r--)(o=n[r])&&(s=(i?o(e,t,s):o(s))||s);return i&&s&&A7(e,t,s),s};const Ew=ce("debuganimator");class ar extends Ce{constructor(){super(...arguments);u(this,"applyRootMotion",!1);u(this,"hasRootMotion",!1);u(this,"keepAnimatorControllerStateOnDisable",!1);u(this,"speed",1);u(this,"normalizedStartOffset",0);u(this,"_animatorController",null)}set runtimeAnimatorController(t){this._animatorController&&this._animatorController.model===t||(t?t instanceof mu?this._animatorController=t:(Ew&&console.log("Assign animator controller",t,this),this._animatorController=new mu(t)):this._animatorController=null)}get runtimeAnimatorController(){return this._animatorController}Play(t,i=-1,s=Number.NEGATIVE_INFINITY,r=0){this.play(t,i,s,r)}play(t,i=-1,s=Number.NEGATIVE_INFINITY,r=0){var o;(o=this.runtimeAnimatorController)==null||o.play(t,i,s,r)}Reset(){this.reset()}reset(){var t;(t=this._animatorController)==null||t.reset()}SetBool(t,i){this.setBool(t,i)}setBool(t,i){var s;(s=this.runtimeAnimatorController)==null||s.setBool(t,i)}GetBool(t){return this.getBool(t)}getBool(t){var i;return((i=this.runtimeAnimatorController)==null?void 0:i.getBool(t))??!1}SetFloat(t,i){this.setFloat(t,i)}setFloat(t,i){var s;(s=this.runtimeAnimatorController)==null||s.setFloat(t,i)}GetFloat(t){return this.getFloat(t)}getFloat(t){var i;return((i=this.runtimeAnimatorController)==null?void 0:i.getFloat(t))??-1}SetInteger(t,i){this.setInteger(t,i)}setInteger(t,i){var s;(s=this.runtimeAnimatorController)==null||s.setInteger(t,i)}GetInteger(t){return this.getInteger(t)}getInteger(t){var i;return((i=this.runtimeAnimatorController)==null?void 0:i.getInteger(t))??-1}SetTrigger(t){this.setTrigger(t)}setTrigger(t){var i;Ew&&console.log("SetTrigger",t),(i=this.runtimeAnimatorController)==null||i.setTrigger(t)}ResetTrigger(t){this.resetTrigger(t)}resetTrigger(t){var i;(i=this.runtimeAnimatorController)==null||i.resetTrigger(t)}IsInTransition(){return this.isInTransition()}isInTransition(){var t;return((t=this.runtimeAnimatorController)==null?void 0:t.isInTransition())??!1}SetSpeed(t){return this.setSpeed(t)}setSpeed(t){var i;t!==this.speed&&(this.speed=t,(i=this._animatorController)==null||i.setSpeed(t))}set minMaxSpeed(t){this.speed=Ze.lerp(t.x,t.y,Math.random())}set minMaxOffsetNormalized(t){this.normalizedStartOffset=Ze.lerp(t.x,t.y,Math.random()),this.runtimeAnimatorController&&(this.runtimeAnimatorController.normalizedStartOffset=this.normalizedStartOffset)}awake(){if(Ew&&console.log("ANIMATOR",this.name,this),!!this.gameObject&&this.runtimeAnimatorController){const t=this.runtimeAnimatorController.clone();t?(console.assert(this.runtimeAnimatorController!==t),this.runtimeAnimatorController=t,console.assert(this.runtimeAnimatorController===t),this.runtimeAnimatorController.bind(this),this.runtimeAnimatorController.setSpeed(this.speed),this.runtimeAnimatorController.normalizedStartOffset=this.normalizedStartOffset):console.warn("Could not clone animator controller",this.runtimeAnimatorController)}}onDisable(){var t;this.keepAnimatorControllerStateOnDisable||(t=this._animatorController)==null||t.reset()}onBeforeRender(){this._animatorController&&this._animatorController.update()}}Ab([w()],ar.prototype,"applyRootMotion",2);Ab([w()],ar.prototype,"hasRootMotion",2);Ab([w()],ar.prototype,"keepAnimatorControllerStateOnDisable",2);Ab([w()],ar.prototype,"runtimeAnimatorController",1);var y7=Object.defineProperty,_7=Object.getOwnPropertyDescriptor,bA=(n,e,t,i)=>{for(var s=i>1?void 0:i?_7(e,t):e,r=n.length-1,o;r>=0;r--)(o=n[r])&&(s=(i?o(e,t,s):o(s))||s);return i&&s&&y7(e,t,s),s};const hl=ce("debuganimation");class Uo extends Ce{constructor(){super(...arguments);u(this,"playAutomatically",!0);u(this,"randomStartTime",!0);u(this,"minMaxSpeed");u(this,"minMaxOffsetNormalized");u(this,"loop",!0);u(this,"clampWhenFinished",!1);u(this,"_tempAnimationClipBeforeGameObjectExisted",null);u(this,"mixer");u(this,"_actions",[]);u(this,"_currentActions",[]);u(this,"_handles",[]);u(this,"_didInit",!1)}get clip(){var t;return(t=this.animations)!=null&&t.length?this.animations[0]:null}set clip(t){if(!this.__didAwake){hl&&console.log("Assign clip during serialization",t),this._tempAnimationClipBeforeGameObjectExisted=t;return}t&&(hl&&console.log("Assign clip",t,!!this.gameObject),this.gameObject.animations||(this.gameObject.animations=[]),!this.animations.includes(t)&&(this.animations.length>0?this.animations.splice(0,0,t):this.animations.push(t)))}set clips(t){this.animations=t}set animations(t){hl&&console.log("assign animations",t),this.gameObject.animations=t}get animations(){return this.gameObject.animations}get currentAction(){return this._currentActions[0]}get currentActions(){return this._currentActions}get actions(){return this._actions}set actions(t){this._actions=t}awake(){hl&&console.log(this),this._tempAnimationClipBeforeGameObjectExisted&&(this.clip=this._tempAnimationClipBeforeGameObjectExisted,this._tempAnimationClipBeforeGameObjectExisted=null),this.playAutomatically&&this.init()}onEnable(){var t;if(this.playAutomatically&&((t=this.animations)==null?void 0:t.length)>0&&this.currentActions.length<=0){const i=Math.floor(Math.random()*this.actions.length);this.play(i)}}start(){this.randomStartTime&&this.currentAction&&(this.currentAction.time=Math.random()*this.currentAction.getClip().duration)}update(){this.mixer&&this.mixer.update(this.context.time.deltaTime)}getAction(t){var i;return(i=this.actions)==null?void 0:i.find(s=>s.getClip().name===t)}get isPlaying(){for(let t=0;t<this._currentActions.length;t++)if(this._currentActions[t].isRunning())return!0;return!1}play(t=0,i){if(hl&&console.log("PLAY",t),this.init(),!this.mixer){hl&&console.warn("Missing mixer",this);return}t===void 0&&(t=0);let s=t;if(typeof t=="number"){if(t>=this.animations.length){hl&&console.log("No animation at index",t);return}s=this.animations[t]}else typeof t=="string"&&(s=this.animations.find(o=>o.name===t));if(!s){console.error("Could not find clip",t);return}i||(i={}),i.minMaxOffsetNormalized||(i.minMaxOffsetNormalized=this.minMaxOffsetNormalized),i.minMaxSpeed||(i.minMaxSpeed=this.minMaxSpeed),i.loop===void 0&&(i.loop=this.loop),i.clampWhenFinished===void 0&&(i.clampWhenFinished=this.clampWhenFinished);for(const o of this.actions)if(o.getClip()===s)return this.internalOnPlay(o,i);if(!(s instanceof lo)){console.warn("Clip is no AnimationClip",s,"on object: "+this.name);return}const r=this.mixer.clipAction(s);return this.actions.push(r),this.internalOnPlay(r,i)}internalOnPlay(t,i){var s=this.currentAction;if(s===t&&s.isRunning()&&s.time<s.getClip().duration){const c=this.tryFindHandle(t);if(c)return c.getPromise()}const r=(i==null?void 0:i.exclusive)??!0;i!=null&&i.fadeDuration?(r&&(s==null||s.fadeOut(i.fadeDuration)),t.fadeIn(i.fadeDuration)):r&&(s==null||s.stop()),t.reset(),t.enabled=!0,t.time=0,t.timeScale=1;const o=t.getClip();i!=null&&i.minMaxOffsetNormalized&&(t.time=Ze.lerp(i.minMaxOffsetNormalized.x,i.minMaxOffsetNormalized.y,Math.random())*o.duration),i!=null&&i.minMaxSpeed&&(t.timeScale=Ze.lerp(i.minMaxSpeed.x,i.minMaxSpeed.y,Math.random())),i!=null&&i.clampWhenFinished&&(t.clampWhenFinished=!0),(i==null?void 0:i.startTime)!==void 0&&(t.time=i.startTime),(i==null?void 0:i.loop)!==void 0?t.loop=i.loop?DE:om:t.loop=om,t.play(),hl&&console.log("PLAY",t.getClip().name,t);const a=new b7(t,this.mixer,i,c=>{this._handles.splice(this._handles.indexOf(a),1)});return this._handles.push(a),a.getPromise()}tryFindHandle(t){for(const i of this._handles)if(i.action===t)return i}init(){this._didInit||(this._didInit=!0,this.gameObject&&(this.actions=[],this.mixer=new Y_(this.gameObject)))}}bA([w()],Uo.prototype,"playAutomatically",2);bA([w()],Uo.prototype,"randomStartTime",2);bA([w()],Uo.prototype,"loop",2);bA([w()],Uo.prototype,"clampWhenFinished",2);bA([w(lo)],Uo.prototype,"clips",1);class b7{constructor(e,t,i,s){u(this,"mixer");u(this,"action");u(this,"promise",null);u(this,"resolve",null);u(this,"reject",null);u(this,"_options");u(this,"_resolveCallback",null);u(this,"_rejectCallback",null);u(this,"_loopCallback");u(this,"_finishedCallback");u(this,"_resolvedOrRejectedCallback");this.action=e,this.mixer=t,this._resolvedOrRejectedCallback=s,this._options=i}getPromise(){return this.promise?this.promise:(this.promise=new Promise((e,t)=>{this._resolveCallback=e,this._rejectCallback=t,this.resolve=this.onResolve.bind(this),this.reject=this.onReject.bind(this)}),this._loopCallback=this.onLoop.bind(this),this._finishedCallback=this.onFinished.bind(this),this.mixer.addEventListener("loop",this._loopCallback),this.mixer.addEventListener("finished",this._finishedCallback),this.promise)}_update(){this._options&&this._options.endTime!==void 0&&this.action.time>this._options.endTime&&(this._options.loop===!0?this.action.time=this._options.startTime??0:(this.action.time=this._options.endTime,this.action.timeScale=0,this.onResolve()))}onResolve(){var e,t;this.dispose(),(e=this._resolvedOrRejectedCallback)==null||e.call(this,this),(t=this._resolveCallback)==null||t.call(this,this.action)}onReject(e){var t,i;this.dispose(),(t=this._resolvedOrRejectedCallback)==null||t.call(this,this),(i=this._rejectCallback)==null||i.call(this,e)}onLoop(e){}onFinished(e){e.action===this.action&&this.onResolve()}dispose(){this._loopCallback&&this.mixer.removeEventListener("loop",this._loopCallback),this._finishedCallback&&this.mixer.removeEventListener("finished",this._finishedCallback),this._loopCallback=void 0,this._finishedCallback=void 0}}class qf extends Cs{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.animationPointerResolver=null,this.pluginCallbacks=[],this.register(function(t){return new E7(t)}),this.register(function(t){return new k7(t)}),this.register(function(t){return new O7(t)}),this.register(function(t){return new T7(t)}),this.register(function(t){return new P7(t)}),this.register(function(t){return new R7(t)}),this.register(function(t){return new B7(t)}),this.register(function(t){return new S7(t)}),this.register(function(t){return new D7(t)}),this.register(function(t){return new M7(t)}),this.register(function(t){return new w7(t)}),this.register(function(t){return new L7(t)}),this.register(function(t){return new F7(t)}),this.register(function(t){return new I7(t)})}load(e,t,i,s){const r=this;let o;this.resourcePath!==""?o=this.resourcePath:this.path!==""?o=this.path:o=Ca.extractUrlBase(e),this.manager.itemStart(e);const a=function(l){s?s(l):console.error(l),r.manager.itemError(e),r.manager.itemEnd(e)},c=new Rn(this.manager);c.setPath(this.path),c.setResponseType("arraybuffer"),c.setRequestHeader(this.requestHeader),c.setWithCredentials(this.withCredentials),c.load(e,function(l){try{r.parse(l,o,function(h){t(h),r.manager.itemEnd(e)},a)}catch(h){a(h)}},i,a)}setDRACOLoader(e){return this.dracoLoader=e,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}setAnimationPointerResolver(e){return this.animationPointerResolver=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,i,s){let r;const o={},a={};if(typeof e=="string")r=JSON.parse(e);else if(e instanceof ArrayBuffer)if(Ca.decodeText(new Uint8Array(e,0,4))===IF){try{o[zt.KHR_BINARY_GLTF]=new U7(e)}catch(h){s&&s(h);return}r=JSON.parse(o[zt.KHR_BINARY_GLTF].content)}else r=JSON.parse(Ca.decodeText(new Uint8Array(e)));else r=e;if(r.asset===void 0||r.asset.version[0]<2){s&&s(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const c=new Y7(r,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder,animationPointerResolver:this.animationPointerResolver});c.fileLoader.setRequestHeader(this.requestHeader);for(let l=0;l<this.pluginCallbacks.length;l++){const h=this.pluginCallbacks[l](c);a[h.name]=h,o[h.name]=!0}if(r.extensionsUsed)for(let l=0;l<r.extensionsUsed.length;++l){const h=r.extensionsUsed[l],d=r.extensionsRequired||[];switch(h){case zt.KHR_MATERIALS_UNLIT:o[h]=new C7;break;case zt.KHR_DRACO_MESH_COMPRESSION:o[h]=new N7(r,this.dracoLoader);break;case zt.KHR_TEXTURE_TRANSFORM:o[h]=new z7;break;case zt.KHR_MESH_QUANTIZATION:o[h]=new G7;break;default:d.indexOf(h)>=0&&a[h]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+h+'".')}}c.setExtensions(o),c.setPlugins(a),c.parse(i,s)}parseAsync(e,t){const i=this;return new Promise(function(s,r){i.parse(e,t,s,r)})}}function x7(){let n={};return{get:function(e){return n[e]},add:function(e,t){n[e]=t},remove:function(e){delete n[e]},removeAll:function(){n={}}}}const zt={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",KHR_ANIMATION_POINTER:"KHR_animation_pointer",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class w7{constructor(e){this.parser=e,this.name=zt.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let i=0,s=t.length;i<s;i++){const r=t[i];r.extensions&&r.extensions[this.name]&&r.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,r.extensions[this.name].light)}}_loadLight(e){const t=this.parser,i="light:"+e;let s=t.cache.get(i);if(s)return s;const r=t.json,c=((r.extensions&&r.extensions[this.name]||{}).lights||[])[e];let l;const h=new _e(16777215);c.color!==void 0&&h.fromArray(c.color);const d=c.range!==void 0?c.range:0;switch(c.type){case"directional":l=new j_(h),l.target.position.set(0,0,-1),l.add(l.target);break;case"point":l=new V_(h),l.distance=d;break;case"spot":l=new H_(h),l.distance=d,c.spot=c.spot||{},c.spot.innerConeAngle=c.spot.innerConeAngle!==void 0?c.spot.innerConeAngle:0,c.spot.outerConeAngle=c.spot.outerConeAngle!==void 0?c.spot.outerConeAngle:Math.PI/4,l.angle=c.spot.outerConeAngle,l.penumbra=1-c.spot.innerConeAngle/c.spot.outerConeAngle,l.target.position.set(0,0,-1),l.add(l.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+c.type)}return l.position.set(0,0,0),l.decay=2,bl(l,c),c.intensity!==void 0&&(l.intensity=c.intensity),l.name=t.createUniqueName(c.name||"light_"+e),s=Promise.resolve(l),t.cache.add(i,s),s}getDependency(e,t){if(e==="light")return this._loadLight(t)}createNodeAttachment(e){const t=this,i=this.parser,r=i.json.nodes[e],a=(r.extensions&&r.extensions[this.name]||{}).light;return a===void 0?null:this._loadLight(a).then(function(c){return i._getNodeRef(t.cache,a,c)})}}let C7=class{constructor(){this.name=zt.KHR_MATERIALS_UNLIT}getMaterialType(){return vi}extendParams(e,t,i){const s=[];e.color=new _e(1,1,1),e.opacity=1;const r=t.pbrMetallicRoughness;if(r){if(Array.isArray(r.baseColorFactor)){const o=r.baseColorFactor;e.color.fromArray(o),e.opacity=o[3]}r.baseColorTexture!==void 0&&s.push(i.assignTexture(e,"map",r.baseColorTexture,yt))}return Promise.all(s)}};class S7{constructor(e){this.parser=e,this.name=zt.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){const s=this.parser.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const r=s.extensions[this.name].emissiveStrength;return r!==void 0&&(t.emissiveIntensity=r),Promise.resolve()}}let E7=class{constructor(e){this.parser=e,this.name=zt.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const i=this.parser.json.materials[e];return!i.extensions||!i.extensions[this.name]?null:Da}extendMaterialParams(e,t){const i=this.parser,s=i.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const r=[],o=s.extensions[this.name];if(o.clearcoatFactor!==void 0&&(t.clearcoat=o.clearcoatFactor),o.clearcoatTexture!==void 0&&r.push(i.assignTexture(t,"clearcoatMap",o.clearcoatTexture)),o.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=o.clearcoatRoughnessFactor),o.clearcoatRoughnessTexture!==void 0&&r.push(i.assignTexture(t,"clearcoatRoughnessMap",o.clearcoatRoughnessTexture)),o.clearcoatNormalTexture!==void 0&&(r.push(i.assignTexture(t,"clearcoatNormalMap",o.clearcoatNormalTexture)),o.clearcoatNormalTexture.scale!==void 0)){const a=o.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new q(a,a)}return Promise.all(r)}};class I7{constructor(e){u(this,"ANIMATION_TARGET_TYPE",{node:"node",material:"material",camera:"camera",light:"light"});u(this,"_animationPointerDebug",!1);u(this,"_havePatchedPropertyBindings",!1);this.parser=e,this.name=zt.KHR_ANIMATION_POINTER}_patchPropertyBindingFindNode(){if(this._havePatchedPropertyBindings)return;this._havePatchedPropertyBindings=!0;const e=Nt.findNode;Nt.findNode=(t,i)=>{if(i.startsWith(".materials.")){this._animationPointerDebug&&console.log("FIND",i);const s=i.substring(11).substring(i.indexOf(".")),r=s.indexOf("."),o=r<0?s:s.substring(0,r);let a=null;return t.traverse(c=>{var l,h;a!==null||c.type!=="Mesh"||(((l=c.material)==null?void 0:l.uuid)===o||((h=c.material)==null?void 0:h.name)===o)&&(a=c.material,this._animationPointerDebug&&console.log(a,s),a!==null&&(s.endsWith(".map")?a=a.map:s.endsWith(".emissiveMap")&&(a=a.emissiveMap)))}),a}else if(i.startsWith(".nodes.")||i.startsWith(".lights.")||i.startsWith(".cameras.")){const s=i.split(".");let r;for(let o=1;o<s.length;o++){const a=s[o];if(a.length==36)r=t.getObjectByProperty("uuid",a);else if(r&&r[a]){const l=Number.parseInt(a);let h=a;l>=0&&(h=l),r=r[h],this._animationPointerDebug&&console.log(r)}else{const l=t.getObjectByName(a);l&&(r=l)}}if(!r){const o=e(t,s[2]);return o||console.warn(zt.KHR_ANIMATION_POINTER+": Property binding not found",i,t,t.name,s),o}return this._animationPointerDebug&&console.log("NODE",i,r),r}return e(t,i)}}loadAnimationTargetFromChannel(e){this._havePatchedPropertyBindings||this._patchPropertyBindingFindNode();const t=e.target,i=t.extensions&&t.extensions[zt.KHR_ANIMATION_POINTER]&&t.path&&t.path==="pointer";if(!i)return null;let s,r=this.ANIMATION_TARGET_TYPE.node,o;if(i){const c=t.extensions[zt.KHR_ANIMATION_POINTER];let l=c.pointer;if(this._animationPointerDebug&&console.log("Original path: "+l,t),!l){console.warn("Invalid path",c,t);return}if(l.startsWith("/materials/")?r=this.ANIMATION_TARGET_TYPE.material:l.startsWith("/extensions/KHR_lights_punctual/lights/")?r=this.ANIMATION_TARGET_TYPE.light:l.startsWith("/cameras/")&&(r=this.ANIMATION_TARGET_TYPE.camera),o=this._tryResolveTargetId(l,r),o===null||isNaN(o)){console.warn("Failed resolving animation node id: "+o,l);return}else this._animationPointerDebug&&console.log("Resolved node ID for "+r,o);switch(r){case this.ANIMATION_TARGET_TYPE.material:const d=("/materials/"+o.toString()+"/").length,f=l.substring(0,d);switch(s=l.substring(d),s){case"pbrMetallicRoughness/baseColorFactor":s="color";break;case"pbrMetallicRoughness/roughnessFactor":s="roughness";break;case"pbrMetallicRoughness/metallicFactor":s="metalness";break;case"emissiveFactor":s="emissive";break;case"alphaCutoff":s="alphaTest";break;case"occlusionTexture/strength":s="aoMapIntensity";break;case"normalTexture/scale":s="normalScale";break;case"pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/scale":s="map/repeat";break;case"pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/offset":s="map/offset";break;case"emissiveTexture/extensions/KHR_texture_transform/scale":s="emissiveMap/repeat";break;case"emissiveTexture/extensions/KHR_texture_transform/offset":s="emissiveMap/offset";break;case"extensions/KHR_materials_emissive_strength/emissiveStrength":s="emissiveIntensity";break;case"extensions/KHR_materials_transmission/transmissionFactor":s="transmission";break;case"extensions/KHR_materials_ior/ior":s="ior";break;case"extensions/KHR_materials_volume/thicknessFactor":s="thickness";break;case"extensions/KHR_materials_volume/attenuationColor":s="attenuationColor";break;case"extensions/KHR_materials_volume/attenuationDistance":s="attenuationDistance";break;case"extensions/KHR_materials_iridescence/iridescenceFactor":s="iridescence";break;case"extensions/KHR_materials_iridescence/iridescenceIor":s="iridescenceIOR";break;case"extensions/KHR_materials_iridescence/iridescenceThicknessMinimum":s="iridescenceThicknessRange[0]";break;case"extensions/KHR_materials_iridescence/iridescenceThicknessMaximum":s="iridescenceThicknessRange[1]";break;case"extensions/KHR_materials_clearcoat/clearcoatFactor":s="clearcoat";break;case"extensions/KHR_materials_clearcoat/clearcoatRoughnessFactor":s="clearcoatRoughness";break;case"extensions/KHR_materials_sheen/sheenColorFactor":s="sheenColor";break;case"extensions/KHR_materials_sheen/sheenRoughnessFactor":s="sheenRoughness";break;case"extensions/KHR_materials_specular/specularFactor":s="specularIntensity";break;case"extensions/KHR_materials_specular/specularColorFactor":s="specularColor";break}l=f+s,this._animationPointerDebug&&console.log("PROPERTY PATH",f,s,l);break;case this.ANIMATION_TARGET_TYPE.node:const p=("/nodes/"+o.toString()+"/").length,g=l.substring(0,p);switch(s=l.substring(p),s){case"translation":s="position";break;case"rotation":s="quaternion";break;case"scale":s="scale";break;case"weights":s="morphTargetInfluences";break}l=g+s;break;case this.ANIMATION_TARGET_TYPE.light:const m=("/extensions/KHR_lights_punctual/lights/"+o.toString()+"/").length;switch(s=l.substring(m),s){case"color":break;case"intensity":break;case"spot/innerConeAngle":s="penumbra";break;case"spot/outerConeAngle":s="angle";break;case"range":s="distance";break}l="/lights/"+o.toString()+"/"+s;break;case this.ANIMATION_TARGET_TYPE.camera:const A=("/cameras/"+o.toString()+"/").length,v=l.substring(0,A);switch(s=l.substring(A),s){case"perspective/yfov":s="fov";break;case"perspective/znear":case"orthographic/znear":s="near";break;case"perspective/zfar":case"orthographic/zfar":s="far";break;case"perspective/aspect":s="aspect";break;case"orthographic/xmag":s="zoom";break;case"orthographic/ymag":s="zoom";break}l=v+s;break}const h=this.parser.options.animationPointerResolver;h&&h.resolvePath&&(l=h.resolvePath(l)),t.extensions[zt.KHR_ANIMATION_POINTER].pointer=l}if(o===null||isNaN(o)){console.warn("Failed resolving animation node id: "+o,t);return}let a;return r===this.ANIMATION_TARGET_TYPE.node?a=this.parser.getDependency("node",o):r===this.ANIMATION_TARGET_TYPE.material?a=this.parser.getDependency("material",o):r===this.ANIMATION_TARGET_TYPE.light?a=this.parser.getDependency("light",o):r===this.ANIMATION_TARGET_TYPE.camera?a=this.parser.getDependency("camera",o):console.error("Unhandled type",r),a}createAnimationTracks(e,t,i,s,r){if(!(r.extensions&&r.extensions[zt.KHR_ANIMATION_POINTER]&&r.path&&r.path==="pointer"))return null;let a=r.extensions[zt.KHR_ANIMATION_POINTER].pointer;if(!a)return null;const c=[];a=a.replaceAll("/",".");const l=a.split(".");l[2]=e.name??e.uuid,a=l.join("."),this._animationPointerDebug&&console.log(e,t,i,r,a);let h;switch(i.itemSize){case 1:h=Ql;break;case 2:case 3:h=Hl;break;case 4:a.endsWith(".quaternion")?h=ka:h=hA;break}const d=s.interpolation!==void 0?TF[s.interpolation]:Rc;let f=PF(i);a.endsWith(".fov")&&(f=f.map(g=>g/Math.PI*180));const p=new h(a,t.array,f,d);if(d==="CUBICSPLINE"&&DS(p),c.push(p),a&&i.itemSize===4&&a.startsWith(".materials.")&&a.endsWith(".color")){const g=new Float32Array(f.length/4);for(let A=0,v=f.length/4;A<v;A+=1)g[A]=f[A*4+3];const m=new h(a.replace(".color",".opacity"),t.array,g,d);d==="CUBICSPLINE"&&DS(p),c.push(m)}return c}_tryResolveTargetId(e,t){let i="";return t==="node"?i=e.substring(7):t==="material"?i=e.substring(11):t==="light"?i=e.substring(39):t==="camera"&&(i=e.substring(9)),i=i.substring(0,i.indexOf("/")),Number.parseInt(i)}}let M7=class{constructor(e){this.parser=e,this.name=zt.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const i=this.parser.json.materials[e];return!i.extensions||!i.extensions[this.name]?null:Da}extendMaterialParams(e,t){const i=this.parser,s=i.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const r=[],o=s.extensions[this.name];return o.iridescenceFactor!==void 0&&(t.iridescence=o.iridescenceFactor),o.iridescenceTexture!==void 0&&r.push(i.assignTexture(t,"iridescenceMap",o.iridescenceTexture)),o.iridescenceIor!==void 0&&(t.iridescenceIOR=o.iridescenceIor),t.iridescenceThicknessRange===void 0&&(t.iridescenceThicknessRange=[100,400]),o.iridescenceThicknessMinimum!==void 0&&(t.iridescenceThicknessRange[0]=o.iridescenceThicknessMinimum),o.iridescenceThicknessMaximum!==void 0&&(t.iridescenceThicknessRange[1]=o.iridescenceThicknessMaximum),o.iridescenceThicknessTexture!==void 0&&r.push(i.assignTexture(t,"iridescenceThicknessMap",o.iridescenceThicknessTexture)),Promise.all(r)}};class T7{constructor(e){this.parser=e,this.name=zt.KHR_MATERIALS_SHEEN}getMaterialType(e){const i=this.parser.json.materials[e];return!i.extensions||!i.extensions[this.name]?null:Da}extendMaterialParams(e,t){const i=this.parser,s=i.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const r=[];t.sheenColor=new _e(0,0,0),t.sheenRoughness=0,t.sheen=1;const o=s.extensions[this.name];return o.sheenColorFactor!==void 0&&t.sheenColor.fromArray(o.sheenColorFactor),o.sheenRoughnessFactor!==void 0&&(t.sheenRoughness=o.sheenRoughnessFactor),o.sheenColorTexture!==void 0&&r.push(i.assignTexture(t,"sheenColorMap",o.sheenColorTexture,yt)),o.sheenRoughnessTexture!==void 0&&r.push(i.assignTexture(t,"sheenRoughnessMap",o.sheenRoughnessTexture)),Promise.all(r)}}let P7=class{constructor(e){this.parser=e,this.name=zt.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const i=this.parser.json.materials[e];return!i.extensions||!i.extensions[this.name]?null:Da}extendMaterialParams(e,t){const i=this.parser,s=i.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const r=[],o=s.extensions[this.name];return o.transmissionFactor!==void 0&&(t.transmission=o.transmissionFactor),o.transmissionTexture!==void 0&&r.push(i.assignTexture(t,"transmissionMap",o.transmissionTexture)),Promise.all(r)}},R7=class{constructor(e){this.parser=e,this.name=zt.KHR_MATERIALS_VOLUME}getMaterialType(e){const i=this.parser.json.materials[e];return!i.extensions||!i.extensions[this.name]?null:Da}extendMaterialParams(e,t){const i=this.parser,s=i.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const r=[],o=s.extensions[this.name];t.thickness=o.thicknessFactor!==void 0?o.thicknessFactor:0,o.thicknessTexture!==void 0&&r.push(i.assignTexture(t,"thicknessMap",o.thicknessTexture)),t.attenuationDistance=o.attenuationDistance||1/0;const a=o.attenuationColor||[1,1,1];return t.attenuationColor=new _e(a[0],a[1],a[2]),Promise.all(r)}};class B7{constructor(e){this.parser=e,this.name=zt.KHR_MATERIALS_IOR}getMaterialType(e){const i=this.parser.json.materials[e];return!i.extensions||!i.extensions[this.name]?null:Da}extendMaterialParams(e,t){const s=this.parser.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const r=s.extensions[this.name];return t.ior=r.ior!==void 0?r.ior:1.5,Promise.resolve()}}class D7{constructor(e){this.parser=e,this.name=zt.KHR_MATERIALS_SPECULAR}getMaterialType(e){const i=this.parser.json.materials[e];return!i.extensions||!i.extensions[this.name]?null:Da}extendMaterialParams(e,t){const i=this.parser,s=i.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const r=[],o=s.extensions[this.name];t.specularIntensity=o.specularFactor!==void 0?o.specularFactor:1,o.specularTexture!==void 0&&r.push(i.assignTexture(t,"specularIntensityMap",o.specularTexture));const a=o.specularColorFactor||[1,1,1];return t.specularColor=new _e(a[0],a[1],a[2]),o.specularColorTexture!==void 0&&r.push(i.assignTexture(t,"specularColorMap",o.specularColorTexture,yt)),Promise.all(r)}}class k7{constructor(e){this.parser=e,this.name=zt.KHR_TEXTURE_BASISU}loadTexture(e){const t=this.parser,i=t.json,s=i.textures[e];if(!s.extensions||!s.extensions[this.name])return null;const r=s.extensions[this.name],o=t.options.ktx2Loader;if(!o){if(i.extensionsRequired&&i.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,r.source,o)}}class O7{constructor(e){this.parser=e,this.name=zt.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){const t=this.name,i=this.parser,s=i.json,r=s.textures[e];if(!r.extensions||!r.extensions[t])return null;const o=r.extensions[t],a=s.images[o.source];let c=i.textureLoader;if(a.uri){const l=i.options.manager.getHandler(a.uri);l!==null&&(c=l)}return this.detectSupport().then(function(l){if(l)return i.loadTextureImage(e,o.source,c);if(s.extensionsRequired&&s.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return i.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}}class L7{constructor(e){this.name=zt.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,i=t.bufferViews[e];if(i.extensions&&i.extensions[this.name]){const s=i.extensions[this.name],r=this.parser.getDependency("buffer",s.buffer),o=this.parser.options.meshoptDecoder;if(!o||!o.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return r.then(function(a){const c=s.byteOffset||0,l=s.byteLength||0,h=s.count,d=s.byteStride,f=new Uint8Array(a,c,l);return o.decodeGltfBufferAsync?o.decodeGltfBufferAsync(h,d,f,s.mode,s.filter).then(function(p){return p.buffer}):o.ready.then(function(){const p=new ArrayBuffer(h*d);return o.decodeGltfBuffer(new Uint8Array(p),h,d,f,s.mode,s.filter),p})})}else return null}}class F7{constructor(e){this.name=zt.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,i=t.nodes[e];if(!i.extensions||!i.extensions[this.name]||i.mesh===void 0)return null;const s=t.meshes[i.mesh];for(const l of s.primitives)if(l.mode!==jr.TRIANGLES&&l.mode!==jr.TRIANGLE_STRIP&&l.mode!==jr.TRIANGLE_FAN&&l.mode!==void 0)return null;const o=i.extensions[this.name].attributes,a=[],c={};for(const l in o)a.push(this.parser.getDependency("accessor",o[l]).then(h=>(c[l]=h,c[l])));return a.length<1?null:(a.push(this.parser.createNodeMesh(e)),Promise.all(a).then(l=>{const h=l.pop(),d=h.isGroup?h.children:[h],f=l[0].count,p=[];for(const g of d){const m=new He,A=new E,v=new xe,b=new E(1,1,1),y=new F_(g.geometry,g.material,f);for(let _=0;_<f;_++)c.TRANSLATION&&A.fromBufferAttribute(c.TRANSLATION,_),c.ROTATION&&v.fromBufferAttribute(c.ROTATION,_),c.SCALE&&b.fromBufferAttribute(c.SCALE,_),y.setMatrixAt(_,m.compose(A,v,b));for(const _ in c)_!=="TRANSLATION"&&_!=="ROTATION"&&_!=="SCALE"&&g.geometry.setAttribute(_,c[_]);Ie.prototype.copy.call(y,g),y.frustumCulled=!1,this.parser.assignFinalMaterial(y),p.push(y)}return h.isGroup?(h.clear(),h.add(...p),h):p[0]}))}}const IF="glTF",Wp=12,zR={JSON:1313821514,BIN:5130562};class U7{constructor(e){this.name=zt.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,Wp);if(this.header={magic:Ca.decodeText(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==IF)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const i=this.header.length-Wp,s=new DataView(e,Wp);let r=0;for(;r<i;){const o=s.getUint32(r,!0);r+=4;const a=s.getUint32(r,!0);if(r+=4,a===zR.JSON){const c=new Uint8Array(e,Wp+r,o);this.content=Ca.decodeText(c)}else if(a===zR.BIN){const c=Wp+r;this.body=e.slice(c,c+o)}r+=o}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class N7{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=zt.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){const i=this.json,s=this.dracoLoader,r=e.extensions[this.name].bufferView,o=e.extensions[this.name].attributes,a={},c={},l={};for(const h in o){const d=RS[h]||h.toLowerCase();a[d]=o[h]}for(const h in e.attributes){const d=RS[h]||h.toLowerCase();if(o[h]!==void 0){const f=i.accessors[e.attributes[h]],p=sf[f.componentType];l[d]=p.name,c[d]=f.normalized===!0}}return t.getDependency("bufferView",r).then(function(h){return new Promise(function(d){s.decodeDracoFile(h,function(f){for(const p in f.attributes){const g=f.attributes[p],m=c[p];m!==void 0&&(g.normalized=m)}d(f)},a,l)})})}}class z7{constructor(){this.name=zt.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return t.texCoord!==void 0&&console.warn('THREE.GLTFLoader: Custom UV sets in "'+this.name+'" extension not yet supported.'),t.offset===void 0&&t.rotation===void 0&&t.scale===void 0||(e=e.clone(),t.offset!==void 0&&e.offset.fromArray(t.offset),t.rotation!==void 0&&(e.rotation=t.rotation),t.scale!==void 0&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}class G7{constructor(){this.name=zt.KHR_MESH_QUANTIZATION}}class MF extends Ff{constructor(e,t,i,s){super(e,t,i,s)}copySampleValue_(e){const t=this.resultBuffer,i=this.sampleValues,s=this.valueSize,r=e*s*3+s;for(let o=0;o!==s;o++)t[o]=i[r+o];return t}interpolate_(e,t,i,s){const r=this.resultBuffer,o=this.sampleValues,a=this.valueSize,c=a*2,l=a*3,h=s-t,d=(i-t)/h,f=d*d,p=f*d,g=e*l,m=g-l,A=-2*p+3*f,v=p-f,b=1-A,y=v-f+d;for(let _=0;_!==a;_++){const C=o[m+_+a],S=o[m+_+c]*h,T=o[g+_+a],x=o[g+_]*h;r[_]=b*C+y*S+A*T+v*x}return r}}const Q7=new xe;class H7 extends MF{interpolate_(e,t,i,s){const r=super.interpolate_(e,t,i,s);return Q7.fromArray(r).normalize().toArray(r),r}}const jr={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},sf={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},GR={9728:ti,9729:Vt,9984:pf,9985:Ym,9986:gf,9987:Qo},QR={33071:Vn,33648:Pc,10497:oo},Iw={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},RS={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv2",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},ul={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},TF={CUBICSPLINE:void 0,LINEAR:Rc,STEP:uu},Mw={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function V7(n){return n.DefaultMaterial===void 0&&(n.DefaultMaterial=new xu({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:Gs})),n.DefaultMaterial}function qp(n,e,t){for(const i in t.extensions)n[i]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[i]=t.extensions[i])}function bl(n,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(n.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function j7(n,e,t){let i=!1,s=!1,r=!1;for(let l=0,h=e.length;l<h;l++){const d=e[l];if(d.POSITION!==void 0&&(i=!0),d.NORMAL!==void 0&&(s=!0),d.COLOR_0!==void 0&&(r=!0),i&&s&&r)break}if(!i&&!s&&!r)return Promise.resolve(n);const o=[],a=[],c=[];for(let l=0,h=e.length;l<h;l++){const d=e[l];if(i){const f=d.POSITION!==void 0?t.getDependency("accessor",d.POSITION):n.attributes.position;o.push(f)}if(s){const f=d.NORMAL!==void 0?t.getDependency("accessor",d.NORMAL):n.attributes.normal;a.push(f)}if(r){const f=d.COLOR_0!==void 0?t.getDependency("accessor",d.COLOR_0):n.attributes.color;c.push(f)}}return Promise.all([Promise.all(o),Promise.all(a),Promise.all(c)]).then(function(l){const h=l[0],d=l[1],f=l[2];return i&&(n.morphAttributes.position=h),s&&(n.morphAttributes.normal=d),r&&(n.morphAttributes.color=f),n.morphTargetsRelative=!0,n})}function W7(n,e){if(n.updateMorphTargets(),e.weights!==void 0)for(let t=0,i=e.weights.length;t<i;t++)n.morphTargetInfluences[t]=e.weights[t];if(e.extras&&Array.isArray(e.extras.targetNames)){const t=e.extras.targetNames;if(n.morphTargetInfluences.length===t.length){n.morphTargetDictionary={};for(let i=0,s=t.length;i<s;i++)n.morphTargetDictionary[t[i]]=i}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function q7(n){const e=n.extensions&&n.extensions[zt.KHR_DRACO_MESH_COMPRESSION];let t;return e?t="draco:"+e.bufferView+":"+e.indices+":"+HR(e.attributes):t=n.indices+":"+HR(n.attributes)+":"+n.mode,t}function HR(n){let e="";const t=Object.keys(n).sort();for(let i=0,s=t.length;i<s;i++)e+=t[i]+":"+n[t[i]]+";";return e}function BS(n){switch(n){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function PF(n){let e=n.array;if(n.normalized){const t=BS(e.constructor),i=new Float32Array(e.length);for(let s=0,r=e.length;s<r;s++)i[s]=e[s]*t;e=i}return e}function DS(n){n.createInterpolant=function(t){const i=this instanceof ka?H7:MF;return new i(this.times,this.values,this.getValueSize()/3,t)},n.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}function X7(n){return n.search(/\.jpe?g($|\?)/i)>0||n.search(/^data\:image\/jpeg/)===0?"image/jpeg":n.search(/\.webp($|\?)/i)>0||n.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}class Y7{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new x7,this.associations=new Map,this.primitiveCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let i=!1,s=!1,r=-1;typeof navigator<"u"&&(i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,s=navigator.userAgent.indexOf("Firefox")>-1,r=s?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap>"u"||i||s&&r<98?this.textureLoader=new kl(this.options.manager):this.textureLoader=new N2(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Rn(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const i=this,s=this.json,r=this.extensions;this.cache.removeAll(),this._invokeAll(function(o){return o._markDefs&&o._markDefs()}),Promise.all(this._invokeAll(function(o){return o.beforeRoot&&o.beforeRoot()})).then(function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])}).then(function(o){const a={scene:o[0][s.scene||0],scenes:o[0],animations:o[1],cameras:o[2],asset:s.asset,parser:i,userData:{}};qp(r,a,s),bl(a,s),Promise.all(i._invokeAll(function(c){return c.afterRoot&&c.afterRoot(a)})).then(function(){e(a)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],i=this.json.meshes||[];for(let s=0,r=t.length;s<r;s++){const o=t[s].joints;for(let a=0,c=o.length;a<c;a++)e[o[a]].isBone=!0}for(let s=0,r=e.length;s<r;s++){const o=e[s];o.mesh!==void 0&&(this._addNodeRef(this.meshCache,o.mesh),o.skin!==void 0&&(i[o.mesh].isSkinnedMesh=!0)),o.camera!==void 0&&this._addNodeRef(this.cameraCache,o.camera)}}_addNodeRef(e,t){t!==void 0&&(e.refs[t]===void 0&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,i){if(e.refs[t]<=1)return i;const s=i.clone(),r=(o,a)=>{const c=this.associations.get(o);c!=null&&this.associations.set(a,c);for(const[l,h]of o.children.entries())r(h,a.children[l])};return r(i,s),s.name+="_instance_"+e.uses[t]++,s}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let i=0;i<t.length;i++){const s=e(t[i]);if(s)return s}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const i=[];for(let s=0;s<t.length;s++){const r=e(t[s]);r&&i.push(r)}return i}getDependency(e,t){const i=e+":"+t;let s=this.cache.get(i);if(!s){switch(e){case"scene":s=this.loadScene(t);break;case"node":s=this.loadNode(t);break;case"mesh":s=this._invokeOne(function(r){return r.loadMesh&&r.loadMesh(t)});break;case"accessor":s=this.loadAccessor(t);break;case"bufferView":s=this._invokeOne(function(r){return r.loadBufferView&&r.loadBufferView(t)});break;case"buffer":s=this.loadBuffer(t);break;case"material":s=this._invokeOne(function(r){return r.loadMaterial&&r.loadMaterial(t)});break;case"texture":s=this._invokeOne(function(r){return r.loadTexture&&r.loadTexture(t)});break;case"skin":s=this.loadSkin(t);break;case"animation":s=this._invokeOne(function(r){return r.loadAnimation&&r.loadAnimation(t)});break;case"camera":s=this.loadCamera(t);break;case"light":s=this._invokeOne(function(r){return r._loadLight&&r._loadLight(t)});break;default:if(s=this._invokeOne(function(r){return r!=this&&r.getDependency&&r.getDependency(e,t)}),!s)throw new Error("Unknown type: "+e);break}this.cache.add(i,s)}return s}getDependencies(e){let t=this.cache.get(e);if(!t){const i=this,s=this.json[e+(e==="mesh"?"es":"s")]||[];t=Promise.all(s.map(function(r,o){return i.getDependency(e,o)})),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],i=this.fileLoader;if(t.type&&t.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[zt.KHR_BINARY_GLTF].body);const s=this.options;return new Promise(function(r,o){i.load(Ca.resolveURL(t.uri,s.path),r,void 0,function(){o(new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(i){const s=t.byteLength||0,r=t.byteOffset||0;return i.slice(r,r+s)})}loadAccessor(e){const t=this,i=this.json,s=this.json.accessors[e];if(s.bufferView===void 0&&s.sparse===void 0){const o=Iw[s.type],a=sf[s.componentType],c=s.normalized===!0,l=new a(s.count*o);return Promise.resolve(new ht(l,o,c))}const r=[];return s.bufferView!==void 0?r.push(this.getDependency("bufferView",s.bufferView)):r.push(null),s.sparse!==void 0&&(r.push(this.getDependency("bufferView",s.sparse.indices.bufferView)),r.push(this.getDependency("bufferView",s.sparse.values.bufferView))),Promise.all(r).then(function(o){const a=o[0],c=Iw[s.type],l=sf[s.componentType],h=l.BYTES_PER_ELEMENT,d=h*c,f=s.byteOffset||0,p=s.bufferView!==void 0?i.bufferViews[s.bufferView].byteStride:void 0,g=s.normalized===!0;let m,A;if(p&&p!==d){const v=Math.floor(f/p),b="InterleavedBuffer:"+s.bufferView+":"+s.componentType+":"+v+":"+s.count;let y=t.cache.get(b);y||(m=new l(a,v*p,s.count*p/h),y=new $m(m,p/h),t.cache.add(b,y)),A=new Bc(y,c,f%p/h,g)}else a===null?m=new l(s.count*c):m=new l(a,f,s.count*c),A=new ht(m,c,g);if(s.sparse!==void 0){const v=Iw.SCALAR,b=sf[s.sparse.indices.componentType],y=s.sparse.indices.byteOffset||0,_=s.sparse.values.byteOffset||0,C=new b(o[1],y,s.sparse.count*v),S=new l(o[2],_,s.sparse.count*c);a!==null&&(A=new ht(A.array.slice(),A.itemSize,A.normalized));for(let T=0,x=C.length;T<x;T++){const M=C[T];if(A.setX(M,S[T*c]),c>=2&&A.setY(M,S[T*c+1]),c>=3&&A.setZ(M,S[T*c+2]),c>=4&&A.setW(M,S[T*c+3]),c>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return A})}loadTexture(e){const t=this.json,i=this.options,r=t.textures[e].source,o=t.images[r];let a=this.textureLoader;if(o.uri){const c=i.manager.getHandler(o.uri);c!==null&&(a=c)}return this.loadTextureImage(e,r,a)}loadTextureImage(e,t,i){const s=this,r=this.json,o=r.textures[e],a=r.images[t],c=(a.uri||a.bufferView)+":"+o.sampler;if(this.textureCache[c])return this.textureCache[c];const l=this.loadImageSource(t,i).then(function(h){h.flipY=!1,h.name=o.name||a.name||"";const f=(r.samplers||{})[o.sampler]||{};return h.magFilter=GR[f.magFilter]||Vt,h.minFilter=GR[f.minFilter]||Qo,h.wrapS=QR[f.wrapS]||oo,h.wrapT=QR[f.wrapT]||oo,h.anisotropy=4,s.associations.set(h,{textures:e}),h}).catch(function(){return null});return this.textureCache[c]=l,l}loadImageSource(e,t){const i=this,s=this.json,r=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(d=>d.clone());const o=s.images[e],a=self.URL||self.webkitURL;let c=o.uri||"",l=!1;if(o.bufferView!==void 0)c=i.getDependency("bufferView",o.bufferView).then(function(d){l=!0;const f=new Blob([d],{type:o.mimeType});return c=a.createObjectURL(f),c});else if(o.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const h=Promise.resolve(c).then(function(d){return new Promise(function(f,p){let g=f;t.isImageBitmapLoader===!0&&(g=function(m){const A=new Gt(m);A.needsUpdate=!0,f(A)}),t.load(Ca.resolveURL(d,r.path),g,void 0,p)})}).then(function(d){return l===!0&&a.revokeObjectURL(c),d.userData.mimeType=o.mimeType||X7(o.uri),d}).catch(function(d){throw console.error("THREE.GLTFLoader: Couldn't load texture",c),d});return this.sourceCache[e]=h,h}assignTexture(e,t,i,s){const r=this;return this.getDependency("texture",i.index).then(function(o){if(i.texCoord!==void 0&&i.texCoord!=0&&!(t==="aoMap"&&i.texCoord==1)&&console.warn("THREE.GLTFLoader: Custom UV set "+i.texCoord+" for texture "+t+" not yet supported."),r.extensions[zt.KHR_TEXTURE_TRANSFORM]){const a=i.extensions!==void 0?i.extensions[zt.KHR_TEXTURE_TRANSFORM]:void 0;if(a){const c=r.associations.get(o);o=r.extensions[zt.KHR_TEXTURE_TRANSFORM].extendTexture(o,a),r.associations.set(o,c)}}return s!==void 0&&o&&(o.encoding=s),e[t]=o,o})}assignFinalMaterial(e){const t=e.geometry;let i=e.material;const s=t.attributes.tangent===void 0,r=t.attributes.color!==void 0,o=t.attributes.normal===void 0;if(e.isPoints){const a="PointsMaterial:"+i.uuid;let c=this.cache.get(a);c||(c=new U_,Bt.prototype.copy.call(c,i),c.color.copy(i.color),c.map=i.map,c.sizeAttenuation=!1,this.cache.add(a,c)),i=c}else if(e.isLine){const a="LineBasicMaterial:"+i.uuid;let c=this.cache.get(a);c||(c=new cn,Bt.prototype.copy.call(c,i),c.color.copy(i.color),this.cache.add(a,c)),i=c}if(s||r||o){let a="ClonedMaterial:"+i.uuid+":";s&&(a+="derivative-tangents:"),r&&(a+="vertex-colors:"),o&&(a+="flat-shading:");let c=this.cache.get(a);c||(c=i.clone(),r&&(c.vertexColors=!0),o&&(c.flatShading=!0),s&&(c.normalScale&&(c.normalScale.y*=-1),c.clearcoatNormalScale&&(c.clearcoatNormalScale.y*=-1)),this.cache.add(a,c),this.associations.set(c,this.associations.get(i))),i=c}i.aoMap&&t.attributes.uv2===void 0&&t.attributes.uv!==void 0&&t.setAttribute("uv2",t.attributes.uv),e.material=i}getMaterialType(){return xu}loadMaterial(e){const t=this,i=this.json,s=this.extensions,r=i.materials[e];let o;const a={},c=r.extensions||{},l=[];if(c[zt.KHR_MATERIALS_UNLIT]){const d=s[zt.KHR_MATERIALS_UNLIT];o=d.getMaterialType(),l.push(d.extendParams(a,r,t))}else{const d=r.pbrMetallicRoughness||{};if(a.color=new _e(1,1,1),a.opacity=1,Array.isArray(d.baseColorFactor)){const f=d.baseColorFactor;a.color.fromArray(f),a.opacity=f[3]}d.baseColorTexture!==void 0&&l.push(t.assignTexture(a,"map",d.baseColorTexture,yt)),a.metalness=d.metallicFactor!==void 0?d.metallicFactor:1,a.roughness=d.roughnessFactor!==void 0?d.roughnessFactor:1,d.metallicRoughnessTexture!==void 0&&(l.push(t.assignTexture(a,"metalnessMap",d.metallicRoughnessTexture)),l.push(t.assignTexture(a,"roughnessMap",d.metallicRoughnessTexture))),o=this._invokeOne(function(f){return f.getMaterialType&&f.getMaterialType(e)}),l.push(Promise.all(this._invokeAll(function(f){return f.extendMaterialParams&&f.extendMaterialParams(e,a)})))}r.doubleSided===!0&&(a.side=Ii);const h=r.alphaMode||Mw.OPAQUE;if(h===Mw.BLEND?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,h===Mw.MASK&&(a.alphaTest=r.alphaCutoff!==void 0?r.alphaCutoff:.5)),r.normalTexture!==void 0&&o!==vi&&(l.push(t.assignTexture(a,"normalMap",r.normalTexture)),a.normalScale=new q(1,1),r.normalTexture.scale!==void 0)){const d=r.normalTexture.scale;a.normalScale.set(d,d)}return r.occlusionTexture!==void 0&&o!==vi&&(l.push(t.assignTexture(a,"aoMap",r.occlusionTexture)),r.occlusionTexture.strength!==void 0&&(a.aoMapIntensity=r.occlusionTexture.strength)),r.emissiveFactor!==void 0&&o!==vi&&(a.emissive=new _e().fromArray(r.emissiveFactor)),r.emissiveTexture!==void 0&&o!==vi&&l.push(t.assignTexture(a,"emissiveMap",r.emissiveTexture,yt)),Promise.all(l).then(function(){const d=new o(a);return r.name&&(d.name=r.name),bl(d,r),t.associations.set(d,{materials:e}),r.extensions&&qp(s,d,r),d})}createUniqueName(e){const t=Nt.sanitizeNodeName(e||"");let i=t;for(let s=1;this.nodeNamesUsed[i];++s)i=t+"_"+s;return this.nodeNamesUsed[i]=!0,i}loadGeometries(e){const t=this,i=this.extensions,s=this.primitiveCache;function r(a){return i[zt.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(a,t).then(function(c){return VR(c,a,t)})}const o=[];for(let a=0,c=e.length;a<c;a++){const l=e[a],h=q7(l),d=s[h];if(d)o.push(d.promise);else{let f;l.extensions&&l.extensions[zt.KHR_DRACO_MESH_COMPRESSION]?f=r(l):f=VR(new vt,l,t),s[h]={primitive:l,promise:f},o.push(f)}}return Promise.all(o)}loadMesh(e){const t=this,i=this.json,s=this.extensions,r=i.meshes[e],o=r.primitives,a=[];for(let c=0,l=o.length;c<l;c++){const h=o[c].material===void 0?V7(this.cache):this.getDependency("material",o[c].material);a.push(h)}return a.push(t.loadGeometries(o)),Promise.all(a).then(function(c){const l=c.slice(0,c.length-1),h=c[c.length-1],d=[];for(let p=0,g=h.length;p<g;p++){const m=h[p],A=o[p];let v;const b=l[p];if(A.mode===jr.TRIANGLES||A.mode===jr.TRIANGLE_STRIP||A.mode===jr.TRIANGLE_FAN||A.mode===void 0)v=r.isSkinnedMesh===!0?new Bf(m,b):new ve(m,b),v.isSkinnedMesh===!0&&!v.geometry.attributes.skinWeight.normalized&&v.normalizeSkinWeights(),A.mode===jr.TRIANGLE_STRIP?v.geometry=jR(v.geometry,Uk):A.mode===jr.TRIANGLE_FAN&&(v.geometry=jR(v.geometry,OE));else if(A.mode===jr.LINES)v=new Tr(m,b);else if(A.mode===jr.LINE_STRIP)v=new sn(m,b);else if(A.mode===jr.LINE_LOOP)v=new XE(m,b);else if(A.mode===jr.POINTS)v=new YE(m,b);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+A.mode);Object.keys(v.geometry.morphAttributes).length>0&&W7(v,r),v.name=t.createUniqueName(r.name||"mesh_"+e),bl(v,r),A.extensions&&qp(s,v,A),t.assignFinalMaterial(v),d.push(v)}for(let p=0,g=d.length;p<g;p++)t.associations.set(d[p],{meshes:e,primitives:p});if(d.length===1)return d[0];const f=new $r;t.associations.set(f,{meshes:e});for(let p=0,g=d.length;p<g;p++)f.add(d[p]);return f})}loadCamera(e){let t;const i=this.json.cameras[e],s=i[i.type];if(!s){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return i.type==="perspective"?t=new $t(Fs.radToDeg(s.yfov),s.aspectRatio||1,s.znear||1,s.zfar||2e6):i.type==="orthographic"&&(t=new Tf(-s.xmag,s.xmag,s.ymag,-s.ymag,s.znear,s.zfar)),i.name&&(t.name=this.createUniqueName(i.name)),bl(t,i),Promise.resolve(t)}loadSkin(e){const t=this.json.skins[e],i={joints:t.joints};return t.inverseBindMatrices===void 0?Promise.resolve(i):this.getDependency("accessor",t.inverseBindMatrices).then(function(s){return i.inverseBindMatrices=s,i})}loadAnimation(e){const t=this.json,i=this,s=t.animations[e],r=[],o=[],a=[],c=[],l=[];let h=0,d=s.channels.length;for(h=0,d=s.channels.length;h<d;h++){const f=s.channels[h],p=s.samplers[f.sampler],g=f.target,m=s.parameters!==void 0?s.parameters[p.input]:p.input,A=s.parameters!==void 0?s.parameters[p.output]:p.output,v=i._invokeOne(function(b){return b.loadAnimationTargetFromChannel&&b.loadAnimationTargetFromChannel(f)});r.push(v),o.push(this.getDependency("accessor",m)),a.push(this.getDependency("accessor",A)),c.push(p),l.push(g)}return Promise.all([Promise.all(r),Promise.all(o),Promise.all(a),Promise.all(c),Promise.all(l)]).then(function(f){const p=f[0],g=f[1],m=f[2],A=f[3],v=f[4],b=[];for(h=0,d=p.length;h<d;h++){const _=p[h],C=g[h],S=m[h],T=A[h],x=v[h];if(_===void 0)continue;_.updateMatrix&&(_.updateMatrix(),_.matrixAutoUpdate=!0);const M=i._invokeOne(function(P){return P.createAnimationTracks&&P.createAnimationTracks(_,C,S,T,x)});if(M)for(let P=0;P<M.length;P++)b.push(M[P])}const y=s.name?s.name:"animation_"+e;return new lo(y,void 0,b)})}createNodeMesh(e){const t=this.json,i=this,s=t.nodes[e];return s.mesh===void 0?null:i.getDependency("mesh",s.mesh).then(function(r){const o=i._getNodeRef(i.meshCache,s.mesh,r);return s.weights!==void 0&&o.traverse(function(a){if(a.isMesh)for(let c=0,l=s.weights.length;c<l;c++)a.morphTargetInfluences[c]=s.weights[c]}),o})}loadNode(e){const t=this.json,i=this.extensions,s=this,r=t.nodes[e],o=r.name?s.createUniqueName(r.name):"";return function(){const a=[],c=s._invokeOne(function(l){return l.createNodeMesh&&l.createNodeMesh(e)});return c&&a.push(c),r.camera!==void 0&&a.push(s.getDependency("camera",r.camera).then(function(l){return s._getNodeRef(s.cameraCache,r.camera,l)})),s._invokeAll(function(l){return l.createNodeAttachment&&l.createNodeAttachment(e)}).forEach(function(l){a.push(l)}),Promise.all(a)}().then(function(a){let c;if(r.isBone===!0?c=new eA:a.length>1?c=new $r:a.length===1?c=a[0]:c=new Ie,c!==a[0])for(let l=0,h=a.length;l<h;l++)c.add(a[l]);if(r.name&&(c.userData.name=r.name,c.name=o),bl(c,r),r.extensions&&qp(i,c,r),r.matrix!==void 0){const l=new He;l.fromArray(r.matrix),c.applyMatrix4(l)}else r.translation!==void 0&&c.position.fromArray(r.translation),r.rotation!==void 0&&c.quaternion.fromArray(r.rotation),r.scale!==void 0&&c.scale.fromArray(r.scale);return s.associations.has(c)||s.associations.set(c,{}),s.associations.get(c).nodes=e,c})}loadScene(e){const t=this.json,i=this.extensions,s=this.json.scenes[e],r=this,o=new $r;s.name&&(o.name=r.createUniqueName(s.name)),bl(o,s),s.extensions&&qp(i,o,s);const a=s.nodes||[],c=[];for(let l=0,h=a.length;l<h;l++)c.push(RF(a[l],o,t,r));return Promise.all(c).then(function(){const l=h=>{const d=new Map;for(const[f,p]of r.associations)(f instanceof Bt||f instanceof Gt)&&d.set(f,p);return h.traverse(f=>{const p=r.associations.get(f);p!=null&&d.set(f,p)}),d};return r.associations=l(o),o})}loadAnimationTargetFromChannel(e){const t=e.target,i=t.node!==void 0?t.node:t.id;return this.getDependency("node",i)}createAnimationTracks(e,t,i,s,r){const o=[],a=e.name?e.name:e.uuid,c=[];ul[r.path]===ul.weights?e.traverse(function(f){f.morphTargetInfluences&&c.push(f.name?f.name:f.uuid)}):c.push(a);let l;switch(ul[r.path]){case ul.weights:l=Ql;break;case ul.rotation:l=ka;break;case ul.position:case ul.scale:default:switch(i.itemSize){case 1:l=Ql;break;case 2:case 3:l=Hl;break;case 4:l=hA;break}break}const h=s.interpolation!==void 0?TF[s.interpolation]:Rc,d=PF(i);for(let f=0,p=c.length;f<p;f++){const g=new l(c[f]+"."+ul[r.path],t.array,d,h);h==="CUBICSPLINE"&&DS(g),o.push(g)}return o}}function RF(n,e,t,i){const s=t.nodes[n];return i.getDependency("node",n).then(function(r){if(s.skin===void 0)return r;let o;return i.getDependency("skin",s.skin).then(function(a){o=a;const c=[];for(let l=0,h=o.joints.length;l<h;l++)c.push(i.getDependency("node",o.joints[l]));return Promise.all(c)}).then(function(a){return r.traverse(function(c){if(!c.isMesh)return;const l=[],h=[];for(let d=0,f=a.length;d<f;d++){const p=a[d];if(p){l.push(p);const g=new He;o.inverseBindMatrices!==void 0&&g.fromArray(o.inverseBindMatrices.array,d*16),h.push(g)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',o.joints[d])}c.bind(new Df(l,h),c.matrixWorld)}),r})}).then(function(r){e.add(r);const o=[];if(s.children){const a=s.children;for(let c=0,l=a.length;c<l;c++){const h=a[c];o.push(RF(h,r,t,i))}}return Promise.all(o)})}function J7(n,e,t){const i=e.attributes,s=new _s;if(i.POSITION!==void 0){const a=t.json.accessors[i.POSITION],c=a.min,l=a.max;if(c!==void 0&&l!==void 0){if(s.set(new E(c[0],c[1],c[2]),new E(l[0],l[1],l[2])),a.normalized){const h=BS(sf[a.componentType]);s.min.multiplyScalar(h),s.max.multiplyScalar(h)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const r=e.targets;if(r!==void 0){const a=new E,c=new E;for(let l=0,h=r.length;l<h;l++){const d=r[l];if(d.POSITION!==void 0){const f=t.json.accessors[d.POSITION],p=f.min,g=f.max;if(p!==void 0&&g!==void 0){if(c.setX(Math.max(Math.abs(p[0]),Math.abs(g[0]))),c.setY(Math.max(Math.abs(p[1]),Math.abs(g[1]))),c.setZ(Math.max(Math.abs(p[2]),Math.abs(g[2]))),f.normalized){const m=BS(sf[f.componentType]);c.multiplyScalar(m)}a.max(c)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}s.expandByVector(a)}n.boundingBox=s;const o=new Ba;s.getCenter(o.center),o.radius=s.min.distanceTo(s.max)/2,n.boundingSphere=o}function VR(n,e,t){const i=e.attributes,s=[];function r(o,a){return t.getDependency("accessor",o).then(function(c){n.setAttribute(a,c)})}for(const o in i){const a=RS[o]||o.toLowerCase();a in n.attributes||s.push(r(i[o],a))}if(e.indices!==void 0&&!n.index){const o=t.getDependency("accessor",e.indices).then(function(a){n.setIndex(a)});s.push(o)}return bl(n,e),J7(n,e,t),Promise.all(s).then(function(){return e.targets!==void 0?j7(n,e.targets,t):n})}function jR(n,e){let t=n.getIndex();if(t===null){const o=[],a=n.getAttribute("position");if(a!==void 0){for(let c=0;c<a.count;c++)o.push(c);n.setIndex(o),t=n.getIndex()}else return console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),n}const i=t.count-2,s=[];if(e===OE)for(let o=1;o<=i;o++)s.push(t.getX(0)),s.push(t.getX(o)),s.push(t.getX(o+1));else for(let o=0;o<i;o++)o%2===0?(s.push(t.getX(o)),s.push(t.getX(o+1)),s.push(t.getX(o+2))):(s.push(t.getX(o+2)),s.push(t.getX(o+1)),s.push(t.getX(o)));s.length/3!==i&&console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const r=n.clone();return r.setIndex(s),r}var BF=(n=>(n[n.INT=5124]="INT",n[n.FLOAT=5126]="FLOAT",n[n.FLOAT_VEC2=35664]="FLOAT_VEC2",n[n.FLOAT_VEC3=35665]="FLOAT_VEC3",n[n.FLOAT_VEC4=35666]="FLOAT_VEC4",n[n.INT_VEC2=35667]="INT_VEC2",n[n.INT_VEC3=35668]="INT_VEC3",n[n.INT_VEC4=35669]="INT_VEC4",n[n.BOOL=35670]="BOOL",n[n.BOOL_VEC2=35671]="BOOL_VEC2",n[n.BOOL_VEC3=35672]="BOOL_VEC3",n[n.BOOL_VEC4=35673]="BOOL_VEC4",n[n.FLOAT_MAT2=35674]="FLOAT_MAT2",n[n.FLOAT_MAT3=35675]="FLOAT_MAT3",n[n.FLOAT_MAT4=35676]="FLOAT_MAT4",n[n.SAMPLER_2D=35678]="SAMPLER_2D",n[n.SAMPLER_3D=35680]="SAMPLER_3D",n[n.SAMPLER_CUBE=35681]="SAMPLER_CUBE",n[n.UNKNOWN=0]="UNKNOWN",n))(BF||{});const ac=ce("debugcustomshader"),gd="NEEDLE_techniques_webgl";class K7{constructor(){u(this,"objectToWorldMatrix",new He);u(this,"worldToObjectMatrix",new He);u(this,"objectToWorld",new Array);u(this,"worldToObject",new Array)}updateFrom(e){this.objectToWorldMatrix.copy(e.matrixWorld),j0(this.objectToWorldMatrix,this.objectToWorld),this.worldToObjectMatrix.copy(e.matrixWorld).invert(),j0(this.worldToObjectMatrix,this.worldToObject)}}const Pi=class extends s1{constructor(t,...i){super(...i);u(this,"identifier");u(this,"onBeforeRenderSceneCallback",this.onBeforeRenderScene.bind(this));u(this,"_sphericalHarmonicsName","unity_SpecCube0");u(this,"_objToWorldName","hlslcc_mtx4x4unity_ObjectToWorld");u(this,"_worldToObjectName","hlslcc_mtx4x4unity_WorldToObject");u(this,"_viewProjectionName","hlslcc_mtx4x4unity_MatrixVP");u(this,"_viewMatrixName","hlslcc_mtx4x4unity_MatrixV");u(this,"_rendererData",new K7);this.identifier=t,ac&&console.log(this),this.type="NEEDLE_CUSTOM_SHADER",this.uniforms[this._objToWorldName]||(this.uniforms[this._objToWorldName]={value:[]}),this.uniforms[this._worldToObjectName]||(this.uniforms[this._worldToObjectName]={value:[]}),this.uniforms[this._viewProjectionName]||(this.uniforms[this._viewProjectionName]={value:[]}),this.uniforms[this._sphericalHarmonicsName]&&this.waitForLighting(),(this.depthTextureUniform||this.opaqueTextureUniform)&&_t.Current.pre_render_callbacks.push(this.onBeforeRenderSceneCallback)}clone(){const t=super.clone();return DF(t),t}dispose(){super.dispose();const t=_t.Current.pre_render_callbacks.indexOf(this.onBeforeRenderSceneCallback);t>=0&&_t.Current.pre_render_callbacks.splice(t,1)}async waitForLighting(){const t=_t.Current;if(!t){console.error("Missing context");return}const i=await t.sceneLighting.internalGetSceneLightingData(this.identifier);if(!i||!i.array){console.warn("Missing lighting data for custom shader, getSceneLightingData did not return anything");return}ac&&console.log(i);const s=i.array,r=i.texture;this.uniforms.unity_SpecCube0={value:r},tF(this.uniforms,s);const o=Math.sqrt(Math.PI*.5);this.uniforms.unity_SpecCube0_HDR={value:new rt(o,o,o,o)},ac&&console.log("Set environment lighting",this.uniforms)}get depthTextureUniform(){if(this.uniforms)return this.uniforms._CameraDepthTexture}get opaqueTextureUniform(){if(this.uniforms)return this.uniforms._CameraOpaqueTexture}onBeforeRenderScene(){this.opaqueTextureUniform&&_t.Current.setRequireColor(!0),this.depthTextureUniform&&_t.Current.setRequireDepth(!0)}onBeforeRender(t,i,s,r,o,a){r.attributes.tangent||r.computeTangents(),this.onUpdateUniforms(s,o)}onUpdateUniforms(t,i){const s=_t.Current;t&&(Pi.viewProjection&&this.uniforms[this._viewProjectionName]&&(Pi.viewProjection.copy(t.projectionMatrix).multiply(t.matrixWorldInverse),j0(Pi.viewProjection,Pi._viewProjectionValues)),Pi.viewMatrix&&this.uniforms[this._viewMatrixName]&&(Pi.viewMatrix.copy(t.matrixWorldInverse),j0(Pi.viewMatrix,Pi._viewMatrixValues)),this.uniforms[Pi._worldSpaceCameraPosName]&&Pi._worldSpaceCameraPos.setFromMatrixPosition(t.matrixWorld)),this.uniforms._TimeParameters?this.uniforms._TimeParameters.value=s.sceneLighting.timeVec4:this.uniforms._Time&&(this.uniforms._Time.value=s.sceneLighting.timeVec4);const r=s.mainLight;if(r){const c=Ct(r.gameObject,Pi._mainLightPosition);this.uniforms._MainLightPosition={value:c.normalize()},Pi._mainLightColor.set(r.color.r,r.color.g,r.color.b,0),this.uniforms._MainLightColor={value:Pi._mainLightColor};const l=r.intensity;Pi._lightData.z=l,this.uniforms.unity_LightData={value:Pi._lightData}}if(t&&(Pi.viewProjection&&this.uniforms[this._viewProjectionName]&&(this.uniforms[this._viewProjectionName].value=Pi._viewProjectionValues),Pi.viewMatrix&&this.uniforms[this._viewMatrixName]&&(this.uniforms[this._viewMatrixName].value=Pi._viewMatrixValues),this.uniforms[Pi._worldSpaceCameraPosName]&&(this.uniforms[Pi._worldSpaceCameraPosName]={value:Pi._worldSpaceCameraPos}),s.mainCameraComponent)){if(this.uniforms._ProjectionParams){const c=this.uniforms._ProjectionParams.value;c.x=1,c.y=s.mainCameraComponent.nearClipPlane,c.z=s.mainCameraComponent.farClipPlane,c.w=1/c.z,this.uniforms._ProjectionParams.value=c}if(this.uniforms._ZBufferParams){const c=this.uniforms._ZBufferParams.value,l=s.mainCameraComponent;c.x=1-l.farClipPlane/l.nearClipPlane,c.y=l.farClipPlane/l.nearClipPlane,c.z=c.x/l.farClipPlane,c.w=c.y/l.farClipPlane,this.uniforms._ZBufferParams.value=c}if(this.uniforms._ScreenParams){const c=this.uniforms._ScreenParams.value;c.x=s.domWidth,c.y=s.domHeight,c.z=1+1/c.x,c.w=1+1/c.y,this.uniforms._ScreenParams.value=c}}const o=this.depthTextureUniform;o&&(o.value=s.depthTexture);const a=this.opaqueTextureUniform;if(a&&(a.value=s.opaqueColorTexture),i){const c=this._rendererData;c.updateFrom(i),this.uniforms[this._worldToObjectName].value=c.worldToObject,this.uniforms[this._objToWorldName].value=c.objectToWorld}this.uniformsNeedUpdate=!0}};let fr=Pi;u(fr,"viewProjection",new He),u(fr,"_viewProjectionValues",[]),u(fr,"viewMatrix",new He),u(fr,"_viewMatrixValues",[]),u(fr,"_worldSpaceCameraPosName","_WorldSpaceCameraPos"),u(fr,"_worldSpaceCameraPos",new E),u(fr,"_mainLightColor",new rt),u(fr,"_mainLightPosition",new E),u(fr,"_lightData",new rt);class Z7{constructor(e,t){u(this,"parser");u(this,"identifier");this.parser=e,this.identifier=t}get name(){return gd}loadMaterial(e){const t=this.parser.json.materials[e];if(!t)return ac&&console.log(e,this.parser.json.materials),null;if(!t.extensions||!t.extensions[gd])return ac&&console.log("material "+e+" does not use NEEDLE_techniques_webgl"),null;const i=t.extensions[gd].technique;if(i<0)return null;const s=this.parser.json.extensions[gd];if(!s)return null;ac&&console.log(s);const r=s.techniques[i];return r?new Promise(async(o,a)=>{var v,b,y;const c=await wq(s,r.program),l=c==null?void 0:c.fragmentShader,h=c==null?void 0:c.vertexShader;if(!l||!h)return a();ac&&console.log("loadMaterial",t,c);const d={},f=r.uniforms;h.includes("_Time")&&(d._Time={value:new rt(0,0,0,0)});for(const _ in f){const C=_;switch(C){case"_TimeParameters":const S=new rt;d[C]={value:S};break;case"hlslcc_mtx4x4unity_MatrixV":case"hlslcc_mtx4x4unity_MatrixVP":d[C]={value:[]};break;case"_MainLightPosition":case"_MainLightColor":case"_WorldSpaceCameraPos":d[C]={value:[0,0,0,1]};break;case"unity_OrthoParams":break;case"unity_SpecCube0":d[C]={value:null};break;default:case"_ScreenParams":case"_ZBufferParams":case"_ProjectionParams":d[C]={value:[0,0,0,0]};break;case"_CameraOpaqueTexture":case"_CameraDepthTexture":d[C]={value:null};break}}let p=!1;if(t.extensions&&t.extensions[gd]){const _=t.extensions[gd];if(_.technique===i){ac&&console.log(t.name,"Material Properties",_);for(const C in _.values){const S=_.values[C];if(typeof S=="string"){if(S.startsWith("/textures/")){const T=S.substring(10),x=Number.parseInt(T);if(x>=0){const M=await this.parser.getDependency("texture",x);M&&(M.encoding=an,M.needsUpdate=!0),d[C]={value:M};continue}}switch(C){case"alphaMode":S==="BLEND"&&(p=!0);continue}}if(Array.isArray(S)&&S.length===4){d[C]={value:new rt(S[0],S[1],S[2],S[3])};continue}d[C]={value:S}}}}const g=new fr(this.identifier,{name:t.name??"",uniforms:d,vertexShader:h,fragmentShader:l,lights:!1});switch((v=d._Cull)==null?void 0:v.value){case 0:g.side=Ii;break;case 1:g.side=Tn;break;case 2:g.side=Gs;break;default:g.side=Gs;break}switch((b=d._ZTest)==null?void 0:b.value){case 3:g.depthTest=!0,g.depthFunc=df;break;case 6:g.depthTest=!0,g.depthFunc=qm;break;case 2:g.depthTest=!0,g.depthFunc=sm;break;case 4:g.depthTest=!0,g.depthFunc=uf;break;case 5:g.depthTest=!0,g.depthFunc=E_;break;case 7:g.depthTest=!0,g.depthFunc=S_;break;case 8:g.depthTest=!1,g.depthFunc=C_;break}g.transparent=p,p&&(g.depthWrite=!1),tF(d),g.onUpdateUniforms();for(const _ in f){const C=_,S=f[_].type;if(((y=d[C])==null?void 0:y.value)===void 0)switch(S){case BF.SAMPLER_2D:d[C]={value:_q},console.warn("Missing/unassigned texture, fallback to white: "+C);break;default:C==="unity_OrthoParams"||console.warn("TODO: EXPECTED UNIFORM / fallback NOT SET: "+C,f[_]);break}}ac&&console.log(g.uuid,d),DF(g),o(g)}):null}}function DF(n){if(n.uniforms)for(const e in n.uniforms)Object.getOwnPropertyDescriptor(n,e)||Object.defineProperty(n,e,{get:()=>n.uniforms[e].value,set:t=>{n.uniforms[e].value=t,n.needsUpdate=!0}})}const dl=ys,oy="$___Export_Components",$7="NEEDLE_components";var _oe;class eX{constructor(){u(this,_oe)}}_oe=Fh;class tX{constructor(e,t,i){u(this,"node");u(this,"nodeIndex");u(this,"nodeDef");this.node=e,this.nodeIndex=t,this.nodeDef=i}}class kF{constructor(){u(this,"parser");u(this,"nodeToObjectMap",{});u(this,"exportContext");u(this,"objectToNodeMap",{});u(this,"context");u(this,"writer")}get name(){return $7}registerExport(e){e.register(t=>{if("serializeUserData"in t){const i=t.serializeUserData.bind(t);this.writer=t,t.serializeUserData=(s,r)=>{try{this.serializeUserData(s,r),i(s,r)}finally{this.afterSerializeUserData(s,r)}}}return this})}beforeParse(){this.exportContext={},this.objectToNodeMap={}}serializeUserData(e,t){var s;const i=(s=e.userData)==null?void 0:s.components;!i||i.length<=0||(delete e.userData.components,e[oy]=i)}afterSerializeUserData(e,t){if(e.type==="Scene"&&dl&&console.log("DONE",JSON.stringify(t)),e[oy]===void 0)return;const i=e[oy];delete e[oy],i!==null&&(e.userData.components=i)}writeNode(e,t){let i=this.writer.json.nodes.length;console.log(e.name,i,e.uuid);const s=new tX(e,i,t);this.exportContext[i]=s,this.objectToNodeMap[e.uuid]=i}afterParse(e){var t;dl&&console.log("AFTER",e);for(const i in this.exportContext){const s=this.exportContext[i],r=s.node,o=s.nodeDef,a=s.nodeIndex,c=(t=r.userData)==null?void 0:t.components;if(!c||c.length<=0)continue;const l=new eX;o.extensions=o.extensions||{},o.extensions[this.name]=l,this.context.object=r,this.context.nodeId=a,this.context.objectToNode=this.objectToNodeMap;const h=[];for(const d of c){this.context.target=d;const f=zo().writeBuiltinComponentData(d,this.context);f!==null&&h.push(f)}h.length>0&&(l[Fh]=h,dl&&console.log("DID WRITE",r,"nodeIndex",a,h))}}beforeRoot(){return dl&&console.log("BEGIN LOAD"),this.nodeToObjectMap={},null}async afterRoot(e){const t=e.parser,i=t==null?void 0:t.extensions;if(!i)return;const s=i[this.name];dl&&console.log("After root",e,this.parser,i);const r=[];if(s===!0){const o=t.json.nodes;for(let a=0;a<o.length;a++){const c=await t.getDependency("node",a);this.nodeToObjectMap[a]=c}for(let a=0;a<o.length;a++){const c=o[a],l=a,h=c.extensions;if(!h)continue;const d=h[this.name];if(!d)continue;dl&&console.log("NODE",c);const f=this.nodeToObjectMap[l];if(!f){console.error("Could not find object for node index: "+l,c,t);continue}ub(f),r.push(this.createComponents(f,d))}}await Promise.all(r)}async createComponents(e,t){if(!t)return;const i=t[Fh];if(i){const s=new Array;dl&&console.log(e.name,i);for(const r in i){const o=i[r];dl&&console.log("Serialized data",JSON.parse(JSON.stringify(o))),o&&this.parser&&s.push(y1(this.parser,o)),e.userData=e.userData||{},e.userData[Fh]=e.userData[Fh]||[],e.userData[Fh].push(o)}await Promise.all(s)}}}/*!
|
|
3949
|
+
`);this.workerSourceURL=URL.createObjectURL(new Blob([c])),this.transcoderBinary=o,this.workerPool.setWorkerCreator(()=>{const l=new Worker(this.workerSourceURL),h=this.transcoderBinary.slice(0);return l.postMessage({type:"init",config:this.workerConfig,transcoderBinary:h},[h]),l})}),xw>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),xw++}return this.transcoderPending}load(e,t,i,s){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const r=new Rn(this.manager);r.setResponseType("arraybuffer"),r.setWithCredentials(this.withCredentials),r.load(e,o=>{if(bw.has(o))return bw.get(o).promise.then(t).catch(s);this._createTexture(o).then(a=>t?t(a):null).catch(s)},i,s)}_createTextureFrom(e,t){const{mipmaps:i,width:s,height:r,format:o,type:a,error:c,dfdTransferFn:l,dfdFlags:h}=e;if(a==="error")return Promise.reject(c);const d=t.layerCount>1?new m2(i,s,r,t.layerCount,o,mi):new uc(i,s,r,o,mi);return d.minFilter=i.length===1?Vt:Qo,d.magFilter=Vt,d.generateMipmaps=!1,d.needsUpdate=!0,d.encoding=l===a7?yt:an,d.premultiplyAlpha=!!(h&o7),d}async _createTexture(e,t={}){const i=h7(new Uint8Array(e));if(i.vkFormat!==c7)return f7(i);const s=t,r=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:e,taskConfig:s},[e])).then(o=>this._createTextureFrom(o.data,i));return bw.set(e,{promise:r}),r}dispose(){return this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),xw--,this}}Lo.BasisFormat={ETC1S:0,UASTC_4x4:1};Lo.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16};Lo.EngineFormat={RGBAFormat:Mi,RGBA_ASTC_4x4_Format:R0,RGBA_BPTC_Format:B0,RGBA_ETC2_EAC_Format:P0,RGBA_PVRTC_4BPPV1_Format:M0,RGBA_S3TC_DXT5_Format:Sg,RGB_ETC1_Format:BE,RGB_ETC2_Format:T0,RGB_PVRTC_4BPPV1_Format:I0,RGB_S3TC_DXT1_Format:Cg};Lo.BasisWorker=function(){let n,e,t;const i=_EngineFormat,s=_TranscoderFormat,r=_BasisFormat;self.addEventListener("message",function(g){const m=g.data;switch(m.type){case"init":n=m.config,o(m.transcoderBinary);break;case"transcode":e.then(()=>{try{const{width:A,height:v,hasAlpha:b,mipmaps:y,format:_,dfdTransferFn:C,dfdFlags:S}=a(m.buffer),T=[];for(let x=0;x<y.length;++x)T.push(y[x].data.buffer);self.postMessage({type:"transcode",id:m.id,width:A,height:v,hasAlpha:b,mipmaps:y,format:_,dfdTransferFn:C,dfdFlags:S},T)}catch(A){console.error(A),self.postMessage({type:"error",id:m.id,error:A.message})}});break}});function o(g){e=new Promise(m=>{t={wasmBinary:g,onRuntimeInitialized:m},BASIS(t)}).then(()=>{t.initializeBasis(),t.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")})}function a(g){const m=new t.KTX2File(new Uint8Array(g));function A(){m.close(),m.delete()}if(!m.isValid())throw A(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");const v=m.isUASTC()?r.UASTC_4x4:r.ETC1S,b=m.getWidth(),y=m.getHeight(),_=m.getLayers()||1,C=m.getLevels(),S=m.getHasAlpha(),T=m.getDFDTransferFunc(),x=m.getDFDFlags(),{transcoderFormat:M,engineFormat:P}=d(v,b,y,S);if(!b||!y||!C)throw A(),new Error("THREE.KTX2Loader: Invalid texture");if(!m.startTranscoding())throw A(),new Error("THREE.KTX2Loader: .startTranscoding failed");const k=[];for(let G=0;G<C;G++){const z=[];let L,H;for(let Z=0;Z<_;Z++){const K=m.getImageLevelInfo(G,Z,0);L=K.origWidth,H=K.origHeight;const J=new Uint8Array(m.getImageTranscodedSizeInBytes(G,Z,0,M));if(!m.transcodeImage(J,G,Z,0,M,0,-1,-1))throw A(),new Error("THREE.KTX2Loader: .transcodeImage failed.");z.push(J)}k.push({data:p(z),width:L,height:H})}return A(),{width:b,height:y,hasAlpha:S,mipmaps:k,format:P,dfdTransferFn:T,dfdFlags:x}}const c=[{if:"astcSupported",basisFormat:[r.UASTC_4x4],transcoderFormat:[s.ASTC_4x4,s.ASTC_4x4],engineFormat:[i.RGBA_ASTC_4x4_Format,i.RGBA_ASTC_4x4_Format],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[r.ETC1S,r.UASTC_4x4],transcoderFormat:[s.BC7_M5,s.BC7_M5],engineFormat:[i.RGBA_BPTC_Format,i.RGBA_BPTC_Format],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[r.ETC1S,r.UASTC_4x4],transcoderFormat:[s.BC1,s.BC3],engineFormat:[i.RGB_S3TC_DXT1_Format,i.RGBA_S3TC_DXT5_Format],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[r.ETC1S,r.UASTC_4x4],transcoderFormat:[s.ETC1,s.ETC2],engineFormat:[i.RGB_ETC2_Format,i.RGBA_ETC2_EAC_Format],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[r.ETC1S,r.UASTC_4x4],transcoderFormat:[s.ETC1],engineFormat:[i.RGB_ETC1_Format],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[r.ETC1S,r.UASTC_4x4],transcoderFormat:[s.PVRTC1_4_RGB,s.PVRTC1_4_RGBA],engineFormat:[i.RGB_PVRTC_4BPPV1_Format,i.RGBA_PVRTC_4BPPV1_Format],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0}],l=c.sort(function(g,m){return g.priorityETC1S-m.priorityETC1S}),h=c.sort(function(g,m){return g.priorityUASTC-m.priorityUASTC});function d(g,m,A,v){let b,y;const _=g===r.ETC1S?l:h;for(let C=0;C<_.length;C++){const S=_[C];if(n[S.if]&&S.basisFormat.includes(g)&&!(v&&S.transcoderFormat.length<2)&&!(S.needsPowerOfTwo&&!(f(m)&&f(A))))return b=S.transcoderFormat[v?1:0],y=S.engineFormat[v?1:0],{transcoderFormat:b,engineFormat:y}}return console.warn("THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32."),b=s.RGBA32,y=i.RGBAFormat,{transcoderFormat:b,engineFormat:y}}function f(g){return g<=2?!0:(g&g-1)===0&&g!==0}function p(g){let m=0;for(const b of g)m+=b.byteLength;const A=new Uint8Array(m);let v=0;for(const b of g)A.set(b,v),v+=b.byteLength;return A}};const BR={[SF]:Mi,[xF]:Mi,[yF]:Mi,[Y1]:Mi,[CF]:jh,[bF]:jh,[vF]:jh,[X1]:jh,[wF]:Cl,[_F]:Cl,[q1]:Cl,[AF]:Cl},Cw={[SF]:vn,[xF]:Pn,[yF]:mi,[Y1]:mi,[CF]:vn,[bF]:Pn,[vF]:mi,[X1]:mi,[wF]:vn,[_F]:Pn,[q1]:mi,[AF]:mi},d7={[Y1]:yt,[X1]:yt,[q1]:yt};async function f7(n){const{vkFormat:e,pixelWidth:t,pixelHeight:i,pixelDepth:s}=n;if(BR[e]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");const r=n.levels[0];let o,a;if(n.supercompressionScheme===s7)o=r.levelData;else if(n.supercompressionScheme===r7)ww||(ww=new Promise(async l=>{const h=new u7;await h.init(),l(h)})),o=(await ww).decode(r.levelData,r.uncompressedByteLength);else throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");Cw[e]===vn?a=new Float32Array(o.buffer,o.byteOffset,o.byteLength/Float32Array.BYTES_PER_ELEMENT):Cw[e]===Pn?a=new Uint16Array(o.buffer,o.byteOffset,o.byteLength/Uint16Array.BYTES_PER_ELEMENT):a=o;const c=s===0?new Fo(a,t,i):new Km(a,t,i,s);return c.type=Cw[e],c.format=BR[e],c.encoding=d7[e]||an,c.needsUpdate=!0,Promise.resolve(c)}var p7=function(){var n="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb",e="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb",t=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),i=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var s=WebAssembly.validate(t)?e:n,r,o=WebAssembly.instantiate(a(s),{}).then(function(v){r=v.instance,r.exports.__wasm_call_ctors()});function a(v){for(var b=new Uint8Array(v.length),y=0;y<v.length;++y){var _=v.charCodeAt(y);b[y]=_>96?_-97:_>64?_-39:_+4}for(var C=0,y=0;y<v.length;++y)b[C++]=b[y]<60?i[b[y]]:(b[y]-60)*64+b[++y];return b.buffer.slice(0,C)}function c(v,b,y,_,C,S){var T=r.exports.sbrk,x=y+3&-4,M=T(x*_),P=T(C.length),k=new Uint8Array(r.exports.memory.buffer);k.set(C,P);var G=v(M,y,_,P,C.length);if(G==0&&S&&S(M,x,_),b.set(k.subarray(M,M+y*_)),T(M-T(0)),G!=0)throw new Error("Malformed buffer data: "+G)}var l={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},h={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},d=[],f=0;function p(v){var b={object:new Worker(v),pending:0,requests:{}};return b.object.onmessage=function(y){var _=y.data;b.pending-=_.count,b.requests[_.id][_.action](_.value),delete b.requests[_.id]},b}function g(v){for(var b="var instance; var ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(a(s))+"]), {}).then(function(result) { instance = result.instance; instance.exports.__wasm_call_ctors(); });self.onmessage = workerProcess;"+c.toString()+A.toString(),y=new Blob([b],{type:"text/javascript"}),_=URL.createObjectURL(y),C=0;C<v;++C)d[C]=p(_);URL.revokeObjectURL(_)}function m(v,b,y,_,C){for(var S=d[0],T=1;T<d.length;++T)d[T].pending<S.pending&&(S=d[T]);return new Promise(function(x,M){var P=new Uint8Array(y),k=f++;S.pending+=v,S.requests[k]={resolve:x,reject:M},S.object.postMessage({id:k,count:v,size:b,source:P,mode:_,filter:C},[P.buffer])})}function A(v){o.then(function(){var b=v.data;try{var y=new Uint8Array(b.count*b.size);c(r.exports[b.mode],y,b.count,b.size,b.source,r.exports[b.filter]),self.postMessage({id:b.id,count:b.count,action:"resolve",value:y},[y.buffer])}catch(_){self.postMessage({id:b.id,count:b.count,action:"reject",value:_})}})}return{ready:o,supported:!0,useWorkers:function(v){g(v)},decodeVertexBuffer:function(v,b,y,_,C){c(r.exports.meshopt_decodeVertexBuffer,v,b,y,_,r.exports[l[C]])},decodeIndexBuffer:function(v,b,y,_){c(r.exports.meshopt_decodeIndexBuffer,v,b,y,_)},decodeIndexSequence:function(v,b,y,_){c(r.exports.meshopt_decodeIndexSequence,v,b,y,_)},decodeGltfBuffer:function(v,b,y,_,C,S){c(r.exports[h[C]],v,b,y,_,r.exports[l[S]])},decodeGltfBufferAsync:function(v,b,y,_,C){return d.length>0?m(v,b,y,h[_],l[C]):o.then(function(){var S=new Uint8Array(v*b);return c(r.exports[h[_]],S,v,b,y,r.exports[l[C]]),S})}}}();const nf=ce("debugdecoders"),DR="https://www.gstatic.com/draco/versioned/decoders/1.4.1/",kR="https://www.gstatic.com/basis-universal/versioned/2021-04-15-ba1c3e4/";let ko,Sw,wl;function OR(n){n!==void 0&&typeof n=="string"&&(ko||(ko=new W1),nf&&console.log("Setting draco decoder path to",n),ko.setDecoderPath(n))}function LR(n){n!==void 0&&typeof n=="string"&&(ko||(ko=new W1),nf&&console.log("Setting draco decoder type to",n),ko.setDecoderConfig({type:n}))}function FR(n){n!==void 0&&typeof n=="string"&&(wl||(wl=new Lo),nf&&console.log("Setting ktx2 transcoder path to",n),wl.setTranscoderPath(n))}function _A(n,e){ko||(ko=new W1,ko.setDecoderPath(DR),ko.setDecoderConfig({type:"js"}),nf&&console.log("Setting draco decoder path to",DR)),wl||(wl=new Lo,wl.setTranscoderPath(kR),nf&&console.log("Setting ktx2 transcoder path to",kR),e.renderer&&wl.detectSupport(e.renderer)),Sw||(Sw=p7,nf&&console.log("Using the default meshopt decoder")),n.setDRACOLoader(ko),n.setKTX2Loader(wl),n.setMeshoptDecoder(Sw)}class g7{constructor(){u(this,"_context")}get context(){return this._context??_t.Current}get isStateMachineBehaviour(){return!0}}class n0{constructor(e,t,i,s){u(this,"_name");u(this,"_nameHash");u(this,"_normalizedTime");u(this,"_length");u(this,"_speed");this._name=e.name,this._nameHash=e.hash,this._normalizedTime=t,this._length=i,this._speed=s}get name(){return this._name}get nameHash(){return this._nameHash}get normalizedTime(){return this._normalizedTime}get length(){return this._length}get speed(){return this._speed}}function EF(n,e){return{name:"",isLooping:!1,guid:(e==null?void 0:e.generateUUID())??Fs.generateUUID(),index:-1,clip:new lo(n,1,[])}}var _l=(n=>(n[n.If=1]="If",n[n.IfNot=2]="IfNot",n[n.Greater=3]="Greater",n[n.Less=4]="Less",n[n.Equals=6]="Equals",n[n.NotEqual=7]="NotEqual",n))(_l||{}),J1=(n=>(n[n.Float=1]="Float",n[n.Int=3]="Int",n[n.Bool=4]="Bool",n[n.Trigger=9]="Trigger",n))(J1||{});const Ko=ce("debuganimatorcontroller"),ry=ce("debugrootmotion");class mu{constructor(e){u(this,"normalizedStartOffset",0);u(this,"_speed",1);u(this,"animator");u(this,"model");u(this,"_mixer");u(this,"_activeState");u(this,"_activeStates",[]);u(this,"rootMotionHandler");this.model=e,Ko&&console.log(this)}play(e,t=-1,i=Number.NEGATIVE_INFINITY,s=0){if(t<0)t=0;else if(t>=this.model.layers.length){console.warn("invalid layer");return}const o=this.model.layers[t].stateMachine;for(const a of o.states)if(a.name===e||a.hash===e){Ko&&console.log("transition to ",a),this.transitionTo(a,s,i);return}console.warn("Could not find "+e+" to play")}reset(){this.setStartTransition()}setBool(e,t){var s,r;const i=typeof e=="string"?"name":"hash";return(r=(s=this.model)==null?void 0:s.parameters)==null?void 0:r.filter(o=>o[i]===e).forEach(o=>o.value=t)}getBool(e){var i,s,r;const t=typeof e=="string"?"name":"hash";return((r=(s=(i=this.model)==null?void 0:i.parameters)==null?void 0:s.find(o=>o[t]===e))==null?void 0:r.value)??!1}setFloat(e,t){var s,r;const i=typeof e=="string"?"name":"hash";return(r=(s=this.model)==null?void 0:s.parameters)==null?void 0:r.filter(o=>o[i]===e).forEach(o=>o.value=t)}getFloat(e){var i,s,r;const t=typeof e=="string"?"name":"hash";return((r=(s=(i=this.model)==null?void 0:i.parameters)==null?void 0:s.find(o=>o[t]===e))==null?void 0:r.value)??0}setInteger(e,t){var s,r;const i=typeof e=="string"?"name":"hash";return(r=(s=this.model)==null?void 0:s.parameters)==null?void 0:r.filter(o=>o[i]===e).forEach(o=>o.value=t)}getInteger(e){var i,s,r;const t=typeof e=="string"?"name":"hash";return((r=(s=(i=this.model)==null?void 0:i.parameters)==null?void 0:s.find(o=>o[t]===e))==null?void 0:r.value)??0}setTrigger(e){var i,s;Ko&&console.log("SET TRIGGER",e);const t=typeof e=="string"?"name":"hash";return(s=(i=this.model)==null?void 0:i.parameters)==null?void 0:s.filter(r=>r[t]===e).forEach(r=>r.value=!0)}resetTrigger(e){var i,s;const t=typeof e=="string"?"name":"hash";return(s=(i=this.model)==null?void 0:i.parameters)==null?void 0:s.filter(r=>r[t]===e).forEach(r=>r.value=!1)}isInTransition(){return this._activeStates.length>1}setSpeed(e){this._speed=e}FindState(e){return this.findState(e)}findState(e){if(!e)return null;if(Array.isArray(this.model.layers)){for(const t of this.model.layers)for(const i of t.stateMachine.states)if(i.name===e)return i}return null}get context(){var e;return(e=this.animator)==null?void 0:e.context}bind(e){this.animator=e,this._mixer=new Y_(this.animator.gameObject),this.createActions(this.animator)}clone(){if(typeof this.model=="string")return console.warn("AnimatorController has not been resolved, can not create model from string",this.model),null;const e=w_(this.model,(i,s,r)=>r==null?!0:!(r.type==="Object3D"||r.isObject3D===!0||aO(r)||r.tracks!==void 0));return console.assert(e!==this.model),new mu(e)}update(){var t,i;if(!this.animator||(this.evaluateTransitions(),this.updateActiveStates(),!this._activeState))return;const e=this.animator.context.time.deltaTime;this.animator.applyRootMotion&&((t=this.rootMotionHandler)==null||t.onBeforeUpdate()),this._mixer.update(e),this.animator.applyRootMotion&&((i=this.rootMotionHandler)==null||i.onAfterUpdate())}updateActiveStates(){for(let e=0;e<this._activeStates.length;e++){const t=this._activeStates[e],i=t.motion;if(!i.action)this._activeStates.splice(e,1),e--;else{const s=i.action;s.getEffectiveWeight()<=0&&!s.isRunning()&&(Ko&&console.debug("REMOVE",t.name,s.getEffectiveWeight(),s.isRunning(),s.isScheduled()),this._activeStates.splice(e,1),e--)}}}setStartTransition(){for(const e of this.model.layers){const t=e.stateMachine;t.defaultState===void 0&&(Ko&&console.warn("AnimatorController default state is undefined, will assign state 0 as default",e),t.defaultState=0);const i=t.states[t.defaultState];this.transitionTo(i,0,this.normalizedStartOffset)}}evaluateTransitions(){var r;let e=!1;if(!this._activeState){if(this.setStartTransition(),!this._activeState)return;e=!0}const t=this._activeState,i=t.motion.action;for(const o of t.transitions){if(!o.hasExitTime&&o.conditions.length<=0)continue;let a=!0;for(const c of o.conditions)if(!this.evaluateCondition(c)){a=!1;break}if(a){for(const c of o.conditions){const l=this.model.parameters.find(h=>h.name===c.parameter);(l==null?void 0:l.type)===J1.Trigger&&(l.value=!1)}if(i){const c=t.motion.clip.duration,l=c<=0?1:Math.abs(i.time/c);let h=!1;if(o.hasExitTime?i.timeScale>0?h=l>=o.exitTime:i.timeScale<0&&(h=1-l>=o.exitTime):h=!0,h){i.clampWhenFinished=!0,Ko&&console.log("transition to "+o.destinationState,o,l,o.exitTime,o.hasExitTime),this.transitionTo(o.destinationState,o.duration,o.offset);return}}else{this.transitionTo(o.destinationState,o.duration,o.offset);return}}}let s=!1;if(t.motion.isLooping&&i&&(i.time>=i.getClip().duration?(s=!0,i.reset(),i.time=0,i.play()):i.time<=0&&i.timeScale<0&&(s=!0,i.reset(),i.time=i.getClip().duration,i.play())),!s&&t&&!e&&i&&this.animator&&t.behaviours){const o=i==null?void 0:i.getClip().duration,a=i.time/o,c=new n0(this._activeState,a,o,this._speed);for(const l of t.behaviours)l.instance&&((r=l.instance.onStateUpdate)==null||r.call(l.instance,this.animator,c,0))}}getState(e,t){return typeof e=="number"&&(e==-1&&(e=this.model.layers[t].stateMachine.defaultState,e===void 0&&(Ko&&console.warn("AnimatorController default state is undefined: ",this.model,"Layer: "+t),e=0)),e=this.model.layers[t].stateMachine.states[e]),e}transitionTo(e,t,i){var l,h,d,f,p,g,m,A;if(!this.animator)return;const s=0;if(e=this.getState(e,s),!(e!=null&&e.motion)||!e.motion.clip)return;const r=this._activeState===e;if(r){const v=e.motion;!v.action_loopback&&v.clip&&(this._mixer.uncacheAction(v.clip,this.animator.gameObject),v.action_loopback=this.createAction(v.clip))}if((l=this._activeState)!=null&&l.behaviours&&this._activeState.motion.action){const v=(h=this._activeState)==null?void 0:h.motion.clip.duration,b=this._activeState.motion.action.time/v,y=new n0(this._activeState,b,v,this._speed);for(const _ of this._activeState.behaviours)(f=(d=_.instance)==null?void 0:d.onStateExit)==null||f.call(_.instance,this.animator,y,s)}const o=(p=this._activeState)==null?void 0:p.motion.action;o&&o.fadeOut(t),r&&(e.motion.action=e.motion.action_loopback,e.motion.action_loopback=o);const a=this._activeState;this._activeState=e;const c=(g=e.motion)==null?void 0:g.action;if(c){i=Math.max(0,Math.min(1,i)),c.isRunning()&&c.stop(),c.reset(),c.timeScale=this._speed,e.speed!==void 0&&(c.timeScale*=e.speed),c.enabled=!0;const v=e.motion.clip.duration;if(c.time=i*v,c.timeScale<0&&(c.time=v-c.time),c.clampWhenFinished=!0,c.setLoop(om,0),t>0?c.fadeIn(t):c.setEffectiveWeight(1),c.play(),this.rootMotionHandler&&this.rootMotionHandler.onStart(c),this._activeStates.includes(e)||this._activeStates.push(e),this._activeState.behaviours){const b=new n0(e,i,v,this._speed);for(const y of this._activeState.behaviours)(A=(m=y.instance)==null?void 0:m.onStateEnter)==null||A.call(y.instance,this.animator,b,s)}}else Ko&&(e.__warned_no_motion||(e.__warned_no_motion=!0,console.warn("No action",e.motion,this)));Ko&&console.log("TRANSITION FROM "+(a==null?void 0:a.name)+" TO "+e.name,t,o,c,c==null?void 0:c.getEffectiveTimeScale(),c==null?void 0:c.getEffectiveWeight(),c==null?void 0:c.isRunning(),c==null?void 0:c.isScheduled(),c==null?void 0:c.paused)}createAction(e){var i,s;if(this._mixer.existingAction(e)&&this._mixer.uncacheAction(e,(i=this.animator)==null?void 0:i.gameObject),(s=this.animator)!=null&&s.applyRootMotion){this.rootMotionHandler||(this.rootMotionHandler=new m7(this));const r=this.animator.gameObject;return this.rootMotionHandler.createClip(this._mixer,r,e)}else return this._mixer.clipAction(e)}evaluateCondition(e){const t=this.model.parameters.find(i=>i.name===e.parameter);if(!t)return!1;switch(e.mode){case _l.If:return t.value===!0;case _l.IfNot:return t.value===!1;case _l.Greater:return t.value>e.threshold;case _l.Less:return t.value<e.threshold;case _l.Equals:return t.value===e.threshold;case _l.NotEqual:return t.value!==e.threshold}return!1}createActions(e){var t,i;for(const s of this.model.layers){const r=s.stateMachine;for(let o=0;o<r.states.length;o++){const a=r.states[o];a.transitions||(a.transitions=[]);for(const c of a.transitions)c.conditions||(c.conditions=[]);if(a.motion||(a.motion=EF(a.name)),this.animator&&a.motion.clips){const c=(t=a.motion.clips)==null?void 0:t.find(l=>{var h,d;return l.node.name===((d=(h=this.animator)==null?void 0:h.gameObject)==null?void 0:d.name)});a.motion.clip=c==null?void 0:c.clip}if(!a.motion.clip){const c=new lo(void 0,void 0,[]);a.motion.clip=c}if((i=a.motion)!=null&&i.clip){const c=a.motion.clip,l=this.createAction(c);a.motion.action=l}if(a.behaviours&&Array.isArray(a.behaviours))for(const c of a.behaviours){if(!(c!=null&&c.typeName))continue;const l=Q.get(c.typeName),h=new l;h.isStateMachineBehaviour&&(h._context=this.context??void 0,pu(h,c.properties),c.instance=h),Ko&&console.log("Created animator controller behaviour",a.name,c.typeName,c.properties,h)}}}}*enumerateActions(){for(const e of this.model.layers){const t=e.stateMachine;for(let i=0;i<t.states.length;i++){const s=t.states[i];s!=null&&s.motion&&(s.motion.action&&(yield s.motion.action),s.motion.action_loopback&&(yield s.motion.action_loopback))}}}}class UR{constructor(e,t){u(this,"track");u(this,"createdInterpolant");u(this,"originalEvaluate");u(this,"customEvaluate");this.track=e;const i=e,s=i.createInterpolant.bind(e);i.createInterpolant=()=>(i.createInterpolant=s,this.createdInterpolant=s(),this.originalEvaluate=this.createdInterpolant.evaluate.bind(this.createdInterpolant),this.customEvaluate=r=>{if(!this.originalEvaluate)return;const o=this.originalEvaluate(r);return t(r,o)},this.createdInterpolant.evaluate=this.customEvaluate,this.createdInterpolant)}evaluate(e){this.customEvaluate&&this.customEvaluate(e)}dispose(){this.createdInterpolant&&this.originalEvaluate&&(this.createdInterpolant.evaluate=this.originalEvaluate),this.track=void 0,this.createdInterpolant=null,this.originalEvaluate=void 0,this.customEvaluate=void 0}}const gn=class{constructor(e,t,i,s,r){u(this,"_action");u(this,"root");u(this,"clip");u(this,"positionWrapper",null);u(this,"rotationWrapper",null);u(this,"context");u(this,"positionChange",new E);u(this,"rotationChange",new xe);if(this.context=e,this.root=t,this.clip=i,gn.firstKeyframeRotation[i.uuid]||(gn.firstKeyframeRotation[i.uuid]=new xe),r){const o=r.values;gn.firstKeyframeRotation[i.uuid].set(o[0],o[1],o[2],o[3])}gn.spaceRotation[i.uuid]||(gn.spaceRotation[i.uuid]=new xe),gn.effectiveSpaceRotation[i.uuid]||(gn.effectiveSpaceRotation[i.uuid]=new xe),gn.clipOffsetRotation[i.uuid]=new xe,r&&gn.clipOffsetRotation[i.uuid].set(r.values[0],r.values[1],r.values[2],r.values[3]).invert(),this.handlePosition(i,s),this.handleRotation(i,r)}set action(e){this._action=e}get action(){return this._action}onStart(e){if(e.getClip()!==this.clip)return;const t=gn.lastObjRotation[this.root.uuid];if(gn.spaceRotation[this.clip.uuid].copy(t),ry){const i=new _n().setFromQuaternion(t);console.log("START",this.clip.name,Ze.toDegrees(i.y))}}getClipRotationOffset(){return gn.clipOffsetRotation[this.clip.uuid]}handlePosition(e,t){if(t){const i=this.root;ry&&i.add(new Nf),gn.lastObjPosition[i.uuid]||(gn.lastObjPosition[i.uuid]=new E);const s=new E,r=new E;let o=0;this.positionWrapper=new UR(t,(a,c)=>{const l=this.action.getEffectiveWeight();if(ry&&i.position.length()>8&&i.position.set(0,i.position.y,0),a>o){s.set(c[0],c[1],c[2]),s.sub(r),s.multiplyScalar(l),s.applyQuaternion(this.getClipRotationOffset());const h=this.clip.uuid;s.applyQuaternion(gn.spaceRotation[h]),this.positionChange.copy(s)}return r.fromArray(c),o=a,c[0]=0,c[1]=0,c[2]=0,c})}}handleRotation(e,t){if(t){if(ry){const a=t.values,c=new _n().setFromQuaternion(new xe(a[0],a[1],a[2],a[3]));console.log(e.name,t.name,"FIRST ROTATION IN TRACK",Ze.toDegrees(c.y));const l=t.values.length-4,h=new xe().set(a[l],a[l+1],a[l+2],a[l+3]),d=new _n().setFromQuaternion(h);console.log(e.name,t.name,"LAST ROTATION IN TRACK",Ze.toDegrees(d.y))}const i=this.root;gn.lastObjRotation[i.uuid]||(gn.lastObjRotation[i.uuid]=new xe);let s=0;const r=new xe,o=new xe;this.rotationWrapper=new UR(t,(a,c)=>(a>s&&(o.set(c[0],c[1],c[2],c[3]),r.invert(),o.multiply(r),this.rotationChange.copy(o)),r.fromArray(c),s=a,c[0]=0,c[1]=0,c[2]=0,c[3]=1,c))}}onBeforeUpdate(){this.positionChange.set(0,0,0),this.rotationChange.set(0,0,0,1)}onAfterUpdate(){if(!this.action)return;const e=this.action.getEffectiveWeight();this.positionChange.multiplyScalar(e),this.rotationChange.slerp(gn.identityQuaternion,1-e)}};let Io=gn;u(Io,"lastObjPosition",{}),u(Io,"lastObjRotation",{}),u(Io,"firstKeyframeRotation",{}),u(Io,"spaceRotation",{}),u(Io,"effectiveSpaceRotation",{}),u(Io,"clipOffsetRotation",{}),u(Io,"identityQuaternion",new xe);class m7{constructor(e){u(this,"controller");u(this,"handler",[]);u(this,"root");u(this,"summedPosition",new E);u(this,"summedRotation",new xe);this.controller=e}createClip(e,t,i){this.root=t,t&&"name"in t&&t.name;const s=this.findRootTrack(i,".position"),r=this.findRootTrack(i,".quaternion"),o=new Io(this.controller.context,t,i,s,r);this.handler.push(o);const a=e.clipAction(i);return o.action=a,a}onStart(e){for(const t of this.handler)t.onStart(e)}onBeforeUpdate(){for(const e of this.handler)e.onBeforeUpdate()}onAfterUpdate(){this.summedPosition.set(0,0,0),this.summedRotation.set(0,0,0,1);for(const e of this.handler)e.onAfterUpdate(),this.summedPosition.add(e.positionChange),this.summedRotation.multiply(e.rotationChange);this.root.position.add(this.summedPosition),this.root.quaternion.multiply(this.summedRotation),Io.lastObjRotation[this.root.uuid].copy(this.root.quaternion)}findRootTrack(e,t){const i=e.tracks;if(!i)return null;for(const s of i)if(s.name.endsWith(t))return s;return null}}const Wf=function(n){return w(n)},w=function(n){if(n===void 0&&(n=null),!Array.isArray(n))n=NR(n);else for(let e=0;e<n.length;e++){const t=n[e];n[e]=NR(t)}return function(e,t){Object.getOwnPropertyDescriptor(e,"$serializedTypes")||(e.$serializedTypes={});const i=e.$serializedTypes=e.$serializedTypes||{};i[t]=n}};function NR(n){var e,t;switch((t=(e=n==null?void 0:n.prototype)==null?void 0:e.constructor)==null?void 0:t.name){case"Number":case"String":case"Boolean":return null}return n}var A7=Object.defineProperty,v7=Object.getOwnPropertyDescriptor,Ab=(n,e,t,i)=>{for(var s=i>1?void 0:i?v7(e,t):e,r=n.length-1,o;r>=0;r--)(o=n[r])&&(s=(i?o(e,t,s):o(s))||s);return i&&s&&A7(e,t,s),s};const Ew=ce("debuganimator");class ar extends Ce{constructor(){super(...arguments);u(this,"applyRootMotion",!1);u(this,"hasRootMotion",!1);u(this,"keepAnimatorControllerStateOnDisable",!1);u(this,"speed",1);u(this,"normalizedStartOffset",0);u(this,"_animatorController",null)}set runtimeAnimatorController(t){this._animatorController&&this._animatorController.model===t||(t?t instanceof mu?this._animatorController=t:(Ew&&console.log("Assign animator controller",t,this),this._animatorController=new mu(t)):this._animatorController=null)}get runtimeAnimatorController(){return this._animatorController}Play(t,i=-1,s=Number.NEGATIVE_INFINITY,r=0){this.play(t,i,s,r)}play(t,i=-1,s=Number.NEGATIVE_INFINITY,r=0){var o;(o=this.runtimeAnimatorController)==null||o.play(t,i,s,r)}Reset(){this.reset()}reset(){var t;(t=this._animatorController)==null||t.reset()}SetBool(t,i){this.setBool(t,i)}setBool(t,i){var s;(s=this.runtimeAnimatorController)==null||s.setBool(t,i)}GetBool(t){return this.getBool(t)}getBool(t){var i;return((i=this.runtimeAnimatorController)==null?void 0:i.getBool(t))??!1}SetFloat(t,i){this.setFloat(t,i)}setFloat(t,i){var s;(s=this.runtimeAnimatorController)==null||s.setFloat(t,i)}GetFloat(t){return this.getFloat(t)}getFloat(t){var i;return((i=this.runtimeAnimatorController)==null?void 0:i.getFloat(t))??-1}SetInteger(t,i){this.setInteger(t,i)}setInteger(t,i){var s;(s=this.runtimeAnimatorController)==null||s.setInteger(t,i)}GetInteger(t){return this.getInteger(t)}getInteger(t){var i;return((i=this.runtimeAnimatorController)==null?void 0:i.getInteger(t))??-1}SetTrigger(t){this.setTrigger(t)}setTrigger(t){var i;Ew&&console.log("SetTrigger",t),(i=this.runtimeAnimatorController)==null||i.setTrigger(t)}ResetTrigger(t){this.resetTrigger(t)}resetTrigger(t){var i;(i=this.runtimeAnimatorController)==null||i.resetTrigger(t)}IsInTransition(){return this.isInTransition()}isInTransition(){var t;return((t=this.runtimeAnimatorController)==null?void 0:t.isInTransition())??!1}SetSpeed(t){return this.setSpeed(t)}setSpeed(t){var i;t!==this.speed&&(this.speed=t,(i=this._animatorController)==null||i.setSpeed(t))}set minMaxSpeed(t){this.speed=Ze.lerp(t.x,t.y,Math.random())}set minMaxOffsetNormalized(t){this.normalizedStartOffset=Ze.lerp(t.x,t.y,Math.random()),this.runtimeAnimatorController&&(this.runtimeAnimatorController.normalizedStartOffset=this.normalizedStartOffset)}awake(){if(Ew&&console.log("ANIMATOR",this.name,this),!!this.gameObject&&this.runtimeAnimatorController){const t=this.runtimeAnimatorController.clone();t?(console.assert(this.runtimeAnimatorController!==t),this.runtimeAnimatorController=t,console.assert(this.runtimeAnimatorController===t),this.runtimeAnimatorController.bind(this),this.runtimeAnimatorController.setSpeed(this.speed),this.runtimeAnimatorController.normalizedStartOffset=this.normalizedStartOffset):console.warn("Could not clone animator controller",this.runtimeAnimatorController)}}onDisable(){var t;this.keepAnimatorControllerStateOnDisable||(t=this._animatorController)==null||t.reset()}onBeforeRender(){this._animatorController&&this._animatorController.update()}}Ab([w()],ar.prototype,"applyRootMotion",2);Ab([w()],ar.prototype,"hasRootMotion",2);Ab([w()],ar.prototype,"keepAnimatorControllerStateOnDisable",2);Ab([w()],ar.prototype,"runtimeAnimatorController",1);var y7=Object.defineProperty,_7=Object.getOwnPropertyDescriptor,bA=(n,e,t,i)=>{for(var s=i>1?void 0:i?_7(e,t):e,r=n.length-1,o;r>=0;r--)(o=n[r])&&(s=(i?o(e,t,s):o(s))||s);return i&&s&&y7(e,t,s),s};const hl=ce("debuganimation");class Uo extends Ce{constructor(){super(...arguments);u(this,"playAutomatically",!0);u(this,"randomStartTime",!0);u(this,"minMaxSpeed");u(this,"minMaxOffsetNormalized");u(this,"loop",!0);u(this,"clampWhenFinished",!1);u(this,"_tempAnimationClipBeforeGameObjectExisted",null);u(this,"mixer");u(this,"_actions",[]);u(this,"_currentActions",[]);u(this,"_handles",[]);u(this,"_didInit",!1)}get clip(){var t;return(t=this.animations)!=null&&t.length?this.animations[0]:null}set clip(t){if(!this.__didAwake){hl&&console.log("Assign clip during serialization",t),this._tempAnimationClipBeforeGameObjectExisted=t;return}t&&(hl&&console.log("Assign clip",t,!!this.gameObject),this.gameObject.animations||(this.gameObject.animations=[]),!this.animations.includes(t)&&(this.animations.length>0?this.animations.splice(0,0,t):this.animations.push(t)))}set clips(t){this.animations=t}set animations(t){hl&&console.log("assign animations",t),this.gameObject.animations=t}get animations(){return this.gameObject.animations}get currentAction(){return this._currentActions[0]}get currentActions(){return this._currentActions}get actions(){return this._actions}set actions(t){this._actions=t}awake(){hl&&console.log(this),this._tempAnimationClipBeforeGameObjectExisted&&(this.clip=this._tempAnimationClipBeforeGameObjectExisted,this._tempAnimationClipBeforeGameObjectExisted=null),this.playAutomatically&&this.init()}onEnable(){var t;if(this.playAutomatically&&((t=this.animations)==null?void 0:t.length)>0&&this.currentActions.length<=0){const i=Math.floor(Math.random()*this.actions.length);this.play(i)}}start(){this.randomStartTime&&this.currentAction&&(this.currentAction.time=Math.random()*this.currentAction.getClip().duration)}update(){this.mixer&&this.mixer.update(this.context.time.deltaTime)}getAction(t){var i;return(i=this.actions)==null?void 0:i.find(s=>s.getClip().name===t)}get isPlaying(){for(let t=0;t<this._currentActions.length;t++)if(this._currentActions[t].isRunning())return!0;return!1}play(t=0,i){if(hl&&console.log("PLAY",t),this.init(),!this.mixer){hl&&console.warn("Missing mixer",this);return}t===void 0&&(t=0);let s=t;if(typeof t=="number"){if(t>=this.animations.length){hl&&console.log("No animation at index",t);return}s=this.animations[t]}else typeof t=="string"&&(s=this.animations.find(o=>o.name===t));if(!s){console.error("Could not find clip",t);return}i||(i={}),i.minMaxOffsetNormalized||(i.minMaxOffsetNormalized=this.minMaxOffsetNormalized),i.minMaxSpeed||(i.minMaxSpeed=this.minMaxSpeed),i.loop===void 0&&(i.loop=this.loop),i.clampWhenFinished===void 0&&(i.clampWhenFinished=this.clampWhenFinished);for(const o of this.actions)if(o.getClip()===s)return this.internalOnPlay(o,i);if(!(s instanceof lo)){console.warn("Clip is no AnimationClip",s,"on object: "+this.name);return}const r=this.mixer.clipAction(s);return this.actions.push(r),this.internalOnPlay(r,i)}internalOnPlay(t,i){var s=this.currentAction;if(s===t&&s.isRunning()&&s.time<s.getClip().duration){const c=this.tryFindHandle(t);if(c)return c.getPromise()}const r=(i==null?void 0:i.exclusive)??!0;i!=null&&i.fadeDuration?(r&&(s==null||s.fadeOut(i.fadeDuration)),t.fadeIn(i.fadeDuration)):r&&(s==null||s.stop()),t.reset(),t.enabled=!0,t.time=0,t.timeScale=1;const o=t.getClip();i!=null&&i.minMaxOffsetNormalized&&(t.time=Ze.lerp(i.minMaxOffsetNormalized.x,i.minMaxOffsetNormalized.y,Math.random())*o.duration),i!=null&&i.minMaxSpeed&&(t.timeScale=Ze.lerp(i.minMaxSpeed.x,i.minMaxSpeed.y,Math.random())),i!=null&&i.clampWhenFinished&&(t.clampWhenFinished=!0),(i==null?void 0:i.startTime)!==void 0&&(t.time=i.startTime),(i==null?void 0:i.loop)!==void 0?t.loop=i.loop?DE:om:t.loop=om,t.play(),hl&&console.log("PLAY",t.getClip().name,t);const a=new b7(t,this.mixer,i,c=>{this._handles.splice(this._handles.indexOf(a),1)});return this._handles.push(a),a.getPromise()}tryFindHandle(t){for(const i of this._handles)if(i.action===t)return i}init(){this._didInit||(this._didInit=!0,this.gameObject&&(this.actions=[],this.mixer=new Y_(this.gameObject)))}}bA([w()],Uo.prototype,"playAutomatically",2);bA([w()],Uo.prototype,"randomStartTime",2);bA([w()],Uo.prototype,"loop",2);bA([w()],Uo.prototype,"clampWhenFinished",2);bA([w(lo)],Uo.prototype,"clips",1);class b7{constructor(e,t,i,s){u(this,"mixer");u(this,"action");u(this,"promise",null);u(this,"resolve",null);u(this,"reject",null);u(this,"_options");u(this,"_resolveCallback",null);u(this,"_rejectCallback",null);u(this,"_loopCallback");u(this,"_finishedCallback");u(this,"_resolvedOrRejectedCallback");this.action=e,this.mixer=t,this._resolvedOrRejectedCallback=s,this._options=i}getPromise(){return this.promise?this.promise:(this.promise=new Promise((e,t)=>{this._resolveCallback=e,this._rejectCallback=t,this.resolve=this.onResolve.bind(this),this.reject=this.onReject.bind(this)}),this._loopCallback=this.onLoop.bind(this),this._finishedCallback=this.onFinished.bind(this),this.mixer.addEventListener("loop",this._loopCallback),this.mixer.addEventListener("finished",this._finishedCallback),this.promise)}_update(){this._options&&this._options.endTime!==void 0&&this.action.time>this._options.endTime&&(this._options.loop===!0?this.action.time=this._options.startTime??0:(this.action.time=this._options.endTime,this.action.timeScale=0,this.onResolve()))}onResolve(){var e,t;this.dispose(),(e=this._resolvedOrRejectedCallback)==null||e.call(this,this),(t=this._resolveCallback)==null||t.call(this,this.action)}onReject(e){var t,i;this.dispose(),(t=this._resolvedOrRejectedCallback)==null||t.call(this,this),(i=this._rejectCallback)==null||i.call(this,e)}onLoop(e){}onFinished(e){e.action===this.action&&this.onResolve()}dispose(){this._loopCallback&&this.mixer.removeEventListener("loop",this._loopCallback),this._finishedCallback&&this.mixer.removeEventListener("finished",this._finishedCallback),this._loopCallback=void 0,this._finishedCallback=void 0}}class qf extends Cs{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.animationPointerResolver=null,this.pluginCallbacks=[],this.register(function(t){return new E7(t)}),this.register(function(t){return new k7(t)}),this.register(function(t){return new O7(t)}),this.register(function(t){return new T7(t)}),this.register(function(t){return new P7(t)}),this.register(function(t){return new R7(t)}),this.register(function(t){return new B7(t)}),this.register(function(t){return new S7(t)}),this.register(function(t){return new D7(t)}),this.register(function(t){return new M7(t)}),this.register(function(t){return new w7(t)}),this.register(function(t){return new L7(t)}),this.register(function(t){return new F7(t)}),this.register(function(t){return new I7(t)})}load(e,t,i,s){const r=this;let o;this.resourcePath!==""?o=this.resourcePath:this.path!==""?o=this.path:o=Ca.extractUrlBase(e),this.manager.itemStart(e);const a=function(l){s?s(l):console.error(l),r.manager.itemError(e),r.manager.itemEnd(e)},c=new Rn(this.manager);c.setPath(this.path),c.setResponseType("arraybuffer"),c.setRequestHeader(this.requestHeader),c.setWithCredentials(this.withCredentials),c.load(e,function(l){try{r.parse(l,o,function(h){t(h),r.manager.itemEnd(e)},a)}catch(h){a(h)}},i,a)}setDRACOLoader(e){return this.dracoLoader=e,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}setAnimationPointerResolver(e){return this.animationPointerResolver=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,i,s){let r;const o={},a={};if(typeof e=="string")r=JSON.parse(e);else if(e instanceof ArrayBuffer)if(Ca.decodeText(new Uint8Array(e,0,4))===IF){try{o[zt.KHR_BINARY_GLTF]=new U7(e)}catch(h){s&&s(h);return}r=JSON.parse(o[zt.KHR_BINARY_GLTF].content)}else r=JSON.parse(Ca.decodeText(new Uint8Array(e)));else r=e;if(r.asset===void 0||r.asset.version[0]<2){s&&s(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const c=new Y7(r,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder,animationPointerResolver:this.animationPointerResolver});c.fileLoader.setRequestHeader(this.requestHeader);for(let l=0;l<this.pluginCallbacks.length;l++){const h=this.pluginCallbacks[l](c);a[h.name]=h,o[h.name]=!0}if(r.extensionsUsed)for(let l=0;l<r.extensionsUsed.length;++l){const h=r.extensionsUsed[l],d=r.extensionsRequired||[];switch(h){case zt.KHR_MATERIALS_UNLIT:o[h]=new C7;break;case zt.KHR_DRACO_MESH_COMPRESSION:o[h]=new N7(r,this.dracoLoader);break;case zt.KHR_TEXTURE_TRANSFORM:o[h]=new z7;break;case zt.KHR_MESH_QUANTIZATION:o[h]=new G7;break;default:d.indexOf(h)>=0&&a[h]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+h+'".')}}c.setExtensions(o),c.setPlugins(a),c.parse(i,s)}parseAsync(e,t){const i=this;return new Promise(function(s,r){i.parse(e,t,s,r)})}}function x7(){let n={};return{get:function(e){return n[e]},add:function(e,t){n[e]=t},remove:function(e){delete n[e]},removeAll:function(){n={}}}}const zt={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",KHR_ANIMATION_POINTER:"KHR_animation_pointer",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class w7{constructor(e){this.parser=e,this.name=zt.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let i=0,s=t.length;i<s;i++){const r=t[i];r.extensions&&r.extensions[this.name]&&r.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,r.extensions[this.name].light)}}_loadLight(e){const t=this.parser,i="light:"+e;let s=t.cache.get(i);if(s)return s;const r=t.json,c=((r.extensions&&r.extensions[this.name]||{}).lights||[])[e];let l;const h=new _e(16777215);c.color!==void 0&&h.fromArray(c.color);const d=c.range!==void 0?c.range:0;switch(c.type){case"directional":l=new j_(h),l.target.position.set(0,0,-1),l.add(l.target);break;case"point":l=new V_(h),l.distance=d;break;case"spot":l=new H_(h),l.distance=d,c.spot=c.spot||{},c.spot.innerConeAngle=c.spot.innerConeAngle!==void 0?c.spot.innerConeAngle:0,c.spot.outerConeAngle=c.spot.outerConeAngle!==void 0?c.spot.outerConeAngle:Math.PI/4,l.angle=c.spot.outerConeAngle,l.penumbra=1-c.spot.innerConeAngle/c.spot.outerConeAngle,l.target.position.set(0,0,-1),l.add(l.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+c.type)}return l.position.set(0,0,0),l.decay=2,bl(l,c),c.intensity!==void 0&&(l.intensity=c.intensity),l.name=t.createUniqueName(c.name||"light_"+e),s=Promise.resolve(l),t.cache.add(i,s),s}getDependency(e,t){if(e==="light")return this._loadLight(t)}createNodeAttachment(e){const t=this,i=this.parser,r=i.json.nodes[e],a=(r.extensions&&r.extensions[this.name]||{}).light;return a===void 0?null:this._loadLight(a).then(function(c){return i._getNodeRef(t.cache,a,c)})}}let C7=class{constructor(){this.name=zt.KHR_MATERIALS_UNLIT}getMaterialType(){return vi}extendParams(e,t,i){const s=[];e.color=new _e(1,1,1),e.opacity=1;const r=t.pbrMetallicRoughness;if(r){if(Array.isArray(r.baseColorFactor)){const o=r.baseColorFactor;e.color.fromArray(o),e.opacity=o[3]}r.baseColorTexture!==void 0&&s.push(i.assignTexture(e,"map",r.baseColorTexture,yt))}return Promise.all(s)}};class S7{constructor(e){this.parser=e,this.name=zt.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){const s=this.parser.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const r=s.extensions[this.name].emissiveStrength;return r!==void 0&&(t.emissiveIntensity=r),Promise.resolve()}}let E7=class{constructor(e){this.parser=e,this.name=zt.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const i=this.parser.json.materials[e];return!i.extensions||!i.extensions[this.name]?null:Da}extendMaterialParams(e,t){const i=this.parser,s=i.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const r=[],o=s.extensions[this.name];if(o.clearcoatFactor!==void 0&&(t.clearcoat=o.clearcoatFactor),o.clearcoatTexture!==void 0&&r.push(i.assignTexture(t,"clearcoatMap",o.clearcoatTexture)),o.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=o.clearcoatRoughnessFactor),o.clearcoatRoughnessTexture!==void 0&&r.push(i.assignTexture(t,"clearcoatRoughnessMap",o.clearcoatRoughnessTexture)),o.clearcoatNormalTexture!==void 0&&(r.push(i.assignTexture(t,"clearcoatNormalMap",o.clearcoatNormalTexture)),o.clearcoatNormalTexture.scale!==void 0)){const a=o.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new q(a,a)}return Promise.all(r)}};class I7{constructor(e){u(this,"ANIMATION_TARGET_TYPE",{node:"node",material:"material",camera:"camera",light:"light"});u(this,"_animationPointerDebug",!1);u(this,"_havePatchedPropertyBindings",!1);this.parser=e,this.name=zt.KHR_ANIMATION_POINTER}_patchPropertyBindingFindNode(){if(this._havePatchedPropertyBindings)return;this._havePatchedPropertyBindings=!0;const e=Nt.findNode;Nt.findNode=(t,i)=>{if(i.startsWith(".materials.")){this._animationPointerDebug&&console.log("FIND",i);const s=i.substring(11).substring(i.indexOf(".")),r=s.indexOf("."),o=r<0?s:s.substring(0,r);let a=null;return t.traverse(c=>{var l,h;a!==null||c.type!=="Mesh"||(((l=c.material)==null?void 0:l.uuid)===o||((h=c.material)==null?void 0:h.name)===o)&&(a=c.material,this._animationPointerDebug&&console.log(a,s),a!==null&&(s.endsWith(".map")?a=a.map:s.endsWith(".emissiveMap")&&(a=a.emissiveMap)))}),a}else if(i.startsWith(".nodes.")||i.startsWith(".lights.")||i.startsWith(".cameras.")){const s=i.split(".");let r;for(let o=1;o<s.length;o++){const a=s[o];if(a.length==36)r=t.getObjectByProperty("uuid",a);else if(r&&r[a]){const l=Number.parseInt(a);let h=a;l>=0&&(h=l),r=r[h],this._animationPointerDebug&&console.log(r)}else{const l=t.getObjectByName(a);l&&(r=l)}}if(!r){const o=e(t,s[2]);return o||console.warn(zt.KHR_ANIMATION_POINTER+": Property binding not found",i,t,t.name,s),o}return this._animationPointerDebug&&console.log("NODE",i,r),r}return e(t,i)}}loadAnimationTargetFromChannel(e){this._havePatchedPropertyBindings||this._patchPropertyBindingFindNode();const t=e.target,i=t.extensions&&t.extensions[zt.KHR_ANIMATION_POINTER]&&t.path&&t.path==="pointer";if(!i)return null;let s,r=this.ANIMATION_TARGET_TYPE.node,o;if(i){const c=t.extensions[zt.KHR_ANIMATION_POINTER];let l=c.pointer;if(this._animationPointerDebug&&console.log("Original path: "+l,t),!l){console.warn("Invalid path",c,t);return}if(l.startsWith("/materials/")?r=this.ANIMATION_TARGET_TYPE.material:l.startsWith("/extensions/KHR_lights_punctual/lights/")?r=this.ANIMATION_TARGET_TYPE.light:l.startsWith("/cameras/")&&(r=this.ANIMATION_TARGET_TYPE.camera),o=this._tryResolveTargetId(l,r),o===null||isNaN(o)){console.warn("Failed resolving animation node id: "+o,l);return}else this._animationPointerDebug&&console.log("Resolved node ID for "+r,o);switch(r){case this.ANIMATION_TARGET_TYPE.material:const d=("/materials/"+o.toString()+"/").length,f=l.substring(0,d);switch(s=l.substring(d),s){case"pbrMetallicRoughness/baseColorFactor":s="color";break;case"pbrMetallicRoughness/roughnessFactor":s="roughness";break;case"pbrMetallicRoughness/metallicFactor":s="metalness";break;case"emissiveFactor":s="emissive";break;case"alphaCutoff":s="alphaTest";break;case"occlusionTexture/strength":s="aoMapIntensity";break;case"normalTexture/scale":s="normalScale";break;case"pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/scale":s="map/repeat";break;case"pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/offset":s="map/offset";break;case"emissiveTexture/extensions/KHR_texture_transform/scale":s="emissiveMap/repeat";break;case"emissiveTexture/extensions/KHR_texture_transform/offset":s="emissiveMap/offset";break;case"extensions/KHR_materials_emissive_strength/emissiveStrength":s="emissiveIntensity";break;case"extensions/KHR_materials_transmission/transmissionFactor":s="transmission";break;case"extensions/KHR_materials_ior/ior":s="ior";break;case"extensions/KHR_materials_volume/thicknessFactor":s="thickness";break;case"extensions/KHR_materials_volume/attenuationColor":s="attenuationColor";break;case"extensions/KHR_materials_volume/attenuationDistance":s="attenuationDistance";break;case"extensions/KHR_materials_iridescence/iridescenceFactor":s="iridescence";break;case"extensions/KHR_materials_iridescence/iridescenceIor":s="iridescenceIOR";break;case"extensions/KHR_materials_iridescence/iridescenceThicknessMinimum":s="iridescenceThicknessRange[0]";break;case"extensions/KHR_materials_iridescence/iridescenceThicknessMaximum":s="iridescenceThicknessRange[1]";break;case"extensions/KHR_materials_clearcoat/clearcoatFactor":s="clearcoat";break;case"extensions/KHR_materials_clearcoat/clearcoatRoughnessFactor":s="clearcoatRoughness";break;case"extensions/KHR_materials_sheen/sheenColorFactor":s="sheenColor";break;case"extensions/KHR_materials_sheen/sheenRoughnessFactor":s="sheenRoughness";break;case"extensions/KHR_materials_specular/specularFactor":s="specularIntensity";break;case"extensions/KHR_materials_specular/specularColorFactor":s="specularColor";break}l=f+s,this._animationPointerDebug&&console.log("PROPERTY PATH",f,s,l);break;case this.ANIMATION_TARGET_TYPE.node:const p=("/nodes/"+o.toString()+"/").length,g=l.substring(0,p);switch(s=l.substring(p),s){case"translation":s="position";break;case"rotation":s="quaternion";break;case"scale":s="scale";break;case"weights":s="morphTargetInfluences";break}l=g+s;break;case this.ANIMATION_TARGET_TYPE.light:const m=("/extensions/KHR_lights_punctual/lights/"+o.toString()+"/").length;switch(s=l.substring(m),s){case"color":break;case"intensity":break;case"spot/innerConeAngle":s="penumbra";break;case"spot/outerConeAngle":s="angle";break;case"range":s="distance";break}l="/lights/"+o.toString()+"/"+s;break;case this.ANIMATION_TARGET_TYPE.camera:const A=("/cameras/"+o.toString()+"/").length,v=l.substring(0,A);switch(s=l.substring(A),s){case"perspective/yfov":s="fov";break;case"perspective/znear":case"orthographic/znear":s="near";break;case"perspective/zfar":case"orthographic/zfar":s="far";break;case"perspective/aspect":s="aspect";break;case"orthographic/xmag":s="zoom";break;case"orthographic/ymag":s="zoom";break}l=v+s;break}const h=this.parser.options.animationPointerResolver;h&&h.resolvePath&&(l=h.resolvePath(l)),t.extensions[zt.KHR_ANIMATION_POINTER].pointer=l}if(o===null||isNaN(o)){console.warn("Failed resolving animation node id: "+o,t);return}let a;return r===this.ANIMATION_TARGET_TYPE.node?a=this.parser.getDependency("node",o):r===this.ANIMATION_TARGET_TYPE.material?a=this.parser.getDependency("material",o):r===this.ANIMATION_TARGET_TYPE.light?a=this.parser.getDependency("light",o):r===this.ANIMATION_TARGET_TYPE.camera?a=this.parser.getDependency("camera",o):console.error("Unhandled type",r),a}createAnimationTracks(e,t,i,s,r){if(!(r.extensions&&r.extensions[zt.KHR_ANIMATION_POINTER]&&r.path&&r.path==="pointer"))return null;let a=r.extensions[zt.KHR_ANIMATION_POINTER].pointer;if(!a)return null;const c=[];a=a.replaceAll("/",".");const l=a.split(".");l[2]=e.name??e.uuid,a=l.join("."),this._animationPointerDebug&&console.log(e,t,i,r,a);let h;switch(i.itemSize){case 1:h=Ql;break;case 2:case 3:h=Hl;break;case 4:a.endsWith(".quaternion")?h=ka:h=hA;break}const d=s.interpolation!==void 0?TF[s.interpolation]:Rc;let f=PF(i);a.endsWith(".fov")&&(f=f.map(g=>g/Math.PI*180));const p=new h(a,t.array,f,d);if(d==="CUBICSPLINE"&&DS(p),c.push(p),a&&i.itemSize===4&&a.startsWith(".materials.")&&a.endsWith(".color")){const g=new Float32Array(f.length/4);for(let A=0,v=f.length/4;A<v;A+=1)g[A]=f[A*4+3];const m=new h(a.replace(".color",".opacity"),t.array,g,d);d==="CUBICSPLINE"&&DS(p),c.push(m)}return c}_tryResolveTargetId(e,t){let i="";return t==="node"?i=e.substring(7):t==="material"?i=e.substring(11):t==="light"?i=e.substring(39):t==="camera"&&(i=e.substring(9)),i=i.substring(0,i.indexOf("/")),Number.parseInt(i)}}let M7=class{constructor(e){this.parser=e,this.name=zt.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const i=this.parser.json.materials[e];return!i.extensions||!i.extensions[this.name]?null:Da}extendMaterialParams(e,t){const i=this.parser,s=i.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const r=[],o=s.extensions[this.name];return o.iridescenceFactor!==void 0&&(t.iridescence=o.iridescenceFactor),o.iridescenceTexture!==void 0&&r.push(i.assignTexture(t,"iridescenceMap",o.iridescenceTexture)),o.iridescenceIor!==void 0&&(t.iridescenceIOR=o.iridescenceIor),t.iridescenceThicknessRange===void 0&&(t.iridescenceThicknessRange=[100,400]),o.iridescenceThicknessMinimum!==void 0&&(t.iridescenceThicknessRange[0]=o.iridescenceThicknessMinimum),o.iridescenceThicknessMaximum!==void 0&&(t.iridescenceThicknessRange[1]=o.iridescenceThicknessMaximum),o.iridescenceThicknessTexture!==void 0&&r.push(i.assignTexture(t,"iridescenceThicknessMap",o.iridescenceThicknessTexture)),Promise.all(r)}};class T7{constructor(e){this.parser=e,this.name=zt.KHR_MATERIALS_SHEEN}getMaterialType(e){const i=this.parser.json.materials[e];return!i.extensions||!i.extensions[this.name]?null:Da}extendMaterialParams(e,t){const i=this.parser,s=i.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const r=[];t.sheenColor=new _e(0,0,0),t.sheenRoughness=0,t.sheen=1;const o=s.extensions[this.name];return o.sheenColorFactor!==void 0&&t.sheenColor.fromArray(o.sheenColorFactor),o.sheenRoughnessFactor!==void 0&&(t.sheenRoughness=o.sheenRoughnessFactor),o.sheenColorTexture!==void 0&&r.push(i.assignTexture(t,"sheenColorMap",o.sheenColorTexture,yt)),o.sheenRoughnessTexture!==void 0&&r.push(i.assignTexture(t,"sheenRoughnessMap",o.sheenRoughnessTexture)),Promise.all(r)}}let P7=class{constructor(e){this.parser=e,this.name=zt.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const i=this.parser.json.materials[e];return!i.extensions||!i.extensions[this.name]?null:Da}extendMaterialParams(e,t){const i=this.parser,s=i.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const r=[],o=s.extensions[this.name];return o.transmissionFactor!==void 0&&(t.transmission=o.transmissionFactor),o.transmissionTexture!==void 0&&r.push(i.assignTexture(t,"transmissionMap",o.transmissionTexture)),Promise.all(r)}},R7=class{constructor(e){this.parser=e,this.name=zt.KHR_MATERIALS_VOLUME}getMaterialType(e){const i=this.parser.json.materials[e];return!i.extensions||!i.extensions[this.name]?null:Da}extendMaterialParams(e,t){const i=this.parser,s=i.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const r=[],o=s.extensions[this.name];t.thickness=o.thicknessFactor!==void 0?o.thicknessFactor:0,o.thicknessTexture!==void 0&&r.push(i.assignTexture(t,"thicknessMap",o.thicknessTexture)),t.attenuationDistance=o.attenuationDistance||1/0;const a=o.attenuationColor||[1,1,1];return t.attenuationColor=new _e(a[0],a[1],a[2]),Promise.all(r)}};class B7{constructor(e){this.parser=e,this.name=zt.KHR_MATERIALS_IOR}getMaterialType(e){const i=this.parser.json.materials[e];return!i.extensions||!i.extensions[this.name]?null:Da}extendMaterialParams(e,t){const s=this.parser.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const r=s.extensions[this.name];return t.ior=r.ior!==void 0?r.ior:1.5,Promise.resolve()}}class D7{constructor(e){this.parser=e,this.name=zt.KHR_MATERIALS_SPECULAR}getMaterialType(e){const i=this.parser.json.materials[e];return!i.extensions||!i.extensions[this.name]?null:Da}extendMaterialParams(e,t){const i=this.parser,s=i.json.materials[e];if(!s.extensions||!s.extensions[this.name])return Promise.resolve();const r=[],o=s.extensions[this.name];t.specularIntensity=o.specularFactor!==void 0?o.specularFactor:1,o.specularTexture!==void 0&&r.push(i.assignTexture(t,"specularIntensityMap",o.specularTexture));const a=o.specularColorFactor||[1,1,1];return t.specularColor=new _e(a[0],a[1],a[2]),o.specularColorTexture!==void 0&&r.push(i.assignTexture(t,"specularColorMap",o.specularColorTexture,yt)),Promise.all(r)}}class k7{constructor(e){this.parser=e,this.name=zt.KHR_TEXTURE_BASISU}loadTexture(e){const t=this.parser,i=t.json,s=i.textures[e];if(!s.extensions||!s.extensions[this.name])return null;const r=s.extensions[this.name],o=t.options.ktx2Loader;if(!o){if(i.extensionsRequired&&i.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,r.source,o)}}class O7{constructor(e){this.parser=e,this.name=zt.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){const t=this.name,i=this.parser,s=i.json,r=s.textures[e];if(!r.extensions||!r.extensions[t])return null;const o=r.extensions[t],a=s.images[o.source];let c=i.textureLoader;if(a.uri){const l=i.options.manager.getHandler(a.uri);l!==null&&(c=l)}return this.detectSupport().then(function(l){if(l)return i.loadTextureImage(e,o.source,c);if(s.extensionsRequired&&s.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return i.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}}class L7{constructor(e){this.name=zt.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,i=t.bufferViews[e];if(i.extensions&&i.extensions[this.name]){const s=i.extensions[this.name],r=this.parser.getDependency("buffer",s.buffer),o=this.parser.options.meshoptDecoder;if(!o||!o.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return r.then(function(a){const c=s.byteOffset||0,l=s.byteLength||0,h=s.count,d=s.byteStride,f=new Uint8Array(a,c,l);return o.decodeGltfBufferAsync?o.decodeGltfBufferAsync(h,d,f,s.mode,s.filter).then(function(p){return p.buffer}):o.ready.then(function(){const p=new ArrayBuffer(h*d);return o.decodeGltfBuffer(new Uint8Array(p),h,d,f,s.mode,s.filter),p})})}else return null}}class F7{constructor(e){this.name=zt.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,i=t.nodes[e];if(!i.extensions||!i.extensions[this.name]||i.mesh===void 0)return null;const s=t.meshes[i.mesh];for(const l of s.primitives)if(l.mode!==jr.TRIANGLES&&l.mode!==jr.TRIANGLE_STRIP&&l.mode!==jr.TRIANGLE_FAN&&l.mode!==void 0)return null;const o=i.extensions[this.name].attributes,a=[],c={};for(const l in o)a.push(this.parser.getDependency("accessor",o[l]).then(h=>(c[l]=h,c[l])));return a.length<1?null:(a.push(this.parser.createNodeMesh(e)),Promise.all(a).then(l=>{const h=l.pop(),d=h.isGroup?h.children:[h],f=l[0].count,p=[];for(const g of d){const m=new He,A=new E,v=new xe,b=new E(1,1,1),y=new F_(g.geometry,g.material,f);for(let _=0;_<f;_++)c.TRANSLATION&&A.fromBufferAttribute(c.TRANSLATION,_),c.ROTATION&&v.fromBufferAttribute(c.ROTATION,_),c.SCALE&&b.fromBufferAttribute(c.SCALE,_),y.setMatrixAt(_,m.compose(A,v,b));for(const _ in c)_!=="TRANSLATION"&&_!=="ROTATION"&&_!=="SCALE"&&g.geometry.setAttribute(_,c[_]);Ie.prototype.copy.call(y,g),y.frustumCulled=!1,this.parser.assignFinalMaterial(y),p.push(y)}return h.isGroup?(h.clear(),h.add(...p),h):p[0]}))}}const IF="glTF",Wp=12,zR={JSON:1313821514,BIN:5130562};class U7{constructor(e){this.name=zt.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,Wp);if(this.header={magic:Ca.decodeText(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==IF)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const i=this.header.length-Wp,s=new DataView(e,Wp);let r=0;for(;r<i;){const o=s.getUint32(r,!0);r+=4;const a=s.getUint32(r,!0);if(r+=4,a===zR.JSON){const c=new Uint8Array(e,Wp+r,o);this.content=Ca.decodeText(c)}else if(a===zR.BIN){const c=Wp+r;this.body=e.slice(c,c+o)}r+=o}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class N7{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=zt.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){const i=this.json,s=this.dracoLoader,r=e.extensions[this.name].bufferView,o=e.extensions[this.name].attributes,a={},c={},l={};for(const h in o){const d=RS[h]||h.toLowerCase();a[d]=o[h]}for(const h in e.attributes){const d=RS[h]||h.toLowerCase();if(o[h]!==void 0){const f=i.accessors[e.attributes[h]],p=sf[f.componentType];l[d]=p.name,c[d]=f.normalized===!0}}return t.getDependency("bufferView",r).then(function(h){return new Promise(function(d){s.decodeDracoFile(h,function(f){for(const p in f.attributes){const g=f.attributes[p],m=c[p];m!==void 0&&(g.normalized=m)}d(f)},a,l)})})}}class z7{constructor(){this.name=zt.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return t.texCoord!==void 0&&console.warn('THREE.GLTFLoader: Custom UV sets in "'+this.name+'" extension not yet supported.'),t.offset===void 0&&t.rotation===void 0&&t.scale===void 0||(e=e.clone(),t.offset!==void 0&&e.offset.fromArray(t.offset),t.rotation!==void 0&&(e.rotation=t.rotation),t.scale!==void 0&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}class G7{constructor(){this.name=zt.KHR_MESH_QUANTIZATION}}class MF extends Ff{constructor(e,t,i,s){super(e,t,i,s)}copySampleValue_(e){const t=this.resultBuffer,i=this.sampleValues,s=this.valueSize,r=e*s*3+s;for(let o=0;o!==s;o++)t[o]=i[r+o];return t}interpolate_(e,t,i,s){const r=this.resultBuffer,o=this.sampleValues,a=this.valueSize,c=a*2,l=a*3,h=s-t,d=(i-t)/h,f=d*d,p=f*d,g=e*l,m=g-l,A=-2*p+3*f,v=p-f,b=1-A,y=v-f+d;for(let _=0;_!==a;_++){const C=o[m+_+a],S=o[m+_+c]*h,T=o[g+_+a],x=o[g+_]*h;r[_]=b*C+y*S+A*T+v*x}return r}}const Q7=new xe;class H7 extends MF{interpolate_(e,t,i,s){const r=super.interpolate_(e,t,i,s);return Q7.fromArray(r).normalize().toArray(r),r}}const jr={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},sf={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},GR={9728:ti,9729:Vt,9984:pf,9985:Ym,9986:gf,9987:Qo},QR={33071:Vn,33648:Pc,10497:oo},Iw={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},RS={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv2",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},ul={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},TF={CUBICSPLINE:void 0,LINEAR:Rc,STEP:uu},Mw={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function V7(n){return n.DefaultMaterial===void 0&&(n.DefaultMaterial=new xu({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:Gs})),n.DefaultMaterial}function qp(n,e,t){for(const i in t.extensions)n[i]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[i]=t.extensions[i])}function bl(n,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(n.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function j7(n,e,t){let i=!1,s=!1,r=!1;for(let l=0,h=e.length;l<h;l++){const d=e[l];if(d.POSITION!==void 0&&(i=!0),d.NORMAL!==void 0&&(s=!0),d.COLOR_0!==void 0&&(r=!0),i&&s&&r)break}if(!i&&!s&&!r)return Promise.resolve(n);const o=[],a=[],c=[];for(let l=0,h=e.length;l<h;l++){const d=e[l];if(i){const f=d.POSITION!==void 0?t.getDependency("accessor",d.POSITION):n.attributes.position;o.push(f)}if(s){const f=d.NORMAL!==void 0?t.getDependency("accessor",d.NORMAL):n.attributes.normal;a.push(f)}if(r){const f=d.COLOR_0!==void 0?t.getDependency("accessor",d.COLOR_0):n.attributes.color;c.push(f)}}return Promise.all([Promise.all(o),Promise.all(a),Promise.all(c)]).then(function(l){const h=l[0],d=l[1],f=l[2];return i&&(n.morphAttributes.position=h),s&&(n.morphAttributes.normal=d),r&&(n.morphAttributes.color=f),n.morphTargetsRelative=!0,n})}function W7(n,e){if(n.updateMorphTargets(),e.weights!==void 0)for(let t=0,i=e.weights.length;t<i;t++)n.morphTargetInfluences[t]=e.weights[t];if(e.extras&&Array.isArray(e.extras.targetNames)){const t=e.extras.targetNames;if(n.morphTargetInfluences.length===t.length){n.morphTargetDictionary={};for(let i=0,s=t.length;i<s;i++)n.morphTargetDictionary[t[i]]=i}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function q7(n){const e=n.extensions&&n.extensions[zt.KHR_DRACO_MESH_COMPRESSION];let t;return e?t="draco:"+e.bufferView+":"+e.indices+":"+HR(e.attributes):t=n.indices+":"+HR(n.attributes)+":"+n.mode,t}function HR(n){let e="";const t=Object.keys(n).sort();for(let i=0,s=t.length;i<s;i++)e+=t[i]+":"+n[t[i]]+";";return e}function BS(n){switch(n){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function PF(n){let e=n.array;if(n.normalized){const t=BS(e.constructor),i=new Float32Array(e.length);for(let s=0,r=e.length;s<r;s++)i[s]=e[s]*t;e=i}return e}function DS(n){n.createInterpolant=function(t){const i=this instanceof ka?H7:MF;return new i(this.times,this.values,this.getValueSize()/3,t)},n.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}function X7(n){return n.search(/\.jpe?g($|\?)/i)>0||n.search(/^data\:image\/jpeg/)===0?"image/jpeg":n.search(/\.webp($|\?)/i)>0||n.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}class Y7{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new x7,this.associations=new Map,this.primitiveCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let i=!1,s=!1,r=-1;typeof navigator<"u"&&(i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,s=navigator.userAgent.indexOf("Firefox")>-1,r=s?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap>"u"||i||s&&r<98?this.textureLoader=new kl(this.options.manager):this.textureLoader=new N2(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Rn(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const i=this,s=this.json,r=this.extensions;this.cache.removeAll(),this._invokeAll(function(o){return o._markDefs&&o._markDefs()}),Promise.all(this._invokeAll(function(o){return o.beforeRoot&&o.beforeRoot()})).then(function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])}).then(function(o){const a={scene:o[0][s.scene||0],scenes:o[0],animations:o[1],cameras:o[2],asset:s.asset,parser:i,userData:{}};qp(r,a,s),bl(a,s),Promise.all(i._invokeAll(function(c){return c.afterRoot&&c.afterRoot(a)})).then(function(){e(a)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],i=this.json.meshes||[];for(let s=0,r=t.length;s<r;s++){const o=t[s].joints;for(let a=0,c=o.length;a<c;a++)e[o[a]].isBone=!0}for(let s=0,r=e.length;s<r;s++){const o=e[s];o.mesh!==void 0&&(this._addNodeRef(this.meshCache,o.mesh),o.skin!==void 0&&(i[o.mesh].isSkinnedMesh=!0)),o.camera!==void 0&&this._addNodeRef(this.cameraCache,o.camera)}}_addNodeRef(e,t){t!==void 0&&(e.refs[t]===void 0&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,i){if(e.refs[t]<=1)return i;const s=i.clone(),r=(o,a)=>{const c=this.associations.get(o);c!=null&&this.associations.set(a,c);for(const[l,h]of o.children.entries())r(h,a.children[l])};return r(i,s),s.name+="_instance_"+e.uses[t]++,s}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let i=0;i<t.length;i++){const s=e(t[i]);if(s)return s}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const i=[];for(let s=0;s<t.length;s++){const r=e(t[s]);r&&i.push(r)}return i}getDependency(e,t){const i=e+":"+t;let s=this.cache.get(i);if(!s){switch(e){case"scene":s=this.loadScene(t);break;case"node":s=this.loadNode(t);break;case"mesh":s=this._invokeOne(function(r){return r.loadMesh&&r.loadMesh(t)});break;case"accessor":s=this.loadAccessor(t);break;case"bufferView":s=this._invokeOne(function(r){return r.loadBufferView&&r.loadBufferView(t)});break;case"buffer":s=this.loadBuffer(t);break;case"material":s=this._invokeOne(function(r){return r.loadMaterial&&r.loadMaterial(t)});break;case"texture":s=this._invokeOne(function(r){return r.loadTexture&&r.loadTexture(t)});break;case"skin":s=this.loadSkin(t);break;case"animation":s=this._invokeOne(function(r){return r.loadAnimation&&r.loadAnimation(t)});break;case"camera":s=this.loadCamera(t);break;case"light":s=this._invokeOne(function(r){return r._loadLight&&r._loadLight(t)});break;default:if(s=this._invokeOne(function(r){return r!=this&&r.getDependency&&r.getDependency(e,t)}),!s)throw new Error("Unknown type: "+e);break}this.cache.add(i,s)}return s}getDependencies(e){let t=this.cache.get(e);if(!t){const i=this,s=this.json[e+(e==="mesh"?"es":"s")]||[];t=Promise.all(s.map(function(r,o){return i.getDependency(e,o)})),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],i=this.fileLoader;if(t.type&&t.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[zt.KHR_BINARY_GLTF].body);const s=this.options;return new Promise(function(r,o){i.load(Ca.resolveURL(t.uri,s.path),r,void 0,function(){o(new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(i){const s=t.byteLength||0,r=t.byteOffset||0;return i.slice(r,r+s)})}loadAccessor(e){const t=this,i=this.json,s=this.json.accessors[e];if(s.bufferView===void 0&&s.sparse===void 0){const o=Iw[s.type],a=sf[s.componentType],c=s.normalized===!0,l=new a(s.count*o);return Promise.resolve(new ht(l,o,c))}const r=[];return s.bufferView!==void 0?r.push(this.getDependency("bufferView",s.bufferView)):r.push(null),s.sparse!==void 0&&(r.push(this.getDependency("bufferView",s.sparse.indices.bufferView)),r.push(this.getDependency("bufferView",s.sparse.values.bufferView))),Promise.all(r).then(function(o){const a=o[0],c=Iw[s.type],l=sf[s.componentType],h=l.BYTES_PER_ELEMENT,d=h*c,f=s.byteOffset||0,p=s.bufferView!==void 0?i.bufferViews[s.bufferView].byteStride:void 0,g=s.normalized===!0;let m,A;if(p&&p!==d){const v=Math.floor(f/p),b="InterleavedBuffer:"+s.bufferView+":"+s.componentType+":"+v+":"+s.count;let y=t.cache.get(b);y||(m=new l(a,v*p,s.count*p/h),y=new $m(m,p/h),t.cache.add(b,y)),A=new Bc(y,c,f%p/h,g)}else a===null?m=new l(s.count*c):m=new l(a,f,s.count*c),A=new ht(m,c,g);if(s.sparse!==void 0){const v=Iw.SCALAR,b=sf[s.sparse.indices.componentType],y=s.sparse.indices.byteOffset||0,_=s.sparse.values.byteOffset||0,C=new b(o[1],y,s.sparse.count*v),S=new l(o[2],_,s.sparse.count*c);a!==null&&(A=new ht(A.array.slice(),A.itemSize,A.normalized));for(let T=0,x=C.length;T<x;T++){const M=C[T];if(A.setX(M,S[T*c]),c>=2&&A.setY(M,S[T*c+1]),c>=3&&A.setZ(M,S[T*c+2]),c>=4&&A.setW(M,S[T*c+3]),c>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return A})}loadTexture(e){const t=this.json,i=this.options,r=t.textures[e].source,o=t.images[r];let a=this.textureLoader;if(o.uri){const c=i.manager.getHandler(o.uri);c!==null&&(a=c)}return this.loadTextureImage(e,r,a)}loadTextureImage(e,t,i){const s=this,r=this.json,o=r.textures[e],a=r.images[t],c=(a.uri||a.bufferView)+":"+o.sampler;if(this.textureCache[c])return this.textureCache[c];const l=this.loadImageSource(t,i).then(function(h){h.flipY=!1,h.name=o.name||a.name||"";const f=(r.samplers||{})[o.sampler]||{};return h.magFilter=GR[f.magFilter]||Vt,h.minFilter=GR[f.minFilter]||Qo,h.wrapS=QR[f.wrapS]||oo,h.wrapT=QR[f.wrapT]||oo,h.anisotropy=4,s.associations.set(h,{textures:e}),h}).catch(function(){return null});return this.textureCache[c]=l,l}loadImageSource(e,t){const i=this,s=this.json,r=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(d=>d.clone());const o=s.images[e],a=self.URL||self.webkitURL;let c=o.uri||"",l=!1;if(o.bufferView!==void 0)c=i.getDependency("bufferView",o.bufferView).then(function(d){l=!0;const f=new Blob([d],{type:o.mimeType});return c=a.createObjectURL(f),c});else if(o.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const h=Promise.resolve(c).then(function(d){return new Promise(function(f,p){let g=f;t.isImageBitmapLoader===!0&&(g=function(m){const A=new Gt(m);A.needsUpdate=!0,f(A)}),t.load(Ca.resolveURL(d,r.path),g,void 0,p)})}).then(function(d){return l===!0&&a.revokeObjectURL(c),d.userData.mimeType=o.mimeType||X7(o.uri),d}).catch(function(d){throw console.error("THREE.GLTFLoader: Couldn't load texture",c),d});return this.sourceCache[e]=h,h}assignTexture(e,t,i,s){const r=this;return this.getDependency("texture",i.index).then(function(o){if(i.texCoord!==void 0&&i.texCoord!=0&&!(t==="aoMap"&&i.texCoord==1)&&console.warn("THREE.GLTFLoader: Custom UV set "+i.texCoord+" for texture "+t+" not yet supported."),r.extensions[zt.KHR_TEXTURE_TRANSFORM]){const a=i.extensions!==void 0?i.extensions[zt.KHR_TEXTURE_TRANSFORM]:void 0;if(a){const c=r.associations.get(o);o=r.extensions[zt.KHR_TEXTURE_TRANSFORM].extendTexture(o,a),r.associations.set(o,c)}}return s!==void 0&&o&&(o.encoding=s),e[t]=o,o})}assignFinalMaterial(e){const t=e.geometry;let i=e.material;const s=t.attributes.tangent===void 0,r=t.attributes.color!==void 0,o=t.attributes.normal===void 0;if(e.isPoints){const a="PointsMaterial:"+i.uuid;let c=this.cache.get(a);c||(c=new U_,Bt.prototype.copy.call(c,i),c.color.copy(i.color),c.map=i.map,c.sizeAttenuation=!1,this.cache.add(a,c)),i=c}else if(e.isLine){const a="LineBasicMaterial:"+i.uuid;let c=this.cache.get(a);c||(c=new cn,Bt.prototype.copy.call(c,i),c.color.copy(i.color),this.cache.add(a,c)),i=c}if(s||r||o){let a="ClonedMaterial:"+i.uuid+":";s&&(a+="derivative-tangents:"),r&&(a+="vertex-colors:"),o&&(a+="flat-shading:");let c=this.cache.get(a);c||(c=i.clone(),r&&(c.vertexColors=!0),o&&(c.flatShading=!0),s&&(c.normalScale&&(c.normalScale.y*=-1),c.clearcoatNormalScale&&(c.clearcoatNormalScale.y*=-1)),this.cache.add(a,c),this.associations.set(c,this.associations.get(i))),i=c}i.aoMap&&t.attributes.uv2===void 0&&t.attributes.uv!==void 0&&t.setAttribute("uv2",t.attributes.uv),e.material=i}getMaterialType(){return xu}loadMaterial(e){const t=this,i=this.json,s=this.extensions,r=i.materials[e];let o;const a={},c=r.extensions||{},l=[];if(c[zt.KHR_MATERIALS_UNLIT]){const d=s[zt.KHR_MATERIALS_UNLIT];o=d.getMaterialType(),l.push(d.extendParams(a,r,t))}else{const d=r.pbrMetallicRoughness||{};if(a.color=new _e(1,1,1),a.opacity=1,Array.isArray(d.baseColorFactor)){const f=d.baseColorFactor;a.color.fromArray(f),a.opacity=f[3]}d.baseColorTexture!==void 0&&l.push(t.assignTexture(a,"map",d.baseColorTexture,yt)),a.metalness=d.metallicFactor!==void 0?d.metallicFactor:1,a.roughness=d.roughnessFactor!==void 0?d.roughnessFactor:1,d.metallicRoughnessTexture!==void 0&&(l.push(t.assignTexture(a,"metalnessMap",d.metallicRoughnessTexture)),l.push(t.assignTexture(a,"roughnessMap",d.metallicRoughnessTexture))),o=this._invokeOne(function(f){return f.getMaterialType&&f.getMaterialType(e)}),l.push(Promise.all(this._invokeAll(function(f){return f.extendMaterialParams&&f.extendMaterialParams(e,a)})))}r.doubleSided===!0&&(a.side=Ii);const h=r.alphaMode||Mw.OPAQUE;if(h===Mw.BLEND?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,h===Mw.MASK&&(a.alphaTest=r.alphaCutoff!==void 0?r.alphaCutoff:.5)),r.normalTexture!==void 0&&o!==vi&&(l.push(t.assignTexture(a,"normalMap",r.normalTexture)),a.normalScale=new q(1,1),r.normalTexture.scale!==void 0)){const d=r.normalTexture.scale;a.normalScale.set(d,d)}return r.occlusionTexture!==void 0&&o!==vi&&(l.push(t.assignTexture(a,"aoMap",r.occlusionTexture)),r.occlusionTexture.strength!==void 0&&(a.aoMapIntensity=r.occlusionTexture.strength)),r.emissiveFactor!==void 0&&o!==vi&&(a.emissive=new _e().fromArray(r.emissiveFactor)),r.emissiveTexture!==void 0&&o!==vi&&l.push(t.assignTexture(a,"emissiveMap",r.emissiveTexture,yt)),Promise.all(l).then(function(){const d=new o(a);return r.name&&(d.name=r.name),bl(d,r),t.associations.set(d,{materials:e}),r.extensions&&qp(s,d,r),d})}createUniqueName(e){const t=Nt.sanitizeNodeName(e||"");let i=t;for(let s=1;this.nodeNamesUsed[i];++s)i=t+"_"+s;return this.nodeNamesUsed[i]=!0,i}loadGeometries(e){const t=this,i=this.extensions,s=this.primitiveCache;function r(a){return i[zt.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(a,t).then(function(c){return VR(c,a,t)})}const o=[];for(let a=0,c=e.length;a<c;a++){const l=e[a],h=q7(l),d=s[h];if(d)o.push(d.promise);else{let f;l.extensions&&l.extensions[zt.KHR_DRACO_MESH_COMPRESSION]?f=r(l):f=VR(new vt,l,t),s[h]={primitive:l,promise:f},o.push(f)}}return Promise.all(o)}loadMesh(e){const t=this,i=this.json,s=this.extensions,r=i.meshes[e],o=r.primitives,a=[];for(let c=0,l=o.length;c<l;c++){const h=o[c].material===void 0?V7(this.cache):this.getDependency("material",o[c].material);a.push(h)}return a.push(t.loadGeometries(o)),Promise.all(a).then(function(c){const l=c.slice(0,c.length-1),h=c[c.length-1],d=[];for(let p=0,g=h.length;p<g;p++){const m=h[p],A=o[p];let v;const b=l[p];if(A.mode===jr.TRIANGLES||A.mode===jr.TRIANGLE_STRIP||A.mode===jr.TRIANGLE_FAN||A.mode===void 0)v=r.isSkinnedMesh===!0?new Bf(m,b):new ve(m,b),v.isSkinnedMesh===!0&&!v.geometry.attributes.skinWeight.normalized&&v.normalizeSkinWeights(),A.mode===jr.TRIANGLE_STRIP?v.geometry=jR(v.geometry,Uk):A.mode===jr.TRIANGLE_FAN&&(v.geometry=jR(v.geometry,OE));else if(A.mode===jr.LINES)v=new Tr(m,b);else if(A.mode===jr.LINE_STRIP)v=new sn(m,b);else if(A.mode===jr.LINE_LOOP)v=new XE(m,b);else if(A.mode===jr.POINTS)v=new YE(m,b);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+A.mode);Object.keys(v.geometry.morphAttributes).length>0&&W7(v,r),v.name=t.createUniqueName(r.name||"mesh_"+e),bl(v,r),A.extensions&&qp(s,v,A),t.assignFinalMaterial(v),d.push(v)}for(let p=0,g=d.length;p<g;p++)t.associations.set(d[p],{meshes:e,primitives:p});if(d.length===1)return d[0];const f=new $r;t.associations.set(f,{meshes:e});for(let p=0,g=d.length;p<g;p++)f.add(d[p]);return f})}loadCamera(e){let t;const i=this.json.cameras[e],s=i[i.type];if(!s){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return i.type==="perspective"?t=new $t(Fs.radToDeg(s.yfov),s.aspectRatio||1,s.znear||1,s.zfar||2e6):i.type==="orthographic"&&(t=new Tf(-s.xmag,s.xmag,s.ymag,-s.ymag,s.znear,s.zfar)),i.name&&(t.name=this.createUniqueName(i.name)),bl(t,i),Promise.resolve(t)}loadSkin(e){const t=this.json.skins[e],i={joints:t.joints};return t.inverseBindMatrices===void 0?Promise.resolve(i):this.getDependency("accessor",t.inverseBindMatrices).then(function(s){return i.inverseBindMatrices=s,i})}loadAnimation(e){const t=this.json,i=this,s=t.animations[e],r=[],o=[],a=[],c=[],l=[];let h=0,d=s.channels.length;for(h=0,d=s.channels.length;h<d;h++){const f=s.channels[h],p=s.samplers[f.sampler],g=f.target,m=s.parameters!==void 0?s.parameters[p.input]:p.input,A=s.parameters!==void 0?s.parameters[p.output]:p.output,v=i._invokeOne(function(b){return b.loadAnimationTargetFromChannel&&b.loadAnimationTargetFromChannel(f)});r.push(v),o.push(this.getDependency("accessor",m)),a.push(this.getDependency("accessor",A)),c.push(p),l.push(g)}return Promise.all([Promise.all(r),Promise.all(o),Promise.all(a),Promise.all(c),Promise.all(l)]).then(function(f){const p=f[0],g=f[1],m=f[2],A=f[3],v=f[4],b=[];for(h=0,d=p.length;h<d;h++){const _=p[h],C=g[h],S=m[h],T=A[h],x=v[h];if(_===void 0)continue;_.updateMatrix&&(_.updateMatrix(),_.matrixAutoUpdate=!0);const M=i._invokeOne(function(P){return P.createAnimationTracks&&P.createAnimationTracks(_,C,S,T,x)});if(M)for(let P=0;P<M.length;P++)b.push(M[P])}const y=s.name?s.name:"animation_"+e;return new lo(y,void 0,b)})}createNodeMesh(e){const t=this.json,i=this,s=t.nodes[e];return s.mesh===void 0?null:i.getDependency("mesh",s.mesh).then(function(r){const o=i._getNodeRef(i.meshCache,s.mesh,r);return s.weights!==void 0&&o.traverse(function(a){if(a.isMesh)for(let c=0,l=s.weights.length;c<l;c++)a.morphTargetInfluences[c]=s.weights[c]}),o})}loadNode(e){const t=this.json,i=this.extensions,s=this,r=t.nodes[e],o=r.name?s.createUniqueName(r.name):"";return function(){const a=[],c=s._invokeOne(function(l){return l.createNodeMesh&&l.createNodeMesh(e)});return c&&a.push(c),r.camera!==void 0&&a.push(s.getDependency("camera",r.camera).then(function(l){return s._getNodeRef(s.cameraCache,r.camera,l)})),s._invokeAll(function(l){return l.createNodeAttachment&&l.createNodeAttachment(e)}).forEach(function(l){a.push(l)}),Promise.all(a)}().then(function(a){let c;if(r.isBone===!0?c=new eA:a.length>1?c=new $r:a.length===1?c=a[0]:c=new Ie,c!==a[0])for(let l=0,h=a.length;l<h;l++)c.add(a[l]);if(r.name&&(c.userData.name=r.name,c.name=o),bl(c,r),r.extensions&&qp(i,c,r),r.matrix!==void 0){const l=new He;l.fromArray(r.matrix),c.applyMatrix4(l)}else r.translation!==void 0&&c.position.fromArray(r.translation),r.rotation!==void 0&&c.quaternion.fromArray(r.rotation),r.scale!==void 0&&c.scale.fromArray(r.scale);return s.associations.has(c)||s.associations.set(c,{}),s.associations.get(c).nodes=e,c})}loadScene(e){const t=this.json,i=this.extensions,s=this.json.scenes[e],r=this,o=new $r;s.name&&(o.name=r.createUniqueName(s.name)),bl(o,s),s.extensions&&qp(i,o,s);const a=s.nodes||[],c=[];for(let l=0,h=a.length;l<h;l++)c.push(RF(a[l],o,t,r));return Promise.all(c).then(function(){const l=h=>{const d=new Map;for(const[f,p]of r.associations)(f instanceof Bt||f instanceof Gt)&&d.set(f,p);return h.traverse(f=>{const p=r.associations.get(f);p!=null&&d.set(f,p)}),d};return r.associations=l(o),o})}loadAnimationTargetFromChannel(e){const t=e.target,i=t.node!==void 0?t.node:t.id;return this.getDependency("node",i)}createAnimationTracks(e,t,i,s,r){const o=[],a=e.name?e.name:e.uuid,c=[];ul[r.path]===ul.weights?e.traverse(function(f){f.morphTargetInfluences&&c.push(f.name?f.name:f.uuid)}):c.push(a);let l;switch(ul[r.path]){case ul.weights:l=Ql;break;case ul.rotation:l=ka;break;case ul.position:case ul.scale:default:switch(i.itemSize){case 1:l=Ql;break;case 2:case 3:l=Hl;break;case 4:l=hA;break}break}const h=s.interpolation!==void 0?TF[s.interpolation]:Rc,d=PF(i);for(let f=0,p=c.length;f<p;f++){const g=new l(c[f]+"."+ul[r.path],t.array,d,h);h==="CUBICSPLINE"&&DS(g),o.push(g)}return o}}function RF(n,e,t,i){const s=t.nodes[n];return i.getDependency("node",n).then(function(r){if(s.skin===void 0)return r;let o;return i.getDependency("skin",s.skin).then(function(a){o=a;const c=[];for(let l=0,h=o.joints.length;l<h;l++)c.push(i.getDependency("node",o.joints[l]));return Promise.all(c)}).then(function(a){return r.traverse(function(c){if(!c.isMesh)return;const l=[],h=[];for(let d=0,f=a.length;d<f;d++){const p=a[d];if(p){l.push(p);const g=new He;o.inverseBindMatrices!==void 0&&g.fromArray(o.inverseBindMatrices.array,d*16),h.push(g)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',o.joints[d])}c.bind(new Df(l,h),c.matrixWorld)}),r})}).then(function(r){e.add(r);const o=[];if(s.children){const a=s.children;for(let c=0,l=a.length;c<l;c++){const h=a[c];o.push(RF(h,r,t,i))}}return Promise.all(o)})}function J7(n,e,t){const i=e.attributes,s=new _s;if(i.POSITION!==void 0){const a=t.json.accessors[i.POSITION],c=a.min,l=a.max;if(c!==void 0&&l!==void 0){if(s.set(new E(c[0],c[1],c[2]),new E(l[0],l[1],l[2])),a.normalized){const h=BS(sf[a.componentType]);s.min.multiplyScalar(h),s.max.multiplyScalar(h)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const r=e.targets;if(r!==void 0){const a=new E,c=new E;for(let l=0,h=r.length;l<h;l++){const d=r[l];if(d.POSITION!==void 0){const f=t.json.accessors[d.POSITION],p=f.min,g=f.max;if(p!==void 0&&g!==void 0){if(c.setX(Math.max(Math.abs(p[0]),Math.abs(g[0]))),c.setY(Math.max(Math.abs(p[1]),Math.abs(g[1]))),c.setZ(Math.max(Math.abs(p[2]),Math.abs(g[2]))),f.normalized){const m=BS(sf[f.componentType]);c.multiplyScalar(m)}a.max(c)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}s.expandByVector(a)}n.boundingBox=s;const o=new Ba;s.getCenter(o.center),o.radius=s.min.distanceTo(s.max)/2,n.boundingSphere=o}function VR(n,e,t){const i=e.attributes,s=[];function r(o,a){return t.getDependency("accessor",o).then(function(c){n.setAttribute(a,c)})}for(const o in i){const a=RS[o]||o.toLowerCase();a in n.attributes||s.push(r(i[o],a))}if(e.indices!==void 0&&!n.index){const o=t.getDependency("accessor",e.indices).then(function(a){n.setIndex(a)});s.push(o)}return bl(n,e),J7(n,e,t),Promise.all(s).then(function(){return e.targets!==void 0?j7(n,e.targets,t):n})}function jR(n,e){let t=n.getIndex();if(t===null){const o=[],a=n.getAttribute("position");if(a!==void 0){for(let c=0;c<a.count;c++)o.push(c);n.setIndex(o),t=n.getIndex()}else return console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),n}const i=t.count-2,s=[];if(e===OE)for(let o=1;o<=i;o++)s.push(t.getX(0)),s.push(t.getX(o)),s.push(t.getX(o+1));else for(let o=0;o<i;o++)o%2===0?(s.push(t.getX(o)),s.push(t.getX(o+1)),s.push(t.getX(o+2))):(s.push(t.getX(o+2)),s.push(t.getX(o+1)),s.push(t.getX(o)));s.length/3!==i&&console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const r=n.clone();return r.setIndex(s),r}var BF=(n=>(n[n.INT=5124]="INT",n[n.FLOAT=5126]="FLOAT",n[n.FLOAT_VEC2=35664]="FLOAT_VEC2",n[n.FLOAT_VEC3=35665]="FLOAT_VEC3",n[n.FLOAT_VEC4=35666]="FLOAT_VEC4",n[n.INT_VEC2=35667]="INT_VEC2",n[n.INT_VEC3=35668]="INT_VEC3",n[n.INT_VEC4=35669]="INT_VEC4",n[n.BOOL=35670]="BOOL",n[n.BOOL_VEC2=35671]="BOOL_VEC2",n[n.BOOL_VEC3=35672]="BOOL_VEC3",n[n.BOOL_VEC4=35673]="BOOL_VEC4",n[n.FLOAT_MAT2=35674]="FLOAT_MAT2",n[n.FLOAT_MAT3=35675]="FLOAT_MAT3",n[n.FLOAT_MAT4=35676]="FLOAT_MAT4",n[n.SAMPLER_2D=35678]="SAMPLER_2D",n[n.SAMPLER_3D=35680]="SAMPLER_3D",n[n.SAMPLER_CUBE=35681]="SAMPLER_CUBE",n[n.UNKNOWN=0]="UNKNOWN",n))(BF||{});const ac=ce("debugcustomshader"),gd="NEEDLE_techniques_webgl";class K7{constructor(){u(this,"objectToWorldMatrix",new He);u(this,"worldToObjectMatrix",new He);u(this,"objectToWorld",new Array);u(this,"worldToObject",new Array)}updateFrom(e){this.objectToWorldMatrix.copy(e.matrixWorld),j0(this.objectToWorldMatrix,this.objectToWorld),this.worldToObjectMatrix.copy(e.matrixWorld).invert(),j0(this.worldToObjectMatrix,this.worldToObject)}}const Pi=class extends s1{constructor(t,...i){super(...i);u(this,"identifier");u(this,"onBeforeRenderSceneCallback",this.onBeforeRenderScene.bind(this));u(this,"_sphericalHarmonicsName","unity_SpecCube0");u(this,"_objToWorldName","hlslcc_mtx4x4unity_ObjectToWorld");u(this,"_worldToObjectName","hlslcc_mtx4x4unity_WorldToObject");u(this,"_viewProjectionName","hlslcc_mtx4x4unity_MatrixVP");u(this,"_viewMatrixName","hlslcc_mtx4x4unity_MatrixV");u(this,"_rendererData",new K7);this.identifier=t,ac&&console.log(this),this.type="NEEDLE_CUSTOM_SHADER",this.uniforms[this._objToWorldName]||(this.uniforms[this._objToWorldName]={value:[]}),this.uniforms[this._worldToObjectName]||(this.uniforms[this._worldToObjectName]={value:[]}),this.uniforms[this._viewProjectionName]||(this.uniforms[this._viewProjectionName]={value:[]}),this.uniforms[this._sphericalHarmonicsName]&&this.waitForLighting(),(this.depthTextureUniform||this.opaqueTextureUniform)&&_t.Current.pre_render_callbacks.push(this.onBeforeRenderSceneCallback)}clone(){const t=super.clone();return DF(t),t}dispose(){super.dispose();const t=_t.Current.pre_render_callbacks.indexOf(this.onBeforeRenderSceneCallback);t>=0&&_t.Current.pre_render_callbacks.splice(t,1)}async waitForLighting(){const t=_t.Current;if(!t){console.error("Missing context");return}const i=await t.sceneLighting.internalGetSceneLightingData(this.identifier);if(!i||!i.array){console.warn("Missing lighting data for custom shader, getSceneLightingData did not return anything");return}ac&&console.log(i);const s=i.array,r=i.texture;this.uniforms.unity_SpecCube0={value:r},tF(this.uniforms,s);const o=Math.sqrt(Math.PI*.5);this.uniforms.unity_SpecCube0_HDR={value:new rt(o,o,o,o)},ac&&console.log("Set environment lighting",this.uniforms)}get depthTextureUniform(){if(this.uniforms)return this.uniforms._CameraDepthTexture}get opaqueTextureUniform(){if(this.uniforms)return this.uniforms._CameraOpaqueTexture}onBeforeRenderScene(){this.opaqueTextureUniform&&_t.Current.setRequireColor(!0),this.depthTextureUniform&&_t.Current.setRequireDepth(!0)}onBeforeRender(t,i,s,r,o,a){r.attributes.tangent||r.computeTangents(),this.onUpdateUniforms(s,o)}onUpdateUniforms(t,i){const s=_t.Current;t&&(Pi.viewProjection&&this.uniforms[this._viewProjectionName]&&(Pi.viewProjection.copy(t.projectionMatrix).multiply(t.matrixWorldInverse),j0(Pi.viewProjection,Pi._viewProjectionValues)),Pi.viewMatrix&&this.uniforms[this._viewMatrixName]&&(Pi.viewMatrix.copy(t.matrixWorldInverse),j0(Pi.viewMatrix,Pi._viewMatrixValues)),this.uniforms[Pi._worldSpaceCameraPosName]&&Pi._worldSpaceCameraPos.setFromMatrixPosition(t.matrixWorld)),this.uniforms._TimeParameters?this.uniforms._TimeParameters.value=s.sceneLighting.timeVec4:this.uniforms._Time&&(this.uniforms._Time.value=s.sceneLighting.timeVec4);const r=s.mainLight;if(r){const c=Ct(r.gameObject,Pi._mainLightPosition);this.uniforms._MainLightPosition={value:c.normalize()},Pi._mainLightColor.set(r.color.r,r.color.g,r.color.b,0),this.uniforms._MainLightColor={value:Pi._mainLightColor};const l=r.intensity;Pi._lightData.z=l,this.uniforms.unity_LightData={value:Pi._lightData}}if(t&&(Pi.viewProjection&&this.uniforms[this._viewProjectionName]&&(this.uniforms[this._viewProjectionName].value=Pi._viewProjectionValues),Pi.viewMatrix&&this.uniforms[this._viewMatrixName]&&(this.uniforms[this._viewMatrixName].value=Pi._viewMatrixValues),this.uniforms[Pi._worldSpaceCameraPosName]&&(this.uniforms[Pi._worldSpaceCameraPosName]={value:Pi._worldSpaceCameraPos}),s.mainCameraComponent)){if(this.uniforms._ProjectionParams){const c=this.uniforms._ProjectionParams.value;c.x=1,c.y=s.mainCameraComponent.nearClipPlane,c.z=s.mainCameraComponent.farClipPlane,c.w=1/c.z,this.uniforms._ProjectionParams.value=c}if(this.uniforms._ZBufferParams){const c=this.uniforms._ZBufferParams.value,l=s.mainCameraComponent;c.x=1-l.farClipPlane/l.nearClipPlane,c.y=l.farClipPlane/l.nearClipPlane,c.z=c.x/l.farClipPlane,c.w=c.y/l.farClipPlane,this.uniforms._ZBufferParams.value=c}if(this.uniforms._ScreenParams){const c=this.uniforms._ScreenParams.value;c.x=s.domWidth,c.y=s.domHeight,c.z=1+1/c.x,c.w=1+1/c.y,this.uniforms._ScreenParams.value=c}}const o=this.depthTextureUniform;o&&(o.value=s.depthTexture);const a=this.opaqueTextureUniform;if(a&&(a.value=s.opaqueColorTexture),i){const c=this._rendererData;c.updateFrom(i),this.uniforms[this._worldToObjectName].value=c.worldToObject,this.uniforms[this._objToWorldName].value=c.objectToWorld}this.uniformsNeedUpdate=!0}};let fr=Pi;u(fr,"viewProjection",new He),u(fr,"_viewProjectionValues",[]),u(fr,"viewMatrix",new He),u(fr,"_viewMatrixValues",[]),u(fr,"_worldSpaceCameraPosName","_WorldSpaceCameraPos"),u(fr,"_worldSpaceCameraPos",new E),u(fr,"_mainLightColor",new rt),u(fr,"_mainLightPosition",new E),u(fr,"_lightData",new rt);class Z7{constructor(e,t){u(this,"parser");u(this,"identifier");this.parser=e,this.identifier=t}get name(){return gd}loadMaterial(e){const t=this.parser.json.materials[e];if(!t)return ac&&console.log(e,this.parser.json.materials),null;if(!t.extensions||!t.extensions[gd])return ac&&console.log("material "+e+" does not use NEEDLE_techniques_webgl"),null;const i=t.extensions[gd].technique;if(i<0)return null;const s=this.parser.json.extensions[gd];if(!s)return null;ac&&console.log(s);const r=s.techniques[i];return r?new Promise(async(o,a)=>{var v,b,y;const c=await wq(s,r.program),l=c==null?void 0:c.fragmentShader,h=c==null?void 0:c.vertexShader;if(!l||!h)return a();ac&&console.log("loadMaterial",t,c);const d={},f=r.uniforms;h.includes("_Time")&&(d._Time={value:new rt(0,0,0,0)});for(const _ in f){const C=_;switch(C){case"_TimeParameters":const S=new rt;d[C]={value:S};break;case"hlslcc_mtx4x4unity_MatrixV":case"hlslcc_mtx4x4unity_MatrixVP":d[C]={value:[]};break;case"_MainLightPosition":case"_MainLightColor":case"_WorldSpaceCameraPos":d[C]={value:[0,0,0,1]};break;case"unity_OrthoParams":break;case"unity_SpecCube0":d[C]={value:null};break;default:case"_ScreenParams":case"_ZBufferParams":case"_ProjectionParams":d[C]={value:[0,0,0,0]};break;case"_CameraOpaqueTexture":case"_CameraDepthTexture":d[C]={value:null};break}}let p=!1;if(t.extensions&&t.extensions[gd]){const _=t.extensions[gd];if(_.technique===i){ac&&console.log(t.name,"Material Properties",_);for(const C in _.values){const S=_.values[C];if(typeof S=="string"){if(S.startsWith("/textures/")){const T=S.substring(10),x=Number.parseInt(T);if(x>=0){const M=await this.parser.getDependency("texture",x);M&&(M.encoding=an,M.needsUpdate=!0),d[C]={value:M};continue}}switch(C){case"alphaMode":S==="BLEND"&&(p=!0);continue}}if(Array.isArray(S)&&S.length===4){d[C]={value:new rt(S[0],S[1],S[2],S[3])};continue}d[C]={value:S}}}}const g=new fr(this.identifier,{name:t.name??"",uniforms:d,vertexShader:h,fragmentShader:l,lights:!1});switch((v=d._Cull)==null?void 0:v.value){case 0:g.side=Ii;break;case 1:g.side=Tn;break;case 2:g.side=Gs;break;default:g.side=Gs;break}switch((b=d._ZTest)==null?void 0:b.value){case 3:g.depthTest=!0,g.depthFunc=df;break;case 6:g.depthTest=!0,g.depthFunc=qm;break;case 2:g.depthTest=!0,g.depthFunc=sm;break;case 4:g.depthTest=!0,g.depthFunc=uf;break;case 5:g.depthTest=!0,g.depthFunc=E_;break;case 7:g.depthTest=!0,g.depthFunc=S_;break;case 8:g.depthTest=!1,g.depthFunc=C_;break}g.transparent=p,p&&(g.depthWrite=!1),tF(d),g.onUpdateUniforms();for(const _ in f){const C=_,S=f[_].type;if(((y=d[C])==null?void 0:y.value)===void 0)switch(S){case BF.SAMPLER_2D:d[C]={value:_q},console.warn("Missing/unassigned texture, fallback to white: "+C);break;default:C==="unity_OrthoParams"||console.warn("TODO: EXPECTED UNIFORM / fallback NOT SET: "+C,f[_]);break}}ac&&console.log(g.uuid,d),DF(g),o(g)}):null}}function DF(n){if(n.uniforms)for(const e in n.uniforms)Object.getOwnPropertyDescriptor(n,e)||Object.defineProperty(n,e,{get:()=>n.uniforms[e].value,set:t=>{n.uniforms[e].value=t,n.needsUpdate=!0}})}const dl=ys,oy="$___Export_Components",$7="NEEDLE_components";var boe;class eX{constructor(){u(this,boe)}}boe=Fh;class tX{constructor(e,t,i){u(this,"node");u(this,"nodeIndex");u(this,"nodeDef");this.node=e,this.nodeIndex=t,this.nodeDef=i}}class kF{constructor(){u(this,"parser");u(this,"nodeToObjectMap",{});u(this,"exportContext");u(this,"objectToNodeMap",{});u(this,"context");u(this,"writer")}get name(){return $7}registerExport(e){e.register(t=>{if("serializeUserData"in t){const i=t.serializeUserData.bind(t);this.writer=t,t.serializeUserData=(s,r)=>{try{this.serializeUserData(s,r),i(s,r)}finally{this.afterSerializeUserData(s,r)}}}return this})}beforeParse(){this.exportContext={},this.objectToNodeMap={}}serializeUserData(e,t){var s;const i=(s=e.userData)==null?void 0:s.components;!i||i.length<=0||(delete e.userData.components,e[oy]=i)}afterSerializeUserData(e,t){if(e.type==="Scene"&&dl&&console.log("DONE",JSON.stringify(t)),e[oy]===void 0)return;const i=e[oy];delete e[oy],i!==null&&(e.userData.components=i)}writeNode(e,t){let i=this.writer.json.nodes.length;console.log(e.name,i,e.uuid);const s=new tX(e,i,t);this.exportContext[i]=s,this.objectToNodeMap[e.uuid]=i}afterParse(e){var t;dl&&console.log("AFTER",e);for(const i in this.exportContext){const s=this.exportContext[i],r=s.node,o=s.nodeDef,a=s.nodeIndex,c=(t=r.userData)==null?void 0:t.components;if(!c||c.length<=0)continue;const l=new eX;o.extensions=o.extensions||{},o.extensions[this.name]=l,this.context.object=r,this.context.nodeId=a,this.context.objectToNode=this.objectToNodeMap;const h=[];for(const d of c){this.context.target=d;const f=zo().writeBuiltinComponentData(d,this.context);f!==null&&h.push(f)}h.length>0&&(l[Fh]=h,dl&&console.log("DID WRITE",r,"nodeIndex",a,h))}}beforeRoot(){return dl&&console.log("BEGIN LOAD"),this.nodeToObjectMap={},null}async afterRoot(e){const t=e.parser,i=t==null?void 0:t.extensions;if(!i)return;const s=i[this.name];dl&&console.log("After root",e,this.parser,i);const r=[];if(s===!0){const o=t.json.nodes;for(let a=0;a<o.length;a++){const c=await t.getDependency("node",a);this.nodeToObjectMap[a]=c}for(let a=0;a<o.length;a++){const c=o[a],l=a,h=c.extensions;if(!h)continue;const d=h[this.name];if(!d)continue;dl&&console.log("NODE",c);const f=this.nodeToObjectMap[l];if(!f){console.error("Could not find object for node index: "+l,c,t);continue}ub(f),r.push(this.createComponents(f,d))}}await Promise.all(r)}async createComponents(e,t){if(!t)return;const i=t[Fh];if(i){const s=new Array;dl&&console.log(e.name,i);for(const r in i){const o=i[r];dl&&console.log("Serialized data",JSON.parse(JSON.stringify(o))),o&&this.parser&&s.push(y1(this.parser,o)),e.userData=e.userData||{},e.userData[Fh]=e.userData[Fh]||[],e.userData[Fh].push(o)}await Promise.all(s)}}}/*!
|
|
3950
3950
|
fflate - fast JavaScript compression/decompression
|
|
3951
3951
|
<https://101arrowz.github.io/fflate>
|
|
3952
3952
|
Licensed under MIT. https://github.com/101arrowz/fflate/blob/master/LICENSE
|
|
@@ -4970,7 +4970,7 @@ void main() {
|
|
|
4970
4970
|
`,f=function(y,_,C){_=_||1024;let T=y.pos,x=-1,M=0,P="",k=String.fromCharCode.apply(null,new Uint16Array(y.subarray(T,T+128)));for(;0>(x=k.indexOf(d))&&M<_&&T<y.byteLength;)P+=k,M+=k.length,T+=128,k+=String.fromCharCode.apply(null,new Uint16Array(y.subarray(T,T+128)));return-1<x?(C!==!1&&(y.pos+=M+x+1),P+k.slice(0,x)):!1},p=function(y){const _=/^#\?(\S+)/,C=/^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/,S=/^\s*EXPOSURE\s*=\s*(\d+(\.\d+)?)\s*$/,T=/^\s*FORMAT=(\S+)\s*$/,x=/^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/,M={valid:0,string:"",comments:"",programtype:"RGBE",format:"",gamma:1,exposure:1,width:0,height:0};let P,k;if(y.pos>=y.byteLength||!(P=f(y)))return a(1,"no header found");if(!(k=P.match(_)))return a(3,"bad initial token");for(M.valid|=1,M.programtype=k[1],M.string+=P+`
|
|
4971
4971
|
`;P=f(y),P!==!1;){if(M.string+=P+`
|
|
4972
4972
|
`,P.charAt(0)==="#"){M.comments+=P+`
|
|
4973
|
-
`;continue}if((k=P.match(C))&&(M.gamma=parseFloat(k[1])),(k=P.match(S))&&(M.exposure=parseFloat(k[1])),(k=P.match(T))&&(M.valid|=2,M.format=k[1]),(k=P.match(x))&&(M.valid|=4,M.height=parseInt(k[1],10),M.width=parseInt(k[2],10)),M.valid&2&&M.valid&4)break}return M.valid&2?M.valid&4?M:a(3,"missing image size specifier"):a(3,"missing format specifier")},g=function(y,_,C){const S=_;if(S<8||S>32767||y[0]!==2||y[1]!==2||y[2]&128)return new Uint8Array(y);if(S!==(y[2]<<8|y[3]))return a(3,"wrong scanline width");const T=new Uint8Array(4*_*C);if(!T.length)return a(4,"unable to allocate buffer space");let x=0,M=0;const P=4*S,k=new Uint8Array(4),G=new Uint8Array(P);let z=C;for(;z>0&&M<y.byteLength;){if(M+4>y.byteLength)return a(1);if(k[0]=y[M++],k[1]=y[M++],k[2]=y[M++],k[3]=y[M++],k[0]!=2||k[1]!=2||(k[2]<<8|k[3])!=S)return a(3,"bad rgbe scanline format");let L=0,H;for(;L<P&&M<y.byteLength;){H=y[M++];const K=H>128;if(K&&(H-=128),H===0||L+H>P)return a(3,"bad scanline data");if(K){const J=y[M++];for(let ue=0;ue<H;ue++)G[L++]=J}else G.set(y.subarray(M,M+H),L),L+=H,M+=H}const Z=S;for(let K=0;K<Z;K++){let J=0;T[x]=G[K+J],J+=S,T[x+1]=G[K+J],J+=S,T[x+2]=G[K+J],J+=S,T[x+3]=G[K+J],x+=4}z--}return T},m=function(y,_,C,S){const T=y[_+3],x=Math.pow(2,T-128)/255;C[S+0]=y[_+0]*x,C[S+1]=y[_+1]*x,C[S+2]=y[_+2]*x,C[S+3]=1},A=function(y,_,C,S){const T=y[_+3],x=Math.pow(2,T-128)/255;C[S+0]=Yh.toHalfFloat(Math.min(y[_+0]*x,65504)),C[S+1]=Yh.toHalfFloat(Math.min(y[_+1]*x,65504)),C[S+2]=Yh.toHalfFloat(Math.min(y[_+2]*x,65504)),C[S+3]=Yh.toHalfFloat(1)},v=new Uint8Array(e);v.pos=0;const b=p(v);if(b!==-1){const y=b.width,_=b.height,C=g(v.subarray(v.pos),y,_);if(C!==-1){let S,T,x;switch(this.type){case vn:x=C.length/4;const M=new Float32Array(x*4);for(let k=0;k<x;k++)m(C,k*4,M,k*4);S=M,T=vn;break;case Pn:x=C.length/4;const P=new Uint16Array(x*4);for(let k=0;k<x;k++)A(C,k*4,P,k*4);S=P,T=Pn;break;default:console.error("THREE.RGBELoader: unsupported type: ",this.type);break}return{width:y,height:_,data:S,header:b.string,gamma:b.gamma,exposure:b.exposure,type:T}}}return null}setDataType(e){return this.type=e,this}load(e,t,i,s){function r(o,a){switch(o.type){case vn:case Pn:o.encoding=an,o.minFilter=Vt,o.magFilter=Vt,o.generateMipmaps=!1,o.flipY=!0;break}t&&t(o,a)}return super.load(e,r,i,s)}}const DN=ce("debugautosync"),aC=Symbol("syncerId");class ese{constructor(){u(this,"_syncers",{})}getOrCreateSyncer(e){if(!e.guid)return null;if(this._syncers[e.guid])return this._syncers[e.guid];const t=new tse(e);return t[aC]=e.guid,this._syncers[t[aC]]=t,t}removeSyncer(e){delete this._syncers[e[aC]]}}const TM=new ese;class tse{constructor(e){u(this,"comp");u(this,"hasChanges",!1);u(this,"changedProperties",{});u(this,"data",{});u(this,"_boundEvent");u(this,"_handleReceivingMethod");u(this,"_isReceiving",!1);u(this,"_isInit",!1);this.comp=e}get networkingKey(){return this.comp.constructor.name}init(e){if(this._isInit)return;this._isInit=!0,this.comp=e,this._boundEvent=this.onHandleSending.bind(this),this.comp.context.post_render_callbacks.push(this._boundEvent),this._handleReceivingMethod=this.onHandleReceiving.bind(this),this.comp.context.connection.beginListen(this.networkingKey,this._handleReceivingMethod);const t=this.comp.context.connection.tryGetState(this.comp.guid);t&&this.onHandleReceiving(t)}destroy(){this._isInit&&(this._boundEvent&&this.comp.context.post_render_callbacks.splice(this.comp.context.post_render_callbacks.indexOf(this._boundEvent),1),this._handleReceivingMethod&&this.comp.context.connection.stopListen(this.networkingKey,this._handleReceivingMethod),this.comp=null,this._isInit=!1)}notifyChanged(e,t){this._isReceiving||(this.hasChanges=!0,this.changedProperties[e]=t)}onHandleSending(){if(!this.hasChanges)return;this.hasChanges=!1;const e=this.comp.context.connection;if(!e||!e.isConnected){for(const t in this.changedProperties)delete this.changedProperties[t];return}for(const t in this.data)delete this.data[t];this.data.guid=this.comp.guid;for(const t in this.changedProperties){const i=this.changedProperties[t];delete this.changedProperties[t],this.data[t]=i}e.send(this.networkingKey,this.data)}onHandleReceiving(e){if(!this._isInit||!this.comp)return;const t=e.guid;if(!(t&&t!==this.comp.guid)){DN&&console.log("RECEIVED",this.comp.name,this.comp.guid,e);try{this._isReceiving=!0;for(const i in e){if(i==="guid")continue;const s=e[i];this.comp[i]=s}}catch(i){console.error(i)}finally{this._isReceiving=!1}}}}function ise(n,e){let t=e!==n;if(!t&&n&&e){if(Array.isArray(n)&&Array.isArray(e))t=!0;else if(typeof n=="object"&&typeof e=="object"){for(const i of Object.keys(n))if(n[i]!==e[i]){t=!0;break}}}return t}const Qg=Symbol("AutoSyncHandler");function nse(n){if(n[Qg])return n[Qg];const e=TM.getOrCreateSyncer(n);return e==null||e.init(n),n[Qg]=e,e}function sse(n){const e=n[Qg];e&&(TM.removeSyncer(e),e.destroy(),delete n[Qg])}const PM=function(n){return function(e,t){let i=null,s;typeof n=="string"?s=e[n]:typeof n=="function"&&(s=n);const r=e,o=r.__internalAwake;DN&&console.log(t);const a=Symbol(t);r.__internalAwake=function(){if(this[a]!==void 0)return;this[a]=this[t],o.call(this),i=TM.getOrCreateSyncer(this);const l=Object.getOwnPropertyDescriptor(this,t);(l==null?void 0:l.set)===void 0&&Object.defineProperty(this,t,{set:function(h){var f;const d=this[a];this[a]=h,ise(h,d)&&(s==null?void 0:s.call(this,h,d))!==!1&&((f=nse(this))==null||f.notifyChanged(t,h))},get:function(){return this[a]},configurable:!0,enumerable:!0}),i==null||i.init(this)};const c=r.__internalDestroy;r.__internalDestroy=function(){sse(this),c.call(this)}}};var rse=Object.defineProperty,ose=Object.getOwnPropertyDescriptor,rx=(n,e,t,i)=>{for(var s=i>1?void 0:i?ose(e,t):e,r=n.length-1,o;r>=0;r--)(o=n[r])&&(s=(i?o(e,t,s):o(s))||s);return i&&s&&rse(e,t,s),s};const eg=ce("debugskybox");class ju extends Ce{constructor(){super(...arguments);u(this,"url");u(this,"allowDrop",!0);u(this,"background",!0);u(this,"environment",!0);u(this,"_loader");u(this,"_prevUrl");u(this,"_prevLoadedEnvironment");u(this,"_prevEnvironment",null);u(this,"_prevBackground",null);u(this,"dragOverEvent");u(this,"dropEvent")}onEnable(){this.setSkybox(this.url),this.registerDropEvents()}onDisable(){var t;this.context.scene.environment===this._prevLoadedEnvironment&&(this.context.scene.environment=this._prevEnvironment,ki.backgroundShouldBeTransparent(this.context)||(this.context.scene.background=this._prevBackground),this._prevLoadedEnvironment=void 0),this.unregisterDropEvents(),(t=this.context.mainCameraComponent)==null||t.applyClearFlags()}async setSkybox(t){var a;if(!t)return;if(!(t!=null&&t.endsWith(".hdr"))&&!t.endsWith(".exr")&&!t.endsWith(".jpg")&&!t.endsWith(".png")&&!t.endsWith(".jpeg")&&console.warn("Potentially invalid skybox url",this.url,"on",this.name),eg&&console.log("Remote skybox url?: "+t),this._prevUrl===t&&this._prevLoadedEnvironment){this.applySkybox();return}else(a=this._prevLoadedEnvironment)==null||a.dispose(),this._prevLoadedEnvironment=void 0;this._prevUrl=t;const i=t.endsWith(".exr"),s=t.endsWith(".hdr");i?this._loader instanceof GS||(this._loader=new GS):s?this._loader instanceof SD||(this._loader=new SD):this._loader instanceof kl||(this._loader=new kl),eg&&console.log("Loading skybox: "+t);const r=await this._loader.loadAsync(t);if(!r||!this.enabled)return;this.url=t;const o=t.lastIndexOf("/");r.name=t.substring(o>=0?o+1:0),this._loader instanceof kl&&(r.encoding=yt),this._prevLoadedEnvironment=r,this.applySkybox()}applySkybox(){var i;const t=this._prevLoadedEnvironment;t&&(t.mapping=ff,t.needsUpdate=!0,this.context.scene.background!==t&&(this._prevBackground=this.context.scene.background),this.context.scene.environment!==t&&(this._prevEnvironment=this.context.scene.environment),eg&&console.log("Set remote skybox",this.url),this.environment&&(this.context.scene.environment=t),this.background&&!ki.backgroundShouldBeTransparent(this.context)&&(this.context.scene.background=t),((i=this.context.mainCameraComponent)==null?void 0:i.backgroundBlurriness)!==void 0&&(this.context.scene.backgroundBlurriness=this.context.mainCameraComponent.backgroundBlurriness))}registerDropEvents(){this.dragOverEvent||(this.dragOverEvent=t=>{if(this.allowDrop&&t.dataTransfer)for(const i of t.dataTransfer.types)i==="text/uri-list"&&t.preventDefault()},this.dropEvent=t=>{var i,s,r,o;if(this.allowDrop&&(t.preventDefault(),!!t.dataTransfer)){for(const a of t.dataTransfer.types)if(a==="text/uri-list"){const c=t.dataTransfer.getData(a);eg&&console.log(a,c);let l=(s=(i=new RegExp(/polyhaven.com\/asset_img\/.+?\/(?<name>.+)\.png/).exec(c))==null?void 0:i.groups)==null?void 0:s.name;if(l||(l=(o=(r=new RegExp(/polyhaven\.com\/a\/(?<name>.+)/).exec(c))==null?void 0:r.groups)==null?void 0:o.name),eg&&console.log(l),l){const h="https://dl.polyhaven.org/file/ph-assets/HDRIs/exr/1k/"+l+"_1k.exr";this.setSkybox(h)}else console.warn("Could not resolve skybox name from dropped url",c)}}},this.context.domElement.addEventListener("dragover",this.dragOverEvent),this.context.domElement.addEventListener("drop",this.dropEvent))}unregisterDropEvents(){this.dragOverEvent&&(this.context.domElement.removeEventListener("dragover",this.dragOverEvent),this.context.domElement.removeEventListener("drop",this.dropEvent))}}rx([PM("setSkybox"),w(URL)],ju.prototype,"url",2);rx([w()],ju.prototype,"allowDrop",2);rx([w()],ju.prototype,"background",2);rx([w()],ju.prototype,"environment",2);var ase=Object.defineProperty,cse=Object.getOwnPropertyDescriptor,Ha=(n,e,t,i)=>{for(var s=i>1?void 0:i?cse(e,t):e,r=n.length-1,o;r>=0;r--)(o=n[r])&&(s=(i?o(e,t,s):o(s))||s);return i&&s&&ase(e,t,s),s};const Cc=ce("debugsceneswitcher"),Hg="scene";mn.registerCallback(xr.ContextRegistered,async n=>{Promise.resolve().then(()=>Zre).then(e=>{const t=e.NeedleEngineHTMLElement;Cc&&console.log("SceneSwitcher: registering scene attribute",t.observedAttributes),t.observedAttributes.includes(Hg)||t.observedAttributes.push(Hg)})});const ml=Promise.resolve(!1);class Dr extends Ce{constructor(){super(...arguments);u(this,"scenes");u(this,"queryParameterName","scene");u(this,"clamp",!0);u(this,"useHistory",!0);u(this,"useKeyboard",!0);u(this,"useSwipe",!0);u(this,"useSceneLighting",!0);u(this,"preloadNext",1);u(this,"preloadPrevious",1);u(this,"preloadConcurrent",2);u(this,"_currentIndex",-1);u(this,"_currentScene");u(this,"_engineElementOverserver");u(this,"_preloadScheduler");u(this,"onPopState",async t=>{if(!this.useHistory)return;let i=this.useHistory;try{this.useHistory=!1;let s=!1;if(this.queryParameterName&&(s=await this.tryLoadFromQueryParam()),!s){const r=t.state;if(r!==null&&r.startsWith(this.guid)){const o=r.substr(this.guid.length+2);console.log(o),await this.trySelectSceneFromValue(o)}}}finally{this.useHistory=i}});u(this,"normalizedSwipeThresholdX",.1);u(this,"_didSwipe",!1);u(this,"onPointerMove",t=>{if(!this._didSwipe&&t.button===0&&t.pointerType==="touch"&&this.context.input.getPointerPressedCount()===1){const i=this.context.input.getPointerPositionDelta(t.button);if(i){const s=i.x/this.context.domWidth;s>=this.normalizedSwipeThresholdX?(this._didSwipe=!0,this.selectPrev()):s<=-this.normalizedSwipeThresholdX&&(this._didSwipe=!0,this.selectNext())}}});u(this,"onPointerUp",t=>{t.button===0&&(this._didSwipe=!1)});u(this,"onKeyDown",t=>{if(!this.useKeyboard||!this.scenes)return;const i=t.key.toLowerCase();if(!i)return;const s=parseInt(i)-1;if(s>=0){this.trySelectSceneFromValue(s);return}switch(i){case"arrowright":case"d":this.selectNext();break;case"arrowleft":case"a":this.selectPrev();break}})}get currentIndex(){return this._currentIndex}awake(){Cc&&console.log("SceneSwitcher",this)}async start(){if(this._currentIndex===-1&&!await this.tryLoadFromQueryParam()){const t=this.context.domElement.getAttribute(Hg);try{(t===null||!await this.trySelectSceneFromValue(t))&&this._currentIndex===-1&&this.select(0)}finally{}}}onEnable(){globalThis.addEventListener("popstate",this.onPopState),this.context.input.addEventListener(ha.KeyDown,this.onKeyDown),this.context.input.addEventListener(ha.PointerMove,this.onPointerMove),this.context.input.addEventListener(ha.PointerUp,this.onPointerUp),this._engineElementOverserver||(this._engineElementOverserver=new MutationObserver(t=>{for(const i of t)if(i.type==="attributes"&&i.attributeName===Hg){const s=this.context.domElement.getAttribute(Hg);s!==null&&this.trySelectSceneFromValue(s)}})),this._engineElementOverserver.observe(this.context.domElement,{attributes:!0}),this._preloadScheduler||(this._preloadScheduler=new lse(this)),this._preloadScheduler.maxLoadAhead=this.preloadNext,this._preloadScheduler.maxLoadBehind=this.preloadPrevious,this._preloadScheduler.maxConcurrent=this.preloadConcurrent,this._preloadScheduler.begin()}onDisable(){var t;globalThis.removeEventListener("popstate",this.onPopState),this.context.input.removeEventListener(ha.KeyDown,this.onKeyDown),this.context.input.removeEventListener(ha.PointerMove,this.onPointerMove),this.context.input.removeEventListener(ha.PointerUp,this.onPointerUp),(t=this._preloadScheduler)==null||t.stop()}selectNext(){return this.select(this._currentIndex+1)}selectPrev(){return this.select(this._currentIndex-1)}select(t){var s,r;if(Cc&&console.log("select",t),typeof t=="object"&&console.warn('Switching to "'+t+'" might not work. Please either use an index or a AssetReference (not a scene reference)'),typeof t=="string"){const o=(s=this.scenes)==null?void 0:s.find(a=>a.uri===t);if(!o){const a=qn.getOrCreate(this.sourceId??"",t,this.context);return this.switchScene(a)}if(o)t=this.scenes.indexOf(o);else return ml}if(!((r=this.scenes)!=null&&r.length))return ml;if(t<0){if(this.clamp)return ml;t=this.scenes.length-1}else if(t>=this.scenes.length){if(this.clamp)return ml;t=0}const i=this.scenes[t];return this.switchScene(i)}async switchScene(t){var s,r;if(t===this._currentScene)return!0;this._currentScene&&this._currentScene.unload();const i=this._currentIndex=((s=this.scenes)==null?void 0:s.indexOf(t))??-1;this._currentScene=t;try{const o=new CustomEvent("loadscene-start",{detail:{scene:t,switcher:this,index:i}});this.dispatchEvent(o),await t.loadAssetAsync();const a=new CustomEvent("loadscene-finished",{detail:{scene:t,switcher:this,index:i}});if(this.dispatchEvent(a),a.defaultPrevented)return Cc&&console.warn("Adding loaded scene prevented:",t,a),!1;if(!t.asset)return Cc&&console.warn("Failed loading scene:",t),!1;if(this._currentIndex===i){if($.add(t.asset,this.gameObject),this.useSceneLighting&&this.context.sceneLighting.enable(t),this.useHistory&&i>=0)if((r=this.queryParameterName)!=null&&r.length)JD(this.queryParameterName,i.toString(),this.useHistory);else{const c=history.state,l=this.guid+"::"+i;c!==l&&history.pushState(l,"unused",location.href)}return!0}}catch(o){console.error(o)}return!1}preload(t){if(t>=0&&t<this.scenes.length){const i=this.scenes[t];if(i instanceof qn)return i.preload()}return ml}tryLoadFromQueryParam(){var i;if(!((i=this.queryParameterName)!=null&&i.length))return ml;const t=ce(this.queryParameterName);return typeof t=="boolean"?ml:this.trySelectSceneFromValue(t)}trySelectSceneFromValue(t){if(typeof t=="string"){const i=parseInt(t);if(i>=0&&i<this.scenes.length)return this.select(i);for(let s=0;s<this.scenes.length;s++)if(this.scenes[s].uri.toLowerCase().includes(t))return this.select(s)}else if(typeof t=="number"&&t>=0&&t<this.scenes.length)return this.select(t);return zs()&&console.warn('Can not find scene: "'+t+'"',this),ml}}Ha([w(qn)],Dr.prototype,"scenes",2);Ha([w()],Dr.prototype,"queryParameterName",2);Ha([w()],Dr.prototype,"clamp",2);Ha([w()],Dr.prototype,"useHistory",2);Ha([w()],Dr.prototype,"useKeyboard",2);Ha([w()],Dr.prototype,"useSwipe",2);Ha([w()],Dr.prototype,"useSceneLighting",2);Ha([w()],Dr.prototype,"preloadNext",2);Ha([w()],Dr.prototype,"preloadPrevious",2);Ha([w()],Dr.prototype,"preloadConcurrent",2);class lse{constructor(e,t=1,i=1,s=2){u(this,"maxLoadAhead");u(this,"maxLoadBehind");u(this,"maxConcurrent");u(this,"_isRunning",!1);u(this,"_switcher");u(this,"_loadTasks",[]);u(this,"_maxConcurrentLoads",1);this._switcher=e,this.maxLoadAhead=t,this.maxLoadBehind=i,this.maxConcurrent=s}begin(){if(this._isRunning)return;Cc&&console.log("Preload begin"),this._isRunning=!0;let e=-1,t,i;const s=this._switcher.scenes;let r=setInterval(()=>{if(this.allLoaded()&&(Cc&&console.log("All scenes loaded"),this.stop()),!this._isRunning){clearInterval(r);return}if(this.canLoadNewScene()===!1)return;e!==this._switcher.currentIndex&&(e=this._switcher.currentIndex,i=0,t=0);const o=i%2===0;o&&(t+=1),i+=1;const a=o?this.maxLoadAhead:this.maxLoadBehind;if(t>a)return;let c=o?e+t:e-t;if(c<0||c<0||c>=s.length)return;const l=s[c];new hse(c,l,this._loadTasks)},200)}stop(){this._isRunning=!1}canLoadNewScene(){return this._loadTasks.length<this._maxConcurrentLoads}allLoaded(){for(const e of this._switcher.scenes)if((e==null?void 0:e.isLoaded())===!1)return!1;return!0}}class hse{constructor(e,t,i){u(this,"index");u(this,"asset");u(this,"tasks");this.index=e,this.asset=t,this.tasks=i,i.push(this),this.awaitLoading()}async awaitLoading(){this.asset.isLoaded()||(Cc&&console.log("Preload start: "+this.asset.uri,this.index),await this.asset.preload(),Cc&&console.log("Preload finished: "+this.asset.uri,this.index));const e=this.tasks.indexOf(this);e>=0&&this.tasks.splice(e,1)}}function use(){return new Promise((n,e)=>{let i=()=>{i!=null&&(document.removeEventListener("pointerdown",i),document.removeEventListener("click",i),document.removeEventListener("dragstart",i),document.removeEventListener("touchstart",i),n())};document.addEventListener("pointerdown",i),document.addEventListener("click",i),document.addEventListener("dragstart",i),document.addEventListener("touchstart",i)})}async function dse(n){await use(),n()}var kN=(n=>(n[n.Quad=0]="Quad",n))(kN||{});class fse{static createPrimitive(e,t){let i;switch(e){case 0:const s=new Yn(1,1,1,1),r=(t==null?void 0:t.material)??new vi({color:16777215});i=new ve(s,r)}return t!=null&&t.name&&(i.name=t.name),i}}var pse=Object.defineProperty,gse=Object.getOwnPropertyDescriptor,yo=(n,e,t,i)=>{for(var s=i>1?void 0:i?gse(e,t):e,r=n.length-1,o;r>=0;r--)(o=n[r])&&(s=(i?o(e,t,s):o(s))||s);return i&&s&&pse(e,t,s),s};const ia=ce("debugvideo");var ON=(n=>(n[n.CameraFarPlane=0]="CameraFarPlane",n[n.CameraNearPlane=1]="CameraNearPlane",n[n.RenderTexture=2]="RenderTexture",n[n.MaterialOverride=3]="MaterialOverride",n))(ON||{});class us extends Ce{constructor(){super();u(this,"renderer",null);u(this,"playOnAwake",!0);u(this,"aspectMode",0);u(this,"clip",null);u(this,"renderMode");u(this,"targetMaterialProperty");u(this,"targetMaterialRenderer");u(this,"targetTexture");u(this,"time",0);u(this,"_playbackSpeed",1);u(this,"_isLooping",!1);u(this,"_muted",!1);u(this,"_audioOutputMode",2);u(this,"playInBackground",!0);u(this,"_crossOrigin","anonymous");u(this,"source");u(this,"url",null);u(this,"_videoElement",null);u(this,"_videoTexture",null);u(this,"_videoMaterial",null);u(this,"_isPlaying",!1);u(this,"wasPlaying",!1);u(this,"visibilityChanged",t=>{switch(document.visibilityState){case"hidden":this.playInBackground||(this.wasPlaying=this._isPlaying,this.pause());break;case"visible":this.wasPlaying&&!this._isPlaying&&this.play();break}});u(this,"_receivedInput",!1);u(this,"_overlay",null);u(this,"_targetObjects");u(this,"_updateAspectRoutineId",-1);dse(()=>{this._receivedInput=!0,this.updateVideoElementSettings()}),this._targetObjects=[],ce("videoscreenspace")&&window.addEventListener("keydown",t=>{t.key==="f"&&(this.screenspace=!this.screenspace)})}get playbackSpeed(){var t;return((t=this._videoElement)==null?void 0:t.playbackRate)??this._playbackSpeed}set playbackSpeed(t){this._playbackSpeed=t,this._videoElement&&(this._videoElement.playbackRate=t)}get isLooping(){var t;return((t=this._videoElement)==null?void 0:t.loop)??this._isLooping}set isLooping(t){this._isLooping=t,this._videoElement&&(this._videoElement.loop=t)}get currentTime(){var t;return((t=this._videoElement)==null?void 0:t.currentTime)??this.time}set currentTime(t){this._videoElement?this._videoElement.currentTime=t:this.time=t}get isPlaying(){const t=this._videoElement;if(t){if(t.currentTime>0&&!t.paused&&!t.ended&&t.readyState>t.HAVE_CURRENT_DATA)return!0;if(t.srcObject&&t.srcObject.active)return!0}return!1}get crossOrigin(){var t;return((t=this._videoElement)==null?void 0:t.crossOrigin)??this._crossOrigin}set crossOrigin(t){this._crossOrigin=t,this._videoElement&&(t!==null?this._videoElement.setAttribute("crossorigin",t):this._videoElement.removeAttribute("crossorigin"))}get videoMaterial(){return this._videoMaterial}get videoTexture(){return this._videoTexture}get videoElement(){return this._videoElement}get muted(){var t;return((t=this._videoElement)==null?void 0:t.muted)??this._muted}set muted(t){this._muted=t,this._videoElement&&(this._videoElement.muted=t)}set audioOutputMode(t){t!==this._audioOutputMode&&(t===1&&ho()&&console.warn("VideoAudioOutputMode.AudioSource is not yet implemented"),this._audioOutputMode=t,this.updateVideoElementSettings())}get audioOutputMode(){return this._audioOutputMode}setVideo(t){this.clip=t,this.source=0,this._videoElement?(this._videoElement.srcObject=t,this._isPlaying&&this.play(),this.updateAspect()):this.create(!0)}setClipURL(t){this.url!==t&&(this.url=t,this.source=1,ia&&console.log("set url",t),this._videoElement?(this._videoElement.src=t,this._isPlaying&&(this.stop(),this.play())):this.create(!0))}onEnable(){var t,i;window.addEventListener("visibilitychange",this.visibilityChanged),this.playOnAwake===!0&&this.create(!0),this.screenspace?(t=this._overlay)==null||t.start():(i=this._overlay)==null||i.stop()}onDisable(){window.removeEventListener("visibilitychange",this.visibilityChanged),this.pause()}onDestroy(){var t;this._videoElement&&((t=this._videoElement.parentElement)==null||t.removeChild(this._videoElement),this._videoElement=null),this._videoTexture&&(this._videoTexture.dispose(),this._videoTexture=null)}play(){var t,i;this._videoElement||this.create(!1),this._videoElement&&(this._isPlaying&&!((t=this._videoElement)!=null&&t.ended)&&!((i=this._videoElement)!=null&&i.paused)||(this._isPlaying=!0,this._receivedInput||(this._videoElement.muted=!0),this.updateVideoElementSettings(),this._videoElement.currentTime=this.time,this._videoElement.play().catch(s=>{var r;console.log(s),ia&&console.error("Error playing video",s,"CODE="+s.code,(r=this.videoElement)==null?void 0:r.src,this),setTimeout(()=>{this._isPlaying&&!this.destroyed&&this.activeAndEnabled&&this.play()},1e3)}),ia&&console.log("play",this._videoElement,this.time)))}stop(){this._isPlaying=!1,this.time=0,this._videoElement&&(this._videoElement.currentTime=0,this._videoElement.pause(),ia&&console.log("STOP",this))}pause(){var t,i;this.time=((t=this._videoElement)==null?void 0:t.currentTime)??0,this._isPlaying=!1,(i=this._videoElement)==null||i.pause(),ia&&console.log("PAUSE",this,this.currentTime)}create(t){var s;let i;switch(this.source){case 0:i=this.clip;break;case 1:i=this.url;break}i&&(this._videoElement||(ia&&console.warn("Create VideoElement",this),this._videoElement=this.createVideoElement(),(s=this.context.domElement)==null||s.prepend(this._videoElement),this.updateVideoElementStyles()),typeof i=="string"?(ia&&console.log("Set Video src",i),this._videoElement.src=i):(ia&&console.log("Set Video srcObject",i),this._videoElement.srcObject=i),this._videoTexture||(this._videoTexture=new g2(this._videoElement)),this._videoTexture.flipY=!1,this._videoTexture.encoding=yt,this.handleBeginPlaying(t),ia&&console.log(this,t))}updateAspect(){this.aspectMode!==0&&this.startCoroutine(this.updateAspectImpl())}get screenspace(){var t;return((t=this._overlay)==null?void 0:t.enabled)??!1}set screenspace(t){var i;if(t){if(!this._videoTexture)return;this._overlay||(this._overlay=new mse(this.context)),this._overlay.add(this._videoTexture)}else(i=this._overlay)==null||i.remove(this._videoTexture);this._overlay&&(this._overlay.enabled=t)}createVideoElement(){const t=document.createElement("video");return this._crossOrigin&&t.setAttribute("crossorigin",this._crossOrigin),ia&&console.log("created video element",t),t}handleBeginPlaying(t){var r,o;if(!this.enabled||!this._videoElement)return;this._targetObjects.length=0;let i=this.gameObject;switch(this.renderMode){case 3:i=(r=this.targetMaterialRenderer)==null?void 0:r.gameObject,i||(i=(o=$.getComponent(this.gameObject,Ki))==null?void 0:o.gameObject);break;case 2:console.error("VideoPlayer renderTexture not implemented yet. Please use material override instead");return}if(!i){console.error("Missing target for video material renderer",this.name,ON[this.renderMode],this);return}const s=i.material;if(s)if(this._targetObjects.push(i),s!==this._videoMaterial&&(this._videoMaterial=s.clone(),i.material=this._videoMaterial),!this.targetMaterialProperty)this._videoMaterial.map=this._videoTexture;else switch(this.targetMaterialProperty){default:this._videoMaterial.map=this._videoTexture;break}else{console.warn("Can not play video, no material found, this might be a multimaterial case which is not supported yet");return}this.updateVideoElementSettings(),this.updateVideoElementStyles(),t&&this.play()}updateVideoElementSettings(){if(!this._videoElement)return;this._videoElement.loop=this._isLooping,this._videoElement.currentTime=this.currentTime,this._videoElement.playbackRate=this._playbackSpeed,this._videoElement.playsInline=!0;let t=!this._receivedInput||this.audioOutputMode===0;!t&&this._muted&&(t=!0),this._videoElement.muted=t,this.playOnAwake&&(this._videoElement.autoplay=!0)}updateVideoElementStyles(){this._videoElement&&(this._videoElement.style.userSelect="none",this._videoElement.style.visibility="hidden",this._videoElement.style.display="none",this.updateAspect())}*updateAspectImpl(){const t=++this._updateAspectRoutineId,i=void 0,s=this.clip;for(;t===this._updateAspectRoutineId&&this.aspectMode!==0&&this.clip&&s===this.clip&&this._isPlaying;){if(!s||typeof s=="string")return;let r;for(const o of s.getVideoTracks()){const a=o.getSettings();if(a&&a.width&&a.height){r=a.width/a.height;break}else r=this.context.renderer.domElement.clientWidth/this.context.renderer.domElement.clientHeight}if(r===void 0){for(let o=0;o<10;o++)yield;if(!this.isPlaying)break;continue}if(i===r){yield;continue}for(const o of this._targetObjects){let a=1;if(o.parent){const c=is(o.parent);a=c.x/c.y}switch(this.aspectMode){case 1:o.scale.y=1/r*o.scale.x*a;break;case 2:o.scale.x=r*o.scale.y*a;break}}for(let o=0;o<3;o++)yield}}}yo([w(Ie)],us.prototype,"renderer",2);yo([w()],us.prototype,"playOnAwake",2);yo([w()],us.prototype,"aspectMode",2);yo([w(URL)],us.prototype,"clip",2);yo([w()],us.prototype,"renderMode",2);yo([w()],us.prototype,"targetMaterialProperty",2);yo([w(Ki)],us.prototype,"targetMaterialRenderer",2);yo([w(Gt)],us.prototype,"targetTexture",2);yo([w()],us.prototype,"time",2);yo([w()],us.prototype,"playbackSpeed",1);yo([w()],us.prototype,"isLooping",1);yo([w()],us.prototype,"audioOutputMode",1);class mse{constructor(e){u(this,"context");u(this,"_videos",[]);u(this,"_screenspaceModeQuad");u(this,"_isInScreenspaceMode",!1);u(this,"_input");this.context=e,this._input=new Ase(this)}get enabled(){return this._isInScreenspaceMode}set enabled(e){e?this.start():this.stop()}add(e){this._videos.indexOf(e)===-1&&this._videos.push(e)}remove(e){if(!e)return;const t=this._videos.indexOf(e);t>=0&&this._videos.splice(t,1)}start(){var s;if(this._isInScreenspaceMode||this._videos.length<0)return;const e=this._videos[this._videos.length-1];if(!e)return;if(this._isInScreenspaceMode=!0,!this._screenspaceModeQuad){if(this._screenspaceModeQuad=fse.createPrimitive(kN.Quad,{material:new vse(e)}),!this._screenspaceModeQuad)return;this._screenspaceModeQuad.geometry.scale(2,2,2)}const t=this._screenspaceModeQuad;this.context.scene.add(t),this.updateScreenspaceMaterialUniforms();const i=t.material;i==null||i.reset(),(s=this._input)==null||s.enable(i)}stop(){var e;this._isInScreenspaceMode=!1,this._screenspaceModeQuad&&((e=this._input)==null||e.disable(),this._screenspaceModeQuad.removeFromParent())}updateScreenspaceMaterialUniforms(){var t;const e=(t=this._screenspaceModeQuad)==null?void 0:t.material;e&&(e.screenAspect=this.context.domElement.clientWidth/this.context.domElement.clientHeight)}}class Ase{constructor(e){u(this,"_onResizeScreenFn");u(this,"_onKeyUpFn");u(this,"_onMouseWheelFn");u(this,"context");u(this,"overlay");u(this,"_material");u(this,"_isPinching",!1);u(this,"_lastPinch",0);this.overlay=e,this.context=e.context}enable(e){this._material=e,window.addEventListener("resize",this._onResizeScreenFn=()=>{this.overlay.updateScreenspaceMaterialUniforms()}),window.addEventListener("keyup",this._onKeyUpFn=s=>{s.key==="Escape"&&this.overlay.stop()}),window.addEventListener("wheel",this._onMouseWheelFn=s=>{this.overlay.enabled&&(e.zoom+=s.deltaY*5e-4,s.preventDefault())},{passive:!1});const t=new q;window.addEventListener("mousemove",s=>{if(this.overlay.enabled&&this.context.input.getPointerPressed(0)){const r=new q(s.movementX,s.movementY);r.x/=this.context.domElement.clientWidth,r.y/=this.context.domElement.clientHeight,t.set(r.x,r.y),t.multiplyScalar(e.zoom/-this.context.time.deltaTime*.01),e.offset=e.offset.add(t)}}),window.addEventListener("pointermove",s=>{this.overlay.enabled&&this.context.input.getPointerPressed(0)&&this.context.input.getTouchesPressedCount()===1&&(t.set(s.movementX,s.movementY),t.multiplyScalar(e.zoom*-this.context.time.deltaTime*.05),e.offset=e.offset.add(t))});let i=0;window.addEventListener("touchstart",s=>{if(s.touches.length<2){this.context.time.time-i<.3&&this.overlay.stop(),i=this.context.time.time;return}this._isPinching=!0,this._lastPinch=0}),window.addEventListener("touchmove",s=>{if(!this._isPinching||!this._material)return;const r=s.touches[0],o=s.touches[1],a=r.clientX-o.clientX,c=r.clientY-o.clientY,l=Math.sqrt(a*a+c*c);if(this._lastPinch!==0){const h=l-this._lastPinch;this._material.zoom-=h*.004}this._lastPinch=l}),window.addEventListener("touchend",()=>{this._isPinching=!1})}disable(){this._onResizeScreenFn&&(window.removeEventListener("resize",this._onResizeScreenFn),this._onResizeScreenFn=void 0),this._onKeyUpFn&&(window.removeEventListener("keyup",this._onKeyUpFn),this._onKeyUpFn=void 0),this._onMouseWheelFn&&(window.removeEventListener("wheel",this._onMouseWheelFn),this._onMouseWheelFn=void 0)}}class vse extends Xt{constructor(t){super();u(this,"_offset",new q);this.uniforms={map:{value:t},screenAspect:{value:1},offsetScale:{value:new rt(0,0,1,1)}},this.vertexShader=`
|
|
4973
|
+
`;continue}if((k=P.match(C))&&(M.gamma=parseFloat(k[1])),(k=P.match(S))&&(M.exposure=parseFloat(k[1])),(k=P.match(T))&&(M.valid|=2,M.format=k[1]),(k=P.match(x))&&(M.valid|=4,M.height=parseInt(k[1],10),M.width=parseInt(k[2],10)),M.valid&2&&M.valid&4)break}return M.valid&2?M.valid&4?M:a(3,"missing image size specifier"):a(3,"missing format specifier")},g=function(y,_,C){const S=_;if(S<8||S>32767||y[0]!==2||y[1]!==2||y[2]&128)return new Uint8Array(y);if(S!==(y[2]<<8|y[3]))return a(3,"wrong scanline width");const T=new Uint8Array(4*_*C);if(!T.length)return a(4,"unable to allocate buffer space");let x=0,M=0;const P=4*S,k=new Uint8Array(4),G=new Uint8Array(P);let z=C;for(;z>0&&M<y.byteLength;){if(M+4>y.byteLength)return a(1);if(k[0]=y[M++],k[1]=y[M++],k[2]=y[M++],k[3]=y[M++],k[0]!=2||k[1]!=2||(k[2]<<8|k[3])!=S)return a(3,"bad rgbe scanline format");let L=0,H;for(;L<P&&M<y.byteLength;){H=y[M++];const K=H>128;if(K&&(H-=128),H===0||L+H>P)return a(3,"bad scanline data");if(K){const J=y[M++];for(let ue=0;ue<H;ue++)G[L++]=J}else G.set(y.subarray(M,M+H),L),L+=H,M+=H}const Z=S;for(let K=0;K<Z;K++){let J=0;T[x]=G[K+J],J+=S,T[x+1]=G[K+J],J+=S,T[x+2]=G[K+J],J+=S,T[x+3]=G[K+J],x+=4}z--}return T},m=function(y,_,C,S){const T=y[_+3],x=Math.pow(2,T-128)/255;C[S+0]=y[_+0]*x,C[S+1]=y[_+1]*x,C[S+2]=y[_+2]*x,C[S+3]=1},A=function(y,_,C,S){const T=y[_+3],x=Math.pow(2,T-128)/255;C[S+0]=Yh.toHalfFloat(Math.min(y[_+0]*x,65504)),C[S+1]=Yh.toHalfFloat(Math.min(y[_+1]*x,65504)),C[S+2]=Yh.toHalfFloat(Math.min(y[_+2]*x,65504)),C[S+3]=Yh.toHalfFloat(1)},v=new Uint8Array(e);v.pos=0;const b=p(v);if(b!==-1){const y=b.width,_=b.height,C=g(v.subarray(v.pos),y,_);if(C!==-1){let S,T,x;switch(this.type){case vn:x=C.length/4;const M=new Float32Array(x*4);for(let k=0;k<x;k++)m(C,k*4,M,k*4);S=M,T=vn;break;case Pn:x=C.length/4;const P=new Uint16Array(x*4);for(let k=0;k<x;k++)A(C,k*4,P,k*4);S=P,T=Pn;break;default:console.error("THREE.RGBELoader: unsupported type: ",this.type);break}return{width:y,height:_,data:S,header:b.string,gamma:b.gamma,exposure:b.exposure,type:T}}}return null}setDataType(e){return this.type=e,this}load(e,t,i,s){function r(o,a){switch(o.type){case vn:case Pn:o.encoding=an,o.minFilter=Vt,o.magFilter=Vt,o.generateMipmaps=!1,o.flipY=!0;break}t&&t(o,a)}return super.load(e,r,i,s)}}const DN=ce("debugautosync"),aC=Symbol("syncerId");class ese{constructor(){u(this,"_syncers",{})}getOrCreateSyncer(e){if(!e.guid)return null;if(this._syncers[e.guid])return this._syncers[e.guid];const t=new tse(e);return t[aC]=e.guid,this._syncers[t[aC]]=t,t}removeSyncer(e){delete this._syncers[e[aC]]}}const TM=new ese;class tse{constructor(e){u(this,"comp");u(this,"hasChanges",!1);u(this,"changedProperties",{});u(this,"data",{});u(this,"_boundEvent");u(this,"_handleReceivingMethod");u(this,"_isReceiving",!1);u(this,"_isInit",!1);this.comp=e}get networkingKey(){return this.comp.constructor.name}init(e){if(this._isInit)return;this._isInit=!0,this.comp=e,this._boundEvent=this.onHandleSending.bind(this),this.comp.context.post_render_callbacks.push(this._boundEvent),this._handleReceivingMethod=this.onHandleReceiving.bind(this),this.comp.context.connection.beginListen(this.networkingKey,this._handleReceivingMethod);const t=this.comp.context.connection.tryGetState(this.comp.guid);t&&this.onHandleReceiving(t)}destroy(){this._isInit&&(this._boundEvent&&this.comp.context.post_render_callbacks.splice(this.comp.context.post_render_callbacks.indexOf(this._boundEvent),1),this._handleReceivingMethod&&this.comp.context.connection.stopListen(this.networkingKey,this._handleReceivingMethod),this.comp=null,this._isInit=!1)}notifyChanged(e,t){this._isReceiving||(this.hasChanges=!0,this.changedProperties[e]=t)}onHandleSending(){if(!this.hasChanges)return;this.hasChanges=!1;const e=this.comp.context.connection;if(!e||!e.isConnected){for(const t in this.changedProperties)delete this.changedProperties[t];return}for(const t in this.data)delete this.data[t];this.data.guid=this.comp.guid;for(const t in this.changedProperties){const i=this.changedProperties[t];delete this.changedProperties[t],this.data[t]=i}e.send(this.networkingKey,this.data)}onHandleReceiving(e){if(!this._isInit||!this.comp)return;const t=e.guid;if(!(t&&t!==this.comp.guid)){DN&&console.log("RECEIVED",this.comp.name,this.comp.guid,e);try{this._isReceiving=!0;for(const i in e){if(i==="guid")continue;const s=e[i];this.comp[i]=s}}catch(i){console.error(i)}finally{this._isReceiving=!1}}}}function ise(n,e){let t=e!==n;if(!t&&n&&e){if(Array.isArray(n)&&Array.isArray(e))t=!0;else if(typeof n=="object"&&typeof e=="object"){for(const i of Object.keys(n))if(n[i]!==e[i]){t=!0;break}}}return t}const Qg=Symbol("AutoSyncHandler");function nse(n){if(n[Qg])return n[Qg];const e=TM.getOrCreateSyncer(n);return e==null||e.init(n),n[Qg]=e,e}function sse(n){const e=n[Qg];e&&(TM.removeSyncer(e),e.destroy(),delete n[Qg])}const PM=function(n){return function(e,t){let i=null,s;typeof n=="string"?s=e[n]:typeof n=="function"&&(s=n);const r=e,o=r.__internalAwake;DN&&console.log(t);const a=Symbol(t);r.__internalAwake=function(){if(this[a]!==void 0)return;this[a]=this[t],o.call(this),i=TM.getOrCreateSyncer(this);const l=Object.getOwnPropertyDescriptor(this,t);(l==null?void 0:l.set)===void 0&&Object.defineProperty(this,t,{set:function(h){var f;const d=this[a];this[a]=h,ise(h,d)&&(s==null?void 0:s.call(this,h,d))!==!1&&((f=nse(this))==null||f.notifyChanged(t,h))},get:function(){return this[a]},configurable:!0,enumerable:!0}),i==null||i.init(this)};const c=r.__internalDestroy;r.__internalDestroy=function(){sse(this),c.call(this)}}};var rse=Object.defineProperty,ose=Object.getOwnPropertyDescriptor,rx=(n,e,t,i)=>{for(var s=i>1?void 0:i?ose(e,t):e,r=n.length-1,o;r>=0;r--)(o=n[r])&&(s=(i?o(e,t,s):o(s))||s);return i&&s&&rse(e,t,s),s};const eg=ce("debugskybox");class ju extends Ce{constructor(){super(...arguments);u(this,"url");u(this,"allowDrop",!0);u(this,"background",!0);u(this,"environment",!0);u(this,"_loader");u(this,"_prevUrl");u(this,"_prevLoadedEnvironment");u(this,"_prevEnvironment",null);u(this,"_prevBackground",null);u(this,"dragOverEvent");u(this,"dropEvent")}onEnable(){this.setSkybox(this.url),this.registerDropEvents()}onDisable(){var t;this.context.scene.environment===this._prevLoadedEnvironment&&(this.context.scene.environment=this._prevEnvironment,ki.backgroundShouldBeTransparent(this.context)||(this.context.scene.background=this._prevBackground),this._prevLoadedEnvironment=void 0),this.unregisterDropEvents(),(t=this.context.mainCameraComponent)==null||t.applyClearFlags()}async setSkybox(t){var a;if(!t)return;if(!(t!=null&&t.endsWith(".hdr"))&&!t.endsWith(".exr")&&!t.endsWith(".jpg")&&!t.endsWith(".png")&&!t.endsWith(".jpeg")&&console.warn("Potentially invalid skybox url",this.url,"on",this.name),eg&&console.log("Remote skybox url?: "+t),this._prevUrl===t&&this._prevLoadedEnvironment){this.applySkybox();return}else(a=this._prevLoadedEnvironment)==null||a.dispose(),this._prevLoadedEnvironment=void 0;this._prevUrl=t;const i=t.endsWith(".exr"),s=t.endsWith(".hdr");i?this._loader instanceof GS||(this._loader=new GS):s?this._loader instanceof SD||(this._loader=new SD):this._loader instanceof kl||(this._loader=new kl),eg&&console.log("Loading skybox: "+t);const r=await this._loader.loadAsync(t);if(!r||!this.enabled)return;this.url=t;const o=t.lastIndexOf("/");r.name=t.substring(o>=0?o+1:0),this._loader instanceof kl&&(r.encoding=yt),this._prevLoadedEnvironment=r,this.applySkybox()}applySkybox(){var i;const t=this._prevLoadedEnvironment;t&&(t.mapping=ff,t.needsUpdate=!0,this.context.scene.background!==t&&(this._prevBackground=this.context.scene.background),this.context.scene.environment!==t&&(this._prevEnvironment=this.context.scene.environment),eg&&console.log("Set remote skybox",this.url),this.environment&&(this.context.scene.environment=t),this.background&&!ki.backgroundShouldBeTransparent(this.context)&&(this.context.scene.background=t),((i=this.context.mainCameraComponent)==null?void 0:i.backgroundBlurriness)!==void 0&&(this.context.scene.backgroundBlurriness=this.context.mainCameraComponent.backgroundBlurriness))}registerDropEvents(){this.dragOverEvent||(this.dragOverEvent=t=>{if(this.allowDrop&&t.dataTransfer)for(const i of t.dataTransfer.types)i==="text/uri-list"&&t.preventDefault()},this.dropEvent=t=>{var i,s,r,o;if(this.allowDrop&&(t.preventDefault(),!!t.dataTransfer)){for(const a of t.dataTransfer.types)if(a==="text/uri-list"){const c=t.dataTransfer.getData(a);eg&&console.log(a,c);let l=(s=(i=new RegExp(/polyhaven.com\/asset_img\/.+?\/(?<name>.+)\.png/).exec(c))==null?void 0:i.groups)==null?void 0:s.name;if(l||(l=(o=(r=new RegExp(/polyhaven\.com\/a\/(?<name>.+)/).exec(c))==null?void 0:r.groups)==null?void 0:o.name),eg&&console.log(l),l){const h="https://dl.polyhaven.org/file/ph-assets/HDRIs/exr/1k/"+l+"_1k.exr";this.setSkybox(h)}else console.warn("Could not resolve skybox name from dropped url",c)}}},this.context.domElement.addEventListener("dragover",this.dragOverEvent),this.context.domElement.addEventListener("drop",this.dropEvent))}unregisterDropEvents(){this.dragOverEvent&&(this.context.domElement.removeEventListener("dragover",this.dragOverEvent),this.context.domElement.removeEventListener("drop",this.dropEvent))}}rx([PM("setSkybox"),w(URL)],ju.prototype,"url",2);rx([w()],ju.prototype,"allowDrop",2);rx([w()],ju.prototype,"background",2);rx([w()],ju.prototype,"environment",2);var ase=Object.defineProperty,cse=Object.getOwnPropertyDescriptor,Ha=(n,e,t,i)=>{for(var s=i>1?void 0:i?cse(e,t):e,r=n.length-1,o;r>=0;r--)(o=n[r])&&(s=(i?o(e,t,s):o(s))||s);return i&&s&&ase(e,t,s),s};const Cc=ce("debugsceneswitcher"),Hg="scene";mn.registerCallback(xr.ContextRegistered,async n=>{Promise.resolve().then(()=>$re).then(e=>{const t=e.NeedleEngineHTMLElement;Cc&&console.log("SceneSwitcher: registering scene attribute",t.observedAttributes),t.observedAttributes.includes(Hg)||t.observedAttributes.push(Hg)})});const ml=Promise.resolve(!1);class Dr extends Ce{constructor(){super(...arguments);u(this,"scenes");u(this,"queryParameterName","scene");u(this,"clamp",!0);u(this,"useHistory",!0);u(this,"useKeyboard",!0);u(this,"useSwipe",!0);u(this,"useSceneLighting",!0);u(this,"preloadNext",1);u(this,"preloadPrevious",1);u(this,"preloadConcurrent",2);u(this,"_currentIndex",-1);u(this,"_currentScene");u(this,"_engineElementOverserver");u(this,"_preloadScheduler");u(this,"onPopState",async t=>{if(!this.useHistory)return;let i=this.useHistory;try{this.useHistory=!1;let s=!1;if(this.queryParameterName&&(s=await this.tryLoadFromQueryParam()),!s){const r=t.state;if(r!==null&&r.startsWith(this.guid)){const o=r.substr(this.guid.length+2);console.log(o),await this.trySelectSceneFromValue(o)}}}finally{this.useHistory=i}});u(this,"normalizedSwipeThresholdX",.1);u(this,"_didSwipe",!1);u(this,"onPointerMove",t=>{if(!this._didSwipe&&t.button===0&&t.pointerType==="touch"&&this.context.input.getPointerPressedCount()===1){const i=this.context.input.getPointerPositionDelta(t.button);if(i){const s=i.x/this.context.domWidth;s>=this.normalizedSwipeThresholdX?(this._didSwipe=!0,this.selectPrev()):s<=-this.normalizedSwipeThresholdX&&(this._didSwipe=!0,this.selectNext())}}});u(this,"onPointerUp",t=>{t.button===0&&(this._didSwipe=!1)});u(this,"onKeyDown",t=>{if(!this.useKeyboard||!this.scenes)return;const i=t.key.toLowerCase();if(!i)return;const s=parseInt(i)-1;if(s>=0){this.trySelectSceneFromValue(s);return}switch(i){case"arrowright":case"d":this.selectNext();break;case"arrowleft":case"a":this.selectPrev();break}})}get currentIndex(){return this._currentIndex}awake(){Cc&&console.log("SceneSwitcher",this)}async start(){if(this._currentIndex===-1&&!await this.tryLoadFromQueryParam()){const t=this.context.domElement.getAttribute(Hg);try{(t===null||!await this.trySelectSceneFromValue(t))&&this._currentIndex===-1&&this.select(0)}finally{}}}onEnable(){globalThis.addEventListener("popstate",this.onPopState),this.context.input.addEventListener(ha.KeyDown,this.onKeyDown),this.context.input.addEventListener(ha.PointerMove,this.onPointerMove),this.context.input.addEventListener(ha.PointerUp,this.onPointerUp),this._engineElementOverserver||(this._engineElementOverserver=new MutationObserver(t=>{for(const i of t)if(i.type==="attributes"&&i.attributeName===Hg){const s=this.context.domElement.getAttribute(Hg);s!==null&&this.trySelectSceneFromValue(s)}})),this._engineElementOverserver.observe(this.context.domElement,{attributes:!0}),this._preloadScheduler||(this._preloadScheduler=new lse(this)),this._preloadScheduler.maxLoadAhead=this.preloadNext,this._preloadScheduler.maxLoadBehind=this.preloadPrevious,this._preloadScheduler.maxConcurrent=this.preloadConcurrent,this._preloadScheduler.begin()}onDisable(){var t;globalThis.removeEventListener("popstate",this.onPopState),this.context.input.removeEventListener(ha.KeyDown,this.onKeyDown),this.context.input.removeEventListener(ha.PointerMove,this.onPointerMove),this.context.input.removeEventListener(ha.PointerUp,this.onPointerUp),(t=this._preloadScheduler)==null||t.stop()}selectNext(){return this.select(this._currentIndex+1)}selectPrev(){return this.select(this._currentIndex-1)}select(t){var s,r;if(Cc&&console.log("select",t),typeof t=="object"&&console.warn('Switching to "'+t+'" might not work. Please either use an index or a AssetReference (not a scene reference)'),typeof t=="string"){const o=(s=this.scenes)==null?void 0:s.find(a=>a.uri===t);if(!o){const a=qn.getOrCreate(this.sourceId??"",t,this.context);return this.switchScene(a)}if(o)t=this.scenes.indexOf(o);else return ml}if(!((r=this.scenes)!=null&&r.length))return ml;if(t<0){if(this.clamp)return ml;t=this.scenes.length-1}else if(t>=this.scenes.length){if(this.clamp)return ml;t=0}const i=this.scenes[t];return this.switchScene(i)}async switchScene(t){var s,r;if(t===this._currentScene)return!0;this._currentScene&&this._currentScene.unload();const i=this._currentIndex=((s=this.scenes)==null?void 0:s.indexOf(t))??-1;this._currentScene=t;try{const o=new CustomEvent("loadscene-start",{detail:{scene:t,switcher:this,index:i}});this.dispatchEvent(o),await t.loadAssetAsync();const a=new CustomEvent("loadscene-finished",{detail:{scene:t,switcher:this,index:i}});if(this.dispatchEvent(a),a.defaultPrevented)return Cc&&console.warn("Adding loaded scene prevented:",t,a),!1;if(!t.asset)return Cc&&console.warn("Failed loading scene:",t),!1;if(this._currentIndex===i){if($.add(t.asset,this.gameObject),this.useSceneLighting&&this.context.sceneLighting.enable(t),this.useHistory&&i>=0)if((r=this.queryParameterName)!=null&&r.length)JD(this.queryParameterName,i.toString(),this.useHistory);else{const c=history.state,l=this.guid+"::"+i;c!==l&&history.pushState(l,"unused",location.href)}return!0}}catch(o){console.error(o)}return!1}preload(t){if(t>=0&&t<this.scenes.length){const i=this.scenes[t];if(i instanceof qn)return i.preload()}return ml}tryLoadFromQueryParam(){var i;if(!((i=this.queryParameterName)!=null&&i.length))return ml;const t=ce(this.queryParameterName);return typeof t=="boolean"?ml:this.trySelectSceneFromValue(t)}trySelectSceneFromValue(t){if(typeof t=="string"){const i=parseInt(t);if(i>=0&&i<this.scenes.length)return this.select(i);for(let s=0;s<this.scenes.length;s++)if(this.scenes[s].uri.toLowerCase().includes(t))return this.select(s)}else if(typeof t=="number"&&t>=0&&t<this.scenes.length)return this.select(t);return zs()&&console.warn('Can not find scene: "'+t+'"',this),ml}}Ha([w(qn)],Dr.prototype,"scenes",2);Ha([w()],Dr.prototype,"queryParameterName",2);Ha([w()],Dr.prototype,"clamp",2);Ha([w()],Dr.prototype,"useHistory",2);Ha([w()],Dr.prototype,"useKeyboard",2);Ha([w()],Dr.prototype,"useSwipe",2);Ha([w()],Dr.prototype,"useSceneLighting",2);Ha([w()],Dr.prototype,"preloadNext",2);Ha([w()],Dr.prototype,"preloadPrevious",2);Ha([w()],Dr.prototype,"preloadConcurrent",2);class lse{constructor(e,t=1,i=1,s=2){u(this,"maxLoadAhead");u(this,"maxLoadBehind");u(this,"maxConcurrent");u(this,"_isRunning",!1);u(this,"_switcher");u(this,"_loadTasks",[]);u(this,"_maxConcurrentLoads",1);this._switcher=e,this.maxLoadAhead=t,this.maxLoadBehind=i,this.maxConcurrent=s}begin(){if(this._isRunning)return;Cc&&console.log("Preload begin"),this._isRunning=!0;let e=-1,t,i;const s=this._switcher.scenes;let r=setInterval(()=>{if(this.allLoaded()&&(Cc&&console.log("All scenes loaded"),this.stop()),!this._isRunning){clearInterval(r);return}if(this.canLoadNewScene()===!1)return;e!==this._switcher.currentIndex&&(e=this._switcher.currentIndex,i=0,t=0);const o=i%2===0;o&&(t+=1),i+=1;const a=o?this.maxLoadAhead:this.maxLoadBehind;if(t>a)return;let c=o?e+t:e-t;if(c<0||c<0||c>=s.length)return;const l=s[c];new hse(c,l,this._loadTasks)},200)}stop(){this._isRunning=!1}canLoadNewScene(){return this._loadTasks.length<this._maxConcurrentLoads}allLoaded(){for(const e of this._switcher.scenes)if((e==null?void 0:e.isLoaded())===!1)return!1;return!0}}class hse{constructor(e,t,i){u(this,"index");u(this,"asset");u(this,"tasks");this.index=e,this.asset=t,this.tasks=i,i.push(this),this.awaitLoading()}async awaitLoading(){this.asset.isLoaded()||(Cc&&console.log("Preload start: "+this.asset.uri,this.index),await this.asset.preload(),Cc&&console.log("Preload finished: "+this.asset.uri,this.index));const e=this.tasks.indexOf(this);e>=0&&this.tasks.splice(e,1)}}function use(){return new Promise((n,e)=>{let i=()=>{i!=null&&(document.removeEventListener("pointerdown",i),document.removeEventListener("click",i),document.removeEventListener("dragstart",i),document.removeEventListener("touchstart",i),n())};document.addEventListener("pointerdown",i),document.addEventListener("click",i),document.addEventListener("dragstart",i),document.addEventListener("touchstart",i)})}async function dse(n){await use(),n()}var kN=(n=>(n[n.Quad=0]="Quad",n))(kN||{});class fse{static createPrimitive(e,t){let i;switch(e){case 0:const s=new Yn(1,1,1,1),r=(t==null?void 0:t.material)??new vi({color:16777215});i=new ve(s,r)}return t!=null&&t.name&&(i.name=t.name),i}}var pse=Object.defineProperty,gse=Object.getOwnPropertyDescriptor,yo=(n,e,t,i)=>{for(var s=i>1?void 0:i?gse(e,t):e,r=n.length-1,o;r>=0;r--)(o=n[r])&&(s=(i?o(e,t,s):o(s))||s);return i&&s&&pse(e,t,s),s};const ia=ce("debugvideo");var ON=(n=>(n[n.CameraFarPlane=0]="CameraFarPlane",n[n.CameraNearPlane=1]="CameraNearPlane",n[n.RenderTexture=2]="RenderTexture",n[n.MaterialOverride=3]="MaterialOverride",n))(ON||{});class us extends Ce{constructor(){super();u(this,"renderer",null);u(this,"playOnAwake",!0);u(this,"aspectMode",0);u(this,"clip",null);u(this,"renderMode");u(this,"targetMaterialProperty");u(this,"targetMaterialRenderer");u(this,"targetTexture");u(this,"time",0);u(this,"_playbackSpeed",1);u(this,"_isLooping",!1);u(this,"_muted",!1);u(this,"_audioOutputMode",2);u(this,"playInBackground",!0);u(this,"_crossOrigin","anonymous");u(this,"source");u(this,"url",null);u(this,"_videoElement",null);u(this,"_videoTexture",null);u(this,"_videoMaterial",null);u(this,"_isPlaying",!1);u(this,"wasPlaying",!1);u(this,"visibilityChanged",t=>{switch(document.visibilityState){case"hidden":this.playInBackground||(this.wasPlaying=this._isPlaying,this.pause());break;case"visible":this.wasPlaying&&!this._isPlaying&&this.play();break}});u(this,"_receivedInput",!1);u(this,"_overlay",null);u(this,"_targetObjects");u(this,"_updateAspectRoutineId",-1);dse(()=>{this._receivedInput=!0,this.updateVideoElementSettings()}),this._targetObjects=[],ce("videoscreenspace")&&window.addEventListener("keydown",t=>{t.key==="f"&&(this.screenspace=!this.screenspace)})}get playbackSpeed(){var t;return((t=this._videoElement)==null?void 0:t.playbackRate)??this._playbackSpeed}set playbackSpeed(t){this._playbackSpeed=t,this._videoElement&&(this._videoElement.playbackRate=t)}get isLooping(){var t;return((t=this._videoElement)==null?void 0:t.loop)??this._isLooping}set isLooping(t){this._isLooping=t,this._videoElement&&(this._videoElement.loop=t)}get currentTime(){var t;return((t=this._videoElement)==null?void 0:t.currentTime)??this.time}set currentTime(t){this._videoElement?this._videoElement.currentTime=t:this.time=t}get isPlaying(){const t=this._videoElement;if(t){if(t.currentTime>0&&!t.paused&&!t.ended&&t.readyState>t.HAVE_CURRENT_DATA)return!0;if(t.srcObject&&t.srcObject.active)return!0}return!1}get crossOrigin(){var t;return((t=this._videoElement)==null?void 0:t.crossOrigin)??this._crossOrigin}set crossOrigin(t){this._crossOrigin=t,this._videoElement&&(t!==null?this._videoElement.setAttribute("crossorigin",t):this._videoElement.removeAttribute("crossorigin"))}get videoMaterial(){return this._videoMaterial}get videoTexture(){return this._videoTexture}get videoElement(){return this._videoElement}get muted(){var t;return((t=this._videoElement)==null?void 0:t.muted)??this._muted}set muted(t){this._muted=t,this._videoElement&&(this._videoElement.muted=t)}set audioOutputMode(t){t!==this._audioOutputMode&&(t===1&&ho()&&console.warn("VideoAudioOutputMode.AudioSource is not yet implemented"),this._audioOutputMode=t,this.updateVideoElementSettings())}get audioOutputMode(){return this._audioOutputMode}setVideo(t){this.clip=t,this.source=0,this._videoElement?(this._videoElement.srcObject=t,this._isPlaying&&this.play(),this.updateAspect()):this.create(!0)}setClipURL(t){this.url!==t&&(this.url=t,this.source=1,ia&&console.log("set url",t),this._videoElement?(this._videoElement.src=t,this._isPlaying&&(this.stop(),this.play())):this.create(!0))}onEnable(){var t,i;window.addEventListener("visibilitychange",this.visibilityChanged),this.playOnAwake===!0&&this.create(!0),this.screenspace?(t=this._overlay)==null||t.start():(i=this._overlay)==null||i.stop()}onDisable(){window.removeEventListener("visibilitychange",this.visibilityChanged),this.pause()}onDestroy(){var t;this._videoElement&&((t=this._videoElement.parentElement)==null||t.removeChild(this._videoElement),this._videoElement=null),this._videoTexture&&(this._videoTexture.dispose(),this._videoTexture=null)}play(){var t,i;this._videoElement||this.create(!1),this._videoElement&&(this._isPlaying&&!((t=this._videoElement)!=null&&t.ended)&&!((i=this._videoElement)!=null&&i.paused)||(this._isPlaying=!0,this._receivedInput||(this._videoElement.muted=!0),this.updateVideoElementSettings(),this._videoElement.currentTime=this.time,this._videoElement.play().catch(s=>{var r;console.log(s),ia&&console.error("Error playing video",s,"CODE="+s.code,(r=this.videoElement)==null?void 0:r.src,this),setTimeout(()=>{this._isPlaying&&!this.destroyed&&this.activeAndEnabled&&this.play()},1e3)}),ia&&console.log("play",this._videoElement,this.time)))}stop(){this._isPlaying=!1,this.time=0,this._videoElement&&(this._videoElement.currentTime=0,this._videoElement.pause(),ia&&console.log("STOP",this))}pause(){var t,i;this.time=((t=this._videoElement)==null?void 0:t.currentTime)??0,this._isPlaying=!1,(i=this._videoElement)==null||i.pause(),ia&&console.log("PAUSE",this,this.currentTime)}create(t){var s;let i;switch(this.source){case 0:i=this.clip;break;case 1:i=this.url;break}i&&(this._videoElement||(ia&&console.warn("Create VideoElement",this),this._videoElement=this.createVideoElement(),(s=this.context.domElement)==null||s.prepend(this._videoElement),this.updateVideoElementStyles()),typeof i=="string"?(ia&&console.log("Set Video src",i),this._videoElement.src=i):(ia&&console.log("Set Video srcObject",i),this._videoElement.srcObject=i),this._videoTexture||(this._videoTexture=new g2(this._videoElement)),this._videoTexture.flipY=!1,this._videoTexture.encoding=yt,this.handleBeginPlaying(t),ia&&console.log(this,t))}updateAspect(){this.aspectMode!==0&&this.startCoroutine(this.updateAspectImpl())}get screenspace(){var t;return((t=this._overlay)==null?void 0:t.enabled)??!1}set screenspace(t){var i;if(t){if(!this._videoTexture)return;this._overlay||(this._overlay=new mse(this.context)),this._overlay.add(this._videoTexture)}else(i=this._overlay)==null||i.remove(this._videoTexture);this._overlay&&(this._overlay.enabled=t)}createVideoElement(){const t=document.createElement("video");return this._crossOrigin&&t.setAttribute("crossorigin",this._crossOrigin),ia&&console.log("created video element",t),t}handleBeginPlaying(t){var r,o;if(!this.enabled||!this._videoElement)return;this._targetObjects.length=0;let i=this.gameObject;switch(this.renderMode){case 3:i=(r=this.targetMaterialRenderer)==null?void 0:r.gameObject,i||(i=(o=$.getComponent(this.gameObject,Ki))==null?void 0:o.gameObject);break;case 2:console.error("VideoPlayer renderTexture not implemented yet. Please use material override instead");return}if(!i){console.error("Missing target for video material renderer",this.name,ON[this.renderMode],this);return}const s=i.material;if(s)if(this._targetObjects.push(i),s!==this._videoMaterial&&(this._videoMaterial=s.clone(),i.material=this._videoMaterial),!this.targetMaterialProperty)this._videoMaterial.map=this._videoTexture;else switch(this.targetMaterialProperty){default:this._videoMaterial.map=this._videoTexture;break}else{console.warn("Can not play video, no material found, this might be a multimaterial case which is not supported yet");return}this.updateVideoElementSettings(),this.updateVideoElementStyles(),t&&this.play()}updateVideoElementSettings(){if(!this._videoElement)return;this._videoElement.loop=this._isLooping,this._videoElement.currentTime=this.currentTime,this._videoElement.playbackRate=this._playbackSpeed,this._videoElement.playsInline=!0;let t=!this._receivedInput||this.audioOutputMode===0;!t&&this._muted&&(t=!0),this._videoElement.muted=t,this.playOnAwake&&(this._videoElement.autoplay=!0)}updateVideoElementStyles(){this._videoElement&&(this._videoElement.style.userSelect="none",this._videoElement.style.visibility="hidden",this._videoElement.style.display="none",this.updateAspect())}*updateAspectImpl(){const t=++this._updateAspectRoutineId,i=void 0,s=this.clip;for(;t===this._updateAspectRoutineId&&this.aspectMode!==0&&this.clip&&s===this.clip&&this._isPlaying;){if(!s||typeof s=="string")return;let r;for(const o of s.getVideoTracks()){const a=o.getSettings();if(a&&a.width&&a.height){r=a.width/a.height;break}else r=this.context.renderer.domElement.clientWidth/this.context.renderer.domElement.clientHeight}if(r===void 0){for(let o=0;o<10;o++)yield;if(!this.isPlaying)break;continue}if(i===r){yield;continue}for(const o of this._targetObjects){let a=1;if(o.parent){const c=is(o.parent);a=c.x/c.y}switch(this.aspectMode){case 1:o.scale.y=1/r*o.scale.x*a;break;case 2:o.scale.x=r*o.scale.y*a;break}}for(let o=0;o<3;o++)yield}}}yo([w(Ie)],us.prototype,"renderer",2);yo([w()],us.prototype,"playOnAwake",2);yo([w()],us.prototype,"aspectMode",2);yo([w(URL)],us.prototype,"clip",2);yo([w()],us.prototype,"renderMode",2);yo([w()],us.prototype,"targetMaterialProperty",2);yo([w(Ki)],us.prototype,"targetMaterialRenderer",2);yo([w(Gt)],us.prototype,"targetTexture",2);yo([w()],us.prototype,"time",2);yo([w()],us.prototype,"playbackSpeed",1);yo([w()],us.prototype,"isLooping",1);yo([w()],us.prototype,"audioOutputMode",1);class mse{constructor(e){u(this,"context");u(this,"_videos",[]);u(this,"_screenspaceModeQuad");u(this,"_isInScreenspaceMode",!1);u(this,"_input");this.context=e,this._input=new Ase(this)}get enabled(){return this._isInScreenspaceMode}set enabled(e){e?this.start():this.stop()}add(e){this._videos.indexOf(e)===-1&&this._videos.push(e)}remove(e){if(!e)return;const t=this._videos.indexOf(e);t>=0&&this._videos.splice(t,1)}start(){var s;if(this._isInScreenspaceMode||this._videos.length<0)return;const e=this._videos[this._videos.length-1];if(!e)return;if(this._isInScreenspaceMode=!0,!this._screenspaceModeQuad){if(this._screenspaceModeQuad=fse.createPrimitive(kN.Quad,{material:new vse(e)}),!this._screenspaceModeQuad)return;this._screenspaceModeQuad.geometry.scale(2,2,2)}const t=this._screenspaceModeQuad;this.context.scene.add(t),this.updateScreenspaceMaterialUniforms();const i=t.material;i==null||i.reset(),(s=this._input)==null||s.enable(i)}stop(){var e;this._isInScreenspaceMode=!1,this._screenspaceModeQuad&&((e=this._input)==null||e.disable(),this._screenspaceModeQuad.removeFromParent())}updateScreenspaceMaterialUniforms(){var t;const e=(t=this._screenspaceModeQuad)==null?void 0:t.material;e&&(e.screenAspect=this.context.domElement.clientWidth/this.context.domElement.clientHeight)}}class Ase{constructor(e){u(this,"_onResizeScreenFn");u(this,"_onKeyUpFn");u(this,"_onMouseWheelFn");u(this,"context");u(this,"overlay");u(this,"_material");u(this,"_isPinching",!1);u(this,"_lastPinch",0);this.overlay=e,this.context=e.context}enable(e){this._material=e,window.addEventListener("resize",this._onResizeScreenFn=()=>{this.overlay.updateScreenspaceMaterialUniforms()}),window.addEventListener("keyup",this._onKeyUpFn=s=>{s.key==="Escape"&&this.overlay.stop()}),window.addEventListener("wheel",this._onMouseWheelFn=s=>{this.overlay.enabled&&(e.zoom+=s.deltaY*5e-4,s.preventDefault())},{passive:!1});const t=new q;window.addEventListener("mousemove",s=>{if(this.overlay.enabled&&this.context.input.getPointerPressed(0)){const r=new q(s.movementX,s.movementY);r.x/=this.context.domElement.clientWidth,r.y/=this.context.domElement.clientHeight,t.set(r.x,r.y),t.multiplyScalar(e.zoom/-this.context.time.deltaTime*.01),e.offset=e.offset.add(t)}}),window.addEventListener("pointermove",s=>{this.overlay.enabled&&this.context.input.getPointerPressed(0)&&this.context.input.getTouchesPressedCount()===1&&(t.set(s.movementX,s.movementY),t.multiplyScalar(e.zoom*-this.context.time.deltaTime*.05),e.offset=e.offset.add(t))});let i=0;window.addEventListener("touchstart",s=>{if(s.touches.length<2){this.context.time.time-i<.3&&this.overlay.stop(),i=this.context.time.time;return}this._isPinching=!0,this._lastPinch=0}),window.addEventListener("touchmove",s=>{if(!this._isPinching||!this._material)return;const r=s.touches[0],o=s.touches[1],a=r.clientX-o.clientX,c=r.clientY-o.clientY,l=Math.sqrt(a*a+c*c);if(this._lastPinch!==0){const h=l-this._lastPinch;this._material.zoom-=h*.004}this._lastPinch=l}),window.addEventListener("touchend",()=>{this._isPinching=!1})}disable(){this._onResizeScreenFn&&(window.removeEventListener("resize",this._onResizeScreenFn),this._onResizeScreenFn=void 0),this._onKeyUpFn&&(window.removeEventListener("keyup",this._onKeyUpFn),this._onKeyUpFn=void 0),this._onMouseWheelFn&&(window.removeEventListener("wheel",this._onMouseWheelFn),this._onMouseWheelFn=void 0)}}class vse extends Xt{constructor(t){super();u(this,"_offset",new q);this.uniforms={map:{value:t},screenAspect:{value:1},offsetScale:{value:new rt(0,0,1,1)}},this.vertexShader=`
|
|
4974
4974
|
uniform sampler2D map;
|
|
4975
4975
|
uniform float screenAspect;
|
|
4976
4976
|
uniform vec4 offsetScale;
|
|
@@ -5049,9 +5049,9 @@ void main() {
|
|
|
5049
5049
|
#include <encodings_fragment>
|
|
5050
5050
|
|
|
5051
5051
|
}
|
|
5052
|
-
`;function Mre(n){const e="vec4("+n.r.toFixed(3)+","+n.g.toFixed(3)+","+n.b.toFixed(3)+","+n.a.toFixed(3)+")";console.log(e);const t=new ve(new Yn(2,2),new Xt({name:"BackgroundMaterial",uniforms:GE.clone(yr.background.uniforms),vertexShader:yr.background.vertexShader,fragmentShader:Ire.replace("<backgroundTint>",e),side:Ii,depthTest:!1,depthWrite:!1,fog:!1}));return t.geometry.deleteAttribute("normal"),Object.defineProperty(t.material,"map",{get:function(){return this.threeTexture}}),t.renderOrder=-1e4,t.layers.disableAll(),t.layers.enable(2),t.frustumCulled=!1,t.setTexture=function(i){t.material.uniforms.t2D.value=i},t}var Tre=Object.defineProperty,Pre=Object.getOwnPropertyDescriptor,Tp=(n,e,t,i)=>{for(var s=i>1?void 0:i?Pre(e,t):e,r=n.length-1,o;r>=0;r--)(o=n[r])&&(s=(i?o(e,t,s):o(s))||s);return i&&s&&Tre(e,t,s),s};const Rre=ce("debugimagetracking"),em=class{constructor(e,t,i,s,r,o){u(this,"measuredSize");u(this,"state");u(this,"_position");u(this,"_rotation");u(this,"_trackingComponent");u(this,"_trackedImage");u(this,"_bitmap");u(this,"_pose");this._trackingComponent=e,this._trackedImage=t,this._bitmap=i,this.measuredSize=s,this.state=r,this._pose=o}get url(){return this._trackedImage.image??""}get widthInMeters(){return this._trackedImage.widthInMeters??void 0}get bitmap(){return this._bitmap}get model(){return this._trackedImage}getPosition(e){return this.ensureTransformData(),e.copy(this._position),e}getQuaternion(e){return this.ensureTransformData(),e.copy(this._rotation),e}applyToObject(e,t=void 0){this.ensureTransformData();const i=e.position.distanceToSquared(this._position)>.05||e.quaternion.angleTo(this._rotation)>.05;t===void 0||t>=1||i?(e.position.copy(this._position),e.quaternion.copy(this._rotation)):(t=Math.max(0,Math.min(1,t)),e.position.lerp(this._position,t),e.quaternion.slerp(this._rotation,t)),e.quaternion.multiply(em.y180)}ensureTransformData(){if(!this._position){this._position=em._positionBuffer.get(),this._rotation=em._rotationBuffer.get();const e=this._pose.transform;this._position.set(e.position.x,e.position.y,e.position.z),this._rotation.set(e.orientation.x,e.orientation.y,e.orientation.z,e.orientation.w)}}};let vc=em;u(vc,"y180",new xe().setFromAxisAngle(new E(0,1,0),Math.PI)),u(vc,"_positionBuffer",new Ma(()=>new E,20)),u(vc,"_rotationBuffer",new Ma(()=>new xe,20));class Kc{constructor(){u(this,"image");u(this,"widthInMeters");u(this,"object");u(this,"createObjectInstance",!1);u(this,"imageDoesNotMove",!1)}}Tp([w(URL)],Kc.prototype,"image",2);Tp([w()],Kc.prototype,"widthInMeters",2);Tp([w(qn)],Kc.prototype,"object",2);Tp([w()],Kc.prototype,"createObjectInstance",2);Tp([w()],Kc.prototype,"imageDoesNotMove",2);class Bre{constructor(e,t,i){u(this,"filename");u(this,"widthInMeters");u(this,"imageData");this.filename=e,this.imageData=t,this.widthInMeters=i}get extensionName(){return"image-tracking"}onAfterHierarchy(e,t){t.beginBlock('def Preliminary_ReferenceImage "AnchoringReferenceImage"'),t.appendLine("uniform asset image = @tracker/"+this.filename+"@"),t.appendLine("uniform double physicalWidth = "+(this.widthInMeters*100).toFixed(8)),t.closeBlock()}onAfterSerialize(e){e.files["tracker/"+this.filename]=this.imageData}}var MC;const xg=(MC=class extends Ce{constructor(){super(...arguments);u(this,"trackedImages");u(this,"trackedImageIndexMap",new Map);u(this,"xr",null);u(this,"onModifyAROptions",e=>{var s;const t=e.detail,i=t.optionalFeatures||[];i.includes("image-tracking")||i.push("image-tracking"),t.optionalFeatures=i,t.trackedImages=[];for(const r of this.trackedImages)if((s=r.image)!=null&&s.length&&r.widthInMeters>0){const o=xg._imageElements.get(r.image);o&&(this.trackedImageIndexMap.set(t.trackedImages.length,r),t.trackedImages.push({image:o,widthInMeters:r.widthInMeters}))}});u(this,"imageToObjectMap",new Map);u(this,"onImageTrackingUpdate",e=>{const t=e.detail;for(const[i,s]of this.imageToObjectMap){if(!s.object||!i)continue;let r=!1;for(const o of t)if(o.model===i){r=!0;break}r||$.setActive(s.object,!1)}for(const i of t){const s=i.model;if(!s.object)continue;let r=this.imageToObjectMap.get(s);if(r===void 0)r={object:null,frames:0},this.imageToObjectMap.set(s,r),s.object.loadAssetAsync().then(o=>{s.createObjectInstance&&(o=$.instantiate(o)),o&&(r.object=o,this.xr&&this.xr.Rig.add(o),i.applyToObject(o),o.activeSelf||$.setActive(o,!0))});else{if(r.frames++,s.imageDoesNotMove&&r.frames>10||!r.object)continue;this.xr&&this.xr.Rig.add(r.object),i.applyToObject(r.object),r.object.activeSelf||$.setActive(r.object,!0)}}});u(this,"onXRStarted",e=>{for(const t of this.imageToObjectMap.values())t.frames=0});u(this,"onXRUpdate",e=>{const t=e.frame;if(t){if(t.session&&!("getImageTrackingResults"in t)){Vo('Image tracking is currently not supported on this device. On Chrome for Android, you can enable the <a href="chrome://flags/#webxr-incubations">chrome://flags/#webxr-incubations</a> flag.');return}if(t.session&&typeof t.getImageTrackingResults=="function"){const i=t.getImageTrackingResults();if(i.length){const s=this.context.renderer.xr.getReferenceSpace();if(s){const r=[];for(const o of i){const a=o.index,c=this.trackedImageIndexMap.get(a);if(c){const l=t.getPose(o.imageSpace,s),h=o.trackingState,d=new vc(this,c,o.image,o.measuredSize,h,l);r.push(d)}else Rre&&console.warn("No tracked image for index",a)}if(r.length>0)try{this.dispatchEvent(new CustomEvent("image-tracking",{detail:r}))}catch(o){console.error(o)}}}}}})}awake(){for(const e of this.trackedImages)if(e.image&&!xg._imageElements.has(e.image)){const t=e.image;xg._imageElements.set(t,null);const i=document.createElement("img");i.src=t,i.addEventListener("load",async()=>{const s=await createImageBitmap(i);xg._imageElements.set(t,s);const r=await T3(s);if(r){const a=await(await new Promise(l=>r.toBlob(l,"image/png",1))).arrayBuffer(),c=$.findObjectOfType(vo);c&&(c.extensions.push(new Bre("marker.png",new Uint8Array(a),this.trackedImages[0].widthInMeters)),c.anchoringType="image")}})}}onEnable(){this.xr=$.findObjectOfType(wt),wt.addEventListener(Ei.ModifyAROptions,this.onModifyAROptions),wt.addEventListener(Ei.XRStarted,this.onXRStarted),wt.addEventListener(Ei.XRUpdate,this.onXRUpdate),this.addEventListener("image-tracking",this.onImageTrackingUpdate)}onDisable(){wt.removeEventListener(Ei.ModifyAROptions,this.onModifyAROptions),wt.removeEventListener(Ei.XRStarted,this.onXRStarted),wt.removeEventListener(Ei.XRUpdate,this.onXRUpdate),this.removeEventListener("image-tracking",this.onImageTrackingUpdate)}},u(MC,"_imageElements",new Map),MC);let dx=xg;Tp([w(Kc)],dx.prototype,"trackedImages",2);var Dre=Object.defineProperty,kre=Object.getOwnPropertyDescriptor,Ore=(n,e,t,i)=>{for(var s=i>1?void 0:i?kre(e,t):e,r=n.length-1,o;r>=0;r--)(o=n[r])&&(s=(i?o(e,t,s):o(s))||s);return i&&s&&Dre(e,t,s),s};const LD=ce("debugplanetracking");class fx extends Ce{constructor(){super(...arguments);u(this,"planeTemplate");u(this,"onModifyAROptions",t=>{const i=t.detail,s=i.optionalFeatures||[];s.includes("plane-detection")||s.push("plane-detection"),i.optionalFeatures=s});u(this,"onXRUpdate",t=>{this.processPlanes(t.rig,t.frame)});u(this,"_planeId",1);u(this,"_allPlanes",new Map)}get trackedPlanes(){return this._allPlanes.values()}onEnable(){wt.addEventListener(Ei.XRUpdate,this.onXRUpdate),wt.addEventListener("modify-ar-options",this.onModifyAROptions)}onDisable(){wt.removeEventListener(Ei.XRUpdate,this.onXRUpdate),wt.removeEventListener("modify-ar-options",this.onModifyAROptions)}processPlanes(t,i){const s=this.context.renderer;if(!t||i.detectedPlanes===void 0)return;const r=s.xr.getReferenceSpace();if(r){for(const o of this._allPlanes.keys())if(!i.detectedPlanes.has(o)){const a=this._allPlanes.get(o);this._allPlanes.delete(o),LD&&console.log("Plane no longer tracked, id="+a.id),a.mesh&&(t==null||t.remove(a.mesh));const c=new CustomEvent("plane-tracking",{detail:{type:"plane-removed",context:a}});this.dispatchEvent(c)}for(const o of i.detectedPlanes){const a=i.getPose(o.planeSpace,r);let c;if(this._allPlanes.has(o)){const l=this._allPlanes.get(o);if(c=l.mesh,l.timestamp<o.lastChangedTime){if(l.timestamp=o.lastChangedTime,l.mesh){const d=this.createGeometry(o.polygon);if(l.mesh instanceof ve)l.mesh.geometry.dispose(),l.mesh.geometry=d;else if(l.mesh instanceof $r)for(const f of l.mesh.children)f instanceof ve&&(f.geometry.dispose(),f.geometry=d);l.collider&&(l.collider.sharedMesh=l.mesh,l.collider.convex=!0,l.collider.onDisable(),l.collider.onEnable())}const h=new CustomEvent("plane-tracking",{detail:{type:"plane-updated",context:l}});this.dispatchEvent(h)}}else if(this.planeTemplate||(this.planeTemplate=new ve),this.planeTemplate){const l=$.instantiate(this.planeTemplate);c=l,l instanceof ve&&(Po(l.geometry),l.geometry=this.createGeometry(o.polygon));const h=l.getComponent(GA);h&&(h.sharedMesh=l,h.convex=!0,h.onDisable(),h.onEnable()),l.matrixAutoUpdate=!1,l.matrixWorldNeedsUpdate=!0,t.add(l);const d={id:this._planeId++,xrPlane:o,timestamp:o.lastChangedTime,mesh:l,collider:h};this._allPlanes.set(o,d),LD&&console.log("New plane detected, id="+d.id);try{const f=new CustomEvent("plane-tracking",{detail:{type:"plane-added",context:d}});this.dispatchEvent(f)}catch(f){console.error(f)}}c&&(a?(c.visible=!0,c.matrix.fromArray(a.transform.matrix)):c.visible=!1)}}}createGeometry(t){const i=new vt,s=[],r=[];t.forEach(p=>{s.push(p.x,p.y,p.z),r.push(p.x,p.z)});const o=new E(s[0],s[1],s[2]),a=new E(s[3],s[4],s[5]),c=new E(s[6],s[7],s[8]),l=new E,h=new E;l.subVectors(a,o),h.subVectors(c,o),l.cross(h),l.normalize();const d=[];for(let p=0;p<s.length/3;p++)d.push(l.x,l.y,l.z);const f=[];for(let p=2;p<t.length;++p)f.push(0,p-1,p);return i.setAttribute("position",new ht(new Float32Array(s),3)),i.setAttribute("uv",new ht(new Float32Array(r),2)),i.setAttribute("normal",new ht(new Float32Array(d),3)),i.setIndex(f),i}}Ore([w(Ie)],fx.prototype,"planeTemplate",2);class px{constructor(){u(this,"guid");u(this,"dontSave",!0);u(this,"userId");u(this,"point",{x:0,y:0,z:0});u(this,"source",{x:0,y:0,z:0});u(this,"target")}update(e,t,i,s=void 0){this.userId=e.connection.connectionId,this.point.x=t.x,this.point.y=t.y,this.point.z=t.z,this.source.x=i.x,this.source.y=i.y,this.source.z=i.z,this.target=s}}class OM extends Ce{constructor(){super(...arguments);u(this,"prefab",null);u(this,"_grabModels",[]);u(this,"_grabModelsUpdateTime",[]);u(this,"_addOrUpdateSub",null);u(this,"_endSub",null);u(this,"_freeSub",null);u(this,"_instances",{});u(this,"temp",new E)}awake(){this.prefab&&(this.prefab.visible=!1)}onEnable(){this._addOrUpdateSub=this.context.connection.beginListen("xr-grab-visual-start-or-update",this.onRemoteGrabStartOrUpdate.bind(this)),this._endSub=this.context.connection.beginListen("xr-grab-visual-end",this.onRemoteGrabEnd.bind(this)),this._freeSub=io.AddEventListener(h_.WillFree,this.onAttachedObjectFree.bind(this))}onDisable(){this.context.connection.stopListen("xr-grab-visual-start-or-update",this._addOrUpdateSub),this.context.connection.stopListen("xr-grab-visual-end",this._endSub),io.RemoveEventListener(h_.WillFree,this._freeSub)}addOrUpdateGrab(t){this.context.connection.send("xr-grab-visual-start-or-update",t,Zs.Queued)}endGrab(t){this.context.connection.send("xr-grab-visual-end",t,Zs.Queued)}onRemoteGrabStartOrUpdate(t){if(!this.prefab)return;const i=this._instances[t.guid];if(!i){const s=$.instantiate(this.prefab);if(s.visible=!0,this._instances[t.guid]={instance:s,model:t},t.userId){const r=$.getComponentsInChildren(s,yu);if((r==null?void 0:r.length)>0)for(const o of r)o.assignUserColor(t.userId)}return}i.model=t}onRemoteGrabEnd(t){if(!t)return;const i=t.guid;this._instances[i]&&($.destroy(this._instances[i].instance),delete this._instances[i])}onAttachedObjectFree(t){if(this._grabModels.length<=0)return;const i=this._grabModels[0];this.updateModel(i,t),this.endGrab(i)}onBeforeRender(){if(this.updateRendering(),!!this.prefab&&(this.prefab.visible=!1,this.context.time.frameCount%10===0))for(let t=0;t<io.Current.length;t++){const i=io.Current[t];if(!i.controller||!i.selected)continue;this._grabModels.length<=t&&(this._grabModels.push(new px),this._grabModelsUpdateTime.push(0)),this._grabModelsUpdateTime[t]=this.context.time.time;const s=this._grabModels[t];this.updateModel(s,i),this.addOrUpdateGrab(s)}}updateModel(t,i){if(!i.controller||!i.selected)return;t.guid=i.grabUUID;const s=i.selected.guid;t.update(this.context,i.grabPoint,i.controller.worldPosition,s)}updateRendering(){const t=this.context.time.deltaTime/.5;for(const i in this._instances){const{instance:s,model:r}=this._instances[i];if(!s||!r)continue;const{point:o}=r,a=Ct(s);this.temp.set(o.x,o.y,o.z),a.lerp(this.temp,t),bn(s,a)}}}class LM{}const Lre=Object.freeze(Object.defineProperty({__proto__:null,ActionBuilder:oi,ActionCollection:mI,ActionModel:vr,AlignmentConstraint:EA,Animation:Uo,AnimationCurve:Eu,AnimationExtension:xb,AnimationTrackHandler:Fb,Animator:ar,AnimatorController:mu,Antialiasing:FA,AttachedObject:io,AudioExtension:Nb,AudioListener:If,AudioSource:xn,AudioTrackHandler:cu,AvatarBlink_Simple:Tu,AvatarEyeLook_Rotation:dp,AvatarLoader:Cb,AvatarMarker:jn,AvatarModel:wb,Avatar_Brain_LookAt:Em,Avatar_MouthShapes:UA,Avatar_MustacheShake:KI,Avatar_POI:Ns,AxesHelper:fp,BaseUIComponent:Go,BasicIKConstraint:eM,BehaviorExtension:Gb,BehaviorModel:rs,Behaviour:Ce,Bloom:Pu,BoxCollider:zA,BoxGizmo:Mu,BoxHelperComponent:Zr,Button:Vc,CallInfo:su,Camera:ki,Canvas:ws,CanvasGroup:mp,CapsuleCollider:ql,ChangeMaterialOnClick:HA,ChangeTransformOnClick:ku,CharacterController:Ou,CharacterControllerInput:Wc,ChromaticAberration:WA,Collider:Na,ColorAdjustments:uh,ColorBySpeedModule:Lu,ColorOverLifetimeModule:qA,Component:eh,ControlTrackHandler:Ub,CustomBranding:gh,Deletable:dM,DeleteBox:Xb,DepthOfField:Yo,DeviceFlag:Yb,DocumentExtension:fM,DragControls:Rl,DropListener:XA,Duplicatable:Nu,EmissionModule:Ga,EmphasizeOnClick:vp,EventList:sr,EventListEvent:vb,EventSystem:tr,EventTrigger:Kb,FieldWithDefault:uI,FixedJoint:_M,FlyControls:bM,Fog:bp,GltfExport:Ac,GltfExportBox:CM,Gradient:dh,Graphic:Bu,GraphicRaycaster:YI,GridHelper:xp,GridLayoutGroup:cM,GroundProjectedEnv:zu,GroupActionModel:Tl,HideOnStart:hM,HingeJoint:YA,HorizontalLayoutGroup:aM,Image:gp,InheritVelocityModule:ph,InputField:Gu,Interactable:np,LODGroup:KA,LODModel:Qu,Light:lr,LimitVelocityOverLifetimeModule:Sn,LogStats:EM,LookAt:Hu,LookAtConstraint:IA,MainModule:ls,MaskableGraphic:QA,MeshCollider:GA,MeshRenderer:yb,MinMaxCurve:ot,MinMaxGradient:cr,NestedGltf:tx,Networking:Uu,NoiseModule:di,ObjectRaycaster:vu,OffsetConstraint:Vu,OpenURL:wp,OrbitControls:ah,Outline:pp,Padding:ch,ParticleBurst:Fm,ParticleSubEmitter:nx,ParticleSystem:ln,ParticleSystemRenderer:Xc,PixelationEffect:ZA,PlayAnimationOnClick:hh,PlayAudioOnClick:yp,PlayableDirector:ou,PlayerColor:yu,PointerEventData:$h,PostProcessingHandler:sx,PreliminaryAction:_p,PreliminaryTrigger:VA,RGBAColor:xi,RawImage:Hb,Raycaster:lp,Rect:sM,RectTransform:xs,ReflectionProbe:ip,RegisteredAnimationInfo:_b,RemoteSkybox:ju,Renderer:Ki,RendererLightmap:Sm,Rigidbody:Gi,RotationBySpeedModule:Br,RotationOverLifetimeModule:mo,SceneSwitcher:Dr,ScreenCapture:$A,ScreenSpaceAmbientOcclusion:Yc,SetActiveOnClick:Ap,ShadowCatcher:tv,ShapeModule:hn,SignalAsset:kA,SignalReceiver:up,SignalReceiverEvent:hp,SignalTrackHandler:Lm,Size:nM,SizeBySpeedModule:js,SizeOverLifetimeModule:fh,SkinnedMeshRenderer:dI,SmoothFollow:mh,SpatialHtml:RM,SpatialTrigger:nv,SpatialTriggerReceiver:Ia,SpectatorCamera:ax,SphereCollider:NA,Sprite:Jc,SpriteData:Ip,SpriteRenderer:Wu,SpriteSheet:sv,SubEmitterSystem:Gm,SyncedCamera:cx,SyncedRoom:Ah,SyncedTransform:jl,TapGestureTrigger:uM,TeleportTarget:kb,TestRunner:BM,TestSimulateUserData:DM,Text:Ws,TextBuilder:Wb,TextExtension:qb,TextureSheetAnimationModule:hs,TiltShiftEffect:Va,ToneMapping:ov,TrailModule:Fi,TransformData:bb,TransformGizmo:qu,TriggerBuilder:rr,TriggerModel:Mc,UIRaycastUtils:Ef,UIRootComponent:DA,USDZExporter:vo,USDZText:Pl,UsageMarker:sp,VRUserState:Oo,VariantAction:gI,VelocityOverLifetimeModule:Qi,VerticalLayoutGroup:oM,VideoPlayer:us,Vignette:Xu,VisibilityAction:jA,Voip:Gc,Volume:hx,VolumeParameter:Ft,VolumeProfile:LA,WebAR:ru,WebARCameraBackground:ux,WebARSessionRoot:rh,WebXR:wt,WebXRAvatar:ba,WebXRController:Yi,WebXRImageTracking:dx,WebXRImageTrackingModel:Kc,WebXRPlaneTracking:fx,WebXRSync:Om,WebXRTrackedImage:vc,XRFlag:ns,XRGrabModel:px,XRGrabRendering:OM,XRRig:Ob,XRState:to,__Ignore:LM},Symbol.toStringTag,{value:"Module"}));var Fre=Object.defineProperty,Ure=Object.getOwnPropertyDescriptor,zN=(n,e,t,i)=>{for(var s=i>1?void 0:i?Ure(e,t):e,r=n.length-1,o;r>=0;r--)(o=n[r])&&(s=(i?o(e,t,s):o(s))||s);return i&&s&&Fre(e,t,s),s};const C0=ce("debugplayersync");class FM extends Ce{constructor(){super(...arguments);u(this,"asset");u(this,"joinedRoomFunction")}awake(){this.watchTabVisible(),this.joinedRoomFunction=this.onUserJoined.bind(this)}onEnable(){this.context.connection.beginListen(Ji.JoinedRoom,this.joinedRoomFunction)}onDisable(){this.context.connection.stopListen(Ji.JoinedRoom,this.joinedRoomFunction)}async onUserJoined(t){var s,r;C0&&console.log("PlayerSync.onUserJoined",t);const i=await((s=this.asset)==null?void 0:s.instantiateSynced({parent:this.gameObject},!0));if(i){let o=$.getComponent(i,af);o?o.owner=this.context.connection.connectionId:(console.error("<strong>Failed finding PlayerState on "+((r=this.asset)==null?void 0:r.uri)+"</strong>: please make sure the asset has a PlayerState component!"),$.destroySynced(i))}else console.warn("PlayerSync: failed instantiating asset!")}watchTabVisible(){window.addEventListener("visibilitychange",t=>{if(document.visibilityState==="visible")for(let i=af.all.length-1;i>=0;i--){const s=af.all[i];(!s.owner||!this.context.connection.userIsInRoom(s.owner))&&s.doDestroy()}})}}zN([w(qn)],FM.prototype,"asset",2);var GN=(n=>(n.OwnerChanged="ownerChanged",n))(GN||{}),cg;const $n=(cg=class extends Ce{constructor(){super(...arguments);u(this,"owner")}static get all(){return $n._all}static get local(){return $n._local}static isLocalPlayer(e){if(e instanceof Ie){const t=$.getComponentInParent(e,$n);return(t==null?void 0:t.isLocalPlayer)??!1}else if(e instanceof eh){const t=$.getComponentInParent(e.gameObject,$n);return(t==null?void 0:t.isLocalPlayer)??!1}return!1}static addEventListener(e,t){return this._callbacks[e]||(this._callbacks[e]=[]),this._callbacks[e].push(t),t}static removeEventListener(e,t){if(!this._callbacks[e])return;const i=this._callbacks[e].indexOf(t);i>=0&&this._callbacks[e].splice(i,1)}static dispatchEvent(e,t){if(this._callbacks[e])for(const i of this._callbacks[e])i(t)}get isLocalPlayer(){return this.owner===this.context.connection.connectionId}onOwnerChange(e,t){C0&&console.log("PlayerSync.onOwnerChange",this,"newOwner",e,"oldOwner",t);const i=$n._local.indexOf(this);i>=0&&$n._local.splice(i,1);const s={playerState:this,oldValue:t,newValue:e};if(this.owner===this.context.connection.connectionId){$n._local.push(this);const o=new CustomEvent("local-owner-changed",{detail:s});this.dispatchEvent(o),$n.dispatchEvent("ownerChanged",o)}const r=new CustomEvent("owner-changed",{detail:s});this.dispatchEvent(r),$n.dispatchEvent("ownerChanged",r)}awake(){$n.all.push(this),C0&&console.log("Registered new PlayerState",this,$n.all.length-1,$n.all),this.context.connection.beginListen(Ji.UserLeftRoom,e=>{if(e.userId===this.owner){this.doDestroy();return}})}start(){if(this.owner&&!this.context.connection.userIsInRoom(this.owner)){this.doDestroy();return}}doDestroy(){C0&&console.log("PlayerSync.doDestroy → syncDestroy",this),cb(this.gameObject,this.context.connection)}onDestroy(){if($n.all.splice($n.all.indexOf(this),1),this.isLocalPlayer){const e=$n._local.indexOf(this);e>=0&&$n._local.splice(e,1)}}},u(cg,"_all",[]),u(cg,"_local",[]),u(cg,"_callbacks",{}),cg);let af=$n;zN([PM("onOwnerChange")],af.prototype,"owner",2);class Nre extends Ce{constructor(){super(...arguments);u(this,"toggleKey","KeyP")}update(){this.context.input.isKeyDown(this.toggleKey)&&this.context.domElement.classList.toggle("presentation-mode")}}Q.add("__Ignore",LM);Q.add("ActionBuilder",oi);Q.add("ActionCollection",mI);Q.add("ActionModel",vr);Q.add("AlignmentConstraint",EA);Q.add("Animation",Uo);Q.add("AnimationCurve",Eu);Q.add("AnimationExtension",xb);Q.add("AnimationTrackHandler",Fb);Q.add("Animator",ar);Q.add("AnimatorController",mu);Q.add("Antialiasing",FA);Q.add("AttachedObject",io);Q.add("AudioExtension",Nb);Q.add("AudioListener",If);Q.add("AudioSource",xn);Q.add("AudioTrackHandler",cu);Q.add("Avatar_Brain_LookAt",Em);Q.add("Avatar_MouthShapes",UA);Q.add("Avatar_MustacheShake",KI);Q.add("Avatar_POI",Ns);Q.add("AvatarBlink_Simple",Tu);Q.add("AvatarEyeLook_Rotation",dp);Q.add("AvatarLoader",Cb);Q.add("AvatarMarker",jn);Q.add("AvatarModel",wb);Q.add("AxesHelper",fp);Q.add("BaseUIComponent",Go);Q.add("BasicIKConstraint",eM);Q.add("BehaviorExtension",Gb);Q.add("BehaviorModel",rs);Q.add("Behaviour",Ce);Q.add("Bloom",Pu);Q.add("BoxCollider",zA);Q.add("BoxGizmo",Mu);Q.add("BoxHelperComponent",Zr);Q.add("Button",Vc);Q.add("CallInfo",su);Q.add("Camera",ki);Q.add("Canvas",ws);Q.add("CanvasGroup",mp);Q.add("CapsuleCollider",ql);Q.add("ChangeMaterialOnClick",HA);Q.add("ChangeTransformOnClick",ku);Q.add("CharacterController",Ou);Q.add("CharacterControllerInput",Wc);Q.add("ChromaticAberration",WA);Q.add("Collider",Na);Q.add("ColorAdjustments",uh);Q.add("ColorBySpeedModule",Lu);Q.add("ColorOverLifetimeModule",qA);Q.add("Component",eh);Q.add("ControlTrackHandler",Ub);Q.add("CustomBranding",gh);Q.add("Deletable",dM);Q.add("DeleteBox",Xb);Q.add("DepthOfField",Yo);Q.add("DeviceFlag",Yb);Q.add("DocumentExtension",fM);Q.add("DragControls",Rl);Q.add("DropListener",XA);Q.add("Duplicatable",Nu);Q.add("EmissionModule",Ga);Q.add("EmphasizeOnClick",vp);Q.add("EventList",sr);Q.add("EventListEvent",vb);Q.add("EventSystem",tr);Q.add("EventTrigger",Kb);Q.add("FieldWithDefault",uI);Q.add("FixedJoint",_M);Q.add("FlyControls",bM);Q.add("Fog",bp);Q.add("GltfExport",Ac);Q.add("GltfExportBox",CM);Q.add("Gradient",dh);Q.add("Graphic",Bu);Q.add("GraphicRaycaster",YI);Q.add("GridHelper",xp);Q.add("GridLayoutGroup",cM);Q.add("GroundProjectedEnv",zu);Q.add("GroupActionModel",Tl);Q.add("HideOnStart",hM);Q.add("HingeJoint",YA);Q.add("HorizontalLayoutGroup",aM);Q.add("Image",gp);Q.add("InheritVelocityModule",ph);Q.add("InputField",Gu);Q.add("Interactable",np);Q.add("Light",lr);Q.add("LimitVelocityOverLifetimeModule",Sn);Q.add("LODGroup",KA);Q.add("LODModel",Qu);Q.add("LogStats",EM);Q.add("LookAt",Hu);Q.add("LookAtConstraint",IA);Q.add("MainModule",ls);Q.add("MaskableGraphic",QA);Q.add("MeshCollider",GA);Q.add("MeshRenderer",yb);Q.add("MinMaxCurve",ot);Q.add("MinMaxGradient",cr);Q.add("NestedGltf",tx);Q.add("Networking",Uu);Q.add("NoiseModule",di);Q.add("ObjectRaycaster",vu);Q.add("OffsetConstraint",Vu);Q.add("OpenURL",wp);Q.add("OrbitControls",ah);Q.add("Outline",pp);Q.add("Padding",ch);Q.add("ParticleBurst",Fm);Q.add("ParticleSubEmitter",nx);Q.add("ParticleSystem",ln);Q.add("ParticleSystemRenderer",Xc);Q.add("PixelationEffect",ZA);Q.add("PlayableDirector",ou);Q.add("PlayAnimationOnClick",hh);Q.add("PlayAudioOnClick",yp);Q.add("PlayerColor",yu);Q.add("PlayerState",af);Q.add("PlayerSync",FM);Q.add("PointerEventData",$h);Q.add("PostProcessingHandler",sx);Q.add("PreliminaryAction",_p);Q.add("PreliminaryTrigger",VA);Q.add("PresentationMode",Nre);Q.add("RawImage",Hb);Q.add("Raycaster",lp);Q.add("Rect",sM);Q.add("RectTransform",xs);Q.add("ReflectionProbe",ip);Q.add("RegisteredAnimationInfo",_b);Q.add("RemoteSkybox",ju);Q.add("Renderer",Ki);Q.add("RendererLightmap",Sm);Q.add("RGBAColor",xi);Q.add("Rigidbody",Gi);Q.add("RotationBySpeedModule",Br);Q.add("RotationOverLifetimeModule",mo);Q.add("SceneSwitcher",Dr);Q.add("ScreenCapture",$A);Q.add("ScreenSpaceAmbientOcclusion",Yc);Q.add("SetActiveOnClick",Ap);Q.add("ShadowCatcher",tv);Q.add("ShapeModule",hn);Q.add("SignalAsset",kA);Q.add("SignalReceiver",up);Q.add("SignalReceiverEvent",hp);Q.add("SignalTrackHandler",Lm);Q.add("Size",nM);Q.add("SizeBySpeedModule",js);Q.add("SizeOverLifetimeModule",fh);Q.add("SkinnedMeshRenderer",dI);Q.add("SmoothFollow",mh);Q.add("SpatialHtml",RM);Q.add("SpatialTrigger",nv);Q.add("SpatialTriggerReceiver",Ia);Q.add("SpectatorCamera",ax);Q.add("SphereCollider",NA);Q.add("Sprite",Jc);Q.add("SpriteData",Ip);Q.add("SpriteRenderer",Wu);Q.add("SpriteSheet",sv);Q.add("SubEmitterSystem",Gm);Q.add("SyncedCamera",cx);Q.add("SyncedRoom",Ah);Q.add("SyncedTransform",jl);Q.add("TapGestureTrigger",uM);Q.add("TeleportTarget",kb);Q.add("TestRunner",BM);Q.add("TestSimulateUserData",DM);Q.add("Text",Ws);Q.add("TextBuilder",Wb);Q.add("TextExtension",qb);Q.add("TextureSheetAnimationModule",hs);Q.add("TiltShiftEffect",Va);Q.add("ToneMapping",ov);Q.add("TrailModule",Fi);Q.add("TransformData",bb);Q.add("TransformGizmo",qu);Q.add("TriggerBuilder",rr);Q.add("TriggerModel",Mc);Q.add("UIRaycastUtils",Ef);Q.add("UIRootComponent",DA);Q.add("UsageMarker",sp);Q.add("USDZExporter",vo);Q.add("USDZText",Pl);Q.add("VariantAction",gI);Q.add("VelocityOverLifetimeModule",Qi);Q.add("VerticalLayoutGroup",oM);Q.add("VideoPlayer",us);Q.add("Vignette",Xu);Q.add("VisibilityAction",jA);Q.add("Voip",Gc);Q.add("Volume",hx);Q.add("VolumeParameter",Ft);Q.add("VolumeProfile",LA);Q.add("VRUserState",Oo);Q.add("WebAR",ru);Q.add("WebARCameraBackground",ux);Q.add("WebARSessionRoot",rh);Q.add("WebXR",wt);Q.add("WebXRAvatar",ba);Q.add("WebXRController",Yi);Q.add("WebXRImageTracking",dx);Q.add("WebXRImageTrackingModel",Kc);Q.add("WebXRPlaneTracking",fx);Q.add("WebXRSync",Om);Q.add("WebXRTrackedImage",vc);Q.add("XRFlag",ns);Q.add("XRGrabModel",px);Q.add("XRGrabRendering",OM);Q.add("XRRig",Ob);Q.add("XRState",to);const QN=ys,zre=ce("debugtypestore");zre&&console.log(Q);function Gre(n,e){const i=$2(n,e);return i!==void 0?i:null}const Qre=new bj,pC=Symbol("deserialize-queue");async function Hre(n,e,t,i=null,s){if(!t)return;let r=i;typeof r=="number"&&(r=new Us(i));const o=e.indexOf("?");e=o===-1?e:e.substring(0,o);const a=new Z2(t.scene);a.gltfId=e,a.context=n,a.gltf=t,a.nodeToObject=s==null?void 0:s.nodeToObjectMap,a.implementationInformation=Qre;let c=n[pC];if(c||(c=n[pC]=[]),t.scenes)for(const l of t.scenes)await fE(a,l,c);if(t.children)for(const l of t.children)await fE(a,l,c);n.new_scripts_pre_setup_callbacks.push(()=>{const l=n[pC];if(l){for(const h of l)Vre(h,a);l.length=0}if(r){const h={};dE(t,r,h);for(const d of t.scenes)dE(d,r,h)}})}function dE(n,e,t){if(e===null||!n)return;const i=n.guid;if(n.guid=e.generateUUID(),i&&i!=="invalid"&&(t[i]=n.guid),n&&n.userData&&n.userData.components)for(const s of n.userData.components){if(s===null)continue;const r=s.guid;s.guid=e.generateUUID(),r&&r!=="invalid"&&(t[r]=s.guid),s.resolveGuids&&s.resolveGuids(t)}if(n.children)for(const s of n.children)dE(s,e,t)}const ng=[];async function fE(n,e,t,i){if(!e)return;const s=e.userData;if(s){const r=s.builtin_components;if(r&&r.length>0)for(const o of r)try{if(o===null)continue;const a=Q.get(o.name);if(a!=null){const c=new a;c.sourceId=n.gltfId,pu(c,o,n.implementationInformation),"guid"in o&&(c[wg]=o.guid),$l(e,c,!1),t.push({instance:c,compData:o,obj:e})}else QN&&console.debug("unknown component: "+o.name),ng.includes(o.name)||ng.push(o.name)}catch(a){console.error(o.name+" - "+a.message,a)}if(ng.length>0){const o=ng.join(", ");console.warn("unknown components: "+o),ng.length=0,zs()&&ss(`<strong>Unknown components in scene</strong>:
|
|
5052
|
+
`;function Mre(n){const e="vec4("+n.r.toFixed(3)+","+n.g.toFixed(3)+","+n.b.toFixed(3)+","+n.a.toFixed(3)+")";console.log(e);const t=new ve(new Yn(2,2),new Xt({name:"BackgroundMaterial",uniforms:GE.clone(yr.background.uniforms),vertexShader:yr.background.vertexShader,fragmentShader:Ire.replace("<backgroundTint>",e),side:Ii,depthTest:!1,depthWrite:!1,fog:!1}));return t.geometry.deleteAttribute("normal"),Object.defineProperty(t.material,"map",{get:function(){return this.threeTexture}}),t.renderOrder=-1e4,t.layers.disableAll(),t.layers.enable(2),t.frustumCulled=!1,t.setTexture=function(i){t.material.uniforms.t2D.value=i},t}var Tre=Object.defineProperty,Pre=Object.getOwnPropertyDescriptor,Tp=(n,e,t,i)=>{for(var s=i>1?void 0:i?Pre(e,t):e,r=n.length-1,o;r>=0;r--)(o=n[r])&&(s=(i?o(e,t,s):o(s))||s);return i&&s&&Tre(e,t,s),s};const Rre=ce("debugimagetracking"),em=class{constructor(e,t,i,s,r,o){u(this,"measuredSize");u(this,"state");u(this,"_position");u(this,"_rotation");u(this,"_trackingComponent");u(this,"_trackedImage");u(this,"_bitmap");u(this,"_pose");this._trackingComponent=e,this._trackedImage=t,this._bitmap=i,this.measuredSize=s,this.state=r,this._pose=o}get url(){return this._trackedImage.image??""}get widthInMeters(){return this._trackedImage.widthInMeters??void 0}get bitmap(){return this._bitmap}get model(){return this._trackedImage}getPosition(e){return this.ensureTransformData(),e.copy(this._position),e}getQuaternion(e){return this.ensureTransformData(),e.copy(this._rotation),e}applyToObject(e,t=void 0){this.ensureTransformData();const i=e.position.distanceToSquared(this._position)>.05||e.quaternion.angleTo(this._rotation)>.05;t===void 0||t>=1||i?(e.position.copy(this._position),e.quaternion.copy(this._rotation)):(t=Math.max(0,Math.min(1,t)),e.position.lerp(this._position,t),e.quaternion.slerp(this._rotation,t)),e.quaternion.multiply(em.y180)}ensureTransformData(){if(!this._position){this._position=em._positionBuffer.get(),this._rotation=em._rotationBuffer.get();const e=this._pose.transform;this._position.set(e.position.x,e.position.y,e.position.z),this._rotation.set(e.orientation.x,e.orientation.y,e.orientation.z,e.orientation.w)}}};let vc=em;u(vc,"y180",new xe().setFromAxisAngle(new E(0,1,0),Math.PI)),u(vc,"_positionBuffer",new Ma(()=>new E,20)),u(vc,"_rotationBuffer",new Ma(()=>new xe,20));class Kc{constructor(){u(this,"image");u(this,"widthInMeters");u(this,"object");u(this,"createObjectInstance",!1);u(this,"imageDoesNotMove",!1)}}Tp([w(URL)],Kc.prototype,"image",2);Tp([w()],Kc.prototype,"widthInMeters",2);Tp([w(qn)],Kc.prototype,"object",2);Tp([w()],Kc.prototype,"createObjectInstance",2);Tp([w()],Kc.prototype,"imageDoesNotMove",2);class Bre{constructor(e,t,i){u(this,"filename");u(this,"widthInMeters");u(this,"imageData");this.filename=e,this.imageData=t,this.widthInMeters=i}get extensionName(){return"image-tracking"}onAfterHierarchy(e,t){t.beginBlock('def Preliminary_ReferenceImage "AnchoringReferenceImage"'),t.appendLine("uniform asset image = @tracker/"+this.filename+"@"),t.appendLine("uniform double physicalWidth = "+(this.widthInMeters*100).toFixed(8)),t.closeBlock()}onAfterSerialize(e){e.files["tracker/"+this.filename]=this.imageData}}var MC;const xg=(MC=class extends Ce{constructor(){super(...arguments);u(this,"trackedImages");u(this,"trackedImageIndexMap",new Map);u(this,"xr",null);u(this,"onModifyAROptions",e=>{var s;const t=e.detail,i=t.optionalFeatures||[];i.includes("image-tracking")||i.push("image-tracking"),t.optionalFeatures=i,t.trackedImages=[];for(const r of this.trackedImages)if((s=r.image)!=null&&s.length&&r.widthInMeters>0){const o=xg._imageElements.get(r.image);o&&(this.trackedImageIndexMap.set(t.trackedImages.length,r),t.trackedImages.push({image:o,widthInMeters:r.widthInMeters}))}});u(this,"imageToObjectMap",new Map);u(this,"onImageTrackingUpdate",e=>{const t=e.detail;for(const[i,s]of this.imageToObjectMap){if(!s.object||!i)continue;let r=!1;for(const o of t)if(o.model===i){r=!0;break}r||$.setActive(s.object,!1)}for(const i of t){const s=i.model;if(!s.object)continue;let r=this.imageToObjectMap.get(s);if(r===void 0)r={object:null,frames:0},this.imageToObjectMap.set(s,r),s.object.loadAssetAsync().then(o=>{s.createObjectInstance&&(o=$.instantiate(o)),o&&(r.object=o,this.xr&&this.xr.Rig.add(o),i.applyToObject(o),o.activeSelf||$.setActive(o,!0))});else{if(r.frames++,s.imageDoesNotMove&&r.frames>10||!r.object)continue;this.xr&&this.xr.Rig.add(r.object),i.applyToObject(r.object),r.object.activeSelf||$.setActive(r.object,!0)}}});u(this,"onXRStarted",e=>{for(const t of this.imageToObjectMap.values())t.frames=0});u(this,"onXRUpdate",e=>{const t=e.frame;if(t){if(t.session&&!("getImageTrackingResults"in t)){Vo('Image tracking is currently not supported on this device. On Chrome for Android, you can enable the <a href="chrome://flags/#webxr-incubations">chrome://flags/#webxr-incubations</a> flag.');return}if(t.session&&typeof t.getImageTrackingResults=="function"){const i=t.getImageTrackingResults();if(i.length){const s=this.context.renderer.xr.getReferenceSpace();if(s){const r=[];for(const o of i){const a=o.index,c=this.trackedImageIndexMap.get(a);if(c){const l=t.getPose(o.imageSpace,s),h=o.trackingState,d=new vc(this,c,o.image,o.measuredSize,h,l);r.push(d)}else Rre&&console.warn("No tracked image for index",a)}if(r.length>0)try{this.dispatchEvent(new CustomEvent("image-tracking",{detail:r}))}catch(o){console.error(o)}}}}}})}awake(){for(const e of this.trackedImages)if(e.image&&!xg._imageElements.has(e.image)){const t=e.image;xg._imageElements.set(t,null);const i=document.createElement("img");i.src=t,i.addEventListener("load",async()=>{const s=await createImageBitmap(i);xg._imageElements.set(t,s);const r=await T3(s);if(r){const a=await(await new Promise(l=>r.toBlob(l,"image/png",1))).arrayBuffer(),c=$.findObjectOfType(vo);c&&(c.extensions.push(new Bre("marker.png",new Uint8Array(a),this.trackedImages[0].widthInMeters)),c.anchoringType="image")}})}}onEnable(){this.xr=$.findObjectOfType(wt),wt.addEventListener(Ei.ModifyAROptions,this.onModifyAROptions),wt.addEventListener(Ei.XRStarted,this.onXRStarted),wt.addEventListener(Ei.XRUpdate,this.onXRUpdate),this.addEventListener("image-tracking",this.onImageTrackingUpdate)}onDisable(){wt.removeEventListener(Ei.ModifyAROptions,this.onModifyAROptions),wt.removeEventListener(Ei.XRStarted,this.onXRStarted),wt.removeEventListener(Ei.XRUpdate,this.onXRUpdate),this.removeEventListener("image-tracking",this.onImageTrackingUpdate)}},u(MC,"_imageElements",new Map),MC);let dx=xg;Tp([w(Kc)],dx.prototype,"trackedImages",2);var Dre=Object.defineProperty,kre=Object.getOwnPropertyDescriptor,Ore=(n,e,t,i)=>{for(var s=i>1?void 0:i?kre(e,t):e,r=n.length-1,o;r>=0;r--)(o=n[r])&&(s=(i?o(e,t,s):o(s))||s);return i&&s&&Dre(e,t,s),s};const LD=ce("debugplanetracking");class fx extends Ce{constructor(){super(...arguments);u(this,"planeTemplate");u(this,"onModifyAROptions",t=>{const i=t.detail,s=i.optionalFeatures||[];s.includes("plane-detection")||s.push("plane-detection"),i.optionalFeatures=s});u(this,"onXRUpdate",t=>{this.processPlanes(t.rig,t.frame)});u(this,"_planeId",1);u(this,"_allPlanes",new Map)}get trackedPlanes(){return this._allPlanes.values()}onEnable(){wt.addEventListener(Ei.XRUpdate,this.onXRUpdate),wt.addEventListener("modify-ar-options",this.onModifyAROptions)}onDisable(){wt.removeEventListener(Ei.XRUpdate,this.onXRUpdate),wt.removeEventListener("modify-ar-options",this.onModifyAROptions)}processPlanes(t,i){const s=this.context.renderer;if(!t||i.detectedPlanes===void 0)return;const r=s.xr.getReferenceSpace();if(r){for(const o of this._allPlanes.keys())if(!i.detectedPlanes.has(o)){const a=this._allPlanes.get(o);this._allPlanes.delete(o),LD&&console.log("Plane no longer tracked, id="+a.id),a.mesh&&(t==null||t.remove(a.mesh));const c=new CustomEvent("plane-tracking",{detail:{type:"plane-removed",context:a}});this.dispatchEvent(c)}for(const o of i.detectedPlanes){const a=i.getPose(o.planeSpace,r);let c;if(this._allPlanes.has(o)){const l=this._allPlanes.get(o);if(c=l.mesh,l.timestamp<o.lastChangedTime){if(l.timestamp=o.lastChangedTime,l.mesh){const d=this.createGeometry(o.polygon);if(l.mesh instanceof ve)l.mesh.geometry.dispose(),l.mesh.geometry=d;else if(l.mesh instanceof $r)for(const f of l.mesh.children)f instanceof ve&&(f.geometry.dispose(),f.geometry=d);l.collider&&(l.collider.sharedMesh=l.mesh,l.collider.convex=!0,l.collider.onDisable(),l.collider.onEnable())}const h=new CustomEvent("plane-tracking",{detail:{type:"plane-updated",context:l}});this.dispatchEvent(h)}}else if(this.planeTemplate||(this.planeTemplate=new ve),this.planeTemplate){const l=$.instantiate(this.planeTemplate);c=l,l instanceof ve&&(Po(l.geometry),l.geometry=this.createGeometry(o.polygon));const h=l.getComponent(GA);h&&(h.sharedMesh=l,h.convex=!0,h.onDisable(),h.onEnable()),l.matrixAutoUpdate=!1,l.matrixWorldNeedsUpdate=!0,t.add(l);const d={id:this._planeId++,xrPlane:o,timestamp:o.lastChangedTime,mesh:l,collider:h};this._allPlanes.set(o,d),LD&&console.log("New plane detected, id="+d.id);try{const f=new CustomEvent("plane-tracking",{detail:{type:"plane-added",context:d}});this.dispatchEvent(f)}catch(f){console.error(f)}}c&&(a?(c.visible=!0,c.matrix.fromArray(a.transform.matrix)):c.visible=!1)}}}createGeometry(t){const i=new vt,s=[],r=[];t.forEach(p=>{s.push(p.x,p.y,p.z),r.push(p.x,p.z)});const o=new E(s[0],s[1],s[2]),a=new E(s[3],s[4],s[5]),c=new E(s[6],s[7],s[8]),l=new E,h=new E;l.subVectors(a,o),h.subVectors(c,o),l.cross(h),l.normalize();const d=[];for(let p=0;p<s.length/3;p++)d.push(l.x,l.y,l.z);const f=[];for(let p=2;p<t.length;++p)f.push(0,p-1,p);return i.setAttribute("position",new ht(new Float32Array(s),3)),i.setAttribute("uv",new ht(new Float32Array(r),2)),i.setAttribute("normal",new ht(new Float32Array(d),3)),i.setIndex(f),i}}Ore([w(Ie)],fx.prototype,"planeTemplate",2);class px{constructor(){u(this,"guid");u(this,"dontSave",!0);u(this,"userId");u(this,"point",{x:0,y:0,z:0});u(this,"source",{x:0,y:0,z:0});u(this,"target")}update(e,t,i,s=void 0){this.userId=e.connection.connectionId,this.point.x=t.x,this.point.y=t.y,this.point.z=t.z,this.source.x=i.x,this.source.y=i.y,this.source.z=i.z,this.target=s}}class OM extends Ce{constructor(){super(...arguments);u(this,"prefab",null);u(this,"_grabModels",[]);u(this,"_grabModelsUpdateTime",[]);u(this,"_addOrUpdateSub",null);u(this,"_endSub",null);u(this,"_freeSub",null);u(this,"_instances",{});u(this,"temp",new E)}awake(){this.prefab&&(this.prefab.visible=!1)}onEnable(){this._addOrUpdateSub=this.context.connection.beginListen("xr-grab-visual-start-or-update",this.onRemoteGrabStartOrUpdate.bind(this)),this._endSub=this.context.connection.beginListen("xr-grab-visual-end",this.onRemoteGrabEnd.bind(this)),this._freeSub=io.AddEventListener(h_.WillFree,this.onAttachedObjectFree.bind(this))}onDisable(){this.context.connection.stopListen("xr-grab-visual-start-or-update",this._addOrUpdateSub),this.context.connection.stopListen("xr-grab-visual-end",this._endSub),io.RemoveEventListener(h_.WillFree,this._freeSub)}addOrUpdateGrab(t){this.context.connection.send("xr-grab-visual-start-or-update",t,Zs.Queued)}endGrab(t){this.context.connection.send("xr-grab-visual-end",t,Zs.Queued)}onRemoteGrabStartOrUpdate(t){if(!this.prefab)return;const i=this._instances[t.guid];if(!i){const s=$.instantiate(this.prefab);if(s.visible=!0,this._instances[t.guid]={instance:s,model:t},t.userId){const r=$.getComponentsInChildren(s,yu);if((r==null?void 0:r.length)>0)for(const o of r)o.assignUserColor(t.userId)}return}i.model=t}onRemoteGrabEnd(t){if(!t)return;const i=t.guid;this._instances[i]&&($.destroy(this._instances[i].instance),delete this._instances[i])}onAttachedObjectFree(t){if(this._grabModels.length<=0)return;const i=this._grabModels[0];this.updateModel(i,t),this.endGrab(i)}onBeforeRender(){if(this.updateRendering(),!!this.prefab&&(this.prefab.visible=!1,this.context.time.frameCount%10===0))for(let t=0;t<io.Current.length;t++){const i=io.Current[t];if(!i.controller||!i.selected)continue;this._grabModels.length<=t&&(this._grabModels.push(new px),this._grabModelsUpdateTime.push(0)),this._grabModelsUpdateTime[t]=this.context.time.time;const s=this._grabModels[t];this.updateModel(s,i),this.addOrUpdateGrab(s)}}updateModel(t,i){if(!i.controller||!i.selected)return;t.guid=i.grabUUID;const s=i.selected.guid;t.update(this.context,i.grabPoint,i.controller.worldPosition,s)}updateRendering(){const t=this.context.time.deltaTime/.5;for(const i in this._instances){const{instance:s,model:r}=this._instances[i];if(!s||!r)continue;const{point:o}=r,a=Ct(s);this.temp.set(o.x,o.y,o.z),a.lerp(this.temp,t),bn(s,a)}}}class LM{}const Lre=Object.freeze(Object.defineProperty({__proto__:null,ActionBuilder:oi,ActionCollection:mI,ActionModel:vr,AlignmentConstraint:EA,Animation:Uo,AnimationCurve:Eu,AnimationExtension:xb,AnimationTrackHandler:Fb,Animator:ar,AnimatorController:mu,Antialiasing:FA,AttachedObject:io,AudioExtension:Nb,AudioListener:If,AudioSource:xn,AudioTrackHandler:cu,AvatarBlink_Simple:Tu,AvatarEyeLook_Rotation:dp,AvatarLoader:Cb,AvatarMarker:jn,AvatarModel:wb,Avatar_Brain_LookAt:Em,Avatar_MouthShapes:UA,Avatar_MustacheShake:KI,Avatar_POI:Ns,AxesHelper:fp,BaseUIComponent:Go,BasicIKConstraint:eM,BehaviorExtension:Gb,BehaviorModel:rs,Behaviour:Ce,Bloom:Pu,BoxCollider:zA,BoxGizmo:Mu,BoxHelperComponent:Zr,Button:Vc,CallInfo:su,Camera:ki,Canvas:ws,CanvasGroup:mp,CapsuleCollider:ql,ChangeMaterialOnClick:HA,ChangeTransformOnClick:ku,CharacterController:Ou,CharacterControllerInput:Wc,ChromaticAberration:WA,Collider:Na,ColorAdjustments:uh,ColorBySpeedModule:Lu,ColorOverLifetimeModule:qA,Component:eh,ControlTrackHandler:Ub,CustomBranding:gh,Deletable:dM,DeleteBox:Xb,DepthOfField:Yo,DeviceFlag:Yb,DocumentExtension:fM,DragControls:Rl,DropListener:XA,Duplicatable:Nu,EmissionModule:Ga,EmphasizeOnClick:vp,EventList:sr,EventListEvent:vb,EventSystem:tr,EventTrigger:Kb,FieldWithDefault:uI,FixedJoint:_M,FlyControls:bM,Fog:bp,GltfExport:Ac,GltfExportBox:CM,Gradient:dh,Graphic:Bu,GraphicRaycaster:YI,GridHelper:xp,GridLayoutGroup:cM,GroundProjectedEnv:zu,GroupActionModel:Tl,HideOnStart:hM,HingeJoint:YA,HorizontalLayoutGroup:aM,Image:gp,InheritVelocityModule:ph,InputField:Gu,Interactable:np,LODGroup:KA,LODModel:Qu,Light:lr,LimitVelocityOverLifetimeModule:Sn,LogStats:EM,LookAt:Hu,LookAtConstraint:IA,MainModule:ls,MaskableGraphic:QA,MeshCollider:GA,MeshRenderer:yb,MinMaxCurve:ot,MinMaxGradient:cr,NestedGltf:tx,Networking:Uu,NoiseModule:di,ObjectRaycaster:vu,OffsetConstraint:Vu,OpenURL:wp,OrbitControls:ah,Outline:pp,Padding:ch,ParticleBurst:Fm,ParticleSubEmitter:nx,ParticleSystem:ln,ParticleSystemRenderer:Xc,PixelationEffect:ZA,PlayAnimationOnClick:hh,PlayAudioOnClick:yp,PlayableDirector:ou,PlayerColor:yu,PointerEventData:$h,PostProcessingHandler:sx,PreliminaryAction:_p,PreliminaryTrigger:VA,RGBAColor:xi,RawImage:Hb,Raycaster:lp,Rect:sM,RectTransform:xs,ReflectionProbe:ip,RegisteredAnimationInfo:_b,RemoteSkybox:ju,Renderer:Ki,RendererLightmap:Sm,Rigidbody:Gi,RotationBySpeedModule:Br,RotationOverLifetimeModule:mo,SceneSwitcher:Dr,ScreenCapture:$A,ScreenSpaceAmbientOcclusion:Yc,SetActiveOnClick:Ap,ShadowCatcher:tv,ShapeModule:hn,SignalAsset:kA,SignalReceiver:up,SignalReceiverEvent:hp,SignalTrackHandler:Lm,Size:nM,SizeBySpeedModule:js,SizeOverLifetimeModule:fh,SkinnedMeshRenderer:dI,SmoothFollow:mh,SpatialHtml:RM,SpatialTrigger:nv,SpatialTriggerReceiver:Ia,SpectatorCamera:ax,SphereCollider:NA,Sprite:Jc,SpriteData:Ip,SpriteRenderer:Wu,SpriteSheet:sv,SubEmitterSystem:Gm,SyncedCamera:cx,SyncedRoom:Ah,SyncedTransform:jl,TapGestureTrigger:uM,TeleportTarget:kb,TestRunner:BM,TestSimulateUserData:DM,Text:Ws,TextBuilder:Wb,TextExtension:qb,TextureSheetAnimationModule:hs,TiltShiftEffect:Va,ToneMapping:ov,TrailModule:Fi,TransformData:bb,TransformGizmo:qu,TriggerBuilder:rr,TriggerModel:Mc,UIRaycastUtils:Ef,UIRootComponent:DA,USDZExporter:vo,USDZText:Pl,UsageMarker:sp,VRUserState:Oo,VariantAction:gI,VelocityOverLifetimeModule:Qi,VerticalLayoutGroup:oM,VideoPlayer:us,Vignette:Xu,VisibilityAction:jA,Voip:Gc,Volume:hx,VolumeParameter:Ft,VolumeProfile:LA,WebAR:ru,WebARCameraBackground:ux,WebARSessionRoot:rh,WebXR:wt,WebXRAvatar:ba,WebXRController:Yi,WebXRImageTracking:dx,WebXRImageTrackingModel:Kc,WebXRPlaneTracking:fx,WebXRSync:Om,WebXRTrackedImage:vc,XRFlag:ns,XRGrabModel:px,XRGrabRendering:OM,XRRig:Ob,XRState:to,__Ignore:LM},Symbol.toStringTag,{value:"Module"}));var Fre=Object.defineProperty,Ure=Object.getOwnPropertyDescriptor,zN=(n,e,t,i)=>{for(var s=i>1?void 0:i?Ure(e,t):e,r=n.length-1,o;r>=0;r--)(o=n[r])&&(s=(i?o(e,t,s):o(s))||s);return i&&s&&Fre(e,t,s),s};const C0=ce("debugplayersync");class FM extends Ce{constructor(){super(...arguments);u(this,"asset");u(this,"joinedRoomFunction")}awake(){this.watchTabVisible(),this.joinedRoomFunction=this.onUserJoined.bind(this)}onEnable(){this.context.connection.beginListen(Ji.JoinedRoom,this.joinedRoomFunction)}onDisable(){this.context.connection.stopListen(Ji.JoinedRoom,this.joinedRoomFunction)}async onUserJoined(t){var s,r;C0&&console.log("PlayerSync.onUserJoined",t);const i=await((s=this.asset)==null?void 0:s.instantiateSynced({parent:this.gameObject},!0));if(i){let o=$.getComponent(i,af);o?o.owner=this.context.connection.connectionId:(console.error("<strong>Failed finding PlayerState on "+((r=this.asset)==null?void 0:r.uri)+"</strong>: please make sure the asset has a PlayerState component!"),$.destroySynced(i))}else console.warn("PlayerSync: failed instantiating asset!")}watchTabVisible(){window.addEventListener("visibilitychange",t=>{if(document.visibilityState==="visible")for(let i=af.all.length-1;i>=0;i--){const s=af.all[i];(!s.owner||!this.context.connection.userIsInRoom(s.owner))&&s.doDestroy()}})}}zN([w(qn)],FM.prototype,"asset",2);var GN=(n=>(n.OwnerChanged="ownerChanged",n))(GN||{}),cg;const $n=(cg=class extends Ce{constructor(){super(...arguments);u(this,"owner")}static get all(){return $n._all}static get local(){return $n._local}static isLocalPlayer(e){if(e instanceof Ie){const t=$.getComponentInParent(e,$n);return(t==null?void 0:t.isLocalPlayer)??!1}else if(e instanceof eh){const t=$.getComponentInParent(e.gameObject,$n);return(t==null?void 0:t.isLocalPlayer)??!1}return!1}static addEventListener(e,t){return this._callbacks[e]||(this._callbacks[e]=[]),this._callbacks[e].push(t),t}static removeEventListener(e,t){if(!this._callbacks[e])return;const i=this._callbacks[e].indexOf(t);i>=0&&this._callbacks[e].splice(i,1)}static dispatchEvent(e,t){if(this._callbacks[e])for(const i of this._callbacks[e])i(t)}get isLocalPlayer(){return this.owner===this.context.connection.connectionId}onOwnerChange(e,t){C0&&console.log("PlayerSync.onOwnerChange",this,"newOwner",e,"oldOwner",t);const i=$n._local.indexOf(this);i>=0&&$n._local.splice(i,1);const s={playerState:this,oldValue:t,newValue:e};if(this.owner===this.context.connection.connectionId){$n._local.push(this);const o=new CustomEvent("local-owner-changed",{detail:s});this.dispatchEvent(o),$n.dispatchEvent("ownerChanged",o)}const r=new CustomEvent("owner-changed",{detail:s});this.dispatchEvent(r),$n.dispatchEvent("ownerChanged",r)}awake(){$n.all.push(this),C0&&console.log("Registered new PlayerState",this,$n.all.length-1,$n.all),this.context.connection.beginListen(Ji.UserLeftRoom,e=>{if(e.userId===this.owner){this.doDestroy();return}})}start(){if(this.owner&&!this.context.connection.userIsInRoom(this.owner)){this.doDestroy();return}}doDestroy(){C0&&console.log("PlayerSync.doDestroy → syncDestroy",this),cb(this.gameObject,this.context.connection)}onDestroy(){if($n.all.splice($n.all.indexOf(this),1),this.isLocalPlayer){const e=$n._local.indexOf(this);e>=0&&$n._local.splice(e,1)}}},u(cg,"_all",[]),u(cg,"_local",[]),u(cg,"_callbacks",{}),cg);let af=$n;zN([PM("onOwnerChange")],af.prototype,"owner",2);class Nre extends Ce{constructor(){super(...arguments);u(this,"toggleKey","KeyP")}update(){this.context.input.isKeyDown(this.toggleKey)&&this.context.domElement.classList.toggle("presentation-mode")}}Q.add("__Ignore",LM);Q.add("ActionBuilder",oi);Q.add("ActionCollection",mI);Q.add("ActionModel",vr);Q.add("AlignmentConstraint",EA);Q.add("Animation",Uo);Q.add("AnimationCurve",Eu);Q.add("AnimationExtension",xb);Q.add("AnimationTrackHandler",Fb);Q.add("Animator",ar);Q.add("AnimatorController",mu);Q.add("Antialiasing",FA);Q.add("AttachedObject",io);Q.add("AudioExtension",Nb);Q.add("AudioListener",If);Q.add("AudioSource",xn);Q.add("AudioTrackHandler",cu);Q.add("Avatar_Brain_LookAt",Em);Q.add("Avatar_MouthShapes",UA);Q.add("Avatar_MustacheShake",KI);Q.add("Avatar_POI",Ns);Q.add("AvatarBlink_Simple",Tu);Q.add("AvatarEyeLook_Rotation",dp);Q.add("AvatarLoader",Cb);Q.add("AvatarMarker",jn);Q.add("AvatarModel",wb);Q.add("AxesHelper",fp);Q.add("BaseUIComponent",Go);Q.add("BasicIKConstraint",eM);Q.add("BehaviorExtension",Gb);Q.add("BehaviorModel",rs);Q.add("Behaviour",Ce);Q.add("Bloom",Pu);Q.add("BoxCollider",zA);Q.add("BoxGizmo",Mu);Q.add("BoxHelperComponent",Zr);Q.add("Button",Vc);Q.add("CallInfo",su);Q.add("Camera",ki);Q.add("Canvas",ws);Q.add("CanvasGroup",mp);Q.add("CapsuleCollider",ql);Q.add("ChangeMaterialOnClick",HA);Q.add("ChangeTransformOnClick",ku);Q.add("CharacterController",Ou);Q.add("CharacterControllerInput",Wc);Q.add("ChromaticAberration",WA);Q.add("Collider",Na);Q.add("ColorAdjustments",uh);Q.add("ColorBySpeedModule",Lu);Q.add("ColorOverLifetimeModule",qA);Q.add("Component",eh);Q.add("ControlTrackHandler",Ub);Q.add("CustomBranding",gh);Q.add("Deletable",dM);Q.add("DeleteBox",Xb);Q.add("DepthOfField",Yo);Q.add("DeviceFlag",Yb);Q.add("DocumentExtension",fM);Q.add("DragControls",Rl);Q.add("DropListener",XA);Q.add("Duplicatable",Nu);Q.add("EmissionModule",Ga);Q.add("EmphasizeOnClick",vp);Q.add("EventList",sr);Q.add("EventListEvent",vb);Q.add("EventSystem",tr);Q.add("EventTrigger",Kb);Q.add("FieldWithDefault",uI);Q.add("FixedJoint",_M);Q.add("FlyControls",bM);Q.add("Fog",bp);Q.add("GltfExport",Ac);Q.add("GltfExportBox",CM);Q.add("Gradient",dh);Q.add("Graphic",Bu);Q.add("GraphicRaycaster",YI);Q.add("GridHelper",xp);Q.add("GridLayoutGroup",cM);Q.add("GroundProjectedEnv",zu);Q.add("GroupActionModel",Tl);Q.add("HideOnStart",hM);Q.add("HingeJoint",YA);Q.add("HorizontalLayoutGroup",aM);Q.add("Image",gp);Q.add("InheritVelocityModule",ph);Q.add("InputField",Gu);Q.add("Interactable",np);Q.add("Light",lr);Q.add("LimitVelocityOverLifetimeModule",Sn);Q.add("LODGroup",KA);Q.add("LODModel",Qu);Q.add("LogStats",EM);Q.add("LookAt",Hu);Q.add("LookAtConstraint",IA);Q.add("MainModule",ls);Q.add("MaskableGraphic",QA);Q.add("MeshCollider",GA);Q.add("MeshRenderer",yb);Q.add("MinMaxCurve",ot);Q.add("MinMaxGradient",cr);Q.add("NestedGltf",tx);Q.add("Networking",Uu);Q.add("NoiseModule",di);Q.add("ObjectRaycaster",vu);Q.add("OffsetConstraint",Vu);Q.add("OpenURL",wp);Q.add("OrbitControls",ah);Q.add("Outline",pp);Q.add("Padding",ch);Q.add("ParticleBurst",Fm);Q.add("ParticleSubEmitter",nx);Q.add("ParticleSystem",ln);Q.add("ParticleSystemRenderer",Xc);Q.add("PixelationEffect",ZA);Q.add("PlayableDirector",ou);Q.add("PlayAnimationOnClick",hh);Q.add("PlayAudioOnClick",yp);Q.add("PlayerColor",yu);Q.add("PlayerState",af);Q.add("PlayerSync",FM);Q.add("PointerEventData",$h);Q.add("PostProcessingHandler",sx);Q.add("PreliminaryAction",_p);Q.add("PreliminaryTrigger",VA);Q.add("PresentationMode",Nre);Q.add("RawImage",Hb);Q.add("Raycaster",lp);Q.add("Rect",sM);Q.add("RectTransform",xs);Q.add("ReflectionProbe",ip);Q.add("RegisteredAnimationInfo",_b);Q.add("RemoteSkybox",ju);Q.add("Renderer",Ki);Q.add("RendererLightmap",Sm);Q.add("RGBAColor",xi);Q.add("Rigidbody",Gi);Q.add("RotationBySpeedModule",Br);Q.add("RotationOverLifetimeModule",mo);Q.add("SceneSwitcher",Dr);Q.add("ScreenCapture",$A);Q.add("ScreenSpaceAmbientOcclusion",Yc);Q.add("SetActiveOnClick",Ap);Q.add("ShadowCatcher",tv);Q.add("ShapeModule",hn);Q.add("SignalAsset",kA);Q.add("SignalReceiver",up);Q.add("SignalReceiverEvent",hp);Q.add("SignalTrackHandler",Lm);Q.add("Size",nM);Q.add("SizeBySpeedModule",js);Q.add("SizeOverLifetimeModule",fh);Q.add("SkinnedMeshRenderer",dI);Q.add("SmoothFollow",mh);Q.add("SpatialHtml",RM);Q.add("SpatialTrigger",nv);Q.add("SpatialTriggerReceiver",Ia);Q.add("SpectatorCamera",ax);Q.add("SphereCollider",NA);Q.add("Sprite",Jc);Q.add("SpriteData",Ip);Q.add("SpriteRenderer",Wu);Q.add("SpriteSheet",sv);Q.add("SubEmitterSystem",Gm);Q.add("SyncedCamera",cx);Q.add("SyncedRoom",Ah);Q.add("SyncedTransform",jl);Q.add("TapGestureTrigger",uM);Q.add("TeleportTarget",kb);Q.add("TestRunner",BM);Q.add("TestSimulateUserData",DM);Q.add("Text",Ws);Q.add("TextBuilder",Wb);Q.add("TextExtension",qb);Q.add("TextureSheetAnimationModule",hs);Q.add("TiltShiftEffect",Va);Q.add("ToneMapping",ov);Q.add("TrailModule",Fi);Q.add("TransformData",bb);Q.add("TransformGizmo",qu);Q.add("TriggerBuilder",rr);Q.add("TriggerModel",Mc);Q.add("UIRaycastUtils",Ef);Q.add("UIRootComponent",DA);Q.add("UsageMarker",sp);Q.add("USDZExporter",vo);Q.add("USDZText",Pl);Q.add("VariantAction",gI);Q.add("VelocityOverLifetimeModule",Qi);Q.add("VerticalLayoutGroup",oM);Q.add("VideoPlayer",us);Q.add("Vignette",Xu);Q.add("VisibilityAction",jA);Q.add("Voip",Gc);Q.add("Volume",hx);Q.add("VolumeParameter",Ft);Q.add("VolumeProfile",LA);Q.add("VRUserState",Oo);Q.add("WebAR",ru);Q.add("WebARCameraBackground",ux);Q.add("WebARSessionRoot",rh);Q.add("WebXR",wt);Q.add("WebXRAvatar",ba);Q.add("WebXRController",Yi);Q.add("WebXRImageTracking",dx);Q.add("WebXRImageTrackingModel",Kc);Q.add("WebXRPlaneTracking",fx);Q.add("WebXRSync",Om);Q.add("WebXRTrackedImage",vc);Q.add("XRFlag",ns);Q.add("XRGrabModel",px);Q.add("XRGrabRendering",OM);Q.add("XRRig",Ob);Q.add("XRState",to);const QN=ys,zre=ce("debugtypestore");zre&&console.log(Q);function Gre(n,e){const i=$2(n,e);return i!==void 0?i:null}const Qre=new bj,pC=Symbol("deserialize-queue");async function Hre(n,e,t,i=null,s){if(!t)return;let r=i;typeof r=="number"&&(r=new Us(i));const o=e.indexOf("?");e=o===-1?e:e.substring(0,o);const a=new Z2(t.scene);a.gltfId=e,a.context=n,a.gltf=t,a.nodeToObject=s==null?void 0:s.nodeToObjectMap,a.implementationInformation=Qre;let c=n[pC];if(c||(c=n[pC]=[]),t.scenes)for(const l of t.scenes)await fE(a,l,c);if(t.children)for(const l of t.children)await fE(a,l,c);n.new_scripts_pre_setup_callbacks.push(()=>{const l=n[pC];if(l){for(const h of l)Vre(h,a);l.length=0}if(r){const h={};dE(t,r,h);for(const d of t.scenes)dE(d,r,h)}})}function dE(n,e,t){if(e===null||!n)return;const i=n.guid;if(n.guid=e.generateUUID(),i&&i!=="invalid"&&(t[i]=n.guid),n&&n.userData&&n.userData.components)for(const s of n.userData.components){if(s===null)continue;const r=s.guid;s.guid=e.generateUUID(),r&&r!=="invalid"&&(t[r]=s.guid),s.resolveGuids&&s.resolveGuids(t)}if(n.children)for(const s of n.children)dE(s,e,t)}const ng=[];async function fE(n,e,t,i){if(!e)return;const s=e.userData;if(s){const r=s.builtin_components;if(r&&r.length>0)for(const o of r)try{if(o===null)continue;const a=Q.get(o.name);if(a!=null){const c=new a;c.sourceId=n.gltfId,pu(c,o,n.implementationInformation),"guid"in o&&(c[wg]=o.guid),$l(e,c,!1),t.push({instance:c,compData:o,obj:e}),c.isCamera&&n.context&&n.context.mainCamera===null&&c.tag==="MainCamera"&&n.context.setCurrentCamera(c)}else QN&&console.debug("unknown component: "+o.name),ng.includes(o.name)||ng.push(o.name)}catch(a){console.error(o.name+" - "+a.message,a)}if(ng.length>0){const o=ng.join(", ");console.warn("unknown components: "+o),ng.length=0,zs()&&ss(`<strong>Unknown components in scene</strong>:
|
|
5053
5053
|
|
|
5054
5054
|
${o}
|
|
5055
5055
|
|
|
5056
5056
|
This could mean you forgot to add a npmdef to your ExportInfo
|
|
5057
|
-
<a href="https://engine.needle.tools/docs/project_structure.html#creating-and-installing-a-npmdef" target="_blank">documentation</a>`,xa.Warn)}}if(e.children)for(const r of e.children)await fE(n,r,t)}function Vre(n,e){const{instance:t,compData:i,obj:s}=n;e.object=s,e.target=t,U0(t,i,e),QN&&console.debug("add "+i.name,i,t)}class UM{createBuiltinComponents(e,t,i,s,r){return Hre(e,t,i,s,r)}writeBuiltinComponentData(e,t){return Gre(e,t)}parseSync(e,t,i,s){return jN(e,t,i,s)}loadSync(e,t,i,s,r){return WN(e,t,i,s,r)}}H1(UM);const jre=ce("printGltf");var HN=(n=>(n[n.BeforeLoad=0]="BeforeLoad",n[n.AfterLoaded=1]="AfterLoaded",n[n.FinishedSetup=10]="FinishedSetup",n))(HN||{});class lu{constructor(e,t,i,s){u(this,"context");u(this,"loader");u(this,"path");u(this,"gltf");this.context=e,this.path=t,this.loader=i,this.gltf=s}}const Ul={};function Wre(n,e){Ul[n]=Ul[n]||[],Ul[n].push(e)}function qre(n,e){if(Ul[n]){const t=Ul[n].indexOf(e);t>=0&&Ul[n].splice(t,1)}}function cf(n,e){if(Ul[n])for(const t of Ul[n])t(e)}async function VN(n,e,t,i,s){jre&&console.warn("glTF",e,t),await zo().createBuiltinComponents(n,e,t,i,s)}function NM(n,e){const t=new qf;return m3(t,e,n),t}function jN(n,e,t,i){typeof t!="string"&&console.warn("Parse gltf binary without path, this might lead to errors in resolving extensions. Please provide the source path of the gltf/glb file",t,typeof t);const s=NM(t,n),r=hI(s);return new Promise((o,a)=>{try{_A(s,n),cf(0,new lu(n,t,s)),s.parse(e,t,async c=>{cf(1,new lu(n,t,s,c)),await VN(n,t,c,i,r),cf(10,new lu(n,t,s,c)),NL(c.scene,n),o(c)},c=>{console.error("failed loading "+t,c),o(void 0)})}catch(c){console.error(c),a(c)}})}function WN(n,e,t,i,s){const r=NM(e,n),o=hI(r);return new Promise((a,c)=>{try{_A(r,n),cf(0,new lu(n,e,r)),r.load(e,async l=>{cf(1,new lu(n,e,r,l)),await VN(n,t,l,i,o),cf(10,new lu(n,e,r,l)),NL(l.scene,n),a(l)},l=>{s==null||s.call(r,l)},l=>{console.error("failed loading "+e,l),a(void 0)})}catch(l){console.error(l),c(l)}})}function Xre(n,e,t,i=!1){e&&e.animations&&e.animations.length>0&&t.push(()=>{qN(e,i)})}function qN(n,e=!1){if(!n||!n.animations||!n.scene||!e&&!Hf(n.scene,Uo))return;for(let i=0;i<n.animations.length;i++){const s=n.animations[i];if(!(!s.tracks||s.tracks.length<=0))for(const r in s.tracks){const o=s.tracks[r],a=o.__objectName??o.name.substring(0,o.name.indexOf(".")),c=n.scene.getObjectByName(a);if(!c)continue;let l=t(c);if(!l)if(e)l=$l(n.scene,new Uo);else{console.warn("Failed finding animator for",o.name,a);continue}const h=l.animations=l.animations||[];s.name_animator=l.name,h.indexOf(s)<0&&h.push(s)}}function t(i){var r;if(!i)return;const s=(r=i.userData)==null?void 0:r.components;if(s&&s.length>0)for(let o=0;o<s.length;o++){const a=s[o];if(a instanceof ar||a instanceof Uo)return i}return t(i.parent)}}function XN(n,e,t=!0){if(e.userData&&e.userData.name===n)return e;if(e.children&&e.children.length>0)for(let i=0;i<e.children.length;i++){const s=e.children[i],r=XN(n,s,t);if(r)return r}}function Yre(n,e=null){const t=e??_t.Current.scripts;for(const i in t){const s=t[i];if(s&&s.guid===n)return s}return null}H1(UM);const Nr=ce("debugwebcomponent"),FD="needle-engine",YN="vr",JN="desktop",Jre=[zh,YN,JN],sg="ar-session-active",rg="desktop-session-active";class zM extends HTMLElement{constructor(){super();u(this,"gameObject",$);u(this,"GameObject",$);u(this,"_context");u(this,"_overlay_ar");u(this,"_loadingProgress01",0);u(this,"_loadingView");u(this,"_previousSrc",null);u(this,"_isCurrentlySettingsSourceAttribute",!1);u(this,"onReady",()=>{var t;return(t=this._loadingView)==null?void 0:t.onLoadingFinished()});this._overlay_ar=new Vq,this._context=new _t({domElement:this}),this.addEventListener("ready",this.onReady)}get loadingProgress01(){return this._loadingProgress01}get loadingFinished(){return this.loadingProgress01>.999}get cameraControls(){const t=this.getAttribute("camera-controls");return!(t===null||t==="False"||t==="false"||t==="0")}getContext(){return new Promise((t,i)=>{if(this._context&&this.loadingFinished)t(this._context);else{const s=()=>{this.removeEventListener("loadfinished",s),this._context&&this.loadingFinished&&t(this._context)};this.addEventListener("loadfinished",s)}})}get context(){return this._context}get Context(){return this._context}async connectedCallback(){Nr&&(console.log("<needle-engine> connected"),console.dir(this)),this.onSetupDesktop();const t=this.getAttribute("src")??globalThis["needle:codegen_files"];t&&t.length>0&&await this.onLoad(t,!0),this.onSetupDesktop()}disconnectedCallback(){var t;(t=this._context)==null||t.onDestroy()}static get observedAttributes(){return["hash","src","camera-controls","loadstart","progress","loadfinished","dracoDecoderPath","dracoDecoderType","ktx2DecoderPath"]}attributeChangedCallback(t,i,s){switch(t){case"src":Nr&&console.log("src changed to type:",typeof s,', from "',i,'" to "',s),this.onLoad(s,!1);break;case"hash":this._context&&(this._context.hash=s);break;case"loadstart":case"progress":case"loadfinished":typeof s=="string"&&s.length>0&&(Nr&&console.log(t+" attribute changed",s),this.registerEventFromAttribute(t,s));break;case"dracoDecoderPath":Nr&&console.log("dracoDecoderPath",s),OR(s);break;case"dracoDecoderType":s==="wasm"||s==="js"?(Nr&&console.log("dracoDecoderType",s),LR(s)):console.error("Invalid dracoDecoderType",s,"expected js or wasm");break;case"ktx2DecoderPath":Nr&&console.log("ktx2DecoderPath",s),FR(s);break}}async onLoad(t,i){var h,d;if(this._isCurrentlySettingsSourceAttribute||t===this._previousSrc)return;if(!t||!t.length){console.error("Needle Engine: No source specified",t);return}if(!this._context){console.error("Needle Engine: Context not initialized");return}this._previousSrc=t,this._isCurrentlySettingsSourceAttribute=!0,this.setAttribute("src",t==null?void 0:t.toString()),this._isCurrentlySettingsSourceAttribute=!1;const s=this.getAttribute("alias");this.classList.add("loading"),Nr&&console.log("Needle Engine: Begin loading",s??"");const r=!0,o=this.dispatchEvent(new CustomEvent("loadstart",{detail:{context:this._context,alias:s},cancelable:r}));!this._loadingView&&o&&(this._loadingView=new Lg(this)),o&&((h=this._loadingView)==null||h.onLoadingBegin("begin load")),this.onBeforeBeginLoading(),Nr&&console.log(t);let a;Array.isArray(t)?a=t:t.startsWith("[")&&t.endsWith("]")?a=JSON.parse(t):t.includes(",")?a=t.split(","):a=[t];let c=null;if((a==null?void 0:a.length)>0&&(c=async f=>{let p=0;f.hash&&(p=Number.parseInt(f.hash)??0);const g=zo();for(let m=0;m<a.length;m++){const A=a[m];if(!A.includes(".glb")&&!A.includes(".gltf")){const S=`Needle Engine: found suspicious src "${A}"`;console.warn(S),zs()&&Vo(S)}const v=Kre(A),b={name:v,progress:null,index:m,count:a.length},y={detail:{context:f,name:v,progress:b.progress,index:m,count:a.length,totalProgress01:this._loadingProgress01}},_=await g.loadSync(f,A,A,p,S=>{var T;b.progress=S,this._loadingProgress01=j1(b),o&&((T=this._loadingView)==null||T.onLoadingUpdate(b)),y.detail.progress=S,y.detail.totalProgress01=this._loadingProgress01,this.dispatchEvent(new CustomEvent("progress",y))}),C=_==null?void 0:_.scene;C&&$.add(C,f.scene,f)}i||ym(f)}),!c){console.error("Needle Engine: No files to load",t);return}const l=this.getAttribute("hash");l!=null&&(this._context.hash=l),this._context.alias=s,this._context.isCreated?await c(this._context):await this._context.onCreate(c),this._loadingProgress01=1,o&&((d=this._loadingView)==null||d.onLoadingUpdate(1,"creating scene")),this.classList.remove("loading"),this.classList.add("loading-finished"),Nr&&console.log("Needle Engine: finished loading",s??""),this.dispatchEvent(new CustomEvent("loadfinished",{detail:{context:this._context,src:s??t}}))}registerEventFromAttribute(t,i){if(typeof i=="string"&&i.length>0){const s=(0,eval)(i);typeof s=="function"&&this.addEventListener(t,r=>s==null?void 0:s.call(globalThis,this._context,r))}}getAROverlayContainer(){return this._overlay_ar.findOrCreateARContainer(this)}getVROverlayContainer(){for(let t=0;t<this.children.length;t++){const i=this.children[t];if(i.classList.contains("vr"))return i}return null}onEnterAR(t,i){var s;this.onSetupAR(),this._overlay_ar.onBegin(this._context,i,t),this.dispatchEvent(new CustomEvent("enter-ar",{detail:{session:t,context:this._context,htmlContainer:(s=this._overlay_ar)==null?void 0:s.ARContainer}}))}onExitAR(t){var i;this._overlay_ar.onEnd(this._context),this.onSetupDesktop(),this.dispatchEvent(new CustomEvent("exit-ar",{detail:{session:t,context:this._context,htmlContainer:(i=this._overlay_ar)==null?void 0:i.ARContainer}}))}onEnterVR(t){this.onSetupVR(),this.dispatchEvent(new CustomEvent("enter-vr",{detail:{session:t,context:this._context}}))}onExitVR(t){this.onSetupDesktop(),this.dispatchEvent(new CustomEvent("exit-vr",{detail:{session:t,context:this._context}}))}onSetupAR(){this.classList.add(sg),this.classList.remove(rg);const t=this.getAROverlayContainer();t&&(t.classList.add(sg),t.classList.remove(rg)),this.foreachHtmlElement(i=>this.setupElementsForMode(i,zh))}onSetupVR(){this.classList.remove(sg),this.classList.remove(rg),this.foreachHtmlElement(t=>this.setupElementsForMode(t,YN))}onSetupDesktop(){this.classList.remove(sg),this.classList.add(rg);const t=this.getAROverlayContainer();t&&(t.classList.remove(sg),t.classList.add(rg)),this.foreachHtmlElement(i=>this.setupElementsForMode(i,JN))}setupElementsForMode(t,i,s=null){var o;if(t===((o=this._context)==null?void 0:o.renderer.domElement)||t.id==="VRButton"||t.id==="ARButton")return;if(t.style.position="absolute",t.classList.contains(i))t.style.visibility="visible",t.style.display==="none"&&(t.style.display="block");else for(const a of Jre)t.classList.contains(a)&&(t.style.visibility="hidden",t.style.display="none")}foreachHtmlElement(t){for(let i=0;i<this.children.length;i++){const s=this.children[i];s.style&&t(s)}}onBeforeBeginLoading(){const t=this.getAttribute("dracoDecoderPath");t&&(Nr&&console.log("using custom draco decoder path",t),OR(t));const i=this.getAttribute("dracoDecoderType");i&&(Nr&&console.log("using custom draco decoder type",i),LR(i));const s=this.getAttribute("ktx2DecoderPath");s&&(Nr&&console.log("using custom ktx2 decoder path",s),FR(s))}}window.customElements.get(FD)||window.customElements.define(FD,zM);function Kre(n){const e=n.split("/");let t=e[e.length-1],i=t.indexOf("?");return i>0&&(t=t.substring(0,i)),decodeURIComponent(t)}const Zre=Object.freeze(Object.defineProperty({__proto__:null,NeedleEngineHTMLElement:zM},Symbol.toStringTag,{value:"Module"}));mn.registerCallback(xr.MissingCamera,n=>{const e=n.context.scene,t="unknown",i=new Ie;e.add(i);const s=new ki,r=$l(i,s,!0);return r.sourceId=t,r.clearFlags=2,r.backgroundColor=new xi(.5,.5,.5,1),i.position.x=-2,i.position.y=2,i.position.z=2,r});mn.registerCallback(xr.ContextCreated,n=>{if(!n.context.mainCamera)return;const e=n.context.domElement;if((e==null?void 0:e.cameraControls)===!0){const t=yee(n.context.mainCamera);if((t==null?void 0:t.isCameraController)===!0)return;const i=n.context.mainCameraComponent,s=i==null?void 0:i.gameObject;if(s){const r=$l(s,new ah,!1);r.sourceId="unknown"}else console.warn("Missing camera object, can not add orbit controls")}});const pE=ce("debughotreload");let Qm=!1;const Wg=new Map;function $re(){return Qm}function eoe(n){var i;if(Qm)return;const t=n.constructor.name;Wg.has(t)?(i=Wg.get(t))==null||i.push(n):Wg.set(t,[n])}function toe(n){if(Qm)return;const t=n.constructor.name,i=Wg.get(t);if(!i)return;const s=i.indexOf(n);s!==-1&&i.splice(s,1)}let UD=!1;function ioe(){if(pE||UD)return;UD=!0;const n=console.error;console.error=(...e)=>{if(e.length){const t=e[0];if(typeof t=="string"&&t.includes("[hmr] Failed to reload ")){console.log("[Needle Engine] Hot reloading failed"),window.location.reload();return}}n.apply(console,e)}}function noe(n){pE&&console.log("Hot Reload - apply changes"),ioe();for(const e of Object.keys(n))try{Qm=!0;const t=Q.get(e);if(!t)continue;const i=n[e],s=Wg.get(i.name);let r="[Needle Engine] Updating type: "+e,o=(s==null?void 0:s.length)??-1;o>0?r+=" x"+o:r+=" - no instances",console.log(r);const a=Object.getOwnPropertyNames(t.prototype),c=Object.getOwnPropertyDescriptors(i.prototype);for(const l in c)c[l].writable&&(t.prototype[l]=n[e].prototype[l]);for(const l of a)c[l]||delete t.prototype[l];if(s){const l=new i,h=Object.getOwnPropertyDescriptors(l);for(const d of s){const f=d,p=f.isComponent===!0,g=p?f.activeAndEnabled:!0,m=p?f.context:void 0;try{if(p&&pc(f,m),p&&g&&(f.enabled=!1),d.onBeforeHotReloadFields&&d.onBeforeHotReloadFields()===!1)continue;for(const A in h)if(h[A].writable){if(d[A]===void 0)d[A]=l[A];else if(typeof d[A]=="function"&&!d[A].prototype){const b=d[A],y=b.name,_="bound ";if(y===_)continue;const C=b.name.substring(_.length),S=i.prototype[C];S&&(d[A]=S.bind(d))}}d.onAfterHotReloadFields&&d.onAfterHotReloadFields()}finally{p&&O1(f,m),p&&g&&(f.enabled=!0)}}}}catch(t){if(pE)console.error(t);else return!1}finally{Qm=!1,yc(xa.Log,"Script changes applied (HMR)")}return!0}const soe=Symbol("object"),ND=new Ma(()=>new E,20);class KN{constructor(e,t,i,s,r){u(this,"_point");u(this,"_normal");u(this,"distance");u(this,"impulse");u(this,"friction");this._point=e,this.distance=t,this._normal=i,this.impulse=s,this.friction=r}get point(){return ND.get().set(this._point.x,this._point.y,this._point.z)}get normal(){return ND.get().set(this._normal.x,this._normal.y,this._normal.z)}}class ZN{constructor(e,t,i){u(this,"contacts");u(this,"me");u(this,"_collider");u(this,"_gameObject");this.me=e,this._collider=t,this._gameObject=t.gameObject,this.contacts=i}get collider(){return this._collider}get gameObject(){return this._gameObject}get rigidBody(){var e;return(e=this.collider)==null?void 0:e.attachedRigidbody}}class $N{constructor(e,t){u(this,"object");u(this,"collider");this.object=e,this.collider=t}}let ze;const Hm=new Array(32).fill(void 0);Hm.push(void 0,null,!0,!1);let zD;Hm.length;function GD(){return zD.byteLength,zD}const roe=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});function mt(n,e){if(!(n instanceof e))throw new Error(`expected instance of ${e.name}`);return n.ptr}roe.decode();let QD,HD,qg=32;function VD(n){if(qg==1)throw new Error("out of js stack");return Hm[--qg]=n,qg}function ooe(){return QD.byteLength,QD}function aoe(){return HD.byteLength,HD}let gr=0;function Ph(n,e){const t=e(4*n.length);return ooe().set(n,t/4),gr=n.length,t}function ky(n,e){const t=e(4*n.length);return aoe().set(n,t/4),gr=n.length,t}class m_{static __wrap(e){const t=Object.create(m_.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();ze.__wbg_raweventqueue_free(e)}constructor(e){const t=ze.raweventqueue_new(e);return m_.__wrap(t)}drainCollisionEvents(e){try{ze.raweventqueue_drainCollisionEvents(this.ptr,VD(e))}finally{Hm[qg++]=void 0}}drainContactForceEvents(e){try{ze.raweventqueue_drainContactForceEvents(this.ptr,VD(e))}finally{Hm[qg++]=void 0}}clear(){ze.raweventqueue_clear(this.ptr)}}class Aa{static __wrap(e){const t=Object.create(Aa.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();ze.__wbg_rawgenericjoint_free(e)}static spherical(e,t){mt(e,ut),mt(t,ut);const i=ze.rawgenericjoint_spherical(e.ptr,t.ptr);return Aa.__wrap(i)}static prismatic(e,t,i,s,r,o){mt(e,ut),mt(t,ut),mt(i,ut);const a=ze.rawgenericjoint_prismatic(e.ptr,t.ptr,i.ptr,s,r,o);return a===0?void 0:Aa.__wrap(a)}static fixed(e,t,i,s){mt(e,ut),mt(t,Qn),mt(i,ut),mt(s,Qn);const r=ze.rawgenericjoint_fixed(e.ptr,t.ptr,i.ptr,s.ptr);return Aa.__wrap(r)}static revolute(e,t,i){mt(e,ut),mt(t,ut),mt(i,ut);const s=ze.rawgenericjoint_revolute(e.ptr,t.ptr,i.ptr);return s===0?void 0:Aa.__wrap(s)}}class GM{static __wrap(e){const t=Object.create(GM.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();ze.__wbg_rawpointprojection_free(e)}point(){const e=ze.rawpointprojection_point(this.ptr);return ut.__wrap(e)}isInside(){return ze.rawpointprojection_isInside(this.ptr)!==0}}class QM{static __wrap(e){const t=Object.create(QM.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();ze.__wbg_rawrayintersection_free(e)}normal(){const e=ze.rawrayintersection_normal(this.ptr);return ut.__wrap(e)}toi(){return ze.rawintegrationparameters_dt(this.ptr)}featureType(){return ze.rawrayintersection_featureType(this.ptr)>>>0}featureId(){try{const i=ze.__wbindgen_add_to_stack_pointer(-16);ze.rawrayintersection_featureId(i,this.ptr);var e=GD()[i/4+0],t=GD()[i/4+1];return e===0?void 0:t>>>0}finally{ze.__wbindgen_add_to_stack_pointer(16)}}}class Qn{static __wrap(e){const t=Object.create(Qn.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();ze.__wbg_rawrotation_free(e)}constructor(e,t,i,s){const r=ze.rawrotation_new(e,t,i,s);return Qn.__wrap(r)}static identity(){const e=ze.rawrotation_identity();return Qn.__wrap(e)}get x(){return ze.rawintegrationparameters_dt(this.ptr)}get y(){return ze.rawrotation_y(this.ptr)}get z(){return ze.rawintegrationparameters_erp(this.ptr)}get w(){return ze.rawrotation_w(this.ptr)}}class Ut{static __wrap(e){const t=Object.create(Ut.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();ze.__wbg_rawshape_free(e)}static cuboid(e,t,i){const s=ze.rawshape_cuboid(e,t,i);return Ut.__wrap(s)}static roundCuboid(e,t,i,s){const r=ze.rawshape_roundCuboid(e,t,i,s);return Ut.__wrap(r)}static ball(e){const t=ze.rawshape_ball(e);return Ut.__wrap(t)}static capsule(e,t){const i=ze.rawshape_capsule(e,t);return Ut.__wrap(i)}static cylinder(e,t){const i=ze.rawshape_cylinder(e,t);return Ut.__wrap(i)}static roundCylinder(e,t,i){const s=ze.rawshape_roundCylinder(e,t,i);return Ut.__wrap(s)}static cone(e,t){const i=ze.rawshape_cone(e,t);return Ut.__wrap(i)}static roundCone(e,t,i){const s=ze.rawshape_roundCone(e,t,i);return Ut.__wrap(s)}static polyline(e,t){const i=Ph(e,ze.__wbindgen_malloc),s=gr,r=ky(t,ze.__wbindgen_malloc),o=gr,a=ze.rawshape_polyline(i,s,r,o);return Ut.__wrap(a)}static trimesh(e,t){const i=Ph(e,ze.__wbindgen_malloc),s=gr,r=ky(t,ze.__wbindgen_malloc),o=gr,a=ze.rawshape_trimesh(i,s,r,o);return Ut.__wrap(a)}static heightfield(e,t,i,s){const r=Ph(i,ze.__wbindgen_malloc),o=gr;mt(s,ut);const a=ze.rawshape_heightfield(e,t,r,o,s.ptr);return Ut.__wrap(a)}static segment(e,t){mt(e,ut),mt(t,ut);const i=ze.rawshape_segment(e.ptr,t.ptr);return Ut.__wrap(i)}static triangle(e,t,i){mt(e,ut),mt(t,ut),mt(i,ut);const s=ze.rawshape_triangle(e.ptr,t.ptr,i.ptr);return Ut.__wrap(s)}static roundTriangle(e,t,i,s){mt(e,ut),mt(t,ut),mt(i,ut);const r=ze.rawshape_roundTriangle(e.ptr,t.ptr,i.ptr,s);return Ut.__wrap(r)}static convexHull(e){const t=Ph(e,ze.__wbindgen_malloc),i=gr,s=ze.rawshape_convexHull(t,i);return s===0?void 0:Ut.__wrap(s)}static roundConvexHull(e,t){const i=Ph(e,ze.__wbindgen_malloc),s=gr,r=ze.rawshape_roundConvexHull(i,s,t);return r===0?void 0:Ut.__wrap(r)}static convexMesh(e,t){const i=Ph(e,ze.__wbindgen_malloc),s=gr,r=ky(t,ze.__wbindgen_malloc),o=gr,a=ze.rawshape_convexMesh(i,s,r,o);return a===0?void 0:Ut.__wrap(a)}static roundConvexMesh(e,t,i){const s=Ph(e,ze.__wbindgen_malloc),r=gr,o=ky(t,ze.__wbindgen_malloc),a=gr,c=ze.rawshape_roundConvexMesh(s,r,o,a,i);return c===0?void 0:Ut.__wrap(c)}castShape(e,t,i,s,r,o,a,c){mt(e,ut),mt(t,Qn),mt(i,ut),mt(s,Ut),mt(r,ut),mt(o,Qn),mt(a,ut);const l=ze.rawshape_castShape(this.ptr,e.ptr,t.ptr,i.ptr,s.ptr,r.ptr,o.ptr,a.ptr,c);return l===0?void 0:VM.__wrap(l)}intersectsShape(e,t,i,s,r){return mt(e,ut),mt(t,Qn),mt(i,Ut),mt(s,ut),mt(r,Qn),ze.rawshape_intersectsShape(this.ptr,e.ptr,t.ptr,i.ptr,s.ptr,r.ptr)!==0}contactShape(e,t,i,s,r,o){mt(e,ut),mt(t,Qn),mt(i,Ut),mt(s,ut),mt(r,Qn);const a=ze.rawshape_contactShape(this.ptr,e.ptr,t.ptr,i.ptr,s.ptr,r.ptr,o);return a===0?void 0:HM.__wrap(a)}containsPoint(e,t,i){return mt(e,ut),mt(t,Qn),mt(i,ut),ze.rawshape_containsPoint(this.ptr,e.ptr,t.ptr,i.ptr)!==0}projectPoint(e,t,i,s){mt(e,ut),mt(t,Qn),mt(i,ut);const r=ze.rawshape_projectPoint(this.ptr,e.ptr,t.ptr,i.ptr,s);return GM.__wrap(r)}intersectsRay(e,t,i,s,r){return mt(e,ut),mt(t,Qn),mt(i,ut),mt(s,ut),ze.rawshape_intersectsRay(this.ptr,e.ptr,t.ptr,i.ptr,s.ptr,r)!==0}castRay(e,t,i,s,r,o){return mt(e,ut),mt(t,Qn),mt(i,ut),mt(s,ut),ze.rawshape_castRay(this.ptr,e.ptr,t.ptr,i.ptr,s.ptr,r,o)}castRayAndGetNormal(e,t,i,s,r,o){mt(e,ut),mt(t,Qn),mt(i,ut),mt(s,ut);const a=ze.rawshape_castRayAndGetNormal(this.ptr,e.ptr,t.ptr,i.ptr,s.ptr,r,o);return a===0?void 0:QM.__wrap(a)}}class HM{static __wrap(e){const t=Object.create(HM.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();ze.__wbg_rawshapecontact_free(e)}distance(){return ze.rawshapecontact_distance(this.ptr)}point1(){const e=ze.rawpointprojection_point(this.ptr);return ut.__wrap(e)}point2(){const e=ze.rawshapecontact_point2(this.ptr);return ut.__wrap(e)}normal1(){const e=ze.rawshapecontact_normal1(this.ptr);return ut.__wrap(e)}normal2(){const e=ze.rawshapecontact_normal2(this.ptr);return ut.__wrap(e)}}class VM{static __wrap(e){const t=Object.create(VM.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();ze.__wbg_rawshapetoi_free(e)}toi(){return ze.rawintegrationparameters_dt(this.ptr)}witness1(){const e=ze.rawrayintersection_normal(this.ptr);return ut.__wrap(e)}witness2(){const e=ze.rawshapetoi_witness2(this.ptr);return ut.__wrap(e)}normal1(){const e=ze.rawshapetoi_normal1(this.ptr);return ut.__wrap(e)}normal2(){const e=ze.rawshapetoi_normal2(this.ptr);return ut.__wrap(e)}}class ut{static __wrap(e){const t=Object.create(ut.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();ze.__wbg_rawvector_free(e)}static zero(){const e=ze.rawvector_zero();return ut.__wrap(e)}constructor(e,t,i){const s=ze.rawvector_new(e,t,i);return ut.__wrap(s)}get x(){return ze.rawintegrationparameters_dt(this.ptr)}set x(e){ze.rawintegrationparameters_set_dt(this.ptr,e)}get y(){return ze.rawrotation_y(this.ptr)}set y(e){ze.rawvector_set_y(this.ptr,e)}get z(){return ze.rawintegrationparameters_erp(this.ptr)}set z(e){ze.rawintegrationparameters_set_erp(this.ptr,e)}xyz(){const e=ze.rawvector_xyz(this.ptr);return ut.__wrap(e)}yxz(){const e=ze.rawvector_yxz(this.ptr);return ut.__wrap(e)}zxy(){const e=ze.rawvector_zxy(this.ptr);return ut.__wrap(e)}xzy(){const e=ze.rawvector_xzy(this.ptr);return ut.__wrap(e)}yzx(){const e=ze.rawvector_yzx(this.ptr);return ut.__wrap(e)}zyx(){const e=ze.rawvector_zyx(this.ptr);return ut.__wrap(e)}}class coe{constructor(e,t,i){this.x=e,this.y=t,this.z=i}}class Qe{static new(e,t,i){return new coe(e,t,i)}static intoRaw(e){return new ut(e.x,e.y,e.z)}static zeros(){return Qe.new(0,0,0)}static fromRaw(e){if(!e)return null;let t=Qe.new(e.x,e.y,e.z);return e.free(),t}static copy(e,t){e.x=t.x,e.y=t.y,e.z=t.z}}class jD{constructor(e,t,i,s){this.x=e,this.y=t,this.z=i,this.w=s}}class qi{static identity(){return new jD(0,0,0,1)}static fromRaw(e){if(!e)return null;let t=new jD(e.x,e.y,e.z,e.w);return e.free(),t}static intoRaw(e){return new Qn(e.x,e.y,e.z,e.w)}static copy(e,t){e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w}}var Xg,aa,WD,Yr,gE,ei,A_,jd,mE,AE,qD,XD;(function(n){n[n.Dynamic=0]="Dynamic",n[n.Fixed=1]="Fixed",n[n.KinematicPositionBased=2]="KinematicPositionBased",n[n.KinematicVelocityBased=3]="KinematicVelocityBased"})(Xg||(Xg={}));(function(n){n[n.Revolute=0]="Revolute",n[n.Fixed=1]="Fixed",n[n.Prismatic=2]="Prismatic",n[n.Spherical=3]="Spherical"})(aa||(aa={})),function(n){n[n.AccelerationBased=0]="AccelerationBased",n[n.ForceBased=1]="ForceBased"}(WD||(WD={}));class Wd{constructor(){}static fixed(e,t,i,s){let r=new Wd;return r.anchor1=e,r.anchor2=i,r.frame1=t,r.frame2=s,r.jointType=aa.Fixed,r}static spherical(e,t){let i=new Wd;return i.anchor1=e,i.anchor2=t,i.jointType=aa.Spherical,i}static prismatic(e,t,i){let s=new Wd;return s.anchor1=e,s.anchor2=t,s.axis=i,s.jointType=aa.Prismatic,s}static revolute(e,t,i){let s=new Wd;return s.anchor1=e,s.anchor2=t,s.axis=i,s.jointType=aa.Revolute,s}intoRaw(){let e,t,i=Qe.intoRaw(this.anchor1),s=Qe.intoRaw(this.anchor2),r=!1,o=0,a=0;switch(this.jointType){case aa.Fixed:let c=qi.intoRaw(this.frame1),l=qi.intoRaw(this.frame2);t=Aa.fixed(i,c,s,l),c.free(),l.free();break;case aa.Prismatic:e=Qe.intoRaw(this.axis),this.limitsEnabled&&(r=!0,o=this.limits[0],a=this.limits[1]),t=Aa.prismatic(i,s,e,r,o,a),e.free();break;case aa.Spherical:t=Aa.spherical(i,s);break;case aa.Revolute:e=Qe.intoRaw(this.axis),t=Aa.revolute(i,s,e),e.free()}return i.free(),s.free(),t}}(function(n){n[n.Average=0]="Average",n[n.Min=1]="Min",n[n.Multiply=2]="Multiply",n[n.Max=3]="Max"})(Yr||(Yr={}));class Vm{constructor(e,t,i,s,r){this.distance=e,this.point1=t,this.point2=i,this.normal1=s,this.normal2=r}static fromRaw(e){if(!e)return null;const t=new Vm(e.distance(),Qe.fromRaw(e.point1()),Qe.fromRaw(e.point2()),Qe.fromRaw(e.normal1()),Qe.fromRaw(e.normal2()));return e.free(),t}}(function(n){n[n.Vertex=0]="Vertex",n[n.Edge=1]="Edge",n[n.Face=2]="Face",n[n.Unknown=3]="Unknown"})(gE||(gE={}));class gx{constructor(e,t){this.point=e,this.isInside=t}static fromRaw(e){if(!e)return null;const t=new gx(Qe.fromRaw(e.point()),e.isInside());return e.free(),t}}class loe{constructor(e,t){this.origin=e,this.dir=t}pointAt(e){return{x:this.origin.x+this.dir.x*e,y:this.origin.y+this.dir.y*e,z:this.origin.z+this.dir.z*e}}}class mx{constructor(e,t,i,s){this.featureType=gE.Unknown,this.featureId=void 0,this.toi=e,this.normal=t,s!==void 0&&(this.featureId=s),i!==void 0&&(this.featureType=i)}static fromRaw(e){if(!e)return null;const t=new mx(e.toi(),Qe.fromRaw(e.normal()),e.featureType(),e.featureId());return e.free(),t}}class av{constructor(e,t,i,s,r){this.toi=e,this.witness1=t,this.witness2=i,this.normal1=s,this.normal2=r}static fromRaw(e,t){if(!t)return null;const i=new av(t.toi(),Qe.fromRaw(t.witness1()),Qe.fromRaw(t.witness2()),Qe.fromRaw(t.normal1()),Qe.fromRaw(t.normal2()));return t.free(),i}}class jM extends av{constructor(e,t,i,s,r,o){super(t,i,s,r,o),this.collider=e}static fromRaw(e,t){if(!t)return null;const i=new jM(e.get(t.colliderHandle()),t.toi(),Qe.fromRaw(t.witness1()),Qe.fromRaw(t.witness2()),Qe.fromRaw(t.normal1()),Qe.fromRaw(t.normal2()));return t.free(),i}}class ds{static fromRaw(e,t){const i=e.coShapeType(t);let s,r,o,a,c,l;switch(i){case ei.Ball:return new WM(e.coRadius(t));case ei.Cuboid:return s=e.coHalfExtents(t),new ez(s.x,s.y,s.z);case ei.RoundCuboid:return s=e.coHalfExtents(t),r=e.coRoundRadius(t),new tz(s.x,s.y,s.z,r);case ei.Capsule:return c=e.coHalfHeight(t),l=e.coRadius(t),new iz(c,l);case ei.Segment:return o=e.coVertices(t),new nz(Qe.new(o[0],o[1],o[2]),Qe.new(o[3],o[4],o[5]));case ei.Polyline:return o=e.coVertices(t),a=e.coIndices(t),new oz(o,a);case ei.Triangle:return o=e.coVertices(t),new sz(Qe.new(o[0],o[1],o[2]),Qe.new(o[3],o[4],o[5]),Qe.new(o[6],o[7],o[8]));case ei.RoundTriangle:return o=e.coVertices(t),r=e.coRoundRadius(t),new rz(Qe.new(o[0],o[1],o[2]),Qe.new(o[3],o[4],o[5]),Qe.new(o[6],o[7],o[8]),r);case ei.TriMesh:return o=e.coVertices(t),a=e.coIndices(t),new az(o,a);case ei.HeightField:const h=e.coHeightfieldScale(t),d=e.coHeightfieldHeights(t),f=e.coHeightfieldNRows(t),p=e.coHeightfieldNCols(t);return new cz(f,p,d,h);case ei.ConvexPolyhedron:return o=e.coVertices(t),a=e.coIndices(t),new vE(o,a);case ei.RoundConvexPolyhedron:return o=e.coVertices(t),a=e.coIndices(t),r=e.coRoundRadius(t),new yE(o,a,r);case ei.Cylinder:return c=e.coHalfHeight(t),l=e.coRadius(t),new lz(c,l);case ei.RoundCylinder:return c=e.coHalfHeight(t),l=e.coRadius(t),r=e.coRoundRadius(t),new hz(c,l,r);case ei.Cone:return c=e.coHalfHeight(t),l=e.coRadius(t),new uz(c,l);case ei.RoundCone:return c=e.coHalfHeight(t),l=e.coRadius(t),r=e.coRoundRadius(t),new dz(c,l,r);default:throw new Error("unknown shape type: "+i)}}castShape(e,t,i,s,r,o,a,c){let l=Qe.intoRaw(e),h=qi.intoRaw(t),d=Qe.intoRaw(i),f=Qe.intoRaw(r),p=qi.intoRaw(o),g=Qe.intoRaw(a),m=this.intoRaw(),A=s.intoRaw(),v=av.fromRaw(null,m.castShape(l,h,d,A,f,p,g,c));return l.free(),h.free(),d.free(),f.free(),p.free(),g.free(),m.free(),A.free(),v}intersectsShape(e,t,i,s,r){let o=Qe.intoRaw(e),a=qi.intoRaw(t),c=Qe.intoRaw(s),l=qi.intoRaw(r),h=this.intoRaw(),d=i.intoRaw(),f=h.intersectsShape(o,a,d,c,l);return o.free(),a.free(),c.free(),l.free(),h.free(),d.free(),f}contactShape(e,t,i,s,r,o){let a=Qe.intoRaw(e),c=qi.intoRaw(t),l=Qe.intoRaw(s),h=qi.intoRaw(r),d=this.intoRaw(),f=i.intoRaw(),p=Vm.fromRaw(d.contactShape(a,c,f,l,h,o));return a.free(),c.free(),l.free(),h.free(),d.free(),f.free(),p}containsPoint(e,t,i){let s=Qe.intoRaw(e),r=qi.intoRaw(t),o=Qe.intoRaw(i),a=this.intoRaw(),c=a.containsPoint(s,r,o);return s.free(),r.free(),o.free(),a.free(),c}projectPoint(e,t,i,s){let r=Qe.intoRaw(e),o=qi.intoRaw(t),a=Qe.intoRaw(i),c=this.intoRaw(),l=gx.fromRaw(c.projectPoint(r,o,a,s));return r.free(),o.free(),a.free(),c.free(),l}intersectsRay(e,t,i,s){let r=Qe.intoRaw(t),o=qi.intoRaw(i),a=Qe.intoRaw(e.origin),c=Qe.intoRaw(e.dir),l=this.intoRaw(),h=l.intersectsRay(r,o,a,c,s);return r.free(),o.free(),a.free(),c.free(),l.free(),h}castRay(e,t,i,s,r){let o=Qe.intoRaw(t),a=qi.intoRaw(i),c=Qe.intoRaw(e.origin),l=Qe.intoRaw(e.dir),h=this.intoRaw(),d=h.castRay(o,a,c,l,s,r);return o.free(),a.free(),c.free(),l.free(),h.free(),d}castRayAndGetNormal(e,t,i,s,r){let o=Qe.intoRaw(t),a=qi.intoRaw(i),c=Qe.intoRaw(e.origin),l=Qe.intoRaw(e.dir),h=this.intoRaw(),d=mx.fromRaw(h.castRayAndGetNormal(o,a,c,l,s,r));return o.free(),a.free(),c.free(),l.free(),h.free(),d}}(function(n){n[n.Ball=0]="Ball",n[n.Cuboid=1]="Cuboid",n[n.Capsule=2]="Capsule",n[n.Segment=3]="Segment",n[n.Polyline=4]="Polyline",n[n.Triangle=5]="Triangle",n[n.TriMesh=6]="TriMesh",n[n.HeightField=7]="HeightField",n[n.ConvexPolyhedron=9]="ConvexPolyhedron",n[n.Cylinder=10]="Cylinder",n[n.Cone=11]="Cone",n[n.RoundCuboid=12]="RoundCuboid",n[n.RoundTriangle=13]="RoundTriangle",n[n.RoundCylinder=14]="RoundCylinder",n[n.RoundCone=15]="RoundCone",n[n.RoundConvexPolyhedron=16]="RoundConvexPolyhedron"})(ei||(ei={}));class WM extends ds{constructor(e){super(),this.type=ei.Ball,this.radius=e}intoRaw(){return Ut.ball(this.radius)}}class ez extends ds{constructor(e,t,i){super(),this.type=ei.Cuboid,this.halfExtents=Qe.new(e,t,i)}intoRaw(){return Ut.cuboid(this.halfExtents.x,this.halfExtents.y,this.halfExtents.z)}}class tz extends ds{constructor(e,t,i,s){super(),this.type=ei.RoundCuboid,this.halfExtents=Qe.new(e,t,i),this.borderRadius=s}intoRaw(){return Ut.roundCuboid(this.halfExtents.x,this.halfExtents.y,this.halfExtents.z,this.borderRadius)}}class iz extends ds{constructor(e,t){super(),this.type=ei.Capsule,this.halfHeight=e,this.radius=t}intoRaw(){return Ut.capsule(this.halfHeight,this.radius)}}class nz extends ds{constructor(e,t){super(),this.type=ei.Segment,this.a=e,this.b=t}intoRaw(){let e=Qe.intoRaw(this.a),t=Qe.intoRaw(this.b),i=Ut.segment(e,t);return e.free(),t.free(),i}}class sz extends ds{constructor(e,t,i){super(),this.type=ei.Triangle,this.a=e,this.b=t,this.c=i}intoRaw(){let e=Qe.intoRaw(this.a),t=Qe.intoRaw(this.b),i=Qe.intoRaw(this.c),s=Ut.triangle(e,t,i);return e.free(),t.free(),i.free(),s}}class rz extends ds{constructor(e,t,i,s){super(),this.type=ei.RoundTriangle,this.a=e,this.b=t,this.c=i,this.borderRadius=s}intoRaw(){let e=Qe.intoRaw(this.a),t=Qe.intoRaw(this.b),i=Qe.intoRaw(this.c),s=Ut.roundTriangle(e,t,i,this.borderRadius);return e.free(),t.free(),i.free(),s}}class oz extends ds{constructor(e,t){super(),this.type=ei.Polyline,this.vertices=e,this.indices=t??new Uint32Array(0)}intoRaw(){return Ut.polyline(this.vertices,this.indices)}}class az extends ds{constructor(e,t){super(),this.type=ei.TriMesh,this.vertices=e,this.indices=t}intoRaw(){return Ut.trimesh(this.vertices,this.indices)}}class vE extends ds{constructor(e,t){super(),this.type=ei.ConvexPolyhedron,this.vertices=e,this.indices=t}intoRaw(){return this.indices?Ut.convexMesh(this.vertices,this.indices):Ut.convexHull(this.vertices)}}class yE extends ds{constructor(e,t,i){super(),this.type=ei.RoundConvexPolyhedron,this.vertices=e,this.indices=t,this.borderRadius=i}intoRaw(){return this.indices?Ut.roundConvexMesh(this.vertices,this.indices,this.borderRadius):Ut.roundConvexHull(this.vertices,this.borderRadius)}}class cz extends ds{constructor(e,t,i,s){super(),this.type=ei.HeightField,this.nrows=e,this.ncols=t,this.heights=i,this.scale=s}intoRaw(){let e=Qe.intoRaw(this.scale),t=Ut.heightfield(this.nrows,this.ncols,this.heights,e);return e.free(),t}}class lz extends ds{constructor(e,t){super(),this.type=ei.Cylinder,this.halfHeight=e,this.radius=t}intoRaw(){return Ut.cylinder(this.halfHeight,this.radius)}}class hz extends ds{constructor(e,t,i){super(),this.type=ei.RoundCylinder,this.borderRadius=i,this.halfHeight=e,this.radius=t}intoRaw(){return Ut.roundCylinder(this.halfHeight,this.radius,this.borderRadius)}}class uz extends ds{constructor(e,t){super(),this.type=ei.Cone,this.halfHeight=e,this.radius=t}intoRaw(){return Ut.cone(this.halfHeight,this.radius)}}class dz extends ds{constructor(e,t,i){super(),this.type=ei.RoundCone,this.halfHeight=e,this.radius=t,this.borderRadius=i}intoRaw(){return Ut.roundCone(this.halfHeight,this.radius,this.borderRadius)}}(function(n){n[n.DYNAMIC_DYNAMIC=1]="DYNAMIC_DYNAMIC",n[n.DYNAMIC_KINEMATIC=12]="DYNAMIC_KINEMATIC",n[n.DYNAMIC_FIXED=2]="DYNAMIC_FIXED",n[n.KINEMATIC_KINEMATIC=52224]="KINEMATIC_KINEMATIC",n[n.KINEMATIC_FIXED=8704]="KINEMATIC_FIXED",n[n.FIXED_FIXED=32]="FIXED_FIXED",n[n.DEFAULT=15]="DEFAULT",n[n.ALL=60943]="ALL"})(A_||(A_={}));class hoe{constructor(e,t,i,s){this.colliderSet=e,this.handle=t,this._parent=i,this._shape=s}finalizeDeserialization(e){this.handle!=null&&(this._parent=e.get(this.colliderSet.raw.coParent(this.handle)))}ensureShapeIsCached(){this._shape||(this._shape=ds.fromRaw(this.colliderSet.raw,this.handle))}get shape(){return this.ensureShapeIsCached(),this._shape}isValid(){return this.colliderSet.raw.contains(this.handle)}translation(){return Qe.fromRaw(this.colliderSet.raw.coTranslation(this.handle))}rotation(){return qi.fromRaw(this.colliderSet.raw.coRotation(this.handle))}isSensor(){return this.colliderSet.raw.coIsSensor(this.handle)}setSensor(e){this.colliderSet.raw.coSetSensor(this.handle,e)}setShape(e){let t=e.intoRaw();this.colliderSet.raw.coSetShape(this.handle,t),t.free(),this._shape=e}setRestitution(e){this.colliderSet.raw.coSetRestitution(this.handle,e)}setFriction(e){this.colliderSet.raw.coSetFriction(this.handle,e)}frictionCombineRule(){return this.colliderSet.raw.coFrictionCombineRule(this.handle)}setFrictionCombineRule(e){this.colliderSet.raw.coSetFrictionCombineRule(this.handle,e)}restitutionCombineRule(){return this.colliderSet.raw.coRestitutionCombineRule(this.handle)}setRestitutionCombineRule(e){this.colliderSet.raw.coSetRestitutionCombineRule(this.handle,e)}setCollisionGroups(e){this.colliderSet.raw.coSetCollisionGroups(this.handle,e)}setSolverGroups(e){this.colliderSet.raw.coSetSolverGroups(this.handle,e)}activeHooks(){return this.colliderSet.raw.coActiveHooks(this.handle)}setActiveHooks(e){this.colliderSet.raw.coSetActiveHooks(this.handle,e)}activeEvents(){return this.colliderSet.raw.coActiveEvents(this.handle)}setActiveEvents(e){this.colliderSet.raw.coSetActiveEvents(this.handle,e)}activeCollisionTypes(){return this.colliderSet.raw.coActiveCollisionTypes(this.handle)}setContactForceEventThreshold(e){return this.colliderSet.raw.coSetContactForceEventThreshold(this.handle,e)}contactForceEventThreshold(){return this.colliderSet.raw.coContactForceEventThreshold(this.handle)}setActiveCollisionTypes(e){this.colliderSet.raw.coSetActiveCollisionTypes(this.handle,e)}setDensity(e){this.colliderSet.raw.coSetDensity(this.handle,e)}setMass(e){this.colliderSet.raw.coSetMass(this.handle,e)}setMassProperties(e,t,i,s){let r=Qe.intoRaw(t),o=Qe.intoRaw(i),a=qi.intoRaw(s);this.colliderSet.raw.coSetMassProperties(this.handle,e,r,o,a),r.free(),o.free(),a.free()}setTranslation(e){this.colliderSet.raw.coSetTranslation(this.handle,e.x,e.y,e.z)}setTranslationWrtParent(e){this.colliderSet.raw.coSetTranslationWrtParent(this.handle,e.x,e.y,e.z)}setRotation(e){this.colliderSet.raw.coSetRotation(this.handle,e.x,e.y,e.z,e.w)}setRotationWrtParent(e){this.colliderSet.raw.coSetRotationWrtParent(this.handle,e.x,e.y,e.z,e.w)}shapeType(){return this.colliderSet.raw.coShapeType(this.handle)}halfExtents(){return Qe.fromRaw(this.colliderSet.raw.coHalfExtents(this.handle))}radius(){return this.colliderSet.raw.coRadius(this.handle)}roundRadius(){return this.colliderSet.raw.coRoundRadius(this.handle)}halfHeight(){return this.colliderSet.raw.coHalfHeight(this.handle)}vertices(){return this.colliderSet.raw.coVertices(this.handle)}indices(){return this.colliderSet.raw.coIndices(this.handle)}heightfieldHeights(){return this.colliderSet.raw.coHeightfieldHeights(this.handle)}heightfieldScale(){let e=this.colliderSet.raw.coHeightfieldScale(this.handle);return Qe.fromRaw(e)}heightfieldNRows(){return this.colliderSet.raw.coHeightfieldNRows(this.handle)}heightfieldNCols(){return this.colliderSet.raw.coHeightfieldNCols(this.handle)}parent(){return this._parent}friction(){return this.colliderSet.raw.coFriction(this.handle)}restitution(){return this.colliderSet.raw.coRestitution(this.handle)}density(){return this.colliderSet.raw.coDensity(this.handle)}mass(){return this.colliderSet.raw.coMass(this.handle)}volume(){return this.colliderSet.raw.coVolume(this.handle)}collisionGroups(){return this.colliderSet.raw.coCollisionGroups(this.handle)}solverGroups(){return this.colliderSet.raw.coSolverGroups(this.handle)}containsPoint(e){let t=Qe.intoRaw(e),i=this.colliderSet.raw.coContainsPoint(this.handle,t);return t.free(),i}projectPoint(e,t){let i=Qe.intoRaw(e),s=gx.fromRaw(this.colliderSet.raw.coProjectPoint(this.handle,i,t));return i.free(),s}intersectsRay(e,t){let i=Qe.intoRaw(e.origin),s=Qe.intoRaw(e.dir),r=this.colliderSet.raw.coIntersectsRay(this.handle,i,s,t);return i.free(),s.free(),r}castShape(e,t,i,s,r,o){let a=Qe.intoRaw(e),c=Qe.intoRaw(i),l=qi.intoRaw(s),h=Qe.intoRaw(r),d=t.intoRaw(),f=av.fromRaw(this.colliderSet,this.colliderSet.raw.coCastShape(this.handle,a,d,c,l,h,o));return a.free(),c.free(),l.free(),h.free(),d.free(),f}castCollider(e,t,i,s){let r=Qe.intoRaw(e),o=Qe.intoRaw(i),a=jM.fromRaw(this.colliderSet,this.colliderSet.raw.coCastCollider(this.handle,r,t.handle,o,s));return r.free(),o.free(),a}intersectsShape(e,t,i){let s=Qe.intoRaw(t),r=qi.intoRaw(i),o=e.intoRaw(),a=this.colliderSet.raw.coIntersectsShape(this.handle,o,s,r);return s.free(),r.free(),o.free(),a}contactShape(e,t,i,s){let r=Qe.intoRaw(t),o=qi.intoRaw(i),a=e.intoRaw(),c=Vm.fromRaw(this.colliderSet.raw.coContactShape(this.handle,a,r,o,s));return r.free(),o.free(),a.free(),c}contactCollider(e,t){return Vm.fromRaw(this.colliderSet.raw.coContactCollider(this.handle,e.handle,t))}castRay(e,t,i){let s=Qe.intoRaw(e.origin),r=Qe.intoRaw(e.dir),o=this.colliderSet.raw.coCastRay(this.handle,s,r,t,i);return s.free(),r.free(),o}castRayAndGetNormal(e,t,i){let s=Qe.intoRaw(e.origin),r=Qe.intoRaw(e.dir),o=mx.fromRaw(this.colliderSet.raw.coCastRayAndGetNormal(this.handle,s,r,t,i));return s.free(),r.free(),o}}(function(n){n[n.Density=0]="Density",n[n.Mass=1]="Mass",n[n.MassProps=2]="MassProps"})(jd||(jd={}));class Bi{constructor(e){this.shape=e,this.massPropsMode=jd.Density,this.density=1,this.friction=.5,this.restitution=0,this.rotation=qi.identity(),this.translation=Qe.zeros(),this.isSensor=!1,this.collisionGroups=4294967295,this.solverGroups=4294967295,this.frictionCombineRule=Yr.Average,this.restitutionCombineRule=Yr.Average,this.activeCollisionTypes=A_.DEFAULT,this.activeEvents=0,this.activeHooks=0,this.mass=0,this.centerOfMass=Qe.zeros(),this.contactForceEventThreshold=0,this.principalAngularInertia=Qe.zeros(),this.angularInertiaLocalFrame=qi.identity()}static ball(e){const t=new WM(e);return new Bi(t)}static capsule(e,t){const i=new iz(e,t);return new Bi(i)}static segment(e,t){const i=new nz(e,t);return new Bi(i)}static triangle(e,t,i){const s=new sz(e,t,i);return new Bi(s)}static roundTriangle(e,t,i,s){const r=new rz(e,t,i,s);return new Bi(r)}static polyline(e,t){const i=new oz(e,t);return new Bi(i)}static trimesh(e,t){const i=new az(e,t);return new Bi(i)}static cuboid(e,t,i){const s=new ez(e,t,i);return new Bi(s)}static roundCuboid(e,t,i,s){const r=new tz(e,t,i,s);return new Bi(r)}static heightfield(e,t,i,s){const r=new cz(e,t,i,s);return new Bi(r)}static cylinder(e,t){const i=new lz(e,t);return new Bi(i)}static roundCylinder(e,t,i){const s=new hz(e,t,i);return new Bi(s)}static cone(e,t){const i=new uz(e,t);return new Bi(i)}static roundCone(e,t,i){const s=new dz(e,t,i);return new Bi(s)}static convexHull(e){const t=new vE(e,null);return new Bi(t)}static convexMesh(e,t){const i=new vE(e,t);return new Bi(i)}static roundConvexHull(e,t){const i=new yE(e,null,t);return new Bi(i)}static roundConvexMesh(e,t,i){const s=new yE(e,t,i);return new Bi(s)}setTranslation(e,t,i){if(typeof e!="number"||typeof t!="number"||typeof i!="number")throw TypeError("The translation components must be numbers.");return this.translation={x:e,y:t,z:i},this}setRotation(e){return qi.copy(this.rotation,e),this}setSensor(e){return this.isSensor=e,this}setDensity(e){return this.massPropsMode=jd.Density,this.density=e,this}setMass(e){return this.massPropsMode=jd.Mass,this.mass=e,this}setMassProperties(e,t,i,s){return this.massPropsMode=jd.MassProps,this.mass=e,Qe.copy(this.centerOfMass,t),Qe.copy(this.principalAngularInertia,i),qi.copy(this.angularInertiaLocalFrame,s),this}setRestitution(e){return this.restitution=e,this}setFriction(e){return this.friction=e,this}setFrictionCombineRule(e){return this.frictionCombineRule=e,this}setRestitutionCombineRule(e){return this.restitutionCombineRule=e,this}setCollisionGroups(e){return this.collisionGroups=e,this}setSolverGroups(e){return this.solverGroups=e,this}setActiveHooks(e){return this.activeHooks=e,this}setActiveEvents(e){return this.activeEvents=e,this}setActiveCollisionTypes(e){return this.activeCollisionTypes=e,this}setContactForceEventThreshold(e){return this.contactForceEventThreshold=e,this}}(function(n){n[n.EXCLUDE_FIXED=1]="EXCLUDE_FIXED",n[n.EXCLUDE_KINEMATIC=2]="EXCLUDE_KINEMATIC",n[n.EXCLUDE_DYNAMIC=4]="EXCLUDE_DYNAMIC",n[n.EXCLUDE_SENSORS=8]="EXCLUDE_SENSORS",n[n.EXCLUDE_SOLIDS=16]="EXCLUDE_SOLIDS",n[n.ONLY_DYNAMIC=3]="ONLY_DYNAMIC",n[n.ONLY_KINEMATIC=5]="ONLY_KINEMATIC",n[n.ONLY_FIXED=6]="ONLY_FIXED"})(mE||(mE={}));(function(n){n[n.COLLISION_EVENTS=1]="COLLISION_EVENTS",n[n.CONTACT_FORCE_EVENTS=2]="CONTACT_FORCE_EVENTS"})(AE||(AE={}));class uoe{free(){this.raw.free(),this.raw=void 0}collider1(){return this.raw.collider1()}collider2(){return this.raw.collider2()}totalForce(){return Qe.fromRaw(this.raw.total_force())}totalForceMagnitude(){return this.raw.total_force_magnitude()}maxForceDirection(){return Qe.fromRaw(this.raw.max_force_direction())}maxForceMagnitude(){return this.raw.max_force_magnitude()}}class doe{constructor(e,t){this.raw=t||new m_(e)}free(){this.raw.free(),this.raw=void 0}drainCollisionEvents(e){this.raw.drainCollisionEvents(e)}drainContactForceEvents(e){let t=new uoe;this.raw.drainContactForceEvents(i=>{t.raw=i,e(t),t.free()})}clear(){this.raw.clear()}}(function(n){n[n.FILTER_CONTACT_PAIRS=1]="FILTER_CONTACT_PAIRS",n[n.FILTER_INTERSECTION_PAIRS=2]="FILTER_INTERSECTION_PAIRS"})(qD||(qD={})),function(n){n[n.EMPTY=0]="EMPTY",n[n.COMPUTE_IMPULSE=1]="COMPUTE_IMPULSE"}(XD||(XD={}));for(var joe={byteLength:function(n){var e=YD(n),t=e[0],i=e[1];return 3*(t+i)/4-i},toByteArray:function(n){var e,t,i=YD(n),s=i[0],r=i[1],o=new foe(function(l,h,d){return 3*(h+d)/4-d}(0,s,r)),a=0,c=r>0?s-4:s;for(t=0;t<c;t+=4)e=Hr[n.charCodeAt(t)]<<18|Hr[n.charCodeAt(t+1)]<<12|Hr[n.charCodeAt(t+2)]<<6|Hr[n.charCodeAt(t+3)],o[a++]=e>>16&255,o[a++]=e>>8&255,o[a++]=255&e;return r===2&&(e=Hr[n.charCodeAt(t)]<<2|Hr[n.charCodeAt(t+1)]>>4,o[a++]=255&e),r===1&&(e=Hr[n.charCodeAt(t)]<<10|Hr[n.charCodeAt(t+1)]<<4|Hr[n.charCodeAt(t+2)]>>2,o[a++]=e>>8&255,o[a++]=255&e),o},fromByteArray:function(n){for(var e,t=n.length,i=t%3,s=[],r=16383,o=0,a=t-i;o<a;o+=r)s.push(goe(n,o,o+r>a?a:o+r));return i===1?(e=n[t-1],s.push(fa[e>>2]+fa[e<<4&63]+"==")):i===2&&(e=(n[t-2]<<8)+n[t-1],s.push(fa[e>>10]+fa[e>>4&63]+fa[e<<2&63]+"=")),s.join("")}},fa=[],Hr=[],foe=typeof Uint8Array<"u"?Uint8Array:Array,gC="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",xd=0,poe=gC.length;xd<poe;++xd)fa[xd]=gC[xd],Hr[gC.charCodeAt(xd)]=xd;function YD(n){var e=n.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var t=n.indexOf("=");return t===-1&&(t=e),[t,t===e?0:4-t%4]}function goe(n,e,t){for(var i,s,r=[],o=e;o<t;o+=3)i=(n[o]<<16&16711680)+(n[o+1]<<8&65280)+(255&n[o+2]),r.push(fa[(s=i)>>18&63]+fa[s>>12&63]+fa[s>>6&63]+fa[63&s]);return r.join("")}Hr["-".charCodeAt(0)]=62,Hr["_".charCodeAt(0)]=63;const sa=ce("debugphysics"),mC=ce("debugphysicscolliders"),AC=ce("debugcollisions"),moe=ce("showcolliders"),Mo=Symbol("needle component"),zr=Symbol("physics body"),Aoe=Symbol("rigidbody");let wd;const tm=class{constructor(){u(this,"context");u(this,"_initializePromise");u(this,"_isInitialized",!1);u(this,"rapierRay",new loe({x:0,y:0,z:0},{x:0,y:0,z:1}));u(this,"raycastVectorsBuffer",new Ma(()=>new E,10));u(this,"rapierSphere",null);u(this,"rapierColliderArray",[]);u(this,"rapierIdentityRotation",{x:0,y:0,z:0,w:1});u(this,"rapierForwardVector",{x:0,y:0,z:1});u(this,"enabled",!1);u(this,"_tempPosition",new E);u(this,"_tempQuaternion",new xe);u(this,"_tempScale",new E);u(this,"_tempMatrix",new He);u(this,"_isUpdatingPhysicsWorld",!1);u(this,"world");u(this,"_hasCreatedWorld",!1);u(this,"eventQueue");u(this,"collisionHandler");u(this,"objects",[]);u(this,"bodies",[]);u(this,"_meshCache",new Map);u(this,"_gravity",{x:0,y:-9.81,z:0});u(this,"lines")}removeBody(e){var i,s;this.validate();const t=e[zr];if(e[zr]=null,t&&this.world){const r=this.objects.findIndex(o=>o===e);if(r>=0){const o=this.bodies[r];if(this.bodies.splice(r,1),this.objects.splice(r,1),o instanceof hoe){const a=o;(i=this.world)==null||i.removeCollider(a,!0);const c=a.parent();c&&c.numColliders()<=0&&((s=this.world)==null||s.removeRigidBody(c))}}}}updateBody(e,t,i){if(this.validate(),!!this.enabled&&!(e.destroyed||!e.gameObject)&&!(!t&&!i))if(e.isCollider===!0)console.warn("TODO: implement updating collider position");else{const s=e,r=s[zr];r&&this.syncPhysicsBody(s.gameObject,r,t,i)}}updateProperties(e){this.validate();const t=e[zr];t&&this.internalUpdateProperties(e,t)}addForce(e,t,i){this.validate();const s=this.internal_getRigidbody(e);s==null||s.addForce(t,i)}addImpulse(e,t,i){this.validate();const s=this.internal_getRigidbody(e);s==null||s.applyImpulse(t,i)}getLinearVelocity(e){this.validate();const t=this.internal_getRigidbody(e);return t?t.linvel():null}getAngularVelocity(e){this.validate();const t=this.internal_getRigidbody(e);return t?t.angvel():null}resetForces(e,t){this.validate();const i=this.internal_getRigidbody(e);i==null||i.resetForces(t)}resetTorques(e,t){this.validate();const i=this.internal_getRigidbody(e);i==null||i.resetTorques(t)}applyImpulse(e,t,i){this.validate();const s=this.internal_getRigidbody(e);s==null||s.applyImpulse(t,i)}wakeup(e){this.validate();const t=this.internal_getRigidbody(e);t==null||t.wakeUp()}setAngularVelocity(e,t,i){this.validate();const s=this.internal_getRigidbody(e);s==null||s.setAngvel(t,i)}setLinearVelocity(e,t,i){this.validate();const s=this.internal_getRigidbody(e);s==null||s.setLinvel(t,i)}async initialize(e){return this.context=e,this._initializePromise||(this._initializePromise=this.internalInitialization()),this._initializePromise}async internalInitialization(){return"env"in{url:typeof document>"u"?require("url").pathToFileURL(__filename).href:document.currentScript&&document.currentScript.src||new URL("dist/needle-engine.light.umd.cjs",document.baseURI).href}&&{}.VITE_NEEDLE_USE_RAPIER==="false",!1}validate(){this._isInitialized||sa&&console.warn("Physics engine is not initialized")}raycast(e,t=void 0,i=1/0,s=!0){var a;const r=this.getPhysicsRay(this.rapierRay,e,t);if(!r)return null;const o=(a=this.world)==null?void 0:a.castRay(r,i,s,void 0,void 0,void 0,void 0,c=>{var l;return!((l=c[Mo])!=null&&l.gameObject.layers.isEnabled(2))});if(o){const c=r.pointAt(o.toi),l=this.raycastVectorsBuffer.get();return l.set(c.x,c.y,c.z),{point:l,collider:o.collider[Mo]}}return null}raycastAndGetNormal(e,t=void 0,i=1/0,s=!0){var a;const r=this.getPhysicsRay(this.rapierRay,e,t);if(!r)return null;const o=(a=this.world)==null?void 0:a.castRayAndGetNormal(r,i,s,void 0,void 0,void 0,void 0,c=>{var l;return!((l=c[Mo])!=null&&l.gameObject.layers.isEnabled(2))});if(o){const c=r.pointAt(o.toi),l=o.normal,h=this.raycastVectorsBuffer.get(),d=this.raycastVectorsBuffer.get();return h.set(c.x,c.y,c.z),d.set(l.x,l.y,l.z),{point:h,normal:d,collider:o.collider[Mo]}}return null}getPhysicsRay(e,t,i=void 0){var a,c;const s=(a=this.context)==null?void 0:a.mainCamera;if(t.z===void 0){if(!s)return console.error("Can not perform raycast from 2d point - no main camera found"),null;const l=this.raycastVectorsBuffer.get();l.x=t.x,l.y=t.y,l.z=0,(l.x>1||l.y>1||l.y<-1||l.x<-1)&&((c=this.context)==null||c.input.convertScreenspaceToRaycastSpace(l)),l.unproject(s),t=l}const r=t;e.origin.x=r.x,e.origin.y=r.y,e.origin.z=r.z;const o=this.raycastVectorsBuffer.get();if(i)o.set(i.x,i.y,i.z);else{if(!s)return console.error("Can not perform raycast - no camera found"),null;o.set(e.origin.x,e.origin.y,e.origin.z);const l=Ct(s);o.sub(l)}return o.normalize(),e.dir.x=o.x,e.dir.y=o.y,e.dir.z=o.z,e}sphereOverlap(e,t){return this.rapierColliderArray.length=0,this.world?(this.rapierSphere||(this.rapierSphere=new WM(t)),this.rapierSphere.radius=t,this.world.intersectionsWithShape(e,this.rapierIdentityRotation,this.rapierSphere,i=>{const s=i[Mo],r=new $N(s.gameObject,s);return this.rapierColliderArray.push(r),!0},mE.EXCLUDE_SENSORS,void 0,void 0,void 0,i=>i[Mo].gameObject.layers.isEnabled(2)==!1),this.rapierColliderArray):this.rapierColliderArray}get isUpdating(){return this._isUpdatingPhysicsWorld}get gravity(){var e;return((e=this.world)==null?void 0:e.gravity)??this._gravity}set gravity(e){this.world?this.world.gravity=e:this._gravity=e}clearCaches(){this._meshCache.clear()}async addBoxCollider(e,t,i){if(this._isInitialized||await this.initialize(e.context),!e.activeAndEnabled)return;if(!this.enabled){sa&&console.warn("Physics are disabled");return}const s=e.gameObject,r=is(s,this._tempPosition).multiply(i);r.multiplyScalar(.5),r.x<0&&(r.x=Math.abs(r.x)),r.y<0&&(r.y=Math.abs(r.y)),r.z<0&&(r.z=Math.abs(r.z)),r.x==0&&(r.x=1e-7),r.y==0&&(r.y=1e-7),r.z==0&&(r.z=1e-7);const o=Bi.cuboid(r.x,r.y,r.z);this.createCollider(e,o,t)}async addSphereCollider(e,t,i){if(this._isInitialized||await this.initialize(e.context),!e.activeAndEnabled)return;if(!this.enabled){sa&&console.warn("Physics are disabled");return}const s=e.gameObject,r=is(s,this._tempPosition).multiplyScalar(i);r.x=Math.abs(r.x);const o=Bi.ball(r.x);this.createCollider(e,o,t)}async addCapsuleCollider(e,t,i,s){if(this._isInitialized||await this.initialize(e.context),!e.activeAndEnabled)return;if(!this.enabled){sa&&console.warn("Physics are disabled");return}const r=e.gameObject,o=is(r,this._tempPosition);o.x=Math.abs(o.x),o.y=Math.abs(o.y);const a=Bi.capsule(i*.5*o.y-s,s*o.x);this.createCollider(e,a,t)}async addMeshCollider(e,t,i,s){var l;if(this._isInitialized||await this.initialize(e.context),!e.activeAndEnabled)return;if(!this.enabled){sa&&console.warn("Physics are disabled");return}const r=t.geometry;if(!r){sa&&console.warn("Missing mesh geometry",t.name);return}let o=r.getAttribute("position").array;const a=(l=r.index)==null?void 0:l.array;if(Math.abs(s.x-1)>1e-4||Math.abs(s.y-1)>1e-4||Math.abs(s.z-1)>1e-4){const h=r.uuid+"_"+s.x+"_"+s.y+"_"+s.z+"_"+i;if(this._meshCache.has(h))o=this._meshCache.get(h);else{console.warn("Your model is using scaled mesh colliders which is not optimal for performance",t.name,Object.assign({},s),t);const d=new Float32Array(o.length);for(let f=0;f<o.length;f+=3)d[f]=o[f]*s.x,d[f+1]=o[f+1]*s.y,d[f+2]=o[f+2]*s.z;o=d,this._meshCache.set(h,d)}}const c=i?Bi.convexMesh(o):Bi.trimesh(o,a);c&&this.createCollider(e,c).setMassProperties(1,{x:0,y:0,z:0},{x:0,y:0,z:0},{x:0,y:0,z:0,w:1})}createCollider(e,t,i){if(!this.world)throw new Error("Physics world not initialized");const s=this._tempMatrix,{rigidBody:r,useExplicitMassProperties:o}=this.getRigidbody(e,this._tempMatrix);s.decompose(this._tempPosition,this._tempQuaternion,this._tempScale),is(e.gameObject,this._tempScale),i&&(i.multiply(this._tempScale),this._tempPosition.x-=i.x,this._tempPosition.y+=i.y,this._tempPosition.z+=i.z),t.setTranslation(this._tempPosition.x,this._tempPosition.y,this._tempPosition.z),t.setRotation(this._tempQuaternion),t.setSensor(e.isTrigger);const a=e.sharedMaterial;if(a){switch(t.setRestitution(a.bounciness),a.bounceCombine){case oa.Average:t.setRestitutionCombineRule(Yr.Average);break;case oa.Maximum:t.setRestitutionCombineRule(Yr.Max);break;case oa.Minimum:t.setRestitutionCombineRule(Yr.Min);break;case oa.Multiply:t.setRestitutionCombineRule(Yr.Multiply);break}switch(t.setFriction(a.dynamicFriction),a.frictionCombine){case oa.Average:t.setFrictionCombineRule(Yr.Average);break;case oa.Maximum:t.setFrictionCombineRule(Yr.Max);break;case oa.Minimum:t.setFrictionCombineRule(Yr.Min);break;case oa.Multiply:t.setFrictionCombineRule(Yr.Multiply);break}}const c=this.world.createCollider(t,r);return c[Mo]=e,e[zr]=c,c.setActiveEvents(AE.COLLISION_EVENTS),c.setActiveCollisionTypes(A_.ALL),this.objects.push(e),this.bodies.push(c),c}getRigidbody(e,t){if(!this.world)throw new Error("Physics world not initialized");let i=null,s=!1;if(e.attachedRigidbody){const r=e.attachedRigidbody;if(i=r[zr],s=!0,!i){const o=r.isKinematic&&!mC;sa&&console.log("Create rigidbody",o);const a=o?wd.RigidBodyDesc.kinematicPositionBased():wd.RigidBodyDesc.dynamic(),c=Ct(e.attachedRigidbody.gameObject);a.setTranslation(c.x,c.y,c.z),a.setRotation(Bn(e.attachedRigidbody.gameObject)),i=this.world.createRigidBody(a),this.bodies.push(i),this.objects.push(r)}i[Mo]=r,r[zr]=i,this.internalUpdateProperties(r,i),this.getRigidbodyRelativeMatrix(e.gameObject,r.gameObject,t)}else{const r=wd.RigidBodyDesc.kinematicPositionBased(),o=Ct(e.gameObject);r.setTranslation(o.x,o.y,o.z),r.setRotation(Bn(e.gameObject)),i=this.world.createRigidBody(r),t.identity(),i[Mo]=null}return e[Aoe]=i,{rigidBody:i,useExplicitMassProperties:s}}internal_getRigidbody(e){return e[zr]}internalUpdateProperties(e,t){t.enableCcd(e.collisionDetectionMode!==Sb.Discrete),t.setLinearDamping(e.drag),t.setAngularDamping(e.angularDrag),t.setGravityScale(e.useGravity?e.gravityScale:0,!0),t.setEnabledRotations(!e.lockRotationX,!e.lockRotationY,!e.lockRotationZ,!0),t.setEnabledTranslations(!e.lockPositionX,!e.lockPositionY,!e.lockPositionZ,!0),e.isKinematic?t.setBodyType(wd.RigidBodyType.KinematicPositionBased):t.setBodyType(wd.RigidBodyType.Dynamic)}step(e){this.world&&this.enabled&&(this._isUpdatingPhysicsWorld=!0,this.eventQueue||(this.eventQueue=new doe(!1)),e&&(this.world.timestep=Ze.lerp(this.world.timestep,e,.8)),this.world.step(this.eventQueue),this._isUpdatingPhysicsWorld=!1,this.updateDebugRendering(this.world))}updateDebugRendering(e){var t;if(sa||mC||moe){if(!this.lines){const s=new cn({color:2258688}),r=new vt;this.lines=new Tr(r,s),(t=this.context)==null||t.scene.add(this.lines)}const i=e.debugRender();this.lines.geometry.setAttribute("position",new ht(i.vertices,3)),this.lines.geometry.setAttribute("color",new ht(i.colors,4))}}postStep(){this.world&&this.enabled&&(this._isUpdatingPhysicsWorld=!0,this.syncObjects(),this._isUpdatingPhysicsWorld=!1,this.eventQueue&&!this.collisionHandler&&(this.collisionHandler=new voe(this.world,this.eventQueue)),this.collisionHandler&&(this.collisionHandler.handleCollisionEvents(),this.collisionHandler.update()))}syncObjects(){if(!mC)for(let e=0;e<this.bodies.length;e++){const t=this.objects[e],i=this.bodies[e],s=t;if((s==null?void 0:s.isCollider)===!0&&!s.attachedRigidbody){const c=i.parent();c&&this.syncPhysicsBody(t.gameObject,c,!0,!0);continue}const r=i.translation(),o=i.rotation(),a=t.center;if(a&&a.isVector3){this._tempQuaternion.set(o.x,o.y,o.z,o.w);const c=this._tempPosition.copy(a).applyQuaternion(this._tempQuaternion),l=is(t.gameObject);c.multiply(l),r.x-=c.x,r.y-=c.y,r.z-=c.z}_f(t.gameObject,r.x,r.y,r.z),sO(t.gameObject,o.x,o.y,o.z,o.w)}}syncPhysicsBody(e,t,i,s){const r=Ct(e,this._tempPosition),o=Bn(e,this._tempQuaternion);switch(t.bodyType()){case Xg.Fixed:case Xg.KinematicPositionBased:case Xg.KinematicVelocityBased:i&&t.setNextKinematicTranslation(r),s&&t.setNextKinematicRotation(o);break;default:i&&t.setTranslation(r,!1),s&&t.setRotation(o,!1);break}t.wakeUp()}getRigidbodyRelativeMatrix(e,t,i,s){if(s===void 0&&(s=tm._matricesBuffer,s.length=0),e===t){const r=is(e,this._tempPosition);i.makeScale(r.x,r.y,r.z);for(let o=s.length-1;o>=0;o--)i.multiply(s[o]);return i}return s.push(e.matrix),e.parent&&this.getRigidbodyRelativeMatrix(e.parent,t,i,s),i}addFixedJoint(e,t){if(!this.world){console.error("Physics world not initialized");return}const i=e[zr],s=t[zr];this.calculateJointRelativeMatrices(e.gameObject,t.gameObject,this._tempMatrix),this._tempMatrix.decompose(this._tempPosition,this._tempQuaternion,this._tempScale);const r=Wd.fixed(tm.centerConnectionPos,tm.centerConnectionRot,this._tempPosition,this._tempQuaternion),o=this.world.createImpulseJoint(r,i,s,!0);sa&&console.log("ADD FIXED JOINT",o)}addHingeJoint(e,t,i,s){if(!this.world){console.error("Physics world not initialized");return}const r=e[zr],o=t[zr];this.calculateJointRelativeMatrices(e.gameObject,t.gameObject,this._tempMatrix),this._tempMatrix.decompose(this._tempPosition,this._tempQuaternion,this._tempScale);let a=wd.JointData.revolute(i,this._tempPosition,s),c=this.world.createImpulseJoint(a,r,o,!0);sa&&console.log("ADD HINGE JOINT",c)}calculateJointRelativeMatrices(e,t,i){e.updateWorldMatrix(!0,!1),t.updateWorldMatrix(!0,!1);const s=e.matrixWorld,r=t.matrixWorld;s.elements[0]=1,s.elements[5]=1,s.elements[10]=1,r.elements[0]=1,r.elements[5]=1,r.elements[10]=1,i.copy(r).premultiply(s.invert()).invert()}};let Lh=tm;u(Lh,"_didLoadPhysicsEngine",!1),u(Lh,"_matricesBuffer",[]),u(Lh,"centerConnectionPos",{x:0,y:0,z:0}),u(Lh,"centerConnectionRot",{x:0,y:0,z:0,w:1});class voe{constructor(e,t){u(this,"world");u(this,"eventQueue");u(this,"activeCollisions",[]);u(this,"activeCollisionsStay",[]);u(this,"activeTriggers",[]);this.world=e,this.eventQueue=t}handleCollisionEvents(){this.eventQueue&&this.world&&this.eventQueue.drainCollisionEvents((e,t,i)=>{const s=this.world.getCollider(e),r=this.world.getCollider(t),o=s[Mo],a=r[Mo];AC&&console.log("EVT",o.name,a.name,i,s,r),o&&a&&(i?(this.onCollisionStarted(o,s,a,r),this.onCollisionStarted(a,r,o,s)):(this.onCollisionEnded(o,a),this.onCollisionEnded(a,o)))})}update(){this.onHandleCollisionStay()}onCollisionStarted(e,t,i,s){let r=null;if(e.isTrigger||i.isTrigger)gu(e.gameObject,o=>{o.onTriggerEnter&&!o.destroyed&&o.onTriggerEnter(i),this.activeTriggers.push({collider:e,component:o,otherCollider:i})});else{const o=e.gameObject;this.world.contactPair(t,s,(a,c)=>{gu(o,l=>{var d;if(l.destroyed)return;const h=l.onCollisionEnter||l.onCollisionStay||l.onCollisionExit;if(h||AC){if(!r){const f=[],p=a.normal();for(let g=0;g<a.numSolverContacts();g++){const m=a.solverContactPoint(g),A=a.contactImpulse(g);if(m){const v=a.contactDist(g),b=a.solverContactFriction(g),y=new KN(m,v,p,A,b);f.push(y),AC&&_a.DrawDirection(m,p,16711680,3,!0)}}r=new ZN(o,i,f)}if(h){const f={collider:e,component:l,collision:r};this.activeCollisions.push(f),l.onCollisionStay&&this.activeCollisionsStay.push(f),(d=l.onCollisionEnter)==null||d.call(l,r)}}})})}}onHandleCollisionStay(){for(const e of this.activeCollisionsStay){const t=e.component;if(!t.destroyed&&t.activeAndEnabled&&t.onCollisionStay){const i=e.collision;t.onCollisionStay(i)}}for(const e of this.activeTriggers){const t=e.component;if(!t.destroyed&&t.activeAndEnabled&&t.onTriggerStay){const i=e.otherCollider;t.onTriggerStay(i)}}}onCollisionEnded(e,t){if(!(e.destroyed||t.destroyed)){for(let i=0;i<this.activeCollisions.length;i++){const s=this.activeCollisions[i],r=s.collider;if(r.destroyed){this.activeCollisions.splice(i,1),i--;continue}if(r===e&&s.collision.collider===t){const o=s.component;if(this.activeCollisions.splice(i,1),i--,o.activeAndEnabled&&o.onCollisionExit){const a=s.collision;o.onCollisionExit(a)}}}for(let i=0;i<this.activeCollisionsStay.length;i++){const s=this.activeCollisionsStay[i],r=s.collider;if(r.destroyed){this.activeCollisionsStay.splice(i,1),i--;continue}if(r===e&&s.collision.collider===t){const o=s.component;if(this.activeCollisionsStay.splice(i,1),i--,o.activeAndEnabled&&o.onCollisionExit){const a=s.collision;o.onCollisionExit(a)}}}for(let i=0;i<this.activeTriggers.length;i++){const s=this.activeTriggers[i],r=s.collider;if(r.destroyed){this.activeTriggers.splice(i,1),i--;continue}if(r===e&&s.otherCollider===t){const o=s.component;if(this.activeTriggers.splice(i,1),i--,o.activeAndEnabled&&o.onTriggerExit){const a=s.otherCollider;o.onTriggerExit(a)}}}}}}Object.defineProperty($t.prototype,"fov",{get:function(){return this._fov},set:function(n){const e=n!==this._fov;this._fov=n,e&&this.view!==void 0&&this.updateProjectionMatrix()}});Object.defineProperty($t.prototype,"near",{get:function(){return this._near},set:function(n){const e=n!==this._near;this._near=n,e&&this.view!==void 0&&this.updateProjectionMatrix()}});Object.defineProperty($t.prototype,"far",{get:function(){return this._far},set:function(n){const e=n!==this._far;this._far=n,e&&this.view!==void 0&&this.updateProjectionMatrix()}});function yoe(n,e,t,i="image/webp",s){if(!s&&(s=n.mainCamera,!s))return console.error("No camera found"),null;const r=n.renderer.domElement.width,o=n.renderer.domElement.height;try{const a=n.renderer.domElement;return n.renderer.setSize(e,t),s instanceof $t&&n.updateAspect(s,e,t),n.renderNow(),a.toDataURL(i)}finally{n.renderer.setSize(r,o),n.updateSize()}return null}Tz();const Ax={Context:_t};globalThis.Needle!==void 0&&console.warn("Needle Engine is already imported");globalThis.Needle=Ax;function fz(n){for(const e in n)Ax[e]=n[e]}fz(jq);fz(Lre);Ax.$meta={version:wE,generator:ak};for(const n of Object.getOwnPropertyNames($))switch(n){case"prototype":case"constructor":case"length":case"name":continue;default:Ax[n]=$[n];break}globalThis.THREE?console.warn("Threejs is already imported"):globalThis.THREE=rj;exports.$physicsKey=soe;exports.ActionBuilder=oi;exports.ActionCollection=mI;exports.ActionModel=vr;exports.Addressables=cF;exports.AlignmentConstraint=EA;exports.AmbientMode=tf;exports.Animation=Uo;exports.AnimationCurve=Eu;exports.AnimationExtension=xb;exports.AnimationTrackHandler=Fb;exports.Animator=ar;exports.AnimatorConditionMode=_l;exports.AnimatorController=mu;exports.AnimatorControllerParameterType=J1;exports.AnimatorStateInfo=n0;exports.Antialiasing=FA;exports.Application=dF;exports.ApplicationEvents=q0;exports.AssetDatabase=wL;exports.AssetReference=qn;exports.AttachedObject=io;exports.AttachedObjectEvents=h_;exports.AudioExtension=Nb;exports.AudioListener=If;exports.AudioSource=xn;exports.AudioTrackHandler=cu;exports.AvatarBlink_Simple=Tu;exports.AvatarEyeLook_Rotation=dp;exports.AvatarLoader=Cb;exports.AvatarMarker=jn;exports.AvatarModel=wb;exports.Avatar_Brain_LookAt=Em;exports.Avatar_MouthShapes=UA;exports.Avatar_MustacheShake=KI;exports.Avatar_POI=Ns;exports.Axes=Hd;exports.AxesHelper=fp;exports.BaseUIComponent=Go;exports.BasicIKConstraint=eM;exports.BehaviorExtension=Gb;exports.BehaviorModel=rs;exports.Behaviour=Ce;exports.Bloom=Pu;exports.BoxCollider=zA;exports.BoxGizmo=Mu;exports.BoxHelperComponent=Zr;exports.Button=Vc;exports.CallInfo=su;exports.Camera=ki;exports.Canvas=ws;exports.CanvasGroup=mp;exports.CapsuleCollider=ql;exports.ChangeMaterialOnClick=HA;exports.ChangeTransformOnClick=ku;exports.CharacterController=Ou;exports.CharacterControllerInput=Wc;exports.ChromaticAberration=WA;exports.CircularBuffer=Ma;exports.ClearFlags=hN;exports.ClipExtrapolation=xl;exports.Collider=Na;exports.Collision=ZN;exports.CollisionDetectionMode=Sb;exports.ColorAdjustments=uh;exports.ColorBySpeedModule=Lu;exports.ColorOverLifetimeModule=qA;exports.Component=eh;exports.ComponentEvents=fA;exports.ComponentLifecycleEvents=pA;exports.ConnectionEvents=rL;exports.ContactPoint=KN;exports.Context=_t;exports.ContextArgs=Qq;exports.ContextEvent=xr;exports.ContextRegistry=mn;exports.ControlTrackHandler=Ub;exports.ControllerEvents=cc;exports.ControllerType=rf;exports.CustomBranding=gh;exports.CustomShader=fr;exports.DefaultReflectionMode=W0;exports.Deletable=dM;exports.DeleteBox=Xb;exports.DepthOfField=Yo;exports.DeviceFlag=Yb;exports.DocumentExtension=fM;exports.DragControls=Rl;exports.DropListener=XA;exports.Duplicatable=Nu;exports.EXTENSION_NAME=a0;exports.EmissionModule=Ga;exports.EmphasizeOnClick=vp;exports.EngineLoadingView=Lg;exports.EventList=sr;exports.EventListEvent=vb;exports.EventSystem=tr;exports.EventTrigger=Kb;exports.FieldWithDefault=uI;exports.FileSpawnModel=bN;exports.File_Event=_N;exports.FixedJoint=_M;exports.FlyControls=bM;exports.Fog=bp;exports.FrameEvent=Mr;exports.GameObject=$;exports.Gizmos=_a;exports.GltfExport=Ac;exports.GltfExportBox=CM;exports.GltfLoadEvent=lu;exports.GltfLoadEventType=HN;exports.Gradient=dh;exports.Graphic=Bu;exports.GraphicRaycaster=YI;exports.Graphics=mr;exports.GridHelper=xp;exports.GridLayoutGroup=cM;exports.GroundProjectedEnv=zu;exports.GroupActionModel=Tl;exports.HideFlags=ML;exports.HideOnStart=hM;exports.HingeJoint=YA;exports.HorizontalLayoutGroup=aM;exports.HostData=qW;exports.Image=gp;exports.ImageReference=ef;exports.ImageReferenceSerializer=lF;exports.InheritVelocityModule=ph;exports.Input=iO;exports.InputEvents=ha;exports.InputField=Gu;exports.InstancingUtil=ir;exports.InstantiateEvent=cL;exports.InstantiateIdProvider=Us;exports.InstantiateOptions=Ta;exports.Interactable=np;exports.JoinedRoomResponse=DW;exports.KeyEventArgs=jy;exports.LODGroup=KA;exports.LODModel=Qu;exports.LeftRoomResponse=kW;exports.Light=lr;exports.LightData=uF;exports.LimitVelocityOverLifetimeModule=Sn;exports.LoadingElementOptions=t7;exports.LogStats=EM;exports.LogType=xa;exports.LookAt=Hu;exports.LookAtConstraint=IA;exports.MainModule=ls;exports.MarkerType=JI;exports.MaskableGraphic=QA;exports.Mathf=Ze;exports.MeshCollider=GA;exports.MeshRenderer=yb;exports.MinMaxCurve=ot;exports.MinMaxGradient=cr;exports.NEEDLE_ENGINE_GENERATOR=ak;exports.NEEDLE_ENGINE_VERSION=wE;exports.NEEDLE_progressive=Bo;exports.NeedleEngineHTMLElement=zM;exports.NeedleGltfLoader=UM;exports.NeedlePatchesKey=Ky;exports.NestedGltf=tx;exports.NetworkConnection=aL;exports.Networking=Uu;exports.NoiseModule=di;exports.ObjectRaycaster=vu;exports.OffsetConstraint=Vu;exports.OpenURL=wp;exports.OrbitControls=ah;exports.Outline=pp;exports.OwnershipEvent=oL;exports.OwnershipModel=ab;exports.Padding=ch;exports.ParticleBurst=Fm;exports.ParticleSubEmitter=nx;exports.ParticleSystem=ln;exports.ParticleSystemRenderer=Xc;exports.Physics=hO;exports.PhysicsMaterialCombine=oa;exports.PixelationEffect=ZA;exports.PlayAnimationOnClick=hh;exports.PlayAudioOnClick=yp;exports.PlayableDirector=ou;exports.PlayerColor=yu;exports.PlayerState=af;exports.PlayerStateEvent=GN;exports.PlayerSync=FM;exports.PlayerView=fF;exports.PlayerViewManager=pF;exports.PointerEventData=$h;exports.PointerType=tO;exports.PostProcessingEffect=Vs;exports.PostProcessingHandler=sx;exports.PreliminaryAction=_p;exports.PreliminaryTrigger=VA;exports.ProgressiveLoadingInfo=g3;exports.RGBAColor=xi;exports.RapierPhysics=Lh;exports.RawImage=Hb;exports.RaycastOptions=jo;exports.Raycaster=lp;exports.Rect=sM;exports.RectTransform=xs;exports.ReflectionProbe=ip;exports.RegisteredAnimationInfo=_b;exports.RemoteSkybox=ju;exports.RenderTexture=Fl;exports.RenderTextureSerializer=v3;exports.Renderer=Ki;exports.RendererData=hF;exports.RendererLightmap=Sm;exports.Rigidbody=Gi;exports.RigidbodyConstraints=tn;exports.RoomEvents=Ji;exports.RotationBySpeedModule=Br;exports.RotationOverLifetimeModule=mo;exports.SceneLightSettings=t_;exports.SceneSwitcher=Dr;exports.ScreenCapture=$A;exports.ScreenSpaceAmbientOcclusion=Yc;exports.SendQueue=Zs;exports.SetActiveOnClick=Ap;exports.ShadowCatcher=tv;exports.ShapeModule=hn;exports.SignalAsset=kA;exports.SignalReceiver=up;exports.SignalReceiverEvent=hp;exports.SignalTrackHandler=Lm;exports.Size=nM;exports.SizeBySpeedModule=js;exports.SizeOverLifetimeModule=fh;exports.SkinnedMeshRenderer=dI;exports.SmoothFollow=mh;exports.SpatialHtml=RM;exports.SpatialTrigger=nv;exports.SpatialTriggerReceiver=Ia;exports.SpectatorCamera=ax;exports.SphereCollider=NA;exports.SphereIntersection=lO;exports.SphereOverlapResult=$N;exports.Sprite=Jc;exports.SpriteData=Ip;exports.SpriteRenderer=Wu;exports.SpriteSheet=sv;exports.StateMachineBehaviour=g7;exports.SubEmitterSystem=Gm;exports.SyncedCamera=cx;exports.SyncedRoom=Ah;exports.SyncedTransform=jl;exports.TapGestureTrigger=uM;exports.TeleportTarget=kb;exports.TestRunner=BM;exports.TestSimulateUserData=DM;exports.Text=Ws;exports.TextBuilder=Wb;exports.TextExtension=qb;exports.TextureSheetAnimationModule=hs;exports.TiltShiftEffect=Va;exports.Time=uO;exports.ToneMapping=ov;exports.TrackHandler=OA;exports.TrackType=pr;exports.TrailModule=Fi;exports.TransformData=bb;exports.TransformGizmo=qu;exports.TriggerBuilder=rr;exports.TriggerModel=Mc;exports.TypeStore=Q;exports.UIRaycastUtils=Ef;exports.UIRootComponent=DA;exports.USDObject=eo;exports.USDZExporter=vo;exports.USDZText=Pl;exports.Upload_Result=ES;exports.UriSerializer=y3;exports.UsageMarker=sp;exports.UserJoinedOrLeftRoomModel=OW;exports.VRUserState=Oo;exports.VariantAction=gI;exports.VelocityOverLifetimeModule=Qi;exports.VerticalLayoutGroup=oM;exports.VideoPlayer=us;exports.ViewDevice=Ea;exports.Vignette=Xu;exports.VisibilityAction=jA;exports.Voip=Gc;exports.Volume=hx;exports.VolumeParameter=Ft;exports.VolumeProfile=LA;exports.WaitForFrames=$ne;exports.WaitForSeconds=BN;exports.Watch=hf;exports.WebAR=ru;exports.WebARCameraBackground=ux;exports.WebARSessionRoot=rh;exports.WebXR=wt;exports.WebXRAvatar=ba;exports.WebXRController=Yi;exports.WebXREvent=Ei;exports.WebXRImageTracking=dx;exports.WebXRImageTrackingModel=Kc;exports.WebXRPlaneTracking=fx;exports.WebXRSync=Om;exports.WebXRTrackedImage=vc;exports.XRFlag=ns;exports.XRGrabModel=px;exports.XRGrabRendering=OM;exports.XRRig=Ob;exports.XRSessionMode=_m;exports.XRState=to;exports.XRStateFlag=An;exports.__Ignore=LM;exports.__internalNotifyObjectDestroyed=EL;exports.activeInHierarchyFieldName=Sc;exports.addCustomExtension=IX;exports.addFile=iE;exports.addFileFromUrl=xN;exports.addGltfLoadEventListener=Wre;exports.addNewComponent=$l;exports.addPatch=n6;exports.apply=ub;exports.applyChanges=noe;exports.beginListenDestroy=uL;exports.beginListenFileSpawn=wN;exports.beginListenInstantiate=dL;exports.build_scene_functions=Gq;exports.builtinComponentKeyName=Fh;exports.calculateProgress01=j1;exports.colorSerializer=BX;exports.componentSerializer=c0;exports.copyTexture=cO;exports.createGLTFLoader=NM;exports.createMotion=EF;exports.debugNet=Ps;exports.debugOwner=fg;exports.deepClone=w_;exports.delay=Wm;exports.deserializeObject=U0;exports.destroy=Vl;exports.destroyComponentInstance=vL;exports.detectARSupport=cN;exports.detectVRSupport=lN;exports.disposeObjectResources=Po;exports.download=oF;exports.download_file=Q1;exports.editorGuidKeyName=wg;exports.effectsOrder=cE;exports.eventListSerializer=FX;exports.findAnimations=qN;exports.findAnimationsLate=Xre;exports.findByGuid=AA;exports.findObjectOfType=_L;exports.findObjectsOfType=bL;exports.findUsers=B1;exports.foreachComponent=gu;exports.foreachComponentEnumerator=k1;exports.forward=kj;exports.generateSeed=lb;exports.getComponent=Qf;exports.getComponentInChildren=Hf;exports.getComponentInParent=Am;exports.getComponents=gA;exports.getComponentsInChildren=mA;exports.getComponentsInParent=hb;exports.getIp=Ez;exports.getIpAndLocation=Iz;exports.getIpCloudflare=Sz;exports.getLoader=zo;exports.getOrAddComponent=P1;exports.getParam=ce;exports.getPath=_z;exports.getUrlParams=jm;exports.getUserCount=h6;exports.getWorldDirection=Lj;exports.getWorldEuler=rO;exports.getWorldPosition=Ct;exports.getWorldQuaternion=Bn;exports.getWorldRotation=b1;exports.getWorldScale=is;exports.hasProLicense=Ol;exports.hash=G1;exports.instantiate=vA;exports.isActiveInHierarchy=TL;exports.isActiveSelf=Vf;exports.isAnimationAction=aO;exports.isDebugMode=Az;exports.isDestroyed=D1;exports.isDevEnvironment=ho;exports.isHostedOnGlitch=ik;exports.isHotReloading=$re;exports.isLocalNetwork=zs;exports.isMobileDevice=_u;exports.isMozillaXR=xE;exports.isQuest=wz;exports.isSafari=hc;exports.isUsageTrackingEnabled=SL;exports.isUsingInstancing=db;exports.isiOS=nm;exports.loadSync=WN;exports.logHierarchy=z0;exports.lookAtInverse=Pj;exports.makeId=yz;exports.makeIdFromRandomWords=$D;exports.markAsInstancedRendered=PL;exports.moveComponentInstance=R1;exports.nameof=mz;exports.nameofFactory=S0;exports.objectSerializer=A3;exports.parseSync=jN;exports.prefix=oJ;exports.pushState=KD;exports.randomNumber=ZD;exports.register=eoe;exports.registerComponent=mb;exports.registerComponentExtension=hI;exports.registerExtensions=m3;exports.registerLoader=H1;exports.registerPrefabProvider=pL;exports.relativePathPrefix=tk;exports.removeComponent=T1;exports.removeCustomExtension=MX;exports.removeGltfLoadEventListener=qre;exports.removePatch=s6;exports.resolveUrl=Xl;exports.sanitizeString=ek;exports.screenshot=yoe;exports.sendDestroyed=hL;exports.serializable=w;exports.serializeObject=$2;exports.serializeable=Wf;exports.setActive=Bg;exports.setDestroyed=BL;exports.setOrAddParamsToUrl=im;exports.setParam=vz;exports.setParamWithoutReload=JD;exports.setState=bE;exports.setUsageTrackingEnabled=c6;exports.setWorldEuler=oO;exports.setWorldPosition=bn;exports.setWorldPositionXYZ=_f;exports.setWorldQuaternion=or;exports.setWorldQuaternionXYZW=sO;exports.setWorldRotation=Uj;exports.setWorldRotationXYZ=K_;exports.setWorldScale=dS;exports.showBalloonMessage=ss;exports.showBalloonWarning=Vo;exports.showDebugConsole=v1;exports.slerp=nO;exports.syncDestroy=cb;exports.syncField=PM;exports.syncInstantiate=M1;exports.textureToCanvas=Nj;exports.tryFindObject=lf;exports.tryFindObjectByName=XN;exports.tryFindScript=Yre;exports.unregister=toe;exports.upload_file=rF;exports.validate=La;
|
|
5057
|
+
<a href="https://engine.needle.tools/docs/project_structure.html#creating-and-installing-a-npmdef" target="_blank">documentation</a>`,xa.Warn)}}if(e.children)for(const r of e.children)await fE(n,r,t)}function Vre(n,e){const{instance:t,compData:i,obj:s}=n;e.object=s,e.target=t,U0(t,i,e),QN&&console.debug("add "+i.name,i,t)}class UM{createBuiltinComponents(e,t,i,s,r){return Hre(e,t,i,s,r)}writeBuiltinComponentData(e,t){return Gre(e,t)}parseSync(e,t,i,s){return jN(e,t,i,s)}loadSync(e,t,i,s,r){return WN(e,t,i,s,r)}}H1(UM);const jre=ce("printGltf");var HN=(n=>(n[n.BeforeLoad=0]="BeforeLoad",n[n.AfterLoaded=1]="AfterLoaded",n[n.FinishedSetup=10]="FinishedSetup",n))(HN||{});class lu{constructor(e,t,i,s){u(this,"context");u(this,"loader");u(this,"path");u(this,"gltf");this.context=e,this.path=t,this.loader=i,this.gltf=s}}const Ul={};function Wre(n,e){Ul[n]=Ul[n]||[],Ul[n].push(e)}function qre(n,e){if(Ul[n]){const t=Ul[n].indexOf(e);t>=0&&Ul[n].splice(t,1)}}function cf(n,e){if(Ul[n])for(const t of Ul[n])t(e)}async function VN(n,e,t,i,s){jre&&console.warn("glTF",e,t),await zo().createBuiltinComponents(n,e,t,i,s)}function NM(n,e){const t=new qf;return m3(t,e,n),t}function jN(n,e,t,i){typeof t!="string"&&console.warn("Parse gltf binary without path, this might lead to errors in resolving extensions. Please provide the source path of the gltf/glb file",t,typeof t);const s=NM(t,n),r=hI(s);return new Promise((o,a)=>{try{_A(s,n),cf(0,new lu(n,t,s)),s.parse(e,t,async c=>{cf(1,new lu(n,t,s,c)),await VN(n,t,c,i,r),cf(10,new lu(n,t,s,c)),NL(c.scene,n),o(c)},c=>{console.error("failed loading "+t,c),o(void 0)})}catch(c){console.error(c),a(c)}})}function WN(n,e,t,i,s){const r=NM(e,n),o=hI(r);return new Promise((a,c)=>{try{_A(r,n),cf(0,new lu(n,e,r)),r.load(e,async l=>{cf(1,new lu(n,e,r,l)),await VN(n,t,l,i,o),cf(10,new lu(n,e,r,l)),NL(l.scene,n),a(l)},l=>{s==null||s.call(r,l)},l=>{console.error("failed loading "+e,l),a(void 0)})}catch(l){console.error(l),c(l)}})}function Xre(n,e,t,i=!1){e&&e.animations&&e.animations.length>0&&t.push(()=>{qN(e,i)})}function qN(n,e=!1){if(!n||!n.animations||!n.scene||!e&&!Hf(n.scene,Uo))return;for(let i=0;i<n.animations.length;i++){const s=n.animations[i];if(!(!s.tracks||s.tracks.length<=0))for(const r in s.tracks){const o=s.tracks[r],a=o.__objectName??o.name.substring(0,o.name.indexOf(".")),c=n.scene.getObjectByName(a);if(!c)continue;let l=t(c);if(!l)if(e)l=$l(n.scene,new Uo);else{console.warn("Failed finding animator for",o.name,a);continue}const h=l.animations=l.animations||[];s.name_animator=l.name,h.indexOf(s)<0&&h.push(s)}}function t(i){var r;if(!i)return;const s=(r=i.userData)==null?void 0:r.components;if(s&&s.length>0)for(let o=0;o<s.length;o++){const a=s[o];if(a instanceof ar||a instanceof Uo)return i}return t(i.parent)}}function XN(n,e,t=!0){if(e.userData&&e.userData.name===n)return e;if(e.children&&e.children.length>0)for(let i=0;i<e.children.length;i++){const s=e.children[i],r=XN(n,s,t);if(r)return r}}function Yre(n,e=null){const t=e??_t.Current.scripts;for(const i in t){const s=t[i];if(s&&s.guid===n)return s}return null}H1(UM);const Nr=ce("debugwebcomponent"),FD="needle-engine",YN="vr",JN="desktop",Jre=[zh,YN,JN],sg="ar-session-active",rg="desktop-session-active",Kre=["hash","src","camera-controls","loadstart","progress","loadfinished","dracoDecoderPath","dracoDecoderType","ktx2DecoderPath"];class zM extends HTMLElement{constructor(){super();u(this,"gameObject",$);u(this,"GameObject",$);u(this,"_context");u(this,"_overlay_ar");u(this,"_loadingProgress01",0);u(this,"_loadingView");u(this,"_previousSrc",null);u(this,"_isCurrentlySettingsSourceAttribute",!1);u(this,"onReady",()=>{var t;return(t=this._loadingView)==null?void 0:t.onLoadingFinished()});this._overlay_ar=new Vq,this._context=new _t({domElement:this}),this.addEventListener("ready",this.onReady)}static get observedAttributes(){return Kre}get loadingProgress01(){return this._loadingProgress01}get loadingFinished(){return this.loadingProgress01>.999}get cameraControls(){const t=this.getAttribute("camera-controls");return!(t===null||t==="False"||t==="false"||t==="0")}getContext(){return new Promise((t,i)=>{if(this._context&&this.loadingFinished)t(this._context);else{const s=()=>{this.removeEventListener("loadfinished",s),this._context&&this.loadingFinished&&t(this._context)};this.addEventListener("loadfinished",s)}})}get context(){return this._context}get Context(){return this._context}async connectedCallback(){Nr&&(console.log("<needle-engine> connected"),console.dir(this)),this.onSetupDesktop();const t=this.getAttribute("src")??globalThis["needle:codegen_files"];t&&t.length>0&&await this.onLoad(t,!0),this.onSetupDesktop()}disconnectedCallback(){var t;(t=this._context)==null||t.onDestroy()}attributeChangedCallback(t,i,s){switch(t){case"src":Nr&&console.log("src changed to type:",typeof s,', from "',i,'" to "',s),this.onLoad(s,!1);break;case"hash":this._context&&(this._context.hash=s);break;case"loadstart":case"progress":case"loadfinished":typeof s=="string"&&s.length>0&&(Nr&&console.log(t+" attribute changed",s),this.registerEventFromAttribute(t,s));break;case"dracoDecoderPath":Nr&&console.log("dracoDecoderPath",s),OR(s);break;case"dracoDecoderType":s==="wasm"||s==="js"?(Nr&&console.log("dracoDecoderType",s),LR(s)):console.error("Invalid dracoDecoderType",s,"expected js or wasm");break;case"ktx2DecoderPath":Nr&&console.log("ktx2DecoderPath",s),FR(s);break}}async onLoad(t,i){var h,d;if(this._isCurrentlySettingsSourceAttribute||t===this._previousSrc)return;if(!t||!t.length){console.error("Needle Engine: No source specified",t);return}if(!this._context){console.error("Needle Engine: Context not initialized");return}this._previousSrc=t,this._isCurrentlySettingsSourceAttribute=!0,this.setAttribute("src",t==null?void 0:t.toString()),this._isCurrentlySettingsSourceAttribute=!1;const s=this.getAttribute("alias");this.classList.add("loading"),Nr&&console.log("Needle Engine: Begin loading",s??"");const r=!0,o=this.dispatchEvent(new CustomEvent("loadstart",{detail:{context:this._context,alias:s},cancelable:r}));!this._loadingView&&o&&(this._loadingView=new Lg(this)),o&&((h=this._loadingView)==null||h.onLoadingBegin("begin load")),this.onBeforeBeginLoading(),Nr&&console.log(t);let a;Array.isArray(t)?a=t:t.startsWith("[")&&t.endsWith("]")?a=JSON.parse(t):t.includes(",")?a=t.split(","):a=[t];let c=null;if((a==null?void 0:a.length)>0&&(c=async f=>{let p=0;f.hash&&(p=Number.parseInt(f.hash)??0);const g=zo();for(let m=0;m<a.length;m++){const A=a[m];if(!A.includes(".glb")&&!A.includes(".gltf")){const S=`Needle Engine: found suspicious src "${A}"`;console.warn(S),zs()&&Vo(S)}const v=Zre(A),b={name:v,progress:null,index:m,count:a.length},y={detail:{context:f,name:v,progress:b.progress,index:m,count:a.length,totalProgress01:this._loadingProgress01}},_=await g.loadSync(f,A,A,p,S=>{var T;b.progress=S,this._loadingProgress01=j1(b),o&&((T=this._loadingView)==null||T.onLoadingUpdate(b)),y.detail.progress=S,y.detail.totalProgress01=this._loadingProgress01,this.dispatchEvent(new CustomEvent("progress",y))}),C=_==null?void 0:_.scene;C&&$.add(C,f.scene,f)}i||ym(f)}),!c){console.error("Needle Engine: No files to load",t);return}const l=this.getAttribute("hash");l!=null&&(this._context.hash=l),this._context.alias=s,this._context.isCreated?await c(this._context):await this._context.onCreate(c),this._loadingProgress01=1,o&&((d=this._loadingView)==null||d.onLoadingUpdate(1,"creating scene")),this.classList.remove("loading"),this.classList.add("loading-finished"),Nr&&console.log("Needle Engine: finished loading",s??""),this.dispatchEvent(new CustomEvent("loadfinished",{detail:{context:this._context,src:s??t}}))}registerEventFromAttribute(t,i){if(typeof i=="string"&&i.length>0){const s=(0,eval)(i);typeof s=="function"&&this.addEventListener(t,r=>s==null?void 0:s.call(globalThis,this._context,r))}}getAROverlayContainer(){return this._overlay_ar.findOrCreateARContainer(this)}getVROverlayContainer(){for(let t=0;t<this.children.length;t++){const i=this.children[t];if(i.classList.contains("vr"))return i}return null}onEnterAR(t,i){var s;this.onSetupAR(),this._overlay_ar.onBegin(this._context,i,t),this.dispatchEvent(new CustomEvent("enter-ar",{detail:{session:t,context:this._context,htmlContainer:(s=this._overlay_ar)==null?void 0:s.ARContainer}}))}onExitAR(t){var i;this._overlay_ar.onEnd(this._context),this.onSetupDesktop(),this.dispatchEvent(new CustomEvent("exit-ar",{detail:{session:t,context:this._context,htmlContainer:(i=this._overlay_ar)==null?void 0:i.ARContainer}}))}onEnterVR(t){this.onSetupVR(),this.dispatchEvent(new CustomEvent("enter-vr",{detail:{session:t,context:this._context}}))}onExitVR(t){this.onSetupDesktop(),this.dispatchEvent(new CustomEvent("exit-vr",{detail:{session:t,context:this._context}}))}onSetupAR(){this.classList.add(sg),this.classList.remove(rg);const t=this.getAROverlayContainer();t&&(t.classList.add(sg),t.classList.remove(rg)),this.foreachHtmlElement(i=>this.setupElementsForMode(i,zh))}onSetupVR(){this.classList.remove(sg),this.classList.remove(rg),this.foreachHtmlElement(t=>this.setupElementsForMode(t,YN))}onSetupDesktop(){this.classList.remove(sg),this.classList.add(rg);const t=this.getAROverlayContainer();t&&(t.classList.remove(sg),t.classList.add(rg)),this.foreachHtmlElement(i=>this.setupElementsForMode(i,JN))}setupElementsForMode(t,i,s=null){var o;if(t===((o=this._context)==null?void 0:o.renderer.domElement)||t.id==="VRButton"||t.id==="ARButton")return;if(t.style.position="absolute",t.classList.contains(i))t.style.visibility="visible",t.style.display==="none"&&(t.style.display="block");else for(const a of Jre)t.classList.contains(a)&&(t.style.visibility="hidden",t.style.display="none")}foreachHtmlElement(t){for(let i=0;i<this.children.length;i++){const s=this.children[i];s.style&&t(s)}}onBeforeBeginLoading(){const t=this.getAttribute("dracoDecoderPath");t&&(Nr&&console.log("using custom draco decoder path",t),OR(t));const i=this.getAttribute("dracoDecoderType");i&&(Nr&&console.log("using custom draco decoder type",i),LR(i));const s=this.getAttribute("ktx2DecoderPath");s&&(Nr&&console.log("using custom ktx2 decoder path",s),FR(s))}}window.customElements.get(FD)||window.customElements.define(FD,zM);function Zre(n){const e=n.split("/");let t=e[e.length-1],i=t.indexOf("?");return i>0&&(t=t.substring(0,i)),decodeURIComponent(t)}const $re=Object.freeze(Object.defineProperty({__proto__:null,NeedleEngineHTMLElement:zM},Symbol.toStringTag,{value:"Module"}));mn.registerCallback(xr.MissingCamera,n=>{const e=n.context.scene,t="unknown",i=new Ie;e.add(i);const s=new ki,r=$l(i,s,!0);return r.sourceId=t,r.clearFlags=2,r.backgroundColor=new xi(.5,.5,.5,1),i.position.x=-2,i.position.y=2,i.position.z=2,r});mn.registerCallback(xr.ContextCreated,n=>{if(!n.context.mainCamera)return;const e=n.context.domElement;if((e==null?void 0:e.cameraControls)===!0){const t=yee(n.context.mainCamera);if((t==null?void 0:t.isCameraController)===!0)return;const i=n.context.mainCameraComponent,s=i==null?void 0:i.gameObject;if(s){const r=$l(s,new ah,!1);r.sourceId="unknown"}else console.warn("Missing camera object, can not add orbit controls")}});const pE=ce("debughotreload");let Qm=!1;const Wg=new Map;function eoe(){return Qm}function toe(n){var i;if(Qm)return;const t=n.constructor.name;Wg.has(t)?(i=Wg.get(t))==null||i.push(n):Wg.set(t,[n])}function ioe(n){if(Qm)return;const t=n.constructor.name,i=Wg.get(t);if(!i)return;const s=i.indexOf(n);s!==-1&&i.splice(s,1)}let UD=!1;function noe(){if(pE||UD)return;UD=!0;const n=console.error;console.error=(...e)=>{if(e.length){const t=e[0];if(typeof t=="string"&&t.includes("[hmr] Failed to reload ")){console.log("[Needle Engine] Hot reloading failed"),window.location.reload();return}}n.apply(console,e)}}function soe(n){pE&&console.log("Hot Reload - apply changes"),noe();for(const e of Object.keys(n))try{Qm=!0;const t=Q.get(e);if(!t)continue;const i=n[e],s=Wg.get(i.name);let r="[Needle Engine] Updating type: "+e,o=(s==null?void 0:s.length)??-1;o>0?r+=" x"+o:r+=" - no instances",console.log(r);const a=Object.getOwnPropertyNames(t.prototype),c=Object.getOwnPropertyDescriptors(i.prototype);for(const l in c)c[l].writable&&(t.prototype[l]=n[e].prototype[l]);for(const l of a)c[l]||delete t.prototype[l];if(s){const l=new i,h=Object.getOwnPropertyDescriptors(l);for(const d of s){const f=d,p=f.isComponent===!0,g=p?f.activeAndEnabled:!0,m=p?f.context:void 0;try{if(p&&pc(f,m),p&&g&&(f.enabled=!1),d.onBeforeHotReloadFields&&d.onBeforeHotReloadFields()===!1)continue;for(const A in h)if(h[A].writable){if(d[A]===void 0)d[A]=l[A];else if(typeof d[A]=="function"&&!d[A].prototype){const b=d[A],y=b.name,_="bound ";if(y===_)continue;const C=b.name.substring(_.length),S=i.prototype[C];S&&(d[A]=S.bind(d))}}d.onAfterHotReloadFields&&d.onAfterHotReloadFields()}finally{p&&O1(f,m),p&&g&&(f.enabled=!0)}}}}catch(t){if(pE)console.error(t);else return!1}finally{Qm=!1,yc(xa.Log,"Script changes applied (HMR)")}return!0}const roe=Symbol("object"),ND=new Ma(()=>new E,20);class KN{constructor(e,t,i,s,r){u(this,"_point");u(this,"_normal");u(this,"distance");u(this,"impulse");u(this,"friction");this._point=e,this.distance=t,this._normal=i,this.impulse=s,this.friction=r}get point(){return ND.get().set(this._point.x,this._point.y,this._point.z)}get normal(){return ND.get().set(this._normal.x,this._normal.y,this._normal.z)}}class ZN{constructor(e,t,i){u(this,"contacts");u(this,"me");u(this,"_collider");u(this,"_gameObject");this.me=e,this._collider=t,this._gameObject=t.gameObject,this.contacts=i}get collider(){return this._collider}get gameObject(){return this._gameObject}get rigidBody(){var e;return(e=this.collider)==null?void 0:e.attachedRigidbody}}class $N{constructor(e,t){u(this,"object");u(this,"collider");this.object=e,this.collider=t}}let ze;const Hm=new Array(32).fill(void 0);Hm.push(void 0,null,!0,!1);let zD;Hm.length;function GD(){return zD.byteLength,zD}const ooe=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});function mt(n,e){if(!(n instanceof e))throw new Error(`expected instance of ${e.name}`);return n.ptr}ooe.decode();let QD,HD,qg=32;function VD(n){if(qg==1)throw new Error("out of js stack");return Hm[--qg]=n,qg}function aoe(){return QD.byteLength,QD}function coe(){return HD.byteLength,HD}let gr=0;function Ph(n,e){const t=e(4*n.length);return aoe().set(n,t/4),gr=n.length,t}function ky(n,e){const t=e(4*n.length);return coe().set(n,t/4),gr=n.length,t}class m_{static __wrap(e){const t=Object.create(m_.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();ze.__wbg_raweventqueue_free(e)}constructor(e){const t=ze.raweventqueue_new(e);return m_.__wrap(t)}drainCollisionEvents(e){try{ze.raweventqueue_drainCollisionEvents(this.ptr,VD(e))}finally{Hm[qg++]=void 0}}drainContactForceEvents(e){try{ze.raweventqueue_drainContactForceEvents(this.ptr,VD(e))}finally{Hm[qg++]=void 0}}clear(){ze.raweventqueue_clear(this.ptr)}}class Aa{static __wrap(e){const t=Object.create(Aa.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();ze.__wbg_rawgenericjoint_free(e)}static spherical(e,t){mt(e,ut),mt(t,ut);const i=ze.rawgenericjoint_spherical(e.ptr,t.ptr);return Aa.__wrap(i)}static prismatic(e,t,i,s,r,o){mt(e,ut),mt(t,ut),mt(i,ut);const a=ze.rawgenericjoint_prismatic(e.ptr,t.ptr,i.ptr,s,r,o);return a===0?void 0:Aa.__wrap(a)}static fixed(e,t,i,s){mt(e,ut),mt(t,Qn),mt(i,ut),mt(s,Qn);const r=ze.rawgenericjoint_fixed(e.ptr,t.ptr,i.ptr,s.ptr);return Aa.__wrap(r)}static revolute(e,t,i){mt(e,ut),mt(t,ut),mt(i,ut);const s=ze.rawgenericjoint_revolute(e.ptr,t.ptr,i.ptr);return s===0?void 0:Aa.__wrap(s)}}class GM{static __wrap(e){const t=Object.create(GM.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();ze.__wbg_rawpointprojection_free(e)}point(){const e=ze.rawpointprojection_point(this.ptr);return ut.__wrap(e)}isInside(){return ze.rawpointprojection_isInside(this.ptr)!==0}}class QM{static __wrap(e){const t=Object.create(QM.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();ze.__wbg_rawrayintersection_free(e)}normal(){const e=ze.rawrayintersection_normal(this.ptr);return ut.__wrap(e)}toi(){return ze.rawintegrationparameters_dt(this.ptr)}featureType(){return ze.rawrayintersection_featureType(this.ptr)>>>0}featureId(){try{const i=ze.__wbindgen_add_to_stack_pointer(-16);ze.rawrayintersection_featureId(i,this.ptr);var e=GD()[i/4+0],t=GD()[i/4+1];return e===0?void 0:t>>>0}finally{ze.__wbindgen_add_to_stack_pointer(16)}}}class Qn{static __wrap(e){const t=Object.create(Qn.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();ze.__wbg_rawrotation_free(e)}constructor(e,t,i,s){const r=ze.rawrotation_new(e,t,i,s);return Qn.__wrap(r)}static identity(){const e=ze.rawrotation_identity();return Qn.__wrap(e)}get x(){return ze.rawintegrationparameters_dt(this.ptr)}get y(){return ze.rawrotation_y(this.ptr)}get z(){return ze.rawintegrationparameters_erp(this.ptr)}get w(){return ze.rawrotation_w(this.ptr)}}class Ut{static __wrap(e){const t=Object.create(Ut.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();ze.__wbg_rawshape_free(e)}static cuboid(e,t,i){const s=ze.rawshape_cuboid(e,t,i);return Ut.__wrap(s)}static roundCuboid(e,t,i,s){const r=ze.rawshape_roundCuboid(e,t,i,s);return Ut.__wrap(r)}static ball(e){const t=ze.rawshape_ball(e);return Ut.__wrap(t)}static capsule(e,t){const i=ze.rawshape_capsule(e,t);return Ut.__wrap(i)}static cylinder(e,t){const i=ze.rawshape_cylinder(e,t);return Ut.__wrap(i)}static roundCylinder(e,t,i){const s=ze.rawshape_roundCylinder(e,t,i);return Ut.__wrap(s)}static cone(e,t){const i=ze.rawshape_cone(e,t);return Ut.__wrap(i)}static roundCone(e,t,i){const s=ze.rawshape_roundCone(e,t,i);return Ut.__wrap(s)}static polyline(e,t){const i=Ph(e,ze.__wbindgen_malloc),s=gr,r=ky(t,ze.__wbindgen_malloc),o=gr,a=ze.rawshape_polyline(i,s,r,o);return Ut.__wrap(a)}static trimesh(e,t){const i=Ph(e,ze.__wbindgen_malloc),s=gr,r=ky(t,ze.__wbindgen_malloc),o=gr,a=ze.rawshape_trimesh(i,s,r,o);return Ut.__wrap(a)}static heightfield(e,t,i,s){const r=Ph(i,ze.__wbindgen_malloc),o=gr;mt(s,ut);const a=ze.rawshape_heightfield(e,t,r,o,s.ptr);return Ut.__wrap(a)}static segment(e,t){mt(e,ut),mt(t,ut);const i=ze.rawshape_segment(e.ptr,t.ptr);return Ut.__wrap(i)}static triangle(e,t,i){mt(e,ut),mt(t,ut),mt(i,ut);const s=ze.rawshape_triangle(e.ptr,t.ptr,i.ptr);return Ut.__wrap(s)}static roundTriangle(e,t,i,s){mt(e,ut),mt(t,ut),mt(i,ut);const r=ze.rawshape_roundTriangle(e.ptr,t.ptr,i.ptr,s);return Ut.__wrap(r)}static convexHull(e){const t=Ph(e,ze.__wbindgen_malloc),i=gr,s=ze.rawshape_convexHull(t,i);return s===0?void 0:Ut.__wrap(s)}static roundConvexHull(e,t){const i=Ph(e,ze.__wbindgen_malloc),s=gr,r=ze.rawshape_roundConvexHull(i,s,t);return r===0?void 0:Ut.__wrap(r)}static convexMesh(e,t){const i=Ph(e,ze.__wbindgen_malloc),s=gr,r=ky(t,ze.__wbindgen_malloc),o=gr,a=ze.rawshape_convexMesh(i,s,r,o);return a===0?void 0:Ut.__wrap(a)}static roundConvexMesh(e,t,i){const s=Ph(e,ze.__wbindgen_malloc),r=gr,o=ky(t,ze.__wbindgen_malloc),a=gr,c=ze.rawshape_roundConvexMesh(s,r,o,a,i);return c===0?void 0:Ut.__wrap(c)}castShape(e,t,i,s,r,o,a,c){mt(e,ut),mt(t,Qn),mt(i,ut),mt(s,Ut),mt(r,ut),mt(o,Qn),mt(a,ut);const l=ze.rawshape_castShape(this.ptr,e.ptr,t.ptr,i.ptr,s.ptr,r.ptr,o.ptr,a.ptr,c);return l===0?void 0:VM.__wrap(l)}intersectsShape(e,t,i,s,r){return mt(e,ut),mt(t,Qn),mt(i,Ut),mt(s,ut),mt(r,Qn),ze.rawshape_intersectsShape(this.ptr,e.ptr,t.ptr,i.ptr,s.ptr,r.ptr)!==0}contactShape(e,t,i,s,r,o){mt(e,ut),mt(t,Qn),mt(i,Ut),mt(s,ut),mt(r,Qn);const a=ze.rawshape_contactShape(this.ptr,e.ptr,t.ptr,i.ptr,s.ptr,r.ptr,o);return a===0?void 0:HM.__wrap(a)}containsPoint(e,t,i){return mt(e,ut),mt(t,Qn),mt(i,ut),ze.rawshape_containsPoint(this.ptr,e.ptr,t.ptr,i.ptr)!==0}projectPoint(e,t,i,s){mt(e,ut),mt(t,Qn),mt(i,ut);const r=ze.rawshape_projectPoint(this.ptr,e.ptr,t.ptr,i.ptr,s);return GM.__wrap(r)}intersectsRay(e,t,i,s,r){return mt(e,ut),mt(t,Qn),mt(i,ut),mt(s,ut),ze.rawshape_intersectsRay(this.ptr,e.ptr,t.ptr,i.ptr,s.ptr,r)!==0}castRay(e,t,i,s,r,o){return mt(e,ut),mt(t,Qn),mt(i,ut),mt(s,ut),ze.rawshape_castRay(this.ptr,e.ptr,t.ptr,i.ptr,s.ptr,r,o)}castRayAndGetNormal(e,t,i,s,r,o){mt(e,ut),mt(t,Qn),mt(i,ut),mt(s,ut);const a=ze.rawshape_castRayAndGetNormal(this.ptr,e.ptr,t.ptr,i.ptr,s.ptr,r,o);return a===0?void 0:QM.__wrap(a)}}class HM{static __wrap(e){const t=Object.create(HM.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();ze.__wbg_rawshapecontact_free(e)}distance(){return ze.rawshapecontact_distance(this.ptr)}point1(){const e=ze.rawpointprojection_point(this.ptr);return ut.__wrap(e)}point2(){const e=ze.rawshapecontact_point2(this.ptr);return ut.__wrap(e)}normal1(){const e=ze.rawshapecontact_normal1(this.ptr);return ut.__wrap(e)}normal2(){const e=ze.rawshapecontact_normal2(this.ptr);return ut.__wrap(e)}}class VM{static __wrap(e){const t=Object.create(VM.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();ze.__wbg_rawshapetoi_free(e)}toi(){return ze.rawintegrationparameters_dt(this.ptr)}witness1(){const e=ze.rawrayintersection_normal(this.ptr);return ut.__wrap(e)}witness2(){const e=ze.rawshapetoi_witness2(this.ptr);return ut.__wrap(e)}normal1(){const e=ze.rawshapetoi_normal1(this.ptr);return ut.__wrap(e)}normal2(){const e=ze.rawshapetoi_normal2(this.ptr);return ut.__wrap(e)}}class ut{static __wrap(e){const t=Object.create(ut.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();ze.__wbg_rawvector_free(e)}static zero(){const e=ze.rawvector_zero();return ut.__wrap(e)}constructor(e,t,i){const s=ze.rawvector_new(e,t,i);return ut.__wrap(s)}get x(){return ze.rawintegrationparameters_dt(this.ptr)}set x(e){ze.rawintegrationparameters_set_dt(this.ptr,e)}get y(){return ze.rawrotation_y(this.ptr)}set y(e){ze.rawvector_set_y(this.ptr,e)}get z(){return ze.rawintegrationparameters_erp(this.ptr)}set z(e){ze.rawintegrationparameters_set_erp(this.ptr,e)}xyz(){const e=ze.rawvector_xyz(this.ptr);return ut.__wrap(e)}yxz(){const e=ze.rawvector_yxz(this.ptr);return ut.__wrap(e)}zxy(){const e=ze.rawvector_zxy(this.ptr);return ut.__wrap(e)}xzy(){const e=ze.rawvector_xzy(this.ptr);return ut.__wrap(e)}yzx(){const e=ze.rawvector_yzx(this.ptr);return ut.__wrap(e)}zyx(){const e=ze.rawvector_zyx(this.ptr);return ut.__wrap(e)}}class loe{constructor(e,t,i){this.x=e,this.y=t,this.z=i}}class Qe{static new(e,t,i){return new loe(e,t,i)}static intoRaw(e){return new ut(e.x,e.y,e.z)}static zeros(){return Qe.new(0,0,0)}static fromRaw(e){if(!e)return null;let t=Qe.new(e.x,e.y,e.z);return e.free(),t}static copy(e,t){e.x=t.x,e.y=t.y,e.z=t.z}}class jD{constructor(e,t,i,s){this.x=e,this.y=t,this.z=i,this.w=s}}class qi{static identity(){return new jD(0,0,0,1)}static fromRaw(e){if(!e)return null;let t=new jD(e.x,e.y,e.z,e.w);return e.free(),t}static intoRaw(e){return new Qn(e.x,e.y,e.z,e.w)}static copy(e,t){e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w}}var Xg,aa,WD,Yr,gE,ei,A_,jd,mE,AE,qD,XD;(function(n){n[n.Dynamic=0]="Dynamic",n[n.Fixed=1]="Fixed",n[n.KinematicPositionBased=2]="KinematicPositionBased",n[n.KinematicVelocityBased=3]="KinematicVelocityBased"})(Xg||(Xg={}));(function(n){n[n.Revolute=0]="Revolute",n[n.Fixed=1]="Fixed",n[n.Prismatic=2]="Prismatic",n[n.Spherical=3]="Spherical"})(aa||(aa={})),function(n){n[n.AccelerationBased=0]="AccelerationBased",n[n.ForceBased=1]="ForceBased"}(WD||(WD={}));class Wd{constructor(){}static fixed(e,t,i,s){let r=new Wd;return r.anchor1=e,r.anchor2=i,r.frame1=t,r.frame2=s,r.jointType=aa.Fixed,r}static spherical(e,t){let i=new Wd;return i.anchor1=e,i.anchor2=t,i.jointType=aa.Spherical,i}static prismatic(e,t,i){let s=new Wd;return s.anchor1=e,s.anchor2=t,s.axis=i,s.jointType=aa.Prismatic,s}static revolute(e,t,i){let s=new Wd;return s.anchor1=e,s.anchor2=t,s.axis=i,s.jointType=aa.Revolute,s}intoRaw(){let e,t,i=Qe.intoRaw(this.anchor1),s=Qe.intoRaw(this.anchor2),r=!1,o=0,a=0;switch(this.jointType){case aa.Fixed:let c=qi.intoRaw(this.frame1),l=qi.intoRaw(this.frame2);t=Aa.fixed(i,c,s,l),c.free(),l.free();break;case aa.Prismatic:e=Qe.intoRaw(this.axis),this.limitsEnabled&&(r=!0,o=this.limits[0],a=this.limits[1]),t=Aa.prismatic(i,s,e,r,o,a),e.free();break;case aa.Spherical:t=Aa.spherical(i,s);break;case aa.Revolute:e=Qe.intoRaw(this.axis),t=Aa.revolute(i,s,e),e.free()}return i.free(),s.free(),t}}(function(n){n[n.Average=0]="Average",n[n.Min=1]="Min",n[n.Multiply=2]="Multiply",n[n.Max=3]="Max"})(Yr||(Yr={}));class Vm{constructor(e,t,i,s,r){this.distance=e,this.point1=t,this.point2=i,this.normal1=s,this.normal2=r}static fromRaw(e){if(!e)return null;const t=new Vm(e.distance(),Qe.fromRaw(e.point1()),Qe.fromRaw(e.point2()),Qe.fromRaw(e.normal1()),Qe.fromRaw(e.normal2()));return e.free(),t}}(function(n){n[n.Vertex=0]="Vertex",n[n.Edge=1]="Edge",n[n.Face=2]="Face",n[n.Unknown=3]="Unknown"})(gE||(gE={}));class gx{constructor(e,t){this.point=e,this.isInside=t}static fromRaw(e){if(!e)return null;const t=new gx(Qe.fromRaw(e.point()),e.isInside());return e.free(),t}}class hoe{constructor(e,t){this.origin=e,this.dir=t}pointAt(e){return{x:this.origin.x+this.dir.x*e,y:this.origin.y+this.dir.y*e,z:this.origin.z+this.dir.z*e}}}class mx{constructor(e,t,i,s){this.featureType=gE.Unknown,this.featureId=void 0,this.toi=e,this.normal=t,s!==void 0&&(this.featureId=s),i!==void 0&&(this.featureType=i)}static fromRaw(e){if(!e)return null;const t=new mx(e.toi(),Qe.fromRaw(e.normal()),e.featureType(),e.featureId());return e.free(),t}}class av{constructor(e,t,i,s,r){this.toi=e,this.witness1=t,this.witness2=i,this.normal1=s,this.normal2=r}static fromRaw(e,t){if(!t)return null;const i=new av(t.toi(),Qe.fromRaw(t.witness1()),Qe.fromRaw(t.witness2()),Qe.fromRaw(t.normal1()),Qe.fromRaw(t.normal2()));return t.free(),i}}class jM extends av{constructor(e,t,i,s,r,o){super(t,i,s,r,o),this.collider=e}static fromRaw(e,t){if(!t)return null;const i=new jM(e.get(t.colliderHandle()),t.toi(),Qe.fromRaw(t.witness1()),Qe.fromRaw(t.witness2()),Qe.fromRaw(t.normal1()),Qe.fromRaw(t.normal2()));return t.free(),i}}class ds{static fromRaw(e,t){const i=e.coShapeType(t);let s,r,o,a,c,l;switch(i){case ei.Ball:return new WM(e.coRadius(t));case ei.Cuboid:return s=e.coHalfExtents(t),new ez(s.x,s.y,s.z);case ei.RoundCuboid:return s=e.coHalfExtents(t),r=e.coRoundRadius(t),new tz(s.x,s.y,s.z,r);case ei.Capsule:return c=e.coHalfHeight(t),l=e.coRadius(t),new iz(c,l);case ei.Segment:return o=e.coVertices(t),new nz(Qe.new(o[0],o[1],o[2]),Qe.new(o[3],o[4],o[5]));case ei.Polyline:return o=e.coVertices(t),a=e.coIndices(t),new oz(o,a);case ei.Triangle:return o=e.coVertices(t),new sz(Qe.new(o[0],o[1],o[2]),Qe.new(o[3],o[4],o[5]),Qe.new(o[6],o[7],o[8]));case ei.RoundTriangle:return o=e.coVertices(t),r=e.coRoundRadius(t),new rz(Qe.new(o[0],o[1],o[2]),Qe.new(o[3],o[4],o[5]),Qe.new(o[6],o[7],o[8]),r);case ei.TriMesh:return o=e.coVertices(t),a=e.coIndices(t),new az(o,a);case ei.HeightField:const h=e.coHeightfieldScale(t),d=e.coHeightfieldHeights(t),f=e.coHeightfieldNRows(t),p=e.coHeightfieldNCols(t);return new cz(f,p,d,h);case ei.ConvexPolyhedron:return o=e.coVertices(t),a=e.coIndices(t),new vE(o,a);case ei.RoundConvexPolyhedron:return o=e.coVertices(t),a=e.coIndices(t),r=e.coRoundRadius(t),new yE(o,a,r);case ei.Cylinder:return c=e.coHalfHeight(t),l=e.coRadius(t),new lz(c,l);case ei.RoundCylinder:return c=e.coHalfHeight(t),l=e.coRadius(t),r=e.coRoundRadius(t),new hz(c,l,r);case ei.Cone:return c=e.coHalfHeight(t),l=e.coRadius(t),new uz(c,l);case ei.RoundCone:return c=e.coHalfHeight(t),l=e.coRadius(t),r=e.coRoundRadius(t),new dz(c,l,r);default:throw new Error("unknown shape type: "+i)}}castShape(e,t,i,s,r,o,a,c){let l=Qe.intoRaw(e),h=qi.intoRaw(t),d=Qe.intoRaw(i),f=Qe.intoRaw(r),p=qi.intoRaw(o),g=Qe.intoRaw(a),m=this.intoRaw(),A=s.intoRaw(),v=av.fromRaw(null,m.castShape(l,h,d,A,f,p,g,c));return l.free(),h.free(),d.free(),f.free(),p.free(),g.free(),m.free(),A.free(),v}intersectsShape(e,t,i,s,r){let o=Qe.intoRaw(e),a=qi.intoRaw(t),c=Qe.intoRaw(s),l=qi.intoRaw(r),h=this.intoRaw(),d=i.intoRaw(),f=h.intersectsShape(o,a,d,c,l);return o.free(),a.free(),c.free(),l.free(),h.free(),d.free(),f}contactShape(e,t,i,s,r,o){let a=Qe.intoRaw(e),c=qi.intoRaw(t),l=Qe.intoRaw(s),h=qi.intoRaw(r),d=this.intoRaw(),f=i.intoRaw(),p=Vm.fromRaw(d.contactShape(a,c,f,l,h,o));return a.free(),c.free(),l.free(),h.free(),d.free(),f.free(),p}containsPoint(e,t,i){let s=Qe.intoRaw(e),r=qi.intoRaw(t),o=Qe.intoRaw(i),a=this.intoRaw(),c=a.containsPoint(s,r,o);return s.free(),r.free(),o.free(),a.free(),c}projectPoint(e,t,i,s){let r=Qe.intoRaw(e),o=qi.intoRaw(t),a=Qe.intoRaw(i),c=this.intoRaw(),l=gx.fromRaw(c.projectPoint(r,o,a,s));return r.free(),o.free(),a.free(),c.free(),l}intersectsRay(e,t,i,s){let r=Qe.intoRaw(t),o=qi.intoRaw(i),a=Qe.intoRaw(e.origin),c=Qe.intoRaw(e.dir),l=this.intoRaw(),h=l.intersectsRay(r,o,a,c,s);return r.free(),o.free(),a.free(),c.free(),l.free(),h}castRay(e,t,i,s,r){let o=Qe.intoRaw(t),a=qi.intoRaw(i),c=Qe.intoRaw(e.origin),l=Qe.intoRaw(e.dir),h=this.intoRaw(),d=h.castRay(o,a,c,l,s,r);return o.free(),a.free(),c.free(),l.free(),h.free(),d}castRayAndGetNormal(e,t,i,s,r){let o=Qe.intoRaw(t),a=qi.intoRaw(i),c=Qe.intoRaw(e.origin),l=Qe.intoRaw(e.dir),h=this.intoRaw(),d=mx.fromRaw(h.castRayAndGetNormal(o,a,c,l,s,r));return o.free(),a.free(),c.free(),l.free(),h.free(),d}}(function(n){n[n.Ball=0]="Ball",n[n.Cuboid=1]="Cuboid",n[n.Capsule=2]="Capsule",n[n.Segment=3]="Segment",n[n.Polyline=4]="Polyline",n[n.Triangle=5]="Triangle",n[n.TriMesh=6]="TriMesh",n[n.HeightField=7]="HeightField",n[n.ConvexPolyhedron=9]="ConvexPolyhedron",n[n.Cylinder=10]="Cylinder",n[n.Cone=11]="Cone",n[n.RoundCuboid=12]="RoundCuboid",n[n.RoundTriangle=13]="RoundTriangle",n[n.RoundCylinder=14]="RoundCylinder",n[n.RoundCone=15]="RoundCone",n[n.RoundConvexPolyhedron=16]="RoundConvexPolyhedron"})(ei||(ei={}));class WM extends ds{constructor(e){super(),this.type=ei.Ball,this.radius=e}intoRaw(){return Ut.ball(this.radius)}}class ez extends ds{constructor(e,t,i){super(),this.type=ei.Cuboid,this.halfExtents=Qe.new(e,t,i)}intoRaw(){return Ut.cuboid(this.halfExtents.x,this.halfExtents.y,this.halfExtents.z)}}class tz extends ds{constructor(e,t,i,s){super(),this.type=ei.RoundCuboid,this.halfExtents=Qe.new(e,t,i),this.borderRadius=s}intoRaw(){return Ut.roundCuboid(this.halfExtents.x,this.halfExtents.y,this.halfExtents.z,this.borderRadius)}}class iz extends ds{constructor(e,t){super(),this.type=ei.Capsule,this.halfHeight=e,this.radius=t}intoRaw(){return Ut.capsule(this.halfHeight,this.radius)}}class nz extends ds{constructor(e,t){super(),this.type=ei.Segment,this.a=e,this.b=t}intoRaw(){let e=Qe.intoRaw(this.a),t=Qe.intoRaw(this.b),i=Ut.segment(e,t);return e.free(),t.free(),i}}class sz extends ds{constructor(e,t,i){super(),this.type=ei.Triangle,this.a=e,this.b=t,this.c=i}intoRaw(){let e=Qe.intoRaw(this.a),t=Qe.intoRaw(this.b),i=Qe.intoRaw(this.c),s=Ut.triangle(e,t,i);return e.free(),t.free(),i.free(),s}}class rz extends ds{constructor(e,t,i,s){super(),this.type=ei.RoundTriangle,this.a=e,this.b=t,this.c=i,this.borderRadius=s}intoRaw(){let e=Qe.intoRaw(this.a),t=Qe.intoRaw(this.b),i=Qe.intoRaw(this.c),s=Ut.roundTriangle(e,t,i,this.borderRadius);return e.free(),t.free(),i.free(),s}}class oz extends ds{constructor(e,t){super(),this.type=ei.Polyline,this.vertices=e,this.indices=t??new Uint32Array(0)}intoRaw(){return Ut.polyline(this.vertices,this.indices)}}class az extends ds{constructor(e,t){super(),this.type=ei.TriMesh,this.vertices=e,this.indices=t}intoRaw(){return Ut.trimesh(this.vertices,this.indices)}}class vE extends ds{constructor(e,t){super(),this.type=ei.ConvexPolyhedron,this.vertices=e,this.indices=t}intoRaw(){return this.indices?Ut.convexMesh(this.vertices,this.indices):Ut.convexHull(this.vertices)}}class yE extends ds{constructor(e,t,i){super(),this.type=ei.RoundConvexPolyhedron,this.vertices=e,this.indices=t,this.borderRadius=i}intoRaw(){return this.indices?Ut.roundConvexMesh(this.vertices,this.indices,this.borderRadius):Ut.roundConvexHull(this.vertices,this.borderRadius)}}class cz extends ds{constructor(e,t,i,s){super(),this.type=ei.HeightField,this.nrows=e,this.ncols=t,this.heights=i,this.scale=s}intoRaw(){let e=Qe.intoRaw(this.scale),t=Ut.heightfield(this.nrows,this.ncols,this.heights,e);return e.free(),t}}class lz extends ds{constructor(e,t){super(),this.type=ei.Cylinder,this.halfHeight=e,this.radius=t}intoRaw(){return Ut.cylinder(this.halfHeight,this.radius)}}class hz extends ds{constructor(e,t,i){super(),this.type=ei.RoundCylinder,this.borderRadius=i,this.halfHeight=e,this.radius=t}intoRaw(){return Ut.roundCylinder(this.halfHeight,this.radius,this.borderRadius)}}class uz extends ds{constructor(e,t){super(),this.type=ei.Cone,this.halfHeight=e,this.radius=t}intoRaw(){return Ut.cone(this.halfHeight,this.radius)}}class dz extends ds{constructor(e,t,i){super(),this.type=ei.RoundCone,this.halfHeight=e,this.radius=t,this.borderRadius=i}intoRaw(){return Ut.roundCone(this.halfHeight,this.radius,this.borderRadius)}}(function(n){n[n.DYNAMIC_DYNAMIC=1]="DYNAMIC_DYNAMIC",n[n.DYNAMIC_KINEMATIC=12]="DYNAMIC_KINEMATIC",n[n.DYNAMIC_FIXED=2]="DYNAMIC_FIXED",n[n.KINEMATIC_KINEMATIC=52224]="KINEMATIC_KINEMATIC",n[n.KINEMATIC_FIXED=8704]="KINEMATIC_FIXED",n[n.FIXED_FIXED=32]="FIXED_FIXED",n[n.DEFAULT=15]="DEFAULT",n[n.ALL=60943]="ALL"})(A_||(A_={}));class uoe{constructor(e,t,i,s){this.colliderSet=e,this.handle=t,this._parent=i,this._shape=s}finalizeDeserialization(e){this.handle!=null&&(this._parent=e.get(this.colliderSet.raw.coParent(this.handle)))}ensureShapeIsCached(){this._shape||(this._shape=ds.fromRaw(this.colliderSet.raw,this.handle))}get shape(){return this.ensureShapeIsCached(),this._shape}isValid(){return this.colliderSet.raw.contains(this.handle)}translation(){return Qe.fromRaw(this.colliderSet.raw.coTranslation(this.handle))}rotation(){return qi.fromRaw(this.colliderSet.raw.coRotation(this.handle))}isSensor(){return this.colliderSet.raw.coIsSensor(this.handle)}setSensor(e){this.colliderSet.raw.coSetSensor(this.handle,e)}setShape(e){let t=e.intoRaw();this.colliderSet.raw.coSetShape(this.handle,t),t.free(),this._shape=e}setRestitution(e){this.colliderSet.raw.coSetRestitution(this.handle,e)}setFriction(e){this.colliderSet.raw.coSetFriction(this.handle,e)}frictionCombineRule(){return this.colliderSet.raw.coFrictionCombineRule(this.handle)}setFrictionCombineRule(e){this.colliderSet.raw.coSetFrictionCombineRule(this.handle,e)}restitutionCombineRule(){return this.colliderSet.raw.coRestitutionCombineRule(this.handle)}setRestitutionCombineRule(e){this.colliderSet.raw.coSetRestitutionCombineRule(this.handle,e)}setCollisionGroups(e){this.colliderSet.raw.coSetCollisionGroups(this.handle,e)}setSolverGroups(e){this.colliderSet.raw.coSetSolverGroups(this.handle,e)}activeHooks(){return this.colliderSet.raw.coActiveHooks(this.handle)}setActiveHooks(e){this.colliderSet.raw.coSetActiveHooks(this.handle,e)}activeEvents(){return this.colliderSet.raw.coActiveEvents(this.handle)}setActiveEvents(e){this.colliderSet.raw.coSetActiveEvents(this.handle,e)}activeCollisionTypes(){return this.colliderSet.raw.coActiveCollisionTypes(this.handle)}setContactForceEventThreshold(e){return this.colliderSet.raw.coSetContactForceEventThreshold(this.handle,e)}contactForceEventThreshold(){return this.colliderSet.raw.coContactForceEventThreshold(this.handle)}setActiveCollisionTypes(e){this.colliderSet.raw.coSetActiveCollisionTypes(this.handle,e)}setDensity(e){this.colliderSet.raw.coSetDensity(this.handle,e)}setMass(e){this.colliderSet.raw.coSetMass(this.handle,e)}setMassProperties(e,t,i,s){let r=Qe.intoRaw(t),o=Qe.intoRaw(i),a=qi.intoRaw(s);this.colliderSet.raw.coSetMassProperties(this.handle,e,r,o,a),r.free(),o.free(),a.free()}setTranslation(e){this.colliderSet.raw.coSetTranslation(this.handle,e.x,e.y,e.z)}setTranslationWrtParent(e){this.colliderSet.raw.coSetTranslationWrtParent(this.handle,e.x,e.y,e.z)}setRotation(e){this.colliderSet.raw.coSetRotation(this.handle,e.x,e.y,e.z,e.w)}setRotationWrtParent(e){this.colliderSet.raw.coSetRotationWrtParent(this.handle,e.x,e.y,e.z,e.w)}shapeType(){return this.colliderSet.raw.coShapeType(this.handle)}halfExtents(){return Qe.fromRaw(this.colliderSet.raw.coHalfExtents(this.handle))}radius(){return this.colliderSet.raw.coRadius(this.handle)}roundRadius(){return this.colliderSet.raw.coRoundRadius(this.handle)}halfHeight(){return this.colliderSet.raw.coHalfHeight(this.handle)}vertices(){return this.colliderSet.raw.coVertices(this.handle)}indices(){return this.colliderSet.raw.coIndices(this.handle)}heightfieldHeights(){return this.colliderSet.raw.coHeightfieldHeights(this.handle)}heightfieldScale(){let e=this.colliderSet.raw.coHeightfieldScale(this.handle);return Qe.fromRaw(e)}heightfieldNRows(){return this.colliderSet.raw.coHeightfieldNRows(this.handle)}heightfieldNCols(){return this.colliderSet.raw.coHeightfieldNCols(this.handle)}parent(){return this._parent}friction(){return this.colliderSet.raw.coFriction(this.handle)}restitution(){return this.colliderSet.raw.coRestitution(this.handle)}density(){return this.colliderSet.raw.coDensity(this.handle)}mass(){return this.colliderSet.raw.coMass(this.handle)}volume(){return this.colliderSet.raw.coVolume(this.handle)}collisionGroups(){return this.colliderSet.raw.coCollisionGroups(this.handle)}solverGroups(){return this.colliderSet.raw.coSolverGroups(this.handle)}containsPoint(e){let t=Qe.intoRaw(e),i=this.colliderSet.raw.coContainsPoint(this.handle,t);return t.free(),i}projectPoint(e,t){let i=Qe.intoRaw(e),s=gx.fromRaw(this.colliderSet.raw.coProjectPoint(this.handle,i,t));return i.free(),s}intersectsRay(e,t){let i=Qe.intoRaw(e.origin),s=Qe.intoRaw(e.dir),r=this.colliderSet.raw.coIntersectsRay(this.handle,i,s,t);return i.free(),s.free(),r}castShape(e,t,i,s,r,o){let a=Qe.intoRaw(e),c=Qe.intoRaw(i),l=qi.intoRaw(s),h=Qe.intoRaw(r),d=t.intoRaw(),f=av.fromRaw(this.colliderSet,this.colliderSet.raw.coCastShape(this.handle,a,d,c,l,h,o));return a.free(),c.free(),l.free(),h.free(),d.free(),f}castCollider(e,t,i,s){let r=Qe.intoRaw(e),o=Qe.intoRaw(i),a=jM.fromRaw(this.colliderSet,this.colliderSet.raw.coCastCollider(this.handle,r,t.handle,o,s));return r.free(),o.free(),a}intersectsShape(e,t,i){let s=Qe.intoRaw(t),r=qi.intoRaw(i),o=e.intoRaw(),a=this.colliderSet.raw.coIntersectsShape(this.handle,o,s,r);return s.free(),r.free(),o.free(),a}contactShape(e,t,i,s){let r=Qe.intoRaw(t),o=qi.intoRaw(i),a=e.intoRaw(),c=Vm.fromRaw(this.colliderSet.raw.coContactShape(this.handle,a,r,o,s));return r.free(),o.free(),a.free(),c}contactCollider(e,t){return Vm.fromRaw(this.colliderSet.raw.coContactCollider(this.handle,e.handle,t))}castRay(e,t,i){let s=Qe.intoRaw(e.origin),r=Qe.intoRaw(e.dir),o=this.colliderSet.raw.coCastRay(this.handle,s,r,t,i);return s.free(),r.free(),o}castRayAndGetNormal(e,t,i){let s=Qe.intoRaw(e.origin),r=Qe.intoRaw(e.dir),o=mx.fromRaw(this.colliderSet.raw.coCastRayAndGetNormal(this.handle,s,r,t,i));return s.free(),r.free(),o}}(function(n){n[n.Density=0]="Density",n[n.Mass=1]="Mass",n[n.MassProps=2]="MassProps"})(jd||(jd={}));class Bi{constructor(e){this.shape=e,this.massPropsMode=jd.Density,this.density=1,this.friction=.5,this.restitution=0,this.rotation=qi.identity(),this.translation=Qe.zeros(),this.isSensor=!1,this.collisionGroups=4294967295,this.solverGroups=4294967295,this.frictionCombineRule=Yr.Average,this.restitutionCombineRule=Yr.Average,this.activeCollisionTypes=A_.DEFAULT,this.activeEvents=0,this.activeHooks=0,this.mass=0,this.centerOfMass=Qe.zeros(),this.contactForceEventThreshold=0,this.principalAngularInertia=Qe.zeros(),this.angularInertiaLocalFrame=qi.identity()}static ball(e){const t=new WM(e);return new Bi(t)}static capsule(e,t){const i=new iz(e,t);return new Bi(i)}static segment(e,t){const i=new nz(e,t);return new Bi(i)}static triangle(e,t,i){const s=new sz(e,t,i);return new Bi(s)}static roundTriangle(e,t,i,s){const r=new rz(e,t,i,s);return new Bi(r)}static polyline(e,t){const i=new oz(e,t);return new Bi(i)}static trimesh(e,t){const i=new az(e,t);return new Bi(i)}static cuboid(e,t,i){const s=new ez(e,t,i);return new Bi(s)}static roundCuboid(e,t,i,s){const r=new tz(e,t,i,s);return new Bi(r)}static heightfield(e,t,i,s){const r=new cz(e,t,i,s);return new Bi(r)}static cylinder(e,t){const i=new lz(e,t);return new Bi(i)}static roundCylinder(e,t,i){const s=new hz(e,t,i);return new Bi(s)}static cone(e,t){const i=new uz(e,t);return new Bi(i)}static roundCone(e,t,i){const s=new dz(e,t,i);return new Bi(s)}static convexHull(e){const t=new vE(e,null);return new Bi(t)}static convexMesh(e,t){const i=new vE(e,t);return new Bi(i)}static roundConvexHull(e,t){const i=new yE(e,null,t);return new Bi(i)}static roundConvexMesh(e,t,i){const s=new yE(e,t,i);return new Bi(s)}setTranslation(e,t,i){if(typeof e!="number"||typeof t!="number"||typeof i!="number")throw TypeError("The translation components must be numbers.");return this.translation={x:e,y:t,z:i},this}setRotation(e){return qi.copy(this.rotation,e),this}setSensor(e){return this.isSensor=e,this}setDensity(e){return this.massPropsMode=jd.Density,this.density=e,this}setMass(e){return this.massPropsMode=jd.Mass,this.mass=e,this}setMassProperties(e,t,i,s){return this.massPropsMode=jd.MassProps,this.mass=e,Qe.copy(this.centerOfMass,t),Qe.copy(this.principalAngularInertia,i),qi.copy(this.angularInertiaLocalFrame,s),this}setRestitution(e){return this.restitution=e,this}setFriction(e){return this.friction=e,this}setFrictionCombineRule(e){return this.frictionCombineRule=e,this}setRestitutionCombineRule(e){return this.restitutionCombineRule=e,this}setCollisionGroups(e){return this.collisionGroups=e,this}setSolverGroups(e){return this.solverGroups=e,this}setActiveHooks(e){return this.activeHooks=e,this}setActiveEvents(e){return this.activeEvents=e,this}setActiveCollisionTypes(e){return this.activeCollisionTypes=e,this}setContactForceEventThreshold(e){return this.contactForceEventThreshold=e,this}}(function(n){n[n.EXCLUDE_FIXED=1]="EXCLUDE_FIXED",n[n.EXCLUDE_KINEMATIC=2]="EXCLUDE_KINEMATIC",n[n.EXCLUDE_DYNAMIC=4]="EXCLUDE_DYNAMIC",n[n.EXCLUDE_SENSORS=8]="EXCLUDE_SENSORS",n[n.EXCLUDE_SOLIDS=16]="EXCLUDE_SOLIDS",n[n.ONLY_DYNAMIC=3]="ONLY_DYNAMIC",n[n.ONLY_KINEMATIC=5]="ONLY_KINEMATIC",n[n.ONLY_FIXED=6]="ONLY_FIXED"})(mE||(mE={}));(function(n){n[n.COLLISION_EVENTS=1]="COLLISION_EVENTS",n[n.CONTACT_FORCE_EVENTS=2]="CONTACT_FORCE_EVENTS"})(AE||(AE={}));class doe{free(){this.raw.free(),this.raw=void 0}collider1(){return this.raw.collider1()}collider2(){return this.raw.collider2()}totalForce(){return Qe.fromRaw(this.raw.total_force())}totalForceMagnitude(){return this.raw.total_force_magnitude()}maxForceDirection(){return Qe.fromRaw(this.raw.max_force_direction())}maxForceMagnitude(){return this.raw.max_force_magnitude()}}class foe{constructor(e,t){this.raw=t||new m_(e)}free(){this.raw.free(),this.raw=void 0}drainCollisionEvents(e){this.raw.drainCollisionEvents(e)}drainContactForceEvents(e){let t=new doe;this.raw.drainContactForceEvents(i=>{t.raw=i,e(t),t.free()})}clear(){this.raw.clear()}}(function(n){n[n.FILTER_CONTACT_PAIRS=1]="FILTER_CONTACT_PAIRS",n[n.FILTER_INTERSECTION_PAIRS=2]="FILTER_INTERSECTION_PAIRS"})(qD||(qD={})),function(n){n[n.EMPTY=0]="EMPTY",n[n.COMPUTE_IMPULSE=1]="COMPUTE_IMPULSE"}(XD||(XD={}));for(var Woe={byteLength:function(n){var e=YD(n),t=e[0],i=e[1];return 3*(t+i)/4-i},toByteArray:function(n){var e,t,i=YD(n),s=i[0],r=i[1],o=new poe(function(l,h,d){return 3*(h+d)/4-d}(0,s,r)),a=0,c=r>0?s-4:s;for(t=0;t<c;t+=4)e=Hr[n.charCodeAt(t)]<<18|Hr[n.charCodeAt(t+1)]<<12|Hr[n.charCodeAt(t+2)]<<6|Hr[n.charCodeAt(t+3)],o[a++]=e>>16&255,o[a++]=e>>8&255,o[a++]=255&e;return r===2&&(e=Hr[n.charCodeAt(t)]<<2|Hr[n.charCodeAt(t+1)]>>4,o[a++]=255&e),r===1&&(e=Hr[n.charCodeAt(t)]<<10|Hr[n.charCodeAt(t+1)]<<4|Hr[n.charCodeAt(t+2)]>>2,o[a++]=e>>8&255,o[a++]=255&e),o},fromByteArray:function(n){for(var e,t=n.length,i=t%3,s=[],r=16383,o=0,a=t-i;o<a;o+=r)s.push(moe(n,o,o+r>a?a:o+r));return i===1?(e=n[t-1],s.push(fa[e>>2]+fa[e<<4&63]+"==")):i===2&&(e=(n[t-2]<<8)+n[t-1],s.push(fa[e>>10]+fa[e>>4&63]+fa[e<<2&63]+"=")),s.join("")}},fa=[],Hr=[],poe=typeof Uint8Array<"u"?Uint8Array:Array,gC="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",xd=0,goe=gC.length;xd<goe;++xd)fa[xd]=gC[xd],Hr[gC.charCodeAt(xd)]=xd;function YD(n){var e=n.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var t=n.indexOf("=");return t===-1&&(t=e),[t,t===e?0:4-t%4]}function moe(n,e,t){for(var i,s,r=[],o=e;o<t;o+=3)i=(n[o]<<16&16711680)+(n[o+1]<<8&65280)+(255&n[o+2]),r.push(fa[(s=i)>>18&63]+fa[s>>12&63]+fa[s>>6&63]+fa[63&s]);return r.join("")}Hr["-".charCodeAt(0)]=62,Hr["_".charCodeAt(0)]=63;const sa=ce("debugphysics"),mC=ce("debugphysicscolliders"),AC=ce("debugcollisions"),Aoe=ce("showcolliders"),Mo=Symbol("needle component"),zr=Symbol("physics body"),voe=Symbol("rigidbody");let wd;const tm=class{constructor(){u(this,"context");u(this,"_initializePromise");u(this,"_isInitialized",!1);u(this,"rapierRay",new hoe({x:0,y:0,z:0},{x:0,y:0,z:1}));u(this,"raycastVectorsBuffer",new Ma(()=>new E,10));u(this,"rapierSphere",null);u(this,"rapierColliderArray",[]);u(this,"rapierIdentityRotation",{x:0,y:0,z:0,w:1});u(this,"rapierForwardVector",{x:0,y:0,z:1});u(this,"enabled",!1);u(this,"_tempPosition",new E);u(this,"_tempQuaternion",new xe);u(this,"_tempScale",new E);u(this,"_tempMatrix",new He);u(this,"_isUpdatingPhysicsWorld",!1);u(this,"world");u(this,"_hasCreatedWorld",!1);u(this,"eventQueue");u(this,"collisionHandler");u(this,"objects",[]);u(this,"bodies",[]);u(this,"_meshCache",new Map);u(this,"_gravity",{x:0,y:-9.81,z:0});u(this,"lines")}removeBody(e){var i,s;this.validate();const t=e[zr];if(e[zr]=null,t&&this.world){const r=this.objects.findIndex(o=>o===e);if(r>=0){const o=this.bodies[r];if(this.bodies.splice(r,1),this.objects.splice(r,1),o instanceof uoe){const a=o;(i=this.world)==null||i.removeCollider(a,!0);const c=a.parent();c&&c.numColliders()<=0&&((s=this.world)==null||s.removeRigidBody(c))}}}}updateBody(e,t,i){if(this.validate(),!!this.enabled&&!(e.destroyed||!e.gameObject)&&!(!t&&!i))if(e.isCollider===!0)console.warn("TODO: implement updating collider position");else{const s=e,r=s[zr];r&&this.syncPhysicsBody(s.gameObject,r,t,i)}}updateProperties(e){this.validate();const t=e[zr];t&&this.internalUpdateProperties(e,t)}addForce(e,t,i){this.validate();const s=this.internal_getRigidbody(e);s==null||s.addForce(t,i)}addImpulse(e,t,i){this.validate();const s=this.internal_getRigidbody(e);s==null||s.applyImpulse(t,i)}getLinearVelocity(e){this.validate();const t=this.internal_getRigidbody(e);return t?t.linvel():null}getAngularVelocity(e){this.validate();const t=this.internal_getRigidbody(e);return t?t.angvel():null}resetForces(e,t){this.validate();const i=this.internal_getRigidbody(e);i==null||i.resetForces(t)}resetTorques(e,t){this.validate();const i=this.internal_getRigidbody(e);i==null||i.resetTorques(t)}applyImpulse(e,t,i){this.validate();const s=this.internal_getRigidbody(e);s==null||s.applyImpulse(t,i)}wakeup(e){this.validate();const t=this.internal_getRigidbody(e);t==null||t.wakeUp()}setAngularVelocity(e,t,i){this.validate();const s=this.internal_getRigidbody(e);s==null||s.setAngvel(t,i)}setLinearVelocity(e,t,i){this.validate();const s=this.internal_getRigidbody(e);s==null||s.setLinvel(t,i)}async initialize(e){return this.context=e,this._initializePromise||(this._initializePromise=this.internalInitialization()),this._initializePromise}async internalInitialization(){return"env"in{url:typeof document>"u"?require("url").pathToFileURL(__filename).href:document.currentScript&&document.currentScript.src||new URL("dist/needle-engine.light.umd.cjs",document.baseURI).href}&&{}.VITE_NEEDLE_USE_RAPIER==="false",!1}validate(){this._isInitialized||sa&&console.warn("Physics engine is not initialized")}raycast(e,t=void 0,i=1/0,s=!0){var a;const r=this.getPhysicsRay(this.rapierRay,e,t);if(!r)return null;const o=(a=this.world)==null?void 0:a.castRay(r,i,s,void 0,void 0,void 0,void 0,c=>{var l;return!((l=c[Mo])!=null&&l.gameObject.layers.isEnabled(2))});if(o){const c=r.pointAt(o.toi),l=this.raycastVectorsBuffer.get();return l.set(c.x,c.y,c.z),{point:l,collider:o.collider[Mo]}}return null}raycastAndGetNormal(e,t=void 0,i=1/0,s=!0){var a;const r=this.getPhysicsRay(this.rapierRay,e,t);if(!r)return null;const o=(a=this.world)==null?void 0:a.castRayAndGetNormal(r,i,s,void 0,void 0,void 0,void 0,c=>{var l;return!((l=c[Mo])!=null&&l.gameObject.layers.isEnabled(2))});if(o){const c=r.pointAt(o.toi),l=o.normal,h=this.raycastVectorsBuffer.get(),d=this.raycastVectorsBuffer.get();return h.set(c.x,c.y,c.z),d.set(l.x,l.y,l.z),{point:h,normal:d,collider:o.collider[Mo]}}return null}getPhysicsRay(e,t,i=void 0){var a,c;const s=(a=this.context)==null?void 0:a.mainCamera;if(t.z===void 0){if(!s)return console.error("Can not perform raycast from 2d point - no main camera found"),null;const l=this.raycastVectorsBuffer.get();l.x=t.x,l.y=t.y,l.z=0,(l.x>1||l.y>1||l.y<-1||l.x<-1)&&((c=this.context)==null||c.input.convertScreenspaceToRaycastSpace(l)),l.unproject(s),t=l}const r=t;e.origin.x=r.x,e.origin.y=r.y,e.origin.z=r.z;const o=this.raycastVectorsBuffer.get();if(i)o.set(i.x,i.y,i.z);else{if(!s)return console.error("Can not perform raycast - no camera found"),null;o.set(e.origin.x,e.origin.y,e.origin.z);const l=Ct(s);o.sub(l)}return o.normalize(),e.dir.x=o.x,e.dir.y=o.y,e.dir.z=o.z,e}sphereOverlap(e,t){return this.rapierColliderArray.length=0,this.world?(this.rapierSphere||(this.rapierSphere=new WM(t)),this.rapierSphere.radius=t,this.world.intersectionsWithShape(e,this.rapierIdentityRotation,this.rapierSphere,i=>{const s=i[Mo],r=new $N(s.gameObject,s);return this.rapierColliderArray.push(r),!0},mE.EXCLUDE_SENSORS,void 0,void 0,void 0,i=>i[Mo].gameObject.layers.isEnabled(2)==!1),this.rapierColliderArray):this.rapierColliderArray}get isUpdating(){return this._isUpdatingPhysicsWorld}get gravity(){var e;return((e=this.world)==null?void 0:e.gravity)??this._gravity}set gravity(e){this.world?this.world.gravity=e:this._gravity=e}clearCaches(){this._meshCache.clear()}async addBoxCollider(e,t,i){if(this._isInitialized||await this.initialize(e.context),!e.activeAndEnabled)return;if(!this.enabled){sa&&console.warn("Physics are disabled");return}const s=e.gameObject,r=is(s,this._tempPosition).multiply(i);r.multiplyScalar(.5),r.x<0&&(r.x=Math.abs(r.x)),r.y<0&&(r.y=Math.abs(r.y)),r.z<0&&(r.z=Math.abs(r.z)),r.x==0&&(r.x=1e-7),r.y==0&&(r.y=1e-7),r.z==0&&(r.z=1e-7);const o=Bi.cuboid(r.x,r.y,r.z);this.createCollider(e,o,t)}async addSphereCollider(e,t,i){if(this._isInitialized||await this.initialize(e.context),!e.activeAndEnabled)return;if(!this.enabled){sa&&console.warn("Physics are disabled");return}const s=e.gameObject,r=is(s,this._tempPosition).multiplyScalar(i);r.x=Math.abs(r.x);const o=Bi.ball(r.x);this.createCollider(e,o,t)}async addCapsuleCollider(e,t,i,s){if(this._isInitialized||await this.initialize(e.context),!e.activeAndEnabled)return;if(!this.enabled){sa&&console.warn("Physics are disabled");return}const r=e.gameObject,o=is(r,this._tempPosition);o.x=Math.abs(o.x),o.y=Math.abs(o.y);const a=Bi.capsule(i*.5*o.y-s,s*o.x);this.createCollider(e,a,t)}async addMeshCollider(e,t,i,s){var l;if(this._isInitialized||await this.initialize(e.context),!e.activeAndEnabled)return;if(!this.enabled){sa&&console.warn("Physics are disabled");return}const r=t.geometry;if(!r){sa&&console.warn("Missing mesh geometry",t.name);return}let o=r.getAttribute("position").array;const a=(l=r.index)==null?void 0:l.array;if(Math.abs(s.x-1)>1e-4||Math.abs(s.y-1)>1e-4||Math.abs(s.z-1)>1e-4){const h=r.uuid+"_"+s.x+"_"+s.y+"_"+s.z+"_"+i;if(this._meshCache.has(h))o=this._meshCache.get(h);else{console.warn("Your model is using scaled mesh colliders which is not optimal for performance",t.name,Object.assign({},s),t);const d=new Float32Array(o.length);for(let f=0;f<o.length;f+=3)d[f]=o[f]*s.x,d[f+1]=o[f+1]*s.y,d[f+2]=o[f+2]*s.z;o=d,this._meshCache.set(h,d)}}const c=i?Bi.convexMesh(o):Bi.trimesh(o,a);c&&this.createCollider(e,c).setMassProperties(1,{x:0,y:0,z:0},{x:0,y:0,z:0},{x:0,y:0,z:0,w:1})}createCollider(e,t,i){if(!this.world)throw new Error("Physics world not initialized");const s=this._tempMatrix,{rigidBody:r,useExplicitMassProperties:o}=this.getRigidbody(e,this._tempMatrix);s.decompose(this._tempPosition,this._tempQuaternion,this._tempScale),is(e.gameObject,this._tempScale),i&&(i.multiply(this._tempScale),this._tempPosition.x-=i.x,this._tempPosition.y+=i.y,this._tempPosition.z+=i.z),t.setTranslation(this._tempPosition.x,this._tempPosition.y,this._tempPosition.z),t.setRotation(this._tempQuaternion),t.setSensor(e.isTrigger);const a=e.sharedMaterial;if(a){switch(t.setRestitution(a.bounciness),a.bounceCombine){case oa.Average:t.setRestitutionCombineRule(Yr.Average);break;case oa.Maximum:t.setRestitutionCombineRule(Yr.Max);break;case oa.Minimum:t.setRestitutionCombineRule(Yr.Min);break;case oa.Multiply:t.setRestitutionCombineRule(Yr.Multiply);break}switch(t.setFriction(a.dynamicFriction),a.frictionCombine){case oa.Average:t.setFrictionCombineRule(Yr.Average);break;case oa.Maximum:t.setFrictionCombineRule(Yr.Max);break;case oa.Minimum:t.setFrictionCombineRule(Yr.Min);break;case oa.Multiply:t.setFrictionCombineRule(Yr.Multiply);break}}const c=this.world.createCollider(t,r);return c[Mo]=e,e[zr]=c,c.setActiveEvents(AE.COLLISION_EVENTS),c.setActiveCollisionTypes(A_.ALL),this.objects.push(e),this.bodies.push(c),c}getRigidbody(e,t){if(!this.world)throw new Error("Physics world not initialized");let i=null,s=!1;if(e.attachedRigidbody){const r=e.attachedRigidbody;if(i=r[zr],s=!0,!i){const o=r.isKinematic&&!mC;sa&&console.log("Create rigidbody",o);const a=o?wd.RigidBodyDesc.kinematicPositionBased():wd.RigidBodyDesc.dynamic(),c=Ct(e.attachedRigidbody.gameObject);a.setTranslation(c.x,c.y,c.z),a.setRotation(Bn(e.attachedRigidbody.gameObject)),i=this.world.createRigidBody(a),this.bodies.push(i),this.objects.push(r)}i[Mo]=r,r[zr]=i,this.internalUpdateProperties(r,i),this.getRigidbodyRelativeMatrix(e.gameObject,r.gameObject,t)}else{const r=wd.RigidBodyDesc.kinematicPositionBased(),o=Ct(e.gameObject);r.setTranslation(o.x,o.y,o.z),r.setRotation(Bn(e.gameObject)),i=this.world.createRigidBody(r),t.identity(),i[Mo]=null}return e[voe]=i,{rigidBody:i,useExplicitMassProperties:s}}internal_getRigidbody(e){return e[zr]}internalUpdateProperties(e,t){t.enableCcd(e.collisionDetectionMode!==Sb.Discrete),t.setLinearDamping(e.drag),t.setAngularDamping(e.angularDrag),t.setGravityScale(e.useGravity?e.gravityScale:0,!0),t.setEnabledRotations(!e.lockRotationX,!e.lockRotationY,!e.lockRotationZ,!0),t.setEnabledTranslations(!e.lockPositionX,!e.lockPositionY,!e.lockPositionZ,!0),e.isKinematic?t.setBodyType(wd.RigidBodyType.KinematicPositionBased):t.setBodyType(wd.RigidBodyType.Dynamic)}step(e){this.world&&this.enabled&&(this._isUpdatingPhysicsWorld=!0,this.eventQueue||(this.eventQueue=new foe(!1)),e&&(this.world.timestep=Ze.lerp(this.world.timestep,e,.8)),this.world.step(this.eventQueue),this._isUpdatingPhysicsWorld=!1,this.updateDebugRendering(this.world))}updateDebugRendering(e){var t;if(sa||mC||Aoe){if(!this.lines){const s=new cn({color:2258688}),r=new vt;this.lines=new Tr(r,s),(t=this.context)==null||t.scene.add(this.lines)}const i=e.debugRender();this.lines.geometry.setAttribute("position",new ht(i.vertices,3)),this.lines.geometry.setAttribute("color",new ht(i.colors,4))}}postStep(){this.world&&this.enabled&&(this._isUpdatingPhysicsWorld=!0,this.syncObjects(),this._isUpdatingPhysicsWorld=!1,this.eventQueue&&!this.collisionHandler&&(this.collisionHandler=new yoe(this.world,this.eventQueue)),this.collisionHandler&&(this.collisionHandler.handleCollisionEvents(),this.collisionHandler.update()))}syncObjects(){if(!mC)for(let e=0;e<this.bodies.length;e++){const t=this.objects[e],i=this.bodies[e],s=t;if((s==null?void 0:s.isCollider)===!0&&!s.attachedRigidbody){const c=i.parent();c&&this.syncPhysicsBody(t.gameObject,c,!0,!0);continue}const r=i.translation(),o=i.rotation(),a=t.center;if(a&&a.isVector3){this._tempQuaternion.set(o.x,o.y,o.z,o.w);const c=this._tempPosition.copy(a).applyQuaternion(this._tempQuaternion),l=is(t.gameObject);c.multiply(l),r.x-=c.x,r.y-=c.y,r.z-=c.z}_f(t.gameObject,r.x,r.y,r.z),sO(t.gameObject,o.x,o.y,o.z,o.w)}}syncPhysicsBody(e,t,i,s){const r=Ct(e,this._tempPosition),o=Bn(e,this._tempQuaternion);switch(t.bodyType()){case Xg.Fixed:case Xg.KinematicPositionBased:case Xg.KinematicVelocityBased:i&&t.setNextKinematicTranslation(r),s&&t.setNextKinematicRotation(o);break;default:i&&t.setTranslation(r,!1),s&&t.setRotation(o,!1);break}t.wakeUp()}getRigidbodyRelativeMatrix(e,t,i,s){if(s===void 0&&(s=tm._matricesBuffer,s.length=0),e===t){const r=is(e,this._tempPosition);i.makeScale(r.x,r.y,r.z);for(let o=s.length-1;o>=0;o--)i.multiply(s[o]);return i}return s.push(e.matrix),e.parent&&this.getRigidbodyRelativeMatrix(e.parent,t,i,s),i}addFixedJoint(e,t){if(!this.world){console.error("Physics world not initialized");return}const i=e[zr],s=t[zr];this.calculateJointRelativeMatrices(e.gameObject,t.gameObject,this._tempMatrix),this._tempMatrix.decompose(this._tempPosition,this._tempQuaternion,this._tempScale);const r=Wd.fixed(tm.centerConnectionPos,tm.centerConnectionRot,this._tempPosition,this._tempQuaternion),o=this.world.createImpulseJoint(r,i,s,!0);sa&&console.log("ADD FIXED JOINT",o)}addHingeJoint(e,t,i,s){if(!this.world){console.error("Physics world not initialized");return}const r=e[zr],o=t[zr];this.calculateJointRelativeMatrices(e.gameObject,t.gameObject,this._tempMatrix),this._tempMatrix.decompose(this._tempPosition,this._tempQuaternion,this._tempScale);let a=wd.JointData.revolute(i,this._tempPosition,s),c=this.world.createImpulseJoint(a,r,o,!0);sa&&console.log("ADD HINGE JOINT",c)}calculateJointRelativeMatrices(e,t,i){e.updateWorldMatrix(!0,!1),t.updateWorldMatrix(!0,!1);const s=e.matrixWorld,r=t.matrixWorld;s.elements[0]=1,s.elements[5]=1,s.elements[10]=1,r.elements[0]=1,r.elements[5]=1,r.elements[10]=1,i.copy(r).premultiply(s.invert()).invert()}};let Lh=tm;u(Lh,"_didLoadPhysicsEngine",!1),u(Lh,"_matricesBuffer",[]),u(Lh,"centerConnectionPos",{x:0,y:0,z:0}),u(Lh,"centerConnectionRot",{x:0,y:0,z:0,w:1});class yoe{constructor(e,t){u(this,"world");u(this,"eventQueue");u(this,"activeCollisions",[]);u(this,"activeCollisionsStay",[]);u(this,"activeTriggers",[]);this.world=e,this.eventQueue=t}handleCollisionEvents(){this.eventQueue&&this.world&&this.eventQueue.drainCollisionEvents((e,t,i)=>{const s=this.world.getCollider(e),r=this.world.getCollider(t),o=s[Mo],a=r[Mo];AC&&console.log("EVT",o.name,a.name,i,s,r),o&&a&&(i?(this.onCollisionStarted(o,s,a,r),this.onCollisionStarted(a,r,o,s)):(this.onCollisionEnded(o,a),this.onCollisionEnded(a,o)))})}update(){this.onHandleCollisionStay()}onCollisionStarted(e,t,i,s){let r=null;if(e.isTrigger||i.isTrigger)gu(e.gameObject,o=>{o.onTriggerEnter&&!o.destroyed&&o.onTriggerEnter(i),this.activeTriggers.push({collider:e,component:o,otherCollider:i})});else{const o=e.gameObject;this.world.contactPair(t,s,(a,c)=>{gu(o,l=>{var d;if(l.destroyed)return;const h=l.onCollisionEnter||l.onCollisionStay||l.onCollisionExit;if(h||AC){if(!r){const f=[],p=a.normal();for(let g=0;g<a.numSolverContacts();g++){const m=a.solverContactPoint(g),A=a.contactImpulse(g);if(m){const v=a.contactDist(g),b=a.solverContactFriction(g),y=new KN(m,v,p,A,b);f.push(y),AC&&_a.DrawDirection(m,p,16711680,3,!0)}}r=new ZN(o,i,f)}if(h){const f={collider:e,component:l,collision:r};this.activeCollisions.push(f),l.onCollisionStay&&this.activeCollisionsStay.push(f),(d=l.onCollisionEnter)==null||d.call(l,r)}}})})}}onHandleCollisionStay(){for(const e of this.activeCollisionsStay){const t=e.component;if(!t.destroyed&&t.activeAndEnabled&&t.onCollisionStay){const i=e.collision;t.onCollisionStay(i)}}for(const e of this.activeTriggers){const t=e.component;if(!t.destroyed&&t.activeAndEnabled&&t.onTriggerStay){const i=e.otherCollider;t.onTriggerStay(i)}}}onCollisionEnded(e,t){if(!(e.destroyed||t.destroyed)){for(let i=0;i<this.activeCollisions.length;i++){const s=this.activeCollisions[i],r=s.collider;if(r.destroyed){this.activeCollisions.splice(i,1),i--;continue}if(r===e&&s.collision.collider===t){const o=s.component;if(this.activeCollisions.splice(i,1),i--,o.activeAndEnabled&&o.onCollisionExit){const a=s.collision;o.onCollisionExit(a)}}}for(let i=0;i<this.activeCollisionsStay.length;i++){const s=this.activeCollisionsStay[i],r=s.collider;if(r.destroyed){this.activeCollisionsStay.splice(i,1),i--;continue}if(r===e&&s.collision.collider===t){const o=s.component;if(this.activeCollisionsStay.splice(i,1),i--,o.activeAndEnabled&&o.onCollisionExit){const a=s.collision;o.onCollisionExit(a)}}}for(let i=0;i<this.activeTriggers.length;i++){const s=this.activeTriggers[i],r=s.collider;if(r.destroyed){this.activeTriggers.splice(i,1),i--;continue}if(r===e&&s.otherCollider===t){const o=s.component;if(this.activeTriggers.splice(i,1),i--,o.activeAndEnabled&&o.onTriggerExit){const a=s.otherCollider;o.onTriggerExit(a)}}}}}}Object.defineProperty($t.prototype,"fov",{get:function(){return this._fov},set:function(n){const e=n!==this._fov;this._fov=n,e&&this.view!==void 0&&this.updateProjectionMatrix()}});Object.defineProperty($t.prototype,"near",{get:function(){return this._near},set:function(n){const e=n!==this._near;this._near=n,e&&this.view!==void 0&&this.updateProjectionMatrix()}});Object.defineProperty($t.prototype,"far",{get:function(){return this._far},set:function(n){const e=n!==this._far;this._far=n,e&&this.view!==void 0&&this.updateProjectionMatrix()}});function _oe(n,e,t,i="image/webp",s){if(!s&&(s=n.mainCamera,!s))return console.error("No camera found"),null;const r=n.renderer.domElement.width,o=n.renderer.domElement.height;try{const a=n.renderer.domElement;return n.renderer.setSize(e,t),s instanceof $t&&n.updateAspect(s,e,t),n.renderNow(),a.toDataURL(i)}finally{n.renderer.setSize(r,o),n.updateSize()}return null}Tz();const Ax={Context:_t};globalThis.Needle!==void 0&&console.warn("Needle Engine is already imported");globalThis.Needle=Ax;function fz(n){for(const e in n)Ax[e]=n[e]}fz(jq);fz(Lre);Ax.$meta={version:wE,generator:ak};for(const n of Object.getOwnPropertyNames($))switch(n){case"prototype":case"constructor":case"length":case"name":continue;default:Ax[n]=$[n];break}globalThis.THREE?console.warn("Threejs is already imported"):globalThis.THREE=rj;exports.$physicsKey=roe;exports.ActionBuilder=oi;exports.ActionCollection=mI;exports.ActionModel=vr;exports.Addressables=cF;exports.AlignmentConstraint=EA;exports.AmbientMode=tf;exports.Animation=Uo;exports.AnimationCurve=Eu;exports.AnimationExtension=xb;exports.AnimationTrackHandler=Fb;exports.Animator=ar;exports.AnimatorConditionMode=_l;exports.AnimatorController=mu;exports.AnimatorControllerParameterType=J1;exports.AnimatorStateInfo=n0;exports.Antialiasing=FA;exports.Application=dF;exports.ApplicationEvents=q0;exports.AssetDatabase=wL;exports.AssetReference=qn;exports.AttachedObject=io;exports.AttachedObjectEvents=h_;exports.AudioExtension=Nb;exports.AudioListener=If;exports.AudioSource=xn;exports.AudioTrackHandler=cu;exports.AvatarBlink_Simple=Tu;exports.AvatarEyeLook_Rotation=dp;exports.AvatarLoader=Cb;exports.AvatarMarker=jn;exports.AvatarModel=wb;exports.Avatar_Brain_LookAt=Em;exports.Avatar_MouthShapes=UA;exports.Avatar_MustacheShake=KI;exports.Avatar_POI=Ns;exports.Axes=Hd;exports.AxesHelper=fp;exports.BaseUIComponent=Go;exports.BasicIKConstraint=eM;exports.BehaviorExtension=Gb;exports.BehaviorModel=rs;exports.Behaviour=Ce;exports.Bloom=Pu;exports.BoxCollider=zA;exports.BoxGizmo=Mu;exports.BoxHelperComponent=Zr;exports.Button=Vc;exports.CallInfo=su;exports.Camera=ki;exports.Canvas=ws;exports.CanvasGroup=mp;exports.CapsuleCollider=ql;exports.ChangeMaterialOnClick=HA;exports.ChangeTransformOnClick=ku;exports.CharacterController=Ou;exports.CharacterControllerInput=Wc;exports.ChromaticAberration=WA;exports.CircularBuffer=Ma;exports.ClearFlags=hN;exports.ClipExtrapolation=xl;exports.Collider=Na;exports.Collision=ZN;exports.CollisionDetectionMode=Sb;exports.ColorAdjustments=uh;exports.ColorBySpeedModule=Lu;exports.ColorOverLifetimeModule=qA;exports.Component=eh;exports.ComponentEvents=fA;exports.ComponentLifecycleEvents=pA;exports.ConnectionEvents=rL;exports.ContactPoint=KN;exports.Context=_t;exports.ContextArgs=Qq;exports.ContextEvent=xr;exports.ContextRegistry=mn;exports.ControlTrackHandler=Ub;exports.ControllerEvents=cc;exports.ControllerType=rf;exports.CustomBranding=gh;exports.CustomShader=fr;exports.DefaultReflectionMode=W0;exports.Deletable=dM;exports.DeleteBox=Xb;exports.DepthOfField=Yo;exports.DeviceFlag=Yb;exports.DocumentExtension=fM;exports.DragControls=Rl;exports.DropListener=XA;exports.Duplicatable=Nu;exports.EXTENSION_NAME=a0;exports.EmissionModule=Ga;exports.EmphasizeOnClick=vp;exports.EngineLoadingView=Lg;exports.EventList=sr;exports.EventListEvent=vb;exports.EventSystem=tr;exports.EventTrigger=Kb;exports.FieldWithDefault=uI;exports.FileSpawnModel=bN;exports.File_Event=_N;exports.FixedJoint=_M;exports.FlyControls=bM;exports.Fog=bp;exports.FrameEvent=Mr;exports.GameObject=$;exports.Gizmos=_a;exports.GltfExport=Ac;exports.GltfExportBox=CM;exports.GltfLoadEvent=lu;exports.GltfLoadEventType=HN;exports.Gradient=dh;exports.Graphic=Bu;exports.GraphicRaycaster=YI;exports.Graphics=mr;exports.GridHelper=xp;exports.GridLayoutGroup=cM;exports.GroundProjectedEnv=zu;exports.GroupActionModel=Tl;exports.HideFlags=ML;exports.HideOnStart=hM;exports.HingeJoint=YA;exports.HorizontalLayoutGroup=aM;exports.HostData=qW;exports.Image=gp;exports.ImageReference=ef;exports.ImageReferenceSerializer=lF;exports.InheritVelocityModule=ph;exports.Input=iO;exports.InputEvents=ha;exports.InputField=Gu;exports.InstancingUtil=ir;exports.InstantiateEvent=cL;exports.InstantiateIdProvider=Us;exports.InstantiateOptions=Ta;exports.Interactable=np;exports.JoinedRoomResponse=DW;exports.KeyEventArgs=jy;exports.LODGroup=KA;exports.LODModel=Qu;exports.LeftRoomResponse=kW;exports.Light=lr;exports.LightData=uF;exports.LimitVelocityOverLifetimeModule=Sn;exports.LoadingElementOptions=t7;exports.LogStats=EM;exports.LogType=xa;exports.LookAt=Hu;exports.LookAtConstraint=IA;exports.MainModule=ls;exports.MarkerType=JI;exports.MaskableGraphic=QA;exports.Mathf=Ze;exports.MeshCollider=GA;exports.MeshRenderer=yb;exports.MinMaxCurve=ot;exports.MinMaxGradient=cr;exports.NEEDLE_ENGINE_GENERATOR=ak;exports.NEEDLE_ENGINE_VERSION=wE;exports.NEEDLE_progressive=Bo;exports.NeedleEngineHTMLElement=zM;exports.NeedleGltfLoader=UM;exports.NeedlePatchesKey=Ky;exports.NestedGltf=tx;exports.NetworkConnection=aL;exports.Networking=Uu;exports.NoiseModule=di;exports.ObjectRaycaster=vu;exports.OffsetConstraint=Vu;exports.OpenURL=wp;exports.OrbitControls=ah;exports.Outline=pp;exports.OwnershipEvent=oL;exports.OwnershipModel=ab;exports.Padding=ch;exports.ParticleBurst=Fm;exports.ParticleSubEmitter=nx;exports.ParticleSystem=ln;exports.ParticleSystemRenderer=Xc;exports.Physics=hO;exports.PhysicsMaterialCombine=oa;exports.PixelationEffect=ZA;exports.PlayAnimationOnClick=hh;exports.PlayAudioOnClick=yp;exports.PlayableDirector=ou;exports.PlayerColor=yu;exports.PlayerState=af;exports.PlayerStateEvent=GN;exports.PlayerSync=FM;exports.PlayerView=fF;exports.PlayerViewManager=pF;exports.PointerEventData=$h;exports.PointerType=tO;exports.PostProcessingEffect=Vs;exports.PostProcessingHandler=sx;exports.PreliminaryAction=_p;exports.PreliminaryTrigger=VA;exports.ProgressiveLoadingInfo=g3;exports.RGBAColor=xi;exports.RapierPhysics=Lh;exports.RawImage=Hb;exports.RaycastOptions=jo;exports.Raycaster=lp;exports.Rect=sM;exports.RectTransform=xs;exports.ReflectionProbe=ip;exports.RegisteredAnimationInfo=_b;exports.RemoteSkybox=ju;exports.RenderTexture=Fl;exports.RenderTextureSerializer=v3;exports.Renderer=Ki;exports.RendererData=hF;exports.RendererLightmap=Sm;exports.Rigidbody=Gi;exports.RigidbodyConstraints=tn;exports.RoomEvents=Ji;exports.RotationBySpeedModule=Br;exports.RotationOverLifetimeModule=mo;exports.SceneLightSettings=t_;exports.SceneSwitcher=Dr;exports.ScreenCapture=$A;exports.ScreenSpaceAmbientOcclusion=Yc;exports.SendQueue=Zs;exports.SetActiveOnClick=Ap;exports.ShadowCatcher=tv;exports.ShapeModule=hn;exports.SignalAsset=kA;exports.SignalReceiver=up;exports.SignalReceiverEvent=hp;exports.SignalTrackHandler=Lm;exports.Size=nM;exports.SizeBySpeedModule=js;exports.SizeOverLifetimeModule=fh;exports.SkinnedMeshRenderer=dI;exports.SmoothFollow=mh;exports.SpatialHtml=RM;exports.SpatialTrigger=nv;exports.SpatialTriggerReceiver=Ia;exports.SpectatorCamera=ax;exports.SphereCollider=NA;exports.SphereIntersection=lO;exports.SphereOverlapResult=$N;exports.Sprite=Jc;exports.SpriteData=Ip;exports.SpriteRenderer=Wu;exports.SpriteSheet=sv;exports.StateMachineBehaviour=g7;exports.SubEmitterSystem=Gm;exports.SyncedCamera=cx;exports.SyncedRoom=Ah;exports.SyncedTransform=jl;exports.TapGestureTrigger=uM;exports.TeleportTarget=kb;exports.TestRunner=BM;exports.TestSimulateUserData=DM;exports.Text=Ws;exports.TextBuilder=Wb;exports.TextExtension=qb;exports.TextureSheetAnimationModule=hs;exports.TiltShiftEffect=Va;exports.Time=uO;exports.ToneMapping=ov;exports.TrackHandler=OA;exports.TrackType=pr;exports.TrailModule=Fi;exports.TransformData=bb;exports.TransformGizmo=qu;exports.TriggerBuilder=rr;exports.TriggerModel=Mc;exports.TypeStore=Q;exports.UIRaycastUtils=Ef;exports.UIRootComponent=DA;exports.USDObject=eo;exports.USDZExporter=vo;exports.USDZText=Pl;exports.Upload_Result=ES;exports.UriSerializer=y3;exports.UsageMarker=sp;exports.UserJoinedOrLeftRoomModel=OW;exports.VRUserState=Oo;exports.VariantAction=gI;exports.VelocityOverLifetimeModule=Qi;exports.VerticalLayoutGroup=oM;exports.VideoPlayer=us;exports.ViewDevice=Ea;exports.Vignette=Xu;exports.VisibilityAction=jA;exports.Voip=Gc;exports.Volume=hx;exports.VolumeParameter=Ft;exports.VolumeProfile=LA;exports.WaitForFrames=$ne;exports.WaitForSeconds=BN;exports.Watch=hf;exports.WebAR=ru;exports.WebARCameraBackground=ux;exports.WebARSessionRoot=rh;exports.WebXR=wt;exports.WebXRAvatar=ba;exports.WebXRController=Yi;exports.WebXREvent=Ei;exports.WebXRImageTracking=dx;exports.WebXRImageTrackingModel=Kc;exports.WebXRPlaneTracking=fx;exports.WebXRSync=Om;exports.WebXRTrackedImage=vc;exports.XRFlag=ns;exports.XRGrabModel=px;exports.XRGrabRendering=OM;exports.XRRig=Ob;exports.XRSessionMode=_m;exports.XRState=to;exports.XRStateFlag=An;exports.__Ignore=LM;exports.__internalNotifyObjectDestroyed=EL;exports.activeInHierarchyFieldName=Sc;exports.addCustomExtension=IX;exports.addFile=iE;exports.addFileFromUrl=xN;exports.addGltfLoadEventListener=Wre;exports.addNewComponent=$l;exports.addPatch=n6;exports.apply=ub;exports.applyChanges=soe;exports.beginListenDestroy=uL;exports.beginListenFileSpawn=wN;exports.beginListenInstantiate=dL;exports.build_scene_functions=Gq;exports.builtinComponentKeyName=Fh;exports.calculateProgress01=j1;exports.colorSerializer=BX;exports.componentSerializer=c0;exports.copyTexture=cO;exports.createGLTFLoader=NM;exports.createMotion=EF;exports.debugNet=Ps;exports.debugOwner=fg;exports.deepClone=w_;exports.delay=Wm;exports.deserializeObject=U0;exports.destroy=Vl;exports.destroyComponentInstance=vL;exports.detectARSupport=cN;exports.detectVRSupport=lN;exports.disposeObjectResources=Po;exports.download=oF;exports.download_file=Q1;exports.editorGuidKeyName=wg;exports.effectsOrder=cE;exports.eventListSerializer=FX;exports.findAnimations=qN;exports.findAnimationsLate=Xre;exports.findByGuid=AA;exports.findObjectOfType=_L;exports.findObjectsOfType=bL;exports.findUsers=B1;exports.foreachComponent=gu;exports.foreachComponentEnumerator=k1;exports.forward=kj;exports.generateSeed=lb;exports.getComponent=Qf;exports.getComponentInChildren=Hf;exports.getComponentInParent=Am;exports.getComponents=gA;exports.getComponentsInChildren=mA;exports.getComponentsInParent=hb;exports.getIp=Ez;exports.getIpAndLocation=Iz;exports.getIpCloudflare=Sz;exports.getLoader=zo;exports.getOrAddComponent=P1;exports.getParam=ce;exports.getPath=_z;exports.getUrlParams=jm;exports.getUserCount=h6;exports.getWorldDirection=Lj;exports.getWorldEuler=rO;exports.getWorldPosition=Ct;exports.getWorldQuaternion=Bn;exports.getWorldRotation=b1;exports.getWorldScale=is;exports.hasProLicense=Ol;exports.hash=G1;exports.instantiate=vA;exports.isActiveInHierarchy=TL;exports.isActiveSelf=Vf;exports.isAnimationAction=aO;exports.isDebugMode=Az;exports.isDestroyed=D1;exports.isDevEnvironment=ho;exports.isHostedOnGlitch=ik;exports.isHotReloading=eoe;exports.isLocalNetwork=zs;exports.isMobileDevice=_u;exports.isMozillaXR=xE;exports.isQuest=wz;exports.isSafari=hc;exports.isUsageTrackingEnabled=SL;exports.isUsingInstancing=db;exports.isiOS=nm;exports.loadSync=WN;exports.logHierarchy=z0;exports.lookAtInverse=Pj;exports.makeId=yz;exports.makeIdFromRandomWords=$D;exports.markAsInstancedRendered=PL;exports.moveComponentInstance=R1;exports.nameof=mz;exports.nameofFactory=S0;exports.objectSerializer=A3;exports.parseSync=jN;exports.prefix=oJ;exports.pushState=KD;exports.randomNumber=ZD;exports.register=toe;exports.registerComponent=mb;exports.registerComponentExtension=hI;exports.registerExtensions=m3;exports.registerLoader=H1;exports.registerPrefabProvider=pL;exports.relativePathPrefix=tk;exports.removeComponent=T1;exports.removeCustomExtension=MX;exports.removeGltfLoadEventListener=qre;exports.removePatch=s6;exports.resolveUrl=Xl;exports.sanitizeString=ek;exports.screenshot=_oe;exports.sendDestroyed=hL;exports.serializable=w;exports.serializeObject=$2;exports.serializeable=Wf;exports.setActive=Bg;exports.setDestroyed=BL;exports.setOrAddParamsToUrl=im;exports.setParam=vz;exports.setParamWithoutReload=JD;exports.setState=bE;exports.setUsageTrackingEnabled=c6;exports.setWorldEuler=oO;exports.setWorldPosition=bn;exports.setWorldPositionXYZ=_f;exports.setWorldQuaternion=or;exports.setWorldQuaternionXYZW=sO;exports.setWorldRotation=Uj;exports.setWorldRotationXYZ=K_;exports.setWorldScale=dS;exports.showBalloonMessage=ss;exports.showBalloonWarning=Vo;exports.showDebugConsole=v1;exports.slerp=nO;exports.syncDestroy=cb;exports.syncField=PM;exports.syncInstantiate=M1;exports.textureToCanvas=Nj;exports.tryFindObject=lf;exports.tryFindObjectByName=XN;exports.tryFindScript=Yre;exports.unregister=ioe;exports.upload_file=rF;exports.validate=La;
|