@loaders.gl/gltf 4.2.0-alpha.6 → 4.2.0-beta.1

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/dist/dist.min.js CHANGED
@@ -4,6 +4,6 @@
4
4
  else if (typeof define === 'function' && define.amd) define([], factory);
5
5
  else if (typeof exports === 'object') exports['loaders'] = factory();
6
6
  else root['loaders'] = factory();})(globalThis, function () {
7
- "use strict";var __exports__=(()=>{var _n=Object.create;var le=Object.defineProperty;var Gn=Object.getOwnPropertyDescriptor;var Sn=Object.getOwnPropertyNames;var On=Object.getPrototypeOf,Un=Object.prototype.hasOwnProperty;var Ln=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),y=(r,e)=>{for(var t in e)le(r,t,{get:e[t],enumerable:!0})},me=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Sn(e))!Un.call(r,s)&&s!==t&&le(r,s,{get:()=>e[s],enumerable:!(n=Gn(e,s))||n.enumerable});return r},de=(r,e,t)=>(me(r,e,"default"),t&&me(t,e,"default")),wn=(r,e,t)=>(t=r!=null?_n(On(r)):{},me(e||!r||!r.__esModule?le(t,"default",{value:r,enumerable:!0}):t,r)),Hn=r=>me(le({},"__esModule",{value:!0}),r);var Qt=Ln((la,jt)=>{jt.exports=globalThis.loaders});var Be={};y(Be,{EXT_FEATURE_METADATA:()=>at,EXT_MESH_FEATURES:()=>tt,EXT_STRUCTURAL_METADATA:()=>st,GLBLoader:()=>Fn,GLBWriter:()=>Rn,GLTFLoader:()=>ve,GLTFScenegraph:()=>l,GLTFWriter:()=>yn,_getMemoryUsageGLTF:()=>fr,postProcessGLTF:()=>Dn});de(Be,wn(Qt(),1));var rt={};y(rt,{decode:()=>_s,name:()=>tt});var kt="4.2.0-alpha.5";async function ee(r,e,t,n){return n._parse(r,e,t,n)}function F(r,e){if(!r)throw new Error(e||"loader assertion failed.")}var R={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},Jn=R.self||R.window||R.global||{},Pn=R.window||R.self||R.global||{},Nn=R.global||R.self||R.window||{},Kn=R.document||{};var te=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var Vt=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),vn=Vt&&parseFloat(Vt[1])||0;function Xn(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.2.0-alpha.5"),globalThis._loadersgl_.version}var Yt=Xn();function Wt(r,e){if(!r)throw new Error(e||"loaders.gl assertion failed.")}var D={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},xa=D.self||D.window||D.global||{},Ma=D.window||D.self||D.global||{},Ta=D.global||D.self||D.window||{},ya=D.document||{};var X=typeof process!="object"||String(process)!=="[object process]"||process.browser,he=typeof importScripts=="function",Fa=typeof window<"u"&&typeof window.orientation<"u",Zt=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Ia=Zt&&parseFloat(Zt[1])||0;var x={};var je={};async function _(r,e=null,t={},n=null){return e&&(r=qt(r,e,t,n)),je[r]=je[r]||jn(r),await je[r]}function qt(r,e,t={},n=null){if(!t.useLocalLibraries&&r.startsWith("http"))return r;n=n||r;let s=t.modules||{};return s[n]?s[n]:X?t.CDN?(Wt(t.CDN.startsWith("http")),`${t.CDN}/${e}@${Yt}/dist/libs/${n}`):he?`../src/libs/${n}`:`modules/${e}/src/libs/${n}`:`modules/${e}/dist/libs/${n}`}async function jn(r){if(r.endsWith("wasm"))return await kn(r);if(!X)try{return x&&void 0&&await(void 0)(r)}catch(t){return console.error(t),null}if(he)return importScripts(r);let e=await Vn(r);return Qn(e,r)}function Qn(r,e){if(!X)return void 0&&(void 0)(r,e);if(he)return eval.call(globalThis,r),null;let t=document.createElement("script");t.id=e;try{t.appendChild(document.createTextNode(r))}catch{t.text=r}return document.body.appendChild(t),null}async function kn(r){return X||!void 0||r.startsWith("http")?await(await fetch(r)).arrayBuffer():await(void 0)(r)}async function Vn(r){return X||!void 0||r.startsWith("http")?await(await fetch(r)).text():await(void 0)(r)}function $t(r,e=5){return typeof r=="string"?r.slice(0,e):ArrayBuffer.isView(r)?zt(r.buffer,r.byteOffset,e):r instanceof ArrayBuffer?zt(r,0,e):""}function zt(r,e,t){if(r.byteLength<=e+t)return"";let n=new DataView(r),s="";for(let o=0;o<t;o++)s+=String.fromCharCode(n.getUint8(e+o));return s}function Qe(r){try{return JSON.parse(r)}catch{throw new Error(`Failed to parse JSON from data starting with "${$t(r)}"`)}}function re(r,e,t){let n=t!==void 0?new Uint8Array(r).subarray(e,e+t):new Uint8Array(r).subarray(e);return new Uint8Array(n).buffer}function G(r,e){return F(r>=0),F(e>0),r+(e-1)&~(e-1)}function ke(r,e,t){let n;if(r instanceof ArrayBuffer)n=new Uint8Array(r);else{let s=r.byteOffset,o=r.byteLength;n=new Uint8Array(r.buffer||r.arrayBuffer,s,o)}return e.set(n,t),t+G(n.byteLength,4)}function pe(r,e,t,n){let s=G(t.byteLength,n),o=s-t.byteLength;if(r){let i=new Uint8Array(r.buffer,r.byteOffset+e,t.byteLength),a=new Uint8Array(t);i.set(a);for(let c=0;c<o;++c)r.setUint8(e+t.byteLength+c,32)}return e+=s,e}function Ve(r,e,t,n){let o=new TextEncoder().encode(t);return e=pe(r,e,o,n),e}var Yn=globalThis.loaders?.parseImageNode,Ye=typeof Image<"u",We=typeof ImageBitmap<"u",Wn=Boolean(Yn),Ze=te?!0:Wn;function er(r){switch(r){case"auto":return We||Ye||Ze;case"imagebitmap":return We;case"image":return Ye;case"data":return Ze;default:throw new Error(`@loaders.gl/images: image ${r} not supported in this environment`)}}function tr(){if(We)return"imagebitmap";if(Ye)return"image";if(Ze)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function rr(r){let e=Zn(r);if(!e)throw new Error("Not an image");return e}function ne(r){switch(rr(r)){case"data":return r;case"image":case"imagebitmap":let e=document.createElement("canvas"),t=e.getContext("2d");if(!t)throw new Error("getImageData");return e.width=r.width,e.height=r.height,t.drawImage(r,0,0),t.getImageData(0,0,r.width,r.height);default:throw new Error("getImageData")}}function Zn(r){return typeof ImageBitmap<"u"&&r instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&r instanceof Image?"image":r&&typeof r=="object"&&r.data&&r.width&&r.height?"data":null}var qn=/^data:image\/svg\+xml/,zn=/\.svg((\?|#).*)?$/;function Ce(r){return r&&(qn.test(r)||zn.test(r))}function nr(r,e){if(Ce(e)){let n=new TextDecoder().decode(r);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(n=unescape(encodeURIComponent(n)))}catch(o){throw new Error(o.message)}return`data:image/svg+xml;base64,${btoa(n)}`}return qe(r,e)}function qe(r,e){if(Ce(e))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(r)])}async function Ee(r,e,t){let n=nr(r,t),s=self.URL||self.webkitURL,o=typeof n!="string"&&s.createObjectURL(n);try{return await $n(o||n,e)}finally{o&&s.revokeObjectURL(o)}}async function $n(r,e){let t=new Image;return t.src=r,e.image&&e.image.decode&&t.decode?(await t.decode(),t):await new Promise((n,s)=>{try{t.onload=()=>n(t),t.onerror=o=>{let i=o instanceof Error?o.message:"error";s(new Error(i))}}catch(o){s(o)}})}var es={},sr=!0;async function or(r,e,t){let n;Ce(t)?n=await Ee(r,e,t):n=qe(r,t);let s=e&&e.imagebitmap;return await ts(n,s)}async function ts(r,e=null){if((rs(e)||!sr)&&(e=null),e)try{return await createImageBitmap(r,e)}catch(t){console.warn(t),sr=!1}return await createImageBitmap(r)}function rs(r){for(let e in r||es)return!1;return!0}function ir(r){return!is(r,"ftyp",4)||!(r[8]&96)?null:ns(r)}function ns(r){switch(ss(r,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function ss(r,e,t){return String.fromCharCode(...r.slice(e,t))}function os(r){return[...r].map(e=>e.charCodeAt(0))}function is(r,e,t=0){let n=os(e);for(let s=0;s<n.length;++s)if(n[s]!==r[s+t])return!1;return!0}var S=!1,se=!0;function J(r){let e=oe(r);return cs(e)||us(e)||As(e)||fs(e)||as(e)}function as(r){let e=new Uint8Array(r instanceof DataView?r.buffer:r),t=ir(e);return t?{mimeType:t.mimeType,width:0,height:0}:null}function cs(r){let e=oe(r);return e.byteLength>=24&&e.getUint32(0,S)===2303741511?{mimeType:"image/png",width:e.getUint32(16,S),height:e.getUint32(20,S)}:null}function As(r){let e=oe(r);return e.byteLength>=10&&e.getUint32(0,S)===1195984440?{mimeType:"image/gif",width:e.getUint16(6,se),height:e.getUint16(8,se)}:null}function fs(r){let e=oe(r);return e.byteLength>=14&&e.getUint16(0,S)===16973&&e.getUint32(2,se)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,se),height:e.getUint32(22,se)}:null}function us(r){let e=oe(r);if(!(e.byteLength>=3&&e.getUint16(0,S)===65496&&e.getUint8(2)===255))return null;let{tableMarkers:n,sofMarkers:s}=Bs(),o=2;for(;o+9<e.byteLength;){let i=e.getUint16(o,S);if(s.has(i))return{mimeType:"image/jpeg",height:e.getUint16(o+5,S),width:e.getUint16(o+7,S)};if(!n.has(i))return null;o+=2,o+=e.getUint16(o,S)}return null}function Bs(){let r=new Set([65499,65476,65484,65501,65534]);for(let t=65504;t<65520;++t)r.add(t);return{tableMarkers:r,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function oe(r){if(r instanceof DataView)return r;if(ArrayBuffer.isView(r))return new DataView(r.buffer);if(r instanceof ArrayBuffer)return new DataView(r);throw new Error("toDataView")}async function ar(r,e){let{mimeType:t}=J(r)||{},n=globalThis.loaders?.parseImageNode;return F(n),await n(r,t)}async function cr(r,e,t){e=e||{};let s=(e.image||{}).type||"auto",{url:o}=t||{},i=ms(s),a;switch(i){case"imagebitmap":a=await or(r,e,o);break;case"image":a=await Ee(r,e,o);break;case"data":a=await ar(r,e);break;default:F(!1)}return s==="data"&&(a=ne(a)),a}function ms(r){switch(r){case"auto":case"data":return tr();default:return er(r),r}}var ls=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],ds=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],hs={image:{type:"auto",decode:!0}},ze={id:"image",module:"images",name:"Images",version:kt,mimeTypes:ds,extensions:ls,parse:cr,tests:[r=>Boolean(J(new DataView(r)))],options:hs};var $e={};function et(r){if($e[r]===void 0){let e=te?Cs(r):ps(r);$e[r]=e}return $e[r]}function ps(r){let e=["image/png","image/jpeg","image/gif"],t=globalThis.loaders?.imageFormatsNode||e,n=globalThis.loaders?.parseImageNode;return Boolean(n)&&t.includes(r)}function Cs(r){switch(r){case"image/avif":case"image/webp":return Es(r);default:return!0}}function Es(r){try{return document.createElement("canvas").toDataURL(r).indexOf(`data:${r}`)===0}catch{return!1}}function p(r,e){if(!r)throw new Error(e||"assert failed: gltf")}var ge={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},xe={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};var gs=1.33,Ar=["SCALAR","VEC2","VEC3","VEC4"],xs=[[Int8Array,5120],[Uint8Array,5121],[Int16Array,5122],[Uint16Array,5123],[Uint32Array,5125],[Float32Array,5126],[Float64Array,5130]],Ms=new Map(xs),Ts={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},ys={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},Fs={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function Me(r){return Ar[r-1]||Ar[0]}function j(r){let e=Ms.get(r.constructor);if(!e)throw new Error("Illegal typed array");return e}function Q(r,e){let t=Fs[r.componentType],n=Ts[r.type],s=ys[r.componentType],o=r.count*n,i=r.count*n*s;p(i>=0&&i<=e.byteLength);let a=xe[r.componentType],c=ge[r.type];return{ArrayType:t,length:o,byteLength:i,componentByteSize:a,numberOfComponentsInElement:c}}function fr(r){let{images:e,bufferViews:t}=r;e=e||[],t=t||[];let n=e.map(i=>i.bufferView);t=t.filter(i=>!n.includes(i));let s=t.reduce((i,a)=>i+a.byteLength,0),o=e.reduce((i,a)=>{let{width:c,height:A}=a.image;return i+c*A},0);return s+Math.ceil(4*o*gs)}function ur(r,e,t){let n=r.bufferViews[t];p(n);let s=n.buffer,o=e[s];p(o);let i=(n.byteOffset||0)+o.byteOffset;return new Uint8Array(o.arrayBuffer,i,n.byteLength)}function Br(r,e,t){let n=typeof t=="number"?r.accessors?.[t]:t;if(!n)throw new Error(`No gltf accessor ${JSON.stringify(t)}`);let s=r.bufferViews?.[n.bufferView||0];if(!s)throw new Error(`No gltf buffer view for accessor ${s}`);let{arrayBuffer:o,byteOffset:i}=e[s.buffer],a=(i||0)+(n.byteOffset||0)+(s.byteOffset||0),{ArrayType:c,length:A,componentByteSize:f,numberOfComponentsInElement:u}=Q(n,s),B=f*u,m=s.byteStride||B;if(typeof s.byteStride>"u"||s.byteStride===B)return new c(o,a,A);let d=new c(A);for(let h=0;h<n.count;h++){let g=new c(o,a+h*m,u);d.set(g,h*u)}return d}function Is(){return{asset:{version:"2.0",generator:"loaders.gl"},buffers:[],extensions:{},extensionsRequired:[],extensionsUsed:[]}}var l=class{gltf;sourceBuffers;byteLength;constructor(e){this.gltf={json:e?.json||Is(),buffers:e?.buffers||[],images:e?.images||[]},this.sourceBuffers=[],this.byteLength=0,this.gltf.buffers&&this.gltf.buffers[0]&&(this.byteLength=this.gltf.buffers[0].byteLength,this.sourceBuffers=[this.gltf.buffers[0]])}get json(){return this.gltf.json}getApplicationData(e){return this.json[e]}getExtraData(e){return(this.json.extras||{})[e]}hasExtension(e){let t=this.getUsedExtensions().find(s=>s===e),n=this.getRequiredExtensions().find(s=>s===e);return typeof t=="string"||typeof n=="string"}getExtension(e){let t=this.getUsedExtensions().find(s=>s===e),n=this.json.extensions||{};return t?n[e]:null}getRequiredExtension(e){return this.getRequiredExtensions().find(n=>n===e)?this.getExtension(e):null}getRequiredExtensions(){return this.json.extensionsRequired||[]}getUsedExtensions(){return this.json.extensionsUsed||[]}getRemovedExtensions(){return this.json.extensionsRemoved||[]}getObjectExtension(e,t){return(e.extensions||{})[t]}getScene(e){return this.getObject("scenes",e)}getNode(e){return this.getObject("nodes",e)}getSkin(e){return this.getObject("skins",e)}getMesh(e){return this.getObject("meshes",e)}getMaterial(e){return this.getObject("materials",e)}getAccessor(e){return this.getObject("accessors",e)}getTexture(e){return this.getObject("textures",e)}getSampler(e){return this.getObject("samplers",e)}getImage(e){return this.getObject("images",e)}getBufferView(e){return this.getObject("bufferViews",e)}getBuffer(e){return this.getObject("buffers",e)}getObject(e,t){if(typeof t=="object")return t;let n=this.json[e]&&this.json[e][t];if(!n)throw new Error(`glTF file error: Could not find ${e}[${t}]`);return n}getTypedArrayForBufferView(e){e=this.getBufferView(e);let t=e.buffer,n=this.gltf.buffers[t];p(n);let s=(e.byteOffset||0)+n.byteOffset;return new Uint8Array(n.arrayBuffer,s,e.byteLength)}getTypedArrayForAccessor(e){let t=this.getAccessor(e);return Br(this.gltf.json,this.gltf.buffers,t)}getTypedArrayForImageData(e){e=this.getAccessor(e);let t=this.getBufferView(e.bufferView),s=this.getBuffer(t.buffer).data,o=t.byteOffset||0;return new Uint8Array(s,o,t.byteLength)}addApplicationData(e,t){return this.json[e]=t,this}addExtraData(e,t){return this.json.extras=this.json.extras||{},this.json.extras[e]=t,this}addObjectExtension(e,t,n){return e.extensions=e.extensions||{},e.extensions[t]=n,this.registerUsedExtension(t),this}setObjectExtension(e,t,n){let s=e.extensions||{};s[t]=n}removeObjectExtension(e,t){let n=e?.extensions||{};if(n[t]){this.json.extensionsRemoved=this.json.extensionsRemoved||[];let s=this.json.extensionsRemoved;s.includes(t)||s.push(t)}delete n[t]}addExtension(e,t={}){return p(t),this.json.extensions=this.json.extensions||{},this.json.extensions[e]=t,this.registerUsedExtension(e),t}addRequiredExtension(e,t={}){return p(t),this.addExtension(e,t),this.registerRequiredExtension(e),t}registerUsedExtension(e){this.json.extensionsUsed=this.json.extensionsUsed||[],this.json.extensionsUsed.find(t=>t===e)||this.json.extensionsUsed.push(e)}registerRequiredExtension(e){this.registerUsedExtension(e),this.json.extensionsRequired=this.json.extensionsRequired||[],this.json.extensionsRequired.find(t=>t===e)||this.json.extensionsRequired.push(e)}removeExtension(e){if(this.json.extensions?.[e]){this.json.extensionsRemoved=this.json.extensionsRemoved||[];let t=this.json.extensionsRemoved;t.includes(e)||t.push(e)}this.json.extensions&&delete this.json.extensions[e],this.json.extensionsRequired&&this._removeStringFromArray(this.json.extensionsRequired,e),this.json.extensionsUsed&&this._removeStringFromArray(this.json.extensionsUsed,e)}setDefaultScene(e){this.json.scene=e}addScene(e){let{nodeIndices:t}=e;return this.json.scenes=this.json.scenes||[],this.json.scenes.push({nodes:t}),this.json.scenes.length-1}addNode(e){let{meshIndex:t,matrix:n}=e;this.json.nodes=this.json.nodes||[];let s={mesh:t};return n&&(s.matrix=n),this.json.nodes.push(s),this.json.nodes.length-1}addMesh(e){let{attributes:t,indices:n,material:s,mode:o=4}=e,a={primitives:[{attributes:this._addAttributes(t),mode:o}]};if(n){let c=this._addIndices(n);a.primitives[0].indices=c}return Number.isFinite(s)&&(a.primitives[0].material=s),this.json.meshes=this.json.meshes||[],this.json.meshes.push(a),this.json.meshes.length-1}addPointCloud(e){let n={primitives:[{attributes:this._addAttributes(e),mode:0}]};return this.json.meshes=this.json.meshes||[],this.json.meshes.push(n),this.json.meshes.length-1}addImage(e,t){let n=J(e),s=t||n?.mimeType,i={bufferView:this.addBufferView(e),mimeType:s};return this.json.images=this.json.images||[],this.json.images.push(i),this.json.images.length-1}addBufferView(e,t=0,n=this.byteLength){let s=e.byteLength;p(Number.isFinite(s)),this.sourceBuffers=this.sourceBuffers||[],this.sourceBuffers.push(e);let o={buffer:t,byteOffset:n,byteLength:s};return this.byteLength+=G(s,4),this.json.bufferViews=this.json.bufferViews||[],this.json.bufferViews.push(o),this.json.bufferViews.length-1}addAccessor(e,t){let n={bufferView:e,type:Me(t.size),componentType:t.componentType,count:t.count,max:t.max,min:t.min};return this.json.accessors=this.json.accessors||[],this.json.accessors.push(n),this.json.accessors.length-1}addBinaryBuffer(e,t={size:3}){let n=this.addBufferView(e),s={min:t.min,max:t.max};(!s.min||!s.max)&&(s=this._getAccessorMinMax(e,t.size));let o={size:t.size,componentType:j(e),count:Math.round(e.length/t.size),min:s.min,max:s.max};return this.addAccessor(n,Object.assign(o,t))}addTexture(e){let{imageIndex:t}=e,n={source:t};return this.json.textures=this.json.textures||[],this.json.textures.push(n),this.json.textures.length-1}addMaterial(e){return this.json.materials=this.json.materials||[],this.json.materials.push(e),this.json.materials.length-1}createBinaryChunk(){this.gltf.buffers=[];let e=this.byteLength,t=new ArrayBuffer(e),n=new Uint8Array(t),s=0;for(let o of this.sourceBuffers||[])s=ke(o,n,s);this.json?.buffers?.[0]?this.json.buffers[0].byteLength=e:this.json.buffers=[{byteLength:e}],this.gltf.binary=t,this.sourceBuffers=[t]}_removeStringFromArray(e,t){let n=!0;for(;n;){let s=e.indexOf(t);s>-1?e.splice(s,1):n=!1}}_addAttributes(e={}){let t={};for(let n in e){let s=e[n],o=this._getGltfAttributeName(n),i=this.addBinaryBuffer(s.value,s);t[o]=i}return t}_addIndices(e){return this.addBinaryBuffer(e,{size:1})}_getGltfAttributeName(e){switch(e.toLowerCase()){case"position":case"positions":case"vertices":return"POSITION";case"normal":case"normals":return"NORMAL";case"color":case"colors":return"COLOR_0";case"texcoord":case"texcoords":return"TEXCOORD_0";default:return e}}_getAccessorMinMax(e,t){let n={min:null,max:null};if(e.length<t)return n;n.min=[],n.max=[];let s=e.subarray(0,t);for(let o of s)n.min.push(o),n.max.push(o);for(let o=t;o<e.length;o+=t)for(let i=0;i<t;i++)n.min[0+i]=Math.min(n.min[0+i],e[o+i]),n.max[0+i]=Math.max(n.max[0+i],e[o+i]);return n}};function mr(r){return(r%1+1)%1}var lr={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16,BOOLEAN:1,STRING:1,ENUM:1},bs={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:BigInt64Array,UINT64:BigUint64Array,FLOAT32:Float32Array,FLOAT64:Float64Array},dr={INT8:1,UINT8:1,INT16:2,UINT16:2,INT32:4,UINT32:4,INT64:8,UINT64:8,FLOAT32:4,FLOAT64:8};function ie(r,e){return dr[e]*lr[r]}function k(r,e,t,n){if(t!=="UINT8"&&t!=="UINT16"&&t!=="UINT32"&&t!=="UINT64")return null;let s=r.getTypedArrayForBufferView(e),o=V(s,"SCALAR",t,n+1);return o instanceof BigInt64Array||o instanceof BigUint64Array?null:o}function V(r,e,t,n=1){let s=lr[e],o=bs[t],i=dr[t],a=n*s,c=a*i,A=r.buffer,f=r.byteOffset;return f%i!==0&&(A=new Uint8Array(A).slice(f,f+c).buffer,f=0),new o(A,f,a)}function Y(r,e,t){let n=`TEXCOORD_${e.texCoord||0}`,s=t.attributes[n],o=r.getTypedArrayForAccessor(s),i=r.gltf.json,a=e.index,c=i.textures?.[a]?.source;if(typeof c<"u"){let A=i.images?.[c]?.mimeType,f=r.gltf.images?.[c];if(f&&typeof f.width<"u"){let u=[];for(let B=0;B<o.length;B+=2){let m=Rs(f,A,o,B,e.channels);u.push(m)}return u}}return[]}function Te(r,e,t,n,s){if(!t?.length)return;let o=[];for(let f of t){let u=n.findIndex(B=>B===f);u===-1&&(u=n.push(f)-1),o.push(u)}let i=new Uint32Array(o),a=r.gltf.buffers.push({arrayBuffer:i.buffer,byteOffset:i.byteOffset,byteLength:i.byteLength})-1,c=r.addBufferView(i,a,0),A=r.addAccessor(c,{size:1,componentType:j(i),count:i.length});s.attributes[e]=A}function Rs(r,e,t,n,s=[0]){let o={r:{offset:0,shift:0},g:{offset:1,shift:8},b:{offset:2,shift:16},a:{offset:3,shift:24}},i=t[n],a=t[n+1],c=1;e&&(e.indexOf("image/jpeg")!==-1||e.indexOf("image/png")!==-1)&&(c=4);let A=Ds(i,a,r,c),f=0;for(let u of s){let B=typeof u=="number"?Object.values(o)[u]:o[u],m=A+B.offset,d=ne(r);if(d.data.length<=m)throw new Error(`${d.data.length} <= ${m}`);let h=d.data[m];f|=h<<B.shift}return f}function Ds(r,e,t,n=1){let s=t.width,o=mr(r)*(s-1),i=Math.round(o),a=t.height,c=mr(e)*(a-1),A=Math.round(c),f=t.components?t.components:n;return(A*s+i)*f}function ye(r,e,t,n,s){let o=[];for(let i=0;i<e;i++){let a=t[i],c=t[i+1]-t[i];if(c+a>n)break;let A=a/s,f=c/s;o.push(r.slice(A,A+f))}return o}function Fe(r,e,t){let n=[];for(let s=0;s<e;s++){let o=s*t;n.push(r.slice(o,o+t))}return n}function Ie(r,e,t,n){if(t)throw new Error("Not implemented - arrayOffsets for strings is specified");if(n){let s=[],o=new TextDecoder("utf8"),i=0;for(let a=0;a<r;a++){let c=n[a+1]-n[a];if(c+i<=e.length){let A=e.subarray(i,c+i),f=o.decode(A);s.push(f),i+=c}}return s}return[]}var hr="EXT_mesh_features",tt=hr;async function _s(r,e){let t=new l(r);Gs(t,e)}function Gs(r,e){let t=r.gltf.json;if(t.meshes)for(let n of t.meshes)for(let s of n.primitives)Ss(r,s,e)}function Ss(r,e,t){if(!t?.gltf?.loadBuffers)return;let s=e.extensions?.[hr]?.featureIds;if(s)for(let o of s){let i;if(typeof o.attribute<"u"){let a=`_FEATURE_ID_${o.attribute}`,c=e.attributes[a];i=r.getTypedArrayForAccessor(c)}else typeof o.texture<"u"&&t?.gltf?.loadImages?i=Y(r,o.texture,e):i=[];o.data=i}}var it={};y(it,{decode:()=>Os,name:()=>st});var nt="EXT_structural_metadata",st=nt;async function Os(r,e){let t=new l(r);Us(t,e)}function Us(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(nt);t&&(e.gltf?.loadImages&&Ls(r,t),ws(r,t))}function Ls(r,e){let t=e.propertyTextures,n=r.gltf.json;if(t&&n.meshes)for(let s of n.meshes)for(let o of s.primitives)Js(r,t,o,e)}function ws(r,e){let t=e.schema;if(!t)return;let n=t.classes,s=e.propertyTables;if(n&&s)for(let o in n){let i=Hs(s,o);i&&Ns(r,t,i)}}function Hs(r,e){for(let t of r)if(t.class===e)return t;return null}function Js(r,e,t,n){if(!e)return;let o=t.extensions?.[nt]?.propertyTextures;if(o)for(let i of o){let a=e[i];Ps(r,a,t,n)}}function Ps(r,e,t,n){if(!e.properties)return;n.dataAttributeNames||(n.dataAttributeNames=[]);let s=e.class;for(let o in e.properties){let i=`${s}_${o}`,a=e.properties?.[o];if(!a)continue;a.data||(a.data=[]);let c=a.data,A=Y(r,a,t);A!==null&&(Te(r,i,A,c,t),a.data=c,n.dataAttributeNames.push(i))}}function Ns(r,e,t){let n=e.classes?.[t.class];if(!n)throw new Error(`Incorrect data in the EXT_structural_metadata extension: no schema class with name ${t.class}`);let s=t.count;for(let o in n.properties){let i=n.properties[o],a=t.properties?.[o];if(a){let c=Ks(r,e,i,s,a);a.data=c}}}function Ks(r,e,t,n,s){let o=[],i=s.values,a=r.getTypedArrayForBufferView(i),c=vs(r,t,s,n),A=Xs(r,s,n);switch(t.type){case"SCALAR":case"VEC2":case"VEC3":case"VEC4":case"MAT2":case"MAT3":case"MAT4":{o=js(t,n,a,c);break}case"BOOLEAN":throw new Error(`Not implemented - classProperty.type=${t.type}`);case"STRING":{o=Ie(n,a,c,A);break}case"ENUM":{o=Qs(e,t,n,a,c);break}default:throw new Error(`Unknown classProperty type ${t.type}`)}return o}function vs(r,e,t,n){return e.array&&typeof e.count>"u"&&typeof t.arrayOffsets<"u"?k(r,t.arrayOffsets,t.arrayOffsetType||"UINT32",n):null}function Xs(r,e,t){return typeof e.stringOffsets<"u"?k(r,e.stringOffsets,e.stringOffsetType||"UINT32",t):null}function js(r,e,t,n){let s=r.array,o=r.count,i=ie(r.type,r.componentType),a=t.byteLength/i,c;return r.componentType?c=V(t,r.type,r.componentType,a):c=t,s?n?ye(c,e,n,t.length,i):o?Fe(c,e,o):[]:c}function Qs(r,e,t,n,s){let o=e.enumType;if(!o)throw new Error("Incorrect data in the EXT_structural_metadata extension: classProperty.enumType is not set for type ENUM");let i=r.enums?.[o];if(!i)throw new Error(`Incorrect data in the EXT_structural_metadata extension: schema.enums does't contain ${o}`);let a=i.valueType||"UINT16",c=ie(e.type,a),A=n.byteLength/c,f=V(n,e.type,a,A);if(f||(f=n),e.array){if(s)return ks({valuesData:f,numberOfElements:t,arrayOffsets:s,valuesDataBytesLength:n.length,elementSize:c,enumEntry:i});let u=e.count;return u?Vs(f,t,u,i):[]}return ot(f,0,t,i)}function ks(r){let{valuesData:e,numberOfElements:t,arrayOffsets:n,valuesDataBytesLength:s,elementSize:o,enumEntry:i}=r,a=[];for(let c=0;c<t;c++){let A=n[c],f=n[c+1]-n[c];if(f+A>s)break;let u=A/o,B=f/o,m=ot(e,u,B,i);a.push(m)}return a}function Vs(r,e,t,n){let s=[];for(let o=0;o<e;o++){let i=t*o,a=ot(r,i,t,n);s.push(a)}return s}function ot(r,e,t,n){let s=[];for(let o=0;o<t;o++)if(r instanceof BigInt64Array||r instanceof BigUint64Array)s.push("");else{let i=r[e+o],a=Ys(n,i);a?s.push(a.name):s.push("")}return s}function Ys(r,e){for(let t of r.values)if(t.value===e)return t;return null}var ct={};y(ct,{decode:()=>Ws,name:()=>at});var pr="EXT_feature_metadata",at=pr;async function Ws(r,e){let t=new l(r);Zs(t,e)}function Zs(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(pr);t&&(e.gltf?.loadImages&&qs(r,t),zs(r,t))}function qs(r,e){let t=e.schema;if(!t)return;let n=t.classes,{featureTextures:s}=e;if(n&&s)for(let o in n){let i=n[o],a=eo(s,o);a&&ro(r,a,i)}}function zs(r,e){let t=e.schema;if(!t)return;let n=t.classes,s=e.featureTables;if(n&&s)for(let o in n){let i=$s(s,o);i&&to(r,t,i)}}function $s(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function eo(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function to(r,e,t){if(!t.class)return;let n=e.classes?.[t.class];if(!n)throw new Error(`Incorrect data in the EXT_structural_metadata extension: no schema class with name ${t.class}`);let s=t.count;for(let o in n.properties){let i=n.properties[o],a=t.properties?.[o];if(a){let c=no(r,e,i,s,a);a.data=c}}}function ro(r,e,t){let n=e.class;for(let s in t.properties){let o=e?.properties?.[s];if(o){let i=co(r,o,n);o.data=i}}}function no(r,e,t,n,s){let o=[],i=s.bufferView,a=r.getTypedArrayForBufferView(i),c=so(r,t,s,n),A=oo(r,t,s,n);return t.type==="STRING"||t.componentType==="STRING"?o=Ie(n,a,c,A):io(t)&&(o=ao(t,n,a,c)),o}function so(r,e,t,n){return e.type==="ARRAY"&&typeof e.componentCount>"u"&&typeof t.arrayOffsetBufferView<"u"?k(r,t.arrayOffsetBufferView,t.offsetType||"UINT32",n):null}function oo(r,e,t,n){return typeof t.stringOffsetBufferView<"u"?k(r,t.stringOffsetBufferView,t.offsetType||"UINT32",n):null}function io(r){let e=["UINT8","INT16","UINT16","INT32","UINT32","INT64","UINT64","FLOAT32","FLOAT64"];return e.includes(r.type)||typeof r.componentType<"u"&&e.includes(r.componentType)}function ao(r,e,t,n){let s=r.type==="ARRAY",o=r.componentCount,i="SCALAR",a=r.componentType||r.type,c=ie(i,a),A=t.byteLength/c,f=V(t,i,a,A);return s?n?ye(f,e,n,t.length,c):o?Fe(f,e,o):[]:f}function co(r,e,t){let n=r.gltf.json;if(!n.meshes)return[];let s=[];for(let o of n.meshes)for(let i of o.primitives)Ao(r,t,e,s,i);return s}function Ao(r,e,t,n,s){let o={channels:t.channels,...t.texture},i=Y(r,o,s);i&&Te(r,e,i,n,s)}var w="4.2.0-alpha.5";var Cr="4.2.0-alpha.5";var be={TRANSCODER:"basis_transcoder.js",TRANSCODER_WASM:"basis_transcoder.wasm",ENCODER:"basis_encoder.js",ENCODER_WASM:"basis_encoder.wasm"},At;async function ut(r){let e=r.modules||{};return e.basis?e.basis:(At=At||fo(r),await At)}async function fo(r){let e=null,t=null;return[e,t]=await Promise.all([await _(be.TRANSCODER,"textures",r),await _(be.TRANSCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await uo(e,t)}function uo(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r(t).then(s=>{let{BasisFile:o,initializeBasis:i}=s;i(),n({BasisFile:o})})})}var ft;async function Bt(r){let e=r.modules||{};return e.basisEncoder?e.basisEncoder:(ft=ft||Bo(r),await ft)}async function Bo(r){let e=null,t=null;return[e,t]=await Promise.all([await _(be.ENCODER,"textures",r),await _(be.ENCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await mo(e,t)}function mo(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r(t).then(s=>{let{BasisFile:o,KTX2File:i,initializeBasis:a,BasisEncoder:c}=s;a(),n({BasisFile:o,KTX2File:i,BasisEncoder:c})})})}var P={COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_RGBA8_ETC2_EAC:37493,COMPRESSED_SRGB8_ETC2:37494,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37495,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37496,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37497,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGB_ETC1_WEBGL:36196,COMPRESSED_RGB_ATC_WEBGL:35986,COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL:35987,COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL:34798,COMPRESSED_RGBA_ASTC_4X4_KHR:37808,COMPRESSED_RGBA_ASTC_5X4_KHR:37809,COMPRESSED_RGBA_ASTC_5X5_KHR:37810,COMPRESSED_RGBA_ASTC_6X5_KHR:37811,COMPRESSED_RGBA_ASTC_6X6_KHR:37812,COMPRESSED_RGBA_ASTC_8X5_KHR:37813,COMPRESSED_RGBA_ASTC_8X6_KHR:37814,COMPRESSED_RGBA_ASTC_8X8_KHR:37815,COMPRESSED_RGBA_ASTC_10X5_KHR:37816,COMPRESSED_RGBA_ASTC_10X6_KHR:37817,COMPRESSED_RGBA_ASTC_10X8_KHR:37818,COMPRESSED_RGBA_ASTC_10X10_KHR:37819,COMPRESSED_RGBA_ASTC_12X10_KHR:37820,COMPRESSED_RGBA_ASTC_12X12_KHR:37821,COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR:37840,COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR:37841,COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR:37842,COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR:37843,COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR:37844,COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR:37845,COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR:37846,COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR:37847,COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR:37848,COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR:37849,COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR:37850,COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR:37851,COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR:37852,COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR:37853,COMPRESSED_RED_RGTC1_EXT:36283,COMPRESSED_SIGNED_RED_RGTC1_EXT:36284,COMPRESSED_RED_GREEN_RGTC2_EXT:36285,COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT:36286,COMPRESSED_SRGB_S3TC_DXT1_EXT:35916,COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:35917,COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:35918,COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:35919};var lo=["","WEBKIT_","MOZ_"],Er={WEBGL_compressed_texture_s3tc:"dxt",WEBGL_compressed_texture_s3tc_srgb:"dxt-srgb",WEBGL_compressed_texture_etc1:"etc1",WEBGL_compressed_texture_etc:"etc2",WEBGL_compressed_texture_pvrtc:"pvrtc",WEBGL_compressed_texture_atc:"atc",WEBGL_compressed_texture_astc:"astc",EXT_texture_compression_rgtc:"rgtc"},Re=null;function gr(r){if(!Re){r=r||ho()||void 0,Re=new Set;for(let e of lo)for(let t in Er)if(r&&r.getExtension(`${e}${t}`)){let n=Er[t];Re.add(n)}}return Re}function ho(){try{return document.createElement("canvas").getContext("webgl")}catch{return null}}var pA=new Uint8Array([0]);var xr,Mr,Tr,yr,Fr,Ir,br,Rr;(function(r){r[r.NONE=0]="NONE",r[r.BASISLZ=1]="BASISLZ",r[r.ZSTD=2]="ZSTD",r[r.ZLIB=3]="ZLIB"})(xr||(xr={})),function(r){r[r.BASICFORMAT=0]="BASICFORMAT"}(Mr||(Mr={})),function(r){r[r.UNSPECIFIED=0]="UNSPECIFIED",r[r.ETC1S=163]="ETC1S",r[r.UASTC=166]="UASTC"}(Tr||(Tr={})),function(r){r[r.UNSPECIFIED=0]="UNSPECIFIED",r[r.SRGB=1]="SRGB"}(yr||(yr={})),function(r){r[r.UNSPECIFIED=0]="UNSPECIFIED",r[r.LINEAR=1]="LINEAR",r[r.SRGB=2]="SRGB",r[r.ITU=3]="ITU",r[r.NTSC=4]="NTSC",r[r.SLOG=5]="SLOG",r[r.SLOG2=6]="SLOG2"}(Fr||(Fr={})),function(r){r[r.ALPHA_STRAIGHT=0]="ALPHA_STRAIGHT",r[r.ALPHA_PREMULTIPLIED=1]="ALPHA_PREMULTIPLIED"}(Ir||(Ir={})),function(r){r[r.RGB=0]="RGB",r[r.RRR=3]="RRR",r[r.GGG=4]="GGG",r[r.AAA=15]="AAA"}(br||(br={})),function(r){r[r.RGB=0]="RGB",r[r.RGBA=3]="RGBA",r[r.RRR=4]="RRR",r[r.RRRG=5]="RRRG"}(Rr||(Rr={}));var T=[171,75,84,88,32,50,48,187,13,10,26,10];function Dr(r){let e=new Uint8Array(r);return!(e.byteLength<T.length||e[0]!==T[0]||e[1]!==T[1]||e[2]!==T[2]||e[3]!==T[3]||e[4]!==T[4]||e[5]!==T[5]||e[6]!==T[6]||e[7]!==T[7]||e[8]!==T[8]||e[9]!==T[9]||e[10]!==T[10]||e[11]!==T[11])}var po={etc1:{basisFormat:0,compressed:!0,format:P.COMPRESSED_RGB_ETC1_WEBGL},etc2:{basisFormat:1,compressed:!0},bc1:{basisFormat:2,compressed:!0,format:P.COMPRESSED_RGB_S3TC_DXT1_EXT},bc3:{basisFormat:3,compressed:!0,format:P.COMPRESSED_RGBA_S3TC_DXT5_EXT},bc4:{basisFormat:4,compressed:!0},bc5:{basisFormat:5,compressed:!0},"bc7-m6-opaque-only":{basisFormat:6,compressed:!0},"bc7-m5":{basisFormat:7,compressed:!0},"pvrtc1-4-rgb":{basisFormat:8,compressed:!0,format:P.COMPRESSED_RGB_PVRTC_4BPPV1_IMG},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:P.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG},"astc-4x4":{basisFormat:10,compressed:!0,format:P.COMPRESSED_RGBA_ASTC_4X4_KHR},"atc-rgb":{basisFormat:11,compressed:!0},"atc-rgba-interpolated-alpha":{basisFormat:12,compressed:!0},rgba32:{basisFormat:13,compressed:!1},rgb565:{basisFormat:14,compressed:!1},bgr565:{basisFormat:15,compressed:!1},rgba4444:{basisFormat:16,compressed:!1}};async function lt(r,e){if(e.basis.containerFormat==="auto"){if(Dr(r)){let n=await Bt(e);return _r(n.KTX2File,r,e)}let{BasisFile:t}=await ut(e);return mt(t,r,e)}switch(e.basis.module){case"encoder":let t=await Bt(e);switch(e.basis.containerFormat){case"ktx2":return _r(t.KTX2File,r,e);case"basis":default:return mt(t.BasisFile,r,e)}case"transcoder":default:let{BasisFile:n}=await ut(e);return mt(n,r,e)}}function mt(r,e,t){let n=new r(new Uint8Array(e));try{if(!n.startTranscoding())throw new Error("Failed to start basis transcoding");let s=n.getNumImages(),o=[];for(let i=0;i<s;i++){let a=n.getNumLevels(i),c=[];for(let A=0;A<a;A++)c.push(Co(n,i,A,t));o.push(c)}return o}finally{n.close(),n.delete()}}function Co(r,e,t,n){let s=r.getImageWidth(e,t),o=r.getImageHeight(e,t),i=r.getHasAlpha(),{compressed:a,format:c,basisFormat:A}=Gr(n,i),f=r.getImageTranscodedSizeInBytes(e,t,A),u=new Uint8Array(f);if(!r.transcodeImage(u,e,t,A,0,0))throw new Error("failed to start Basis transcoding");return{width:s,height:o,data:u,compressed:a,format:c,hasAlpha:i}}function _r(r,e,t){let n=new r(new Uint8Array(e));try{if(!n.startTranscoding())throw new Error("failed to start KTX2 transcoding");let s=n.getLevels(),o=[];for(let i=0;i<s;i++){o.push(Eo(n,i,t));break}return[o]}finally{n.close(),n.delete()}}function Eo(r,e,t){let{alphaFlag:n,height:s,width:o}=r.getImageLevelInfo(e,0,0),{compressed:i,format:a,basisFormat:c}=Gr(t,n),A=r.getImageTranscodedSizeInBytes(e,0,0,c),f=new Uint8Array(A);if(!r.transcodeImage(f,e,0,0,c,0,-1,-1))throw new Error("Failed to transcode KTX2 image");return{width:o,height:s,data:f,compressed:i,levelSize:A,hasAlpha:n,format:a}}function Gr(r,e){let t=r&&r.basis&&r.basis.format;return t==="auto"&&(t=De()),typeof t=="object"&&(t=e?t.alpha:t.noAlpha),t=t.toLowerCase(),po[t]}function De(){let r=gr();return r.has("astc")?"astc-4x4":r.has("dxt")?{alpha:"bc3",noAlpha:"bc1"}:r.has("pvrtc")?{alpha:"pvrtc1-4-rgba",noAlpha:"pvrtc1-4-rgb"}:r.has("etc1")?"etc1":r.has("etc2")?"etc2":"rgb565"}var Sr={name:"Basis",id:"basis",module:"textures",version:Cr,worker:!0,extensions:["basis","ktx2"],mimeTypes:["application/octet-stream","image/ktx2"],tests:["sB"],binary:!0,options:{basis:{format:"auto",libraryPath:"libs/",containerFormat:"auto",module:"transcoder"}}},dt={...Sr,parse:lt};var W=!0,Or=1735152710,Ct=12,_e=8,go=1313821514,xo=5130562,Mo=0,To=0,yo=1;function Fo(r,e=0){return`${String.fromCharCode(r.getUint8(e+0))}${String.fromCharCode(r.getUint8(e+1))}${String.fromCharCode(r.getUint8(e+2))}${String.fromCharCode(r.getUint8(e+3))}`}function Ur(r,e=0,t={}){let n=new DataView(r),{magic:s=Or}=t,o=n.getUint32(e,!1);return o===s||o===Or}function Ge(r,e,t=0,n={}){let s=new DataView(e),o=Fo(s,t+0),i=s.getUint32(t+4,W),a=s.getUint32(t+8,W);switch(Object.assign(r,{header:{byteOffset:t,byteLength:a,hasBinChunk:!1},type:o,version:i,json:{},binChunks:[]}),t+=Ct,r.version){case 1:return Io(r,s,t);case 2:return bo(r,s,t,n={});default:throw new Error(`Invalid GLB version ${r.version}. Only supports version 1 and 2.`)}}function Io(r,e,t){F(r.header.byteLength>Ct+_e);let n=e.getUint32(t+0,W),s=e.getUint32(t+4,W);return t+=_e,F(s===Mo),ht(r,e,t,n),t+=n,t+=pt(r,e,t,r.header.byteLength),t}function bo(r,e,t,n){return F(r.header.byteLength>Ct+_e),Ro(r,e,t,n),t+r.header.byteLength}function Ro(r,e,t,n){for(;t+8<=r.header.byteLength;){let s=e.getUint32(t+0,W),o=e.getUint32(t+4,W);switch(t+=_e,o){case go:ht(r,e,t,s);break;case xo:pt(r,e,t,s);break;case To:n.strict||ht(r,e,t,s);break;case yo:n.strict||pt(r,e,t,s);break;default:break}t+=G(s,4)}return t}function ht(r,e,t,n){let s=new Uint8Array(e.buffer,t,n),i=new TextDecoder("utf8").decode(s);return r.json=JSON.parse(i),G(n,4)}function pt(r,e,t,n){return r.header.hasBinChunk=!0,r.binChunks.push({byteOffset:t,byteLength:n,arrayBuffer:e.buffer}),G(n,4)}function Et(r,e){if(r.startsWith("data:")||r.startsWith("http:")||r.startsWith("https:"))return r;let n=e.baseUri||e.uri;if(!n)throw new Error(`'baseUri' must be provided to resolve relative url ${r}`);return n.substr(0,n.lastIndexOf("/")+1)+r}var xt={};y(xt,{decode:()=>No,name:()=>Po});var Do="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",_o="B9h9z9tFBBBF8dL9gBB9gLaaaaaFa9gEaaaB9gGaaB9gFaFaEQSBBFBFFGEGEGIILF9wFFFLEFBFKNFaFCx/aFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBG8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBIy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBKi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBNn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBcI9z9iqlBMc/j9JSIBTEM9+FLa8jUUUUBCTlRBCBRFEXCBRGCBREEXABCNJAGJAECUaAFAGrCFZHIy86BBAEAIJREAGCFJHGCN9HQBMAFCx+YUUBJAE86BBAFCEWCxkUUBJAB8pEN83EBAFCFJHFCUG9HQBMMkRIbaG97FaK978jUUUUBCU/KBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAG/8cBBCUoBAG9uC/wgBZHKCUGAKCUG9JyRNAECFJRKCBRVGXEXAVAF9PQFANAFAVlAVANJAF9JyRcGXGXAG9FQBAcCbJHIC9wZHMCE9sRSAMCFWRQAICIrCEJCGrRfCBRbEXAKRTCBRtGXEXGXAOATlAf9PQBCBRKSLMALCU/CBJAtAM9sJRmATAfJRKCBREGXAMCoB9JQBAOAKlC/gB9JQBCBRIEXAmAIJREGXGXGXGXGXATAICKrJ2BBHYCEZfIBFGEBMAECBDtDMIBSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAnDeBJAeCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAnDeBJAeCx+YUUBJ2BBJRKSFMAEAKDBBBDMIBAKCTJRKMGXGXGXGXGXAYCGrCEZfIBFGEBMAECBDtDMITSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCIJAnDeBJAeCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCNJAnDeBJAeCx+YUUBJ2BBJRKSFMAEAKDBBBDMITAKCTJRKMGXGXGXGXGXAYCIrCEZfIBFGEBMAECBDtDMIASEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCIJAnDeBJAeCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCNJAnDeBJAeCx+YUUBJ2BBJRKSFMAEAKDBBBDMIAAKCTJRKMGXGXGXGXGXAYCKrfIBFGEBMAECBDtDMI8wSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCIJAnDeBJAYCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCNJAnDeBJAYCx+YUUBJ2BBJRKSFMAEAKDBBBDMI8wAKCTJRKMAICoBJREAICUFJAM9LQFAERIAOAKlC/fB9LQBMMGXAEAM9PQBAECErRIEXGXAOAKlCi9PQBCBRKSOMAmAEJRYGXGXGXGXGXATAECKrJ2BBAICKZrCEZfIBFGEBMAYCBDtDMIBSEMAYAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAnDeBJAeCx+YUUBJ2BBJRKSGMAYAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAnDeBJAeCx+YUUBJ2BBJRKSFMAYAKDBBBDMIBAKCTJRKMAICGJRIAECTJHEAM9JQBMMGXAK9FQBAKRTAtCFJHtCI6QGSFMMCBRKSEMGXAM9FQBALCUGJAbJREALAbJDBGBRnCBRYEXAEALCU/CBJAYJHIDBIBHdCFD9tAdCFDbHPD9OD9hD9RHdAIAMJDBIBHiCFD9tAiAPD9OD9hD9RHiDQBTFtGmEYIPLdKeOnH8ZAIAQJDBIBHpCFD9tApAPD9OD9hD9RHpAIASJDBIBHyCFD9tAyAPD9OD9hD9RHyDQBTFtGmEYIPLdKeOnH8cDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGEAnD9uHnDyBjGBAEAGJHIAnAPAPDQILKOILKOILKOILKOD9uHnDyBjGBAIAGJHIAnAPAPDQNVcMNVcMNVcMNVcMD9uHnDyBjGBAIAGJHIAnAPAPDQSQfbSQfbSQfbSQfbD9uHnDyBjGBAIAGJHIAnA8ZA8cDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHnDyBjGBAIAGJHIAnAPAPDQILKOILKOILKOILKOD9uHnDyBjGBAIAGJHIAnAPAPDQNVcMNVcMNVcMNVcMD9uHnDyBjGBAIAGJHIAnAPAPDQSQfbSQfbSQfbSQfbD9uHnDyBjGBAIAGJHIAnAdAiDQNiV8ZcpMyS8cQ8df8eb8fHdApAyDQNiV8ZcpMyS8cQ8df8eb8fHiDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGED9uHnDyBjGBAIAGJHIAnAPAPDQILKOILKOILKOILKOD9uHnDyBjGBAIAGJHIAnAPAPDQNVcMNVcMNVcMNVcMD9uHnDyBjGBAIAGJHIAnAPAPDQSQfbSQfbSQfbSQfbD9uHnDyBjGBAIAGJHIAnAdAiDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHnDyBjGBAIAGJHIAnAPAPDQILKOILKOILKOILKOD9uHnDyBjGBAIAGJHIAnAPAPDQNVcMNVcMNVcMNVcMD9uHnDyBjGBAIAGJHIAnAPAPDQSQfbSQfbSQfbSQfbD9uHnDyBjGBAIAGJREAYCTJHYAM9JQBMMAbCIJHbAG9JQBMMABAVAG9sJALCUGJAcAG9s/8cBBALALCUGJAcCaJAG9sJAG/8cBBMAcCBAKyAVJRVAKQBMC9+RKSFMCBC99AOAKlAGCAAGCA9Ly6yRKMALCU/KBJ8kUUUUBAKMNBT+BUUUBM+KmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUF/8MBALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM/xLGEaK978jUUUUBCAlHE8kUUUUBGXGXAGCI9HQBGXAFC98ZHI9FQBABRGCBRLEXAGAGDBBBHKCiD+rFCiD+sFD/6FHOAKCND+rFCiD+sFD/6FAOD/gFAKCTD+rFCiD+sFD/6FHND/gFD/kFD/lFHVCBDtD+2FHcAOCUUUU94DtHMD9OD9RD/kFHO9DBB/+hDYAOAOD/mFAVAVD/mFANAcANAMD9OD9RD/kFHOAOD/mFD/kFD/kFD/jFD/nFHND/mF9DBBX9LDYHcD/kFCgFDtD9OAKCUUU94DtD9OD9QAOAND/mFAcD/kFCND+rFCU/+EDtD9OD9QAVAND/mFAcD/kFCTD+rFCUU/8ODtD9OD9QDMBBAGCTJRGALCIJHLAI9JQBMMAIAF9PQFAEAFCEZHLCGWHGqCBCTAGl/8MBAEABAICGWJHIAG/8cBBGXAL9FQBAEAEDBIBHKCiD+rFCiD+sFD/6FHOAKCND+rFCiD+sFD/6FAOD/gFAKCTD+rFCiD+sFD/6FHND/gFD/kFD/lFHVCBDtD+2FHcAOCUUUU94DtHMD9OD9RD/kFHO9DBB/+hDYAOAOD/mFAVAVD/mFANAcANAMD9OD9RD/kFHOAOD/mFD/kFD/kFD/jFD/nFHND/mF9DBBX9LDYHcD/kFCgFDtD9OAKCUUU94DtD9OD9QAOAND/mFAcD/kFCND+rFCU/+EDtD9OD9QAVAND/mFAcD/kFCTD+rFCUU/8ODtD9OD9QDMIBMAIAEAG/8cBBSFMABAFC98ZHGT+HUUUBAGAF9PQBAEAFCEZHICEWHLJCBCAALl/8MBAEABAGCEWJHGAL/8cBBAEAIT+HUUUBAGAEAL/8cBBMAECAJ8kUUUUBM+yEGGaO97GXAF9FQBCBRGEXABCTJHEAEDBBBHICBDtHLCUU98D8cFCUU98D8cEHKD9OABDBBBHOAIDQILKOSQfbPden8c8d8e8fCggFDtD9OD/6FAOAIDQBFGENVcMTtmYi8ZpyHICTD+sFD/6FHND/gFAICTD+rFCTD+sFD/6FHVD/gFD/kFD/lFHI9DB/+g6DYAVAIALD+2FHLAVCUUUU94DtHcD9OD9RD/kFHVAVD/mFAIAID/mFANALANAcD9OD9RD/kFHIAID/mFD/kFD/kFD/jFD/nFHND/mF9DBBX9LDYHLD/kFCTD+rFAVAND/mFALD/kFCggEDtD9OD9QHVAIAND/mFALD/kFCaDbCBDnGCBDnECBDnKCBDnOCBDncCBDnMCBDnfCBDnbD9OHIDQNVi8ZcMpySQ8c8dfb8e8fD9QDMBBABAOAKD9OAVAIDQBFTtGEmYILPdKOenD9QDMBBABCAJRBAGCIJHGAF9JQBMMM94FEa8jUUUUBCAlHE8kUUUUBABAFC98ZHIT+JUUUBGXAIAF9PQBAEAFCEZHLCEWHFJCBCAAFl/8MBAEABAICEWJHBAF/8cBBAEALT+JUUUBABAEAF/8cBBMAECAJ8kUUUUBM/hEIGaF97FaL978jUUUUBCTlRGGXAF9FQBCBREEXAGABDBBBHIABCTJHLDBBBHKDQILKOSQfbPden8c8d8e8fHOCTD+sFHNCID+rFDMIBAB9DBBU8/DY9D/zI818/DYANCEDtD9QD/6FD/nFHNAIAKDQBFGENVcMTtmYi8ZpyHICTD+rFCTD+sFD/6FD/mFHKAKD/mFANAICTD+sFD/6FD/mFHVAVD/mFANAOCTD+rFCTD+sFD/6FD/mFHOAOD/mFD/kFD/kFD/lFCBDtD+4FD/jF9DB/+g6DYHND/mF9DBBX9LDYHID/kFCggEDtHcD9OAVAND/mFAID/kFCTD+rFD9QHVAOAND/mFAID/kFCTD+rFAKAND/mFAID/kFAcD9OD9QHNDQBFTtGEmYILPdKOenHID8dBAGDBIBDyB+t+J83EBABCNJAID8dFAGDBIBDyF+t+J83EBALAVANDQNVi8ZcMpySQ8c8dfb8e8fHND8dBAGDBIBDyG+t+J83EBABCiJAND8dFAGDBIBDyE+t+J83EBABCAJRBAECIJHEAF9JQBMMM/3FGEaF978jUUUUBCoBlREGXAGCGrAF9sHIC98ZHL9FQBCBRGABRFEXAFAFDBBBHKCND+rFCND+sFD/6FAKCiD+sFCnD+rFCUUU/8EDtD+uFD/mFDMBBAFCTJRFAGCIJHGAL9JQBMMGXALAI9PQBAEAICEZHGCGWHFqCBCoBAFl/8MBAEABALCGWJHLAF/8cBBGXAG9FQBAEAEDBIBHKCND+rFCND+sFD/6FAKCiD+sFCnD+rFCUUU/8EDtD+uFD/mFDMIBMALAEAF/8cBBMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEMMMFBCUNMIT9tBB",Go=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]),So=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]),Oo={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},Uo={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};async function Lr(r,e,t,n,s,o="NONE"){let i=await Lo();Jo(i,i.exports[Uo[s]],r,e,t,n,i.exports[Oo[o||"NONE"]])}var gt;async function Lo(){return gt||(gt=wo()),gt}async function wo(){let r=Do;WebAssembly.validate(Go)&&(r=_o,console.log("Warning: meshopt_decoder is using experimental SIMD support"));let e=await WebAssembly.instantiate(Ho(r),{});return await e.instance.exports.__wasm_call_ctors(),e.instance}function Ho(r){let e=new Uint8Array(r.length);for(let n=0;n<r.length;++n){let s=r.charCodeAt(n);e[n]=s>96?s-71:s>64?s-65:s>47?s+4:s>46?63:62}let t=0;for(let n=0;n<r.length;++n)e[t++]=e[n]<60?So[e[n]]:(e[n]-60)*64+e[++n];return e.buffer.slice(0,t)}function Jo(r,e,t,n,s,o,i){let a=r.exports.sbrk,c=n+3&-4,A=a(c*s),f=a(o.length),u=new Uint8Array(r.exports.memory.buffer);u.set(o,f);let B=e(A,n,s,f,o.length);if(B===0&&i&&i(A,c,s),t.set(u.subarray(A,A+n*s)),a(A-a(0)),B!==0)throw new Error(`Malformed buffer data: ${B}`)}var Se="EXT_meshopt_compression",Po=Se;async function No(r,e){let t=new l(r);if(!e?.gltf?.decompressMeshes||!e.gltf?.loadBuffers)return;let n=[];for(let s of r.json.bufferViews||[])n.push(Ko(t,s));await Promise.all(n),t.removeExtension(Se)}async function Ko(r,e){let t=r.getObjectExtension(e,Se);if(t){let{byteOffset:n=0,byteLength:s=0,byteStride:o,count:i,mode:a,filter:c="NONE",buffer:A}=t,f=r.gltf.buffers[A],u=new Uint8Array(f.arrayBuffer,f.byteOffset+n,s),B=new Uint8Array(r.gltf.buffers[e.buffer].arrayBuffer,e.byteOffset,e.byteLength);await Lr(B,i,o,u,a,c),r.removeObjectExtension(e,Se)}}var Mt={};y(Mt,{name:()=>vo,preprocess:()=>Xo});var Z="EXT_texture_webp",vo=Z;function Xo(r,e){let t=new l(r);if(!et("image/webp")){if(t.getRequiredExtensions().includes(Z))throw new Error(`gltf: Required extension ${Z} not supported by browser`);return}let{json:n}=t;for(let s of n.textures||[]){let o=t.getObjectExtension(s,Z);o&&(s.source=o.source),t.removeObjectExtension(s,Z)}t.removeExtension(Z)}var Tt={};y(Tt,{name:()=>jo,preprocess:()=>Qo});var Oe="KHR_texture_basisu",jo=Oe;function Qo(r,e){let t=new l(r),{json:n}=t;for(let s of n.textures||[]){let o=t.getObjectExtension(s,Oe);o&&(s.source=o.source,t.removeObjectExtension(s,Oe))}t.removeExtension(Oe)}var Dt={};y(Dt,{decode:()=>ai,encode:()=>ci,name:()=>oi,preprocess:()=>ii});var wr="4.2.0-alpha.5";var Hr={name:"Draco",id:"draco",module:"draco",version:wr,worker:!0,extensions:["drc"],mimeTypes:["application/octet-stream"],binary:!0,tests:["DRACO"],options:{draco:{decoderType:typeof WebAssembly=="object"?"wasm":"js",libraryPath:"libs/",extraAttributes:{},attributeNameEntry:void 0}}};function Jr(r){switch(r.constructor){case Int8Array:return"int8";case Uint8Array:case Uint8ClampedArray:return"uint8";case Int16Array:return"int16";case Uint16Array:return"uint16";case Int32Array:return"int32";case Uint32Array:return"uint32";case Float32Array:return"float32";case Float64Array:return"float64";default:return"null"}}function yt(r){let e=1/0,t=1/0,n=1/0,s=-1/0,o=-1/0,i=-1/0,a=r.POSITION?r.POSITION.value:[],c=a&&a.length;for(let A=0;A<c;A+=3){let f=a[A],u=a[A+1],B=a[A+2];e=f<e?f:e,t=u<t?u:t,n=B<n?B:n,s=f>s?f:s,o=u>o?u:o,i=B>i?B:i}return[[e,t,n],[s,o,i]]}function Ft(r,e,t){let n=Jr(e.value),s=t||Pr(e);return{name:r,type:{type:"fixed-size-list",listSize:e.size,children:[{name:"value",type:n}]},nullable:!1,metadata:s}}function Pr(r){let e={};return"byteOffset"in r&&(e.byteOffset=r.byteOffset.toString(10)),"byteStride"in r&&(e.byteStride=r.byteStride.toString(10)),"normalized"in r&&(e.normalized=r.normalized.toString()),e}function Kr(r,e,t){let n=vr(e.metadata),s=[],o=ko(e.attributes);for(let i in r){let a=r[i],c=Nr(i,a,o[i]);s.push(c)}if(t){let i=Nr("indices",t);s.push(i)}return{fields:s,metadata:n}}function ko(r){let e={};for(let t in r){let n=r[t];e[n.name||"undefined"]=n}return e}function Nr(r,e,t){let n=t?vr(t.metadata):void 0;return Ft(r,e,n)}function vr(r){Object.entries(r);let e={};for(let t in r)e[`${t}.string`]=JSON.stringify(r[t]);return e}var Xr={POSITION:"POSITION",NORMAL:"NORMAL",COLOR:"COLOR_0",TEX_COORD:"TEXCOORD_0"},Vo={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array},Yo=4,ae=class{draco;decoder;metadataQuerier;constructor(e){this.draco=e,this.decoder=new this.draco.Decoder,this.metadataQuerier=new this.draco.MetadataQuerier}destroy(){this.draco.destroy(this.decoder),this.draco.destroy(this.metadataQuerier)}parseSync(e,t={}){let n=new this.draco.DecoderBuffer;n.Init(new Int8Array(e),e.byteLength),this._disableAttributeTransforms(t);let s=this.decoder.GetEncodedGeometryType(n),o=s===this.draco.TRIANGULAR_MESH?new this.draco.Mesh:new this.draco.PointCloud;try{let i;switch(s){case this.draco.TRIANGULAR_MESH:i=this.decoder.DecodeBufferToMesh(n,o);break;case this.draco.POINT_CLOUD:i=this.decoder.DecodeBufferToPointCloud(n,o);break;default:throw new Error("DRACO: Unknown geometry type.")}if(!i.ok()||!o.ptr){let B=`DRACO decompression failed: ${i.error_msg()}`;throw new Error(B)}let a=this._getDracoLoaderData(o,s,t),c=this._getMeshData(o,a,t),A=yt(c.attributes),f=Kr(c.attributes,a,c.indices);return{loader:"draco",loaderData:a,header:{vertexCount:o.num_points(),boundingBox:A},...c,schema:f}}finally{this.draco.destroy(n),o&&this.draco.destroy(o)}}_getDracoLoaderData(e,t,n){let s=this._getTopLevelMetadata(e),o=this._getDracoAttributes(e,n);return{geometry_type:t,num_attributes:e.num_attributes(),num_points:e.num_points(),num_faces:e instanceof this.draco.Mesh?e.num_faces():0,metadata:s,attributes:o}}_getDracoAttributes(e,t){let n={};for(let s=0;s<e.num_attributes();s++){let o=this.decoder.GetAttribute(e,s),i=this._getAttributeMetadata(e,s);n[o.unique_id()]={unique_id:o.unique_id(),attribute_type:o.attribute_type(),data_type:o.data_type(),num_components:o.num_components(),byte_offset:o.byte_offset(),byte_stride:o.byte_stride(),normalized:o.normalized(),attribute_index:s,metadata:i};let a=this._getQuantizationTransform(o,t);a&&(n[o.unique_id()].quantization_transform=a);let c=this._getOctahedronTransform(o,t);c&&(n[o.unique_id()].octahedron_transform=c)}return n}_getMeshData(e,t,n){let s=this._getMeshAttributes(t,e,n);if(!s.POSITION)throw new Error("DRACO: No position attribute found.");if(e instanceof this.draco.Mesh)switch(n.topology){case"triangle-strip":return{topology:"triangle-strip",mode:4,attributes:s,indices:{value:this._getTriangleStripIndices(e),size:1}};case"triangle-list":default:return{topology:"triangle-list",mode:5,attributes:s,indices:{value:this._getTriangleListIndices(e),size:1}}}return{topology:"point-list",mode:0,attributes:s}}_getMeshAttributes(e,t,n){let s={};for(let o of Object.values(e.attributes)){let i=this._deduceAttributeName(o,n);o.name=i;let{value:a,size:c}=this._getAttributeValues(t,o);s[i]={value:a,size:c,byteOffset:o.byte_offset,byteStride:o.byte_stride,normalized:o.normalized}}return s}_getTriangleListIndices(e){let n=e.num_faces()*3,s=n*Yo,o=this.draco._malloc(s);try{return this.decoder.GetTrianglesUInt32Array(e,s,o),new Uint32Array(this.draco.HEAPF32.buffer,o,n).slice()}finally{this.draco._free(o)}}_getTriangleStripIndices(e){let t=new this.draco.DracoInt32Array;try{return this.decoder.GetTriangleStripsFromMesh(e,t),qo(t)}finally{this.draco.destroy(t)}}_getAttributeValues(e,t){let n=Vo[t.data_type],s=t.num_components,i=e.num_points()*s,a=i*n.BYTES_PER_ELEMENT,c=Wo(this.draco,n),A,f=this.draco._malloc(a);try{let u=this.decoder.GetAttribute(e,t.attribute_index);this.decoder.GetAttributeDataArrayForAllPoints(e,u,c,a,f),A=new n(this.draco.HEAPF32.buffer,f,i).slice()}finally{this.draco._free(f)}return{value:A,size:s}}_deduceAttributeName(e,t){let n=e.unique_id;for(let[i,a]of Object.entries(t.extraAttributes||{}))if(a===n)return i;let s=e.attribute_type;for(let i in Xr)if(this.draco[i]===s)return Xr[i];let o=t.attributeNameEntry||"name";return e.metadata[o]?e.metadata[o].string:`CUSTOM_ATTRIBUTE_${n}`}_getTopLevelMetadata(e){let t=this.decoder.GetMetadata(e);return this._getDracoMetadata(t)}_getAttributeMetadata(e,t){let n=this.decoder.GetAttributeMetadata(e,t);return this._getDracoMetadata(n)}_getDracoMetadata(e){if(!e||!e.ptr)return{};let t={},n=this.metadataQuerier.NumEntries(e);for(let s=0;s<n;s++){let o=this.metadataQuerier.GetEntryName(e,s);t[o]=this._getDracoMetadataField(e,o)}return t}_getDracoMetadataField(e,t){let n=new this.draco.DracoInt32Array;try{this.metadataQuerier.GetIntEntryArray(e,t,n);let s=Zo(n);return{int:this.metadataQuerier.GetIntEntry(e,t),string:this.metadataQuerier.GetStringEntry(e,t),double:this.metadataQuerier.GetDoubleEntry(e,t),intArray:s}}finally{this.draco.destroy(n)}}_disableAttributeTransforms(e){let{quantizedAttributes:t=[],octahedronAttributes:n=[]}=e,s=[...t,...n];for(let o of s)this.decoder.SkipAttributeTransform(this.draco[o])}_getQuantizationTransform(e,t){let{quantizedAttributes:n=[]}=t,s=e.attribute_type();if(n.map(i=>this.decoder[i]).includes(s)){let i=new this.draco.AttributeQuantizationTransform;try{if(i.InitFromAttribute(e))return{quantization_bits:i.quantization_bits(),range:i.range(),min_values:new Float32Array([1,2,3]).map(a=>i.min_value(a))}}finally{this.draco.destroy(i)}}return null}_getOctahedronTransform(e,t){let{octahedronAttributes:n=[]}=t,s=e.attribute_type();if(n.map(i=>this.decoder[i]).includes(s)){let i=new this.draco.AttributeQuantizationTransform;try{if(i.InitFromAttribute(e))return{quantization_bits:i.quantization_bits()}}finally{this.draco.destroy(i)}}return null}};function Wo(r,e){switch(e){case Float32Array:return r.DT_FLOAT32;case Int8Array:return r.DT_INT8;case Int16Array:return r.DT_INT16;case Int32Array:return r.DT_INT32;case Uint8Array:return r.DT_UINT8;case Uint16Array:return r.DT_UINT16;case Uint32Array:return r.DT_UINT32;default:return r.DT_INVALID}}function Zo(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}function qo(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}var zo="1.5.6",$o="1.4.1",It=`https://www.gstatic.com/draco/versioned/decoders/${zo}`,M={DECODER:"draco_wasm_wrapper.js",DECODER_WASM:"draco_decoder.wasm",FALLBACK_DECODER:"draco_decoder.js",ENCODER:"draco_encoder.js"},bt={[M.DECODER]:`${It}/${M.DECODER}`,[M.DECODER_WASM]:`${It}/${M.DECODER_WASM}`,[M.FALLBACK_DECODER]:`${It}/${M.FALLBACK_DECODER}`,[M.ENCODER]:`https://raw.githubusercontent.com/google/draco/${$o}/javascript/${M.ENCODER}`},ce;async function jr(r){let e=r.modules||{};return e.draco3d?ce=ce||e.draco3d.createDecoderModule({}).then(t=>({draco:t})):ce=ce||ei(r),await ce}async function ei(r){let e,t;switch(r.draco&&r.draco.decoderType){case"js":e=await _(bt[M.FALLBACK_DECODER],"draco",r,M.FALLBACK_DECODER);break;case"wasm":default:[e,t]=await Promise.all([await _(bt[M.DECODER],"draco",r,M.DECODER),await _(bt[M.DECODER_WASM],"draco",r,M.DECODER_WASM)])}return e=e||globalThis.DracoDecoderModule,await ti(e,t)}function ti(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r({...t,onModuleLoaded:s=>n({draco:s})})})}var Qr={...Hr,parse:ri};async function ri(r,e){let{draco:t}=await jr(e),n=new ae(t);try{return n.parseSync(r,e?.draco)}finally{n.destroy()}}function kr(r){let e={};for(let t in r){let n=r[t];if(t!=="indices"){let s=Rt(n);e[t]=s}}return e}function Rt(r){let{buffer:e,size:t,count:n}=ni(r);return{value:e,size:t,byteOffset:0,count:n,type:Me(t),componentType:j(e)}}function ni(r){let e=r,t=1,n=0;return r&&r.value&&(e=r.value,t=r.size||1),e&&(ArrayBuffer.isView(e)||(e=si(e,Float32Array)),n=e.length/t),{buffer:e,size:t,count:n}}function si(r,e,t=!1){return r?Array.isArray(r)?new e(r):t&&!(r instanceof e)?new e(r):r:null}var H="KHR_draco_mesh_compression",oi=H;function ii(r,e,t){let n=new l(r);for(let s of Vr(n))n.getObjectExtension(s,H)}async function ai(r,e,t){if(!e?.gltf?.decompressMeshes)return;let n=new l(r),s=[];for(let o of Vr(n))n.getObjectExtension(o,H)&&s.push(Ai(n,o,e,t));await Promise.all(s),n.removeExtension(H)}function ci(r,e={}){let t=new l(r);for(let n of t.json.meshes||[])fi(n,e),t.addRequiredExtension(H)}async function Ai(r,e,t,n){let s=r.getObjectExtension(e,H);if(!s)return;let o=r.getTypedArrayForBufferView(s.bufferView),i=re(o.buffer,o.byteOffset),a={...t};delete a["3d-tiles"];let c=await ee(i,Qr,a,n),A=kr(c.attributes);for(let[f,u]of Object.entries(A))if(f in e.attributes){let B=e.attributes[f],m=r.getAccessor(B);m?.min&&m?.max&&(u.min=m.min,u.max=m.max)}e.attributes=A,c.indices&&(e.indices=Rt(c.indices)),r.removeObjectExtension(e,H),ui(e)}function fi(r,e,t=4,n,s){if(!n.DracoWriter)throw new Error("options.gltf.DracoWriter not provided");let o=n.DracoWriter.encodeSync({attributes:r}),i=s?.parseSync?.({attributes:r}),a=n._addFauxAttributes(i.attributes),c=n.addBufferView(o);return{primitives:[{attributes:a,mode:t,extensions:{[H]:{bufferView:c,attributes:a}}}]}}function ui(r){if(!r.attributes&&Object.keys(r.attributes).length>0)throw new Error("glTF: Empty primitive detected: Draco decompression failure?")}function*Vr(r){for(let e of r.json.meshes||[])for(let t of e.primitives)yield t}var wt={};y(wt,{decode:()=>Ri,name:()=>Fi});var Cf=1/Math.PI*180,Ef=1/180*Math.PI,Bi={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...Bi}};var C=globalThis.mathgl.config;function Yr(r,{precision:e=C.precision}={}){return r=mi(r),"".concat(parseFloat(r.toPrecision(e)))}function q(r){return Array.isArray(r)||ArrayBuffer.isView(r)&&!(r instanceof DataView)}function _t(r,e,t){let n=C.EPSILON;t&&(C.EPSILON=t);try{if(r===e)return!0;if(q(r)&&q(e)){if(r.length!==e.length)return!1;for(let s=0;s<r.length;++s)if(!_t(r[s],e[s]))return!1;return!0}return r&&r.equals?r.equals(e):e&&e.equals?e.equals(r):typeof r=="number"&&typeof e=="number"?Math.abs(r-e)<=C.EPSILON*Math.max(1,Math.abs(r),Math.abs(e)):!1}finally{C.EPSILON=n}}function mi(r){return Math.round(r/C.EPSILON)*C.EPSILON}function li(r){function e(){var t=Reflect.construct(r,Array.from(arguments));return Object.setPrototypeOf(t,Object.getPrototypeOf(this)),t}return e.prototype=Object.create(r.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),Object.setPrototypeOf?Object.setPrototypeOf(e,r):e.__proto__=r,e}var z=class extends li(Array){clone(){return new this.constructor().copy(this)}fromArray(e,t=0){for(let n=0;n<this.ELEMENTS;++n)this[n]=e[n+t];return this.check()}toArray(e=[],t=0){for(let n=0;n<this.ELEMENTS;++n)e[t+n]=this[n];return e}toObject(e){return e}from(e){return Array.isArray(e)?this.copy(e):this.fromObject(e)}to(e){return e===this?this:q(e)?this.toArray(e):this.toObject(e)}toTarget(e){return e?this.to(e):this}toFloat32Array(){return new Float32Array(this)}toString(){return this.formatString(C)}formatString(e){let t="";for(let n=0;n<this.ELEMENTS;++n)t+=(n>0?", ":"")+Yr(this[n],e);return"".concat(e.printTypes?this.constructor.name:"","[").concat(t,"]")}equals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(!_t(this[t],e[t]))return!1;return!0}exactEquals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(this[t]!==e[t])return!1;return!0}negate(){for(let e=0;e<this.ELEMENTS;++e)this[e]=-this[e];return this.check()}lerp(e,t,n){if(n===void 0)return this.lerp(this,e,t);for(let s=0;s<this.ELEMENTS;++s){let o=e[s],i=typeof t=="number"?t:t[s];this[s]=o+n*(i-o)}return this.check()}min(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=Math.min(e[t],this[t]);return this.check()}max(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=Math.max(e[t],this[t]);return this.check()}clamp(e,t){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e[n]),t[n]);return this.check()}add(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]+=t[n];return this.check()}subtract(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]-=t[n];return this.check()}scale(e){if(typeof e=="number")for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;else for(let t=0;t<this.ELEMENTS&&t<e.length;++t)this[t]*=e[t];return this.check()}multiplyByScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}check(){if(C.debug&&!this.validate())throw new Error("math.gl: ".concat(this.constructor.name," some fields set to invalid numbers'"));return this}validate(){let e=this.length===this.ELEMENTS;for(let t=0;t<this.ELEMENTS;++t)e=e&&Number.isFinite(this[t]);return e}sub(e){return this.subtract(e)}setScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=e;return this.check()}addScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]+=e;return this.check()}subScalar(e){return this.addScalar(-e)}multiplyScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}divideScalar(e){return this.multiplyByScalar(1/e)}clampScalar(e,t){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e),t);return this.check()}get elements(){return this}};function di(r,e){if(r.length!==e)return!1;for(let t=0;t<r.length;++t)if(!Number.isFinite(r[t]))return!1;return!0}function E(r){if(!Number.isFinite(r))throw new Error("Invalid number ".concat(JSON.stringify(r)));return r}function Wr(r,e,t=""){if(C.debug&&!di(r,e))throw new Error("math.gl: ".concat(t," some fields set to invalid numbers'"));return r}function Gt(r,e){if(!r)throw new Error("math.gl assertion ".concat(e))}var Ue=class extends z{get x(){return this[0]}set x(e){this[0]=E(e)}get y(){return this[1]}set y(e){this[1]=E(e)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let e=0;for(let t=0;t<this.ELEMENTS;++t)e+=this[t]*this[t];return e}magnitudeSquared(){return this.lengthSquared()}distance(e){return Math.sqrt(this.distanceSquared(e))}distanceSquared(e){let t=0;for(let n=0;n<this.ELEMENTS;++n){let s=this[n]-e[n];t+=s*s}return E(t)}dot(e){let t=0;for(let n=0;n<this.ELEMENTS;++n)t+=this[n]*e[n];return E(t)}normalize(){let e=this.magnitude();if(e!==0)for(let t=0;t<this.ELEMENTS;++t)this[t]/=e;return this.check()}multiply(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]*=t[n];return this.check()}divide(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]/=t[n];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(e){return this.distance(e)}distanceToSquared(e){return this.distanceSquared(e)}getComponent(e){return Gt(e>=0&&e<this.ELEMENTS,"index is out of range"),E(this[e])}setComponent(e,t){return Gt(e>=0&&e<this.ELEMENTS,"index is out of range"),this[e]=t,this.check()}addVectors(e,t){return this.copy(e).add(t)}subVectors(e,t){return this.copy(e).subtract(t)}multiplyVectors(e,t){return this.copy(e).multiply(t)}addScaledVector(e,t){return this.add(new this.constructor(e).multiplyScalar(t))}};var $=typeof Float32Array<"u"?Float32Array:Array;var _f=Math.PI/180;function Ei(){let r=new $(2);return $!=Float32Array&&(r[0]=0,r[1]=0),r}function qr(r,e,t){let n=e[0],s=e[1];return r[0]=t[0]*n+t[3]*s+t[6],r[1]=t[1]*n+t[4]*s+t[7],r}var Gf=function(){let r=Ei();return function(e,t,n,s,o,i){let a,c;for(t||(t=2),n||(n=0),s?c=Math.min(s*t+n,e.length):c=e.length,a=n;a<c;a+=t)r[0]=e[a],r[1]=e[a+1],o(r,r,i),e[a]=r[0],e[a+1]=r[1];return e}}();function zr(r,e,t){let n=e[0],s=e[1],o=e[2],i=t[3]*n+t[7]*s+t[11]*o||1;return r[0]=(t[0]*n+t[4]*s+t[8]*o)/i,r[1]=(t[1]*n+t[5]*s+t[9]*o)/i,r[2]=(t[2]*n+t[6]*s+t[10]*o)/i,r}function $r(r,e,t){let n=e[0],s=e[1];return r[0]=t[0]*n+t[2]*s,r[1]=t[1]*n+t[3]*s,r[2]=e[2],r}function en(r,e,t){let n=e[0],s=e[1],o=e[2];return r[0]=t[0]*n+t[3]*s+t[6]*o,r[1]=t[1]*n+t[4]*s+t[7]*o,r[2]=t[2]*n+t[5]*s+t[8]*o,r[3]=e[3],r}function gi(){let r=new $(3);return $!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function xi(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]}function tn(r,e,t){let n=e[0],s=e[1],o=e[2],i=t[0],a=t[1],c=t[2];return r[0]=s*c-o*a,r[1]=o*i-n*c,r[2]=n*a-s*i,r}function rn(r,e,t){let n=e[0],s=e[1],o=e[2],i=t[3]*n+t[7]*s+t[11]*o+t[15];return i=i||1,r[0]=(t[0]*n+t[4]*s+t[8]*o+t[12])/i,r[1]=(t[1]*n+t[5]*s+t[9]*o+t[13])/i,r[2]=(t[2]*n+t[6]*s+t[10]*o+t[14])/i,r}function Le(r,e,t){let n=e[0],s=e[1],o=e[2];return r[0]=n*t[0]+s*t[3]+o*t[6],r[1]=n*t[1]+s*t[4]+o*t[7],r[2]=n*t[2]+s*t[5]+o*t[8],r}function nn(r,e,t){let n=t[0],s=t[1],o=t[2],i=t[3],a=e[0],c=e[1],A=e[2],f=s*A-o*c,u=o*a-n*A,B=n*c-s*a,m=s*B-o*u,d=o*f-n*B,h=n*u-s*f,g=i*2;return f*=g,u*=g,B*=g,m*=2,d*=2,h*=2,r[0]=a+f+m,r[1]=c+u+d,r[2]=A+B+h,r}function sn(r,e,t,n){let s=[],o=[];return s[0]=e[0]-t[0],s[1]=e[1]-t[1],s[2]=e[2]-t[2],o[0]=s[0],o[1]=s[1]*Math.cos(n)-s[2]*Math.sin(n),o[2]=s[1]*Math.sin(n)+s[2]*Math.cos(n),r[0]=o[0]+t[0],r[1]=o[1]+t[1],r[2]=o[2]+t[2],r}function on(r,e,t,n){let s=[],o=[];return s[0]=e[0]-t[0],s[1]=e[1]-t[1],s[2]=e[2]-t[2],o[0]=s[2]*Math.sin(n)+s[0]*Math.cos(n),o[1]=s[1],o[2]=s[2]*Math.cos(n)-s[0]*Math.sin(n),r[0]=o[0]+t[0],r[1]=o[1]+t[1],r[2]=o[2]+t[2],r}function an(r,e,t,n){let s=[],o=[];return s[0]=e[0]-t[0],s[1]=e[1]-t[1],s[2]=e[2]-t[2],o[0]=s[0]*Math.cos(n)-s[1]*Math.sin(n),o[1]=s[0]*Math.sin(n)+s[1]*Math.cos(n),o[2]=s[2],r[0]=o[0]+t[0],r[1]=o[1]+t[1],r[2]=o[2]+t[2],r}function cn(r,e){let t=r[0],n=r[1],s=r[2],o=e[0],i=e[1],a=e[2],c=Math.sqrt((t*t+n*n+s*s)*(o*o+i*i+a*a)),A=c&&xi(r,e)/c;return Math.acos(Math.min(Math.max(A,-1),1))}var Uf=function(){let r=gi();return function(e,t,n,s,o,i){let a,c;for(t||(t=3),n||(n=0),s?c=Math.min(s*t+n,e.length):c=e.length,a=n;a<c;a+=t)r[0]=e[a],r[1]=e[a+1],r[2]=e[a+2],o(r,r,i),e[a]=r[0],e[a+1]=r[1],e[a+2]=r[2];return e}}();var St=[0,0,0],we,N=class extends Ue{static get ZERO(){return we||(we=new N(0,0,0),Object.freeze(we)),we}constructor(e=0,t=0,n=0){super(-0,-0,-0),arguments.length===1&&q(e)?this.copy(e):(C.debug&&(E(e),E(t),E(n)),this[0]=e,this[1]=t,this[2]=n)}set(e,t,n){return this[0]=e,this[1]=t,this[2]=n,this.check()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this.check()}fromObject(e){return C.debug&&(E(e.x),E(e.y),E(e.z)),this[0]=e.x,this[1]=e.y,this[2]=e.z,this.check()}toObject(e){return e.x=this[0],e.y=this[1],e.z=this[2],e}get ELEMENTS(){return 3}get z(){return this[2]}set z(e){this[2]=E(e)}angle(e){return cn(this,e)}cross(e){return tn(this,this,e),this.check()}rotateX({radians:e,origin:t=St}){return sn(this,this,t,e),this.check()}rotateY({radians:e,origin:t=St}){return on(this,this,t,e),this.check()}rotateZ({radians:e,origin:t=St}){return an(this,this,t,e),this.check()}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return rn(this,this,e),this.check()}transformAsVector(e){return zr(this,this,e),this.check()}transformByMatrix3(e){return Le(this,this,e),this.check()}transformByMatrix2(e){return $r(this,this,e),this.check()}transformByQuaternion(e){return nn(this,this,e),this.check()}};var He=class extends z{toString(){let e="[";if(C.printRowMajor){e+="row-major:";for(let t=0;t<this.RANK;++t)for(let n=0;n<this.RANK;++n)e+=" ".concat(this[n*this.RANK+t])}else{e+="column-major:";for(let t=0;t<this.ELEMENTS;++t)e+=" ".concat(this[t])}return e+="]",e}getElementIndex(e,t){return t*this.RANK+e}getElement(e,t){return this[t*this.RANK+e]}setElement(e,t,n){return this[t*this.RANK+e]=E(n),this}getColumn(e,t=new Array(this.RANK).fill(-0)){let n=e*this.RANK;for(let s=0;s<this.RANK;++s)t[s]=this[n+s];return t}setColumn(e,t){let n=e*this.RANK;for(let s=0;s<this.RANK;++s)this[n+s]=t[s];return this}};function An(r,e){if(r===e){let t=e[1],n=e[2],s=e[5];r[1]=e[3],r[2]=e[6],r[3]=t,r[5]=e[7],r[6]=n,r[7]=s}else r[0]=e[0],r[1]=e[3],r[2]=e[6],r[3]=e[1],r[4]=e[4],r[5]=e[7],r[6]=e[2],r[7]=e[5],r[8]=e[8];return r}function fn(r,e){let t=e[0],n=e[1],s=e[2],o=e[3],i=e[4],a=e[5],c=e[6],A=e[7],f=e[8],u=f*i-a*A,B=-f*o+a*c,m=A*o-i*c,d=t*u+n*B+s*m;return d?(d=1/d,r[0]=u*d,r[1]=(-f*n+s*A)*d,r[2]=(a*n-s*i)*d,r[3]=B*d,r[4]=(f*t-s*c)*d,r[5]=(-a*t+s*o)*d,r[6]=m*d,r[7]=(-A*t+n*c)*d,r[8]=(i*t-n*o)*d,r):null}function un(r){let e=r[0],t=r[1],n=r[2],s=r[3],o=r[4],i=r[5],a=r[6],c=r[7],A=r[8];return e*(A*o-i*c)+t*(-A*s+i*a)+n*(c*s-o*a)}function Ot(r,e,t){let n=e[0],s=e[1],o=e[2],i=e[3],a=e[4],c=e[5],A=e[6],f=e[7],u=e[8],B=t[0],m=t[1],d=t[2],h=t[3],g=t[4],b=t[5],L=t[6],v=t[7],Xe=t[8];return r[0]=B*n+m*i+d*A,r[1]=B*s+m*a+d*f,r[2]=B*o+m*c+d*u,r[3]=h*n+g*i+b*A,r[4]=h*s+g*a+b*f,r[5]=h*o+g*c+b*u,r[6]=L*n+v*i+Xe*A,r[7]=L*s+v*a+Xe*f,r[8]=L*o+v*c+Xe*u,r}function Bn(r,e,t){let n=e[0],s=e[1],o=e[2],i=e[3],a=e[4],c=e[5],A=e[6],f=e[7],u=e[8],B=t[0],m=t[1];return r[0]=n,r[1]=s,r[2]=o,r[3]=i,r[4]=a,r[5]=c,r[6]=B*n+m*i+A,r[7]=B*s+m*a+f,r[8]=B*o+m*c+u,r}function mn(r,e,t){let n=e[0],s=e[1],o=e[2],i=e[3],a=e[4],c=e[5],A=e[6],f=e[7],u=e[8],B=Math.sin(t),m=Math.cos(t);return r[0]=m*n+B*i,r[1]=m*s+B*a,r[2]=m*o+B*c,r[3]=m*i-B*n,r[4]=m*a-B*s,r[5]=m*c-B*o,r[6]=A,r[7]=f,r[8]=u,r}function Ut(r,e,t){let n=t[0],s=t[1];return r[0]=n*e[0],r[1]=n*e[1],r[2]=n*e[2],r[3]=s*e[3],r[4]=s*e[4],r[5]=s*e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r}function ln(r,e){let t=e[0],n=e[1],s=e[2],o=e[3],i=t+t,a=n+n,c=s+s,A=t*i,f=n*i,u=n*a,B=s*i,m=s*a,d=s*c,h=o*i,g=o*a,b=o*c;return r[0]=1-u-d,r[3]=f-b,r[6]=B+g,r[1]=f+b,r[4]=1-A-d,r[7]=m-h,r[2]=B-g,r[5]=m+h,r[8]=1-A-u,r}var Lt;(function(r){r[r.COL0ROW0=0]="COL0ROW0",r[r.COL0ROW1=1]="COL0ROW1",r[r.COL0ROW2=2]="COL0ROW2",r[r.COL1ROW0=3]="COL1ROW0",r[r.COL1ROW1=4]="COL1ROW1",r[r.COL1ROW2=5]="COL1ROW2",r[r.COL2ROW0=6]="COL2ROW0",r[r.COL2ROW1=7]="COL2ROW1",r[r.COL2ROW2=8]="COL2ROW2"})(Lt||(Lt={}));var Mi=Object.freeze([1,0,0,0,1,0,0,0,1]),U=class extends He{static get IDENTITY(){return yi()}static get ZERO(){return Ti()}get ELEMENTS(){return 9}get RANK(){return 3}get INDICES(){return Lt}constructor(e,...t){super(-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(e)?this.copy(e):t.length>0?this.copy([e,...t]):this.identity()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this[4]=e[4],this[5]=e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this.check()}identity(){return this.copy(Mi)}fromObject(e){return this.check()}fromQuaternion(e){return ln(this,e),this.check()}set(e,t,n,s,o,i,a,c,A){return this[0]=e,this[1]=t,this[2]=n,this[3]=s,this[4]=o,this[5]=i,this[6]=a,this[7]=c,this[8]=A,this.check()}setRowMajor(e,t,n,s,o,i,a,c,A){return this[0]=e,this[1]=s,this[2]=a,this[3]=t,this[4]=o,this[5]=c,this[6]=n,this[7]=i,this[8]=A,this.check()}determinant(){return un(this)}transpose(){return An(this,this),this.check()}invert(){return fn(this,this),this.check()}multiplyLeft(e){return Ot(this,e,this),this.check()}multiplyRight(e){return Ot(this,this,e),this.check()}rotate(e){return mn(this,this,e),this.check()}scale(e){return Array.isArray(e)?Ut(this,this,e):Ut(this,this,[e,e]),this.check()}translate(e){return Bn(this,this,e),this.check()}transform(e,t){let n;switch(e.length){case 2:n=qr(t||[-0,-0],e,this);break;case 3:n=Le(t||[-0,-0,-0],e,this);break;case 4:n=en(t||[-0,-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return Wr(n,e.length),n}transformVector(e,t){return this.transform(e,t)}transformVector2(e,t){return this.transform(e,t)}transformVector3(e,t){return this.transform(e,t)}},Je,Pe=null;function Ti(){return Je||(Je=new U([0,0,0,0,0,0,0,0,0]),Object.freeze(Je)),Je}function yi(){return Pe||(Pe=new U,Object.freeze(Pe)),Pe}var Ke="KHR_texture_transform",Fi=Ke,Ne=new N,Ii=new U,bi=new U;async function Ri(r,e){if(!new l(r).hasExtension(Ke)||!e.gltf?.loadBuffers)return;let s=r.json.materials||[];for(let o=0;o<s.length;o++)Di(o,r)}function Di(r,e){let t=e.json.materials?.[r],n=[t?.pbrMetallicRoughness?.baseColorTexture,t?.emissiveTexture,t?.normalTexture,t?.occlusionTexture,t?.pbrMetallicRoughness?.metallicRoughnessTexture],s=[];for(let o of n)o&&o?.extensions?.[Ke]&&_i(e,r,o,s)}function _i(r,e,t,n){let s=Gi(t,n);if(!s)return;let o=r.json.meshes||[];for(let i of o)for(let a of i.primitives){let c=a.material;Number.isFinite(c)&&e===c&&Si(r,a,s)}}function Gi(r,e){let t=r.extensions?.[Ke],{texCoord:n=0}=r,{texCoord:s=n}=t;if(!(e.findIndex(([i,a])=>i===n&&a===s)!==-1)){let i=Li(t);return n!==s&&(r.texCoord=s),e.push([n,s]),{originalTexCoord:n,texCoord:s,matrix:i}}return null}function Si(r,e,t){let{originalTexCoord:n,texCoord:s,matrix:o}=t,i=e.attributes[`TEXCOORD_${n}`];if(Number.isFinite(i)){let a=r.json.accessors?.[i];if(a&&a.bufferView){let c=r.json.bufferViews?.[a.bufferView];if(c){let{arrayBuffer:A,byteOffset:f}=r.buffers[c.buffer],u=(f||0)+(a.byteOffset||0)+(c.byteOffset||0),{ArrayType:B,length:m}=Q(a,c),d=xe[a.componentType],h=ge[a.type],g=c.byteStride||d*h,b=new Float32Array(m);for(let L=0;L<a.count;L++){let v=new B(A,u+L*g,2);Ne.set(v[0],v[1],1),Ne.transformByMatrix3(o),b.set([Ne[0],Ne[1]],L*h)}n===s?Oi(a,c,r.buffers,b):Ui(s,a,e,r,b)}}}}function Oi(r,e,t,n){r.componentType=5126,t.push({arrayBuffer:n.buffer,byteOffset:0,byteLength:n.buffer.byteLength}),e.buffer=t.length-1,e.byteLength=n.buffer.byteLength,e.byteOffset=0,delete e.byteStride}function Ui(r,e,t,n,s){n.buffers.push({arrayBuffer:s.buffer,byteOffset:0,byteLength:s.buffer.byteLength});let o=n.json.bufferViews;if(!o)return;o.push({buffer:n.buffers.length-1,byteLength:s.buffer.byteLength,byteOffset:0});let i=n.json.accessors;i&&(i.push({bufferView:o?.length-1,byteOffset:0,componentType:5126,count:e.count,type:"VEC2"}),t.attributes[`TEXCOORD_${r}`]=i.length-1)}function Li(r){let{offset:e=[0,0],rotation:t=0,scale:n=[1,1]}=r,s=new U().set(1,0,0,0,1,0,e[0],e[1],1),o=Ii.set(Math.cos(t),Math.sin(t),0,-Math.sin(t),Math.cos(t),0,0,0,1),i=bi.set(n[0],0,0,0,n[1],0,0,0,1);return s.multiplyRight(o).multiplyRight(i)}var Ht={};y(Ht,{decode:()=>Hi,encode:()=>Ji,name:()=>wi});var K="KHR_lights_punctual",wi=K;async function Hi(r){let e=new l(r),{json:t}=e,n=e.getExtension(K);n&&(e.json.lights=n.lights,e.removeExtension(K));for(let s of t.nodes||[]){let o=e.getObjectExtension(s,K);o&&(s.light=o.light),e.removeObjectExtension(s,K)}}async function Ji(r){let e=new l(r),{json:t}=e;if(t.lights){let n=e.addExtension(K);p(!n.lights),n.lights=t.lights,delete t.lights}if(e.json.lights){for(let n of e.json.lights){let s=n.node;e.addObjectExtension(s,K,n)}delete e.json.lights}}var Jt={};y(Jt,{decode:()=>Ni,encode:()=>Ki,name:()=>Pi});var Ae="KHR_materials_unlit",Pi=Ae;async function Ni(r){let e=new l(r),{json:t}=e;for(let n of t.materials||[])n.extensions&&n.extensions.KHR_materials_unlit&&(n.unlit=!0),e.removeObjectExtension(n,Ae);e.removeExtension(Ae)}function Ki(r){let e=new l(r),{json:t}=e;if(e.materials)for(let n of t.materials||[])n.unlit&&(delete n.unlit,e.addObjectExtension(n,Ae,{}),e.addExtension(Ae))}var Pt={};y(Pt,{decode:()=>Xi,encode:()=>ji,name:()=>vi});var fe="KHR_techniques_webgl",vi=fe;async function Xi(r){let e=new l(r),{json:t}=e,n=e.getExtension(fe);if(n){let s=Qi(n,e);for(let o of t.materials||[]){let i=e.getObjectExtension(o,fe);i&&(o.technique=Object.assign({},i,s[i.technique]),o.technique.values=ki(o.technique,e)),e.removeObjectExtension(o,fe)}e.removeExtension(fe)}}async function ji(r,e){}function Qi(r,e){let{programs:t=[],shaders:n=[],techniques:s=[]}=r,o=new TextDecoder;return n.forEach(i=>{if(Number.isFinite(i.bufferView))i.code=o.decode(e.getTypedArrayForBufferView(i.bufferView));else throw new Error("KHR_techniques_webgl: no shader code")}),t.forEach(i=>{i.fragmentShader=n[i.fragmentShader],i.vertexShader=n[i.vertexShader]}),s.forEach(i=>{i.program=t[i.program]}),s}function ki(r,e){let t=Object.assign({},r.values);return Object.keys(r.uniforms||{}).forEach(n=>{r.uniforms[n].value&&!(n in t)&&(t[n]=r.uniforms[n].value)}),Object.keys(t).forEach(n=>{typeof t[n]=="object"&&t[n].index!==void 0&&(t[n].texture=e.getTexture(t[n].index))}),t}var dn=[it,rt,xt,Mt,Tt,Dt,Ht,Jt,Pt,wt,ct];function hn(r,e={},t){let n=dn.filter(s=>Cn(s.name,e));for(let s of n)s.preprocess?.(r,e,t)}async function pn(r,e={},t){let n=dn.filter(s=>Cn(s.name,e));for(let s of n)await s.decode?.(r,e,t)}function Cn(r,e){let t=e?.gltf?.excludeExtensions||{};return!(r in t&&!t[r])}var Nt="KHR_binary_glTF";function En(r){let e=new l(r),{json:t}=e;for(let n of t.images||[]){let s=e.getObjectExtension(n,Nt);s&&Object.assign(n,s),e.removeObjectExtension(n,Nt)}t.buffers&&t.buffers[0]&&delete t.buffers[0].uri,e.removeExtension(Nt)}var gn={accessors:"accessor",animations:"animation",buffers:"buffer",bufferViews:"bufferView",images:"image",materials:"material",meshes:"mesh",nodes:"node",samplers:"sampler",scenes:"scene",skins:"skin",textures:"texture"},Yi={accessor:"accessors",animations:"animation",buffer:"buffers",bufferView:"bufferViews",image:"images",material:"materials",mesh:"meshes",node:"nodes",sampler:"samplers",scene:"scenes",skin:"skins",texture:"textures"},Kt=class{idToIndexMap={animations:{},accessors:{},buffers:{},bufferViews:{},images:{},materials:{},meshes:{},nodes:{},samplers:{},scenes:{},skins:{},textures:{}};json;normalize(e,t){this.json=e.json;let n=e.json;switch(n.asset&&n.asset.version){case"2.0":return;case void 0:case"1.0":break;default:console.warn(`glTF: Unknown version ${n.asset.version}`);return}if(!t.normalize)throw new Error("glTF v1 is not supported.");console.warn("Converting glTF v1 to glTF v2 format. This is experimental and may fail."),this._addAsset(n),this._convertTopLevelObjectsToArrays(n),En(e),this._convertObjectIdsToArrayIndices(n),this._updateObjects(n),this._updateMaterial(n)}_addAsset(e){e.asset=e.asset||{},e.asset.version="2.0",e.asset.generator=e.asset.generator||"Normalized to glTF 2.0 by loaders.gl"}_convertTopLevelObjectsToArrays(e){for(let t in gn)this._convertTopLevelObjectToArray(e,t)}_convertTopLevelObjectToArray(e,t){let n=e[t];if(!(!n||Array.isArray(n))){e[t]=[];for(let s in n){let o=n[s];o.id=o.id||s;let i=e[t].length;e[t].push(o),this.idToIndexMap[t][s]=i}}}_convertObjectIdsToArrayIndices(e){for(let t in gn)this._convertIdsToIndices(e,t);"scene"in e&&(e.scene=this._convertIdToIndex(e.scene,"scene"));for(let t of e.textures)this._convertTextureIds(t);for(let t of e.meshes)this._convertMeshIds(t);for(let t of e.nodes)this._convertNodeIds(t);for(let t of e.scenes)this._convertSceneIds(t)}_convertTextureIds(e){e.source&&(e.source=this._convertIdToIndex(e.source,"image"))}_convertMeshIds(e){for(let t of e.primitives){let{attributes:n,indices:s,material:o}=t;for(let i in n)n[i]=this._convertIdToIndex(n[i],"accessor");s&&(t.indices=this._convertIdToIndex(s,"accessor")),o&&(t.material=this._convertIdToIndex(o,"material"))}}_convertNodeIds(e){e.children&&(e.children=e.children.map(t=>this._convertIdToIndex(t,"node"))),e.meshes&&(e.meshes=e.meshes.map(t=>this._convertIdToIndex(t,"mesh")))}_convertSceneIds(e){e.nodes&&(e.nodes=e.nodes.map(t=>this._convertIdToIndex(t,"node")))}_convertIdsToIndices(e,t){e[t]||(console.warn(`gltf v1: json doesn't contain attribute ${t}`),e[t]=[]);for(let n of e[t])for(let s in n){let o=n[s],i=this._convertIdToIndex(o,s);n[s]=i}}_convertIdToIndex(e,t){let n=Yi[t];if(n in this.idToIndexMap){let s=this.idToIndexMap[n][e];if(!Number.isFinite(s))throw new Error(`gltf v1: failed to resolve ${t} with id ${e}`);return s}return e}_updateObjects(e){for(let t of this.json.buffers)delete t.type}_updateMaterial(e){for(let t of e.materials){t.pbrMetallicRoughness={baseColorFactor:[1,1,1,1],metallicFactor:1,roughnessFactor:1};let n=t.values?.tex||t.values?.texture2d_0||t.values?.diffuseTex,s=e.textures.findIndex(o=>o.id===n);s!==-1&&(t.pbrMetallicRoughness.baseColorTexture={index:s})}}};function xn(r,e={}){return new Kt().normalize(r,e)}async function Mn(r,e,t=0,n,s){return Wi(r,e,t,n),xn(r,{normalize:n?.gltf?.normalize}),hn(r,n,s),n?.gltf?.loadBuffers&&r.json.buffers&&await Zi(r,n,s),n?.gltf?.loadImages&&await qi(r,n,s),await pn(r,n,s),r}function Wi(r,e,t,n){if(n.uri&&(r.baseUri=n.uri),e instanceof ArrayBuffer&&!Ur(e,t,n)&&(e=new TextDecoder().decode(e)),typeof e=="string")r.json=Qe(e);else if(e instanceof ArrayBuffer){let i={};t=Ge(i,e,t,n.glb),p(i.type==="glTF",`Invalid GLB magic string ${i.type}`),r._glb=i,r.json=i.json}else p(!1,"GLTF: must be ArrayBuffer or string");let s=r.json.buffers||[];if(r.buffers=new Array(s.length).fill(null),r._glb&&r._glb.header.hasBinChunk){let{binChunks:i}=r._glb;r.buffers[0]={arrayBuffer:i[0].arrayBuffer,byteOffset:i[0].byteOffset,byteLength:i[0].byteLength}}let o=r.json.images||[];r.images=new Array(o.length).fill({})}async function Zi(r,e,t){let n=r.json.buffers||[];for(let s=0;s<n.length;++s){let o=n[s];if(o.uri){let{fetch:i}=t;p(i);let a=Et(o.uri,e),A=await(await t?.fetch?.(a))?.arrayBuffer?.();r.buffers[s]={arrayBuffer:A,byteOffset:0,byteLength:A.byteLength},delete o.uri}else r.buffers[s]===null&&(r.buffers[s]={arrayBuffer:new ArrayBuffer(o.byteLength),byteOffset:0,byteLength:o.byteLength})}}async function qi(r,e,t){let n=zi(r),s=r.json.images||[],o=[];for(let i of n)o.push($i(r,s[i],i,e,t));return await Promise.all(o)}function zi(r){let e=new Set,t=r.json.textures||[];for(let n of t)n.source!==void 0&&e.add(n.source);return Array.from(e).sort()}async function $i(r,e,t,n,s){let o;if(e.uri&&!e.hasOwnProperty("bufferView")){let a=Et(e.uri,n),{fetch:c}=s;o=await(await c(a)).arrayBuffer(),e.bufferView={data:o}}if(Number.isFinite(e.bufferView)){let a=ur(r.json,r.buffers,e.bufferView);o=re(a.buffer,a.byteOffset,a.byteLength)}p(o,"glTF image has no data");let i=await ee(o,[ze,dt],{...n,mimeType:e.mimeType,basis:n.basis||{format:De()}},s);i&&i[0]&&(i={compressed:!0,mipmaps:!1,width:i[0].width,height:i[0].height,data:i[0]}),r.images=r.images||[],r.images[t]=i}var ve={name:"glTF",id:"gltf",module:"gltf",version:w,extensions:["gltf","glb"],mimeTypes:["model/gltf+json","model/gltf-binary"],text:!0,binary:!0,tests:["glTF"],parse:ea,options:{gltf:{normalize:!0,loadBuffers:!0,loadImages:!0,decompressMeshes:!0},log:console}};async function ea(r,e={},t){e={...ve.options,...e},e.gltf={...ve.options.gltf,...e.gltf};let{byteOffset:n=0}=e;return await Mn({},r,n,e,t)}var ta=1179937895,ra=1313821514,na=5130562,O=!0;function ue(r,e,t=0,n={}){let{magic:s=ta,version:o=2,json:i={},binary:a}=r,c=t;e&&(e.setUint32(t+0,s,O),e.setUint32(t+4,o,O),e.setUint32(t+8,0,O));let A=t+8;t+=12;let f=t;e&&(e.setUint32(t+0,0,O),e.setUint32(t+4,ra,O)),t+=8;let u=JSON.stringify(i);if(t=Ve(e,t,u,4),e){let B=t-f-8;e.setUint32(f+0,B,O)}if(a){let B=t;if(e&&(e.setUint32(t+0,0,O),e.setUint32(t+4,na,O)),t+=8,t=pe(e,t,a,4),e){let m=t-B-8;e.setUint32(B+0,m,O)}}if(e){let B=t-c;e.setUint32(A,B,O)}return t}function vt(r,e,t,n){return sa(r),ue(r,e,t,n)}function sa(r,{firstBuffer:e=0}={}){if(r.buffers&&r.buffers.length>e)throw new Error("encodeGLTF: multiple buffers not yet implemented")}var yn={name:"glTF",id:"gltf",module:"gltf",version:w,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{gltf:{}},encode:async(r,e={})=>Tn(r,e),encodeSync:Tn};function Tn(r,e={}){let{byteOffset:t=0}=e,n=vt(r,null,t,e),s=new ArrayBuffer(n),o=new DataView(s);return vt(r,o,t,e),s}var Fn={name:"GLB",id:"glb",module:"gltf",version:w,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,parse:oa,parseSync:In,options:{glb:{strict:!1}}};async function oa(r,e){return In(r,e)}function In(r,e){let{byteOffset:t=0}=e||{},n={};return Ge(n,r,t,e?.glb),n}var Rn={name:"GLB",id:"glb",module:"gltf",version:w,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{glb:{}},encode:async(r,e={})=>bn(r,e),encodeSync:bn};function bn(r,e){let{byteOffset:t=0}=e,n=ue(r,null,t,e),s=new ArrayBuffer(n),o=new DataView(s);return ue(r,o,t,e),s}var ia={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},aa={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},I={TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,REPEAT:10497,LINEAR:9729,NEAREST_MIPMAP_LINEAR:9986},ca={magFilter:I.TEXTURE_MAG_FILTER,minFilter:I.TEXTURE_MIN_FILTER,wrapS:I.TEXTURE_WRAP_S,wrapT:I.TEXTURE_WRAP_T},Aa={[I.TEXTURE_MAG_FILTER]:I.LINEAR,[I.TEXTURE_MIN_FILTER]:I.NEAREST_MIPMAP_LINEAR,[I.TEXTURE_WRAP_S]:I.REPEAT,[I.TEXTURE_WRAP_T]:I.REPEAT};function fa(){return{id:"default-sampler",parameters:Aa}}function ua(r){return aa[r]}function Ba(r){return ia[r]}var Xt=class{baseUri="";jsonUnprocessed;json;buffers=[];images=[];postProcess(e,t={}){let{json:n,buffers:s=[],images:o=[]}=e,{baseUri:i=""}=e;return p(n),this.baseUri=i,this.buffers=s,this.images=o,this.jsonUnprocessed=n,this.json=this._resolveTree(e.json,t),this.json}_resolveTree(e,t={}){let n={...e};return this.json=n,e.bufferViews&&(n.bufferViews=e.bufferViews.map((s,o)=>this._resolveBufferView(s,o))),e.images&&(n.images=e.images.map((s,o)=>this._resolveImage(s,o))),e.samplers&&(n.samplers=e.samplers.map((s,o)=>this._resolveSampler(s,o))),e.textures&&(n.textures=e.textures.map((s,o)=>this._resolveTexture(s,o))),e.accessors&&(n.accessors=e.accessors.map((s,o)=>this._resolveAccessor(s,o))),e.materials&&(n.materials=e.materials.map((s,o)=>this._resolveMaterial(s,o))),e.meshes&&(n.meshes=e.meshes.map((s,o)=>this._resolveMesh(s,o))),e.nodes&&(n.nodes=e.nodes.map((s,o)=>this._resolveNode(s,o)),n.nodes=n.nodes.map((s,o)=>this._resolveNodeChildren(s))),e.skins&&(n.skins=e.skins.map((s,o)=>this._resolveSkin(s,o))),e.scenes&&(n.scenes=e.scenes.map((s,o)=>this._resolveScene(s,o))),typeof this.json.scene=="number"&&n.scenes&&(n.scene=n.scenes[this.json.scene]),n}getScene(e){return this._get(this.json.scenes,e)}getNode(e){return this._get(this.json.nodes,e)}getSkin(e){return this._get(this.json.skins,e)}getMesh(e){return this._get(this.json.meshes,e)}getMaterial(e){return this._get(this.json.materials,e)}getAccessor(e){return this._get(this.json.accessors,e)}getCamera(e){return this._get(this.json.cameras,e)}getTexture(e){return this._get(this.json.textures,e)}getSampler(e){return this._get(this.json.samplers,e)}getImage(e){return this._get(this.json.images,e)}getBufferView(e){return this._get(this.json.bufferViews,e)}getBuffer(e){return this._get(this.json.buffers,e)}_get(e,t){if(typeof t=="object")return t;let n=e&&e[t];return n||console.warn(`glTF file error: Could not find ${e}[${t}]`),n}_resolveScene(e,t){return{...e,id:e.id||`scene-${t}`,nodes:(e.nodes||[]).map(n=>this.getNode(n))}}_resolveNode(e,t){let n={...e,id:e?.id||`node-${t}`};return e.mesh!==void 0&&(n.mesh=this.getMesh(e.mesh)),e.camera!==void 0&&(n.camera=this.getCamera(e.camera)),e.skin!==void 0&&(n.skin=this.getSkin(e.skin)),e.meshes!==void 0&&e.meshes.length&&(n.mesh=e.meshes.reduce((s,o)=>{let i=this.getMesh(o);return s.id=i.id,s.primitives=s.primitives.concat(i.primitives),s},{primitives:[]})),n}_resolveNodeChildren(e){return e.children&&(e.children=e.children.map(t=>this.getNode(t))),e}_resolveSkin(e,t){let n=typeof e.inverseBindMatrices=="number"?this.getAccessor(e.inverseBindMatrices):void 0;return{...e,id:e.id||`skin-${t}`,inverseBindMatrices:n}}_resolveMesh(e,t){let n={...e,id:e.id||`mesh-${t}`,primitives:[]};return e.primitives&&(n.primitives=e.primitives.map(s=>{let o={...s,attributes:{},indices:void 0,material:void 0},i=s.attributes;for(let a in i)o.attributes[a]=this.getAccessor(i[a]);return s.indices!==void 0&&(o.indices=this.getAccessor(s.indices)),s.material!==void 0&&(o.material=this.getMaterial(s.material)),o})),n}_resolveMaterial(e,t){let n={...e,id:e.id||`material-${t}`};if(n.normalTexture&&(n.normalTexture={...n.normalTexture},n.normalTexture.texture=this.getTexture(n.normalTexture.index)),n.occlusionTexture&&(n.occlusionTexture={...n.occlusionTexture},n.occlusionTexture.texture=this.getTexture(n.occlusionTexture.index)),n.emissiveTexture&&(n.emissiveTexture={...n.emissiveTexture},n.emissiveTexture.texture=this.getTexture(n.emissiveTexture.index)),n.emissiveFactor||(n.emissiveFactor=n.emissiveTexture?[1,1,1]:[0,0,0]),n.pbrMetallicRoughness){n.pbrMetallicRoughness={...n.pbrMetallicRoughness};let s=n.pbrMetallicRoughness;s.baseColorTexture&&(s.baseColorTexture={...s.baseColorTexture},s.baseColorTexture.texture=this.getTexture(s.baseColorTexture.index)),s.metallicRoughnessTexture&&(s.metallicRoughnessTexture={...s.metallicRoughnessTexture},s.metallicRoughnessTexture.texture=this.getTexture(s.metallicRoughnessTexture.index))}return n}_resolveAccessor(e,t){let n=ua(e.componentType),s=Ba(e.type),o=n*s,i={...e,id:e.id||`accessor-${t}`,bytesPerComponent:n,components:s,bytesPerElement:o,value:void 0,bufferView:void 0,sparse:void 0};if(e.bufferView!==void 0&&(i.bufferView=this.getBufferView(e.bufferView)),i.bufferView){let a=i.bufferView.buffer,{ArrayType:c,byteLength:A}=Q(i,i.bufferView),f=(i.bufferView.byteOffset||0)+(i.byteOffset||0)+a.byteOffset,u=a.arrayBuffer.slice(f,f+A);i.bufferView.byteStride&&(u=this._getValueFromInterleavedBuffer(a,f,i.bufferView.byteStride,i.bytesPerElement,i.count)),i.value=new c(u)}return i}_getValueFromInterleavedBuffer(e,t,n,s,o){let i=new Uint8Array(o*s);for(let a=0;a<o;a++){let c=t+a*n;i.set(new Uint8Array(e.arrayBuffer.slice(c,c+s)),a*s)}return i.buffer}_resolveTexture(e,t){return{...e,id:e.id||`texture-${t}`,sampler:typeof e.sampler=="number"?this.getSampler(e.sampler):fa(),source:typeof e.source=="number"?this.getImage(e.source):void 0}}_resolveSampler(e,t){let n={id:e.id||`sampler-${t}`,...e,parameters:{}};for(let s in n){let o=this._enumSamplerParameter(s);o!==void 0&&(n.parameters[o]=n[s])}return n}_enumSamplerParameter(e){return ca[e]}_resolveImage(e,t){let n={...e,id:e.id||`image-${t}`,image:null,bufferView:e.bufferView!==void 0?this.getBufferView(e.bufferView):void 0},s=this.images[t];return s&&(n.image=s),n}_resolveBufferView(e,t){let n=e.buffer,s=this.buffers[n].arrayBuffer,o=this.buffers[n].byteOffset||0;return e.byteOffset&&(o+=e.byteOffset),{id:`bufferView-${t}`,...e,buffer:this.buffers[n],data:new Uint8Array(s,o,e.byteLength)}}_resolveCamera(e,t){let n={...e,id:e.id||`camera-${t}`};return n.perspective,n.orthographic,n}};function Dn(r,e){return new Xt().postProcess(r,e)}return Hn(Be);})();
7
+ "use strict";var __exports__=(()=>{var Gn=Object.create;var Be=Object.defineProperty;var Sn=Object.getOwnPropertyDescriptor;var On=Object.getOwnPropertyNames;var Un=Object.getPrototypeOf,Ln=Object.prototype.hasOwnProperty;var wn=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),M=(r,e)=>{for(var t in e)Be(r,t,{get:e[t],enumerable:!0})},ue=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of On(e))!Ln.call(r,s)&&s!==t&&Be(r,s,{get:()=>e[s],enumerable:!(n=Sn(e,s))||n.enumerable});return r},le=(r,e,t)=>(ue(r,e,"default"),t&&ue(t,e,"default")),Jn=(r,e,t)=>(t=r!=null?Gn(Un(r)):{},ue(e||!r||!r.__esModule?Be(t,"default",{value:r,enumerable:!0}):t,r)),Hn=r=>ue(Be({},"__esModule",{value:!0}),r);var Qt=wn((da,jt)=>{jt.exports=globalThis.loaders});var fe={};M(fe,{EXT_FEATURE_METADATA:()=>at,EXT_MESH_FEATURES:()=>tt,EXT_STRUCTURAL_METADATA:()=>st,GLBLoader:()=>bn,GLBWriter:()=>Dn,GLTFLoader:()=>Ne,GLTFScenegraph:()=>m,GLTFWriter:()=>Fn,_getMemoryUsageGLTF:()=>fr,postProcessGLTF:()=>_n});le(fe,Jn(Qt(),1));var rt={};M(rt,{decode:()=>Gs,name:()=>tt});var kt="4.2.0-alpha.6";async function $(r,e,t,n){return n._parse(r,e,t,n)}function y(r,e){if(!r)throw new Error(e||"loader assertion failed.")}var I={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},Pn=I.self||I.window||I.global||{},Nn=I.window||I.self||I.global||{},Kn=I.global||I.self||I.window||{},vn=I.document||{};var ee=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var Vt=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Xn=Vt&&parseFloat(Vt[1])||0;function ve(r){globalThis.loaders||={},globalThis.loaders.modules||={},Object.assign(globalThis.loaders.modules,r)}function Xe(r){return globalThis.loaders?.modules?.[r]||null}function jn(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.2.0-alpha.6"),globalThis._loadersgl_.version}var Yt=jn();function Wt(r,e){if(!r)throw new Error(e||"loaders.gl assertion failed.")}var R={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},Ma=R.self||R.window||R.global||{},ya=R.window||R.self||R.global||{},Fa=R.global||R.self||R.window||{},ba=R.document||{};var v=typeof process!="object"||String(process)!=="[object process]"||process.browser,me=typeof importScripts=="function",Ia=typeof window<"u"&&typeof window.orientation<"u",Zt=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Ra=Zt&&parseFloat(Zt[1])||0;var je={};async function D(r,e=null,t={},n=null){return e&&(r=qt(r,e,t,n)),je[r]=je[r]||Qn(r),await je[r]}function qt(r,e,t={},n=null){if(!t.useLocalLibraries&&r.startsWith("http"))return r;n=n||r;let s=t.modules||{};return s[n]?s[n]:v?t.CDN?(Wt(t.CDN.startsWith("http")),`${t.CDN}/${e}@${Yt}/dist/libs/${n}`):me?`../src/libs/${n}`:`modules/${e}/src/libs/${n}`:`modules/${e}/dist/libs/${n}`}async function Qn(r){if(r.endsWith("wasm"))return await Vn(r);if(!v)try{let{requireFromFile:t}=globalThis.loaders||{};return await t?.(r)}catch(t){return console.error(t),null}if(me)return importScripts(r);let e=await Yn(r);return kn(e,r)}function kn(r,e){if(!v){let{requireFromString:n}=globalThis.loaders||{};return n?.(r,e)}if(me)return eval.call(globalThis,r),null;let t=document.createElement("script");t.id=e;try{t.appendChild(document.createTextNode(r))}catch{t.text=r}return document.body.appendChild(t),null}async function Vn(r){let{readFileAsArrayBuffer:e}=globalThis.loaders||{};return v||!e||r.startsWith("http")?await(await fetch(r)).arrayBuffer():await e(r)}async function Yn(r){let{readFileAsText:e}=globalThis.loaders||{};return v||!e||r.startsWith("http")?await(await fetch(r)).text():await e(r)}function $t(r,e=5){return typeof r=="string"?r.slice(0,e):ArrayBuffer.isView(r)?zt(r.buffer,r.byteOffset,e):r instanceof ArrayBuffer?zt(r,0,e):""}function zt(r,e,t){if(r.byteLength<=e+t)return"";let n=new DataView(r),s="";for(let o=0;o<t;o++)s+=String.fromCharCode(n.getUint8(e+o));return s}function Qe(r){try{return JSON.parse(r)}catch{throw new Error(`Failed to parse JSON from data starting with "${$t(r)}"`)}}function te(r,e,t){let n=t!==void 0?new Uint8Array(r).subarray(e,e+t):new Uint8Array(r).subarray(e);return new Uint8Array(n).buffer}function _(r,e){return y(r>=0),y(e>0),r+(e-1)&~(e-1)}function ke(r,e,t){let n;if(r instanceof ArrayBuffer)n=new Uint8Array(r);else{let s=r.byteOffset,o=r.byteLength;n=new Uint8Array(r.buffer||r.arrayBuffer,s,o)}return e.set(n,t),t+_(n.byteLength,4)}function de(r,e,t,n){let s=_(t.byteLength,n),o=s-t.byteLength;if(r){let i=new Uint8Array(r.buffer,r.byteOffset+e,t.byteLength),a=new Uint8Array(t);i.set(a);for(let c=0;c<o;++c)r.setUint8(e+t.byteLength+c,32)}return e+=s,e}function Ve(r,e,t,n){let o=new TextEncoder().encode(t);return e=de(r,e,o,n),e}var Wn=globalThis.loaders?.parseImageNode,Ye=typeof Image<"u",We=typeof ImageBitmap<"u",Zn=Boolean(Wn),Ze=ee?!0:Zn;function er(r){switch(r){case"auto":return We||Ye||Ze;case"imagebitmap":return We;case"image":return Ye;case"data":return Ze;default:throw new Error(`@loaders.gl/images: image ${r} not supported in this environment`)}}function tr(){if(We)return"imagebitmap";if(Ye)return"image";if(Ze)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function rr(r){let e=qn(r);if(!e)throw new Error("Not an image");return e}function re(r){switch(rr(r)){case"data":return r;case"image":case"imagebitmap":let e=document.createElement("canvas"),t=e.getContext("2d");if(!t)throw new Error("getImageData");return e.width=r.width,e.height=r.height,t.drawImage(r,0,0),t.getImageData(0,0,r.width,r.height);default:throw new Error("getImageData")}}function qn(r){return typeof ImageBitmap<"u"&&r instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&r instanceof Image?"image":r&&typeof r=="object"&&r.data&&r.width&&r.height?"data":null}var zn=/^data:image\/svg\+xml/,$n=/\.svg((\?|#).*)?$/;function he(r){return r&&(zn.test(r)||$n.test(r))}function nr(r,e){if(he(e)){let n=new TextDecoder().decode(r);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(n=unescape(encodeURIComponent(n)))}catch(o){throw new Error(o.message)}return`data:image/svg+xml;base64,${btoa(n)}`}return qe(r,e)}function qe(r,e){if(he(e))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(r)])}async function pe(r,e,t){let n=nr(r,t),s=self.URL||self.webkitURL,o=typeof n!="string"&&s.createObjectURL(n);try{return await es(o||n,e)}finally{o&&s.revokeObjectURL(o)}}async function es(r,e){let t=new Image;return t.src=r,e.image&&e.image.decode&&t.decode?(await t.decode(),t):await new Promise((n,s)=>{try{t.onload=()=>n(t),t.onerror=o=>{let i=o instanceof Error?o.message:"error";s(new Error(i))}}catch(o){s(o)}})}var ts={},sr=!0;async function or(r,e,t){let n;he(t)?n=await pe(r,e,t):n=qe(r,t);let s=e&&e.imagebitmap;return await rs(n,s)}async function rs(r,e=null){if((ns(e)||!sr)&&(e=null),e)try{return await createImageBitmap(r,e)}catch(t){console.warn(t),sr=!1}return await createImageBitmap(r)}function ns(r){for(let e in r||ts)return!1;return!0}function ir(r){return!as(r,"ftyp",4)||!(r[8]&96)?null:ss(r)}function ss(r){switch(os(r,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function os(r,e,t){return String.fromCharCode(...r.slice(e,t))}function is(r){return[...r].map(e=>e.charCodeAt(0))}function as(r,e,t=0){let n=is(e);for(let s=0;s<n.length;++s)if(n[s]!==r[s+t])return!1;return!0}var G=!1,ne=!0;function J(r){let e=se(r);return As(e)||Bs(e)||fs(e)||us(e)||cs(e)}function cs(r){let e=new Uint8Array(r instanceof DataView?r.buffer:r),t=ir(e);return t?{mimeType:t.mimeType,width:0,height:0}:null}function As(r){let e=se(r);return e.byteLength>=24&&e.getUint32(0,G)===2303741511?{mimeType:"image/png",width:e.getUint32(16,G),height:e.getUint32(20,G)}:null}function fs(r){let e=se(r);return e.byteLength>=10&&e.getUint32(0,G)===1195984440?{mimeType:"image/gif",width:e.getUint16(6,ne),height:e.getUint16(8,ne)}:null}function us(r){let e=se(r);return e.byteLength>=14&&e.getUint16(0,G)===16973&&e.getUint32(2,ne)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,ne),height:e.getUint32(22,ne)}:null}function Bs(r){let e=se(r);if(!(e.byteLength>=3&&e.getUint16(0,G)===65496&&e.getUint8(2)===255))return null;let{tableMarkers:n,sofMarkers:s}=ls(),o=2;for(;o+9<e.byteLength;){let i=e.getUint16(o,G);if(s.has(i))return{mimeType:"image/jpeg",height:e.getUint16(o+5,G),width:e.getUint16(o+7,G)};if(!n.has(i))return null;o+=2,o+=e.getUint16(o,G)}return null}function ls(){let r=new Set([65499,65476,65484,65501,65534]);for(let t=65504;t<65520;++t)r.add(t);return{tableMarkers:r,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function se(r){if(r instanceof DataView)return r;if(ArrayBuffer.isView(r))return new DataView(r.buffer);if(r instanceof ArrayBuffer)return new DataView(r);throw new Error("toDataView")}async function ar(r,e){let{mimeType:t}=J(r)||{},n=globalThis.loaders?.parseImageNode;return y(n),await n(r,t)}async function cr(r,e,t){e=e||{};let s=(e.image||{}).type||"auto",{url:o}=t||{},i=ms(s),a;switch(i){case"imagebitmap":a=await or(r,e,o);break;case"image":a=await pe(r,e,o);break;case"data":a=await ar(r,e);break;default:y(!1)}return s==="data"&&(a=re(a)),a}function ms(r){switch(r){case"auto":case"data":return tr();default:return er(r),r}}var ds=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],hs=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],ps={image:{type:"auto",decode:!0}},ze={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:kt,mimeTypes:hs,extensions:ds,parse:cr,tests:[r=>Boolean(J(new DataView(r)))],options:ps};var $e={};function et(r){if($e[r]===void 0){let e=ee?Es(r):Cs(r);$e[r]=e}return $e[r]}function Cs(r){let e=["image/png","image/jpeg","image/gif"],t=globalThis.loaders?.imageFormatsNode||e,n=globalThis.loaders?.parseImageNode;return Boolean(n)&&t.includes(r)}function Es(r){switch(r){case"image/avif":case"image/webp":return gs(r);default:return!0}}function gs(r){try{return document.createElement("canvas").toDataURL(r).indexOf(`data:${r}`)===0}catch{return!1}}function p(r,e){if(!r)throw new Error(e||"assert failed: gltf")}var Ce={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Ee={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};var xs=1.33,Ar=["SCALAR","VEC2","VEC3","VEC4"],Ts=[[Int8Array,5120],[Uint8Array,5121],[Int16Array,5122],[Uint16Array,5123],[Uint32Array,5125],[Float32Array,5126],[Float64Array,5130]],Ms=new Map(Ts),ys={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Fs={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},bs={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function ge(r){return Ar[r-1]||Ar[0]}function X(r){let e=Ms.get(r.constructor);if(!e)throw new Error("Illegal typed array");return e}function j(r,e){let t=bs[r.componentType],n=ys[r.type],s=Fs[r.componentType],o=r.count*n,i=r.count*n*s;p(i>=0&&i<=e.byteLength);let a=Ee[r.componentType],c=Ce[r.type];return{ArrayType:t,length:o,byteLength:i,componentByteSize:a,numberOfComponentsInElement:c}}function fr(r){let{images:e,bufferViews:t}=r;e=e||[],t=t||[];let n=e.map(i=>i.bufferView);t=t.filter(i=>!n.includes(i));let s=t.reduce((i,a)=>i+a.byteLength,0),o=e.reduce((i,a)=>{let{width:c,height:A}=a.image;return i+c*A},0);return s+Math.ceil(4*o*xs)}function ur(r,e,t){let n=r.bufferViews[t];p(n);let s=n.buffer,o=e[s];p(o);let i=(n.byteOffset||0)+o.byteOffset;return new Uint8Array(o.arrayBuffer,i,n.byteLength)}function Br(r,e,t){let n=typeof t=="number"?r.accessors?.[t]:t;if(!n)throw new Error(`No gltf accessor ${JSON.stringify(t)}`);let s=r.bufferViews?.[n.bufferView||0];if(!s)throw new Error(`No gltf buffer view for accessor ${s}`);let{arrayBuffer:o,byteOffset:i}=e[s.buffer],a=(i||0)+(n.byteOffset||0)+(s.byteOffset||0),{ArrayType:c,length:A,componentByteSize:f,numberOfComponentsInElement:u}=j(n,s),B=f*u,l=s.byteStride||B;if(typeof s.byteStride>"u"||s.byteStride===B)return new c(o,a,A);let d=new c(A);for(let h=0;h<n.count;h++){let g=new c(o,a+h*l,u);d.set(g,h*u)}return d}function Is(){return{asset:{version:"2.0",generator:"loaders.gl"},buffers:[],extensions:{},extensionsRequired:[],extensionsUsed:[]}}var m=class{gltf;sourceBuffers;byteLength;constructor(e){this.gltf={json:e?.json||Is(),buffers:e?.buffers||[],images:e?.images||[]},this.sourceBuffers=[],this.byteLength=0,this.gltf.buffers&&this.gltf.buffers[0]&&(this.byteLength=this.gltf.buffers[0].byteLength,this.sourceBuffers=[this.gltf.buffers[0]])}get json(){return this.gltf.json}getApplicationData(e){return this.json[e]}getExtraData(e){return(this.json.extras||{})[e]}hasExtension(e){let t=this.getUsedExtensions().find(s=>s===e),n=this.getRequiredExtensions().find(s=>s===e);return typeof t=="string"||typeof n=="string"}getExtension(e){let t=this.getUsedExtensions().find(s=>s===e),n=this.json.extensions||{};return t?n[e]:null}getRequiredExtension(e){return this.getRequiredExtensions().find(n=>n===e)?this.getExtension(e):null}getRequiredExtensions(){return this.json.extensionsRequired||[]}getUsedExtensions(){return this.json.extensionsUsed||[]}getRemovedExtensions(){return this.json.extensionsRemoved||[]}getObjectExtension(e,t){return(e.extensions||{})[t]}getScene(e){return this.getObject("scenes",e)}getNode(e){return this.getObject("nodes",e)}getSkin(e){return this.getObject("skins",e)}getMesh(e){return this.getObject("meshes",e)}getMaterial(e){return this.getObject("materials",e)}getAccessor(e){return this.getObject("accessors",e)}getTexture(e){return this.getObject("textures",e)}getSampler(e){return this.getObject("samplers",e)}getImage(e){return this.getObject("images",e)}getBufferView(e){return this.getObject("bufferViews",e)}getBuffer(e){return this.getObject("buffers",e)}getObject(e,t){if(typeof t=="object")return t;let n=this.json[e]&&this.json[e][t];if(!n)throw new Error(`glTF file error: Could not find ${e}[${t}]`);return n}getTypedArrayForBufferView(e){e=this.getBufferView(e);let t=e.buffer,n=this.gltf.buffers[t];p(n);let s=(e.byteOffset||0)+n.byteOffset;return new Uint8Array(n.arrayBuffer,s,e.byteLength)}getTypedArrayForAccessor(e){let t=this.getAccessor(e);return Br(this.gltf.json,this.gltf.buffers,t)}getTypedArrayForImageData(e){e=this.getAccessor(e);let t=this.getBufferView(e.bufferView),s=this.getBuffer(t.buffer).data,o=t.byteOffset||0;return new Uint8Array(s,o,t.byteLength)}addApplicationData(e,t){return this.json[e]=t,this}addExtraData(e,t){return this.json.extras=this.json.extras||{},this.json.extras[e]=t,this}addObjectExtension(e,t,n){return e.extensions=e.extensions||{},e.extensions[t]=n,this.registerUsedExtension(t),this}setObjectExtension(e,t,n){let s=e.extensions||{};s[t]=n}removeObjectExtension(e,t){let n=e?.extensions||{};if(n[t]){this.json.extensionsRemoved=this.json.extensionsRemoved||[];let s=this.json.extensionsRemoved;s.includes(t)||s.push(t)}delete n[t]}addExtension(e,t={}){return p(t),this.json.extensions=this.json.extensions||{},this.json.extensions[e]=t,this.registerUsedExtension(e),t}addRequiredExtension(e,t={}){return p(t),this.addExtension(e,t),this.registerRequiredExtension(e),t}registerUsedExtension(e){this.json.extensionsUsed=this.json.extensionsUsed||[],this.json.extensionsUsed.find(t=>t===e)||this.json.extensionsUsed.push(e)}registerRequiredExtension(e){this.registerUsedExtension(e),this.json.extensionsRequired=this.json.extensionsRequired||[],this.json.extensionsRequired.find(t=>t===e)||this.json.extensionsRequired.push(e)}removeExtension(e){if(this.json.extensions?.[e]){this.json.extensionsRemoved=this.json.extensionsRemoved||[];let t=this.json.extensionsRemoved;t.includes(e)||t.push(e)}this.json.extensions&&delete this.json.extensions[e],this.json.extensionsRequired&&this._removeStringFromArray(this.json.extensionsRequired,e),this.json.extensionsUsed&&this._removeStringFromArray(this.json.extensionsUsed,e)}setDefaultScene(e){this.json.scene=e}addScene(e){let{nodeIndices:t}=e;return this.json.scenes=this.json.scenes||[],this.json.scenes.push({nodes:t}),this.json.scenes.length-1}addNode(e){let{meshIndex:t,matrix:n}=e;this.json.nodes=this.json.nodes||[];let s={mesh:t};return n&&(s.matrix=n),this.json.nodes.push(s),this.json.nodes.length-1}addMesh(e){let{attributes:t,indices:n,material:s,mode:o=4}=e,a={primitives:[{attributes:this._addAttributes(t),mode:o}]};if(n){let c=this._addIndices(n);a.primitives[0].indices=c}return Number.isFinite(s)&&(a.primitives[0].material=s),this.json.meshes=this.json.meshes||[],this.json.meshes.push(a),this.json.meshes.length-1}addPointCloud(e){let n={primitives:[{attributes:this._addAttributes(e),mode:0}]};return this.json.meshes=this.json.meshes||[],this.json.meshes.push(n),this.json.meshes.length-1}addImage(e,t){let n=J(e),s=t||n?.mimeType,i={bufferView:this.addBufferView(e),mimeType:s};return this.json.images=this.json.images||[],this.json.images.push(i),this.json.images.length-1}addBufferView(e,t=0,n=this.byteLength){let s=e.byteLength;p(Number.isFinite(s)),this.sourceBuffers=this.sourceBuffers||[],this.sourceBuffers.push(e);let o={buffer:t,byteOffset:n,byteLength:s};return this.byteLength+=_(s,4),this.json.bufferViews=this.json.bufferViews||[],this.json.bufferViews.push(o),this.json.bufferViews.length-1}addAccessor(e,t){let n={bufferView:e,type:ge(t.size),componentType:t.componentType,count:t.count,max:t.max,min:t.min};return this.json.accessors=this.json.accessors||[],this.json.accessors.push(n),this.json.accessors.length-1}addBinaryBuffer(e,t={size:3}){let n=this.addBufferView(e),s={min:t.min,max:t.max};(!s.min||!s.max)&&(s=this._getAccessorMinMax(e,t.size));let o={size:t.size,componentType:X(e),count:Math.round(e.length/t.size),min:s.min,max:s.max};return this.addAccessor(n,Object.assign(o,t))}addTexture(e){let{imageIndex:t}=e,n={source:t};return this.json.textures=this.json.textures||[],this.json.textures.push(n),this.json.textures.length-1}addMaterial(e){return this.json.materials=this.json.materials||[],this.json.materials.push(e),this.json.materials.length-1}createBinaryChunk(){this.gltf.buffers=[];let e=this.byteLength,t=new ArrayBuffer(e),n=new Uint8Array(t),s=0;for(let o of this.sourceBuffers||[])s=ke(o,n,s);this.json?.buffers?.[0]?this.json.buffers[0].byteLength=e:this.json.buffers=[{byteLength:e}],this.gltf.binary=t,this.sourceBuffers=[t]}_removeStringFromArray(e,t){let n=!0;for(;n;){let s=e.indexOf(t);s>-1?e.splice(s,1):n=!1}}_addAttributes(e={}){let t={};for(let n in e){let s=e[n],o=this._getGltfAttributeName(n),i=this.addBinaryBuffer(s.value,s);t[o]=i}return t}_addIndices(e){return this.addBinaryBuffer(e,{size:1})}_getGltfAttributeName(e){switch(e.toLowerCase()){case"position":case"positions":case"vertices":return"POSITION";case"normal":case"normals":return"NORMAL";case"color":case"colors":return"COLOR_0";case"texcoord":case"texcoords":return"TEXCOORD_0";default:return e}}_getAccessorMinMax(e,t){let n={min:null,max:null};if(e.length<t)return n;n.min=[],n.max=[];let s=e.subarray(0,t);for(let o of s)n.min.push(o),n.max.push(o);for(let o=t;o<e.length;o+=t)for(let i=0;i<t;i++)n.min[0+i]=Math.min(n.min[0+i],e[o+i]),n.max[0+i]=Math.max(n.max[0+i],e[o+i]);return n}};function lr(r){return(r%1+1)%1}var mr={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16,BOOLEAN:1,STRING:1,ENUM:1},Rs={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:BigInt64Array,UINT64:BigUint64Array,FLOAT32:Float32Array,FLOAT64:Float64Array},dr={INT8:1,UINT8:1,INT16:2,UINT16:2,INT32:4,UINT32:4,INT64:8,UINT64:8,FLOAT32:4,FLOAT64:8};function oe(r,e){return dr[e]*mr[r]}function Q(r,e,t,n){if(t!=="UINT8"&&t!=="UINT16"&&t!=="UINT32"&&t!=="UINT64")return null;let s=r.getTypedArrayForBufferView(e),o=k(s,"SCALAR",t,n+1);return o instanceof BigInt64Array||o instanceof BigUint64Array?null:o}function k(r,e,t,n=1){let s=mr[e],o=Rs[t],i=dr[t],a=n*s,c=a*i,A=r.buffer,f=r.byteOffset;return f%i!==0&&(A=new Uint8Array(A).slice(f,f+c).buffer,f=0),new o(A,f,a)}function V(r,e,t){let n=`TEXCOORD_${e.texCoord||0}`,s=t.attributes[n],o=r.getTypedArrayForAccessor(s),i=r.gltf.json,a=e.index,c=i.textures?.[a]?.source;if(typeof c<"u"){let A=i.images?.[c]?.mimeType,f=r.gltf.images?.[c];if(f&&typeof f.width<"u"){let u=[];for(let B=0;B<o.length;B+=2){let l=Ds(f,A,o,B,e.channels);u.push(l)}return u}}return[]}function xe(r,e,t,n,s){if(!t?.length)return;let o=[];for(let f of t){let u=n.findIndex(B=>B===f);u===-1&&(u=n.push(f)-1),o.push(u)}let i=new Uint32Array(o),a=r.gltf.buffers.push({arrayBuffer:i.buffer,byteOffset:i.byteOffset,byteLength:i.byteLength})-1,c=r.addBufferView(i,a,0),A=r.addAccessor(c,{size:1,componentType:X(i),count:i.length});s.attributes[e]=A}function Ds(r,e,t,n,s=[0]){let o={r:{offset:0,shift:0},g:{offset:1,shift:8},b:{offset:2,shift:16},a:{offset:3,shift:24}},i=t[n],a=t[n+1],c=1;e&&(e.indexOf("image/jpeg")!==-1||e.indexOf("image/png")!==-1)&&(c=4);let A=_s(i,a,r,c),f=0;for(let u of s){let B=typeof u=="number"?Object.values(o)[u]:o[u],l=A+B.offset,d=re(r);if(d.data.length<=l)throw new Error(`${d.data.length} <= ${l}`);let h=d.data[l];f|=h<<B.shift}return f}function _s(r,e,t,n=1){let s=t.width,o=lr(r)*(s-1),i=Math.round(o),a=t.height,c=lr(e)*(a-1),A=Math.round(c),f=t.components?t.components:n;return(A*s+i)*f}function Te(r,e,t,n,s){let o=[];for(let i=0;i<e;i++){let a=t[i],c=t[i+1]-t[i];if(c+a>n)break;let A=a/s,f=c/s;o.push(r.slice(A,A+f))}return o}function Me(r,e,t){let n=[];for(let s=0;s<e;s++){let o=s*t;n.push(r.slice(o,o+t))}return n}function ye(r,e,t,n){if(t)throw new Error("Not implemented - arrayOffsets for strings is specified");if(n){let s=[],o=new TextDecoder("utf8"),i=0;for(let a=0;a<r;a++){let c=n[a+1]-n[a];if(c+i<=e.length){let A=e.subarray(i,c+i),f=o.decode(A);s.push(f),i+=c}}return s}return[]}var hr="EXT_mesh_features",tt=hr;async function Gs(r,e){let t=new m(r);Ss(t,e)}function Ss(r,e){let t=r.gltf.json;if(t.meshes)for(let n of t.meshes)for(let s of n.primitives)Os(r,s,e)}function Os(r,e,t){if(!t?.gltf?.loadBuffers)return;let s=e.extensions?.[hr]?.featureIds;if(s)for(let o of s){let i;if(typeof o.attribute<"u"){let a=`_FEATURE_ID_${o.attribute}`,c=e.attributes[a];i=r.getTypedArrayForAccessor(c)}else typeof o.texture<"u"&&t?.gltf?.loadImages?i=V(r,o.texture,e):i=[];o.data=i}}var it={};M(it,{decode:()=>Us,name:()=>st});var nt="EXT_structural_metadata",st=nt;async function Us(r,e){let t=new m(r);Ls(t,e)}function Ls(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(nt);t&&(e.gltf?.loadImages&&ws(r,t),Js(r,t))}function ws(r,e){let t=e.propertyTextures,n=r.gltf.json;if(t&&n.meshes)for(let s of n.meshes)for(let o of s.primitives)Ps(r,t,o,e)}function Js(r,e){let t=e.schema;if(!t)return;let n=t.classes,s=e.propertyTables;if(n&&s)for(let o in n){let i=Hs(s,o);i&&Ks(r,t,i)}}function Hs(r,e){for(let t of r)if(t.class===e)return t;return null}function Ps(r,e,t,n){if(!e)return;let o=t.extensions?.[nt]?.propertyTextures;if(o)for(let i of o){let a=e[i];Ns(r,a,t,n)}}function Ns(r,e,t,n){if(!e.properties)return;n.dataAttributeNames||(n.dataAttributeNames=[]);let s=e.class;for(let o in e.properties){let i=`${s}_${o}`,a=e.properties?.[o];if(!a)continue;a.data||(a.data=[]);let c=a.data,A=V(r,a,t);A!==null&&(xe(r,i,A,c,t),a.data=c,n.dataAttributeNames.push(i))}}function Ks(r,e,t){let n=e.classes?.[t.class];if(!n)throw new Error(`Incorrect data in the EXT_structural_metadata extension: no schema class with name ${t.class}`);let s=t.count;for(let o in n.properties){let i=n.properties[o],a=t.properties?.[o];if(a){let c=vs(r,e,i,s,a);a.data=c}}}function vs(r,e,t,n,s){let o=[],i=s.values,a=r.getTypedArrayForBufferView(i),c=Xs(r,t,s,n),A=js(r,s,n);switch(t.type){case"SCALAR":case"VEC2":case"VEC3":case"VEC4":case"MAT2":case"MAT3":case"MAT4":{o=Qs(t,n,a,c);break}case"BOOLEAN":throw new Error(`Not implemented - classProperty.type=${t.type}`);case"STRING":{o=ye(n,a,c,A);break}case"ENUM":{o=ks(e,t,n,a,c);break}default:throw new Error(`Unknown classProperty type ${t.type}`)}return o}function Xs(r,e,t,n){return e.array&&typeof e.count>"u"&&typeof t.arrayOffsets<"u"?Q(r,t.arrayOffsets,t.arrayOffsetType||"UINT32",n):null}function js(r,e,t){return typeof e.stringOffsets<"u"?Q(r,e.stringOffsets,e.stringOffsetType||"UINT32",t):null}function Qs(r,e,t,n){let s=r.array,o=r.count,i=oe(r.type,r.componentType),a=t.byteLength/i,c;return r.componentType?c=k(t,r.type,r.componentType,a):c=t,s?n?Te(c,e,n,t.length,i):o?Me(c,e,o):[]:c}function ks(r,e,t,n,s){let o=e.enumType;if(!o)throw new Error("Incorrect data in the EXT_structural_metadata extension: classProperty.enumType is not set for type ENUM");let i=r.enums?.[o];if(!i)throw new Error(`Incorrect data in the EXT_structural_metadata extension: schema.enums does't contain ${o}`);let a=i.valueType||"UINT16",c=oe(e.type,a),A=n.byteLength/c,f=k(n,e.type,a,A);if(f||(f=n),e.array){if(s)return Vs({valuesData:f,numberOfElements:t,arrayOffsets:s,valuesDataBytesLength:n.length,elementSize:c,enumEntry:i});let u=e.count;return u?Ys(f,t,u,i):[]}return ot(f,0,t,i)}function Vs(r){let{valuesData:e,numberOfElements:t,arrayOffsets:n,valuesDataBytesLength:s,elementSize:o,enumEntry:i}=r,a=[];for(let c=0;c<t;c++){let A=n[c],f=n[c+1]-n[c];if(f+A>s)break;let u=A/o,B=f/o,l=ot(e,u,B,i);a.push(l)}return a}function Ys(r,e,t,n){let s=[];for(let o=0;o<e;o++){let i=t*o,a=ot(r,i,t,n);s.push(a)}return s}function ot(r,e,t,n){let s=[];for(let o=0;o<t;o++)if(r instanceof BigInt64Array||r instanceof BigUint64Array)s.push("");else{let i=r[e+o],a=Ws(n,i);a?s.push(a.name):s.push("")}return s}function Ws(r,e){for(let t of r.values)if(t.value===e)return t;return null}var ct={};M(ct,{decode:()=>Zs,name:()=>at});var pr="EXT_feature_metadata",at=pr;async function Zs(r,e){let t=new m(r);qs(t,e)}function qs(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(pr);t&&(e.gltf?.loadImages&&zs(r,t),$s(r,t))}function zs(r,e){let t=e.schema;if(!t)return;let n=t.classes,{featureTextures:s}=e;if(n&&s)for(let o in n){let i=n[o],a=to(s,o);a&&no(r,a,i)}}function $s(r,e){let t=e.schema;if(!t)return;let n=t.classes,s=e.featureTables;if(n&&s)for(let o in n){let i=eo(s,o);i&&ro(r,t,i)}}function eo(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function to(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function ro(r,e,t){if(!t.class)return;let n=e.classes?.[t.class];if(!n)throw new Error(`Incorrect data in the EXT_structural_metadata extension: no schema class with name ${t.class}`);let s=t.count;for(let o in n.properties){let i=n.properties[o],a=t.properties?.[o];if(a){let c=so(r,e,i,s,a);a.data=c}}}function no(r,e,t){let n=e.class;for(let s in t.properties){let o=e?.properties?.[s];if(o){let i=Ao(r,o,n);o.data=i}}}function so(r,e,t,n,s){let o=[],i=s.bufferView,a=r.getTypedArrayForBufferView(i),c=oo(r,t,s,n),A=io(r,t,s,n);return t.type==="STRING"||t.componentType==="STRING"?o=ye(n,a,c,A):ao(t)&&(o=co(t,n,a,c)),o}function oo(r,e,t,n){return e.type==="ARRAY"&&typeof e.componentCount>"u"&&typeof t.arrayOffsetBufferView<"u"?Q(r,t.arrayOffsetBufferView,t.offsetType||"UINT32",n):null}function io(r,e,t,n){return typeof t.stringOffsetBufferView<"u"?Q(r,t.stringOffsetBufferView,t.offsetType||"UINT32",n):null}function ao(r){let e=["UINT8","INT16","UINT16","INT32","UINT32","INT64","UINT64","FLOAT32","FLOAT64"];return e.includes(r.type)||typeof r.componentType<"u"&&e.includes(r.componentType)}function co(r,e,t,n){let s=r.type==="ARRAY",o=r.componentCount,i="SCALAR",a=r.componentType||r.type,c=oe(i,a),A=t.byteLength/c,f=k(t,i,a,A);return s?n?Te(f,e,n,t.length,c):o?Me(f,e,o):[]:f}function Ao(r,e,t){let n=r.gltf.json;if(!n.meshes)return[];let s=[];for(let o of n.meshes)for(let i of o.primitives)fo(r,t,e,s,i);return s}function fo(r,e,t,n,s){let o={channels:t.channels,...t.texture},i=V(r,o,s);i&&xe(r,e,i,n,s)}var L="4.2.0-alpha.6";var Cr="4.2.0-alpha.6";var Fe={TRANSCODER:"basis_transcoder.js",TRANSCODER_WASM:"basis_transcoder.wasm",ENCODER:"basis_encoder.js",ENCODER_WASM:"basis_encoder.wasm"},Er;async function ft(r){ve(r.modules);let e=Xe("basis");return e||(Er||=uo(r),await Er)}async function uo(r){let e=null,t=null;return[e,t]=await Promise.all([await D(Fe.TRANSCODER,"textures",r),await D(Fe.TRANSCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await Bo(e,t)}function Bo(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r(t).then(s=>{let{BasisFile:o,initializeBasis:i}=s;i(),n({BasisFile:o})})})}var At;async function ut(r){let e=r.modules||{};return e.basisEncoder?e.basisEncoder:(At=At||lo(r),await At)}async function lo(r){let e=null,t=null;return[e,t]=await Promise.all([await D(Fe.ENCODER,"textures",r),await D(Fe.ENCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await mo(e,t)}function mo(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r(t).then(s=>{let{BasisFile:o,KTX2File:i,initializeBasis:a,BasisEncoder:c}=s;a(),n({BasisFile:o,KTX2File:i,BasisEncoder:c})})})}var H={COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_RGBA8_ETC2_EAC:37493,COMPRESSED_SRGB8_ETC2:37494,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37495,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37496,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37497,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGB_ETC1_WEBGL:36196,COMPRESSED_RGB_ATC_WEBGL:35986,COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL:35987,COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL:34798,COMPRESSED_RGBA_ASTC_4X4_KHR:37808,COMPRESSED_RGBA_ASTC_5X4_KHR:37809,COMPRESSED_RGBA_ASTC_5X5_KHR:37810,COMPRESSED_RGBA_ASTC_6X5_KHR:37811,COMPRESSED_RGBA_ASTC_6X6_KHR:37812,COMPRESSED_RGBA_ASTC_8X5_KHR:37813,COMPRESSED_RGBA_ASTC_8X6_KHR:37814,COMPRESSED_RGBA_ASTC_8X8_KHR:37815,COMPRESSED_RGBA_ASTC_10X5_KHR:37816,COMPRESSED_RGBA_ASTC_10X6_KHR:37817,COMPRESSED_RGBA_ASTC_10X8_KHR:37818,COMPRESSED_RGBA_ASTC_10X10_KHR:37819,COMPRESSED_RGBA_ASTC_12X10_KHR:37820,COMPRESSED_RGBA_ASTC_12X12_KHR:37821,COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR:37840,COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR:37841,COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR:37842,COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR:37843,COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR:37844,COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR:37845,COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR:37846,COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR:37847,COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR:37848,COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR:37849,COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR:37850,COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR:37851,COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR:37852,COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR:37853,COMPRESSED_RED_RGTC1_EXT:36283,COMPRESSED_SIGNED_RED_RGTC1_EXT:36284,COMPRESSED_RED_GREEN_RGTC2_EXT:36285,COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT:36286,COMPRESSED_SRGB_S3TC_DXT1_EXT:35916,COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:35917,COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:35918,COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:35919};var ho=["","WEBKIT_","MOZ_"],gr={WEBGL_compressed_texture_s3tc:"dxt",WEBGL_compressed_texture_s3tc_srgb:"dxt-srgb",WEBGL_compressed_texture_etc1:"etc1",WEBGL_compressed_texture_etc:"etc2",WEBGL_compressed_texture_pvrtc:"pvrtc",WEBGL_compressed_texture_atc:"atc",WEBGL_compressed_texture_astc:"astc",EXT_texture_compression_rgtc:"rgtc"},be=null;function xr(r){if(!be){r=r||po()||void 0,be=new Set;for(let e of ho)for(let t in gr)if(r&&r.getExtension(`${e}${t}`)){let n=gr[t];be.add(n)}}return be}function po(){try{return document.createElement("canvas").getContext("webgl")}catch{return null}}var yA=new Uint8Array([0]);var Tr,Mr,yr,Fr,br,Ir,Rr,Dr;(function(r){r[r.NONE=0]="NONE",r[r.BASISLZ=1]="BASISLZ",r[r.ZSTD=2]="ZSTD",r[r.ZLIB=3]="ZLIB"})(Tr||(Tr={})),function(r){r[r.BASICFORMAT=0]="BASICFORMAT"}(Mr||(Mr={})),function(r){r[r.UNSPECIFIED=0]="UNSPECIFIED",r[r.ETC1S=163]="ETC1S",r[r.UASTC=166]="UASTC"}(yr||(yr={})),function(r){r[r.UNSPECIFIED=0]="UNSPECIFIED",r[r.SRGB=1]="SRGB"}(Fr||(Fr={})),function(r){r[r.UNSPECIFIED=0]="UNSPECIFIED",r[r.LINEAR=1]="LINEAR",r[r.SRGB=2]="SRGB",r[r.ITU=3]="ITU",r[r.NTSC=4]="NTSC",r[r.SLOG=5]="SLOG",r[r.SLOG2=6]="SLOG2"}(br||(br={})),function(r){r[r.ALPHA_STRAIGHT=0]="ALPHA_STRAIGHT",r[r.ALPHA_PREMULTIPLIED=1]="ALPHA_PREMULTIPLIED"}(Ir||(Ir={})),function(r){r[r.RGB=0]="RGB",r[r.RRR=3]="RRR",r[r.GGG=4]="GGG",r[r.AAA=15]="AAA"}(Rr||(Rr={})),function(r){r[r.RGB=0]="RGB",r[r.RGBA=3]="RGBA",r[r.RRR=4]="RRR",r[r.RRRG=5]="RRRG"}(Dr||(Dr={}));var T=[171,75,84,88,32,50,48,187,13,10,26,10];function _r(r){let e=new Uint8Array(r);return!(e.byteLength<T.length||e[0]!==T[0]||e[1]!==T[1]||e[2]!==T[2]||e[3]!==T[3]||e[4]!==T[4]||e[5]!==T[5]||e[6]!==T[6]||e[7]!==T[7]||e[8]!==T[8]||e[9]!==T[9]||e[10]!==T[10]||e[11]!==T[11])}var Co={etc1:{basisFormat:0,compressed:!0,format:H.COMPRESSED_RGB_ETC1_WEBGL},etc2:{basisFormat:1,compressed:!0},bc1:{basisFormat:2,compressed:!0,format:H.COMPRESSED_RGB_S3TC_DXT1_EXT},bc3:{basisFormat:3,compressed:!0,format:H.COMPRESSED_RGBA_S3TC_DXT5_EXT},bc4:{basisFormat:4,compressed:!0},bc5:{basisFormat:5,compressed:!0},"bc7-m6-opaque-only":{basisFormat:6,compressed:!0},"bc7-m5":{basisFormat:7,compressed:!0},"pvrtc1-4-rgb":{basisFormat:8,compressed:!0,format:H.COMPRESSED_RGB_PVRTC_4BPPV1_IMG},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:H.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG},"astc-4x4":{basisFormat:10,compressed:!0,format:H.COMPRESSED_RGBA_ASTC_4X4_KHR},"atc-rgb":{basisFormat:11,compressed:!0},"atc-rgba-interpolated-alpha":{basisFormat:12,compressed:!0},rgba32:{basisFormat:13,compressed:!1},rgb565:{basisFormat:14,compressed:!1},bgr565:{basisFormat:15,compressed:!1},rgba4444:{basisFormat:16,compressed:!1}};async function lt(r,e){if(e.basis.containerFormat==="auto"){if(_r(r)){let n=await ut(e);return Gr(n.KTX2File,r,e)}let{BasisFile:t}=await ft(e);return Bt(t,r,e)}switch(e.basis.module){case"encoder":let t=await ut(e);switch(e.basis.containerFormat){case"ktx2":return Gr(t.KTX2File,r,e);case"basis":default:return Bt(t.BasisFile,r,e)}case"transcoder":default:let{BasisFile:n}=await ft(e);return Bt(n,r,e)}}function Bt(r,e,t){let n=new r(new Uint8Array(e));try{if(!n.startTranscoding())throw new Error("Failed to start basis transcoding");let s=n.getNumImages(),o=[];for(let i=0;i<s;i++){let a=n.getNumLevels(i),c=[];for(let A=0;A<a;A++)c.push(Eo(n,i,A,t));o.push(c)}return o}finally{n.close(),n.delete()}}function Eo(r,e,t,n){let s=r.getImageWidth(e,t),o=r.getImageHeight(e,t),i=r.getHasAlpha(),{compressed:a,format:c,basisFormat:A}=Sr(n,i),f=r.getImageTranscodedSizeInBytes(e,t,A),u=new Uint8Array(f);if(!r.transcodeImage(u,e,t,A,0,0))throw new Error("failed to start Basis transcoding");return{width:s,height:o,data:u,compressed:a,format:c,hasAlpha:i}}function Gr(r,e,t){let n=new r(new Uint8Array(e));try{if(!n.startTranscoding())throw new Error("failed to start KTX2 transcoding");let s=n.getLevels(),o=[];for(let i=0;i<s;i++){o.push(go(n,i,t));break}return[o]}finally{n.close(),n.delete()}}function go(r,e,t){let{alphaFlag:n,height:s,width:o}=r.getImageLevelInfo(e,0,0),{compressed:i,format:a,basisFormat:c}=Sr(t,n),A=r.getImageTranscodedSizeInBytes(e,0,0,c),f=new Uint8Array(A);if(!r.transcodeImage(f,e,0,0,c,0,-1,-1))throw new Error("Failed to transcode KTX2 image");return{width:o,height:s,data:f,compressed:i,levelSize:A,hasAlpha:n,format:a}}function Sr(r,e){let t=r&&r.basis&&r.basis.format;return t==="auto"&&(t=Ie()),typeof t=="object"&&(t=e?t.alpha:t.noAlpha),t=t.toLowerCase(),Co[t]}function Ie(){let r=xr();return r.has("astc")?"astc-4x4":r.has("dxt")?{alpha:"bc3",noAlpha:"bc1"}:r.has("pvrtc")?{alpha:"pvrtc1-4-rgba",noAlpha:"pvrtc1-4-rgb"}:r.has("etc1")?"etc1":r.has("etc2")?"etc2":"rgb565"}var Or={dataType:null,batchType:null,name:"Basis",id:"basis",module:"textures",version:Cr,worker:!0,extensions:["basis","ktx2"],mimeTypes:["application/octet-stream","image/ktx2"],tests:["sB"],binary:!0,options:{basis:{format:"auto",libraryPath:"libs/",containerFormat:"auto",module:"transcoder"}}},mt={...Or,parse:lt};var Y=!0,Ur=1735152710,pt=12,Re=8,xo=1313821514,To=5130562,Mo=0,yo=0,Fo=1;function bo(r,e=0){return`${String.fromCharCode(r.getUint8(e+0))}${String.fromCharCode(r.getUint8(e+1))}${String.fromCharCode(r.getUint8(e+2))}${String.fromCharCode(r.getUint8(e+3))}`}function Lr(r,e=0,t={}){let n=new DataView(r),{magic:s=Ur}=t,o=n.getUint32(e,!1);return o===s||o===Ur}function De(r,e,t=0,n={}){let s=new DataView(e),o=bo(s,t+0),i=s.getUint32(t+4,Y),a=s.getUint32(t+8,Y);switch(Object.assign(r,{header:{byteOffset:t,byteLength:a,hasBinChunk:!1},type:o,version:i,json:{},binChunks:[]}),t+=pt,r.version){case 1:return Io(r,s,t);case 2:return Ro(r,s,t,n={});default:throw new Error(`Invalid GLB version ${r.version}. Only supports version 1 and 2.`)}}function Io(r,e,t){y(r.header.byteLength>pt+Re);let n=e.getUint32(t+0,Y),s=e.getUint32(t+4,Y);return t+=Re,y(s===Mo),dt(r,e,t,n),t+=n,t+=ht(r,e,t,r.header.byteLength),t}function Ro(r,e,t,n){return y(r.header.byteLength>pt+Re),Do(r,e,t,n),t+r.header.byteLength}function Do(r,e,t,n){for(;t+8<=r.header.byteLength;){let s=e.getUint32(t+0,Y),o=e.getUint32(t+4,Y);switch(t+=Re,o){case xo:dt(r,e,t,s);break;case To:ht(r,e,t,s);break;case yo:n.strict||dt(r,e,t,s);break;case Fo:n.strict||ht(r,e,t,s);break;default:break}t+=_(s,4)}return t}function dt(r,e,t,n){let s=new Uint8Array(e.buffer,t,n),i=new TextDecoder("utf8").decode(s);return r.json=JSON.parse(i),_(n,4)}function ht(r,e,t,n){return r.header.hasBinChunk=!0,r.binChunks.push({byteOffset:t,byteLength:n,arrayBuffer:e.buffer}),_(n,4)}function Ct(r,e){if(r.startsWith("data:")||r.startsWith("http:")||r.startsWith("https:"))return r;let n=e.baseUri||e.uri;if(!n)throw new Error(`'baseUri' must be provided to resolve relative url ${r}`);return n.substr(0,n.lastIndexOf("/")+1)+r}var gt={};M(gt,{decode:()=>Ko,name:()=>No});var _o="B9h9z9tFBBBF8fL9gBB9gLaaaaaFa9gEaaaB9gFaFa9gEaaaFaEMcBFFFGGGEIIILF9wFFFLEFBFKNFaFCx/IFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBF8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBGy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBEn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBIi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBKI9z9iqlBOc+x8ycGBM/qQFTa8jUUUUBCU/EBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAGTkUUUBRNCUoBAG9uC/wgBZHKCUGAKCUG9JyRVAECFJRICBRcGXEXAcAF9PQFAVAFAclAcAVJAF9JyRMGXGXAG9FQBAMCbJHKC9wZRSAKCIrCEJCGrRQANCUGJRfCBRbAIRTEXGXAOATlAQ9PQBCBRISEMATAQJRIGXAS9FQBCBRtCBREEXGXAOAIlCi9PQBCBRISLMANCU/CBJAEJRKGXGXGXGXGXATAECKrJ2BBAtCKZrCEZfIBFGEBMAKhB83EBAKCNJhB83EBSEMAKAI2BIAI2BBHmCKrHYAYCE6HYy86BBAKCFJAICIJAYJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCGJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCEJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCIJAYAmJHY2BBAI2BFHmCKrHPAPCE6HPy86BBAKCLJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCKJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCOJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCNJAYAmJHY2BBAI2BGHmCKrHPAPCE6HPy86BBAKCVJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCcJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCMJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCSJAYAmJHm2BBAI2BEHICKrHYAYCE6HYy86BBAKCQJAmAYJHm2BBAICIrCEZHYAYCE6HYy86BBAKCfJAmAYJHm2BBAICGrCEZHYAYCE6HYy86BBAKCbJAmAYJHK2BBAICEZHIAICE6HIy86BBAKAIJRISGMAKAI2BNAI2BBHmCIrHYAYCb6HYy86BBAKCFJAICNJAYJHY2BBAmCbZHmAmCb6Hmy86BBAKCGJAYAmJHm2BBAI2BFHYCIrHPAPCb6HPy86BBAKCEJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCIJAmAYJHm2BBAI2BGHYCIrHPAPCb6HPy86BBAKCLJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCKJAmAYJHm2BBAI2BEHYCIrHPAPCb6HPy86BBAKCOJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCNJAmAYJHm2BBAI2BIHYCIrHPAPCb6HPy86BBAKCVJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCcJAmAYJHm2BBAI2BLHYCIrHPAPCb6HPy86BBAKCMJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCSJAmAYJHm2BBAI2BKHYCIrHPAPCb6HPy86BBAKCQJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCfJAmAYJHm2BBAI2BOHICIrHYAYCb6HYy86BBAKCbJAmAYJHK2BBAICbZHIAICb6HIy86BBAKAIJRISFMAKAI8pBB83BBAKCNJAICNJ8pBB83BBAICTJRIMAtCGJRtAECTJHEAS9JQBMMGXAIQBCBRISEMGXAM9FQBANAbJ2BBRtCBRKAfREEXAEANCU/CBJAKJ2BBHTCFrCBATCFZl9zAtJHt86BBAEAGJREAKCFJHKAM9HQBMMAfCFJRfAIRTAbCFJHbAG9HQBMMABAcAG9sJANCUGJAMAG9sTkUUUBpANANCUGJAMCaJAG9sJAGTkUUUBpMAMCBAIyAcJRcAIQBMC9+RKSFMCBC99AOAIlAGCAAGCA9Ly6yRKMALCU/EBJ8kUUUUBAKM+OmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUFT+JUUUBpALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM+lLKFaF99GaG99FaG99GXGXAGCI9HQBAF9FQFEXGXGX9DBBB8/9DBBB+/ABCGJHG1BB+yAB1BBHE+yHI+L+TABCFJHL1BBHK+yHO+L+THN9DBBBB9gHVyAN9DBB/+hANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE86BBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG86BBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG86BBABCIJRBAFCaJHFQBSGMMAF9FQBEXGXGX9DBBB8/9DBBB+/ABCIJHG8uFB+yAB8uFBHE+yHI+L+TABCGJHL8uFBHK+yHO+L+THN9DBBBB9gHVyAN9DB/+g6ANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE87FBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG87FBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG87FBABCNJRBAFCaJHFQBMMM/SEIEaE99EaF99GXAF9FQBCBREABRIEXGXGX9D/zI818/AICKJ8uFBHLCEq+y+VHKAI8uFB+y+UHO9DB/+g6+U9DBBB8/9DBBB+/AO9DBBBB9gy+SHN+L9DBBB9P9d9FQBAN+oRVSFMCUUUU94RVMAICIJ8uFBRcAICGJ8uFBRMABALCFJCEZAEqCFWJAV87FBGXGXAKAM+y+UHN9DB/+g6+U9DBBB8/9DBBB+/AN9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRMSFMCUUUU94RMMABALCGJCEZAEqCFWJAM87FBGXGXAKAc+y+UHK9DB/+g6+U9DBBB8/9DBBB+/AK9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRcSFMCUUUU94RcMABALCaJCEZAEqCFWJAc87FBGXGX9DBBU8/AOAO+U+TANAN+U+TAKAK+U+THO9DBBBBAO9DBBBB9gy+R9DB/+g6+U9DBBB8/+SHO+L9DBBB9P9d9FQBAO+oRcSFMCUUUU94RcMABALCEZAEqCFWJAc87FBAICNJRIAECIJREAFCaJHFQBMMM9JBGXAGCGrAF9sHF9FQBEXABAB8oGBHGCNWCN91+yAGCi91CnWCUUU/8EJ+++U84GBABCIJRBAFCaJHFQBMMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEM/lFFFaGXGXAFABqCEZ9FQBABRESFMGXGXAGCT9PQBABRESFMABREEXAEAF8oGBjGBAECIJAFCIJ8oGBjGBAECNJAFCNJ8oGBjGBAECSJAFCSJ8oGBjGBAECTJREAFCTJRFAGC9wJHGCb9LQBMMAGCI9JQBEXAEAF8oGBjGBAFCIJRFAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF2BB86BBAECFJREAFCFJRFAGCaJHGQBMMABMoFFGaGXGXABCEZ9FQBABRESFMAFCgFZC+BwsN9sRIGXGXAGCT9PQBABRESFMABREEXAEAIjGBAECSJAIjGBAECNJAIjGBAECIJAIjGBAECTJREAGC9wJHGCb9LQBMMAGCI9JQBEXAEAIjGBAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF86BBAECFJREAGCaJHGQBMMABMMMFBCUNMIT9kBB",Go="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",So=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]),Oo=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]),Uo={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},Lo={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};async function wr(r,e,t,n,s,o="NONE"){let i=await wo();Po(i,i.exports[Lo[s]],r,e,t,n,i.exports[Uo[o||"NONE"]])}var Et;async function wo(){return Et||(Et=Jo()),Et}async function Jo(){let r=_o;WebAssembly.validate(So)&&(r=Go,console.log("Warning: meshopt_decoder is using experimental SIMD support"));let e=await WebAssembly.instantiate(Ho(r),{});return await e.instance.exports.__wasm_call_ctors(),e.instance}function Ho(r){let e=new Uint8Array(r.length);for(let n=0;n<r.length;++n){let s=r.charCodeAt(n);e[n]=s>96?s-71:s>64?s-65:s>47?s+4:s>46?63:62}let t=0;for(let n=0;n<r.length;++n)e[t++]=e[n]<60?Oo[e[n]]:(e[n]-60)*64+e[++n];return e.buffer.slice(0,t)}function Po(r,e,t,n,s,o,i){let a=r.exports.sbrk,c=n+3&-4,A=a(c*s),f=a(o.length),u=new Uint8Array(r.exports.memory.buffer);u.set(o,f);let B=e(A,n,s,f,o.length);if(B===0&&i&&i(A,c,s),t.set(u.subarray(A,A+n*s)),a(A-a(0)),B!==0)throw new Error(`Malformed buffer data: ${B}`)}var _e="EXT_meshopt_compression",No=_e;async function Ko(r,e){let t=new m(r);if(!e?.gltf?.decompressMeshes||!e.gltf?.loadBuffers)return;let n=[];for(let s of r.json.bufferViews||[])n.push(vo(t,s));await Promise.all(n),t.removeExtension(_e)}async function vo(r,e){let t=r.getObjectExtension(e,_e);if(t){let{byteOffset:n=0,byteLength:s=0,byteStride:o,count:i,mode:a,filter:c="NONE",buffer:A}=t,f=r.gltf.buffers[A],u=new Uint8Array(f.arrayBuffer,f.byteOffset+n,s),B=new Uint8Array(r.gltf.buffers[e.buffer].arrayBuffer,e.byteOffset,e.byteLength);await wr(B,i,o,u,a,c),r.removeObjectExtension(e,_e)}}var xt={};M(xt,{name:()=>Xo,preprocess:()=>jo});var W="EXT_texture_webp",Xo=W;function jo(r,e){let t=new m(r);if(!et("image/webp")){if(t.getRequiredExtensions().includes(W))throw new Error(`gltf: Required extension ${W} not supported by browser`);return}let{json:n}=t;for(let s of n.textures||[]){let o=t.getObjectExtension(s,W);o&&(s.source=o.source),t.removeObjectExtension(s,W)}t.removeExtension(W)}var Tt={};M(Tt,{name:()=>Qo,preprocess:()=>ko});var Ge="KHR_texture_basisu",Qo=Ge;function ko(r,e){let t=new m(r),{json:n}=t;for(let s of n.textures||[]){let o=t.getObjectExtension(s,Ge);o&&(s.source=o.source,t.removeObjectExtension(s,Ge))}t.removeExtension(Ge)}var Dt={};M(Dt,{decode:()=>ci,encode:()=>Ai,name:()=>ii,preprocess:()=>ai});var Jr="4.2.0-alpha.6";var Hr={dataType:null,batchType:null,name:"Draco",id:"draco",module:"draco",version:Jr,worker:!0,extensions:["drc"],mimeTypes:["application/octet-stream"],binary:!0,tests:["DRACO"],options:{draco:{decoderType:typeof WebAssembly=="object"?"wasm":"js",libraryPath:"libs/",extraAttributes:{},attributeNameEntry:void 0}}};function Pr(r){switch(r.constructor){case Int8Array:return"int8";case Uint8Array:case Uint8ClampedArray:return"uint8";case Int16Array:return"int16";case Uint16Array:return"uint16";case Int32Array:return"int32";case Uint32Array:return"uint32";case Float32Array:return"float32";case Float64Array:return"float64";default:return"null"}}function Mt(r){let e=1/0,t=1/0,n=1/0,s=-1/0,o=-1/0,i=-1/0,a=r.POSITION?r.POSITION.value:[],c=a&&a.length;for(let A=0;A<c;A+=3){let f=a[A],u=a[A+1],B=a[A+2];e=f<e?f:e,t=u<t?u:t,n=B<n?B:n,s=f>s?f:s,o=u>o?u:o,i=B>i?B:i}return[[e,t,n],[s,o,i]]}function yt(r,e,t){let n=Pr(e.value),s=t||Nr(e);return{name:r,type:{type:"fixed-size-list",listSize:e.size,children:[{name:"value",type:n}]},nullable:!1,metadata:s}}function Nr(r){let e={};return"byteOffset"in r&&(e.byteOffset=r.byteOffset.toString(10)),"byteStride"in r&&(e.byteStride=r.byteStride.toString(10)),"normalized"in r&&(e.normalized=r.normalized.toString()),e}function vr(r,e,t){let n=Xr(e.metadata),s=[],o=Vo(e.attributes);for(let i in r){let a=r[i],c=Kr(i,a,o[i]);s.push(c)}if(t){let i=Kr("indices",t);s.push(i)}return{fields:s,metadata:n}}function Vo(r){let e={};for(let t in r){let n=r[t];e[n.name||"undefined"]=n}return e}function Kr(r,e,t){let n=t?Xr(t.metadata):void 0;return yt(r,e,n)}function Xr(r){Object.entries(r);let e={};for(let t in r)e[`${t}.string`]=JSON.stringify(r[t]);return e}var jr={POSITION:"POSITION",NORMAL:"NORMAL",COLOR:"COLOR_0",TEX_COORD:"TEXCOORD_0"},Yo={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array},Wo=4,ie=class{draco;decoder;metadataQuerier;constructor(e){this.draco=e,this.decoder=new this.draco.Decoder,this.metadataQuerier=new this.draco.MetadataQuerier}destroy(){this.draco.destroy(this.decoder),this.draco.destroy(this.metadataQuerier)}parseSync(e,t={}){let n=new this.draco.DecoderBuffer;n.Init(new Int8Array(e),e.byteLength),this._disableAttributeTransforms(t);let s=this.decoder.GetEncodedGeometryType(n),o=s===this.draco.TRIANGULAR_MESH?new this.draco.Mesh:new this.draco.PointCloud;try{let i;switch(s){case this.draco.TRIANGULAR_MESH:i=this.decoder.DecodeBufferToMesh(n,o);break;case this.draco.POINT_CLOUD:i=this.decoder.DecodeBufferToPointCloud(n,o);break;default:throw new Error("DRACO: Unknown geometry type.")}if(!i.ok()||!o.ptr){let B=`DRACO decompression failed: ${i.error_msg()}`;throw new Error(B)}let a=this._getDracoLoaderData(o,s,t),c=this._getMeshData(o,a,t),A=Mt(c.attributes),f=vr(c.attributes,a,c.indices);return{loader:"draco",loaderData:a,header:{vertexCount:o.num_points(),boundingBox:A},...c,schema:f}}finally{this.draco.destroy(n),o&&this.draco.destroy(o)}}_getDracoLoaderData(e,t,n){let s=this._getTopLevelMetadata(e),o=this._getDracoAttributes(e,n);return{geometry_type:t,num_attributes:e.num_attributes(),num_points:e.num_points(),num_faces:e instanceof this.draco.Mesh?e.num_faces():0,metadata:s,attributes:o}}_getDracoAttributes(e,t){let n={};for(let s=0;s<e.num_attributes();s++){let o=this.decoder.GetAttribute(e,s),i=this._getAttributeMetadata(e,s);n[o.unique_id()]={unique_id:o.unique_id(),attribute_type:o.attribute_type(),data_type:o.data_type(),num_components:o.num_components(),byte_offset:o.byte_offset(),byte_stride:o.byte_stride(),normalized:o.normalized(),attribute_index:s,metadata:i};let a=this._getQuantizationTransform(o,t);a&&(n[o.unique_id()].quantization_transform=a);let c=this._getOctahedronTransform(o,t);c&&(n[o.unique_id()].octahedron_transform=c)}return n}_getMeshData(e,t,n){let s=this._getMeshAttributes(t,e,n);if(!s.POSITION)throw new Error("DRACO: No position attribute found.");if(e instanceof this.draco.Mesh)switch(n.topology){case"triangle-strip":return{topology:"triangle-strip",mode:4,attributes:s,indices:{value:this._getTriangleStripIndices(e),size:1}};case"triangle-list":default:return{topology:"triangle-list",mode:5,attributes:s,indices:{value:this._getTriangleListIndices(e),size:1}}}return{topology:"point-list",mode:0,attributes:s}}_getMeshAttributes(e,t,n){let s={};for(let o of Object.values(e.attributes)){let i=this._deduceAttributeName(o,n);o.name=i;let a=this._getAttributeValues(t,o);if(a){let{value:c,size:A}=a;s[i]={value:c,size:A,byteOffset:o.byte_offset,byteStride:o.byte_stride,normalized:o.normalized}}}return s}_getTriangleListIndices(e){let n=e.num_faces()*3,s=n*Wo,o=this.draco._malloc(s);try{return this.decoder.GetTrianglesUInt32Array(e,s,o),new Uint32Array(this.draco.HEAPF32.buffer,o,n).slice()}finally{this.draco._free(o)}}_getTriangleStripIndices(e){let t=new this.draco.DracoInt32Array;try{return this.decoder.GetTriangleStripsFromMesh(e,t),zo(t)}finally{this.draco.destroy(t)}}_getAttributeValues(e,t){let n=Yo[t.data_type];if(!n)return console.warn(`DRACO: Unsupported attribute type ${t.data_type}`),null;let s=t.num_components,i=e.num_points()*s,a=i*n.BYTES_PER_ELEMENT,c=Zo(this.draco,n),A,f=this.draco._malloc(a);try{let u=this.decoder.GetAttribute(e,t.attribute_index);this.decoder.GetAttributeDataArrayForAllPoints(e,u,c,a,f),A=new n(this.draco.HEAPF32.buffer,f,i).slice()}finally{this.draco._free(f)}return{value:A,size:s}}_deduceAttributeName(e,t){let n=e.unique_id;for(let[i,a]of Object.entries(t.extraAttributes||{}))if(a===n)return i;let s=e.attribute_type;for(let i in jr)if(this.draco[i]===s)return jr[i];let o=t.attributeNameEntry||"name";return e.metadata[o]?e.metadata[o].string:`CUSTOM_ATTRIBUTE_${n}`}_getTopLevelMetadata(e){let t=this.decoder.GetMetadata(e);return this._getDracoMetadata(t)}_getAttributeMetadata(e,t){let n=this.decoder.GetAttributeMetadata(e,t);return this._getDracoMetadata(n)}_getDracoMetadata(e){if(!e||!e.ptr)return{};let t={},n=this.metadataQuerier.NumEntries(e);for(let s=0;s<n;s++){let o=this.metadataQuerier.GetEntryName(e,s);t[o]=this._getDracoMetadataField(e,o)}return t}_getDracoMetadataField(e,t){let n=new this.draco.DracoInt32Array;try{this.metadataQuerier.GetIntEntryArray(e,t,n);let s=qo(n);return{int:this.metadataQuerier.GetIntEntry(e,t),string:this.metadataQuerier.GetStringEntry(e,t),double:this.metadataQuerier.GetDoubleEntry(e,t),intArray:s}}finally{this.draco.destroy(n)}}_disableAttributeTransforms(e){let{quantizedAttributes:t=[],octahedronAttributes:n=[]}=e,s=[...t,...n];for(let o of s)this.decoder.SkipAttributeTransform(this.draco[o])}_getQuantizationTransform(e,t){let{quantizedAttributes:n=[]}=t,s=e.attribute_type();if(n.map(i=>this.decoder[i]).includes(s)){let i=new this.draco.AttributeQuantizationTransform;try{if(i.InitFromAttribute(e))return{quantization_bits:i.quantization_bits(),range:i.range(),min_values:new Float32Array([1,2,3]).map(a=>i.min_value(a))}}finally{this.draco.destroy(i)}}return null}_getOctahedronTransform(e,t){let{octahedronAttributes:n=[]}=t,s=e.attribute_type();if(n.map(i=>this.decoder[i]).includes(s)){let i=new this.draco.AttributeQuantizationTransform;try{if(i.InitFromAttribute(e))return{quantization_bits:i.quantization_bits()}}finally{this.draco.destroy(i)}}return null}};function Zo(r,e){switch(e){case Float32Array:return r.DT_FLOAT32;case Int8Array:return r.DT_INT8;case Int16Array:return r.DT_INT16;case Int32Array:return r.DT_INT32;case Uint8Array:return r.DT_UINT8;case Uint16Array:return r.DT_UINT16;case Uint32Array:return r.DT_UINT32;default:return r.DT_INVALID}}function qo(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}function zo(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}var $o="1.5.6",ei="1.4.1",Ft=`https://www.gstatic.com/draco/versioned/decoders/${$o}`,x={DECODER:"draco_wasm_wrapper.js",DECODER_WASM:"draco_decoder.wasm",FALLBACK_DECODER:"draco_decoder.js",ENCODER:"draco_encoder.js"},bt={[x.DECODER]:`${Ft}/${x.DECODER}`,[x.DECODER_WASM]:`${Ft}/${x.DECODER_WASM}`,[x.FALLBACK_DECODER]:`${Ft}/${x.FALLBACK_DECODER}`,[x.ENCODER]:`https://raw.githubusercontent.com/google/draco/${ei}/javascript/${x.ENCODER}`},It;async function Qr(r){let e=r.modules||{};return e.draco3d?It||=e.draco3d.createDecoderModule({}).then(t=>({draco:t})):It||=ti(r),await It}async function ti(r){let e,t;switch(r.draco&&r.draco.decoderType){case"js":e=await D(bt[x.FALLBACK_DECODER],"draco",r,x.FALLBACK_DECODER);break;case"wasm":default:[e,t]=await Promise.all([await D(bt[x.DECODER],"draco",r,x.DECODER),await D(bt[x.DECODER_WASM],"draco",r,x.DECODER_WASM)])}return e=e||globalThis.DracoDecoderModule,await ri(e,t)}function ri(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r({...t,onModuleLoaded:s=>n({draco:s})})})}var kr={...Hr,parse:ni};async function ni(r,e){let{draco:t}=await Qr(e),n=new ie(t);try{return n.parseSync(r,e?.draco)}finally{n.destroy()}}function Vr(r){let e={};for(let t in r){let n=r[t];if(t!=="indices"){let s=Rt(n);e[t]=s}}return e}function Rt(r){let{buffer:e,size:t,count:n}=si(r);return{value:e,size:t,byteOffset:0,count:n,type:ge(t),componentType:X(e)}}function si(r){let e=r,t=1,n=0;return r&&r.value&&(e=r.value,t=r.size||1),e&&(ArrayBuffer.isView(e)||(e=oi(e,Float32Array)),n=e.length/t),{buffer:e,size:t,count:n}}function oi(r,e,t=!1){return r?Array.isArray(r)?new e(r):t&&!(r instanceof e)?new e(r):r:null}var w="KHR_draco_mesh_compression",ii=w;function ai(r,e,t){let n=new m(r);for(let s of Yr(n))n.getObjectExtension(s,w)}async function ci(r,e,t){if(!e?.gltf?.decompressMeshes)return;let n=new m(r),s=[];for(let o of Yr(n))n.getObjectExtension(o,w)&&s.push(fi(n,o,e,t));await Promise.all(s),n.removeExtension(w)}function Ai(r,e={}){let t=new m(r);for(let n of t.json.meshes||[])ui(n,e),t.addRequiredExtension(w)}async function fi(r,e,t,n){let s=r.getObjectExtension(e,w);if(!s)return;let o=r.getTypedArrayForBufferView(s.bufferView),i=te(o.buffer,o.byteOffset),a={...t};delete a["3d-tiles"];let c=await $(i,kr,a,n),A=Vr(c.attributes);for(let[f,u]of Object.entries(A))if(f in e.attributes){let B=e.attributes[f],l=r.getAccessor(B);l?.min&&l?.max&&(u.min=l.min,u.max=l.max)}e.attributes=A,c.indices&&(e.indices=Rt(c.indices)),r.removeObjectExtension(e,w),Bi(e)}function ui(r,e,t=4,n,s){if(!n.DracoWriter)throw new Error("options.gltf.DracoWriter not provided");let o=n.DracoWriter.encodeSync({attributes:r}),i=s?.parseSync?.({attributes:r}),a=n._addFauxAttributes(i.attributes),c=n.addBufferView(o);return{primitives:[{attributes:a,mode:t,extensions:{[w]:{bufferView:c,attributes:a}}}]}}function Bi(r){if(!r.attributes&&Object.keys(r.attributes).length>0)throw new Error("glTF: Empty primitive detected: Draco decompression failure?")}function*Yr(r){for(let e of r.json.meshes||[])for(let t of e.primitives)yield t}var wt={};M(wt,{decode:()=>Di,name:()=>bi});var Ff=1/Math.PI*180,bf=1/180*Math.PI,li={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...li}};var C=globalThis.mathgl.config;function Wr(r,{precision:e=C.precision}={}){return r=mi(r),"".concat(parseFloat(r.toPrecision(e)))}function Z(r){return Array.isArray(r)||ArrayBuffer.isView(r)&&!(r instanceof DataView)}function _t(r,e,t){let n=C.EPSILON;t&&(C.EPSILON=t);try{if(r===e)return!0;if(Z(r)&&Z(e)){if(r.length!==e.length)return!1;for(let s=0;s<r.length;++s)if(!_t(r[s],e[s]))return!1;return!0}return r&&r.equals?r.equals(e):e&&e.equals?e.equals(r):typeof r=="number"&&typeof e=="number"?Math.abs(r-e)<=C.EPSILON*Math.max(1,Math.abs(r),Math.abs(e)):!1}finally{C.EPSILON=n}}function mi(r){return Math.round(r/C.EPSILON)*C.EPSILON}function di(r){function e(){var t=Reflect.construct(r,Array.from(arguments));return Object.setPrototypeOf(t,Object.getPrototypeOf(this)),t}return e.prototype=Object.create(r.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),Object.setPrototypeOf?Object.setPrototypeOf(e,r):e.__proto__=r,e}var q=class extends di(Array){clone(){return new this.constructor().copy(this)}fromArray(e,t=0){for(let n=0;n<this.ELEMENTS;++n)this[n]=e[n+t];return this.check()}toArray(e=[],t=0){for(let n=0;n<this.ELEMENTS;++n)e[t+n]=this[n];return e}toObject(e){return e}from(e){return Array.isArray(e)?this.copy(e):this.fromObject(e)}to(e){return e===this?this:Z(e)?this.toArray(e):this.toObject(e)}toTarget(e){return e?this.to(e):this}toFloat32Array(){return new Float32Array(this)}toString(){return this.formatString(C)}formatString(e){let t="";for(let n=0;n<this.ELEMENTS;++n)t+=(n>0?", ":"")+Wr(this[n],e);return"".concat(e.printTypes?this.constructor.name:"","[").concat(t,"]")}equals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(!_t(this[t],e[t]))return!1;return!0}exactEquals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(this[t]!==e[t])return!1;return!0}negate(){for(let e=0;e<this.ELEMENTS;++e)this[e]=-this[e];return this.check()}lerp(e,t,n){if(n===void 0)return this.lerp(this,e,t);for(let s=0;s<this.ELEMENTS;++s){let o=e[s],i=typeof t=="number"?t:t[s];this[s]=o+n*(i-o)}return this.check()}min(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=Math.min(e[t],this[t]);return this.check()}max(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=Math.max(e[t],this[t]);return this.check()}clamp(e,t){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e[n]),t[n]);return this.check()}add(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]+=t[n];return this.check()}subtract(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]-=t[n];return this.check()}scale(e){if(typeof e=="number")for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;else for(let t=0;t<this.ELEMENTS&&t<e.length;++t)this[t]*=e[t];return this.check()}multiplyByScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}check(){if(C.debug&&!this.validate())throw new Error("math.gl: ".concat(this.constructor.name," some fields set to invalid numbers'"));return this}validate(){let e=this.length===this.ELEMENTS;for(let t=0;t<this.ELEMENTS;++t)e=e&&Number.isFinite(this[t]);return e}sub(e){return this.subtract(e)}setScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=e;return this.check()}addScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]+=e;return this.check()}subScalar(e){return this.addScalar(-e)}multiplyScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}divideScalar(e){return this.multiplyByScalar(1/e)}clampScalar(e,t){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e),t);return this.check()}get elements(){return this}};function hi(r,e){if(r.length!==e)return!1;for(let t=0;t<r.length;++t)if(!Number.isFinite(r[t]))return!1;return!0}function E(r){if(!Number.isFinite(r))throw new Error("Invalid number ".concat(JSON.stringify(r)));return r}function Zr(r,e,t=""){if(C.debug&&!hi(r,e))throw new Error("math.gl: ".concat(t," some fields set to invalid numbers'"));return r}function Gt(r,e){if(!r)throw new Error("math.gl assertion ".concat(e))}var Se=class extends q{get x(){return this[0]}set x(e){this[0]=E(e)}get y(){return this[1]}set y(e){this[1]=E(e)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let e=0;for(let t=0;t<this.ELEMENTS;++t)e+=this[t]*this[t];return e}magnitudeSquared(){return this.lengthSquared()}distance(e){return Math.sqrt(this.distanceSquared(e))}distanceSquared(e){let t=0;for(let n=0;n<this.ELEMENTS;++n){let s=this[n]-e[n];t+=s*s}return E(t)}dot(e){let t=0;for(let n=0;n<this.ELEMENTS;++n)t+=this[n]*e[n];return E(t)}normalize(){let e=this.magnitude();if(e!==0)for(let t=0;t<this.ELEMENTS;++t)this[t]/=e;return this.check()}multiply(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]*=t[n];return this.check()}divide(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]/=t[n];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(e){return this.distance(e)}distanceToSquared(e){return this.distanceSquared(e)}getComponent(e){return Gt(e>=0&&e<this.ELEMENTS,"index is out of range"),E(this[e])}setComponent(e,t){return Gt(e>=0&&e<this.ELEMENTS,"index is out of range"),this[e]=t,this.check()}addVectors(e,t){return this.copy(e).add(t)}subVectors(e,t){return this.copy(e).subtract(t)}multiplyVectors(e,t){return this.copy(e).multiply(t)}addScaledVector(e,t){return this.add(new this.constructor(e).multiplyScalar(t))}};var z=typeof Float32Array<"u"?Float32Array:Array;var Jf=Math.PI/180;function gi(){let r=new z(2);return z!=Float32Array&&(r[0]=0,r[1]=0),r}function zr(r,e,t){let n=e[0],s=e[1];return r[0]=t[0]*n+t[3]*s+t[6],r[1]=t[1]*n+t[4]*s+t[7],r}var Hf=function(){let r=gi();return function(e,t,n,s,o,i){let a,c;for(t||(t=2),n||(n=0),s?c=Math.min(s*t+n,e.length):c=e.length,a=n;a<c;a+=t)r[0]=e[a],r[1]=e[a+1],o(r,r,i),e[a]=r[0],e[a+1]=r[1];return e}}();function $r(r,e,t){let n=e[0],s=e[1],o=e[2],i=t[3]*n+t[7]*s+t[11]*o||1;return r[0]=(t[0]*n+t[4]*s+t[8]*o)/i,r[1]=(t[1]*n+t[5]*s+t[9]*o)/i,r[2]=(t[2]*n+t[6]*s+t[10]*o)/i,r}function en(r,e,t){let n=e[0],s=e[1];return r[0]=t[0]*n+t[2]*s,r[1]=t[1]*n+t[3]*s,r[2]=e[2],r}function tn(r,e,t){let n=e[0],s=e[1],o=e[2];return r[0]=t[0]*n+t[3]*s+t[6]*o,r[1]=t[1]*n+t[4]*s+t[7]*o,r[2]=t[2]*n+t[5]*s+t[8]*o,r[3]=e[3],r}function xi(){let r=new z(3);return z!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function Ti(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]}function rn(r,e,t){let n=e[0],s=e[1],o=e[2],i=t[0],a=t[1],c=t[2];return r[0]=s*c-o*a,r[1]=o*i-n*c,r[2]=n*a-s*i,r}function nn(r,e,t){let n=e[0],s=e[1],o=e[2],i=t[3]*n+t[7]*s+t[11]*o+t[15];return i=i||1,r[0]=(t[0]*n+t[4]*s+t[8]*o+t[12])/i,r[1]=(t[1]*n+t[5]*s+t[9]*o+t[13])/i,r[2]=(t[2]*n+t[6]*s+t[10]*o+t[14])/i,r}function Oe(r,e,t){let n=e[0],s=e[1],o=e[2];return r[0]=n*t[0]+s*t[3]+o*t[6],r[1]=n*t[1]+s*t[4]+o*t[7],r[2]=n*t[2]+s*t[5]+o*t[8],r}function sn(r,e,t){let n=t[0],s=t[1],o=t[2],i=t[3],a=e[0],c=e[1],A=e[2],f=s*A-o*c,u=o*a-n*A,B=n*c-s*a,l=s*B-o*u,d=o*f-n*B,h=n*u-s*f,g=i*2;return f*=g,u*=g,B*=g,l*=2,d*=2,h*=2,r[0]=a+f+l,r[1]=c+u+d,r[2]=A+B+h,r}function on(r,e,t,n){let s=[],o=[];return s[0]=e[0]-t[0],s[1]=e[1]-t[1],s[2]=e[2]-t[2],o[0]=s[0],o[1]=s[1]*Math.cos(n)-s[2]*Math.sin(n),o[2]=s[1]*Math.sin(n)+s[2]*Math.cos(n),r[0]=o[0]+t[0],r[1]=o[1]+t[1],r[2]=o[2]+t[2],r}function an(r,e,t,n){let s=[],o=[];return s[0]=e[0]-t[0],s[1]=e[1]-t[1],s[2]=e[2]-t[2],o[0]=s[2]*Math.sin(n)+s[0]*Math.cos(n),o[1]=s[1],o[2]=s[2]*Math.cos(n)-s[0]*Math.sin(n),r[0]=o[0]+t[0],r[1]=o[1]+t[1],r[2]=o[2]+t[2],r}function cn(r,e,t,n){let s=[],o=[];return s[0]=e[0]-t[0],s[1]=e[1]-t[1],s[2]=e[2]-t[2],o[0]=s[0]*Math.cos(n)-s[1]*Math.sin(n),o[1]=s[0]*Math.sin(n)+s[1]*Math.cos(n),o[2]=s[2],r[0]=o[0]+t[0],r[1]=o[1]+t[1],r[2]=o[2]+t[2],r}function An(r,e){let t=r[0],n=r[1],s=r[2],o=e[0],i=e[1],a=e[2],c=Math.sqrt((t*t+n*n+s*s)*(o*o+i*i+a*a)),A=c&&Ti(r,e)/c;return Math.acos(Math.min(Math.max(A,-1),1))}var Kf=function(){let r=xi();return function(e,t,n,s,o,i){let a,c;for(t||(t=3),n||(n=0),s?c=Math.min(s*t+n,e.length):c=e.length,a=n;a<c;a+=t)r[0]=e[a],r[1]=e[a+1],r[2]=e[a+2],o(r,r,i),e[a]=r[0],e[a+1]=r[1],e[a+2]=r[2];return e}}();var St=[0,0,0],Ue,P=class extends Se{static get ZERO(){return Ue||(Ue=new P(0,0,0),Object.freeze(Ue)),Ue}constructor(e=0,t=0,n=0){super(-0,-0,-0),arguments.length===1&&Z(e)?this.copy(e):(C.debug&&(E(e),E(t),E(n)),this[0]=e,this[1]=t,this[2]=n)}set(e,t,n){return this[0]=e,this[1]=t,this[2]=n,this.check()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this.check()}fromObject(e){return C.debug&&(E(e.x),E(e.y),E(e.z)),this[0]=e.x,this[1]=e.y,this[2]=e.z,this.check()}toObject(e){return e.x=this[0],e.y=this[1],e.z=this[2],e}get ELEMENTS(){return 3}get z(){return this[2]}set z(e){this[2]=E(e)}angle(e){return An(this,e)}cross(e){return rn(this,this,e),this.check()}rotateX({radians:e,origin:t=St}){return on(this,this,t,e),this.check()}rotateY({radians:e,origin:t=St}){return an(this,this,t,e),this.check()}rotateZ({radians:e,origin:t=St}){return cn(this,this,t,e),this.check()}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return nn(this,this,e),this.check()}transformAsVector(e){return $r(this,this,e),this.check()}transformByMatrix3(e){return Oe(this,this,e),this.check()}transformByMatrix2(e){return en(this,this,e),this.check()}transformByQuaternion(e){return sn(this,this,e),this.check()}};var Le=class extends q{toString(){let e="[";if(C.printRowMajor){e+="row-major:";for(let t=0;t<this.RANK;++t)for(let n=0;n<this.RANK;++n)e+=" ".concat(this[n*this.RANK+t])}else{e+="column-major:";for(let t=0;t<this.ELEMENTS;++t)e+=" ".concat(this[t])}return e+="]",e}getElementIndex(e,t){return t*this.RANK+e}getElement(e,t){return this[t*this.RANK+e]}setElement(e,t,n){return this[t*this.RANK+e]=E(n),this}getColumn(e,t=new Array(this.RANK).fill(-0)){let n=e*this.RANK;for(let s=0;s<this.RANK;++s)t[s]=this[n+s];return t}setColumn(e,t){let n=e*this.RANK;for(let s=0;s<this.RANK;++s)this[n+s]=t[s];return this}};function fn(r,e){if(r===e){let t=e[1],n=e[2],s=e[5];r[1]=e[3],r[2]=e[6],r[3]=t,r[5]=e[7],r[6]=n,r[7]=s}else r[0]=e[0],r[1]=e[3],r[2]=e[6],r[3]=e[1],r[4]=e[4],r[5]=e[7],r[6]=e[2],r[7]=e[5],r[8]=e[8];return r}function un(r,e){let t=e[0],n=e[1],s=e[2],o=e[3],i=e[4],a=e[5],c=e[6],A=e[7],f=e[8],u=f*i-a*A,B=-f*o+a*c,l=A*o-i*c,d=t*u+n*B+s*l;return d?(d=1/d,r[0]=u*d,r[1]=(-f*n+s*A)*d,r[2]=(a*n-s*i)*d,r[3]=B*d,r[4]=(f*t-s*c)*d,r[5]=(-a*t+s*o)*d,r[6]=l*d,r[7]=(-A*t+n*c)*d,r[8]=(i*t-n*o)*d,r):null}function Bn(r){let e=r[0],t=r[1],n=r[2],s=r[3],o=r[4],i=r[5],a=r[6],c=r[7],A=r[8];return e*(A*o-i*c)+t*(-A*s+i*a)+n*(c*s-o*a)}function Ot(r,e,t){let n=e[0],s=e[1],o=e[2],i=e[3],a=e[4],c=e[5],A=e[6],f=e[7],u=e[8],B=t[0],l=t[1],d=t[2],h=t[3],g=t[4],b=t[5],U=t[6],K=t[7],Ke=t[8];return r[0]=B*n+l*i+d*A,r[1]=B*s+l*a+d*f,r[2]=B*o+l*c+d*u,r[3]=h*n+g*i+b*A,r[4]=h*s+g*a+b*f,r[5]=h*o+g*c+b*u,r[6]=U*n+K*i+Ke*A,r[7]=U*s+K*a+Ke*f,r[8]=U*o+K*c+Ke*u,r}function ln(r,e,t){let n=e[0],s=e[1],o=e[2],i=e[3],a=e[4],c=e[5],A=e[6],f=e[7],u=e[8],B=t[0],l=t[1];return r[0]=n,r[1]=s,r[2]=o,r[3]=i,r[4]=a,r[5]=c,r[6]=B*n+l*i+A,r[7]=B*s+l*a+f,r[8]=B*o+l*c+u,r}function mn(r,e,t){let n=e[0],s=e[1],o=e[2],i=e[3],a=e[4],c=e[5],A=e[6],f=e[7],u=e[8],B=Math.sin(t),l=Math.cos(t);return r[0]=l*n+B*i,r[1]=l*s+B*a,r[2]=l*o+B*c,r[3]=l*i-B*n,r[4]=l*a-B*s,r[5]=l*c-B*o,r[6]=A,r[7]=f,r[8]=u,r}function Ut(r,e,t){let n=t[0],s=t[1];return r[0]=n*e[0],r[1]=n*e[1],r[2]=n*e[2],r[3]=s*e[3],r[4]=s*e[4],r[5]=s*e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r}function dn(r,e){let t=e[0],n=e[1],s=e[2],o=e[3],i=t+t,a=n+n,c=s+s,A=t*i,f=n*i,u=n*a,B=s*i,l=s*a,d=s*c,h=o*i,g=o*a,b=o*c;return r[0]=1-u-d,r[3]=f-b,r[6]=B+g,r[1]=f+b,r[4]=1-A-d,r[7]=l-h,r[2]=B-g,r[5]=l+h,r[8]=1-A-u,r}var Lt;(function(r){r[r.COL0ROW0=0]="COL0ROW0",r[r.COL0ROW1=1]="COL0ROW1",r[r.COL0ROW2=2]="COL0ROW2",r[r.COL1ROW0=3]="COL1ROW0",r[r.COL1ROW1=4]="COL1ROW1",r[r.COL1ROW2=5]="COL1ROW2",r[r.COL2ROW0=6]="COL2ROW0",r[r.COL2ROW1=7]="COL2ROW1",r[r.COL2ROW2=8]="COL2ROW2"})(Lt||(Lt={}));var Mi=Object.freeze([1,0,0,0,1,0,0,0,1]),O=class extends Le{static get IDENTITY(){return Fi()}static get ZERO(){return yi()}get ELEMENTS(){return 9}get RANK(){return 3}get INDICES(){return Lt}constructor(e,...t){super(-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(e)?this.copy(e):t.length>0?this.copy([e,...t]):this.identity()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this[4]=e[4],this[5]=e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this.check()}identity(){return this.copy(Mi)}fromObject(e){return this.check()}fromQuaternion(e){return dn(this,e),this.check()}set(e,t,n,s,o,i,a,c,A){return this[0]=e,this[1]=t,this[2]=n,this[3]=s,this[4]=o,this[5]=i,this[6]=a,this[7]=c,this[8]=A,this.check()}setRowMajor(e,t,n,s,o,i,a,c,A){return this[0]=e,this[1]=s,this[2]=a,this[3]=t,this[4]=o,this[5]=c,this[6]=n,this[7]=i,this[8]=A,this.check()}determinant(){return Bn(this)}transpose(){return fn(this,this),this.check()}invert(){return un(this,this),this.check()}multiplyLeft(e){return Ot(this,e,this),this.check()}multiplyRight(e){return Ot(this,this,e),this.check()}rotate(e){return mn(this,this,e),this.check()}scale(e){return Array.isArray(e)?Ut(this,this,e):Ut(this,this,[e,e]),this.check()}translate(e){return ln(this,this,e),this.check()}transform(e,t){let n;switch(e.length){case 2:n=zr(t||[-0,-0],e,this);break;case 3:n=Oe(t||[-0,-0,-0],e,this);break;case 4:n=tn(t||[-0,-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return Zr(n,e.length),n}transformVector(e,t){return this.transform(e,t)}transformVector2(e,t){return this.transform(e,t)}transformVector3(e,t){return this.transform(e,t)}},we,Je=null;function yi(){return we||(we=new O([0,0,0,0,0,0,0,0,0]),Object.freeze(we)),we}function Fi(){return Je||(Je=new O,Object.freeze(Je)),Je}var Pe="KHR_texture_transform",bi=Pe,He=new P,Ii=new O,Ri=new O;async function Di(r,e){if(!new m(r).hasExtension(Pe)||!e.gltf?.loadBuffers)return;let s=r.json.materials||[];for(let o=0;o<s.length;o++)_i(o,r)}function _i(r,e){let t=e.json.materials?.[r],n=[t?.pbrMetallicRoughness?.baseColorTexture,t?.emissiveTexture,t?.normalTexture,t?.occlusionTexture,t?.pbrMetallicRoughness?.metallicRoughnessTexture],s=[];for(let o of n)o&&o?.extensions?.[Pe]&&Gi(e,r,o,s)}function Gi(r,e,t,n){let s=Si(t,n);if(!s)return;let o=r.json.meshes||[];for(let i of o)for(let a of i.primitives){let c=a.material;Number.isFinite(c)&&e===c&&Oi(r,a,s)}}function Si(r,e){let t=r.extensions?.[Pe],{texCoord:n=0}=r,{texCoord:s=n}=t;if(!(e.findIndex(([i,a])=>i===n&&a===s)!==-1)){let i=wi(t);return n!==s&&(r.texCoord=s),e.push([n,s]),{originalTexCoord:n,texCoord:s,matrix:i}}return null}function Oi(r,e,t){let{originalTexCoord:n,texCoord:s,matrix:o}=t,i=e.attributes[`TEXCOORD_${n}`];if(Number.isFinite(i)){let a=r.json.accessors?.[i];if(a&&a.bufferView){let c=r.json.bufferViews?.[a.bufferView];if(c){let{arrayBuffer:A,byteOffset:f}=r.buffers[c.buffer],u=(f||0)+(a.byteOffset||0)+(c.byteOffset||0),{ArrayType:B,length:l}=j(a,c),d=Ee[a.componentType],h=Ce[a.type],g=c.byteStride||d*h,b=new Float32Array(l);for(let U=0;U<a.count;U++){let K=new B(A,u+U*g,2);He.set(K[0],K[1],1),He.transformByMatrix3(o),b.set([He[0],He[1]],U*h)}n===s?Ui(a,c,r.buffers,b):Li(s,a,e,r,b)}}}}function Ui(r,e,t,n){r.componentType=5126,t.push({arrayBuffer:n.buffer,byteOffset:0,byteLength:n.buffer.byteLength}),e.buffer=t.length-1,e.byteLength=n.buffer.byteLength,e.byteOffset=0,delete e.byteStride}function Li(r,e,t,n,s){n.buffers.push({arrayBuffer:s.buffer,byteOffset:0,byteLength:s.buffer.byteLength});let o=n.json.bufferViews;if(!o)return;o.push({buffer:n.buffers.length-1,byteLength:s.buffer.byteLength,byteOffset:0});let i=n.json.accessors;i&&(i.push({bufferView:o?.length-1,byteOffset:0,componentType:5126,count:e.count,type:"VEC2"}),t.attributes[`TEXCOORD_${r}`]=i.length-1)}function wi(r){let{offset:e=[0,0],rotation:t=0,scale:n=[1,1]}=r,s=new O().set(1,0,0,0,1,0,e[0],e[1],1),o=Ii.set(Math.cos(t),Math.sin(t),0,-Math.sin(t),Math.cos(t),0,0,0,1),i=Ri.set(n[0],0,0,0,n[1],0,0,0,1);return s.multiplyRight(o).multiplyRight(i)}var Jt={};M(Jt,{decode:()=>Hi,encode:()=>Pi,name:()=>Ji});var N="KHR_lights_punctual",Ji=N;async function Hi(r){let e=new m(r),{json:t}=e,n=e.getExtension(N);n&&(e.json.lights=n.lights,e.removeExtension(N));for(let s of t.nodes||[]){let o=e.getObjectExtension(s,N);o&&(s.light=o.light),e.removeObjectExtension(s,N)}}async function Pi(r){let e=new m(r),{json:t}=e;if(t.lights){let n=e.addExtension(N);p(!n.lights),n.lights=t.lights,delete t.lights}if(e.json.lights){for(let n of e.json.lights){let s=n.node;e.addObjectExtension(s,N,n)}delete e.json.lights}}var Ht={};M(Ht,{decode:()=>Ki,encode:()=>vi,name:()=>Ni});var ae="KHR_materials_unlit",Ni=ae;async function Ki(r){let e=new m(r),{json:t}=e;for(let n of t.materials||[])n.extensions&&n.extensions.KHR_materials_unlit&&(n.unlit=!0),e.removeObjectExtension(n,ae);e.removeExtension(ae)}function vi(r){let e=new m(r),{json:t}=e;if(e.materials)for(let n of t.materials||[])n.unlit&&(delete n.unlit,e.addObjectExtension(n,ae,{}),e.addExtension(ae))}var Pt={};M(Pt,{decode:()=>ji,encode:()=>Qi,name:()=>Xi});var ce="KHR_techniques_webgl",Xi=ce;async function ji(r){let e=new m(r),{json:t}=e,n=e.getExtension(ce);if(n){let s=ki(n,e);for(let o of t.materials||[]){let i=e.getObjectExtension(o,ce);i&&(o.technique=Object.assign({},i,s[i.technique]),o.technique.values=Vi(o.technique,e)),e.removeObjectExtension(o,ce)}e.removeExtension(ce)}}async function Qi(r,e){}function ki(r,e){let{programs:t=[],shaders:n=[],techniques:s=[]}=r,o=new TextDecoder;return n.forEach(i=>{if(Number.isFinite(i.bufferView))i.code=o.decode(e.getTypedArrayForBufferView(i.bufferView));else throw new Error("KHR_techniques_webgl: no shader code")}),t.forEach(i=>{i.fragmentShader=n[i.fragmentShader],i.vertexShader=n[i.vertexShader]}),s.forEach(i=>{i.program=t[i.program]}),s}function Vi(r,e){let t=Object.assign({},r.values);return Object.keys(r.uniforms||{}).forEach(n=>{r.uniforms[n].value&&!(n in t)&&(t[n]=r.uniforms[n].value)}),Object.keys(t).forEach(n=>{typeof t[n]=="object"&&t[n].index!==void 0&&(t[n].texture=e.getTexture(t[n].index))}),t}var hn=[it,rt,gt,xt,Tt,Dt,Jt,Ht,Pt,wt,ct];function pn(r,e={},t){let n=hn.filter(s=>En(s.name,e));for(let s of n)s.preprocess?.(r,e,t)}async function Cn(r,e={},t){let n=hn.filter(s=>En(s.name,e));for(let s of n)await s.decode?.(r,e,t)}function En(r,e){let t=e?.gltf?.excludeExtensions||{};return!(r in t&&!t[r])}var Nt="KHR_binary_glTF";function gn(r){let e=new m(r),{json:t}=e;for(let n of t.images||[]){let s=e.getObjectExtension(n,Nt);s&&Object.assign(n,s),e.removeObjectExtension(n,Nt)}t.buffers&&t.buffers[0]&&delete t.buffers[0].uri,e.removeExtension(Nt)}var xn={accessors:"accessor",animations:"animation",buffers:"buffer",bufferViews:"bufferView",images:"image",materials:"material",meshes:"mesh",nodes:"node",samplers:"sampler",scenes:"scene",skins:"skin",textures:"texture"},Wi={accessor:"accessors",animations:"animation",buffer:"buffers",bufferView:"bufferViews",image:"images",material:"materials",mesh:"meshes",node:"nodes",sampler:"samplers",scene:"scenes",skin:"skins",texture:"textures"},Kt=class{idToIndexMap={animations:{},accessors:{},buffers:{},bufferViews:{},images:{},materials:{},meshes:{},nodes:{},samplers:{},scenes:{},skins:{},textures:{}};json;normalize(e,t){this.json=e.json;let n=e.json;switch(n.asset&&n.asset.version){case"2.0":return;case void 0:case"1.0":break;default:console.warn(`glTF: Unknown version ${n.asset.version}`);return}if(!t.normalize)throw new Error("glTF v1 is not supported.");console.warn("Converting glTF v1 to glTF v2 format. This is experimental and may fail."),this._addAsset(n),this._convertTopLevelObjectsToArrays(n),gn(e),this._convertObjectIdsToArrayIndices(n),this._updateObjects(n),this._updateMaterial(n)}_addAsset(e){e.asset=e.asset||{},e.asset.version="2.0",e.asset.generator=e.asset.generator||"Normalized to glTF 2.0 by loaders.gl"}_convertTopLevelObjectsToArrays(e){for(let t in xn)this._convertTopLevelObjectToArray(e,t)}_convertTopLevelObjectToArray(e,t){let n=e[t];if(!(!n||Array.isArray(n))){e[t]=[];for(let s in n){let o=n[s];o.id=o.id||s;let i=e[t].length;e[t].push(o),this.idToIndexMap[t][s]=i}}}_convertObjectIdsToArrayIndices(e){for(let t in xn)this._convertIdsToIndices(e,t);"scene"in e&&(e.scene=this._convertIdToIndex(e.scene,"scene"));for(let t of e.textures)this._convertTextureIds(t);for(let t of e.meshes)this._convertMeshIds(t);for(let t of e.nodes)this._convertNodeIds(t);for(let t of e.scenes)this._convertSceneIds(t)}_convertTextureIds(e){e.source&&(e.source=this._convertIdToIndex(e.source,"image"))}_convertMeshIds(e){for(let t of e.primitives){let{attributes:n,indices:s,material:o}=t;for(let i in n)n[i]=this._convertIdToIndex(n[i],"accessor");s&&(t.indices=this._convertIdToIndex(s,"accessor")),o&&(t.material=this._convertIdToIndex(o,"material"))}}_convertNodeIds(e){e.children&&(e.children=e.children.map(t=>this._convertIdToIndex(t,"node"))),e.meshes&&(e.meshes=e.meshes.map(t=>this._convertIdToIndex(t,"mesh")))}_convertSceneIds(e){e.nodes&&(e.nodes=e.nodes.map(t=>this._convertIdToIndex(t,"node")))}_convertIdsToIndices(e,t){e[t]||(console.warn(`gltf v1: json doesn't contain attribute ${t}`),e[t]=[]);for(let n of e[t])for(let s in n){let o=n[s],i=this._convertIdToIndex(o,s);n[s]=i}}_convertIdToIndex(e,t){let n=Wi[t];if(n in this.idToIndexMap){let s=this.idToIndexMap[n][e];if(!Number.isFinite(s))throw new Error(`gltf v1: failed to resolve ${t} with id ${e}`);return s}return e}_updateObjects(e){for(let t of this.json.buffers)delete t.type}_updateMaterial(e){for(let t of e.materials){t.pbrMetallicRoughness={baseColorFactor:[1,1,1,1],metallicFactor:1,roughnessFactor:1};let n=t.values?.tex||t.values?.texture2d_0||t.values?.diffuseTex,s=e.textures.findIndex(o=>o.id===n);s!==-1&&(t.pbrMetallicRoughness.baseColorTexture={index:s})}}};function Tn(r,e={}){return new Kt().normalize(r,e)}async function Mn(r,e,t=0,n,s){return Zi(r,e,t,n),Tn(r,{normalize:n?.gltf?.normalize}),pn(r,n,s),n?.gltf?.loadBuffers&&r.json.buffers&&await qi(r,n,s),n?.gltf?.loadImages&&await zi(r,n,s),await Cn(r,n,s),r}function Zi(r,e,t,n){if(n.uri&&(r.baseUri=n.uri),e instanceof ArrayBuffer&&!Lr(e,t,n)&&(e=new TextDecoder().decode(e)),typeof e=="string")r.json=Qe(e);else if(e instanceof ArrayBuffer){let i={};t=De(i,e,t,n.glb),p(i.type==="glTF",`Invalid GLB magic string ${i.type}`),r._glb=i,r.json=i.json}else p(!1,"GLTF: must be ArrayBuffer or string");let s=r.json.buffers||[];if(r.buffers=new Array(s.length).fill(null),r._glb&&r._glb.header.hasBinChunk){let{binChunks:i}=r._glb;r.buffers[0]={arrayBuffer:i[0].arrayBuffer,byteOffset:i[0].byteOffset,byteLength:i[0].byteLength}}let o=r.json.images||[];r.images=new Array(o.length).fill({})}async function qi(r,e,t){let n=r.json.buffers||[];for(let s=0;s<n.length;++s){let o=n[s];if(o.uri){let{fetch:i}=t;p(i);let a=Ct(o.uri,e),A=await(await t?.fetch?.(a))?.arrayBuffer?.();r.buffers[s]={arrayBuffer:A,byteOffset:0,byteLength:A.byteLength},delete o.uri}else r.buffers[s]===null&&(r.buffers[s]={arrayBuffer:new ArrayBuffer(o.byteLength),byteOffset:0,byteLength:o.byteLength})}}async function zi(r,e,t){let n=$i(r),s=r.json.images||[],o=[];for(let i of n)o.push(ea(r,s[i],i,e,t));return await Promise.all(o)}function $i(r){let e=new Set,t=r.json.textures||[];for(let n of t)n.source!==void 0&&e.add(n.source);return Array.from(e).sort()}async function ea(r,e,t,n,s){let o;if(e.uri&&!e.hasOwnProperty("bufferView")){let a=Ct(e.uri,n),{fetch:c}=s;o=await(await c(a)).arrayBuffer(),e.bufferView={data:o}}if(Number.isFinite(e.bufferView)){let a=ur(r.json,r.buffers,e.bufferView);o=te(a.buffer,a.byteOffset,a.byteLength)}p(o,"glTF image has no data");let i=await $(o,[ze,mt],{...n,mimeType:e.mimeType,basis:n.basis||{format:Ie()}},s);i&&i[0]&&(i={compressed:!0,mipmaps:!1,width:i[0].width,height:i[0].height,data:i[0]}),r.images=r.images||[],r.images[t]=i}var Ne={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:L,extensions:["gltf","glb"],mimeTypes:["model/gltf+json","model/gltf-binary"],text:!0,binary:!0,tests:["glTF"],parse:ta,options:{gltf:{normalize:!0,loadBuffers:!0,loadImages:!0,decompressMeshes:!0},log:console}};async function ta(r,e={},t){e={...Ne.options,...e},e.gltf={...Ne.options.gltf,...e.gltf};let{byteOffset:n=0}=e;return await Mn({},r,n,e,t)}var ra=1179937895,na=1313821514,sa=5130562,S=!0;function Ae(r,e,t=0,n={}){let{magic:s=ra,version:o=2,json:i={},binary:a}=r,c=t;e&&(e.setUint32(t+0,s,S),e.setUint32(t+4,o,S),e.setUint32(t+8,0,S));let A=t+8;t+=12;let f=t;e&&(e.setUint32(t+0,0,S),e.setUint32(t+4,na,S)),t+=8;let u=JSON.stringify(i);if(t=Ve(e,t,u,4),e){let B=t-f-8;e.setUint32(f+0,B,S)}if(a){let B=t;if(e&&(e.setUint32(t+0,0,S),e.setUint32(t+4,sa,S)),t+=8,t=de(e,t,a,4),e){let l=t-B-8;e.setUint32(B+0,l,S)}}if(e){let B=t-c;e.setUint32(A,B,S)}return t}function vt(r,e,t,n){return oa(r),Ae(r,e,t,n)}function oa(r,{firstBuffer:e=0}={}){if(r.buffers&&r.buffers.length>e)throw new Error("encodeGLTF: multiple buffers not yet implemented")}var Fn={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:L,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{gltf:{}},encode:async(r,e={})=>yn(r,e),encodeSync:yn};function yn(r,e={}){let{byteOffset:t=0}=e,n=vt(r,null,t,e),s=new ArrayBuffer(n),o=new DataView(s);return vt(r,o,t,e),s}var bn={dataType:null,batchType:null,name:"GLB",id:"glb",module:"gltf",version:L,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,parse:ia,parseSync:In,options:{glb:{strict:!1}}};async function ia(r,e){return In(r,e)}function In(r,e){let{byteOffset:t=0}=e||{},n={};return De(n,r,t,e?.glb),n}var Dn={name:"GLB",id:"glb",module:"gltf",version:L,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{glb:{}},encode:async(r,e={})=>Rn(r,e),encodeSync:Rn};function Rn(r,e){let{byteOffset:t=0}=e,n=Ae(r,null,t,e),s=new ArrayBuffer(n),o=new DataView(s);return Ae(r,o,t,e),s}var aa={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},ca={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},F={TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,REPEAT:10497,LINEAR:9729,NEAREST_MIPMAP_LINEAR:9986},Aa={magFilter:F.TEXTURE_MAG_FILTER,minFilter:F.TEXTURE_MIN_FILTER,wrapS:F.TEXTURE_WRAP_S,wrapT:F.TEXTURE_WRAP_T},fa={[F.TEXTURE_MAG_FILTER]:F.LINEAR,[F.TEXTURE_MIN_FILTER]:F.NEAREST_MIPMAP_LINEAR,[F.TEXTURE_WRAP_S]:F.REPEAT,[F.TEXTURE_WRAP_T]:F.REPEAT};function ua(){return{id:"default-sampler",parameters:fa}}function Ba(r){return ca[r]}function la(r){return aa[r]}var Xt=class{baseUri="";jsonUnprocessed;json;buffers=[];images=[];postProcess(e,t={}){let{json:n,buffers:s=[],images:o=[]}=e,{baseUri:i=""}=e;return p(n),this.baseUri=i,this.buffers=s,this.images=o,this.jsonUnprocessed=n,this.json=this._resolveTree(e.json,t),this.json}_resolveTree(e,t={}){let n={...e};return this.json=n,e.bufferViews&&(n.bufferViews=e.bufferViews.map((s,o)=>this._resolveBufferView(s,o))),e.images&&(n.images=e.images.map((s,o)=>this._resolveImage(s,o))),e.samplers&&(n.samplers=e.samplers.map((s,o)=>this._resolveSampler(s,o))),e.textures&&(n.textures=e.textures.map((s,o)=>this._resolveTexture(s,o))),e.accessors&&(n.accessors=e.accessors.map((s,o)=>this._resolveAccessor(s,o))),e.materials&&(n.materials=e.materials.map((s,o)=>this._resolveMaterial(s,o))),e.meshes&&(n.meshes=e.meshes.map((s,o)=>this._resolveMesh(s,o))),e.nodes&&(n.nodes=e.nodes.map((s,o)=>this._resolveNode(s,o)),n.nodes=n.nodes.map((s,o)=>this._resolveNodeChildren(s))),e.skins&&(n.skins=e.skins.map((s,o)=>this._resolveSkin(s,o))),e.scenes&&(n.scenes=e.scenes.map((s,o)=>this._resolveScene(s,o))),typeof this.json.scene=="number"&&n.scenes&&(n.scene=n.scenes[this.json.scene]),n}getScene(e){return this._get(this.json.scenes,e)}getNode(e){return this._get(this.json.nodes,e)}getSkin(e){return this._get(this.json.skins,e)}getMesh(e){return this._get(this.json.meshes,e)}getMaterial(e){return this._get(this.json.materials,e)}getAccessor(e){return this._get(this.json.accessors,e)}getCamera(e){return this._get(this.json.cameras,e)}getTexture(e){return this._get(this.json.textures,e)}getSampler(e){return this._get(this.json.samplers,e)}getImage(e){return this._get(this.json.images,e)}getBufferView(e){return this._get(this.json.bufferViews,e)}getBuffer(e){return this._get(this.json.buffers,e)}_get(e,t){if(typeof t=="object")return t;let n=e&&e[t];return n||console.warn(`glTF file error: Could not find ${e}[${t}]`),n}_resolveScene(e,t){return{...e,id:e.id||`scene-${t}`,nodes:(e.nodes||[]).map(n=>this.getNode(n))}}_resolveNode(e,t){let n={...e,id:e?.id||`node-${t}`};return e.mesh!==void 0&&(n.mesh=this.getMesh(e.mesh)),e.camera!==void 0&&(n.camera=this.getCamera(e.camera)),e.skin!==void 0&&(n.skin=this.getSkin(e.skin)),e.meshes!==void 0&&e.meshes.length&&(n.mesh=e.meshes.reduce((s,o)=>{let i=this.getMesh(o);return s.id=i.id,s.primitives=s.primitives.concat(i.primitives),s},{primitives:[]})),n}_resolveNodeChildren(e){return e.children&&(e.children=e.children.map(t=>this.getNode(t))),e}_resolveSkin(e,t){let n=typeof e.inverseBindMatrices=="number"?this.getAccessor(e.inverseBindMatrices):void 0;return{...e,id:e.id||`skin-${t}`,inverseBindMatrices:n}}_resolveMesh(e,t){let n={...e,id:e.id||`mesh-${t}`,primitives:[]};return e.primitives&&(n.primitives=e.primitives.map(s=>{let o={...s,attributes:{},indices:void 0,material:void 0},i=s.attributes;for(let a in i)o.attributes[a]=this.getAccessor(i[a]);return s.indices!==void 0&&(o.indices=this.getAccessor(s.indices)),s.material!==void 0&&(o.material=this.getMaterial(s.material)),o})),n}_resolveMaterial(e,t){let n={...e,id:e.id||`material-${t}`};if(n.normalTexture&&(n.normalTexture={...n.normalTexture},n.normalTexture.texture=this.getTexture(n.normalTexture.index)),n.occlusionTexture&&(n.occlusionTexture={...n.occlusionTexture},n.occlusionTexture.texture=this.getTexture(n.occlusionTexture.index)),n.emissiveTexture&&(n.emissiveTexture={...n.emissiveTexture},n.emissiveTexture.texture=this.getTexture(n.emissiveTexture.index)),n.emissiveFactor||(n.emissiveFactor=n.emissiveTexture?[1,1,1]:[0,0,0]),n.pbrMetallicRoughness){n.pbrMetallicRoughness={...n.pbrMetallicRoughness};let s=n.pbrMetallicRoughness;s.baseColorTexture&&(s.baseColorTexture={...s.baseColorTexture},s.baseColorTexture.texture=this.getTexture(s.baseColorTexture.index)),s.metallicRoughnessTexture&&(s.metallicRoughnessTexture={...s.metallicRoughnessTexture},s.metallicRoughnessTexture.texture=this.getTexture(s.metallicRoughnessTexture.index))}return n}_resolveAccessor(e,t){let n=Ba(e.componentType),s=la(e.type),o=n*s,i={...e,id:e.id||`accessor-${t}`,bytesPerComponent:n,components:s,bytesPerElement:o,value:void 0,bufferView:void 0,sparse:void 0};if(e.bufferView!==void 0&&(i.bufferView=this.getBufferView(e.bufferView)),i.bufferView){let a=i.bufferView.buffer,{ArrayType:c,byteLength:A}=j(i,i.bufferView),f=(i.bufferView.byteOffset||0)+(i.byteOffset||0)+a.byteOffset,u=a.arrayBuffer.slice(f,f+A);i.bufferView.byteStride&&(u=this._getValueFromInterleavedBuffer(a,f,i.bufferView.byteStride,i.bytesPerElement,i.count)),i.value=new c(u)}return i}_getValueFromInterleavedBuffer(e,t,n,s,o){let i=new Uint8Array(o*s);for(let a=0;a<o;a++){let c=t+a*n;i.set(new Uint8Array(e.arrayBuffer.slice(c,c+s)),a*s)}return i.buffer}_resolveTexture(e,t){return{...e,id:e.id||`texture-${t}`,sampler:typeof e.sampler=="number"?this.getSampler(e.sampler):ua(),source:typeof e.source=="number"?this.getImage(e.source):void 0}}_resolveSampler(e,t){let n={id:e.id||`sampler-${t}`,...e,parameters:{}};for(let s in n){let o=this._enumSamplerParameter(s);o!==void 0&&(n.parameters[o]=n[s])}return n}_enumSamplerParameter(e){return Aa[e]}_resolveImage(e,t){let n={...e,id:e.id||`image-${t}`,image:null,bufferView:e.bufferView!==void 0?this.getBufferView(e.bufferView):void 0},s=this.images[t];return s&&(n.image=s),n}_resolveBufferView(e,t){let n=e.buffer,s=this.buffers[n].arrayBuffer,o=this.buffers[n].byteOffset||0;return e.byteOffset&&(o+=e.byteOffset),{id:`bufferView-${t}`,...e,buffer:this.buffers[n],data:new Uint8Array(s,o,e.byteLength)}}_resolveCamera(e,t){let n={...e,id:e.id||`camera-${t}`};return n.perspective,n.orthographic,n}};function _n(r,e){return new Xt().postProcess(r,e)}return Hn(fe);})();
8
8
  return __exports__;
9
9
  });
