@loaders.gl/gltf 4.4.0-alpha.10 → 4.4.0-alpha.11

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 Ce=Object.defineProperty;var Sn=Object.getOwnPropertyDescriptor;var On=Object.getOwnPropertyNames;var Ln=Object.getPrototypeOf,wn=Object.prototype.hasOwnProperty;var Jn=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),T=(r,e)=>{for(var t in e)Ce(r,t,{get:e[t],enumerable:!0})},he=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of On(e))!wn.call(r,s)&&s!==t&&Ce(r,s,{get:()=>e[s],enumerable:!(n=Sn(e,s))||n.enumerable});return r},Ee=(r,e,t)=>(he(r,e,"default"),t&&he(t,e,"default")),Hn=(r,e,t)=>(t=r!=null?_n(Ln(r)):{},he(e||!r||!r.__esModule?Ce(t,"default",{value:r,enumerable:!0}):t,r)),Un=r=>he(Ce({},"__esModule",{value:!0}),r);var qt=Jn((Ra,Zt)=>{Zt.exports=globalThis.loaders});var pe={};T(pe,{EXT_FEATURE_METADATA:()=>dt,EXT_MESH_FEATURES:()=>ct,EXT_STRUCTURAL_METADATA:()=>ut,GLBLoader:()=>Fn,GLBWriter:()=>Dn,GLTFLoader:()=>Ye,GLTFScenegraph:()=>d,GLTFWriter:()=>bn,_getMemoryUsageGLTF:()=>hr,createExtMeshFeatures:()=>ft,createExtStructuralMetadata:()=>mt,postProcessGLTF:()=>Gn});Ee(pe,Hn(qt(),1));var Ge={};T(Ge,{createExtMeshFeatures:()=>ft,decode:()=>Gs,encode:()=>_s,name:()=>ct});var zt="4.4.0-alpha.10";async function re(r,e,t,n){return n._parse(r,e,t,n)}function M(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},Pn=R.self||R.window||R.global||{},Nn=R.window||R.self||R.global||{},Kn=R.global||R.self||R.window||{},jn=R.document||{};var ne=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var $t=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Xn=$t&&parseFloat($t[1])||0;var er=r=>typeof SharedArrayBuffer<"u"&&r instanceof SharedArrayBuffer;function We(r){globalThis.loaders||={},globalThis.loaders.modules||={},Object.assign(globalThis.loaders.modules,r)}function Ze(r){return globalThis.loaders?.modules?.[r]||null}function vn(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.4.0-alpha.10"),globalThis._loadersgl_.version}var tr=vn();function rr(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},Ha=D.self||D.window||D.global||{},Ua=D.window||D.self||D.global||{},Pa=D.global||D.self||D.window||{},Na=D.document||{};var O=typeof process!="object"||String(process)!=="[object process]"||process.browser,se=typeof importScripts=="function",Ka=typeof window<"u"&&typeof window.orientation<"u",nr=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),ja=nr&&parseFloat(nr[1])||0;var qe={};async function b(r,e=null,t={},n=null){return e&&(r=sr(r,e,t,n)),qe[r]=qe[r]||Qn(r),await qe[r]}function sr(r,e,t={},n=null){if(t?.core)throw new Error("loadLibrary: options.core must be pre-normalized");if(!t.useLocalLibraries&&r.startsWith("http"))return r;n=n||r;let s=t.modules||{};return s[n]?s[n]:O?t.CDN?(rr(t.CDN.startsWith("http")),`${t.CDN}/${e}@${tr}/dist/libs/${n}`):se?`../src/libs/${n}`:`modules/${e}/src/libs/${n}`:`modules/${e}/dist/libs/${n}`}async function Qn(r){if(r.endsWith("wasm"))return await Yn(r);if(!O){let{requireFromFile:t}=globalThis.loaders||{};try{let n=await t?.(r);return n||!r.includes("/dist/libs/")?n:await t?.(r.replace("/dist/libs/","/src/libs/"))}catch(n){if(r.includes("/dist/libs/"))try{return await t?.(r.replace("/dist/libs/","/src/libs/"))}catch{}return console.error(n),null}}if(se)return importScripts(r);let e=await kn(r);return Vn(e,r)}function Vn(r,e){if(!O){let{requireFromString:n}=globalThis.loaders||{};return n?.(r,e)}if(se)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 Yn(r){let{readFileAsArrayBuffer:e}=globalThis.loaders||{};if(O||!e||r.startsWith("http"))return await(await fetch(r)).arrayBuffer();try{return await e(r)}catch{if(r.includes("/dist/libs/"))return await e(r.replace("/dist/libs/","/src/libs/"));throw new Error(`Failed to load ArrayBuffer from ${r}`)}}async function kn(r){let{readFileAsText:e}=globalThis.loaders||{};if(O||!e||r.startsWith("http"))return await(await fetch(r)).text();try{return await e(r)}catch{if(r.includes("/dist/libs/"))return await e(r.replace("/dist/libs/","/src/libs/"));throw new Error(`Failed to load text from ${r}`)}}function ir(r,e=5){return typeof r=="string"?r.slice(0,e):ArrayBuffer.isView(r)?or(r.buffer,r.byteOffset,e):r instanceof ArrayBuffer?or(r,0,e):""}function or(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 ze(r){try{return JSON.parse(r)}catch{throw new Error(`Failed to parse JSON from data starting with "${ir(r)}"`)}}function oe(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 M(r>=0),M(e>0),r+(e-1)&~(e-1)}function $e(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 ge(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 et(r,e,t,n){let o=new TextEncoder().encode(t);return e=ge(r,e,o,n),e}function J(r){if(r instanceof ArrayBuffer)return r;if(er(r))return ie(r);let{buffer:e,byteOffset:t,byteLength:n}=r;return e instanceof ArrayBuffer&&t===0&&n===e.byteLength?e:ie(e,t,n)}function ie(r,e=0,t=r.byteLength-e){let n=new Uint8Array(r,e,t),s=new Uint8Array(n.length);return s.set(n),s.buffer}var Wn=globalThis.loaders?.parseImageNode,tt=typeof Image<"u",rt=typeof ImageBitmap<"u",Zn=Boolean(Wn),nt=ne?!0:Zn;function ar(r){switch(r){case"auto":return rt||tt||nt;case"imagebitmap":return rt;case"image":return tt;case"data":return nt;default:throw new Error(`@loaders.gl/images: image ${r} not supported in this environment`)}}function cr(){if(rt)return"imagebitmap";if(tt)return"image";if(nt)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function fr(r){let e=qn(r);if(!e)throw new Error("Not an image");return e}function ae(r){switch(fr(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 xe(r){return r&&(zn.test(r)||$n.test(r))}function Ar(r,e){if(xe(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 st(r,e)}function st(r,e){if(xe(e))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(r)])}async function ye(r,e,t){let n=Ar(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 ur=!0;async function Br(r,e,t){let n;xe(t)?n=await ye(r,e,t):n=st(r,t);let s=e&&e.imagebitmap;return await ts(n,s)}async function ts(r,e=null){if((rs(e)||!ur)&&(e=null),e)try{return await createImageBitmap(r,e)}catch(t){console.warn(t),ur=!1}return await createImageBitmap(r)}function rs(r){if(!r)return!0;for(let e in r)if(Object.prototype.hasOwnProperty.call(r,e))return!1;return!0}function mr(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 _=!1,ce=!0;function N(r){let e=fe(r);return cs(e)||us(e)||fs(e)||As(e)||as(e)}function as(r){let e=new Uint8Array(r instanceof DataView?r.buffer:r),t=mr(e);return t?{mimeType:t.mimeType,width:0,height:0}:null}function cs(r){let e=fe(r);return e.byteLength>=24&&e.getUint32(0,_)===2303741511?{mimeType:"image/png",width:e.getUint32(16,_),height:e.getUint32(20,_)}:null}function fs(r){let e=fe(r);return e.byteLength>=10&&e.getUint32(0,_)===1195984440?{mimeType:"image/gif",width:e.getUint16(6,ce),height:e.getUint16(8,ce)}:null}function As(r){let e=fe(r);return e.byteLength>=14&&e.getUint16(0,_)===16973&&e.getUint32(2,ce)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,ce),height:e.getUint32(22,ce)}:null}function us(r){let e=fe(r);if(!(e.byteLength>=3&&e.getUint16(0,_)===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,_);if(s.has(i))return{mimeType:"image/jpeg",height:e.getUint16(o+5,_),width:e.getUint16(o+7,_)};if(!n.has(i))return null;o+=2,o+=e.getUint16(o,_)}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 fe(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 dr(r,e){let{mimeType:t}=N(r)||{},n=globalThis.loaders?.parseImageNode;return M(n),await n(r,t)}async function lr(r,e,t){e=e||{};let s=(e.image||{}).type||"auto",{url:o}=t||{},i=ms(s),a;switch(i){case"imagebitmap":a=await Br(r,e,o);break;case"image":a=await ye(r,e,o);break;case"data":a=await dr(r,e);break;default:M(!1)}return s==="data"&&(a=ae(a)),a}function ms(r){switch(r){case"auto":case"data":return cr();default:return ar(r),r}}var ds=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],ls=["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}},ot={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:zt,mimeTypes:ls,extensions:ds,parse:lr,tests:[r=>Boolean(N(new DataView(r)))],options:ps};var it={};function at(r){if(it[r]===void 0){let e=ne?Cs(r):hs(r);it[r]=e}return it[r]}function hs(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 h(r,e){if(!r)throw new Error(e||"assert failed: gltf")}var Te={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Me={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};var gs=1.33,pr=["SCALAR","VEC2","VEC3","VEC4"],xs=[[Int8Array,5120],[Uint8Array,5121],[Int16Array,5122],[Uint16Array,5123],[Uint32Array,5125],[Float32Array,5126],[Float64Array,5130]],ys=new Map(xs),Ts={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Ms={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 be(r){return pr[r-1]||pr[0]}function H(r){let e=ys.get(r.constructor);if(!e)throw new Error("Illegal typed array");return e}function Q(r,e){let t=bs[r.componentType],n=Ts[r.type],s=Ms[r.componentType],o=r.count*n,i=r.count*n*s;h(i>=0&&i<=e.byteLength);let a=Me[r.componentType],c=Te[r.type];return{ArrayType:t,length:o,byteLength:i,componentByteSize:a,numberOfComponentsInElement:c}}function hr(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:f}=a.image;return i+c*f},0);return s+Math.ceil(4*o*gs)}function Cr(r,e,t){let n=r.bufferViews[t];h(n);let s=n.buffer,o=e[s];h(o);let i=(n.byteOffset||0)+o.byteOffset;return new Uint8Array(o.arrayBuffer,i,n.byteLength)}function Er(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:f,componentByteSize:A,numberOfComponentsInElement:u}=Q(n,s),B=A*u,m=s.byteStride||B;if(typeof s.byteStride>"u"||s.byteStride===B)return new c(o,a,f);let l=new c(f);for(let p=0;p<n.count;p++){let x=new c(o,a+p*m,u);l.set(x,p*u)}return l}function Fs(){return{asset:{version:"2.0",generator:"loaders.gl"},buffers:[],extensions:{},extensionsRequired:[],extensionsUsed:[]}}var d=class{gltf;sourceBuffers;byteLength;constructor(e){this.gltf={json:e?.json||Fs(),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];h(n);let s=(e.byteOffset||0)+n.byteOffset;return new Uint8Array(n.arrayBuffer,s,e.byteLength)}getTypedArrayForAccessor(e){let t=this.getAccessor(e);return Er(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 h(t),this.json.extensions=this.json.extensions||{},this.json.extensions[e]=t,this.registerUsedExtension(e),t}addRequiredExtension(e,t={}){return h(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=N(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;h(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:be(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:H(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(){let e=this.byteLength,t=new ArrayBuffer(e),n=new Uint8Array(t),s=0;for(let o of this.sourceBuffers||[])s=$e(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],this.gltf.buffers=[{arrayBuffer:t,byteOffset:0,byteLength:t.byteLength}]}_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 gr(r){return(r%1+1)%1}var xr={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16,BOOLEAN:1,STRING:1,ENUM:1},Is={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:BigInt64Array,UINT64:BigUint64Array,FLOAT32:Float32Array,FLOAT64:Float64Array},yr={INT8:1,UINT8:1,INT16:2,UINT16:2,INT32:4,UINT32:4,INT64:8,UINT64:8,FLOAT32:4,FLOAT64:8};function Ae(r,e){return yr[e]*xr[r]}function V(r,e,t,n){if(t!=="UINT8"&&t!=="UINT16"&&t!=="UINT32"&&t!=="UINT64")return null;let s=r.getTypedArrayForBufferView(e),o=Y(s,"SCALAR",t,n+1);return o instanceof BigInt64Array||o instanceof BigUint64Array?null:o}function Y(r,e,t,n=1){let s=xr[e],o=Is[t],i=yr[t],a=n*s,c=a*i,f=r.buffer,A=r.byteOffset;return A%i!==0&&(f=new Uint8Array(f).slice(A,A+c).buffer,A=0),new o(J(f),A,a)}function k(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 f=i.images?.[c]?.mimeType,A=r.gltf.images?.[c];if(A&&typeof A.width<"u"){let u=[];for(let B=0;B<o.length;B+=2){let m=Rs(A,f,o,B,e.channels);u.push(m)}return u}}return[]}function Fe(r,e,t,n,s){if(!t?.length)return;let o=[];for(let A of t){let u=n.findIndex(B=>B===A);u===-1&&(u=n.push(A)-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),f=r.addAccessor(c,{size:1,componentType:H(i),count:i.length});s.attributes[e]=f}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 f=Ds(i,a,r,c),A=0;for(let u of s){let B=typeof u=="number"?Object.values(o)[u]:o[u],m=f+B.offset,l=ae(r);if(l.data.length<=m)throw new Error(`${l.data.length} <= ${m}`);let p=l.data[m];A|=p<<B.shift}return A}function Ds(r,e,t,n=1){let s=t.width,o=gr(r)*(s-1),i=Math.round(o),a=t.height,c=gr(e)*(a-1),f=Math.round(c),A=t.components?t.components:n;return(f*s+i)*A}function Ie(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 f=a/s,A=c/s;o.push(r.slice(f,f+A))}return o}function Re(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 De(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 f=e.subarray(i,c+i),A=o.decode(f);s.push(A),i+=c}}return s}return[]}var W="EXT_mesh_features",ct=W;async function Gs(r,e){let t=new d(r);Ss(t,e)}function _s(r,e){let t=new d(r);return Ls(t,e),t.createBinaryChunk(),t.gltf}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?.[W]?.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=k(r,o.texture,e):i=[];o.data=i}}function Ls(r,e){let t=r.gltf.json.meshes;if(t)for(let n of t)for(let s of n.primitives)ws(r,s)}function ft(r,e,t,n){e.extensions||(e.extensions={});let s=e.extensions[W];s||(s={featureIds:[]},e.extensions[W]=s);let{featureIds:o}=s,i={featureCount:t.length,propertyTable:n,data:t};o.push(i),r.addObjectExtension(e,W,s)}function ws(r,e){let t=e.extensions?.[W];if(!t)return;let n=t.featureIds;n.forEach((s,o)=>{if(s.data){let{accessorKey:i,index:a}=Js(e.attributes),c=new Uint32Array(s.data);n[o]={featureCount:c.length,propertyTable:s.propertyTable,attribute:a},r.gltf.buffers.push({arrayBuffer:c.buffer,byteOffset:c.byteOffset,byteLength:c.byteLength});let f=r.addBufferView(c),A=r.addAccessor(f,{size:1,componentType:H(c),count:c.length});e.attributes[i]=A}})}function Js(r){let e="_FEATURE_ID_",t=Object.keys(r).filter(o=>o.indexOf(e)===0),n=-1;for(let o of t){let i=Number(o.substring(e.length));i>n&&(n=i)}return n++,{accessorKey:`${e}${n}`,index:n}}var _e={};T(_e,{createExtStructuralMetadata:()=>mt,decode:()=>Hs,encode:()=>Us,name:()=>ut});var Z="EXT_structural_metadata",ut=Z;async function Hs(r,e){let t=new d(r);Ps(t,e)}function Us(r,e){let t=new d(r);return to(t,e),t.createBinaryChunk(),t.gltf}function Ps(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(Z);t&&(e.gltf?.loadImages&&Ns(r,t),Ks(r,t))}function Ns(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)Xs(r,t,o,e)}function Ks(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=js(s,o);i&&Qs(r,t,i)}}function js(r,e){for(let t of r)if(t.class===e)return t;return null}function Xs(r,e,t,n){if(!e)return;let o=t.extensions?.[Z]?.propertyTextures;if(o)for(let i of o){let a=e[i];vs(r,a,t,n)}}function vs(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,f=k(r,a,t);f!==null&&(Fe(r,i,f,c,t),a.data=c,n.dataAttributeNames.push(i))}}function Qs(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=Ys(r,t,s,n),f=ks(r,s,n);switch(t.type){case"SCALAR":case"VEC2":case"VEC3":case"VEC4":case"MAT2":case"MAT3":case"MAT4":{o=Ws(t,n,a,c);break}case"BOOLEAN":throw new Error(`Not implemented - classProperty.type=${t.type}`);case"STRING":{o=De(n,a,c,f);break}case"ENUM":{o=Zs(e,t,n,a,c);break}default:throw new Error(`Unknown classProperty type ${t.type}`)}return o}function Ys(r,e,t,n){return e.array&&typeof e.count>"u"&&typeof t.arrayOffsets<"u"?V(r,t.arrayOffsets,t.arrayOffsetType||"UINT32",n):null}function ks(r,e,t){return typeof e.stringOffsets<"u"?V(r,e.stringOffsets,e.stringOffsetType||"UINT32",t):null}function Ws(r,e,t,n){let s=r.array,o=r.count,i=Ae(r.type,r.componentType),a=t.byteLength/i,c;return r.componentType?c=Y(t,r.type,r.componentType,a):c=t,s?n?Ie(c,e,n,t.length,i):o?Re(c,e,o):[]:c}function Zs(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=Ae(e.type,a),f=n.byteLength/c,A=Y(n,e.type,a,f);if(A||(A=n),e.array){if(s)return qs({valuesData:A,numberOfElements:t,arrayOffsets:s,valuesDataBytesLength:n.length,elementSize:c,enumEntry:i});let u=e.count;return u?zs(A,t,u,i):[]}return Bt(A,0,t,i)}function qs(r){let{valuesData:e,numberOfElements:t,arrayOffsets:n,valuesDataBytesLength:s,elementSize:o,enumEntry:i}=r,a=[];for(let c=0;c<t;c++){let f=n[c],A=n[c+1]-n[c];if(A+f>s)break;let u=f/o,B=A/o,m=Bt(e,u,B,i);a.push(m)}return a}function zs(r,e,t,n){let s=[];for(let o=0;o<e;o++){let i=t*o,a=Bt(r,i,t,n);s.push(a)}return s}function Bt(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=$s(n,i);a?s.push(a.name):s.push("")}return s}function $s(r,e){for(let t of r.values)if(t.value===e)return t;return null}var eo="schemaClassId";function to(r,e){let t=r.getExtension(Z);if(t&&t.propertyTables)for(let n of t.propertyTables){let s=n.class,o=t.schema?.classes?.[s];n.properties&&o&&ro(n,o,r)}}function ro(r,e,t){for(let n in r.properties){let s=r.properties[n].data;if(s){let o=e.properties[n];if(o){let i=oo(s,o,t);r.properties[n]=i}}}}function mt(r,e,t=eo){let n=r.getExtension(Z);n||(n=r.addExtension(Z)),n.schema=no(e,t,n.schema);let s=so(e,t,n.schema);return n.propertyTables||(n.propertyTables=[]),n.propertyTables.push(s)-1}function no(r,e,t){let n=t??{id:"schema_id"},s={properties:{}};for(let o of r){let i={type:o.elementType,componentType:o.componentType};s.properties[o.name]=i}return n.classes={},n.classes[e]=s,n}function so(r,e,t){let n={class:e,count:0},s=0,o=t.classes?.[e];for(let i of r){if(s===0&&(s=i.values.length),s!==i.values.length&&i.values.length)throw new Error("Illegal values in attributes");o?.properties[i.name]&&(n.properties||(n.properties={}),n.properties[i.name]={values:0,data:i.values})}return n.count=s,n}function oo(r,e,t){let n={values:0};if(e.type==="STRING"){let{stringData:s,stringOffsets:o}=co(r);n.stringOffsets=At(o,t),n.values=At(s,t)}else if(e.type==="SCALAR"&&e.componentType){let s=ao(r,e.componentType);n.values=At(s,t)}return n}var io={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:Int32Array,UINT64:Uint32Array,FLOAT32:Float32Array,FLOAT64:Float64Array};function ao(r,e){let t=[];for(let s of r)t.push(Number(s));let n=io[e];if(!n)throw new Error("Illegal component type");return new n(t)}function co(r){let e=new TextEncoder,t=[],n=0;for(let c of r){let f=e.encode(c);n+=f.length,t.push(f)}let s=new Uint8Array(n),o=[],i=0;for(let c of t)s.set(c,i),o.push(i),i+=c.length;o.push(i);let a=new Uint32Array(o);return{stringData:s,stringOffsets:a}}function At(r,e){return e.gltf.buffers.push({arrayBuffer:J(r.buffer),byteOffset:r.byteOffset,byteLength:r.byteLength}),e.addBufferView(r)}var lt={};T(lt,{decode:()=>fo,name:()=>dt});var Tr="EXT_feature_metadata",dt=Tr;async function fo(r,e){let t=new d(r);Ao(t,e)}function Ao(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(Tr);t&&(e.gltf?.loadImages&&uo(r,t),Bo(r,t))}function uo(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=lo(s,o);a&&ho(r,a,i)}}function Bo(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=mo(s,o);i&&po(r,t,i)}}function mo(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function lo(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function po(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=Co(r,e,i,s,a);a.data=c}}}function ho(r,e,t){let n=e.class;for(let s in t.properties){let o=e?.properties?.[s];if(o){let i=To(r,o,n);o.data=i}}}function Co(r,e,t,n,s){let o=[],i=s.bufferView,a=r.getTypedArrayForBufferView(i),c=Eo(r,t,s,n),f=go(r,t,s,n);return t.type==="STRING"||t.componentType==="STRING"?o=De(n,a,c,f):xo(t)&&(o=yo(t,n,a,c)),o}function Eo(r,e,t,n){return e.type==="ARRAY"&&typeof e.componentCount>"u"&&typeof t.arrayOffsetBufferView<"u"?V(r,t.arrayOffsetBufferView,t.offsetType||"UINT32",n):null}function go(r,e,t,n){return typeof t.stringOffsetBufferView<"u"?V(r,t.stringOffsetBufferView,t.offsetType||"UINT32",n):null}function xo(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 yo(r,e,t,n){let s=r.type==="ARRAY",o=r.componentCount,i="SCALAR",a=r.componentType||r.type,c=Ae(i,a),f=t.byteLength/c,A=Y(t,i,a,f);return s?n?Ie(A,e,n,t.length,c):o?Re(A,e,o):[]:A}function To(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)Mo(r,t,e,s,i);return s}function Mo(r,e,t,n,s){let o={channels:t.channels,...t.texture},i=k(r,o,s);i&&Fe(r,e,i,n,s)}var U="4.4.0-alpha.10";var Mr="4.4.0-alpha.10";var Se={TRANSCODER:"basis_transcoder.js",TRANSCODER_WASM:"basis_transcoder.wasm",ENCODER:"basis_encoder.js",ENCODER_WASM:"basis_encoder.wasm"},br;async function ht(r){We(r.modules);let e=Ze("basis");return e||(br||=bo(r),await br)}async function bo(r){let e=null,t=null;return[e,t]=await Promise.all([await b(Se.TRANSCODER,"textures",r),await b(Se.TRANSCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await Fo(e,t)}function Fo(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 pt;async function Ct(r){let e=r.modules||{};return e.basisEncoder?e.basisEncoder:(pt=pt||Io(r),await pt)}async function Io(r){let e=null,t=null;return[e,t]=await Promise.all([await b(Se.ENCODER,"textures",r),await b(Se.ENCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await Ro(e,t)}function Ro(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 K={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 Do=["","WEBKIT_","MOZ_"],Fr={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"},Oe=null;function Ir(r){if(!Oe){r=r||Go()||void 0,Oe=new Set;for(let e of Do)for(let t in Fr)if(r&&r.getExtension(`${e}${t}`)){let n=Fr[t];Oe.add(n)}}return Oe}function Go(){try{return document.createElement("canvas").getContext("webgl")}catch{return null}}var y=[171,75,84,88,32,50,48,187,13,10,26,10];function Rr(r){let e=new Uint8Array(r);return!(e.byteLength<y.length||e[0]!==y[0]||e[1]!==y[1]||e[2]!==y[2]||e[3]!==y[3]||e[4]!==y[4]||e[5]!==y[5]||e[6]!==y[6]||e[7]!==y[7]||e[8]!==y[8]||e[9]!==y[9]||e[10]!==y[10]||e[11]!==y[11])}var _o={etc1:{basisFormat:0,compressed:!0,format:K.COMPRESSED_RGB_ETC1_WEBGL},etc2:{basisFormat:1,compressed:!0},bc1:{basisFormat:2,compressed:!0,format:K.COMPRESSED_RGB_S3TC_DXT1_EXT},bc3:{basisFormat:3,compressed:!0,format:K.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:K.COMPRESSED_RGB_PVRTC_4BPPV1_IMG},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:K.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG},"astc-4x4":{basisFormat:10,compressed:!0,format:K.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 Gr(r,e={}){if(!e.basis?.containerFormat||e.basis.containerFormat==="auto"){if(Rr(r)){let n=await Ct(e?.core||{});return Dr(n.KTX2File,r,e)}let{BasisFile:t}=await ht(e?.core||{});return Et(t,r,e)}switch(e.basis.module){case"encoder":let t=await Ct(e?.core||{});switch(e.basis.containerFormat){case"ktx2":return Dr(t.KTX2File,r,e);case"basis":default:return Et(t.BasisFile,r,e)}case"transcoder":default:let{BasisFile:n}=await ht(e.core||{});return Et(n,r,e)}}function Et(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 f=0;f<a;f++)c.push(So(n,i,f,t));o.push(c)}return o}finally{n.close(),n.delete()}}function So(r,e,t,n){let s=r.getImageWidth(e,t),o=r.getImageHeight(e,t),i=r.getHasAlpha(),{compressed:a,format:c,basisFormat:f}=_r(n,i),A=r.getImageTranscodedSizeInBytes(e,t,f),u=new Uint8Array(A);if(!r.transcodeImage(u,e,t,f,0,0))throw new Error("failed to start Basis transcoding");return{width:s,height:o,data:u,compressed:a,format:c,hasAlpha:i}}function Dr(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(Oo(n,i,t));return[o]}finally{n.close(),n.delete()}}function Oo(r,e,t){let{alphaFlag:n,height:s,width:o}=r.getImageLevelInfo(e,0,0),{compressed:i,format:a,basisFormat:c}=_r(t,n),f=r.getImageTranscodedSizeInBytes(e,0,0,c),A=new Uint8Array(f);if(!r.transcodeImage(A,e,0,0,c,0,-1,-1))throw new Error("Failed to transcode KTX2 image");return{width:o,height:s,data:A,compressed:i,levelSize:f,hasAlpha:n,format:a}}function _r(r,e){let t=r.basis?.format;return t==="auto"&&(t=Le()),typeof t=="object"&&(t=e?t.alpha:t.noAlpha),t=t.toLowerCase(),_o[t]}function Le(){let r=Ir();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={dataType:null,batchType:null,name:"Basis",id:"basis",module:"textures",version:Mr,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"}}},gt={...Sr,parse:Gr};var q=!0,Or=1735152710,Tt=12,we=8,Lo=1313821514,wo=5130562,Jo=0,Ho=0,Uo=1;function Po(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=Or}=t,o=n.getUint32(e,!1);return o===s||o===Or}function Je(r,e,t=0,n={}){let s=new DataView(e),o=Po(s,t+0),i=s.getUint32(t+4,q),a=s.getUint32(t+8,q);switch(Object.assign(r,{header:{byteOffset:t,byteLength:a,hasBinChunk:!1},type:o,version:i,json:{},binChunks:[]}),t+=Tt,r.version){case 1:return No(r,s,t);case 2:return Ko(r,s,t,n={});default:throw new Error(`Invalid GLB version ${r.version}. Only supports version 1 and 2.`)}}function No(r,e,t){M(r.header.byteLength>Tt+we);let n=e.getUint32(t+0,q),s=e.getUint32(t+4,q);return t+=we,M(s===Jo),xt(r,e,t,n),t+=n,t+=yt(r,e,t,r.header.byteLength),t}function Ko(r,e,t,n){return M(r.header.byteLength>Tt+we),jo(r,e,t,n),t+r.header.byteLength}function jo(r,e,t,n){for(;t+8<=r.header.byteLength;){let s=e.getUint32(t+0,q),o=e.getUint32(t+4,q);switch(t+=we,o){case Lo:xt(r,e,t,s);break;case wo:yt(r,e,t,s);break;case Ho:n.strict||xt(r,e,t,s);break;case Uo:n.strict||yt(r,e,t,s);break;default:break}t+=G(s,4)}return t}function xt(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 yt(r,e,t,n){return r.header.hasBinChunk=!0,r.binChunks.push({byteOffset:t,byteLength:n,arrayBuffer:e.buffer}),G(n,4)}function Mt(r,e){if(r.startsWith("data:")||r.startsWith("http:")||r.startsWith("https:"))return r;let n=e?.core?.baseUri||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 Ft={};T(Ft,{decode:()=>ei,name:()=>$o});var Xo="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",vo="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",Qo=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]),Vo=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]),Yo={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},ko={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();zo(i,i.exports[ko[s]],r,e,t,n,i.exports[Yo[o||"NONE"]])}var bt;async function Wo(){return bt||(bt=Zo()),bt}async function Zo(){let r=Xo;WebAssembly.validate(Qo)&&(r=vo,console.log("Warning: meshopt_decoder is using experimental SIMD support"));let e=await WebAssembly.instantiate(qo(r),{});return await e.instance.exports.__wasm_call_ctors(),e.instance}function qo(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?Vo[e[n]]:(e[n]-60)*64+e[++n];return e.buffer.slice(0,t)}function zo(r,e,t,n,s,o,i){let a=r.exports.sbrk,c=n+3&-4,f=a(c*s),A=a(o.length),u=new Uint8Array(r.exports.memory.buffer);u.set(o,A);let B=e(f,n,s,A,o.length);if(B===0&&i&&i(f,c,s),t.set(u.subarray(f,f+n*s)),a(f-a(0)),B!==0)throw new Error(`Malformed buffer data: ${B}`)}var He="EXT_meshopt_compression",$o=He;async function ei(r,e){let t=new d(r);if(!e?.gltf?.decompressMeshes||!e.gltf?.loadBuffers)return;let n=[];for(let s of r.json.bufferViews||[])n.push(ti(t,s));await Promise.all(n),t.removeExtension(He)}async function ti(r,e){let t=r.getObjectExtension(e,He);if(t){let{byteOffset:n=0,byteLength:s=0,byteStride:o,count:i,mode:a,filter:c="NONE",buffer:f}=t,A=r.gltf.buffers[f],u=new Uint8Array(A.arrayBuffer,A.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,He)}}var It={};T(It,{name:()=>ri,preprocess:()=>ni});var z="EXT_texture_webp",ri=z;function ni(r,e){let t=new d(r);if(!at("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 Rt={};T(Rt,{name:()=>si,preprocess:()=>oi});var Ue="KHR_texture_basisu",si=Ue;function oi(r,e){let t=new d(r),{json:n}=t;for(let s of n.textures||[]){let o=t.getObjectExtension(s,Ue);o&&(s.source=o.source,t.removeObjectExtension(s,Ue))}t.removeExtension(Ue)}var wt={};T(wt,{decode:()=>xi,encode:()=>yi,name:()=>Ei,preprocess:()=>gi});var ii="1.5.6",ai="1.4.1",Dt=`https://www.gstatic.com/draco/versioned/decoders/${ii}`,C={DECODER:"draco_wasm_wrapper.js",DECODER_WASM:"draco_decoder.wasm",FALLBACK_DECODER:"draco_decoder.js",ENCODER:"draco_encoder.js"},ue={[C.DECODER]:`${Dt}/${C.DECODER}`,[C.DECODER_WASM]:`${Dt}/${C.DECODER_WASM}`,[C.FALLBACK_DECODER]:`${Dt}/${C.FALLBACK_DECODER}`,[C.ENCODER]:`https://raw.githubusercontent.com/google/draco/${ai}/javascript/${C.ENCODER}`},Gt;async function Hr(r={},e){let t=r.modules||{};return t.draco3d?Gt||=t.draco3d.createDecoderModule({}).then(n=>({draco:n})):Gt||=ci(r,e),await Gt}function Jr(r,e){if(r&&typeof r=="object"){if(r.default)return r.default;if(r[e])return r[e]}return r}async function ci(r,e){let t,n;switch(e){case"js":t=await b(ue[C.FALLBACK_DECODER],"draco",r,C.FALLBACK_DECODER);break;case"wasm":default:try{[t,n]=await Promise.all([await b(ue[C.DECODER],"draco",r,C.DECODER),await b(ue[C.DECODER_WASM],"draco",r,C.DECODER_WASM)])}catch{t=null,n=null}}return t=Jr(t,"DracoDecoderModule"),t=t||globalThis.DracoDecoderModule,!t&&!O&&([t,n]=await Promise.all([await b(ue[C.DECODER],"draco",{...r,useLocalLibraries:!0},C.DECODER),await b(ue[C.DECODER_WASM],"draco",{...r,useLocalLibraries:!0},C.DECODER_WASM)]),t=Jr(t,"DracoDecoderModule"),t=t||globalThis.DracoDecoderModule),await fi(t,n)}function fi(r,e){if(typeof r!="function")throw new Error("DracoDecoderModule could not be loaded");let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r({...t,onModuleLoaded:s=>n({draco:s})})})}var Ur="4.4.0-alpha.10";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 _t(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 f=0;f<c;f+=3){let A=a[f],u=a[f+1],B=a[f+2];e=A<e?A:e,t=u<t?u:t,n=B<n?B:n,s=A>s?A:s,o=u>o?u:o,i=B>i?B:i}return[[e,t,n],[s,o,i]]}function St(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 jr(r,e,t){let n=Xr(e.metadata),s=[],o=Ai(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 Ai(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 St(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 vr={POSITION:"POSITION",NORMAL:"NORMAL",COLOR:"COLOR_0",TEX_COORD:"TEXCOORD_0"},ui={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array},Bi=4,Be=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),f=_t(c.attributes),A=jr(c.attributes,a,c.indices);return{loader:"draco",loaderData:a,header:{vertexCount:o.num_points(),boundingBox:f},...c,schema:A}}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:f}=a;s[i]={value:c,size:f,byteOffset:o.byte_offset,byteStride:o.byte_stride,normalized:o.normalized}}}return s}_getTriangleListIndices(e){let n=e.num_faces()*3,s=n*Bi,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),li(t)}finally{this.draco.destroy(t)}}_getAttributeValues(e,t){let n=ui[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=mi(this.draco,n),f,A=this.draco._malloc(a);try{let u=this.decoder.GetAttribute(e,t.attribute_index);this.decoder.GetAttributeDataArrayForAllPoints(e,u,c,a,A),f=new n(this.draco.HEAPF32.buffer,A,i).slice()}finally{this.draco._free(A)}return{value:f,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 vr)if(this.draco[i]===s)return vr[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=di(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 mi(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 di(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}function li(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}var Qr={dataType:null,batchType:null,name:"Draco",id:"draco",module:"draco",version:Ur,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}}},Ot={...Qr,parse:pi};async function pi(r,e){let{draco:t}=await Hr(e?.core,e?.draco?.decoderType||"wasm"),n=new Be(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=Lt(n);e[t]=s}}return e}function Lt(r){let{buffer:e,size:t,count:n}=hi(r);return{value:e,size:t,byteOffset:0,count:n,type:be(t),componentType:H(e)}}function hi(r){let e=r,t=1,n=0;return r&&r.value&&(e=r.value,t=r.size||1),e&&(ArrayBuffer.isView(e)||(e=Ci(e,Float32Array)),n=e.length/t),{buffer:e,size:t,count:n}}function Ci(r,e,t=!1){return r?Array.isArray(r)?new e(r):t&&!(r instanceof e)?new e(r):r:null}var P="KHR_draco_mesh_compression",Ei=P;function gi(r,e,t){let n=new d(r);for(let s of Yr(n))n.getObjectExtension(s,P)}async function xi(r,e,t){if(!e?.gltf?.decompressMeshes)return;let n=new d(r),s=[];for(let o of Yr(n))n.getObjectExtension(o,P)&&s.push(Ti(n,o,e,t));await Promise.all(s),n.removeExtension(P)}function yi(r,e={}){let t=new d(r);for(let n of t.json.meshes||[])Mi(n,e),t.addRequiredExtension(P)}async function Ti(r,e,t,n){let s=r.getObjectExtension(e,P);if(!s)return;let o=r.getTypedArrayForBufferView(s.bufferView),i=oe(o.buffer,o.byteOffset),a={...t};delete a["3d-tiles"];let c=await re(i,Ot,a,n),f=Vr(c.attributes);for(let[A,u]of Object.entries(f))if(A in e.attributes){let B=e.attributes[A],m=r.getAccessor(B);m?.min&&m?.max&&(u.min=m.min,u.max=m.max)}e.attributes=f,c.indices&&(e.indices=Lt(c.indices)),r.removeObjectExtension(e,P),bi(e)}function Mi(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:{[P]:{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 jt={};T(jt,{decode:()=>Ki,name:()=>Ui});var VA=1/Math.PI*180,YA=1/180*Math.PI,Fi={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...Fi}};var E=globalThis.mathgl.config;function kr(r,{precision:e=E.precision}={}){return r=Ii(r),`${parseFloat(r.toPrecision(e))}`}function $(r){return Array.isArray(r)||ArrayBuffer.isView(r)&&!(r instanceof DataView)}function Jt(r,e,t){let n=E.EPSILON;t&&(E.EPSILON=t);try{if(r===e)return!0;if($(r)&&$(e)){if(r.length!==e.length)return!1;for(let s=0;s<r.length;++s)if(!Jt(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)<=E.EPSILON*Math.max(1,Math.abs(r),Math.abs(e)):!1}finally{E.EPSILON=n}}function Ii(r){return Math.round(r/E.EPSILON)*E.EPSILON}var ee=class extends 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:$(e)?this.toArray(e):this.toObject(e)}toTarget(e){return e?this.to(e):this}toFloat32Array(){return new Float32Array(this)}toString(){return this.formatString(E)}formatString(e){let t="";for(let n=0;n<this.ELEMENTS;++n)t+=(n>0?", ":"")+kr(this[n],e);return`${e.printTypes?this.constructor.name:""}[${t}]`}equals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(!Jt(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(E.debug&&!this.validate())throw new Error(`math.gl: ${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 Ri(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 g(r){if(!Number.isFinite(r))throw new Error(`Invalid number ${JSON.stringify(r)}`);return r}function Wr(r,e,t=""){if(E.debug&&!Ri(r,e))throw new Error(`math.gl: ${t} some fields set to invalid numbers'`);return r}function Ht(r,e){if(!r)throw new Error(`math.gl assertion ${e}`)}var Pe=class extends ee{get x(){return this[0]}set x(e){this[0]=g(e)}get y(){return this[1]}set y(e){this[1]=g(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 g(t)}dot(e){let t=0;for(let n=0;n<this.ELEMENTS;++n)t+=this[n]*e[n];return g(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 Ht(e>=0&&e<this.ELEMENTS,"index is out of range"),g(this[e])}setComponent(e,t){return Ht(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 te=typeof Float32Array<"u"?Float32Array:Array;var su=Math.PI/180;function Si(){let r=new te(2);return te!=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 ou=function(){let r=Si();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 Oi(){let r=new te(3);return te!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function Li(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 Ne(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],f=e[2],A=s*f-o*c,u=o*a-n*f,B=n*c-s*a,m=s*B-o*u,l=o*A-n*B,p=n*u-s*A,x=i*2;return A*=x,u*=x,B*=x,m*=2,l*=2,p*=2,r[0]=a+A+m,r[1]=c+u+l,r[2]=f+B+p,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)),f=c&&Li(r,e)/c;return Math.acos(Math.min(Math.max(f,-1),1))}var cu=function(){let r=Oi();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 Ut=[0,0,0],Ke,j=class extends Pe{static get ZERO(){return Ke||(Ke=new j(0,0,0),Object.freeze(Ke)),Ke}constructor(e=0,t=0,n=0){super(-0,-0,-0),arguments.length===1&&$(e)?this.copy(e):(E.debug&&(g(e),g(t),g(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 E.debug&&(g(e.x),g(e.y),g(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]=g(e)}angle(e){return cn(this,e)}cross(e){return tn(this,this,e),this.check()}rotateX({radians:e,origin:t=Ut}){return sn(this,this,t,e),this.check()}rotateY({radians:e,origin:t=Ut}){return on(this,this,t,e),this.check()}rotateZ({radians:e,origin:t=Ut}){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 Ne(this,this,e),this.check()}transformByMatrix2(e){return $r(this,this,e),this.check()}transformByQuaternion(e){return nn(this,this,e),this.check()}};var je=class extends ee{toString(){let e="[";if(E.printRowMajor){e+="row-major:";for(let t=0;t<this.RANK;++t)for(let n=0;n<this.RANK;++n)e+=` ${this[n*this.RANK+t]}`}else{e+="column-major:";for(let t=0;t<this.ELEMENTS;++t)e+=` ${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]=g(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 An(r,e){let t=e[0],n=e[1],s=e[2],o=e[3],i=e[4],a=e[5],c=e[6],f=e[7],A=e[8],u=A*i-a*f,B=-A*o+a*c,m=f*o-i*c,l=t*u+n*B+s*m;return l?(l=1/l,r[0]=u*l,r[1]=(-A*n+s*f)*l,r[2]=(a*n-s*i)*l,r[3]=B*l,r[4]=(A*t-s*c)*l,r[5]=(-a*t+s*o)*l,r[6]=m*l,r[7]=(-f*t+n*c)*l,r[8]=(i*t-n*o)*l,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],f=r[8];return e*(f*o-i*c)+t*(-f*s+i*a)+n*(c*s-o*a)}function Pt(r,e,t){let n=e[0],s=e[1],o=e[2],i=e[3],a=e[4],c=e[5],f=e[6],A=e[7],u=e[8],B=t[0],m=t[1],l=t[2],p=t[3],x=t[4],I=t[5],w=t[6],v=t[7],ke=t[8];return r[0]=B*n+m*i+l*f,r[1]=B*s+m*a+l*A,r[2]=B*o+m*c+l*u,r[3]=p*n+x*i+I*f,r[4]=p*s+x*a+I*A,r[5]=p*o+x*c+I*u,r[6]=w*n+v*i+ke*f,r[7]=w*s+v*a+ke*A,r[8]=w*o+v*c+ke*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],f=e[6],A=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+f,r[7]=B*s+m*a+A,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],f=e[6],A=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]=f,r[7]=A,r[8]=u,r}function Nt(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,f=t*i,A=n*i,u=n*a,B=s*i,m=s*a,l=s*c,p=o*i,x=o*a,I=o*c;return r[0]=1-u-l,r[3]=A-I,r[6]=B+x,r[1]=A+I,r[4]=1-f-l,r[7]=m-p,r[2]=B-x,r[5]=m+p,r[8]=1-f-u,r}var Kt;(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"})(Kt||(Kt={}));var wi=Object.freeze([1,0,0,0,1,0,0,0,1]),L=class extends je{static get IDENTITY(){return Hi()}static get ZERO(){return Ji()}get ELEMENTS(){return 9}get RANK(){return 3}get INDICES(){return Kt}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(wi)}fromObject(e){return this.check()}fromQuaternion(e){return dn(this,e),this.check()}set(e,t,n,s,o,i,a,c,f){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]=f,this.check()}setRowMajor(e,t,n,s,o,i,a,c,f){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]=f,this.check()}determinant(){return un(this)}transpose(){return fn(this,this),this.check()}invert(){return An(this,this),this.check()}multiplyLeft(e){return Pt(this,e,this),this.check()}multiplyRight(e){return Pt(this,this,e),this.check()}rotate(e){return mn(this,this,e),this.check()}scale(e){return Array.isArray(e)?Nt(this,this,e):Nt(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=Ne(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)}},Xe,ve=null;function Ji(){return Xe||(Xe=new L([0,0,0,0,0,0,0,0,0]),Object.freeze(Xe)),Xe}function Hi(){return ve||(ve=new L,Object.freeze(ve)),ve}var Ve="KHR_texture_transform",Ui=Ve,Qe=new j,Pi=new L,Ni=new L;async function Ki(r,e){if(!new d(r).hasExtension(Ve)||!e.gltf?.loadBuffers)return;let s=r.json.materials||[];for(let o=0;o<s.length;o++)ji(o,r)}function ji(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?.[Ve]&&Xi(e,r,o,s)}function Xi(r,e,t,n){let s=vi(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&&Qi(r,a,s)}}function vi(r,e){let t=r.extensions?.[Ve],{texCoord:n=0}=r,{texCoord:s=n}=t;if(!(e.findIndex(([i,a])=>i===n&&a===s)!==-1)){let i=ki(t);return n!==s&&(r.texCoord=s),e.push([n,s]),{originalTexCoord:n,texCoord:s,matrix:i}}return null}function Qi(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!==void 0){let c=r.json.bufferViews?.[a.bufferView];if(c){let{arrayBuffer:f,byteOffset:A}=r.buffers[c.buffer],u=(A||0)+(a.byteOffset||0)+(c.byteOffset||0),{ArrayType:B,length:m}=Q(a,c),l=Me[a.componentType],p=Te[a.type],x=c.byteStride||l*p,I=new Float32Array(m);for(let w=0;w<a.count;w++){let v=new B(f,u+w*x,2);Qe.set(v[0],v[1],1),Qe.transformByMatrix3(o),I.set([Qe[0],Qe[1]],w*p)}n===s?Vi(a,r,I,a.bufferView):Yi(s,a,e,r,I)}}}}function Vi(r,e,t,n){r.componentType=5126,r.byteOffset=0;let i=(e.json.accessors||[]).reduce((f,A)=>A.bufferView===n?f+1:f,0)>1;e.buffers.push({arrayBuffer:J(t.buffer),byteOffset:0,byteLength:t.buffer.byteLength});let a=e.buffers.length-1;if(e.json.bufferViews=e.json.bufferViews||[],i){e.json.bufferViews.push({buffer:a,byteLength:t.buffer.byteLength,byteOffset:0}),r.bufferView=e.json.bufferViews.length-1;return}let c=e.json.bufferViews[n];c&&(c.buffer=a,c.byteOffset=0,c.byteLength=t.buffer.byteLength,c.byteStride!==void 0&&delete c.byteStride)}function Yi(r,e,t,n,s){n.buffers.push({arrayBuffer:J(s.buffer),byteOffset:0,byteLength:s.buffer.byteLength}),n.json.bufferViews=n.json.bufferViews||[];let o=n.json.bufferViews;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 ki(r){let{offset:e=[0,0],rotation:t=0,scale:n=[1,1]}=r,s=new L().set(1,0,0,0,1,0,e[0],e[1],1),o=Pi.set(Math.cos(t),Math.sin(t),0,-Math.sin(t),Math.cos(t),0,0,0,1),i=Ni.set(n[0],0,0,0,n[1],0,0,0,1);return s.multiplyRight(o).multiplyRight(i)}var Xt={};T(Xt,{decode:()=>Zi,encode:()=>qi,name:()=>Wi});var X="KHR_lights_punctual",Wi=X;async function Zi(r){let e=new d(r),{json:t}=e,n=e.getExtension(X);n&&(e.json.lights=n.lights,e.removeExtension(X));for(let s of t.nodes||[]){let o=e.getObjectExtension(s,X);o&&(s.light=o.light),e.removeObjectExtension(s,X)}}async function qi(r){let e=new d(r),{json:t}=e;if(t.lights){let n=e.addExtension(X);h(!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,X,n)}delete e.json.lights}}var vt={};T(vt,{decode:()=>$i,encode:()=>ea,name:()=>zi});var me="KHR_materials_unlit",zi=me;async function $i(r){let e=new d(r),{json:t}=e;for(let n of t.materials||[])n.extensions&&n.extensions.KHR_materials_unlit&&(n.unlit=!0),e.removeObjectExtension(n,me);e.removeExtension(me)}function ea(r){let e=new d(r),{json:t}=e;if(e.materials)for(let n of t.materials||[])n.unlit&&(delete n.unlit,e.addObjectExtension(n,me,{}),e.addExtension(me))}var Qt={};T(Qt,{decode:()=>ra,encode:()=>na,name:()=>ta});var de="KHR_techniques_webgl",ta=de;async function ra(r){let e=new d(r),{json:t}=e,n=e.getExtension(de);if(n){let s=sa(n,e);for(let o of t.materials||[]){let i=e.getObjectExtension(o,de);i&&(o.technique=Object.assign({},i,s[i.technique]),o.technique.values=oa(o.technique,e)),e.removeObjectExtension(o,de)}e.removeExtension(de)}}async function na(r,e){}function sa(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 oa(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 ln=[_e,Ge,Ft,It,Rt,wt,Xt,vt,Qt,jt,lt],ia=[_e,Ge];function pn(r,e={},t){let n=ln.filter(s=>En(s.name,e));for(let s of n)s.preprocess?.(r,e,t)}async function hn(r,e={},t){let n=ln.filter(s=>En(s.name,e));for(let s of n)await s.decode?.(r,e,t)}function Cn(r,e={}){for(let t of ia)r=t.encode?.(r,e)??r;return r}function En(r,e){let t=e?.gltf?.excludeExtensions||{};return!(r in t&&!t[r])}var Vt="KHR_binary_glTF";function gn(r){let e=new d(r),{json:t}=e;for(let n of t.images||[]){let s=e.getObjectExtension(n,Vt);s&&Object.assign(n,s),e.removeObjectExtension(n,Vt)}t.buffers&&t.buffers[0]&&delete t.buffers[0].uri,e.removeExtension(Vt)}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"},ca={accessor:"accessors",animations:"animation",buffer:"buffers",bufferView:"bufferViews",image:"images",material:"materials",mesh:"meshes",node:"nodes",sampler:"samplers",scene:"scenes",skin:"skins",texture:"textures"},Yt=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=ca[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 yn(r,e={}){return new Yt().normalize(r,e)}async function Tn(r,e,t=0,n,s){return fa(r,e,t,n),yn(r,{normalize:n?.gltf?.normalize}),pn(r,n,s),n?.gltf?.loadBuffers&&r.json.buffers&&await Aa(r,n,s),n?.gltf?.loadImages&&await ua(r,n,s),await hn(r,n,s),r}function fa(r,e,t,n){if(n.core?.baseUri&&(r.baseUri=n.core?.baseUri),e instanceof ArrayBuffer&&!Lr(e,t,n.glb)&&(e=new TextDecoder().decode(e)),typeof e=="string")r.json=ze(e);else if(e instanceof ArrayBuffer){let i={};t=Je(i,e,t,n.glb),h(i.type==="glTF",`Invalid GLB magic string ${i.type}`),r._glb=i,r.json=i.json}else h(!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 Aa(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;h(i);let a=Mt(o.uri,e),f=await(await t?.fetch?.(a))?.arrayBuffer?.();r.buffers[s]={arrayBuffer:f,byteOffset:0,byteLength:f.byteLength},delete o.uri}else r.buffers[s]===null&&(r.buffers[s]={arrayBuffer:new ArrayBuffer(o.byteLength),byteOffset:0,byteLength:o.byteLength})}}async function ua(r,e,t){let n=Ba(r),s=r.json.images||[],o=[];for(let i of n)o.push(ma(r,s[i],i,e,t));return await Promise.all(o)}function Ba(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 ma(r,e,t,n,s){let o;if(e.uri&&!e.hasOwnProperty("bufferView")){let f=Mt(e.uri,n),{fetch:A}=s;o=await(await A(f)).arrayBuffer(),e.bufferView={data:o}}if(Number.isFinite(e.bufferView)){let f=Cr(r.json,r.buffers,e.bufferView);o=oe(f.buffer,f.byteOffset,f.byteLength)}h(o,"glTF image has no data");let i=n,a={...i,core:{...i?.core,mimeType:e.mimeType},basis:i.basis||{format:Le()}},c=await re(o,[ot,gt],a,s);c&&c[0]&&(c={compressed:!0,mipmaps:!1,width:c[0].width,height:c[0].height,data:c[0]}),r.images=r.images||[],r.images[t]=c}var Ye={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:U,extensions:["gltf","glb"],mimeTypes:["model/gltf+json","model/gltf-binary"],text:!0,binary:!0,tests:["glTF"],parse:da,options:{gltf:{normalize:!0,loadBuffers:!0,loadImages:!0,decompressMeshes:!0}}};async function da(r,e={},t){let n={...Ye.options,...e};n.gltf={...Ye.options.gltf,...n.gltf};let s=e?.glb?.byteOffset||0;return await Tn({},r,s,n,t)}var la=1179937895,pa=1313821514,ha=5130562,S=!0;function le(r,e,t=0,n={}){let{magic:s=la,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 f=t+8;t+=12;let A=t;e&&(e.setUint32(t+0,0,S),e.setUint32(t+4,pa,S)),t+=8;let u=JSON.stringify(i);if(t=et(e,t,u,4),e){let B=t-A-8;e.setUint32(A+0,B,S)}if(a){let B=t;if(e&&(e.setUint32(t+0,0,S),e.setUint32(t+4,ha,S)),t+=8,t=ge(e,t,a,4),e){let m=t-B-8;e.setUint32(B+0,m,S)}}if(e){let B=t-c;e.setUint32(f,B,S)}return t}function kt(r,e,t,n){return Ca(r),le(r,e,t,n)}function Ca(r){if(r.buffers&&r.buffers.length>1)throw new Error("encodeGLTF: multiple buffers not yet implemented")}var bn={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:U,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{gltf:{}},encode:async(r,e={})=>Mn(r,e),encodeSync:Mn};function Mn(r,e={}){let{byteOffset:t=0}=e,n=Cn(r),s=kt(n,null,t,e),o=new ArrayBuffer(s),i=new DataView(o);return kt(n,i,t,e),o}var Fn={dataType:null,batchType:null,name:"GLB",id:"glb",module:"gltf",version:U,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,parse:Ea,parseSync:In,options:{glb:{strict:!1}}};async function Ea(r,e){return In(r,e)}function In(r,e){let t={};return Je(t,r,e?.glb?.byteOffset||0,e?.glb),t}var Dn={name:"GLB",id:"glb",module:"gltf",version:U,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=le(r,null,t,e),s=new ArrayBuffer(n),o=new DataView(s);return le(r,o,t,e),s}var ga={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},xa={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},ya={magFilter:F.TEXTURE_MAG_FILTER,minFilter:F.TEXTURE_MIN_FILTER,wrapS:F.TEXTURE_WRAP_S,wrapT:F.TEXTURE_WRAP_T},Ta={[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 Ma(){return{id:"default-sampler",parameters:Ta}}function ba(r){return xa[r]}function Fa(r){return ga[r]}var Wt=class{baseUri="";jsonUnprocessed;json;buffers=[];images=[];postProcess(e,t={}){let{json:n,buffers:s=[],images:o=[]}=e,{baseUri:i=""}=e;return h(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=Fa(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:f}=Q(i,i.bufferView),A=(i.bufferView.byteOffset||0)+(i.byteOffset||0)+a.byteOffset,u=ie(a.arrayBuffer,A,f);i.bufferView.byteStride&&(u=this._getValueFromInterleavedBuffer(a,A,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):Ma(),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 ya[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 Gn(r,e){return new Wt().postProcess(r,e)}return Un(pe);})();
7
+ "use strict";var __exports__=(()=>{var _n=Object.create;var Ce=Object.defineProperty;var Sn=Object.getOwnPropertyDescriptor;var On=Object.getOwnPropertyNames;var Ln=Object.getPrototypeOf,wn=Object.prototype.hasOwnProperty;var Jn=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),T=(r,e)=>{for(var t in e)Ce(r,t,{get:e[t],enumerable:!0})},he=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of On(e))!wn.call(r,s)&&s!==t&&Ce(r,s,{get:()=>e[s],enumerable:!(n=Sn(e,s))||n.enumerable});return r},Ee=(r,e,t)=>(he(r,e,"default"),t&&he(t,e,"default")),Hn=(r,e,t)=>(t=r!=null?_n(Ln(r)):{},he(e||!r||!r.__esModule?Ce(t,"default",{value:r,enumerable:!0}):t,r)),Un=r=>he(Ce({},"__esModule",{value:!0}),r);var qt=Jn((Ra,Zt)=>{Zt.exports=globalThis.loaders});var pe={};T(pe,{EXT_FEATURE_METADATA:()=>dt,EXT_MESH_FEATURES:()=>ct,EXT_STRUCTURAL_METADATA:()=>ut,GLBLoader:()=>Fn,GLBWriter:()=>Dn,GLTFLoader:()=>Ye,GLTFScenegraph:()=>d,GLTFWriter:()=>bn,_getMemoryUsageGLTF:()=>hr,createExtMeshFeatures:()=>ft,createExtStructuralMetadata:()=>mt,postProcessGLTF:()=>Gn});Ee(pe,Hn(qt(),1));var Ge={};T(Ge,{createExtMeshFeatures:()=>ft,decode:()=>Gs,encode:()=>_s,name:()=>ct});var zt="4.4.0-alpha.11";async function re(r,e,t,n){return n._parse(r,e,t,n)}function M(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},Pn=R.self||R.window||R.global||{},Nn=R.window||R.self||R.global||{},Kn=R.global||R.self||R.window||{},jn=R.document||{};var ne=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var $t=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Xn=$t&&parseFloat($t[1])||0;var er=r=>typeof SharedArrayBuffer<"u"&&r instanceof SharedArrayBuffer;function We(r){globalThis.loaders||={},globalThis.loaders.modules||={},Object.assign(globalThis.loaders.modules,r)}function Ze(r){return globalThis.loaders?.modules?.[r]||null}function vn(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.4.0-alpha.11"),globalThis._loadersgl_.version}var tr=vn();function rr(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},Ha=D.self||D.window||D.global||{},Ua=D.window||D.self||D.global||{},Pa=D.global||D.self||D.window||{},Na=D.document||{};var O=typeof process!="object"||String(process)!=="[object process]"||process.browser,se=typeof importScripts=="function",Ka=typeof window<"u"&&typeof window.orientation<"u",nr=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),ja=nr&&parseFloat(nr[1])||0;var qe={};async function b(r,e=null,t={},n=null){return e&&(r=sr(r,e,t,n)),qe[r]=qe[r]||Qn(r),await qe[r]}function sr(r,e,t={},n=null){if(t?.core)throw new Error("loadLibrary: options.core must be pre-normalized");if(!t.useLocalLibraries&&r.startsWith("http"))return r;n=n||r;let s=t.modules||{};return s[n]?s[n]:O?t.CDN?(rr(t.CDN.startsWith("http")),`${t.CDN}/${e}@${tr}/dist/libs/${n}`):se?`../src/libs/${n}`:`modules/${e}/src/libs/${n}`:`modules/${e}/dist/libs/${n}`}async function Qn(r){if(r.endsWith("wasm"))return await Yn(r);if(!O){let{requireFromFile:t}=globalThis.loaders||{};try{let n=await t?.(r);return n||!r.includes("/dist/libs/")?n:await t?.(r.replace("/dist/libs/","/src/libs/"))}catch(n){if(r.includes("/dist/libs/"))try{return await t?.(r.replace("/dist/libs/","/src/libs/"))}catch{}return console.error(n),null}}if(se)return importScripts(r);let e=await kn(r);return Vn(e,r)}function Vn(r,e){if(!O){let{requireFromString:n}=globalThis.loaders||{};return n?.(r,e)}if(se)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 Yn(r){let{readFileAsArrayBuffer:e}=globalThis.loaders||{};if(O||!e||r.startsWith("http"))return await(await fetch(r)).arrayBuffer();try{return await e(r)}catch{if(r.includes("/dist/libs/"))return await e(r.replace("/dist/libs/","/src/libs/"));throw new Error(`Failed to load ArrayBuffer from ${r}`)}}async function kn(r){let{readFileAsText:e}=globalThis.loaders||{};if(O||!e||r.startsWith("http"))return await(await fetch(r)).text();try{return await e(r)}catch{if(r.includes("/dist/libs/"))return await e(r.replace("/dist/libs/","/src/libs/"));throw new Error(`Failed to load text from ${r}`)}}function ir(r,e=5){return typeof r=="string"?r.slice(0,e):ArrayBuffer.isView(r)?or(r.buffer,r.byteOffset,e):r instanceof ArrayBuffer?or(r,0,e):""}function or(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 ze(r){try{return JSON.parse(r)}catch{throw new Error(`Failed to parse JSON from data starting with "${ir(r)}"`)}}function oe(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 M(r>=0),M(e>0),r+(e-1)&~(e-1)}function $e(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 ge(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 et(r,e,t,n){let o=new TextEncoder().encode(t);return e=ge(r,e,o,n),e}function J(r){if(r instanceof ArrayBuffer)return r;if(er(r))return ie(r);let{buffer:e,byteOffset:t,byteLength:n}=r;return e instanceof ArrayBuffer&&t===0&&n===e.byteLength?e:ie(e,t,n)}function ie(r,e=0,t=r.byteLength-e){let n=new Uint8Array(r,e,t),s=new Uint8Array(n.length);return s.set(n),s.buffer}var Wn=globalThis.loaders?.parseImageNode,tt=typeof Image<"u",rt=typeof ImageBitmap<"u",Zn=Boolean(Wn),nt=ne?!0:Zn;function ar(r){switch(r){case"auto":return rt||tt||nt;case"imagebitmap":return rt;case"image":return tt;case"data":return nt;default:throw new Error(`@loaders.gl/images: image ${r} not supported in this environment`)}}function cr(){if(rt)return"imagebitmap";if(tt)return"image";if(nt)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function fr(r){let e=qn(r);if(!e)throw new Error("Not an image");return e}function ae(r){switch(fr(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 xe(r){return r&&(zn.test(r)||$n.test(r))}function Ar(r,e){if(xe(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 st(r,e)}function st(r,e){if(xe(e))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(r)])}async function ye(r,e,t){let n=Ar(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 ur=!0;async function Br(r,e,t){let n;xe(t)?n=await ye(r,e,t):n=st(r,t);let s=e&&e.imagebitmap;return await ts(n,s)}async function ts(r,e=null){if((rs(e)||!ur)&&(e=null),e)try{return await createImageBitmap(r,e)}catch(t){console.warn(t),ur=!1}return await createImageBitmap(r)}function rs(r){if(!r)return!0;for(let e in r)if(Object.prototype.hasOwnProperty.call(r,e))return!1;return!0}function mr(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 _=!1,ce=!0;function N(r){let e=fe(r);return cs(e)||us(e)||fs(e)||As(e)||as(e)}function as(r){let e=new Uint8Array(r instanceof DataView?r.buffer:r),t=mr(e);return t?{mimeType:t.mimeType,width:0,height:0}:null}function cs(r){let e=fe(r);return e.byteLength>=24&&e.getUint32(0,_)===2303741511?{mimeType:"image/png",width:e.getUint32(16,_),height:e.getUint32(20,_)}:null}function fs(r){let e=fe(r);return e.byteLength>=10&&e.getUint32(0,_)===1195984440?{mimeType:"image/gif",width:e.getUint16(6,ce),height:e.getUint16(8,ce)}:null}function As(r){let e=fe(r);return e.byteLength>=14&&e.getUint16(0,_)===16973&&e.getUint32(2,ce)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,ce),height:e.getUint32(22,ce)}:null}function us(r){let e=fe(r);if(!(e.byteLength>=3&&e.getUint16(0,_)===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,_);if(s.has(i))return{mimeType:"image/jpeg",height:e.getUint16(o+5,_),width:e.getUint16(o+7,_)};if(!n.has(i))return null;o+=2,o+=e.getUint16(o,_)}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 fe(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 dr(r,e){let{mimeType:t}=N(r)||{},n=globalThis.loaders?.parseImageNode;return M(n),await n(r,t)}async function lr(r,e,t){e=e||{};let s=(e.image||{}).type||"auto",{url:o}=t||{},i=ms(s),a;switch(i){case"imagebitmap":a=await Br(r,e,o);break;case"image":a=await ye(r,e,o);break;case"data":a=await dr(r,e);break;default:M(!1)}return s==="data"&&(a=ae(a)),a}function ms(r){switch(r){case"auto":case"data":return cr();default:return ar(r),r}}var ds=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],ls=["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}},ot={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:zt,mimeTypes:ls,extensions:ds,parse:lr,tests:[r=>Boolean(N(new DataView(r)))],options:ps};var it={};function at(r){if(it[r]===void 0){let e=ne?Cs(r):hs(r);it[r]=e}return it[r]}function hs(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 h(r,e){if(!r)throw new Error(e||"assert failed: gltf")}var Te={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Me={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};var gs=1.33,pr=["SCALAR","VEC2","VEC3","VEC4"],xs=[[Int8Array,5120],[Uint8Array,5121],[Int16Array,5122],[Uint16Array,5123],[Uint32Array,5125],[Float32Array,5126],[Float64Array,5130]],ys=new Map(xs),Ts={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Ms={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 be(r){return pr[r-1]||pr[0]}function H(r){let e=ys.get(r.constructor);if(!e)throw new Error("Illegal typed array");return e}function Q(r,e){let t=bs[r.componentType],n=Ts[r.type],s=Ms[r.componentType],o=r.count*n,i=r.count*n*s;h(i>=0&&i<=e.byteLength);let a=Me[r.componentType],c=Te[r.type];return{ArrayType:t,length:o,byteLength:i,componentByteSize:a,numberOfComponentsInElement:c}}function hr(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:f}=a.image;return i+c*f},0);return s+Math.ceil(4*o*gs)}function Cr(r,e,t){let n=r.bufferViews[t];h(n);let s=n.buffer,o=e[s];h(o);let i=(n.byteOffset||0)+o.byteOffset;return new Uint8Array(o.arrayBuffer,i,n.byteLength)}function Er(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:f,componentByteSize:A,numberOfComponentsInElement:u}=Q(n,s),B=A*u,m=s.byteStride||B;if(typeof s.byteStride>"u"||s.byteStride===B)return new c(o,a,f);let l=new c(f);for(let p=0;p<n.count;p++){let x=new c(o,a+p*m,u);l.set(x,p*u)}return l}function Fs(){return{asset:{version:"2.0",generator:"loaders.gl"},buffers:[],extensions:{},extensionsRequired:[],extensionsUsed:[]}}var d=class{gltf;sourceBuffers;byteLength;constructor(e){this.gltf={json:e?.json||Fs(),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];h(n);let s=(e.byteOffset||0)+n.byteOffset;return new Uint8Array(n.arrayBuffer,s,e.byteLength)}getTypedArrayForAccessor(e){let t=this.getAccessor(e);return Er(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 h(t),this.json.extensions=this.json.extensions||{},this.json.extensions[e]=t,this.registerUsedExtension(e),t}addRequiredExtension(e,t={}){return h(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=N(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;h(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:be(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:H(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(){let e=this.byteLength,t=new ArrayBuffer(e),n=new Uint8Array(t),s=0;for(let o of this.sourceBuffers||[])s=$e(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],this.gltf.buffers=[{arrayBuffer:t,byteOffset:0,byteLength:t.byteLength}]}_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 gr(r){return(r%1+1)%1}var xr={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16,BOOLEAN:1,STRING:1,ENUM:1},Is={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:BigInt64Array,UINT64:BigUint64Array,FLOAT32:Float32Array,FLOAT64:Float64Array},yr={INT8:1,UINT8:1,INT16:2,UINT16:2,INT32:4,UINT32:4,INT64:8,UINT64:8,FLOAT32:4,FLOAT64:8};function Ae(r,e){return yr[e]*xr[r]}function V(r,e,t,n){if(t!=="UINT8"&&t!=="UINT16"&&t!=="UINT32"&&t!=="UINT64")return null;let s=r.getTypedArrayForBufferView(e),o=Y(s,"SCALAR",t,n+1);return o instanceof BigInt64Array||o instanceof BigUint64Array?null:o}function Y(r,e,t,n=1){let s=xr[e],o=Is[t],i=yr[t],a=n*s,c=a*i,f=r.buffer,A=r.byteOffset;return A%i!==0&&(f=new Uint8Array(f).slice(A,A+c).buffer,A=0),new o(J(f),A,a)}function k(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 f=i.images?.[c]?.mimeType,A=r.gltf.images?.[c];if(A&&typeof A.width<"u"){let u=[];for(let B=0;B<o.length;B+=2){let m=Rs(A,f,o,B,e.channels);u.push(m)}return u}}return[]}function Fe(r,e,t,n,s){if(!t?.length)return;let o=[];for(let A of t){let u=n.findIndex(B=>B===A);u===-1&&(u=n.push(A)-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),f=r.addAccessor(c,{size:1,componentType:H(i),count:i.length});s.attributes[e]=f}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 f=Ds(i,a,r,c),A=0;for(let u of s){let B=typeof u=="number"?Object.values(o)[u]:o[u],m=f+B.offset,l=ae(r);if(l.data.length<=m)throw new Error(`${l.data.length} <= ${m}`);let p=l.data[m];A|=p<<B.shift}return A}function Ds(r,e,t,n=1){let s=t.width,o=gr(r)*(s-1),i=Math.round(o),a=t.height,c=gr(e)*(a-1),f=Math.round(c),A=t.components?t.components:n;return(f*s+i)*A}function Ie(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 f=a/s,A=c/s;o.push(r.slice(f,f+A))}return o}function Re(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 De(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 f=e.subarray(i,c+i),A=o.decode(f);s.push(A),i+=c}}return s}return[]}var W="EXT_mesh_features",ct=W;async function Gs(r,e){let t=new d(r);Ss(t,e)}function _s(r,e){let t=new d(r);return Ls(t,e),t.createBinaryChunk(),t.gltf}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?.[W]?.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=k(r,o.texture,e):i=[];o.data=i}}function Ls(r,e){let t=r.gltf.json.meshes;if(t)for(let n of t)for(let s of n.primitives)ws(r,s)}function ft(r,e,t,n){e.extensions||(e.extensions={});let s=e.extensions[W];s||(s={featureIds:[]},e.extensions[W]=s);let{featureIds:o}=s,i={featureCount:t.length,propertyTable:n,data:t};o.push(i),r.addObjectExtension(e,W,s)}function ws(r,e){let t=e.extensions?.[W];if(!t)return;let n=t.featureIds;n.forEach((s,o)=>{if(s.data){let{accessorKey:i,index:a}=Js(e.attributes),c=new Uint32Array(s.data);n[o]={featureCount:c.length,propertyTable:s.propertyTable,attribute:a},r.gltf.buffers.push({arrayBuffer:c.buffer,byteOffset:c.byteOffset,byteLength:c.byteLength});let f=r.addBufferView(c),A=r.addAccessor(f,{size:1,componentType:H(c),count:c.length});e.attributes[i]=A}})}function Js(r){let e="_FEATURE_ID_",t=Object.keys(r).filter(o=>o.indexOf(e)===0),n=-1;for(let o of t){let i=Number(o.substring(e.length));i>n&&(n=i)}return n++,{accessorKey:`${e}${n}`,index:n}}var _e={};T(_e,{createExtStructuralMetadata:()=>mt,decode:()=>Hs,encode:()=>Us,name:()=>ut});var Z="EXT_structural_metadata",ut=Z;async function Hs(r,e){let t=new d(r);Ps(t,e)}function Us(r,e){let t=new d(r);return to(t,e),t.createBinaryChunk(),t.gltf}function Ps(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(Z);t&&(e.gltf?.loadImages&&Ns(r,t),Ks(r,t))}function Ns(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)Xs(r,t,o,e)}function Ks(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=js(s,o);i&&Qs(r,t,i)}}function js(r,e){for(let t of r)if(t.class===e)return t;return null}function Xs(r,e,t,n){if(!e)return;let o=t.extensions?.[Z]?.propertyTextures;if(o)for(let i of o){let a=e[i];vs(r,a,t,n)}}function vs(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,f=k(r,a,t);f!==null&&(Fe(r,i,f,c,t),a.data=c,n.dataAttributeNames.push(i))}}function Qs(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=Ys(r,t,s,n),f=ks(r,s,n);switch(t.type){case"SCALAR":case"VEC2":case"VEC3":case"VEC4":case"MAT2":case"MAT3":case"MAT4":{o=Ws(t,n,a,c);break}case"BOOLEAN":throw new Error(`Not implemented - classProperty.type=${t.type}`);case"STRING":{o=De(n,a,c,f);break}case"ENUM":{o=Zs(e,t,n,a,c);break}default:throw new Error(`Unknown classProperty type ${t.type}`)}return o}function Ys(r,e,t,n){return e.array&&typeof e.count>"u"&&typeof t.arrayOffsets<"u"?V(r,t.arrayOffsets,t.arrayOffsetType||"UINT32",n):null}function ks(r,e,t){return typeof e.stringOffsets<"u"?V(r,e.stringOffsets,e.stringOffsetType||"UINT32",t):null}function Ws(r,e,t,n){let s=r.array,o=r.count,i=Ae(r.type,r.componentType),a=t.byteLength/i,c;return r.componentType?c=Y(t,r.type,r.componentType,a):c=t,s?n?Ie(c,e,n,t.length,i):o?Re(c,e,o):[]:c}function Zs(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=Ae(e.type,a),f=n.byteLength/c,A=Y(n,e.type,a,f);if(A||(A=n),e.array){if(s)return qs({valuesData:A,numberOfElements:t,arrayOffsets:s,valuesDataBytesLength:n.length,elementSize:c,enumEntry:i});let u=e.count;return u?zs(A,t,u,i):[]}return Bt(A,0,t,i)}function qs(r){let{valuesData:e,numberOfElements:t,arrayOffsets:n,valuesDataBytesLength:s,elementSize:o,enumEntry:i}=r,a=[];for(let c=0;c<t;c++){let f=n[c],A=n[c+1]-n[c];if(A+f>s)break;let u=f/o,B=A/o,m=Bt(e,u,B,i);a.push(m)}return a}function zs(r,e,t,n){let s=[];for(let o=0;o<e;o++){let i=t*o,a=Bt(r,i,t,n);s.push(a)}return s}function Bt(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=$s(n,i);a?s.push(a.name):s.push("")}return s}function $s(r,e){for(let t of r.values)if(t.value===e)return t;return null}var eo="schemaClassId";function to(r,e){let t=r.getExtension(Z);if(t&&t.propertyTables)for(let n of t.propertyTables){let s=n.class,o=t.schema?.classes?.[s];n.properties&&o&&ro(n,o,r)}}function ro(r,e,t){for(let n in r.properties){let s=r.properties[n].data;if(s){let o=e.properties[n];if(o){let i=oo(s,o,t);r.properties[n]=i}}}}function mt(r,e,t=eo){let n=r.getExtension(Z);n||(n=r.addExtension(Z)),n.schema=no(e,t,n.schema);let s=so(e,t,n.schema);return n.propertyTables||(n.propertyTables=[]),n.propertyTables.push(s)-1}function no(r,e,t){let n=t??{id:"schema_id"},s={properties:{}};for(let o of r){let i={type:o.elementType,componentType:o.componentType};s.properties[o.name]=i}return n.classes={},n.classes[e]=s,n}function so(r,e,t){let n={class:e,count:0},s=0,o=t.classes?.[e];for(let i of r){if(s===0&&(s=i.values.length),s!==i.values.length&&i.values.length)throw new Error("Illegal values in attributes");o?.properties[i.name]&&(n.properties||(n.properties={}),n.properties[i.name]={values:0,data:i.values})}return n.count=s,n}function oo(r,e,t){let n={values:0};if(e.type==="STRING"){let{stringData:s,stringOffsets:o}=co(r);n.stringOffsets=At(o,t),n.values=At(s,t)}else if(e.type==="SCALAR"&&e.componentType){let s=ao(r,e.componentType);n.values=At(s,t)}return n}var io={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:Int32Array,UINT64:Uint32Array,FLOAT32:Float32Array,FLOAT64:Float64Array};function ao(r,e){let t=[];for(let s of r)t.push(Number(s));let n=io[e];if(!n)throw new Error("Illegal component type");return new n(t)}function co(r){let e=new TextEncoder,t=[],n=0;for(let c of r){let f=e.encode(c);n+=f.length,t.push(f)}let s=new Uint8Array(n),o=[],i=0;for(let c of t)s.set(c,i),o.push(i),i+=c.length;o.push(i);let a=new Uint32Array(o);return{stringData:s,stringOffsets:a}}function At(r,e){return e.gltf.buffers.push({arrayBuffer:J(r.buffer),byteOffset:r.byteOffset,byteLength:r.byteLength}),e.addBufferView(r)}var lt={};T(lt,{decode:()=>fo,name:()=>dt});var Tr="EXT_feature_metadata",dt=Tr;async function fo(r,e){let t=new d(r);Ao(t,e)}function Ao(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(Tr);t&&(e.gltf?.loadImages&&uo(r,t),Bo(r,t))}function uo(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=lo(s,o);a&&ho(r,a,i)}}function Bo(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=mo(s,o);i&&po(r,t,i)}}function mo(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function lo(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function po(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=Co(r,e,i,s,a);a.data=c}}}function ho(r,e,t){let n=e.class;for(let s in t.properties){let o=e?.properties?.[s];if(o){let i=To(r,o,n);o.data=i}}}function Co(r,e,t,n,s){let o=[],i=s.bufferView,a=r.getTypedArrayForBufferView(i),c=Eo(r,t,s,n),f=go(r,t,s,n);return t.type==="STRING"||t.componentType==="STRING"?o=De(n,a,c,f):xo(t)&&(o=yo(t,n,a,c)),o}function Eo(r,e,t,n){return e.type==="ARRAY"&&typeof e.componentCount>"u"&&typeof t.arrayOffsetBufferView<"u"?V(r,t.arrayOffsetBufferView,t.offsetType||"UINT32",n):null}function go(r,e,t,n){return typeof t.stringOffsetBufferView<"u"?V(r,t.stringOffsetBufferView,t.offsetType||"UINT32",n):null}function xo(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 yo(r,e,t,n){let s=r.type==="ARRAY",o=r.componentCount,i="SCALAR",a=r.componentType||r.type,c=Ae(i,a),f=t.byteLength/c,A=Y(t,i,a,f);return s?n?Ie(A,e,n,t.length,c):o?Re(A,e,o):[]:A}function To(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)Mo(r,t,e,s,i);return s}function Mo(r,e,t,n,s){let o={channels:t.channels,...t.texture},i=k(r,o,s);i&&Fe(r,e,i,n,s)}var U="4.4.0-alpha.11";var Mr="4.4.0-alpha.11";var Se={TRANSCODER:"basis_transcoder.js",TRANSCODER_WASM:"basis_transcoder.wasm",ENCODER:"basis_encoder.js",ENCODER_WASM:"basis_encoder.wasm"},br;async function ht(r){We(r.modules);let e=Ze("basis");return e||(br||=bo(r),await br)}async function bo(r){let e=null,t=null;return[e,t]=await Promise.all([await b(Se.TRANSCODER,"textures",r),await b(Se.TRANSCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await Fo(e,t)}function Fo(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 pt;async function Ct(r){let e=r.modules||{};return e.basisEncoder?e.basisEncoder:(pt=pt||Io(r),await pt)}async function Io(r){let e=null,t=null;return[e,t]=await Promise.all([await b(Se.ENCODER,"textures",r),await b(Se.ENCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await Ro(e,t)}function Ro(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 K={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 Do=["","WEBKIT_","MOZ_"],Fr={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"},Oe=null;function Ir(r){if(!Oe){r=r||Go()||void 0,Oe=new Set;for(let e of Do)for(let t in Fr)if(r&&r.getExtension(`${e}${t}`)){let n=Fr[t];Oe.add(n)}}return Oe}function Go(){try{return document.createElement("canvas").getContext("webgl")}catch{return null}}var y=[171,75,84,88,32,50,48,187,13,10,26,10];function Rr(r){let e=new Uint8Array(r);return!(e.byteLength<y.length||e[0]!==y[0]||e[1]!==y[1]||e[2]!==y[2]||e[3]!==y[3]||e[4]!==y[4]||e[5]!==y[5]||e[6]!==y[6]||e[7]!==y[7]||e[8]!==y[8]||e[9]!==y[9]||e[10]!==y[10]||e[11]!==y[11])}var _o={etc1:{basisFormat:0,compressed:!0,format:K.COMPRESSED_RGB_ETC1_WEBGL},etc2:{basisFormat:1,compressed:!0},bc1:{basisFormat:2,compressed:!0,format:K.COMPRESSED_RGB_S3TC_DXT1_EXT},bc3:{basisFormat:3,compressed:!0,format:K.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:K.COMPRESSED_RGB_PVRTC_4BPPV1_IMG},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:K.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG},"astc-4x4":{basisFormat:10,compressed:!0,format:K.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 Gr(r,e={}){if(!e.basis?.containerFormat||e.basis.containerFormat==="auto"){if(Rr(r)){let n=await Ct(e?.core||{});return Dr(n.KTX2File,r,e)}let{BasisFile:t}=await ht(e?.core||{});return Et(t,r,e)}switch(e.basis.module){case"encoder":let t=await Ct(e?.core||{});switch(e.basis.containerFormat){case"ktx2":return Dr(t.KTX2File,r,e);case"basis":default:return Et(t.BasisFile,r,e)}case"transcoder":default:let{BasisFile:n}=await ht(e.core||{});return Et(n,r,e)}}function Et(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 f=0;f<a;f++)c.push(So(n,i,f,t));o.push(c)}return o}finally{n.close(),n.delete()}}function So(r,e,t,n){let s=r.getImageWidth(e,t),o=r.getImageHeight(e,t),i=r.getHasAlpha(),{compressed:a,format:c,basisFormat:f}=_r(n,i),A=r.getImageTranscodedSizeInBytes(e,t,f),u=new Uint8Array(A);if(!r.transcodeImage(u,e,t,f,0,0))throw new Error("failed to start Basis transcoding");return{width:s,height:o,data:u,compressed:a,format:c,hasAlpha:i}}function Dr(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(Oo(n,i,t));return[o]}finally{n.close(),n.delete()}}function Oo(r,e,t){let{alphaFlag:n,height:s,width:o}=r.getImageLevelInfo(e,0,0),{compressed:i,format:a,basisFormat:c}=_r(t,n),f=r.getImageTranscodedSizeInBytes(e,0,0,c),A=new Uint8Array(f);if(!r.transcodeImage(A,e,0,0,c,0,-1,-1))throw new Error("Failed to transcode KTX2 image");return{width:o,height:s,data:A,compressed:i,levelSize:f,hasAlpha:n,format:a}}function _r(r,e){let t=r.basis?.format;return t==="auto"&&(t=Le()),typeof t=="object"&&(t=e?t.alpha:t.noAlpha),t=t.toLowerCase(),_o[t]}function Le(){let r=Ir();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={dataType:null,batchType:null,name:"Basis",id:"basis",module:"textures",version:Mr,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"}}},gt={...Sr,parse:Gr};var q=!0,Or=1735152710,Tt=12,we=8,Lo=1313821514,wo=5130562,Jo=0,Ho=0,Uo=1;function Po(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=Or}=t,o=n.getUint32(e,!1);return o===s||o===Or}function Je(r,e,t=0,n={}){let s=new DataView(e),o=Po(s,t+0),i=s.getUint32(t+4,q),a=s.getUint32(t+8,q);switch(Object.assign(r,{header:{byteOffset:t,byteLength:a,hasBinChunk:!1},type:o,version:i,json:{},binChunks:[]}),t+=Tt,r.version){case 1:return No(r,s,t);case 2:return Ko(r,s,t,n={});default:throw new Error(`Invalid GLB version ${r.version}. Only supports version 1 and 2.`)}}function No(r,e,t){M(r.header.byteLength>Tt+we);let n=e.getUint32(t+0,q),s=e.getUint32(t+4,q);return t+=we,M(s===Jo),xt(r,e,t,n),t+=n,t+=yt(r,e,t,r.header.byteLength),t}function Ko(r,e,t,n){return M(r.header.byteLength>Tt+we),jo(r,e,t,n),t+r.header.byteLength}function jo(r,e,t,n){for(;t+8<=r.header.byteLength;){let s=e.getUint32(t+0,q),o=e.getUint32(t+4,q);switch(t+=we,o){case Lo:xt(r,e,t,s);break;case wo:yt(r,e,t,s);break;case Ho:n.strict||xt(r,e,t,s);break;case Uo:n.strict||yt(r,e,t,s);break;default:break}t+=G(s,4)}return t}function xt(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 yt(r,e,t,n){return r.header.hasBinChunk=!0,r.binChunks.push({byteOffset:t,byteLength:n,arrayBuffer:e.buffer}),G(n,4)}function Mt(r,e){if(r.startsWith("data:")||r.startsWith("http:")||r.startsWith("https:"))return r;let n=e?.core?.baseUri||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 Ft={};T(Ft,{decode:()=>ei,name:()=>$o});var Xo="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",vo="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",Qo=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]),Vo=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]),Yo={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},ko={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();zo(i,i.exports[ko[s]],r,e,t,n,i.exports[Yo[o||"NONE"]])}var bt;async function Wo(){return bt||(bt=Zo()),bt}async function Zo(){let r=Xo;WebAssembly.validate(Qo)&&(r=vo,console.log("Warning: meshopt_decoder is using experimental SIMD support"));let e=await WebAssembly.instantiate(qo(r),{});return await e.instance.exports.__wasm_call_ctors(),e.instance}function qo(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?Vo[e[n]]:(e[n]-60)*64+e[++n];return e.buffer.slice(0,t)}function zo(r,e,t,n,s,o,i){let a=r.exports.sbrk,c=n+3&-4,f=a(c*s),A=a(o.length),u=new Uint8Array(r.exports.memory.buffer);u.set(o,A);let B=e(f,n,s,A,o.length);if(B===0&&i&&i(f,c,s),t.set(u.subarray(f,f+n*s)),a(f-a(0)),B!==0)throw new Error(`Malformed buffer data: ${B}`)}var He="EXT_meshopt_compression",$o=He;async function ei(r,e){let t=new d(r);if(!e?.gltf?.decompressMeshes||!e.gltf?.loadBuffers)return;let n=[];for(let s of r.json.bufferViews||[])n.push(ti(t,s));await Promise.all(n),t.removeExtension(He)}async function ti(r,e){let t=r.getObjectExtension(e,He);if(t){let{byteOffset:n=0,byteLength:s=0,byteStride:o,count:i,mode:a,filter:c="NONE",buffer:f}=t,A=r.gltf.buffers[f],u=new Uint8Array(A.arrayBuffer,A.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,He)}}var It={};T(It,{name:()=>ri,preprocess:()=>ni});var z="EXT_texture_webp",ri=z;function ni(r,e){let t=new d(r);if(!at("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 Rt={};T(Rt,{name:()=>si,preprocess:()=>oi});var Ue="KHR_texture_basisu",si=Ue;function oi(r,e){let t=new d(r),{json:n}=t;for(let s of n.textures||[]){let o=t.getObjectExtension(s,Ue);o&&(s.source=o.source,t.removeObjectExtension(s,Ue))}t.removeExtension(Ue)}var wt={};T(wt,{decode:()=>xi,encode:()=>yi,name:()=>Ei,preprocess:()=>gi});var ii="1.5.6",ai="1.4.1",Dt=`https://www.gstatic.com/draco/versioned/decoders/${ii}`,C={DECODER:"draco_wasm_wrapper.js",DECODER_WASM:"draco_decoder.wasm",FALLBACK_DECODER:"draco_decoder.js",ENCODER:"draco_encoder.js"},ue={[C.DECODER]:`${Dt}/${C.DECODER}`,[C.DECODER_WASM]:`${Dt}/${C.DECODER_WASM}`,[C.FALLBACK_DECODER]:`${Dt}/${C.FALLBACK_DECODER}`,[C.ENCODER]:`https://raw.githubusercontent.com/google/draco/${ai}/javascript/${C.ENCODER}`},Gt;async function Hr(r={},e){let t=r.modules||{};return t.draco3d?Gt||=t.draco3d.createDecoderModule({}).then(n=>({draco:n})):Gt||=ci(r,e),await Gt}function Jr(r,e){if(r&&typeof r=="object"){if(r.default)return r.default;if(r[e])return r[e]}return r}async function ci(r,e){let t,n;switch(e){case"js":t=await b(ue[C.FALLBACK_DECODER],"draco",r,C.FALLBACK_DECODER);break;case"wasm":default:try{[t,n]=await Promise.all([await b(ue[C.DECODER],"draco",r,C.DECODER),await b(ue[C.DECODER_WASM],"draco",r,C.DECODER_WASM)])}catch{t=null,n=null}}return t=Jr(t,"DracoDecoderModule"),t=t||globalThis.DracoDecoderModule,!t&&!O&&([t,n]=await Promise.all([await b(ue[C.DECODER],"draco",{...r,useLocalLibraries:!0},C.DECODER),await b(ue[C.DECODER_WASM],"draco",{...r,useLocalLibraries:!0},C.DECODER_WASM)]),t=Jr(t,"DracoDecoderModule"),t=t||globalThis.DracoDecoderModule),await fi(t,n)}function fi(r,e){if(typeof r!="function")throw new Error("DracoDecoderModule could not be loaded");let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r({...t,onModuleLoaded:s=>n({draco:s})})})}var Ur="4.4.0-alpha.11";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 _t(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 f=0;f<c;f+=3){let A=a[f],u=a[f+1],B=a[f+2];e=A<e?A:e,t=u<t?u:t,n=B<n?B:n,s=A>s?A:s,o=u>o?u:o,i=B>i?B:i}return[[e,t,n],[s,o,i]]}function St(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 jr(r,e,t){let n=Xr(e.metadata),s=[],o=Ai(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 Ai(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 St(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 vr={POSITION:"POSITION",NORMAL:"NORMAL",COLOR:"COLOR_0",TEX_COORD:"TEXCOORD_0"},ui={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array},Bi=4,Be=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),f=_t(c.attributes),A=jr(c.attributes,a,c.indices);return{loader:"draco",loaderData:a,header:{vertexCount:o.num_points(),boundingBox:f},...c,schema:A}}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:f}=a;s[i]={value:c,size:f,byteOffset:o.byte_offset,byteStride:o.byte_stride,normalized:o.normalized}}}return s}_getTriangleListIndices(e){let n=e.num_faces()*3,s=n*Bi,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),li(t)}finally{this.draco.destroy(t)}}_getAttributeValues(e,t){let n=ui[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=mi(this.draco,n),f,A=this.draco._malloc(a);try{let u=this.decoder.GetAttribute(e,t.attribute_index);this.decoder.GetAttributeDataArrayForAllPoints(e,u,c,a,A),f=new n(this.draco.HEAPF32.buffer,A,i).slice()}finally{this.draco._free(A)}return{value:f,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 vr)if(this.draco[i]===s)return vr[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=di(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 mi(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 di(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}function li(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}var Qr={dataType:null,batchType:null,name:"Draco",id:"draco",module:"draco",version:Ur,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}}},Ot={...Qr,parse:pi};async function pi(r,e){let{draco:t}=await Hr(e?.core,e?.draco?.decoderType||"wasm"),n=new Be(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=Lt(n);e[t]=s}}return e}function Lt(r){let{buffer:e,size:t,count:n}=hi(r);return{value:e,size:t,byteOffset:0,count:n,type:be(t),componentType:H(e)}}function hi(r){let e=r,t=1,n=0;return r&&r.value&&(e=r.value,t=r.size||1),e&&(ArrayBuffer.isView(e)||(e=Ci(e,Float32Array)),n=e.length/t),{buffer:e,size:t,count:n}}function Ci(r,e,t=!1){return r?Array.isArray(r)?new e(r):t&&!(r instanceof e)?new e(r):r:null}var P="KHR_draco_mesh_compression",Ei=P;function gi(r,e,t){let n=new d(r);for(let s of Yr(n))n.getObjectExtension(s,P)}async function xi(r,e,t){if(!e?.gltf?.decompressMeshes)return;let n=new d(r),s=[];for(let o of Yr(n))n.getObjectExtension(o,P)&&s.push(Ti(n,o,e,t));await Promise.all(s),n.removeExtension(P)}function yi(r,e={}){let t=new d(r);for(let n of t.json.meshes||[])Mi(n,e),t.addRequiredExtension(P)}async function Ti(r,e,t,n){let s=r.getObjectExtension(e,P);if(!s)return;let o=r.getTypedArrayForBufferView(s.bufferView),i=oe(o.buffer,o.byteOffset),a={...t};delete a["3d-tiles"];let c=await re(i,Ot,a,n),f=Vr(c.attributes);for(let[A,u]of Object.entries(f))if(A in e.attributes){let B=e.attributes[A],m=r.getAccessor(B);m?.min&&m?.max&&(u.min=m.min,u.max=m.max)}e.attributes=f,c.indices&&(e.indices=Lt(c.indices)),r.removeObjectExtension(e,P),bi(e)}function Mi(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:{[P]:{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 jt={};T(jt,{decode:()=>Ki,name:()=>Ui});var VA=1/Math.PI*180,YA=1/180*Math.PI,Fi={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...Fi}};var E=globalThis.mathgl.config;function kr(r,{precision:e=E.precision}={}){return r=Ii(r),`${parseFloat(r.toPrecision(e))}`}function $(r){return Array.isArray(r)||ArrayBuffer.isView(r)&&!(r instanceof DataView)}function Jt(r,e,t){let n=E.EPSILON;t&&(E.EPSILON=t);try{if(r===e)return!0;if($(r)&&$(e)){if(r.length!==e.length)return!1;for(let s=0;s<r.length;++s)if(!Jt(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)<=E.EPSILON*Math.max(1,Math.abs(r),Math.abs(e)):!1}finally{E.EPSILON=n}}function Ii(r){return Math.round(r/E.EPSILON)*E.EPSILON}var ee=class extends 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:$(e)?this.toArray(e):this.toObject(e)}toTarget(e){return e?this.to(e):this}toFloat32Array(){return new Float32Array(this)}toString(){return this.formatString(E)}formatString(e){let t="";for(let n=0;n<this.ELEMENTS;++n)t+=(n>0?", ":"")+kr(this[n],e);return`${e.printTypes?this.constructor.name:""}[${t}]`}equals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(!Jt(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(E.debug&&!this.validate())throw new Error(`math.gl: ${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 Ri(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 g(r){if(!Number.isFinite(r))throw new Error(`Invalid number ${JSON.stringify(r)}`);return r}function Wr(r,e,t=""){if(E.debug&&!Ri(r,e))throw new Error(`math.gl: ${t} some fields set to invalid numbers'`);return r}function Ht(r,e){if(!r)throw new Error(`math.gl assertion ${e}`)}var Pe=class extends ee{get x(){return this[0]}set x(e){this[0]=g(e)}get y(){return this[1]}set y(e){this[1]=g(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 g(t)}dot(e){let t=0;for(let n=0;n<this.ELEMENTS;++n)t+=this[n]*e[n];return g(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 Ht(e>=0&&e<this.ELEMENTS,"index is out of range"),g(this[e])}setComponent(e,t){return Ht(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 te=typeof Float32Array<"u"?Float32Array:Array;var su=Math.PI/180;function Si(){let r=new te(2);return te!=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 ou=function(){let r=Si();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 Oi(){let r=new te(3);return te!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function Li(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 Ne(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],f=e[2],A=s*f-o*c,u=o*a-n*f,B=n*c-s*a,m=s*B-o*u,l=o*A-n*B,p=n*u-s*A,x=i*2;return A*=x,u*=x,B*=x,m*=2,l*=2,p*=2,r[0]=a+A+m,r[1]=c+u+l,r[2]=f+B+p,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)),f=c&&Li(r,e)/c;return Math.acos(Math.min(Math.max(f,-1),1))}var cu=function(){let r=Oi();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 Ut=[0,0,0],Ke,j=class extends Pe{static get ZERO(){return Ke||(Ke=new j(0,0,0),Object.freeze(Ke)),Ke}constructor(e=0,t=0,n=0){super(-0,-0,-0),arguments.length===1&&$(e)?this.copy(e):(E.debug&&(g(e),g(t),g(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 E.debug&&(g(e.x),g(e.y),g(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]=g(e)}angle(e){return cn(this,e)}cross(e){return tn(this,this,e),this.check()}rotateX({radians:e,origin:t=Ut}){return sn(this,this,t,e),this.check()}rotateY({radians:e,origin:t=Ut}){return on(this,this,t,e),this.check()}rotateZ({radians:e,origin:t=Ut}){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 Ne(this,this,e),this.check()}transformByMatrix2(e){return $r(this,this,e),this.check()}transformByQuaternion(e){return nn(this,this,e),this.check()}};var je=class extends ee{toString(){let e="[";if(E.printRowMajor){e+="row-major:";for(let t=0;t<this.RANK;++t)for(let n=0;n<this.RANK;++n)e+=` ${this[n*this.RANK+t]}`}else{e+="column-major:";for(let t=0;t<this.ELEMENTS;++t)e+=` ${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]=g(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 An(r,e){let t=e[0],n=e[1],s=e[2],o=e[3],i=e[4],a=e[5],c=e[6],f=e[7],A=e[8],u=A*i-a*f,B=-A*o+a*c,m=f*o-i*c,l=t*u+n*B+s*m;return l?(l=1/l,r[0]=u*l,r[1]=(-A*n+s*f)*l,r[2]=(a*n-s*i)*l,r[3]=B*l,r[4]=(A*t-s*c)*l,r[5]=(-a*t+s*o)*l,r[6]=m*l,r[7]=(-f*t+n*c)*l,r[8]=(i*t-n*o)*l,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],f=r[8];return e*(f*o-i*c)+t*(-f*s+i*a)+n*(c*s-o*a)}function Pt(r,e,t){let n=e[0],s=e[1],o=e[2],i=e[3],a=e[4],c=e[5],f=e[6],A=e[7],u=e[8],B=t[0],m=t[1],l=t[2],p=t[3],x=t[4],I=t[5],w=t[6],v=t[7],ke=t[8];return r[0]=B*n+m*i+l*f,r[1]=B*s+m*a+l*A,r[2]=B*o+m*c+l*u,r[3]=p*n+x*i+I*f,r[4]=p*s+x*a+I*A,r[5]=p*o+x*c+I*u,r[6]=w*n+v*i+ke*f,r[7]=w*s+v*a+ke*A,r[8]=w*o+v*c+ke*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],f=e[6],A=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+f,r[7]=B*s+m*a+A,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],f=e[6],A=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]=f,r[7]=A,r[8]=u,r}function Nt(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,f=t*i,A=n*i,u=n*a,B=s*i,m=s*a,l=s*c,p=o*i,x=o*a,I=o*c;return r[0]=1-u-l,r[3]=A-I,r[6]=B+x,r[1]=A+I,r[4]=1-f-l,r[7]=m-p,r[2]=B-x,r[5]=m+p,r[8]=1-f-u,r}var Kt;(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"})(Kt||(Kt={}));var wi=Object.freeze([1,0,0,0,1,0,0,0,1]),L=class extends je{static get IDENTITY(){return Hi()}static get ZERO(){return Ji()}get ELEMENTS(){return 9}get RANK(){return 3}get INDICES(){return Kt}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(wi)}fromObject(e){return this.check()}fromQuaternion(e){return dn(this,e),this.check()}set(e,t,n,s,o,i,a,c,f){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]=f,this.check()}setRowMajor(e,t,n,s,o,i,a,c,f){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]=f,this.check()}determinant(){return un(this)}transpose(){return fn(this,this),this.check()}invert(){return An(this,this),this.check()}multiplyLeft(e){return Pt(this,e,this),this.check()}multiplyRight(e){return Pt(this,this,e),this.check()}rotate(e){return mn(this,this,e),this.check()}scale(e){return Array.isArray(e)?Nt(this,this,e):Nt(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=Ne(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)}},Xe,ve=null;function Ji(){return Xe||(Xe=new L([0,0,0,0,0,0,0,0,0]),Object.freeze(Xe)),Xe}function Hi(){return ve||(ve=new L,Object.freeze(ve)),ve}var Ve="KHR_texture_transform",Ui=Ve,Qe=new j,Pi=new L,Ni=new L;async function Ki(r,e){if(!new d(r).hasExtension(Ve)||!e.gltf?.loadBuffers)return;let s=r.json.materials||[];for(let o=0;o<s.length;o++)ji(o,r)}function ji(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?.[Ve]&&Xi(e,r,o,s)}function Xi(r,e,t,n){let s=vi(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&&Qi(r,a,s)}}function vi(r,e){let t=r.extensions?.[Ve],{texCoord:n=0}=r,{texCoord:s=n}=t;if(!(e.findIndex(([i,a])=>i===n&&a===s)!==-1)){let i=ki(t);return n!==s&&(r.texCoord=s),e.push([n,s]),{originalTexCoord:n,texCoord:s,matrix:i}}return null}function Qi(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!==void 0){let c=r.json.bufferViews?.[a.bufferView];if(c){let{arrayBuffer:f,byteOffset:A}=r.buffers[c.buffer],u=(A||0)+(a.byteOffset||0)+(c.byteOffset||0),{ArrayType:B,length:m}=Q(a,c),l=Me[a.componentType],p=Te[a.type],x=c.byteStride||l*p,I=new Float32Array(m);for(let w=0;w<a.count;w++){let v=new B(f,u+w*x,2);Qe.set(v[0],v[1],1),Qe.transformByMatrix3(o),I.set([Qe[0],Qe[1]],w*p)}n===s?Vi(a,r,I,a.bufferView):Yi(s,a,e,r,I)}}}}function Vi(r,e,t,n){r.componentType=5126,r.byteOffset=0;let i=(e.json.accessors||[]).reduce((f,A)=>A.bufferView===n?f+1:f,0)>1;e.buffers.push({arrayBuffer:J(t.buffer),byteOffset:0,byteLength:t.buffer.byteLength});let a=e.buffers.length-1;if(e.json.bufferViews=e.json.bufferViews||[],i){e.json.bufferViews.push({buffer:a,byteLength:t.buffer.byteLength,byteOffset:0}),r.bufferView=e.json.bufferViews.length-1;return}let c=e.json.bufferViews[n];c&&(c.buffer=a,c.byteOffset=0,c.byteLength=t.buffer.byteLength,c.byteStride!==void 0&&delete c.byteStride)}function Yi(r,e,t,n,s){n.buffers.push({arrayBuffer:J(s.buffer),byteOffset:0,byteLength:s.buffer.byteLength}),n.json.bufferViews=n.json.bufferViews||[];let o=n.json.bufferViews;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 ki(r){let{offset:e=[0,0],rotation:t=0,scale:n=[1,1]}=r,s=new L().set(1,0,0,0,1,0,e[0],e[1],1),o=Pi.set(Math.cos(t),Math.sin(t),0,-Math.sin(t),Math.cos(t),0,0,0,1),i=Ni.set(n[0],0,0,0,n[1],0,0,0,1);return s.multiplyRight(o).multiplyRight(i)}var Xt={};T(Xt,{decode:()=>Zi,encode:()=>qi,name:()=>Wi});var X="KHR_lights_punctual",Wi=X;async function Zi(r){let e=new d(r),{json:t}=e,n=e.getExtension(X);n&&(e.json.lights=n.lights,e.removeExtension(X));for(let s of t.nodes||[]){let o=e.getObjectExtension(s,X);o&&(s.light=o.light),e.removeObjectExtension(s,X)}}async function qi(r){let e=new d(r),{json:t}=e;if(t.lights){let n=e.addExtension(X);h(!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,X,n)}delete e.json.lights}}var vt={};T(vt,{decode:()=>$i,encode:()=>ea,name:()=>zi});var me="KHR_materials_unlit",zi=me;async function $i(r){let e=new d(r),{json:t}=e;for(let n of t.materials||[])n.extensions&&n.extensions.KHR_materials_unlit&&(n.unlit=!0),e.removeObjectExtension(n,me);e.removeExtension(me)}function ea(r){let e=new d(r),{json:t}=e;if(e.materials)for(let n of t.materials||[])n.unlit&&(delete n.unlit,e.addObjectExtension(n,me,{}),e.addExtension(me))}var Qt={};T(Qt,{decode:()=>ra,encode:()=>na,name:()=>ta});var de="KHR_techniques_webgl",ta=de;async function ra(r){let e=new d(r),{json:t}=e,n=e.getExtension(de);if(n){let s=sa(n,e);for(let o of t.materials||[]){let i=e.getObjectExtension(o,de);i&&(o.technique=Object.assign({},i,s[i.technique]),o.technique.values=oa(o.technique,e)),e.removeObjectExtension(o,de)}e.removeExtension(de)}}async function na(r,e){}function sa(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 oa(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 ln=[_e,Ge,Ft,It,Rt,wt,Xt,vt,Qt,jt,lt],ia=[_e,Ge];function pn(r,e={},t){let n=ln.filter(s=>En(s.name,e));for(let s of n)s.preprocess?.(r,e,t)}async function hn(r,e={},t){let n=ln.filter(s=>En(s.name,e));for(let s of n)await s.decode?.(r,e,t)}function Cn(r,e={}){for(let t of ia)r=t.encode?.(r,e)??r;return r}function En(r,e){let t=e?.gltf?.excludeExtensions||{};return!(r in t&&!t[r])}var Vt="KHR_binary_glTF";function gn(r){let e=new d(r),{json:t}=e;for(let n of t.images||[]){let s=e.getObjectExtension(n,Vt);s&&Object.assign(n,s),e.removeObjectExtension(n,Vt)}t.buffers&&t.buffers[0]&&delete t.buffers[0].uri,e.removeExtension(Vt)}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"},ca={accessor:"accessors",animations:"animation",buffer:"buffers",bufferView:"bufferViews",image:"images",material:"materials",mesh:"meshes",node:"nodes",sampler:"samplers",scene:"scenes",skin:"skins",texture:"textures"},Yt=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=ca[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 yn(r,e={}){return new Yt().normalize(r,e)}async function Tn(r,e,t=0,n,s){return fa(r,e,t,n),yn(r,{normalize:n?.gltf?.normalize}),pn(r,n,s),n?.gltf?.loadBuffers&&r.json.buffers&&await Aa(r,n,s),n?.gltf?.loadImages&&await ua(r,n,s),await hn(r,n,s),r}function fa(r,e,t,n){if(n.core?.baseUri&&(r.baseUri=n.core?.baseUri),e instanceof ArrayBuffer&&!Lr(e,t,n.glb)&&(e=new TextDecoder().decode(e)),typeof e=="string")r.json=ze(e);else if(e instanceof ArrayBuffer){let i={};t=Je(i,e,t,n.glb),h(i.type==="glTF",`Invalid GLB magic string ${i.type}`),r._glb=i,r.json=i.json}else h(!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 Aa(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;h(i);let a=Mt(o.uri,e),f=await(await t?.fetch?.(a))?.arrayBuffer?.();r.buffers[s]={arrayBuffer:f,byteOffset:0,byteLength:f.byteLength},delete o.uri}else r.buffers[s]===null&&(r.buffers[s]={arrayBuffer:new ArrayBuffer(o.byteLength),byteOffset:0,byteLength:o.byteLength})}}async function ua(r,e,t){let n=Ba(r),s=r.json.images||[],o=[];for(let i of n)o.push(ma(r,s[i],i,e,t));return await Promise.all(o)}function Ba(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 ma(r,e,t,n,s){let o;if(e.uri&&!e.hasOwnProperty("bufferView")){let f=Mt(e.uri,n),{fetch:A}=s;o=await(await A(f)).arrayBuffer(),e.bufferView={data:o}}if(Number.isFinite(e.bufferView)){let f=Cr(r.json,r.buffers,e.bufferView);o=oe(f.buffer,f.byteOffset,f.byteLength)}h(o,"glTF image has no data");let i=n,a={...i,core:{...i?.core,mimeType:e.mimeType},basis:i.basis||{format:Le()}},c=await re(o,[ot,gt],a,s);c&&c[0]&&(c={compressed:!0,mipmaps:!1,width:c[0].width,height:c[0].height,data:c[0]}),r.images=r.images||[],r.images[t]=c}var Ye={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:U,extensions:["gltf","glb"],mimeTypes:["model/gltf+json","model/gltf-binary"],text:!0,binary:!0,tests:["glTF"],parse:da,options:{gltf:{normalize:!0,loadBuffers:!0,loadImages:!0,decompressMeshes:!0}}};async function da(r,e={},t){let n={...Ye.options,...e};n.gltf={...Ye.options.gltf,...n.gltf};let s=e?.glb?.byteOffset||0;return await Tn({},r,s,n,t)}var la=1179937895,pa=1313821514,ha=5130562,S=!0;function le(r,e,t=0,n={}){let{magic:s=la,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 f=t+8;t+=12;let A=t;e&&(e.setUint32(t+0,0,S),e.setUint32(t+4,pa,S)),t+=8;let u=JSON.stringify(i);if(t=et(e,t,u,4),e){let B=t-A-8;e.setUint32(A+0,B,S)}if(a){let B=t;if(e&&(e.setUint32(t+0,0,S),e.setUint32(t+4,ha,S)),t+=8,t=ge(e,t,a,4),e){let m=t-B-8;e.setUint32(B+0,m,S)}}if(e){let B=t-c;e.setUint32(f,B,S)}return t}function kt(r,e,t,n){return Ca(r),le(r,e,t,n)}function Ca(r){if(r.buffers&&r.buffers.length>1)throw new Error("encodeGLTF: multiple buffers not yet implemented")}var bn={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:U,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{gltf:{}},encode:async(r,e={})=>Mn(r,e),encodeSync:Mn};function Mn(r,e={}){let{byteOffset:t=0}=e,n=Cn(r),s=kt(n,null,t,e),o=new ArrayBuffer(s),i=new DataView(o);return kt(n,i,t,e),o}var Fn={dataType:null,batchType:null,name:"GLB",id:"glb",module:"gltf",version:U,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,parse:Ea,parseSync:In,options:{glb:{strict:!1}}};async function Ea(r,e){return In(r,e)}function In(r,e){let t={};return Je(t,r,e?.glb?.byteOffset||0,e?.glb),t}var Dn={name:"GLB",id:"glb",module:"gltf",version:U,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=le(r,null,t,e),s=new ArrayBuffer(n),o=new DataView(s);return le(r,o,t,e),s}var ga={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},xa={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},ya={magFilter:F.TEXTURE_MAG_FILTER,minFilter:F.TEXTURE_MIN_FILTER,wrapS:F.TEXTURE_WRAP_S,wrapT:F.TEXTURE_WRAP_T},Ta={[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 Ma(){return{id:"default-sampler",parameters:Ta}}function ba(r){return xa[r]}function Fa(r){return ga[r]}var Wt=class{baseUri="";jsonUnprocessed;json;buffers=[];images=[];postProcess(e,t={}){let{json:n,buffers:s=[],images:o=[]}=e,{baseUri:i=""}=e;return h(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=Fa(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:f}=Q(i,i.bufferView),A=(i.bufferView.byteOffset||0)+(i.byteOffset||0)+a.byteOffset,u=ie(a.arrayBuffer,A,f);i.bufferView.byteStride&&(u=this._getValueFromInterleavedBuffer(a,A,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):Ma(),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 ya[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 Gn(r,e){return new Wt().postProcess(r,e)}return Un(pe);})();
8
8
  return __exports__;
9
9
  });
package/dist/index.cjs CHANGED
@@ -1695,7 +1695,7 @@ function processPrimitiveTextures(scenegraph, attributeName, featureTexturePrope
1695
1695
  }
1696
1696
 
1697
1697
  // dist/lib/utils/version.js
1698
- var VERSION = true ? "4.4.0-alpha.10" : "latest";
1698
+ var VERSION = true ? "4.4.0-alpha.11" : "latest";
1699
1699
 
1700
1700
  // dist/lib/parsers/parse-gltf.js
1701
1701
  var import_loader_utils7 = require("@loaders.gl/loader-utils");
@@ -1,5 +1,5 @@
1
1
  // Version constant cannot be imported, it needs to correspond to the build version of **this** module.
2
2
  // __VERSION__ is injected by babel-plugin-version-inline
3
3
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
4
- export const VERSION = typeof "4.4.0-alpha.10" !== 'undefined' ? "4.4.0-alpha.10" : 'latest';
4
+ export const VERSION = typeof "4.4.0-alpha.11" !== 'undefined' ? "4.4.0-alpha.11" : 'latest';
5
5
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/gltf",
3
- "version": "4.4.0-alpha.10",
3
+ "version": "4.4.0-alpha.11",
4
4
  "description": "Framework-independent loader for the glTF format",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -43,15 +43,15 @@
43
43
  "build-bundle-dev": "ocular-bundle ./bundle.ts --env=dev --output=dist/dist.dev.js"
44
44
  },
45
45
  "dependencies": {
46
- "@loaders.gl/draco": "4.4.0-alpha.10",
47
- "@loaders.gl/images": "4.4.0-alpha.10",
48
- "@loaders.gl/loader-utils": "4.4.0-alpha.10",
49
- "@loaders.gl/schema": "4.4.0-alpha.10",
50
- "@loaders.gl/textures": "4.4.0-alpha.10",
46
+ "@loaders.gl/draco": "4.4.0-alpha.11",
47
+ "@loaders.gl/images": "4.4.0-alpha.11",
48
+ "@loaders.gl/loader-utils": "4.4.0-alpha.11",
49
+ "@loaders.gl/schema": "4.4.0-alpha.11",
50
+ "@loaders.gl/textures": "4.4.0-alpha.11",
51
51
  "@math.gl/core": "^4.1.0"
52
52
  },
53
53
  "peerDependencies": {
54
54
  "@loaders.gl/core": "4.4.0-alpha.1"
55
55
  },
56
- "gitHead": "7b4dc3fdbaed20a2597c70c57efdcda5c404147f"
56
+ "gitHead": "3e9a77c2912342e8ad22db7df7517fe86e8e492d"
57
57
  }