@@ -1,4 +1,4 @@
1
- import type { LoaderWithParser, LoaderOptions } from '@loaders.gl/loader-utils';
1
+ import type { LoaderOptions } from '@loaders.gl/loader-utils';
2
2
  import type { GLB } from "./lib/types/glb-types.js";
3
3
  import type { ParseGLBOptions } from "./lib/parsers/parse-glb.js";
4
4
  /** GLB loader options */
@@ -12,5 +12,25 @@ export type GLBLoaderOptions = LoaderOptions & {
12
12
  * GLB Loader -
13
13
  * GLB is the binary container format for GLTF
14
14
  */
15
- export declare const GLBLoader: LoaderWithParser<GLB, never, GLBLoaderOptions>;
15
+ export declare const GLBLoader: {
16
+ readonly dataType: GLB;
17
+ readonly batchType: never;
18
+ readonly name: "GLB";
19
+ readonly id: "glb";
20
+ readonly module: "gltf";
21
+ readonly version: any;
22
+ readonly extensions: ["glb"];
23
+ readonly mimeTypes: ["model/gltf-binary"];
24
+ readonly binary: true;
25
+ readonly parse: typeof parse;
26
+ readonly parseSync: typeof parseSync;
27
+ readonly options: {
28
+ readonly glb: {
29
+ readonly strict: false;
30
+ };
31
+ };
32
+ };
33
+ declare function parse(arrayBuffer: ArrayBuffer, options?: GLBLoaderOptions): Promise<GLB>;
34
+ declare function parseSync(arrayBuffer: ArrayBuffer, options?: GLBLoaderOptions): GLB;
35
+ export {};
16
36
  //# sourceMappingURL=glb-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"glb-loader.d.ts","sourceRoot":"","sources":["../src/glb-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAC9E,OAAO,KAAK,EAAC,GAAG,EAAC,iCAA8B;AAC/C,OAAO,KAAK,EAAC,eAAe,EAAC,mCAAgC;AAI7D,yBAAyB;AACzB,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,yBAAyB;IACzB,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAepE,CAAC"}
1
+ {"version":3,"file":"glb-loader.d.ts","sourceRoot":"","sources":["../src/glb-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAC9E,OAAO,KAAK,EAAC,GAAG,EAAC,iCAA8B;AAC/C,OAAO,KAAK,EAAC,eAAe,EAAC,mCAAgC;AAI7D,yBAAyB;AACzB,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,yBAAyB;IACzB,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;CAiB6C,CAAC;AAEpE,iBAAe,KAAK,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAEvF;AAED,iBAAS,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,GAAG,CAK5E"}
@@ -5,6 +5,8 @@ import { parseGLBSync } from "./lib/parsers/parse-glb.js";
5
5
  * GLB is the binary container format for GLTF
6
6
  */
7
7
  export const GLBLoader = {
8
+ dataType: null,
9
+ batchType: null,
8
10
  name: 'GLB',
9
11
  id: 'glb',
10
12
  module: 'gltf',
@@ -1,4 +1,4 @@
1
- import type { WriterWithEncoder, WriterOptions } from '@loaders.gl/loader-utils';
1
+ import type { WriterOptions } from '@loaders.gl/loader-utils';
2
2
  import type { GLB } from "./lib/types/glb-types.js";
3
3
  import type { GLBEncodeOptions } from "./lib/encoders/encode-glb.js";
4
4
  export type GLBWriterOptions = WriterOptions & {
@@ -8,5 +8,20 @@ export type GLBWriterOptions = WriterOptions & {
8
8
  * GLB exporter
9
9
  * GLB is the binary container format for GLTF
10
10
  */
11
- export declare const GLBWriter: WriterWithEncoder<GLB, never, GLBWriterOptions>;
11
+ export declare const GLBWriter: {
12
+ readonly name: "GLB";
13
+ readonly id: "glb";
14
+ readonly module: "gltf";
15
+ readonly version: any;
16
+ readonly extensions: ["glb"];
17
+ readonly mimeTypes: ["model/gltf-binary"];
18
+ readonly binary: true;
19
+ readonly options: {
20
+ readonly glb: {};
21
+ };
22
+ readonly encode: (glb: GLB, options?: GLBWriterOptions) => Promise<ArrayBuffer>;
23
+ readonly encodeSync: typeof encodeSync;
24
+ };
25
+ declare function encodeSync(glb: any, options: any): ArrayBuffer;
26
+ export {};
12
27
  //# sourceMappingURL=glb-writer.d.ts.map