@jdultra/threedtiles 13.0.3 → 13.0.5

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.
@@ -1,28 +1,28 @@
1
- "use strict";var it=Object.defineProperty;var st=(r,e,a)=>e in r?it(r,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):r[e]=a;var ie=(r,e,a)=>st(r,typeof e!="symbol"?e+"":e,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("three");var Te=typeof document<"u"?document.currentScript:null;function rt(r){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const a in r)if(a!=="default"){const t=Object.getOwnPropertyDescriptor(r,a);Object.defineProperty(e,a,t.get?t:{enumerable:!0,get:()=>r[a]})}}return e.default=r,Object.freeze(e)}const Q=rt(d),q=new d.Matrix3,v=new d.Vector3,oa=new d.Vector3,na=new d.Box3,ke=new d.Matrix4,ca=new d.Matrix4,da=new d.Ray;class ${constructor(e){this.center=new d.Vector3(e[0],e[1],e[2]),this.e1=new d.Vector3(e[3],e[4],e[5]),this.e2=new d.Vector3(e[6],e[7],e[8]),this.e3=new d.Vector3(e[9],e[10],e[11]),this.halfSize=new d.Vector3(this.e1.length(),this.e2.length(),this.e3.length()),this.e1.normalize(),this.e2.normalize(),this.e3.normalize(),this.rotationMatrix=new d.Matrix3,this.rotationMatrix.set(this.e1.x,this.e1.y,this.e1.z,this.e2.x,this.e2.y,this.e2.z,this.e3.x,this.e3.y,this.e3.z)}copy(e){this.center.copy(e.center),this.rotationMatrix.copy(e.rotationMatrix),this.halfSize.copy(e.halfSize)}getSize(e){return e.copy(this.halfSize).multiplyScalar(2)}applyMatrix4(e){const a=e.elements;let t=v.set(a[0],a[1],a[2]).length();const A=v.set(a[4],a[5],a[6]).length(),i=v.set(a[8],a[9],a[10]).length();e.determinant()<0&&(t=-t),q.setFromMatrix4(e);const s=1/t,o=1/A,c=1/i;return q.elements[0]*=s,q.elements[1]*=s,q.elements[2]*=s,q.elements[3]*=o,q.elements[4]*=o,q.elements[5]*=o,q.elements[6]*=c,q.elements[7]*=c,q.elements[8]*=c,this.rotationMatrix.multiply(q),this.halfSize.x*=t,this.halfSize.y*=A,this.halfSize.z*=i,v.setFromMatrixPosition(e),this.center.applyMatrix4(e),this}intersectRay(e,a){return this.getSize(oa),na.setFromCenterAndSize(v.set(0,0,0),oa),ke.setFromMatrix3(this.rotationMatrix),ke.setPosition(this.center),ca.copy(ke).invert(),da.copy(e).applyMatrix4(ca),da.intersectBox(na,a)?a.applyMatrix4(ke):null}intersectsRay(e){return this.intersectRay(e,v)!==null}insidePlane(e){const a=this.halfSize.x*Math.abs(e.normal.dot(this.e1))+this.halfSize.y*Math.abs(e.normal.dot(this.e2))+this.halfSize.z*Math.abs(e.normal.dot(this.e3)),t=e.distanceToPoint(this.center);return[Math.abs(t)<=a,t>-a]}inFrustum(e){this.rotationMatrix.extractBasis(this.e1,this.e2,this.e3);for(let a=0;a<6;a++){const t=e.planes[a];if(!this.insidePlane(t)[1])return!1}return!0}distanceToPoint(e){v.copy(e),v.sub(this.center),v.applyMatrix3(this.rotationMatrix);let a=Math.max(0,Math.max(-this.halfSize.x-v.x,v.x-this.halfSize.x)),t=Math.max(0,Math.max(-this.halfSize.y-v.y,v.y-this.halfSize.y)),A=Math.max(0,Math.max(-this.halfSize.z-v.z,v.z-this.halfSize.z));return Math.sqrt(a*a+t*t+A*A)}}/**
1
+ "use strict";var it=Object.defineProperty;var st=(r,e,a)=>e in r?it(r,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):r[e]=a;var ie=(r,e,a)=>st(r,typeof e!="symbol"?e+"":e,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("three");var Te=typeof document<"u"?document.currentScript:null;function rt(r){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const a in r)if(a!=="default"){const t=Object.getOwnPropertyDescriptor(r,a);Object.defineProperty(e,a,t.get?t:{enumerable:!0,get:()=>r[a]})}}return e.default=r,Object.freeze(e)}const Q=rt(d),q=new d.Matrix3,v=new d.Vector3,na=new d.Vector3,oa=new d.Box3,ke=new d.Matrix4,ca=new d.Matrix4,da=new d.Ray;class ${constructor(e){this.center=new d.Vector3(e[0],e[1],e[2]),this.e1=new d.Vector3(e[3],e[4],e[5]),this.e2=new d.Vector3(e[6],e[7],e[8]),this.e3=new d.Vector3(e[9],e[10],e[11]),this.halfSize=new d.Vector3(this.e1.length(),this.e2.length(),this.e3.length()),this.e1.normalize(),this.e2.normalize(),this.e3.normalize(),this.rotationMatrix=new d.Matrix3,this.rotationMatrix.set(this.e1.x,this.e1.y,this.e1.z,this.e2.x,this.e2.y,this.e2.z,this.e3.x,this.e3.y,this.e3.z)}copy(e){this.center.copy(e.center),this.rotationMatrix.copy(e.rotationMatrix),this.halfSize.copy(e.halfSize)}getSize(e){return e.copy(this.halfSize).multiplyScalar(2)}applyMatrix4(e){const a=e.elements;let t=v.set(a[0],a[1],a[2]).length();const A=v.set(a[4],a[5],a[6]).length(),i=v.set(a[8],a[9],a[10]).length();e.determinant()<0&&(t=-t),q.setFromMatrix4(e);const s=1/t,n=1/A,c=1/i;return q.elements[0]*=s,q.elements[1]*=s,q.elements[2]*=s,q.elements[3]*=n,q.elements[4]*=n,q.elements[5]*=n,q.elements[6]*=c,q.elements[7]*=c,q.elements[8]*=c,this.rotationMatrix.multiply(q),this.halfSize.x*=t,this.halfSize.y*=A,this.halfSize.z*=i,v.setFromMatrixPosition(e),this.center.applyMatrix4(e),this}intersectRay(e,a){return this.getSize(na),oa.setFromCenterAndSize(v.set(0,0,0),na),ke.setFromMatrix3(this.rotationMatrix),ke.setPosition(this.center),ca.copy(ke).invert(),da.copy(e).applyMatrix4(ca),da.intersectBox(oa,a)?a.applyMatrix4(ke):null}intersectsRay(e){return this.intersectRay(e,v)!==null}insidePlane(e){const a=this.halfSize.x*Math.abs(e.normal.dot(this.e1))+this.halfSize.y*Math.abs(e.normal.dot(this.e2))+this.halfSize.z*Math.abs(e.normal.dot(this.e3)),t=e.distanceToPoint(this.center);return[Math.abs(t)<=a,t>-a]}inFrustum(e){this.rotationMatrix.extractBasis(this.e1,this.e2,this.e3);for(let a=0;a<6;a++){const t=e.planes[a];if(!this.insidePlane(t)[1])return!1}return!0}distanceToPoint(e){v.copy(e),v.sub(this.center),v.applyMatrix3(this.rotationMatrix);let a=Math.max(0,Math.max(-this.halfSize.x-v.x,v.x-this.halfSize.x)),t=Math.max(0,Math.max(-this.halfSize.y-v.y,v.y-this.halfSize.y)),A=Math.max(0,Math.max(-this.halfSize.z-v.z,v.z-this.halfSize.z));return Math.sqrt(a*a+t*t+A*A)}}/**
2
2
  * @copyright 2021 Aaron Zhao <yujianzhao2013@gmail.com>
3
3
  * @license MIT
4
4
  * Heap implementation using 1-d array
5
5
  * Children is index of 2n + 1 and 2n + 2 where n is the parent index
6
6
  * Parent is math.floor((m - 1) / 2) where m is is the child index
7
7
  * @class Heap
8
- */var ot=class{constructor(r,e){if(this._data=[],this._comparator=function(a,t){return a>=t},r!=null){if(!Array.isArray(r))throw Error("Constructor expects data to be an array");this._data=r}if(e!=null){if(typeof e!="function")throw Error("Constructor expects comparator to be a function");this._comparator=e}}peek(){return this.size()<1?null:this._data[0]}pop(){if(this.size()<1)return null;const r=this._data[0];return this.swap(this.size()-1,0),this._data.pop(),this.heapifyDown(0),r}replaceTop(r){if(this.size()<1)return null;const e=this._data[0];return this._data[0]=r,this.heapifyDown(0),e}push(r){this._data.push(r),this.heapifyUp(this._data.length-1)}size(){return this._data.length}swap(r,e){const a=this._data[r];this._data[r]=this._data[e],this._data[e]=a}heapifyUp(r){if(r===0)return;const e=Math.floor((r-1)/2);this._comparator(this._data[r],this._data[e])||(this.swap(r,e),this.heapifyUp(e))}heapifyDown(r){const e=2*r+1,a=2*r+2;if(e>=this._data.length)return;const t=a<this._data.length&&!this._comparator(this._data[a],this._data[e])?a:e;this._comparator(this._data[r],this._data[t])&&(this.swap(r,t),this.heapifyDown(t))}};/**
8
+ */var nt=class{constructor(r,e){if(this._data=[],this._comparator=function(a,t){return a>=t},r!=null){if(!Array.isArray(r))throw Error("Constructor expects data to be an array");this._data=r}if(e!=null){if(typeof e!="function")throw Error("Constructor expects comparator to be a function");this._comparator=e}}peek(){return this.size()<1?null:this._data[0]}pop(){if(this.size()<1)return null;const r=this._data[0];return this.swap(this.size()-1,0),this._data.pop(),this.heapifyDown(0),r}replaceTop(r){if(this.size()<1)return null;const e=this._data[0];return this._data[0]=r,this.heapifyDown(0),e}push(r){this._data.push(r),this.heapifyUp(this._data.length-1)}size(){return this._data.length}swap(r,e){const a=this._data[r];this._data[r]=this._data[e],this._data[e]=a}heapifyUp(r){if(r===0)return;const e=Math.floor((r-1)/2);this._comparator(this._data[r],this._data[e])||(this.swap(r,e),this.heapifyUp(e))}heapifyDown(r){const e=2*r+1,a=2*r+2;if(e>=this._data.length)return;const t=a<this._data.length&&!this._comparator(this._data[a],this._data[e])?a:e;this._comparator(this._data[r],this._data[t])&&(this.swap(r,t),this.heapifyDown(t))}};/**
9
9
  * @copyright 2021 Aaron Zhao <yujianzhao2013@gmail.com>
10
10
  * @license MIT
11
11
  * FIFO queue data structure
12
12
  * @class Queue
13
- */var nt=class{constructor(r,e){if(this._data=[],this._head=0,this._cap=null,r!=null){if(!Array.isArray(r))throw Error("Constructor expects data to be an array");this._data=r}if(e!=null){if(typeof e!="number")throw Error("Constructor expects capacity to be a number");this._cap=e}}enqueue(r){return!(this._cap!=null&&this.size()>=this._cap)&&(this._data.push(r),!0)}dequeue(){if(this.size()===0)return null;const r=this._data[this._head];return this._head+=1,2*this._head>=this._data.length&&(this._data=this._data.slice(this._head),this._head=0),r}peek(r=!1){return this.size()>0?r?this._data[this._data.length-1]:this._data[this._head]:null}size(){return this._data.length-this._head}updateCapacity(r){this._cap=r}reset(){this._data=[],this._head=0}forEach(r){for(let e=this._head;e<this._data.length;e+=1)r(this._data[e],e-this._head)}toArray(){return this._data.slice(this._head)}};/**
13
+ */var ot=class{constructor(r,e){if(this._data=[],this._head=0,this._cap=null,r!=null){if(!Array.isArray(r))throw Error("Constructor expects data to be an array");this._data=r}if(e!=null){if(typeof e!="number")throw Error("Constructor expects capacity to be a number");this._cap=e}}enqueue(r){return!(this._cap!=null&&this.size()>=this._cap)&&(this._data.push(r),!0)}dequeue(){if(this.size()===0)return null;const r=this._data[this._head];return this._head+=1,2*this._head>=this._data.length&&(this._data=this._data.slice(this._head),this._head=0),r}peek(r=!1){return this.size()>0?r?this._data[this._data.length-1]:this._data[this._head]:null}size(){return this._data.length-this._head}updateCapacity(r){this._cap=r}reset(){this._data=[],this._head=0}forEach(r){for(let e=this._head;e<this._data.length;e+=1)r(this._data[e],e-this._head)}toArray(){return this._data.slice(this._head)}};/**
14
14
  * @copyright 2021 Aaron Zhao <yujianzhao2013@gmail.com>
15
15
  * @license MIT
16
16
  * Linked hash map data structure
17
17
  * @class LinkedHashMap
18
- */var Ra={Heap:ot,Queue:nt,LinkedHashMap:class{constructor(){this._data=new Map,this._link=new Map,this._head=void 0,this._tail=void 0}put(r,e,a=!1){this.has(r)?this._data.set(r,e):(this._data.set(r,e),this._link.set(r,{previous:void 0,next:void 0}),this._head==null?(this._head=r,this._tail=r):a?(this._link.get(this._head).previous=r,this._link.get(r).next=this._head,this._head=r):(this._link.get(this._tail).next=r,this._link.get(r).previous=this._tail,this._tail=r))}head(){return{key:this._head,value:this.get(this._head),next:()=>this.next(this._head),previous:()=>null}}tail(){return{key:this._tail,value:this.get(this._tail),next:()=>null,previous:()=>this.previous(this._tail)}}get(r){return this._data.get(r)}previousKey(r){const e=this._link.get(r);return e!=null?e.previous:void 0}previousValue(r){return this.get(this.previousKey(r))}previous(r){const e=this.previousKey(r);return{key:e,value:this.get(e),next:()=>this.next(e),previous:()=>this.previous(e)}}nextKey(r){const e=this._link.get(r);return e!=null?e.next:void 0}nextValue(r){return this.get(this.nextKey(r))}next(r){const e=this.nextKey(r);return{key:e,value:this.get(e),next:()=>this.next(e),previous:()=>this.previous(e)}}remove(r){const e=this._data.get(r);if(e!=null)if(this.size()===1)this.reset();else{if(r===this._head){const a=this._link.get(this._head);this._link.get(a.next).previous=null,this._head=a.next}else if(r===this._tail){const a=this._link.get(this._tail);this._link.get(a.previous).next=null,this._tail=a.previous}else{const a=this._link.get(r),t=this._link.get(a.previous),A=this._link.get(a.next);t.next=a.next,A.previous=a.previous}this._link.delete(r),this._data.delete(r)}return e}has(r){return this._data.has(r)}size(){return this._data.size}reset(){this._data.clear(),this._link.clear(),this._head=void 0,this._tail=void 0}keys(){return this._data.keys()}values(){return this._data.values()}entries(){return this._data.entries()}toArray(r="orderByInsert"){if(r!=="orderByInsert"){const e=[];let a=this._head;for(;a!=null;)e.push({key:a,value:this.get(a)}),a=this.nextKey(a);return e}return Array.from(this.keys()).map(e=>({key:e,value:this.get(e)}))}}};const ct=new TextDecoder;class Fa{constructor(e,a,t,A){this.buffer=e,this.binOffset=a+t,this.binLength=A;let i=null;if(t!==0)try{const s=new Uint8Array(e,a,t);i=JSON.parse(ct.decode(s))}catch{i={}}else i={};this.header=i}getKeys(){return Object.keys(this.header)}getData(e,a,t=null,A=null){const i=this.header;if(!(e in i))return null;const s=i[e];if(s instanceof Object){if(Array.isArray(s))return s;{const{buffer:o,binOffset:c,binLength:n}=this,b=s.byteOffset||0,l=s.type||A,h=s.componentType||t;if("type"in s&&A&&s.type!==A)throw new Error("FeatureTable: Specified type does not match expected type.");let f,g;switch(l){case"SCALAR":f=1;break;case"VEC2":f=2;break;case"VEC3":f=3;break;case"VEC4":f=4;break;default:throw new Error(`FeatureTable : Feature type not provided for "${e}".`)}const u=c+b,I=a*f;switch(h){case"BYTE":g=new Int8Array(o,u,I);break;case"UNSIGNED_BYTE":g=new Uint8Array(o,u,I);break;case"SHORT":g=new Int16Array(o,u,I);break;case"UNSIGNED_SHORT":g=new Uint16Array(o,u,I);break;case"INT":g=new Int32Array(o,u,I);break;case"UNSIGNED_INT":g=new Uint32Array(o,u,I);break;case"FLOAT":g=new Float32Array(o,u,I);break;case"DOUBLE":g=new Float64Array(o,u,I);break;default:throw new Error(`FeatureTable : Feature component type not provided for "${e}".`)}if(u+I*g.BYTES_PER_ELEMENT>c+n)throw new Error("FeatureTable: Feature data read outside binary body length.");return g}}return s}}class dt extends Fa{constructor(e,a,t,A,i){super(e,t,A,i),this.batchSize=a}getData(e,a=null,t=null){return super.getData(e,this.batchSize,a,t)}}function ba(r){let e,a,t,A=-1,i=0;for(let n=0;n<r.length;++n){const b=r[n];if(e===void 0&&(e=b.array.constructor),e!==b.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(a===void 0&&(a=b.itemSize),a!==b.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(t===void 0&&(t=b.normalized),t!==b.normalized)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;if(A===-1&&(A=b.gpuType),A!==b.gpuType)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes."),null;i+=b.count*a}const s=new e(i),o=new d.BufferAttribute(s,a,t);let c=0;for(let n=0;n<r.length;++n){const b=r[n];if(b.isInterleavedBufferAttribute){const l=c/a;for(let h=0,f=b.count;h<f;h++)for(let g=0;g<a;g++){const u=b.getComponent(h,g);o.setComponent(h+l,g,u)}}else s.set(b.array,c);c+=b.count*a}return A!==void 0&&(o.gpuType=A),o}function la(r,e){if(e===d.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),r;if(e===d.TriangleFanDrawMode||e===d.TriangleStripDrawMode){let a=r.getIndex();if(a===null){const s=[],o=r.getAttribute("position");if(o===void 0)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),r;for(let c=0;c<o.count;c++)s.push(c);r.setIndex(s),a=r.getIndex()}const t=a.count-2,A=[];if(e===d.TriangleFanDrawMode)for(let s=1;s<=t;s++)A.push(a.getX(0)),A.push(a.getX(s)),A.push(a.getX(s+1));else for(let s=0;s<t;s++)s%2==0?(A.push(a.getX(s)),A.push(a.getX(s+1)),A.push(a.getX(s+2))):(A.push(a.getX(s+2)),A.push(a.getX(s+1)),A.push(a.getX(s)));A.length/3!==t&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const i=r.clone();return i.setIndex(A),i.clearGroups(),i}return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",e),r}class Sa{constructor(e){ie(this,"checkLoaderInitialized",async()=>new Promise(e=>{const a=setInterval(()=>{this.gltfLoader.hasDracoLoader&&!this.gltfLoader.dracoLoader||this.gltfLoader.hasKTX2Loader&&!this.gltfLoader.ktx2Loader||(clearInterval(a),e())},10)}));this.gltfLoader=e,this.tempMatrix=new Q.Matrix4,this.zUpToYUpMatrix=new Q.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1)}parseB3DM(e,a,t,A){const i=this,s=new DataView(e),o=String.fromCharCode(s.getUint8(0))+String.fromCharCode(s.getUint8(1))+String.fromCharCode(s.getUint8(2))+String.fromCharCode(s.getUint8(3));console.assert(o==="b3dm");const c=s.getUint32(8,!0);console.assert(c===e.byteLength);const n=s.getUint32(12,!0),b=s.getUint32(16,!0),l=s.getUint32(20,!0),h=s.getUint32(24,!0),f=new Fa(e,28,n,b),g=28+n+b;new dt(e,f.getData("BATCH_LENGTH"),g,l,h);const u=g+l+h,I=new Uint8Array(e,u,c-u).slice().buffer;return new Promise(async(p,B)=>{await this.checkLoaderInitialized(),this.gltfLoader.parse(I,null,m=>{const C=f.getData("RTC_CENTER");C?(this.tempMatrix.makeTranslation(C[0],C[1],C[2]),m.scene.applyMatrix4(this.tempMatrix)):m.userData.gltfExtensions&&m.userData.gltfExtensions.CESIUM_RTC&&(this.tempMatrix.makeTranslation(m.userData.gltfExtensions.CESIUM_RTC.center[0],m.userData.gltfExtensions.CESIUM_RTC.center[1],m.userData.gltfExtensions.CESIUM_RTC.center[2]),m.scene.applyMatrix4(this.tempMatrix)),t&&m.scene.applyMatrix4(i.zUpToYUpMatrix),m.scene.asset=m.asset,m.scene.traverse(w=>{w.isMesh&&(A&&w.applyMatrix4(i.zUpToYUpMatrix),a&&a(w))}),p(m.scene)},m=>{console.error(m)})})}parseB3DMInstanced(e,a,t,A,i){return this.parseB3DM(e,a,A,i).then(s=>{let o,c=[],n=[];s.updateWorldMatrix(!1,!0),s.traverse(l=>{l.isMesh&&(l.geometry.applyMatrix4(l.matrixWorld),c.push(l.geometry),n.push(l.material))});let b=function(l){let h=new Set;return l.forEach(g=>{for(let u in g.attributes)h.add(u)}),l.forEach(g=>{h.forEach(u=>{if(!g.attributes[u]){const I=function(B){switch(B){case"position":case"normal":case"color":return 3;case"uv":case"uv2":return 2;default:throw new Error(`Unknown attribute ${B}`)}}(u),p=new Float32Array(I*g.getAttribute("position").count).fill(0);g.setAttribute(u,new Q.BufferAttribute(p,I))}})}),function(g,u=!1){const I=g[0].index!==null,p=new Set(Object.keys(g[0].attributes)),B=new Set(Object.keys(g[0].morphAttributes)),m={},C={},w=g[0].morphTargetsRelative,k=new d.BufferGeometry;let x=0;for(let E=0;E<g.length;++E){const y=g[E];let D=0;if(I!==(y.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+E+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(const j in y.attributes){if(!p.has(j))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+E+'. All geometries must have compatible attributes; make sure "'+j+'" attribute exists among all geometries, or in none of them.'),null;m[j]===void 0&&(m[j]=[]),m[j].push(y.attributes[j]),D++}if(D!==p.size)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+E+". Make sure all geometries have the same number of attributes."),null;if(w!==y.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+E+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(const j in y.morphAttributes){if(!B.has(j))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+E+". .morphAttributes must be consistent throughout all geometries."),null;C[j]===void 0&&(C[j]=[]),C[j].push(y.morphAttributes[j])}if(u){let j;if(I)j=y.index.count;else{if(y.attributes.position===void 0)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+E+". The geometry must have either an index or a position attribute"),null;j=y.attributes.position.count}k.addGroup(x,j,E),x+=j}}if(I){let E=0;const y=[];for(let D=0;D<g.length;++D){const j=g[D].index;for(let F=0;F<j.count;++F)y.push(j.getX(F)+E);E+=g[D].attributes.position.count}k.setIndex(y)}for(const E in m){const y=ba(m[E]);if(!y)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+E+" attribute."),null;k.setAttribute(E,y)}for(const E in C){const y=C[E][0].length;if(y===0)break;k.morphAttributes=k.morphAttributes||{},k.morphAttributes[E]=[];for(let D=0;D<y;++D){const j=[];for(let N=0;N<C[E].length;++N)j.push(C[E][N][D]);const F=ba(j);if(!F)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+E+" morphAttribute."),null;k.morphAttributes[E].push(F)}}return k}(l,!0)}(c);return o=new Q.InstancedMesh(b,n,t),o.baseMatrix=new Q.Matrix4().identity(),o})}}var ve,bt=new Uint8Array(16);function lt(){if(!ve&&!(ve=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto<"u"&&typeof msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return ve(bt)}const ht=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;for(var S=[],Le=0;Le<256;++Le)S.push((Le+256).toString(16).substr(1));function gt(r){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=(S[r[e+0]]+S[r[e+1]]+S[r[e+2]]+S[r[e+3]]+"-"+S[r[e+4]]+S[r[e+5]]+"-"+S[r[e+6]]+S[r[e+7]]+"-"+S[r[e+8]]+S[r[e+9]]+"-"+S[r[e+10]]+S[r[e+11]]+S[r[e+12]]+S[r[e+13]]+S[r[e+14]]+S[r[e+15]]).toLowerCase();if(!function(t){return typeof t=="string"&&ht.test(t)}(a))throw TypeError("Stringified UUID is invalid");return a}function Ta(r,e,a){var t=(r=r||{}).random||(r.rng||lt)();return t[6]=15&t[6]|64,t[8]=63&t[8]|128,gt(t)}class ft{constructor(e,a){ie(this,"checkLoaderInitialized",async()=>{const e=this;return new Promise(a=>{const t=setInterval(()=>{e.gltfLoader.hasDracoLoader&&!e.gltfLoader.dracoLoader||e.gltfLoader.hasKTX2Loader&&!e.gltfLoader.ktx2Loader||(clearInterval(t),a())},10)})});this.renderer=a,this.gltfLoader=e}parseSplats(e,a,t,A){const i=this;return new Promise(async(s,o)=>{await i.checkLoaderInitialized(),i.gltfLoader.parse(e,null,c=>{c.scene;const n=c.scene.children[0],b=n.geometry.attributes.position,l=n.geometry.attributes.color,h=n.geometry.attributes.cov_0,f=n.geometry.attributes.cov_1,g=A.addSplatsTile(b,l,h,f);c.scene.traverse(u=>{u.dispose&&u.dispose()}),s(g)},c=>{console.error(c)})})}}class va extends d.Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(a){return new Ct(a)}),this.register(function(a){return new mt(a)}),this.register(function(a){return new Mt(a)}),this.register(function(a){return new Rt(a)}),this.register(function(a){return new Ft(a)}),this.register(function(a){return new Qt(a)}),this.register(function(a){return new yt(a)}),this.register(function(a){return new wt(a)}),this.register(function(a){return new xt(a)}),this.register(function(a){return new Bt(a)}),this.register(function(a){return new kt(a)}),this.register(function(a){return new Et(a)}),this.register(function(a){return new jt(a)}),this.register(function(a){return new Dt(a)}),this.register(function(a){return new It(a)}),this.register(function(a){return new St(a)}),this.register(function(a){return new Tt(a)})}load(e,a,t,A){const i=this;let s;if(this.resourcePath!=="")s=this.resourcePath;else if(this.path!==""){const n=d.LoaderUtils.extractUrlBase(e);s=d.LoaderUtils.resolveURL(n,this.path)}else s=d.LoaderUtils.extractUrlBase(e);this.manager.itemStart(e);const o=function(n){A?A(n):console.error(n),i.manager.itemError(e),i.manager.itemEnd(e)},c=new d.FileLoader(this.manager);c.setPath(this.path),c.setResponseType("arraybuffer"),c.setRequestHeader(this.requestHeader),c.setWithCredentials(this.withCredentials),c.load(e,function(n){try{i.parse(n,s,function(b){a(b),i.manager.itemEnd(e)},o)}catch(b){o(b)}},t,o)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,a,t,A){let i;const s={},o={},c=new TextDecoder;if(typeof e=="string")i=JSON.parse(e);else if(e instanceof ArrayBuffer)if(c.decode(new Uint8Array(e,0,4))===La){try{s[M.KHR_BINARY_GLTF]=new Gt(e)}catch(b){return void(A&&A(b))}i=JSON.parse(s[M.KHR_BINARY_GLTF].content)}else i=JSON.parse(c.decode(e));else i=e;if(i.asset===void 0||i.asset.version[0]<2)return void(A&&A(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")));const n=new Wt(i,{path:a||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});n.fileLoader.setRequestHeader(this.requestHeader);for(let b=0;b<this.pluginCallbacks.length;b++){const l=this.pluginCallbacks[b](n);l.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),o[l.name]=l,s[l.name]=!0}if(i.extensionsUsed)for(let b=0;b<i.extensionsUsed.length;++b){const l=i.extensionsUsed[b],h=i.extensionsRequired||[];switch(l){case M.KHR_MATERIALS_UNLIT:s[l]=new pt;break;case M.KHR_DRACO_MESH_COMPRESSION:s[l]=new Ut(i,this.dracoLoader);break;case M.KHR_TEXTURE_TRANSFORM:s[l]=new Nt;break;case M.KHR_MESH_QUANTIZATION:s[l]=new Pt;break;default:h.indexOf(l)>=0&&o[l]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+l+'".')}}n.setExtensions(s),n.setPlugins(o),n.parse(t,A)}parseAsync(e,a){const t=this;return new Promise(function(A,i){t.parse(e,a,A,i)})}}function ut(){let r={};return{get:function(e){return r[e]},add:function(e,a){r[e]=a},remove:function(e){delete r[e]},removeAll:function(){r={}}}}const M={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class It{constructor(e){this.parser=e,this.name=M.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,a=this.parser.json.nodes||[];for(let t=0,A=a.length;t<A;t++){const i=a[t];i.extensions&&i.extensions[this.name]&&i.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,i.extensions[this.name].light)}}_loadLight(e){const a=this.parser,t="light:"+e;let A=a.cache.get(t);if(A)return A;const i=a.json,s=((i.extensions&&i.extensions[this.name]||{}).lights||[])[e];let o;const c=new d.Color(16777215);s.color!==void 0&&c.setRGB(s.color[0],s.color[1],s.color[2],d.LinearSRGBColorSpace);const n=s.range!==void 0?s.range:0;switch(s.type){case"directional":o=new d.DirectionalLight(c),o.target.position.set(0,0,-1),o.add(o.target);break;case"point":o=new d.PointLight(c),o.distance=n;break;case"spot":o=new d.SpotLight(c),o.distance=n,s.spot=s.spot||{},s.spot.innerConeAngle=s.spot.innerConeAngle!==void 0?s.spot.innerConeAngle:0,s.spot.outerConeAngle=s.spot.outerConeAngle!==void 0?s.spot.outerConeAngle:Math.PI/4,o.angle=s.spot.outerConeAngle,o.penumbra=1-s.spot.innerConeAngle/s.spot.outerConeAngle,o.target.position.set(0,0,-1),o.add(o.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+s.type)}return o.position.set(0,0,0),o.decay=2,Z(o,s),s.intensity!==void 0&&(o.intensity=s.intensity),o.name=a.createUniqueName(s.name||"light_"+e),A=Promise.resolve(o),a.cache.add(t,A),A}getDependency(e,a){if(e==="light")return this._loadLight(a)}createNodeAttachment(e){const a=this,t=this.parser,A=t.json.nodes[e],i=(A.extensions&&A.extensions[this.name]||{}).light;return i===void 0?null:this._loadLight(i).then(function(s){return t._getNodeRef(a.cache,i,s)})}}class pt{constructor(){this.name=M.KHR_MATERIALS_UNLIT}getMaterialType(){return d.MeshBasicMaterial}extendParams(e,a,t){const A=[];e.color=new d.Color(1,1,1),e.opacity=1;const i=a.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){const s=i.baseColorFactor;e.color.setRGB(s[0],s[1],s[2],d.LinearSRGBColorSpace),e.opacity=s[3]}i.baseColorTexture!==void 0&&A.push(t.assignTexture(e,"map",i.baseColorTexture,d.SRGBColorSpace))}return Promise.all(A)}}class Bt{constructor(e){this.parser=e,this.name=M.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,a){const t=this.parser.json.materials[e];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const A=t.extensions[this.name].emissiveStrength;return A!==void 0&&(a.emissiveIntensity=A),Promise.resolve()}}class Ct{constructor(e){this.parser=e,this.name=M.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?d.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,A=t.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const i=[],s=A.extensions[this.name];if(s.clearcoatFactor!==void 0&&(a.clearcoat=s.clearcoatFactor),s.clearcoatTexture!==void 0&&i.push(t.assignTexture(a,"clearcoatMap",s.clearcoatTexture)),s.clearcoatRoughnessFactor!==void 0&&(a.clearcoatRoughness=s.clearcoatRoughnessFactor),s.clearcoatRoughnessTexture!==void 0&&i.push(t.assignTexture(a,"clearcoatRoughnessMap",s.clearcoatRoughnessTexture)),s.clearcoatNormalTexture!==void 0&&(i.push(t.assignTexture(a,"clearcoatNormalMap",s.clearcoatNormalTexture)),s.clearcoatNormalTexture.scale!==void 0)){const o=s.clearcoatNormalTexture.scale;a.clearcoatNormalScale=new d.Vector2(o,o)}return Promise.all(i)}}class mt{constructor(e){this.parser=e,this.name=M.KHR_MATERIALS_DISPERSION}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?d.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser.json.materials[e];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const A=t.extensions[this.name];return a.dispersion=A.dispersion!==void 0?A.dispersion:0,Promise.resolve()}}class Et{constructor(e){this.parser=e,this.name=M.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?d.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,A=t.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const i=[],s=A.extensions[this.name];return s.iridescenceFactor!==void 0&&(a.iridescence=s.iridescenceFactor),s.iridescenceTexture!==void 0&&i.push(t.assignTexture(a,"iridescenceMap",s.iridescenceTexture)),s.iridescenceIor!==void 0&&(a.iridescenceIOR=s.iridescenceIor),a.iridescenceThicknessRange===void 0&&(a.iridescenceThicknessRange=[100,400]),s.iridescenceThicknessMinimum!==void 0&&(a.iridescenceThicknessRange[0]=s.iridescenceThicknessMinimum),s.iridescenceThicknessMaximum!==void 0&&(a.iridescenceThicknessRange[1]=s.iridescenceThicknessMaximum),s.iridescenceThicknessTexture!==void 0&&i.push(t.assignTexture(a,"iridescenceThicknessMap",s.iridescenceThicknessTexture)),Promise.all(i)}}class Qt{constructor(e){this.parser=e,this.name=M.KHR_MATERIALS_SHEEN}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?d.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,A=t.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const i=[];a.sheenColor=new d.Color(0,0,0),a.sheenRoughness=0,a.sheen=1;const s=A.extensions[this.name];if(s.sheenColorFactor!==void 0){const o=s.sheenColorFactor;a.sheenColor.setRGB(o[0],o[1],o[2],d.LinearSRGBColorSpace)}return s.sheenRoughnessFactor!==void 0&&(a.sheenRoughness=s.sheenRoughnessFactor),s.sheenColorTexture!==void 0&&i.push(t.assignTexture(a,"sheenColorMap",s.sheenColorTexture,d.SRGBColorSpace)),s.sheenRoughnessTexture!==void 0&&i.push(t.assignTexture(a,"sheenRoughnessMap",s.sheenRoughnessTexture)),Promise.all(i)}}class yt{constructor(e){this.parser=e,this.name=M.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?d.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,A=t.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const i=[],s=A.extensions[this.name];return s.transmissionFactor!==void 0&&(a.transmission=s.transmissionFactor),s.transmissionTexture!==void 0&&i.push(t.assignTexture(a,"transmissionMap",s.transmissionTexture)),Promise.all(i)}}class wt{constructor(e){this.parser=e,this.name=M.KHR_MATERIALS_VOLUME}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?d.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,A=t.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const i=[],s=A.extensions[this.name];a.thickness=s.thicknessFactor!==void 0?s.thicknessFactor:0,s.thicknessTexture!==void 0&&i.push(t.assignTexture(a,"thicknessMap",s.thicknessTexture)),a.attenuationDistance=s.attenuationDistance||1/0;const o=s.attenuationColor||[1,1,1];return a.attenuationColor=new d.Color().setRGB(o[0],o[1],o[2],d.LinearSRGBColorSpace),Promise.all(i)}}class xt{constructor(e){this.parser=e,this.name=M.KHR_MATERIALS_IOR}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?d.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser.json.materials[e];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const A=t.extensions[this.name];return a.ior=A.ior!==void 0?A.ior:1.5,Promise.resolve()}}class kt{constructor(e){this.parser=e,this.name=M.KHR_MATERIALS_SPECULAR}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?d.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,A=t.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const i=[],s=A.extensions[this.name];a.specularIntensity=s.specularFactor!==void 0?s.specularFactor:1,s.specularTexture!==void 0&&i.push(t.assignTexture(a,"specularIntensityMap",s.specularTexture));const o=s.specularColorFactor||[1,1,1];return a.specularColor=new d.Color().setRGB(o[0],o[1],o[2],d.LinearSRGBColorSpace),s.specularColorTexture!==void 0&&i.push(t.assignTexture(a,"specularColorMap",s.specularColorTexture,d.SRGBColorSpace)),Promise.all(i)}}class Dt{constructor(e){this.parser=e,this.name=M.EXT_MATERIALS_BUMP}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?d.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,A=t.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const i=[],s=A.extensions[this.name];return a.bumpScale=s.bumpFactor!==void 0?s.bumpFactor:1,s.bumpTexture!==void 0&&i.push(t.assignTexture(a,"bumpMap",s.bumpTexture)),Promise.all(i)}}class jt{constructor(e){this.parser=e,this.name=M.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?d.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,A=t.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const i=[],s=A.extensions[this.name];return s.anisotropyStrength!==void 0&&(a.anisotropy=s.anisotropyStrength),s.anisotropyRotation!==void 0&&(a.anisotropyRotation=s.anisotropyRotation),s.anisotropyTexture!==void 0&&i.push(t.assignTexture(a,"anisotropyMap",s.anisotropyTexture)),Promise.all(i)}}class Mt{constructor(e){this.parser=e,this.name=M.KHR_TEXTURE_BASISU}loadTexture(e){const a=this.parser,t=a.json,A=t.textures[e];if(!A.extensions||!A.extensions[this.name])return null;const i=A.extensions[this.name],s=a.options.ktx2Loader;if(!s){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return a.loadTextureImage(e,i.source,s)}}class Rt{constructor(e){this.parser=e,this.name=M.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){const a=this.name,t=this.parser,A=t.json,i=A.textures[e];if(!i.extensions||!i.extensions[a])return null;const s=i.extensions[a],o=A.images[s.source];let c=t.textureLoader;if(o.uri){const n=t.options.manager.getHandler(o.uri);n!==null&&(c=n)}return this.detectSupport().then(function(n){if(n)return t.loadTextureImage(e,s.source,c);if(A.extensionsRequired&&A.extensionsRequired.indexOf(a)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return t.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const a=new Image;a.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",a.onload=a.onerror=function(){e(a.height===1)}})),this.isSupported}}class Ft{constructor(e){this.parser=e,this.name=M.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){const a=this.name,t=this.parser,A=t.json,i=A.textures[e];if(!i.extensions||!i.extensions[a])return null;const s=i.extensions[a],o=A.images[s.source];let c=t.textureLoader;if(o.uri){const n=t.options.manager.getHandler(o.uri);n!==null&&(c=n)}return this.detectSupport().then(function(n){if(n)return t.loadTextureImage(e,s.source,c);if(A.extensionsRequired&&A.extensionsRequired.indexOf(a)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return t.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const a=new Image;a.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",a.onload=a.onerror=function(){e(a.height===1)}})),this.isSupported}}class St{constructor(e){this.name=M.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const a=this.parser.json,t=a.bufferViews[e];if(t.extensions&&t.extensions[this.name]){const A=t.extensions[this.name],i=this.parser.getDependency("buffer",A.buffer),s=this.parser.options.meshoptDecoder;if(!s||!s.supported){if(a.extensionsRequired&&a.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return i.then(function(o){const c=A.byteOffset||0,n=A.byteLength||0,b=A.count,l=A.byteStride,h=new Uint8Array(o,c,n);return s.decodeGltfBufferAsync?s.decodeGltfBufferAsync(b,l,h,A.mode,A.filter).then(function(f){return f.buffer}):s.ready.then(function(){const f=new ArrayBuffer(b*l);return s.decodeGltfBuffer(new Uint8Array(f),b,l,h,A.mode,A.filter),f})})}return null}}class Tt{constructor(e){this.name=M.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const a=this.parser.json,t=a.nodes[e];if(!t.extensions||!t.extensions[this.name]||t.mesh===void 0)return null;const A=a.meshes[t.mesh];for(const c of A.primitives)if(c.mode!==P.TRIANGLES&&c.mode!==P.TRIANGLE_STRIP&&c.mode!==P.TRIANGLE_FAN&&c.mode!==void 0)return null;const i=t.extensions[this.name].attributes,s=[],o={};for(const c in i)s.push(this.parser.getDependency("accessor",i[c]).then(n=>(o[c]=n,o[c])));return s.length<1?null:(s.push(this.parser.createNodeMesh(e)),Promise.all(s).then(c=>{const n=c.pop(),b=n.isGroup?n.children:[n],l=c[0].count,h=[];for(const f of b){const g=new d.Matrix4,u=new d.Vector3,I=new d.Quaternion,p=new d.Vector3(1,1,1),B=new d.InstancedMesh(f.geometry,f.material,l);for(let m=0;m<l;m++)o.TRANSLATION&&u.fromBufferAttribute(o.TRANSLATION,m),o.ROTATION&&I.fromBufferAttribute(o.ROTATION,m),o.SCALE&&p.fromBufferAttribute(o.SCALE,m),B.setMatrixAt(m,g.compose(u,I,p));for(const m in o)if(m==="_COLOR_0"){const C=o[m];B.instanceColor=new d.InstancedBufferAttribute(C.array,C.itemSize,C.normalized)}else m!=="TRANSLATION"&&m!=="ROTATION"&&m!=="SCALE"&&f.geometry.setAttribute(m,o[m]);d.Object3D.prototype.copy.call(B,f),this.parser.assignFinalMaterial(B),h.push(B)}return n.isGroup?(n.clear(),n.add(...h),n):h[0]}))}}const La="glTF",vt=1313821514,Lt=5130562;class Gt{constructor(e){this.name=M.KHR_BINARY_GLTF,this.content=null,this.body=null;const a=new DataView(e,0,12),t=new TextDecoder;if(this.header={magic:t.decode(new Uint8Array(e.slice(0,4))),version:a.getUint32(4,!0),length:a.getUint32(8,!0)},this.header.magic!==La)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const A=this.header.length-12,i=new DataView(e,12);let s=0;for(;s<A;){const o=i.getUint32(s,!0);s+=4;const c=i.getUint32(s,!0);if(s+=4,c===vt){const n=new Uint8Array(e,12+s,o);this.content=t.decode(n)}else if(c===Lt){const n=12+s;this.body=e.slice(n,n+o)}s+=o}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class Ut{constructor(e,a){if(!a)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=M.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=a,this.dracoLoader.preload()}decodePrimitive(e,a){const t=this.json,A=this.dracoLoader,i=e.extensions[this.name].bufferView,s=e.extensions[this.name].attributes,o={},c={},n={};for(const b in s){const l=ea[b]||b.toLowerCase();o[l]=s[b]}for(const b in e.attributes){const l=ea[b]||b.toLowerCase();if(s[b]!==void 0){const h=t.accessors[e.attributes[b]],f=ge[h.componentType];n[l]=f.name,c[l]=h.normalized===!0}}return a.getDependency("bufferView",i).then(function(b){return new Promise(function(l,h){A.decodeDracoFile(b,function(f){for(const g in f.attributes){const u=f.attributes[g],I=c[g];I!==void 0&&(u.normalized=I)}l(f)},o,n,d.LinearSRGBColorSpace,h)})})}}class Nt{constructor(){this.name=M.KHR_TEXTURE_TRANSFORM}extendTexture(e,a){return(a.texCoord!==void 0&&a.texCoord!==e.channel||a.offset!==void 0||a.rotation!==void 0||a.scale!==void 0)&&(e=e.clone(),a.texCoord!==void 0&&(e.channel=a.texCoord),a.offset!==void 0&&e.offset.fromArray(a.offset),a.rotation!==void 0&&(e.rotation=a.rotation),a.scale!==void 0&&e.repeat.fromArray(a.scale),e.needsUpdate=!0),e}}class Pt{constructor(){this.name=M.KHR_MESH_QUANTIZATION}}class Ga extends d.Interpolant{constructor(e,a,t,A){super(e,a,t,A)}copySampleValue_(e){const a=this.resultBuffer,t=this.sampleValues,A=this.valueSize,i=e*A*3+A;for(let s=0;s!==A;s++)a[s]=t[i+s];return a}interpolate_(e,a,t,A){const i=this.resultBuffer,s=this.sampleValues,o=this.valueSize,c=2*o,n=3*o,b=A-a,l=(t-a)/b,h=l*l,f=h*l,g=e*n,u=g-n,I=-2*f+3*h,p=f-h,B=1-I,m=p-h+l;for(let C=0;C!==o;C++){const w=s[u+C+o],k=s[u+C+c]*b,x=s[g+C+o],E=s[g+C]*b;i[C]=B*w+m*k+I*x+p*E}return i}}const _t=new d.Quaternion;class Ht extends Ga{interpolate_(e,a,t,A){const i=super.interpolate_(e,a,t,A);return _t.fromArray(i).normalize().toArray(i),i}}const P={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},ge={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},ha={9728:d.NearestFilter,9729:d.LinearFilter,9984:d.NearestMipmapNearestFilter,9985:d.LinearMipmapNearestFilter,9986:d.NearestMipmapLinearFilter,9987:d.LinearMipmapLinearFilter},ga={33071:d.ClampToEdgeWrapping,33648:d.MirroredRepeatWrapping,10497:d.RepeatWrapping},Ge={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},ea={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},ee={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},qt={CUBICSPLINE:void 0,LINEAR:d.InterpolateLinear,STEP:d.InterpolateDiscrete},Ot="OPAQUE",Jt="MASK",Kt="BLEND";function se(r,e,a){for(const t in a.extensions)r[t]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[t]=a.extensions[t])}function Z(r,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(r.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function zt(r,e){if(r.updateMorphTargets(),e.weights!==void 0)for(let a=0,t=e.weights.length;a<t;a++)r.morphTargetInfluences[a]=e.weights[a];if(e.extras&&Array.isArray(e.extras.targetNames)){const a=e.extras.targetNames;if(r.morphTargetInfluences.length===a.length){r.morphTargetDictionary={};for(let t=0,A=a.length;t<A;t++)r.morphTargetDictionary[a[t]]=t}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function Vt(r){let e;const a=r.extensions&&r.extensions[M.KHR_DRACO_MESH_COMPRESSION];if(e=a?"draco:"+a.bufferView+":"+a.indices+":"+Ue(a.attributes):r.indices+":"+Ue(r.attributes)+":"+r.mode,r.targets!==void 0)for(let t=0,A=r.targets.length;t<A;t++)e+=":"+Ue(r.targets[t]);return e}function Ue(r){let e="";const a=Object.keys(r).sort();for(let t=0,A=a.length;t<A;t++)e+=a[t]+":"+r[a[t]]+";";return e}function aa(r){switch(r){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}const Yt=new d.Matrix4;class Wt{constructor(e={},a={}){this.json=e,this.extensions={},this.plugins={},this.options=a,this.cache=new ut,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let t=!1,A=-1,i=!1,s=-1;if(typeof navigator<"u"){const o=navigator.userAgent;t=/^((?!chrome|android).)*safari/i.test(o)===!0;const c=o.match(/Version\/(\d+)/);A=t&&c?parseInt(c[1],10):-1,i=o.indexOf("Firefox")>-1,s=i?o.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||t&&A<17||i&&s<98?this.textureLoader=new d.TextureLoader(this.options.manager):this.textureLoader=new d.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new d.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,a){const t=this,A=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(s){return s._markDefs&&s._markDefs()}),Promise.all(this._invokeAll(function(s){return s.beforeRoot&&s.beforeRoot()})).then(function(){return Promise.all([t.getDependencies("scene"),t.getDependencies("animation"),t.getDependencies("camera")])}).then(function(s){const o={scene:s[0][A.scene||0],scenes:s[0],animations:s[1],cameras:s[2],asset:A.asset,parser:t,userData:{}};return se(i,o,A),Z(o,A),Promise.all(t._invokeAll(function(c){return c.afterRoot&&c.afterRoot(o)})).then(function(){for(const c of o.scenes)c.updateMatrixWorld();e(o)})}).catch(a)}_markDefs(){const e=this.json.nodes||[],a=this.json.skins||[],t=this.json.meshes||[];for(let A=0,i=a.length;A<i;A++){const s=a[A].joints;for(let o=0,c=s.length;o<c;o++)e[s[o]].isBone=!0}for(let A=0,i=e.length;A<i;A++){const s=e[A];s.mesh!==void 0&&(this._addNodeRef(this.meshCache,s.mesh),s.skin!==void 0&&(t[s.mesh].isSkinnedMesh=!0)),s.camera!==void 0&&this._addNodeRef(this.cameraCache,s.camera)}}_addNodeRef(e,a){a!==void 0&&(e.refs[a]===void 0&&(e.refs[a]=e.uses[a]=0),e.refs[a]++)}_getNodeRef(e,a,t){if(e.refs[a]<=1)return t;const A=t.clone(),i=(s,o)=>{const c=this.associations.get(s);c!=null&&this.associations.set(o,c);for(const[n,b]of s.children.entries())i(b,o.children[n])};return i(t,A),A.name+="_instance_"+e.uses[a]++,A}_invokeOne(e){const a=Object.values(this.plugins);a.push(this);for(let t=0;t<a.length;t++){const A=e(a[t]);if(A)return A}return null}_invokeAll(e){const a=Object.values(this.plugins);a.unshift(this);const t=[];for(let A=0;A<a.length;A++){const i=e(a[A]);i&&t.push(i)}return t}getDependency(e,a){const t=e+":"+a;let A=this.cache.get(t);if(!A){switch(e){case"scene":A=this.loadScene(a);break;case"node":A=this._invokeOne(function(i){return i.loadNode&&i.loadNode(a)});break;case"mesh":A=this._invokeOne(function(i){return i.loadMesh&&i.loadMesh(a)});break;case"accessor":A=this.loadAccessor(a);break;case"bufferView":A=this._invokeOne(function(i){return i.loadBufferView&&i.loadBufferView(a)});break;case"buffer":A=this.loadBuffer(a);break;case"material":A=this._invokeOne(function(i){return i.loadMaterial&&i.loadMaterial(a)});break;case"texture":A=this._invokeOne(function(i){return i.loadTexture&&i.loadTexture(a)});break;case"skin":A=this.loadSkin(a);break;case"animation":A=this._invokeOne(function(i){return i.loadAnimation&&i.loadAnimation(a)});break;case"camera":A=this.loadCamera(a);break;default:if(A=this._invokeOne(function(i){return i!=this&&i.getDependency&&i.getDependency(e,a)}),!A)throw new Error("Unknown type: "+e)}this.cache.add(t,A)}return A}getDependencies(e){let a=this.cache.get(e);if(!a){const t=this,A=this.json[e+(e==="mesh"?"es":"s")]||[];a=Promise.all(A.map(function(i,s){return t.getDependency(e,s)})),this.cache.add(e,a)}return a}loadBuffer(e){const a=this.json.buffers[e],t=this.fileLoader;if(a.type&&a.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+a.type+" buffer type is not supported.");if(a.uri===void 0&&e===0)return Promise.resolve(this.extensions[M.KHR_BINARY_GLTF].body);const A=this.options;return new Promise(function(i,s){t.load(d.LoaderUtils.resolveURL(a.uri,A.path),i,void 0,function(){s(new Error('THREE.GLTFLoader: Failed to load buffer "'+a.uri+'".'))})})}loadBufferView(e){const a=this.json.bufferViews[e];return this.getDependency("buffer",a.buffer).then(function(t){const A=a.byteLength||0,i=a.byteOffset||0;return t.slice(i,i+A)})}loadAccessor(e){const a=this,t=this.json,A=this.json.accessors[e];if(A.bufferView===void 0&&A.sparse===void 0){const s=Ge[A.type],o=ge[A.componentType],c=A.normalized===!0,n=new o(A.count*s);return Promise.resolve(new d.BufferAttribute(n,s,c))}const i=[];return A.bufferView!==void 0?i.push(this.getDependency("bufferView",A.bufferView)):i.push(null),A.sparse!==void 0&&(i.push(this.getDependency("bufferView",A.sparse.indices.bufferView)),i.push(this.getDependency("bufferView",A.sparse.values.bufferView))),Promise.all(i).then(function(s){const o=s[0],c=Ge[A.type],n=ge[A.componentType],b=n.BYTES_PER_ELEMENT,l=b*c,h=A.byteOffset||0,f=A.bufferView!==void 0?t.bufferViews[A.bufferView].byteStride:void 0,g=A.normalized===!0;let u,I;if(f&&f!==l){const p=Math.floor(h/f),B="InterleavedBuffer:"+A.bufferView+":"+A.componentType+":"+p+":"+A.count;let m=a.cache.get(B);m||(u=new n(o,p*f,A.count*f/b),m=new d.InterleavedBuffer(u,f/b),a.cache.add(B,m)),I=new d.InterleavedBufferAttribute(m,c,h%f/b,g)}else u=o===null?new n(A.count*c):new n(o,h,A.count*c),I=new d.BufferAttribute(u,c,g);if(A.sparse!==void 0){const p=Ge.SCALAR,B=ge[A.sparse.indices.componentType],m=A.sparse.indices.byteOffset||0,C=A.sparse.values.byteOffset||0,w=new B(s[1],m,A.sparse.count*p),k=new n(s[2],C,A.sparse.count*c);o!==null&&(I=new d.BufferAttribute(I.array.slice(),I.itemSize,I.normalized)),I.normalized=!1;for(let x=0,E=w.length;x<E;x++){const y=w[x];if(I.setX(y,k[x*c]),c>=2&&I.setY(y,k[x*c+1]),c>=3&&I.setZ(y,k[x*c+2]),c>=4&&I.setW(y,k[x*c+3]),c>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}I.normalized=g}return I})}loadTexture(e){const a=this.json,t=this.options,A=a.textures[e].source,i=a.images[A];let s=this.textureLoader;if(i.uri){const o=t.manager.getHandler(i.uri);o!==null&&(s=o)}return this.loadTextureImage(e,A,s)}loadTextureImage(e,a,t){const A=this,i=this.json,s=i.textures[e],o=i.images[a],c=(o.uri||o.bufferView)+":"+s.sampler;if(this.textureCache[c])return this.textureCache[c];const n=this.loadImageSource(a,t).then(function(b){b.flipY=!1,b.name=s.name||o.name||"",b.name===""&&typeof o.uri=="string"&&o.uri.startsWith("data:image/")===!1&&(b.name=o.uri);const l=(i.samplers||{})[s.sampler]||{};return b.magFilter=ha[l.magFilter]||d.LinearFilter,b.minFilter=ha[l.minFilter]||d.LinearMipmapLinearFilter,b.wrapS=ga[l.wrapS]||d.RepeatWrapping,b.wrapT=ga[l.wrapT]||d.RepeatWrapping,b.generateMipmaps=!b.isCompressedTexture&&b.minFilter!==d.NearestFilter&&b.minFilter!==d.LinearFilter,A.associations.set(b,{textures:e}),b}).catch(function(){return null});return this.textureCache[c]=n,n}loadImageSource(e,a){const t=this,A=this.json,i=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(l=>l.clone());const s=A.images[e],o=self.URL||self.webkitURL;let c=s.uri||"",n=!1;if(s.bufferView!==void 0)c=t.getDependency("bufferView",s.bufferView).then(function(l){n=!0;const h=new Blob([l],{type:s.mimeType});return c=o.createObjectURL(h),c});else if(s.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const b=Promise.resolve(c).then(function(l){return new Promise(function(h,f){let g=h;a.isImageBitmapLoader===!0&&(g=function(u){const I=new d.Texture(u);I.needsUpdate=!0,h(I)}),a.load(d.LoaderUtils.resolveURL(l,i.path),g,void 0,f)})}).then(function(l){var h;return n===!0&&o.revokeObjectURL(c),Z(l,s),l.userData.mimeType=s.mimeType||((h=s.uri).search(/\.jpe?g($|\?)/i)>0||h.search(/^data\:image\/jpeg/)===0?"image/jpeg":h.search(/\.webp($|\?)/i)>0||h.search(/^data\:image\/webp/)===0?"image/webp":h.search(/\.ktx2($|\?)/i)>0||h.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"),l}).catch(function(l){throw console.error("THREE.GLTFLoader: Couldn't load texture",c),l});return this.sourceCache[e]=b,b}assignTexture(e,a,t,A){const i=this;return this.getDependency("texture",t.index).then(function(s){if(!s)return null;if(t.texCoord!==void 0&&t.texCoord>0&&((s=s.clone()).channel=t.texCoord),i.extensions[M.KHR_TEXTURE_TRANSFORM]){const o=t.extensions!==void 0?t.extensions[M.KHR_TEXTURE_TRANSFORM]:void 0;if(o){const c=i.associations.get(s);s=i.extensions[M.KHR_TEXTURE_TRANSFORM].extendTexture(s,o),i.associations.set(s,c)}}return A!==void 0&&(s.colorSpace=A),e[a]=s,s})}assignFinalMaterial(e){const a=e.geometry;let t=e.material;const A=a.attributes.tangent===void 0,i=a.attributes.color!==void 0,s=a.attributes.normal===void 0;if(e.isPoints){const o="PointsMaterial:"+t.uuid;let c=this.cache.get(o);c||(c=new d.PointsMaterial,d.Material.prototype.copy.call(c,t),c.color.copy(t.color),c.map=t.map,c.sizeAttenuation=!1,this.cache.add(o,c)),t=c}else if(e.isLine){const o="LineBasicMaterial:"+t.uuid;let c=this.cache.get(o);c||(c=new d.LineBasicMaterial,d.Material.prototype.copy.call(c,t),c.color.copy(t.color),c.map=t.map,this.cache.add(o,c)),t=c}if(A||i||s){let o="ClonedMaterial:"+t.uuid+":";A&&(o+="derivative-tangents:"),i&&(o+="vertex-colors:"),s&&(o+="flat-shading:");let c=this.cache.get(o);c||(c=t.clone(),i&&(c.vertexColors=!0),s&&(c.flatShading=!0),A&&(c.normalScale&&(c.normalScale.y*=-1),c.clearcoatNormalScale&&(c.clearcoatNormalScale.y*=-1)),this.cache.add(o,c),this.associations.set(c,this.associations.get(t))),t=c}e.material=t}getMaterialType(){return d.MeshStandardMaterial}loadMaterial(e){const a=this,t=this.json,A=this.extensions,i=t.materials[e];let s;const o={},c=[];if((i.extensions||{})[M.KHR_MATERIALS_UNLIT]){const b=A[M.KHR_MATERIALS_UNLIT];s=b.getMaterialType(),c.push(b.extendParams(o,i,a))}else{const b=i.pbrMetallicRoughness||{};if(o.color=new d.Color(1,1,1),o.opacity=1,Array.isArray(b.baseColorFactor)){const l=b.baseColorFactor;o.color.setRGB(l[0],l[1],l[2],d.LinearSRGBColorSpace),o.opacity=l[3]}b.baseColorTexture!==void 0&&c.push(a.assignTexture(o,"map",b.baseColorTexture,d.SRGBColorSpace)),o.metalness=b.metallicFactor!==void 0?b.metallicFactor:1,o.roughness=b.roughnessFactor!==void 0?b.roughnessFactor:1,b.metallicRoughnessTexture!==void 0&&(c.push(a.assignTexture(o,"metalnessMap",b.metallicRoughnessTexture)),c.push(a.assignTexture(o,"roughnessMap",b.metallicRoughnessTexture))),s=this._invokeOne(function(l){return l.getMaterialType&&l.getMaterialType(e)}),c.push(Promise.all(this._invokeAll(function(l){return l.extendMaterialParams&&l.extendMaterialParams(e,o)})))}i.doubleSided===!0&&(o.side=d.DoubleSide);const n=i.alphaMode||Ot;if(n===Kt?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,n===Jt&&(o.alphaTest=i.alphaCutoff!==void 0?i.alphaCutoff:.5)),i.normalTexture!==void 0&&s!==d.MeshBasicMaterial&&(c.push(a.assignTexture(o,"normalMap",i.normalTexture)),o.normalScale=new d.Vector2(1,1),i.normalTexture.scale!==void 0)){const b=i.normalTexture.scale;o.normalScale.set(b,b)}if(i.occlusionTexture!==void 0&&s!==d.MeshBasicMaterial&&(c.push(a.assignTexture(o,"aoMap",i.occlusionTexture)),i.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=i.occlusionTexture.strength)),i.emissiveFactor!==void 0&&s!==d.MeshBasicMaterial){const b=i.emissiveFactor;o.emissive=new d.Color().setRGB(b[0],b[1],b[2],d.LinearSRGBColorSpace)}return i.emissiveTexture!==void 0&&s!==d.MeshBasicMaterial&&c.push(a.assignTexture(o,"emissiveMap",i.emissiveTexture,d.SRGBColorSpace)),Promise.all(c).then(function(){const b=new s(o);return i.name&&(b.name=i.name),Z(b,i),a.associations.set(b,{materials:e}),i.extensions&&se(A,b,i),b})}createUniqueName(e){const a=d.PropertyBinding.sanitizeNodeName(e||"");return a in this.nodeNamesUsed?a+"_"+ ++this.nodeNamesUsed[a]:(this.nodeNamesUsed[a]=0,a)}loadGeometries(e){const a=this,t=this.extensions,A=this.primitiveCache;function i(o){return t[M.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o,a).then(function(c){return fa(c,o,a)})}const s=[];for(let o=0,c=e.length;o<c;o++){const n=e[o],b=Vt(n),l=A[b];if(l)s.push(l.promise);else{let h;h=n.extensions&&n.extensions[M.KHR_DRACO_MESH_COMPRESSION]?i(n):fa(new d.BufferGeometry,n,a),A[b]={primitive:n,promise:h},s.push(h)}}return Promise.all(s)}loadMesh(e){const a=this,t=this.json,A=this.extensions,i=t.meshes[e],s=i.primitives,o=[];for(let n=0,b=s.length;n<b;n++){const l=s[n].material===void 0?((c=this.cache).DefaultMaterial===void 0&&(c.DefaultMaterial=new d.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:d.FrontSide})),c.DefaultMaterial):this.getDependency("material",s[n].material);o.push(l)}var c;return o.push(a.loadGeometries(s)),Promise.all(o).then(function(n){const b=n.slice(0,n.length-1),l=n[n.length-1],h=[];for(let g=0,u=l.length;g<u;g++){const I=l[g],p=s[g];let B;const m=b[g];if(p.mode===P.TRIANGLES||p.mode===P.TRIANGLE_STRIP||p.mode===P.TRIANGLE_FAN||p.mode===void 0)B=i.isSkinnedMesh===!0?new d.SkinnedMesh(I,m):new d.Mesh(I,m),B.isSkinnedMesh===!0&&B.normalizeSkinWeights(),p.mode===P.TRIANGLE_STRIP?B.geometry=la(B.geometry,d.TriangleStripDrawMode):p.mode===P.TRIANGLE_FAN&&(B.geometry=la(B.geometry,d.TriangleFanDrawMode));else if(p.mode===P.LINES)B=new d.LineSegments(I,m);else if(p.mode===P.LINE_STRIP)B=new d.Line(I,m);else if(p.mode===P.LINE_LOOP)B=new d.LineLoop(I,m);else{if(p.mode!==P.POINTS)throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+p.mode);B=new d.Points(I,m)}Object.keys(B.geometry.morphAttributes).length>0&&zt(B,i),B.name=a.createUniqueName(i.name||"mesh_"+e),Z(B,i),p.extensions&&se(A,B,p),a.assignFinalMaterial(B),h.push(B)}for(let g=0,u=h.length;g<u;g++)a.associations.set(h[g],{meshes:e,primitives:g});if(h.length===1)return i.extensions&&se(A,h[0],i),h[0];const f=new d.Group;i.extensions&&se(A,f,i),a.associations.set(f,{meshes:e});for(let g=0,u=h.length;g<u;g++)f.add(h[g]);return f})}loadCamera(e){let a;const t=this.json.cameras[e],A=t[t.type];if(A)return t.type==="perspective"?a=new d.PerspectiveCamera(d.MathUtils.radToDeg(A.yfov),A.aspectRatio||1,A.znear||1,A.zfar||2e6):t.type==="orthographic"&&(a=new d.OrthographicCamera(-A.xmag,A.xmag,A.ymag,-A.ymag,A.znear,A.zfar)),t.name&&(a.name=this.createUniqueName(t.name)),Z(a,t),Promise.resolve(a);console.warn("THREE.GLTFLoader: Missing camera parameters.")}loadSkin(e){const a=this.json.skins[e],t=[];for(let A=0,i=a.joints.length;A<i;A++)t.push(this._loadNodeShallow(a.joints[A]));return a.inverseBindMatrices!==void 0?t.push(this.getDependency("accessor",a.inverseBindMatrices)):t.push(null),Promise.all(t).then(function(A){const i=A.pop(),s=A,o=[],c=[];for(let n=0,b=s.length;n<b;n++){const l=s[n];if(l){o.push(l);const h=new d.Matrix4;i!==null&&h.fromArray(i.array,16*n),c.push(h)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',a.joints[n])}return new d.Skeleton(o,c)})}loadAnimation(e){const a=this.json,t=this,A=a.animations[e],i=A.name?A.name:"animation_"+e,s=[],o=[],c=[],n=[],b=[];for(let l=0,h=A.channels.length;l<h;l++){const f=A.channels[l],g=A.samplers[f.sampler],u=f.target,I=u.node,p=A.parameters!==void 0?A.parameters[g.input]:g.input,B=A.parameters!==void 0?A.parameters[g.output]:g.output;u.node!==void 0&&(s.push(this.getDependency("node",I)),o.push(this.getDependency("accessor",p)),c.push(this.getDependency("accessor",B)),n.push(g),b.push(u))}return Promise.all([Promise.all(s),Promise.all(o),Promise.all(c),Promise.all(n),Promise.all(b)]).then(function(l){const h=l[0],f=l[1],g=l[2],u=l[3],I=l[4],p=[];for(let B=0,m=h.length;B<m;B++){const C=h[B],w=f[B],k=g[B],x=u[B],E=I[B];if(C===void 0)continue;C.updateMatrix&&C.updateMatrix();const y=t._createAnimationTracks(C,w,k,x,E);if(y)for(let D=0;D<y.length;D++)p.push(y[D])}return new d.AnimationClip(i,void 0,p)})}createNodeMesh(e){const a=this.json,t=this,A=a.nodes[e];return A.mesh===void 0?null:t.getDependency("mesh",A.mesh).then(function(i){const s=t._getNodeRef(t.meshCache,A.mesh,i);return A.weights!==void 0&&s.traverse(function(o){if(o.isMesh)for(let c=0,n=A.weights.length;c<n;c++)o.morphTargetInfluences[c]=A.weights[c]}),s})}loadNode(e){const a=this,t=this.json.nodes[e],A=a._loadNodeShallow(e),i=[],s=t.children||[];for(let c=0,n=s.length;c<n;c++)i.push(a.getDependency("node",s[c]));const o=t.skin===void 0?Promise.resolve(null):a.getDependency("skin",t.skin);return Promise.all([A,Promise.all(i),o]).then(function(c){const n=c[0],b=c[1],l=c[2];l!==null&&n.traverse(function(h){h.isSkinnedMesh&&h.bind(l,Yt)});for(let h=0,f=b.length;h<f;h++)n.add(b[h]);return n})}_loadNodeShallow(e){const a=this.json,t=this.extensions,A=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];const i=a.nodes[e],s=i.name?A.createUniqueName(i.name):"",o=[],c=A._invokeOne(function(n){return n.createNodeMesh&&n.createNodeMesh(e)});return c&&o.push(c),i.camera!==void 0&&o.push(A.getDependency("camera",i.camera).then(function(n){return A._getNodeRef(A.cameraCache,i.camera,n)})),A._invokeAll(function(n){return n.createNodeAttachment&&n.createNodeAttachment(e)}).forEach(function(n){o.push(n)}),this.nodeCache[e]=Promise.all(o).then(function(n){let b;if(b=i.isBone===!0?new d.Bone:n.length>1?new d.Group:n.length===1?n[0]:new d.Object3D,b!==n[0])for(let l=0,h=n.length;l<h;l++)b.add(n[l]);if(i.name&&(b.userData.name=i.name,b.name=s),Z(b,i),i.extensions&&se(t,b,i),i.matrix!==void 0){const l=new d.Matrix4;l.fromArray(i.matrix),b.applyMatrix4(l)}else i.translation!==void 0&&b.position.fromArray(i.translation),i.rotation!==void 0&&b.quaternion.fromArray(i.rotation),i.scale!==void 0&&b.scale.fromArray(i.scale);return A.associations.has(b)||A.associations.set(b,{}),A.associations.get(b).nodes=e,b}),this.nodeCache[e]}loadScene(e){const a=this.extensions,t=this.json.scenes[e],A=this,i=new d.Group;t.name&&(i.name=A.createUniqueName(t.name)),Z(i,t),t.extensions&&se(a,i,t);const s=t.nodes||[],o=[];for(let c=0,n=s.length;c<n;c++)o.push(A.getDependency("node",s[c]));return Promise.all(o).then(function(c){for(let n=0,b=c.length;n<b;n++)i.add(c[n]);return A.associations=(n=>{const b=new Map;for(const[l,h]of A.associations)(l instanceof d.Material||l instanceof d.Texture)&&b.set(l,h);return n.traverse(l=>{const h=A.associations.get(l);h!=null&&b.set(l,h)}),b})(i),i})}_createAnimationTracks(e,a,t,A,i){const s=[],o=e.name?e.name:e.uuid,c=[];let n;switch(ee[i.path]===ee.weights?e.traverse(function(h){h.morphTargetInfluences&&c.push(h.name?h.name:h.uuid)}):c.push(o),ee[i.path]){case ee.weights:n=d.NumberKeyframeTrack;break;case ee.rotation:n=d.QuaternionKeyframeTrack;break;case ee.position:case ee.scale:n=d.VectorKeyframeTrack;break;default:t.itemSize===1?n=d.NumberKeyframeTrack:n=d.VectorKeyframeTrack}const b=A.interpolation!==void 0?qt[A.interpolation]:d.InterpolateLinear,l=this._getArrayFromAccessor(t);for(let h=0,f=c.length;h<f;h++){const g=new n(c[h]+"."+ee[i.path],a.array,l,b);A.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(g),s.push(g)}return s}_getArrayFromAccessor(e){let a=e.array;if(e.normalized){const t=aa(a.constructor),A=new Float32Array(a.length);for(let i=0,s=a.length;i<s;i++)A[i]=a[i]*t;a=A}return a}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(a){return new(this instanceof d.QuaternionKeyframeTrack?Ht:Ga)(this.times,this.values,this.getValueSize()/3,a)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function fa(r,e,a){const t=e.attributes,A=[];function i(s,o){return a.getDependency("accessor",s).then(function(c){r.setAttribute(o,c)})}for(const s in t){const o=ea[s]||s.toLowerCase();o in r.attributes||A.push(i(t[s],o))}if(e.indices!==void 0&&!r.index){const s=a.getDependency("accessor",e.indices).then(function(o){r.setIndex(o)});A.push(s)}return d.ColorManagement.workingColorSpace!==d.LinearSRGBColorSpace&&"COLOR_0"in t&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${d.ColorManagement.workingColorSpace}" not supported.`),Z(r,e),function(s,o,c){const n=o.attributes,b=new d.Box3;if(n.POSITION===void 0)return;{const f=c.json.accessors[n.POSITION],g=f.min,u=f.max;if(g===void 0||u===void 0)return void console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");if(b.set(new d.Vector3(g[0],g[1],g[2]),new d.Vector3(u[0],u[1],u[2])),f.normalized){const I=aa(ge[f.componentType]);b.min.multiplyScalar(I),b.max.multiplyScalar(I)}}const l=o.targets;if(l!==void 0){const f=new d.Vector3,g=new d.Vector3;for(let u=0,I=l.length;u<I;u++){const p=l[u];if(p.POSITION!==void 0){const B=c.json.accessors[p.POSITION],m=B.min,C=B.max;if(m!==void 0&&C!==void 0){if(g.setX(Math.max(Math.abs(m[0]),Math.abs(C[0]))),g.setY(Math.max(Math.abs(m[1]),Math.abs(C[1]))),g.setZ(Math.max(Math.abs(m[2]),Math.abs(C[2]))),B.normalized){const w=aa(ge[B.componentType]);g.multiplyScalar(w)}f.max(g)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}b.expandByVector(f)}s.boundingBox=b;const h=new d.Sphere;b.getCenter(h.center),h.radius=b.min.distanceTo(b.max)/2,s.boundingSphere=h}(r,e,a),Promise.all(A).then(function(){return e.targets!==void 0?function(s,o,c){let n=!1,b=!1,l=!1;for(let u=0,I=o.length;u<I;u++){const p=o[u];if(p.POSITION!==void 0&&(n=!0),p.NORMAL!==void 0&&(b=!0),p.COLOR_0!==void 0&&(l=!0),n&&b&&l)break}if(!n&&!b&&!l)return Promise.resolve(s);const h=[],f=[],g=[];for(let u=0,I=o.length;u<I;u++){const p=o[u];if(n){const B=p.POSITION!==void 0?c.getDependency("accessor",p.POSITION):s.attributes.position;h.push(B)}if(b){const B=p.NORMAL!==void 0?c.getDependency("accessor",p.NORMAL):s.attributes.normal;f.push(B)}if(l){const B=p.COLOR_0!==void 0?c.getDependency("accessor",p.COLOR_0):s.attributes.color;g.push(B)}}return Promise.all([Promise.all(h),Promise.all(f),Promise.all(g)]).then(function(u){const I=u[0],p=u[1],B=u[2];return n&&(s.morphAttributes.position=I),b&&(s.morphAttributes.normal=p),l&&(s.morphAttributes.color=B),s.morphTargetsRelative=!0,s})}(r,e.targets,a):r})}const Ne=new WeakMap;class Ua extends d.Loader{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,a,t,A){const i=new d.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,s=>{this.parse(s,a,A)},t,A)}parse(e,a,t=()=>{}){this.decodeDracoFile(e,a,null,null,d.SRGBColorSpace,t).catch(t)}decodeDracoFile(e,a,t,A,i=d.LinearSRGBColorSpace,s=()=>{}){const o={attributeIDs:t||this.defaultAttributeIDs,attributeTypes:A||this.defaultAttributeTypes,useUniqueIDs:!!t,vertexColorSpace:i};return this.decodeGeometry(e,o).then(a).catch(s)}decodeGeometry(e,a){const t=JSON.stringify(a);if(Ne.has(e)){const c=Ne.get(e);if(c.key===t)return c.promise;if(e.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let A;const i=this.workerNextTaskID++,s=e.byteLength,o=this._getWorker(i,s).then(c=>(A=c,new Promise((n,b)=>{A._callbacks[i]={resolve:n,reject:b},A.postMessage({type:"decode",id:i,taskConfig:a,buffer:e},[e])}))).then(c=>this._createGeometry(c.geometry));return o.catch(()=>!0).then(()=>{A&&i&&this._releaseTask(A,i)}),Ne.set(e,{key:t,promise:o}),o}_createGeometry(e){const a=new d.BufferGeometry;e.index&&a.setIndex(new d.BufferAttribute(e.index.array,1));for(let t=0;t<e.attributes.length;t++){const A=e.attributes[t],i=A.name,s=A.array,o=A.itemSize,c=new d.BufferAttribute(s,o);i==="color"&&(this._assignVertexColorSpace(c,A.vertexColorSpace),c.normalized=!(s instanceof Float32Array)),a.setAttribute(i,c)}return a}_assignVertexColorSpace(e,a){if(a!==d.SRGBColorSpace)return;const t=new d.Color;for(let A=0,i=e.count;A<i;A++)t.fromBufferAttribute(e,A),d.ColorManagement.toWorkingColorSpace(t,d.SRGBColorSpace),e.setXYZ(A,t.r,t.g,t.b)}_loadLibrary(e,a){const t=new d.FileLoader(this.manager);return t.setPath(this.decoderPath),t.setResponseType(a),t.setWithCredentials(this.withCredentials),new Promise((A,i)=>{t.load(e,A,void 0,i)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const e=typeof WebAssembly!="object"||this.decoderConfig.type==="js",a=[];return e?a.push(this._loadLibrary("draco_decoder.js","text")):(a.push(this._loadLibrary("draco_wasm_wrapper.js","text")),a.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(a).then(t=>{const A=t[0];e||(this.decoderConfig.wasmBinary=t[1]);const i=Xt.toString(),s=["/* draco decoder */",A,"","/* worker */",i.substring(i.indexOf("{")+1,i.lastIndexOf("}"))].join(`
19
- `);this.workerSourceURL=URL.createObjectURL(new Blob([s]))}),this.decoderPending}_getWorker(e,a){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const A=new Worker(this.workerSourceURL);A._callbacks={},A._taskCosts={},A._taskLoad=0,A.postMessage({type:"init",decoderConfig:this.decoderConfig}),A.onmessage=function(i){const s=i.data;switch(s.type){case"decode":A._callbacks[s.id].resolve(s);break;case"error":A._callbacks[s.id].reject(s);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+s.type+'"')}},this.workerPool.push(A)}else this.workerPool.sort(function(A,i){return A._taskLoad>i._taskLoad?-1:1});const t=this.workerPool[this.workerPool.length-1];return t._taskCosts[e]=a,t._taskLoad+=a,t})}_releaseTask(e,a){e._taskLoad-=e._taskCosts[a],delete e._callbacks[a],delete e._taskCosts[a]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function Xt(){let r,e;function a(t,A,i,s,o,c){const n=c.num_components(),b=i.num_points()*n,l=b*o.BYTES_PER_ELEMENT,h=function(u,I){switch(I){case Float32Array:return u.DT_FLOAT32;case Int8Array:return u.DT_INT8;case Int16Array:return u.DT_INT16;case Int32Array:return u.DT_INT32;case Uint8Array:return u.DT_UINT8;case Uint16Array:return u.DT_UINT16;case Uint32Array:return u.DT_UINT32}}(t,o),f=t._malloc(l);A.GetAttributeDataArrayForAllPoints(i,c,h,l,f);const g=new o(t.HEAPF32.buffer,f,b).slice();return t._free(f),{name:s,array:g,itemSize:n}}onmessage=function(t){const A=t.data;switch(A.type){case"init":r=A.decoderConfig,e=new Promise(function(o){r.onModuleLoaded=function(c){o({draco:c})},DracoDecoderModule(r)});break;case"decode":const i=A.buffer,s=A.taskConfig;e.then(o=>{const c=o.draco,n=new c.Decoder;try{const b=function(h,f,g,u){const I=u.attributeIDs,p=u.attributeTypes;let B,m;const C=f.GetEncodedGeometryType(g);if(C===h.TRIANGULAR_MESH)B=new h.Mesh,m=f.DecodeArrayToMesh(g,g.byteLength,B);else{if(C!==h.POINT_CLOUD)throw new Error("THREE.DRACOLoader: Unexpected geometry type.");B=new h.PointCloud,m=f.DecodeArrayToPointCloud(g,g.byteLength,B)}if(!m.ok()||B.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+m.error_msg());const w={index:null,attributes:[]};for(const k in I){const x=self[p[k]];let E,y;if(u.useUniqueIDs)y=I[k],E=f.GetAttributeByUniqueId(B,y);else{if(y=f.GetAttributeId(B,h[I[k]]),y===-1)continue;E=f.GetAttribute(B,y)}const D=a(h,f,B,k,x,E);k==="color"&&(D.vertexColorSpace=u.vertexColorSpace),w.attributes.push(D)}return C===h.TRIANGULAR_MESH&&(w.index=function(k,x,E){const y=E.num_faces(),D=3*y,j=4*D,F=k._malloc(j);x.GetTrianglesUInt32Array(E,j,F);const N=new Uint32Array(k.HEAPF32.buffer,F,D).slice();return k._free(F),{array:N,itemSize:1}}(h,f,B)),h.destroy(B),w}(c,n,new Int8Array(i),s),l=b.attributes.map(h=>h.array.buffer);b.index&&l.push(b.index.array.buffer),self.postMessage({type:"decode",id:A.id,geometry:b},l)}catch(b){console.error(b),self.postMessage({type:"error",id:A.id,error:b.message})}finally{c.destroy(n)}})}}}class Zt{constructor(e=4){this.pool=e,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0}_initWorker(e){if(!this.workers[e]){const a=this.workerCreator();a.addEventListener("message",this._onMessage.bind(this,e)),this.workers[e]=a}}_getIdleWorker(){for(let e=0;e<this.pool;e++)if(!(this.workerStatus&1<<e))return e;return-1}_onMessage(e,a){const t=this.workersResolve[e];if(t&&t(a),this.queue.length){const{resolve:A,msg:i,transfer:s}=this.queue.shift();this.workersResolve[e]=A,this.workers[e].postMessage(i,s)}else this.workerStatus^=1<<e}setWorkerCreator(e){this.workerCreator=e}setWorkerLimit(e){this.pool=e}postMessage(e,a){return new Promise(t=>{const A=this._getIdleWorker();A!==-1?(this._initWorker(A),this.workerStatus|=1<<A,this.workersResolve[A]=t,this.workers[A].postMessage(e,a)):this.queue.push({resolve:t,msg:e,transfer:a})})}dispose(){this.workers.forEach(e=>e.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const Na=9,Pa=15,_a=16,Ha=22,qa=37,Oa=43,Ja=76,Ka=83,za=97,Va=100,Ya=103,Wa=109,Xa=165,Za=166,Aa=1000066e3;class $t{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}}class Ce{constructor(e,a,t,A){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(e.buffer,e.byteOffset+a,t),this._littleEndian=A,this._offset=0}_nextUint8(){const e=this._dataView.getUint8(this._offset);return this._offset+=1,e}_nextUint16(){const e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}_nextUint32(){const e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint64(){const e=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,e}_nextInt32(){const e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint8Array(e){const a=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,e);return this._offset+=e,a}_skip(e){return this._offset+=e,this}_scan(e,a){a===void 0&&(a=0);const t=this._offset;let A=0;for(;this._dataView.getUint8(this._offset)!==a&&A<e;)A++,this._offset++;return A<e&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+t,A)}}const L=[171,75,84,88,32,50,48,187,13,10,26,10];function ua(r){return new TextDecoder().decode(r)}let Pe,X,ta;const _e={env:{emscripten_notify_memory_growth:function(r){ta=new Uint8Array(X.exports.memory.buffer)}}};class eA{init(){return Pe||(Pe=typeof fetch<"u"?fetch("data:application/wasm;base64,"+Ia).then(e=>e.arrayBuffer()).then(e=>WebAssembly.instantiate(e,_e)).then(this._init):WebAssembly.instantiate(Buffer.from(Ia,"base64"),_e).then(this._init),Pe)}_init(e){X=e.instance,_e.env.emscripten_notify_memory_growth(0)}decode(e,a=0){if(!X)throw new Error("ZSTDDecoder: Await .init() before decoding.");const t=e.byteLength,A=X.exports.malloc(t);ta.set(e,A),a=a||Number(X.exports.ZSTD_findDecompressedSize(A,t));const i=X.exports.malloc(a),s=X.exports.ZSTD_decompress(i,a,A,t),o=ta.slice(i,i+s);return X.exports.free(A),X.exports.free(i),o}}const Ia="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEEdCAAbiECCyAAQQh2IgEgAkEYbCIAQYwIaigCAGwgAEGICGooAgBqIgJBA3YgAmogAEGACGooAgAgAEGECGooAgAgAWxqSQs3ACAAIAMgBCAFQYAQEDMiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQMgVBuH8LC78DAQN/IwBBIGsiBSQAIAVBCGogAiADEAYiAhADRQRAIAAgAWoiB0F9aiEGIAUgBBAOIARBBGohAiAFLQACIQMDQEEAIAAgBkkgBUEIahAEGwRAIAAgAiAFQQhqIAMQAkECdGoiBC8BADsAACAFQQhqIAQtAAIQASAAIAQtAANqIgQgAiAFQQhqIAMQAkECdGoiAC8BADsAACAFQQhqIAAtAAIQASAEIAAtAANqIQAMAQUgB0F+aiEEA0AgBUEIahAEIAAgBEtyRQRAIAAgAiAFQQhqIAMQAkECdGoiBi8BADsAACAFQQhqIAYtAAIQASAAIAYtAANqIQAMAQsLA0AgACAES0UEQCAAIAIgBUEIaiADEAJBAnRqIgYvAQA7AAAgBUEIaiAGLQACEAEgACAGLQADaiEADAELCwJAIAAgB08NACAAIAIgBUEIaiADEAIiA0ECdGoiAC0AADoAACAALQADQQFGBEAgBUEIaiAALQACEAEMAQsgBSgCDEEfSw0AIAVBCGogAiADQQJ0ai0AAhABIAUoAgxBIUkNACAFQSA2AgwLIAFBbCAFQQhqEAobIQILCwsgBUEgaiQAIAILkgIBBH8jAEFAaiIJJAAgCSADQTQQCyEDAkAgBEECSA0AIAMgBEECdGooAgAhCSADQTxqIAgQIyADQQE6AD8gAyACOgA+QQAhBCADKAI8IQoDQCAEIAlGDQEgACAEQQJ0aiAKNgEAIARBAWohBAwAAAsAC0EAIQkDQCAGIAlGRQRAIAMgBSAJQQF0aiIKLQABIgtBAnRqIgwoAgAhBCADQTxqIAotAABBCHQgCGpB//8DcRAjIANBAjoAPyADIAcgC2siCiACajoAPiAEQQEgASAKa3RqIQogAygCPCELA0AgACAEQQJ0aiALNgEAIARBAWoiBCAKSQ0ACyAMIAo2AgAgCUEBaiEJDAELCyADQUBrJAALowIBCX8jAEHQAGsiCSQAIAlBEGogBUE0EAsaIAcgBmshDyAHIAFrIRADQAJAIAMgCkcEQEEBIAEgByACIApBAXRqIgYtAAEiDGsiCGsiC3QhDSAGLQAAIQ4gCUEQaiAMQQJ0aiIMKAIAIQYgCyAPTwRAIAAgBkECdGogCyAIIAUgCEE0bGogCCAQaiIIQQEgCEEBShsiCCACIAQgCEECdGooAgAiCEEBdGogAyAIayAHIA4QYyAGIA1qIQgMAgsgCUEMaiAOECMgCUEBOgAPIAkgCDoADiAGIA1qIQggCSgCDCELA0AgBiAITw0CIAAgBkECdGogCzYBACAGQQFqIQYMAAALAAsgCUHQAGokAA8LIAwgCDYCACAKQQFqIQoMAAALAAs0ACAAIAMgBCAFEDYiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQNAVBuH8LCyMAIAA/AEEQdGtB//8DakEQdkAAQX9GBEBBAA8LQQAQAEEBCzsBAX8gAgRAA0AgACABIAJBgCAgAkGAIEkbIgMQCyEAIAFBgCBqIQEgAEGAIGohACACIANrIgINAAsLCwYAIAAQAwsLqBUJAEGICAsNAQAAAAEAAAACAAAAAgBBoAgLswYBAAAAAQAAAAIAAAACAAAAJgAAAIIAAAAhBQAASgAAAGcIAAAmAAAAwAEAAIAAAABJBQAASgAAAL4IAAApAAAALAIAAIAAAABJBQAASgAAAL4IAAAvAAAAygIAAIAAAACKBQAASgAAAIQJAAA1AAAAcwMAAIAAAACdBQAASgAAAKAJAAA9AAAAgQMAAIAAAADrBQAASwAAAD4KAABEAAAAngMAAIAAAABNBgAASwAAAKoKAABLAAAAswMAAIAAAADBBgAATQAAAB8NAABNAAAAUwQAAIAAAAAjCAAAUQAAAKYPAABUAAAAmQQAAIAAAABLCQAAVwAAALESAABYAAAA2gQAAIAAAABvCQAAXQAAACMUAABUAAAARQUAAIAAAABUCgAAagAAAIwUAABqAAAArwUAAIAAAAB2CQAAfAAAAE4QAAB8AAAA0gIAAIAAAABjBwAAkQAAAJAHAACSAAAAAAAAAAEAAAABAAAABQAAAA0AAAAdAAAAPQAAAH0AAAD9AAAA/QEAAP0DAAD9BwAA/Q8AAP0fAAD9PwAA/X8AAP3/AAD9/wEA/f8DAP3/BwD9/w8A/f8fAP3/PwD9/38A/f//AP3//wH9//8D/f//B/3//w/9//8f/f//P/3//38AAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACUAAAAnAAAAKQAAACsAAAAvAAAAMwAAADsAAABDAAAAUwAAAGMAAACDAAAAAwEAAAMCAAADBAAAAwgAAAMQAAADIAAAA0AAAAOAAAADAAEAQeAPC1EBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAQcQQC4sBAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABIAAAAUAAAAFgAAABgAAAAcAAAAIAAAACgAAAAwAAAAQAAAAIAAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQBBkBIL5gQBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAAAEAAAAEAAAACAAAAAAAAAABAAEBBgAAAAAAAAQAAAAAEAAABAAAAAAgAAAFAQAAAAAAAAUDAAAAAAAABQQAAAAAAAAFBgAAAAAAAAUHAAAAAAAABQkAAAAAAAAFCgAAAAAAAAUMAAAAAAAABg4AAAAAAAEFEAAAAAAAAQUUAAAAAAABBRYAAAAAAAIFHAAAAAAAAwUgAAAAAAAEBTAAAAAgAAYFQAAAAAAABwWAAAAAAAAIBgABAAAAAAoGAAQAAAAADAYAEAAAIAAABAAAAAAAAAAEAQAAAAAAAAUCAAAAIAAABQQAAAAAAAAFBQAAACAAAAUHAAAAAAAABQgAAAAgAAAFCgAAAAAAAAULAAAAAAAABg0AAAAgAAEFEAAAAAAAAQUSAAAAIAABBRYAAAAAAAIFGAAAACAAAwUgAAAAAAADBSgAAAAAAAYEQAAAABAABgRAAAAAIAAHBYAAAAAAAAkGAAIAAAAACwYACAAAMAAABAAAAAAQAAAEAQAAACAAAAUCAAAAIAAABQMAAAAgAAAFBQAAACAAAAUGAAAAIAAABQgAAAAgAAAFCQAAACAAAAULAAAAIAAABQwAAAAAAAAGDwAAACAAAQUSAAAAIAABBRQAAAAgAAIFGAAAACAAAgUcAAAAIAADBSgAAAAgAAQFMAAAAAAAEAYAAAEAAAAPBgCAAAAAAA4GAEAAAAAADQYAIABBgBcLhwIBAAEBBQAAAAAAAAUAAAAAAAAGBD0AAAAAAAkF/QEAAAAADwX9fwAAAAAVBf3/HwAAAAMFBQAAAAAABwR9AAAAAAAMBf0PAAAAABIF/f8DAAAAFwX9/38AAAAFBR0AAAAAAAgE/QAAAAAADgX9PwAAAAAUBf3/DwAAAAIFAQAAABAABwR9AAAAAAALBf0HAAAAABEF/f8BAAAAFgX9/z8AAAAEBQ0AAAAQAAgE/QAAAAAADQX9HwAAAAATBf3/BwAAAAEFAQAAABAABgQ9AAAAAAAKBf0DAAAAABAF/f8AAAAAHAX9//8PAAAbBf3//wcAABoF/f//AwAAGQX9//8BAAAYBf3//wBBkBkLhgQBAAEBBgAAAAAAAAYDAAAAAAAABAQAAAAgAAAFBQAAAAAAAAUGAAAAAAAABQgAAAAAAAAFCQAAAAAAAAULAAAAAAAABg0AAAAAAAAGEAAAAAAAAAYTAAAAAAAABhYAAAAAAAAGGQAAAAAAAAYcAAAAAAAABh8AAAAAAAAGIgAAAAAAAQYlAAAAAAABBikAAAAAAAIGLwAAAAAAAwY7AAAAAAAEBlMAAAAAAAcGgwAAAAAACQYDAgAAEAAABAQAAAAAAAAEBQAAACAAAAUGAAAAAAAABQcAAAAgAAAFCQAAAAAAAAUKAAAAAAAABgwAAAAAAAAGDwAAAAAAAAYSAAAAAAAABhUAAAAAAAAGGAAAAAAAAAYbAAAAAAAABh4AAAAAAAAGIQAAAAAAAQYjAAAAAAABBicAAAAAAAIGKwAAAAAAAwYzAAAAAAAEBkMAAAAAAAUGYwAAAAAACAYDAQAAIAAABAQAAAAwAAAEBAAAABAAAAQFAAAAIAAABQcAAAAgAAAFCAAAACAAAAUKAAAAIAAABQsAAAAAAAAGDgAAAAAAAAYRAAAAAAAABhQAAAAAAAAGFwAAAAAAAAYaAAAAAAAABh0AAAAAAAAGIAAAAAAAEAYDAAEAAAAPBgOAAAAAAA4GA0AAAAAADQYDIAAAAAAMBgMQAAAAAAsGAwgAAAAACgYDBABBpB0L2QEBAAAAAwAAAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8BAAD/AwAA/wcAAP8PAAD/HwAA/z8AAP9/AAD//wAA//8BAP//AwD//wcA//8PAP//HwD//z8A//9/AP///wD///8B////A////wf///8P////H////z////9/AAAAAAEAAAACAAAABAAAAAAAAAACAAAABAAAAAgAAAAAAAAAAQAAAAIAAAABAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAcAAAAIAAAACQAAAAoAAAALAEGgIAsDwBBQ",He=new WeakMap;let qe,Oe=0;class U extends d.Loader{constructor(e){super(e),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new Zt,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER<"u"&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(e){return this.transcoderPath=e,this}setWorkerLimit(e){return this.workerPool.setWorkerLimit(e),this}async detectSupportAsync(e){return this.workerConfig={astcSupported:await e.hasFeatureAsync("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:await e.hasFeatureAsync("texture-compression-etc1"),etc2Supported:await e.hasFeatureAsync("texture-compression-etc2"),dxtSupported:await e.hasFeatureAsync("texture-compression-bc"),bptcSupported:await e.hasFeatureAsync("texture-compression-bptc"),pvrtcSupported:await e.hasFeatureAsync("texture-compression-pvrtc")},this}detectSupport(e){return e.isWebGPURenderer===!0?this.workerConfig={astcSupported:e.hasFeature("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:e.hasFeature("texture-compression-etc1"),etc2Supported:e.hasFeature("texture-compression-etc2"),dxtSupported:e.hasFeature("texture-compression-bc"),bptcSupported:e.hasFeature("texture-compression-bptc"),pvrtcSupported:e.hasFeature("texture-compression-pvrtc")}:this.workerConfig={astcSupported:e.extensions.has("WEBGL_compressed_texture_astc"),astcHDRSupported:e.extensions.has("WEBGL_compressed_texture_astc")&&e.extensions.get("WEBGL_compressed_texture_astc").getSupportedProfiles().includes("hdr"),etc1Supported:e.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:e.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:e.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:e.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:e.extensions.has("WEBGL_compressed_texture_pvrtc")||e.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},this}init(){if(!this.transcoderPending){const e=new d.FileLoader(this.manager);e.setPath(this.transcoderPath),e.setWithCredentials(this.withCredentials);const a=e.loadAsync("basis_transcoder.js"),t=new d.FileLoader(this.manager);t.setPath(this.transcoderPath),t.setResponseType("arraybuffer"),t.setWithCredentials(this.withCredentials);const A=t.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([a,A]).then(([i,s])=>{const o=U.BasisWorker.toString(),c=["/* constants */","let _EngineFormat = "+JSON.stringify(U.EngineFormat),"let _EngineType = "+JSON.stringify(U.EngineType),"let _TranscoderFormat = "+JSON.stringify(U.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(U.BasisFormat),"/* basis_transcoder.js */",i,"/* worker */",o.substring(o.indexOf("{")+1,o.lastIndexOf("}"))].join(`
20
- `);this.workerSourceURL=URL.createObjectURL(new Blob([c])),this.transcoderBinary=s,this.workerPool.setWorkerCreator(()=>{const n=new Worker(this.workerSourceURL),b=this.transcoderBinary.slice(0);return n.postMessage({type:"init",config:this.workerConfig,transcoderBinary:b},[b]),n})}),Oe>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),Oe++}return this.transcoderPending}load(e,a,t,A){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const i=new d.FileLoader(this.manager);i.setResponseType("arraybuffer"),i.setWithCredentials(this.withCredentials),i.load(e,s=>{this.parse(s,a,A)},t,A)}parse(e,a,t){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(He.has(e))return He.get(e).promise.then(a).catch(t);this._createTexture(e).then(A=>a?a(A):null).catch(t)}_createTextureFrom(e,a){const{type:t,error:A,data:{faces:i,width:s,height:o,format:c,type:n,dfdFlags:b}}=e;if(t==="error")return Promise.reject(A);let l;if(a.faceCount===6)l=new d.CompressedCubeTexture(i,c,n);else{const h=i[0].mipmaps;l=a.layerCount>1?new d.CompressedArrayTexture(h,s,o,a.layerCount,c,n):new d.CompressedTexture(h,s,o,c,n)}return l.minFilter=i[0].mipmaps.length===1?d.LinearFilter:d.LinearMipmapLinearFilter,l.magFilter=d.LinearFilter,l.generateMipmaps=!1,l.needsUpdate=!0,l.colorSpace=pa(a),l.premultiplyAlpha=!!(1&b),l}async _createTexture(e,a={}){const t=function(o){const c=new Uint8Array(o.buffer,o.byteOffset,L.length);if(c[0]!==L[0]||c[1]!==L[1]||c[2]!==L[2]||c[3]!==L[3]||c[4]!==L[4]||c[5]!==L[5]||c[6]!==L[6]||c[7]!==L[7]||c[8]!==L[8]||c[9]!==L[9]||c[10]!==L[10]||c[11]!==L[11])throw new Error("Missing KTX 2.0 identifier.");const n=new $t,b=17*Uint32Array.BYTES_PER_ELEMENT,l=new Ce(o,L.length,b,!0);n.vkFormat=l._nextUint32(),n.typeSize=l._nextUint32(),n.pixelWidth=l._nextUint32(),n.pixelHeight=l._nextUint32(),n.pixelDepth=l._nextUint32(),n.layerCount=l._nextUint32(),n.faceCount=l._nextUint32();const h=l._nextUint32();n.supercompressionScheme=l._nextUint32();const f=l._nextUint32(),g=l._nextUint32(),u=l._nextUint32(),I=l._nextUint32(),p=l._nextUint64(),B=l._nextUint64(),m=new Ce(o,L.length+b,3*h*8,!0);for(let R=0;R<h;R++)n.levels.push({levelData:new Uint8Array(o.buffer,o.byteOffset+m._nextUint64(),m._nextUint64()),uncompressedByteLength:m._nextUint64()});const C=new Ce(o,f,g,!0),w={vendorId:C._skip(4)._nextUint16(),descriptorType:C._nextUint16(),versionNumber:C._nextUint16(),descriptorBlockSize:C._nextUint16(),colorModel:C._nextUint8(),colorPrimaries:C._nextUint8(),transferFunction:C._nextUint8(),flags:C._nextUint8(),texelBlockDimension:[C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8()],bytesPlane:[C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8()],samples:[]},k=(w.descriptorBlockSize/4-6)/4;for(let R=0;R<k;R++){const T={bitOffset:C._nextUint16(),bitLength:C._nextUint8(),channelType:C._nextUint8(),samplePosition:[C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&T.channelType?(T.sampleLower=C._nextInt32(),T.sampleUpper=C._nextInt32()):(T.sampleLower=C._nextUint32(),T.sampleUpper=C._nextUint32()),w.samples[R]=T}n.dataFormatDescriptor.length=0,n.dataFormatDescriptor.push(w);const x=new Ce(o,u,I,!0);for(;x._offset<I;){const R=x._nextUint32(),T=x._scan(R),_=ua(T);if(n.keyValue[_]=x._nextUint8Array(R-T.byteLength-1),_.match(/^ktx/i)){const J=ua(n.keyValue[_]);n.keyValue[_]=J.substring(0,J.lastIndexOf("\0"))}x._skip(R%4?4-R%4:0)}if(B<=0)return n;const E=new Ce(o,p,B,!0),y=E._nextUint16(),D=E._nextUint16(),j=E._nextUint32(),F=E._nextUint32(),N=E._nextUint32(),Se=E._nextUint32(),ue=[];for(let R=0;R<h;R++)ue.push({imageFlags:E._nextUint32(),rgbSliceByteOffset:E._nextUint32(),rgbSliceByteLength:E._nextUint32(),alphaSliceByteOffset:E._nextUint32(),alphaSliceByteLength:E._nextUint32()});const ye=p+E._offset,Ie=ye+j,pe=Ie+F,Be=pe+N,we=new Uint8Array(o.buffer,o.byteOffset+ye,j),xe=new Uint8Array(o.buffer,o.byteOffset+Ie,F),O=new Uint8Array(o.buffer,o.byteOffset+pe,N),ce=new Uint8Array(o.buffer,o.byteOffset+Be,Se);return n.globalData={endpointCount:y,selectorCount:D,imageDescs:ue,endpointsData:we,selectorsData:xe,tablesData:O,extendedData:ce},n}(new Uint8Array(e)),A=t.vkFormat===Aa&&t.dataFormatDescriptor[0].colorModel===167;if(!(t.vkFormat===0||A&&!this.workerConfig.astcHDRSupported))return async function(o){const{vkFormat:c}=o;if(Je[c]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");let n;o.supercompressionScheme===2&&(qe||(qe=new Promise(async h=>{const f=new eA;await f.init(),h(f)})),n=await qe);const b=[];for(let h=0;h<o.levels.length;h++){const f=Math.max(1,o.pixelWidth>>h),g=Math.max(1,o.pixelHeight>>h),u=o.pixelDepth?Math.max(1,o.pixelDepth>>h):0,I=o.levels[h];let p,B;if(o.supercompressionScheme===0)p=I.levelData;else{if(o.supercompressionScheme!==2)throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");p=n.decode(I.levelData,I.uncompressedByteLength)}B=Ke[c]===d.FloatType?new Float32Array(p.buffer,p.byteOffset,p.byteLength/Float32Array.BYTES_PER_ELEMENT):Ke[c]===d.HalfFloatType?new Uint16Array(p.buffer,p.byteOffset,p.byteLength/Uint16Array.BYTES_PER_ELEMENT):p,b.push({data:B,width:f,height:g,depth:u})}let l;if(aA.has(Je[c]))l=o.pixelDepth===0?new d.DataTexture(b[0].data,o.pixelWidth,o.pixelHeight):new d.Data3DTexture(b[0].data,o.pixelWidth,o.pixelHeight,o.pixelDepth);else{if(o.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");l=new d.CompressedTexture(b,o.pixelWidth,o.pixelHeight)}return l.mipmaps=b,l.type=Ke[c],l.format=Je[c],l.colorSpace=pa(o),l.needsUpdate=!0,Promise.resolve(l)}(t);const i=a,s=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:e,taskConfig:i},[e])).then(o=>this._createTextureFrom(o.data,t));return He.set(e,{promise:s}),s}dispose(){return this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),Oe--,this}}U.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2},U.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16,BC6H:22,RGB_HALF:24,RGBA_HALF:25},U.EngineFormat={RGBAFormat:d.RGBAFormat,RGBA_ASTC_4x4_Format:d.RGBA_ASTC_4x4_Format,RGB_BPTC_UNSIGNED_Format:d.RGB_BPTC_UNSIGNED_Format,RGBA_BPTC_Format:d.RGBA_BPTC_Format,RGBA_ETC2_EAC_Format:d.RGBA_ETC2_EAC_Format,RGBA_PVRTC_4BPPV1_Format:d.RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT5_Format:d.RGBA_S3TC_DXT5_Format,RGB_ETC1_Format:d.RGB_ETC1_Format,RGB_ETC2_Format:d.RGB_ETC2_Format,RGB_PVRTC_4BPPV1_Format:d.RGB_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT1_Format:d.RGBA_S3TC_DXT1_Format},U.EngineType={UnsignedByteType:d.UnsignedByteType,HalfFloatType:d.HalfFloatType,FloatType:d.FloatType},U.BasisWorker=function(){let r,e,a;const t=_EngineFormat,A=_EngineType,i=_TranscoderFormat,s=_BasisFormat;self.addEventListener("message",function(l){const h=l.data;switch(h.type){case"init":r=h.config,f=h.transcoderBinary,e=new Promise(g=>{a={wasmBinary:f,onRuntimeInitialized:g},BASIS(a)}).then(()=>{a.initializeBasis(),a.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")});break;case"transcode":e.then(()=>{try{const{faces:g,buffers:u,width:I,height:p,hasAlpha:B,format:m,type:C,dfdFlags:w}=function(k){const x=new a.KTX2File(new Uint8Array(k));function E(){x.close(),x.delete()}if(!x.isValid())throw E(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");let y;if(x.isUASTC())y=s.UASTC;else if(x.isETC1S())y=s.ETC1S;else{if(!x.isHDR())throw new Error("THREE.KTX2Loader: Unknown Basis encoding");y=s.UASTC_HDR}const D=x.getWidth(),j=x.getHeight(),F=x.getLayers()||1,N=x.getLevels(),Se=x.getFaces(),ue=x.getHasAlpha(),ye=x.getDFDFlags(),{transcoderFormat:Ie,engineFormat:pe,engineType:Be}=function(O,ce,R,T){const _=c[O];for(let J=0;J<_.length;J++){const H=_[J];if(!(H.if&&!r[H.if])&&H.basisFormat.includes(O)&&!(T&&H.transcoderFormat.length<2)&&!(H.needsPowerOfTwo&&(!n(ce)||!n(R))))return{transcoderFormat:H.transcoderFormat[T?1:0],engineFormat:H.engineFormat[T?1:0],engineType:H.engineType[0]}}throw new Error("THREE.KTX2Loader: Failed to identify transcoding target.")}(y,D,j,ue);if(!D||!j||!N)throw E(),new Error("THREE.KTX2Loader: Invalid texture");if(!x.startTranscoding())throw E(),new Error("THREE.KTX2Loader: .startTranscoding failed");const we=[],xe=[];for(let O=0;O<Se;O++){const ce=[];for(let R=0;R<N;R++){const T=[];let _,J;for(let de=0;de<F;de++){const be=x.getImageLevelInfo(R,de,O);O!==0||R!==0||de!==0||be.origWidth%4==0&&be.origHeight%4==0||console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),N>1?(_=be.origWidth,J=be.origHeight):(_=be.width,J=be.height);let le=new Uint8Array(x.getImageTranscodedSizeInBytes(R,de,0,Ie));const At=x.transcodeImage(le,R,de,O,Ie,0,-1,-1);if(Be===A.HalfFloatType&&(le=new Uint16Array(le.buffer,le.byteOffset,le.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!At)throw E(),new Error("THREE.KTX2Loader: .transcodeImage failed.");T.push(le)}const H=b(T);ce.push({data:H,width:_,height:J}),xe.push(H.buffer)}we.push({mipmaps:ce,width:D,height:j,format:pe,type:Be})}return E(),{faces:we,buffers:xe,width:D,height:j,hasAlpha:ue,dfdFlags:ye,format:pe,type:Be}}(h.buffer);self.postMessage({type:"transcode",id:h.id,data:{faces:g,width:I,height:p,hasAlpha:B,format:m,type:C,dfdFlags:w}},u)}catch(g){console.error(g),self.postMessage({type:"error",id:h.id,error:g.message})}})}var f});const o=[{if:"astcSupported",basisFormat:[s.UASTC],transcoderFormat:[i.ASTC_4x4,i.ASTC_4x4],engineFormat:[t.RGBA_ASTC_4x4_Format,t.RGBA_ASTC_4x4_Format],engineType:[A.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[i.BC7_M5,i.BC7_M5],engineFormat:[t.RGBA_BPTC_Format,t.RGBA_BPTC_Format],engineType:[A.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[i.BC1,i.BC3],engineFormat:[t.RGBA_S3TC_DXT1_Format,t.RGBA_S3TC_DXT5_Format],engineType:[A.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[i.ETC1,i.ETC2],engineFormat:[t.RGB_ETC2_Format,t.RGBA_ETC2_EAC_Format],engineType:[A.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[i.ETC1],engineFormat:[t.RGB_ETC1_Format],engineType:[A.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[i.PVRTC1_4_RGB,i.PVRTC1_4_RGBA],engineFormat:[t.RGB_PVRTC_4BPPV1_Format,t.RGBA_PVRTC_4BPPV1_Format],engineType:[A.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:"bptcSupported",basisFormat:[s.UASTC_HDR],transcoderFormat:[i.BC6H],engineFormat:[t.RGB_BPTC_UNSIGNED_Format],engineType:[A.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[i.RGBA32,i.RGBA32],engineFormat:[t.RGBAFormat,t.RGBAFormat],engineType:[A.UnsignedByteType,A.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[s.UASTC_HDR],transcoderFormat:[i.RGBA_HALF],engineFormat:[t.RGBAFormat],engineType:[A.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],c={[s.ETC1S]:o.filter(l=>l.basisFormat.includes(s.ETC1S)).sort((l,h)=>l.priorityUASTC-h.priorityUASTC),[s.UASTC]:o.filter(l=>l.basisFormat.includes(s.UASTC)).sort((l,h)=>l.priorityUASTC-h.priorityUASTC),[s.UASTC_HDR]:o.filter(l=>l.basisFormat.includes(s.UASTC_HDR)).sort((l,h)=>l.priorityHDR-h.priorityHDR)};function n(l){return l<=2||!(l&l-1)&&l!==0}function b(l){if(l.length===1)return l[0];let h=0;for(let u=0;u<l.length;u++)h+=l[u].byteLength;const f=new Uint8Array(h);let g=0;for(let u=0;u<l.length;u++){const I=l[u];f.set(I,g),g+=I.byteLength}return f}};const aA=new Set([d.RGBAFormat,d.RGFormat,d.RedFormat]),Je={[Wa]:d.RGBAFormat,[za]:d.RGBAFormat,[qa]:d.RGBAFormat,[Oa]:d.RGBAFormat,[Ya]:d.RGFormat,[Ka]:d.RGFormat,[_a]:d.RGFormat,[Ha]:d.RGFormat,[Va]:d.RedFormat,[Ja]:d.RedFormat,[Pa]:d.RedFormat,[Na]:d.RedFormat,[Aa]:d.RGBA_ASTC_4x4_Format,[Za]:d.RGBA_ASTC_6x6_Format,[Xa]:d.RGBA_ASTC_6x6_Format},Ke={[Wa]:d.FloatType,[za]:d.HalfFloatType,[qa]:d.UnsignedByteType,[Oa]:d.UnsignedByteType,[Ya]:d.FloatType,[Ka]:d.HalfFloatType,[_a]:d.UnsignedByteType,[Ha]:d.UnsignedByteType,[Va]:d.FloatType,[Ja]:d.HalfFloatType,[Pa]:d.UnsignedByteType,[Na]:d.UnsignedByteType,[Aa]:d.HalfFloatType,[Za]:d.UnsignedByteType,[Xa]:d.UnsignedByteType};function pa(r){const e=r.dataFormatDescriptor[0];return e.colorPrimaries===1?e.transferFunction===2?d.SRGBColorSpace:d.LinearSRGBColorSpace:e.colorPrimaries===10?e.transferFunction===2?"display-p3":"display-p3-linear":(e.colorPrimaries===0||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${e.colorPrimaries}"`),d.NoColorSpace)}async function Ba(r){const e=r.split("?")[0].split(".").pop(),a=await fetch(r);if(!a.ok)throw new Error(`Failed to fetch ${r}: ${a.statusText}`);if(e==="json"){const t=await a.json();return handleJSONSubtree(t,Ca(r))}if(e==="subtree")return async function(t,A){const i=new DataView(t),s=i.getBigUint64(8,!0),o=i.getBigUint64(16,!0),c=24,n=c+Number(s),b=n+(8-n%8)%8,l=b+Number(o),h=t.slice(c,n),f=new TextDecoder().decode(h).trim(),g=JSON.parse(f);if(!g.buffers)throw new Error("subtree has no buffers");const u=g.buffers.map(async p=>{if(p.uri){const B=new URL(p.uri,A).href,m=await fetch(B);if(!m.ok)throw new Error(`Failed to fetch binary file ${B}: ${m.statusText}`);return new Uint8Array(await m.arrayBuffer())}return new Uint8Array(t.slice(b,l))}),I=await Promise.all(u);return function(p,B){function m(E,y){if(!E)throw new Error("incomplete json subtree");if(E.constant){if(E.constant==0)return!1;if(E.constant==1)return!0}if(E.bitstream==null)throw new Error('json subtree "tileAvailability" does not specify a bitstream');if(!p.bufferViews||!p.bufferViews[E.bitstream])throw new Error('json subtree "bufferViews" does not specify a bitstream');const D=p.bufferViews[E.bitstream];return C(B[D.buffer],D.byteOffset,y)}function C(E,y,D){const j=D%8;return E[y+Math.floor(D/8)]>>j&!0}function w(E){let y=0;return y=E.z==null?ze(E.x,E.y,E.level):Ye(E.x,E.y,E.z,E.level),m(p.tileAvailability,y)}function k(E){let y=0;y=E.z==null?ze(E.x,E.y,E.level):Ye(E.x,E.y,E.z,E.level);const D=[];return p.contentAvailability.forEach(j=>{D.push(m(j,y))}),D}function x(E){let y=0;return y=E.z==null?ze(E.x,E.y):Ye(E.x,E.y,E.z),m(p.childSubtreeAvailability,y)}return{isTileAvailable:w,isContentAvailable:k,isChildSubtreeAvailable:x}}(g,I)}(await a.arrayBuffer(),Ca(r));throw new Error(`Unsupported file extension: ${e}`)}function Ca(r){const e=r.split("?")[0];return e.substring(0,e.lastIndexOf("/")+1)}function ma(r){return r=1431655765&((r=858993459&((r=252645135&((r=16711935&((r&=65535)^r<<8))^r<<4))^r<<2))^r<<1)}function ze(r,e,a){let t=0;return a&&(t=(Math.pow(4,a)-1)/3),t+(ma(r)|ma(e)<<1)}function Ve(r){return r=153391689&((r=51130563&((r=50393103&((r=4278190335&((r&=1023)^r<<16))^r<<8))^r<<4))^r<<2)}function Ye(r,e,a,t){let A=0;return t&&(A=(Math.pow(8,t)-1)/7),A+(Ve(r)|Ve(e)<<1|Ve(a)<<2)}const me=new Map;async function ia(r,e){if(!r.root||!r.root.implicitTiling)return r;if(!r.root.content&&!r.root.contents)throw new Error("implicit tiling requires a Template URI");let a=!0;r.root.implicitTiling.subdivisionScheme&&(a=r.root.implicitTiling.subdivisionScheme.toUpperCase()==="QUADTREE");let t="";r.root.implicitTiling.subtrees&&(r.root.implicitTiling.subtrees.uri?t=r.root.implicitTiling.subtrees.uri:r.root.implicitTiling.subtrees.url&&(t=r.root.implicitTiling.subtrees.url));let A=[];r.root.content?r.root.content.uri?A.push(r.root.content.uri):r.root.content.url&&A.push(r.root.content.url):r.root.contents&&r.root.contents.forEach(f=>{f.uri?A.push(f.uri):f.url&&A.push(f.url)});const i=function(f){const g=f.split("?")[0];return g.substring(0,g.lastIndexOf("/")+1)}(e);let s;a&&(s=t.replace("{level}",0).replace("{x}",0).replace("{y}",0)),a||(s=t.replace("{level}",0).replace("{x}",0).replace("{y}",0).replace("{z}",0));const o={level:0,x:0,y:0},c={level:0,x:0,y:0};a||(o.z=0,c.z=0),me.set(s,await Ba(i+s));const n=me.get(s),b=[];n.isContentAvailable(c)&&A.forEach(f=>{let g;a&&(g=f.replace("{level}",o.level).replace("{x}",o.x).replace("{y}",o.y)),a||(g=f.replace("{level}",o.level).replace("{x}",o.x).replace("{y}",o.y).replace("{z}",o.z)),b.push({uri:g})});const l={geometricError:r.root.geometricError,boundingVolume:r.root.boundingVolume,refine:r.root.refine,globalAddress:o,localAddress:c,subtree:n,contents:b,getChildren:async()=>h(l)};return{root:l};async function h(f){const g=[];if(f.localAddress.level==r.root.implicitTiling.availableLevels-1)return g;if((f.localAddress.level+1)%r.root.implicitTiling.subtreeLevels==0){const u=De(f.localAddress),I=De(f.globalAddress),p=Ea(a,r.root.boundingVolume,I);for(let B=0;B<u.length;B++){const m=u[B],C=I[B];f.subtree.isChildSubtreeAvailable(m)&&(a&&t.replace("{level}",C.level).replace("{x}",C.x).replace("{y}",C.y),a||t.replace("{level}",C.level).replace("{x}",C.x).replace("{y}",C.y).replace("{z}",C.z)),me.has(s)||me.set(s,await Ba(i+s));const w=me.get(s),k={level:0,x:0,y:0};a||(k.z=0);const x=[];w.isContentAvailable(k)&&A.forEach(y=>{let D;a&&(D=y.replace("{level}",C.level).replace("{x}",C.x).replace("{y}",C.y)),a||(D=y.replace("{level}",C.level).replace("{x}",C.x).replace("{y}",C.y).replace("{z}",C.z)),x.push({uri:D})});const E={geometricError:f.geometricError/2,boundingVolume:p[B],refine:r.root.refine,globalAddress:C,localAddress:k,subtree:w,contents:x,getChildren:async()=>h(E)};g.push(E)}}else{const u=De(f.localAddress),I=De(f.globalAddress),p=Ea(a,r.root.boundingVolume,I);for(let B=0;B<u.length;B++){const m=u[B],C=I[B];if(!f.subtree.isTileAvailable(m))continue;const w=[],k=f.subtree.isContentAvailable(m);for(let E=0;E<A.length;E++){if(!k[E])continue;const y=A[E];let D;a&&(D=y.replace("{level}",C.level).replace("{x}",C.x).replace("{y}",C.y)),a||(D=y.replace("{level}",C.level).replace("{x}",C.x).replace("{y}",C.y).replace("{z}",C.z)),w.push({uri:D})}const x={geometricError:f.geometricError/2,boundingVolume:p[B],refine:r.root.refine,globalAddress:C,localAddress:m,subtree:f.subtree,contents:w,getChildren:async()=>h(x)};g.push(x)}}return g.length>0?g:void 0}}function De(r){const{level:e,x:a,y:t,z:A}=r,i=e+1;let s=[];return s=A===void 0?[{level:i,x:2*a,y:2*t},{level:i,x:2*a+1,y:2*t},{level:i,x:2*a,y:2*t+1},{level:i,x:2*a+1,y:2*t+1}]:[{level:i,x:2*a,y:2*t,z:2*A},{level:i,x:2*a+1,y:2*t,z:2*A},{level:i,x:2*a,y:2*t+1,z:2*A},{level:i,x:2*a+1,y:2*t+1,z:2*A},{level:i,x:2*a,y:2*t,z:2*A+1},{level:i,x:2*a+1,y:2*t,z:2*A+1},{level:i,x:2*a,y:2*t+1,z:2*A+1},{level:i,x:2*a+1,y:2*t+1,z:2*A+1}],s}function Ea(r,e,a){const t=[];for(let A=0;A<a.length;A++)t.push(tA(r,e,a[A]));return t}function tA(r,e,a){if(e.region)return function(t,A,i){const[s,o,c,n,b,l]=A,h=(c-s)/2**i.level,f=(n-o)/2**i.level,g=t?0:(l-b)/2**i.level,u=s+h*i.x,I=o+f*i.y,p=u+h,B=I+f,m=t?b:b+g*i.z,C=t?l:m+g;return{region:[u,I,p,B,m,C]}}(r,e.region,a);if(e.box)return function(t,A,i){const s=A.slice(0,3),o=[A.slice(3,6),A.slice(6,9),A.slice(9,12)],c=1/Math.pow(2,i.level),n=[c,c,t?1:c],b=o.map((f,g)=>f.map(u=>u*n[g])),l=[s[0]-o[0][0]-o[1][0]-o[2][0],s[1]-o[0][1]-o[1][1]-o[2][1],s[2]-o[0][2]-o[1][2]-o[2][2]];return{box:[l[0]+(2*i.x+1)*(b[0][0]+b[1][0]+b[2][0]),l[1]+(2*i.y+1)*(b[0][1]+b[1][1]+b[2][1]),t?s[2]:l[2]+(2*i.z+1)*(b[0][2]+b[1][2]+b[2][2])].concat(...b)}}(r,e.box,a);throw new Error("Unsupported bounding volume type")}(function(){var r,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var a=WebAssembly.instantiate(function(n){for(var b=new Uint8Array(n.length),l=0;l<n.length;++l){var h=n.charCodeAt(l);b[l]=h>96?h-97:h>64?h-39:h+4}var f=0;for(l=0;l<n.length;++l)b[f++]=b[l]<60?e[b[l]]:64*(b[l]-60)+b[++l];return b.buffer.slice(0,f)}("b9H79TebbbeJq9Geueu9Geub9Gbb9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9GiuuueuiKLdilevlevlooroowwvwbDDbelve9Weiiviebeoweuec:W;kekr;RiOo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbe8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbdE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UbiY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbl8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbv8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UboE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbra9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbwL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbDK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbqL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbkE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbPa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9Wbsa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbzK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbHl79IV9RbODwebcekdQXq:g9sLdbk;3keYu8Jjjjjbcjo9Rgv8Kjjjjbcbhodnalcefae0mbabcbRb:S:kjjbc:GeV86bbavcjdfcbcjdzNjjjb8AdnaiTmbavcjdfadalz:tjjjb8Akabaefhrabcefhwavalfcbcbcjdal9RalcFe0EzNjjjb8Aavavcjdfalz:tjjjbhDcj;abal9UhodndndndndnalTmbaoc;WFbGgecjdaecjd6Ehqcbhkdninakai9pmiaDcjlfcbcjdzNjjjb8Aaqaiak9Rakaqfai6Egxcsfgecl4cifcd4hmadakal2fhPdndndndndnaec9WGgsTmbcbhzcehHaPhOawhAxekdnaxTmbcbhAcehHaPhCinaDaAfRbbhXaDcjlfheaChoaxhQinaeaoRbbgLaX9RgXcetaX;acr4786bbaoalfhoaecefheaLhXaQcufgQmbkaraw9Ram6miawcbamzNjjjbgeTmiaCcefhCaeamfhwaAcefgAal6hHaAal9hmbxvkkaraw9Ram6mvawcbamzNjjjb8AceheinawgXamfhwalaegoSmldnaraw9Ram6mbaocefheawcbamzNjjjb8AaXmekkaoal6hHxekindnaxTmbaDazfRbbhXaDcjlfheaOhoaxhQinaeaoRbbgLaX9RgXcetaX;acr4786bbaoalfhoaecefheaLhXaQcufgQmbkkaraA9Ram6mearaAcbamzNjjjbgKamfgw9RcK6mdcbhYaDcjlfhAinaDcjlfaYfh8AcwhCczhLcehQindndnaQce9hmbcuhoa8ARbbmecbhodninaogecsSmeaecefhoaAaefcefRbbTmbkkcucbaecs6EhoxekaQcetc;:FFFeGhocuaQtcu7cFeGhXcbheinaoaXaAaefRbb9nfhoaecefgecz9hmbkkaoaLaoaL6geEhLaQaCaeEhCaQcetgQcw6mbkdndndndnaCcufPdiebkaKaYco4fgeaeRbbcdciaCclSEaYci4coGtV86bbaCcw9hmeawa8A8Pbb83bbawcwfa8Acwf8Pbb83bbawczfhwxdkaKaYco4fgeaeRbbceaYci4coGtV86bbkdncwaC9TgEmbinawcb86bbawcefhwxbkkcuaCtcu7h8Acbh3aAh5ina5heaEhQcbhoinaeRbbgLa8AcFeGgXaLaX6EaoaCtVhoaecefheaQcufgQmbkawao86bba5aEfh5awcefhwa3aEfg3cz6mbkcbheindnaAaefRbbgoaX6mbawao86bbawcefhwkaecefgecz9hmbkkdnaYczfgYas9pmbaAczfhAaraw9RcL0mekkaYas6meawTmeaOcefhOazcefgzal6hHawhAazalSmixbkkcbhwaHceGTmexikcbhwaHceGmdkaDaPaxcufal2falz:tjjjb8AaxakfhkawmbkcbhoxokcbhoxvkaiTmekcbhoaraw9Ralcaalca0E6mialc8F9nmexdkcbhoaecufca6mdkawcbcaal9RgezNjjjbaefhwkawaDcjdfalz:tjjjbalfab9Rhokavcjof8Kjjjjbaok9heeuaecaaeca0Eabcj;abae9Uc;WFbGgdcjdadcjd6Egdfcufad9Uae2adcl4cifcd4adV2fcefkmbcbabBd:S:kjjbk;rse3u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd:C:kjjbgrc;GeV86bbalc;abfcFecjezNjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgoydbhLaocwfydbhKaoclfydbhYcbh8Adndninalc;abfavcsGcitfgoydlhEdndndnaoydbgoaL9hmbaEaYSmekdnaoaY9hmbaEaK9hmba8Acefh8AxekaoaK9hmeaEaL9hmea8Acdfh8Aka8Ac870mdaXcufhvada8AciGcx2goc:y1jjbfydbaCfcdtfydbhEadaocN1jjbfydbaCfcdtfydbhKadaoc:q1jjbfydbaCfcdtfydbhLcbhodnindnalavcsGcdtfydbaE9hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaEaOSgvaYce9iaYaH9oVgoGh3dndndndndncbcsavEaYaoEgvcs9hmbarce9imbaEaEaAaEcefaASgvEgAcefSmecmcsavEhvkasava8Acdtc;WeGV86bbavcs9hmeaEaA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbkaEhAxdkcPhvasa8AcdtcPV86bbaEhAkavTmbavaH9imekalaXcdtfaEBdbaXcefcsGhXkaOa3fhOalc;abfaQcitfgvaKBdlavaEBdbalc;abfaQcefcsGgvcitfgoaEBdlaoaLBdbavcefhoxikavcufhva8Aclfg8Ac;ab9hmbkkdnadceaKaOScetaYaOSEcx2gvc:q1jjbfydbaCfcdtfydbgLTadavcN1jjbfydbaCfcdtfydbg8AceSGadavc:y1jjbfydbaCfcdtfydbgYcdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhKxdkcuhKaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydbaY9hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaLaOSg8Efh3dndnaKcm0mbaKcefhKxekcbcsa8Aa3SgvEhKa3avfh3kdndnaEcm0mbaEcefhExekcbcsaYa3SgvEhEa3avfh3kc9:cua8EEh8FaEaKcltVhocbhvdndndninavcj1jjbfRbbaocFeGSmeavcefgvcz9hmbxdkka5aLaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeao86bbaecefhekdna8EmbaLaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaLhAkdnaKcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmbaYaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaYhAkalaXcdtfaLBdbaXcefcsGhvdndnaKPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfaYBdbavcefcsGhvkalc;abfaQcitfgoaLBdlaoa8ABdbalc;abfaQcefcsGcitfgoa8ABdlaoaYBdbalc;abfaQcdfcsGcitfgoaYBdlaoaLBdbaQcifhoavhXa3hOkascefhsaocsGhQaCcifgCai6mbkkcbhvaeaP0mbcbhvinaeavfavcj1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd:C:kjjbk:ydewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb:C:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkcbhvaoar0mbaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:dvli99dui99ludnaeTmbcuadcetcuftcu7:Yhvdndncuaicuftcu7:YgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhralcxfIdbhqdndnakJbbbb9GTmbaxhkxekJbbjZar:l:tgkak:maxJbbbb9GEhkJbbjZax:l:tgxax:marJbbbb9GEhrkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEavNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohmxekcjjjj94hmkdndnakJbbj:;akJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;akJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;klld99eud99eudnaeTmbdndncuaicuftcu7:YgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicdfciGcdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk:Hvdxue998Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6mearcearce0EhwaohDinaDc:CuBdbaDclfhDawcufgwmbkaeTmiadcl6mdarcearce0EhqarcdthkalhxcbhminaohDaxhwaqhPinaDaDydbgsawydbgzcL4cFeGc:cufcbazEgzasaz9kEBdbawclfhwaDclfhDaPcufgPmbkaxakfhxamcefgmae9hmbkkaeTmdxekaeTmekavcb9hadcl6gqVhHarcearce0Ehkarcdthrceai9Rhmcbhdindndndnavce9hmbaqmdc:CuhwalhDakhPinawaDydbgscL4cFeGc:cufcbasEgsawas9kEhwaDclfhDaPcufgPmbxdkkc:CuhwaHmbaohDalhPakhsinaDaPydbgzcL4cFeGgxc8Aaxc8A9kEc:cufcbazEBdbaPclfhPaDclfhDascufgsmbkkaqmbcbhDakhsinawhPdnavceSmbaoaDfydbhPkdndnalaDfIdbgOcjjj;8iamaPfgPcLt9R::NJbbbZJbbb:;aOJbbbb9GEMgO:lJbbb9p9DTmbaO:Ohzxekcjjjj94hzkabaDfazcFFFrGaPcKtVBdbaDclfhDascufgsmbkkabarfhbalarfhladcefgdae9hmbkkaocjdf8KjjjjbkFkdCui998Jjjjjbc:Gd9Rgv8Kjjjjbavc:4efcbc;KbzNjjjb8AcbhodnadTmbcbhoaiTmbdnabae9hmbavcuadcdtgoadcFFFFi0Ecbyd:K:kjjbHjjjjbbgeBd:4eavceBd:ydaeabaoz:tjjjb8Akavc:OefcwfcbBdbav9cb83i:Oeavc:Oefaeadaiavc:4efz:njjjbcuaicdtgraicFFFFi0Egwcbyd:K:kjjbHjjjjbbhoavc:4efavyd:ydgDcdtfaoBdbavaDcefgqBd:ydaoavyd:Oegkarz:tjjjbhxavc:4efaqcdtfadci9Ugmcbyd:K:kjjbHjjjjbbgoBdbavaDcdfgrBd:ydaocbamzNjjjbhPavc:4efarcdtfawcbyd:K:kjjbHjjjjbbgsBdbavaDcifgqBd:ydaxhoashrinaralIdbalaoydbgwcwawcw6Ecdtfc;ebfIdbMUdbaoclfhoarclfhraicufgimbkavc:4efaqcdtfcuamcdtadcFFFF970Ecbyd:K:kjjbHjjjjbbgqBdbavaDclfBd:yddnadci6mbamceamce0EhiaehoaqhrinarasaoydbcdtfIdbasaoclfydbcdtfIdbMasaocwfydbcdtfIdbMUdbaocxfhoarclfhraicufgimbkkavc;qbfhzavhoavyd:SehHavyd:WehOcbhwcbhrcbhAcehCinaohXcihQaearci2gLcdtfgocwfydbhdaoydbhDabaAcx2fgiclfaoclfydbgKBdbaiaDBdbaicwfadBdbaParfce86bbazadBdwazaKBdlazaDBdbaqarcdtfcbBdbdnawTmbcihQaXhiinazaQcdtfaiydbgoBdbaQaoaD9haoaK9hGaoad9hGfhQaiclfhiawcufgwmbkkaAcefhAaxaDcdtfgoaoydbcufBdbaxaKcdtfgoaoydbcufBdbaxadcdtfgoaoydbcufBdbcbhwinaOaHaeawaLfcdtfydbcdtgifydbcdtfgKhoakaifgDydbgdhidnadTmbdninaoydbarSmeaoclfhoaicufgiTmdxbkkaoadcdtaKfc98fydbBdbaDaDydbcufBdbkawcefgwci9hmbkdndndnaQTmbcuhrJbbbbhYcbhDavyd:SehKavyd:WehLindndnakazaDcdtfydbcdtgofydbgimbaDcefhDxekaDcs0hwasaofgdIdbh8AadalcbaDcefgDawEcdtfIdbalaxaofydbgwcwawcw6Ecdtfc;ebfIdbMgEUdbaEa8A:thEaicdthiaLaKaofydbcdtfhoinaqaoydbgwcdtfgdaEadIdbMg8AUdba8AaYaYa8A9DgdEhYawaradEhraoclfhoaic98fgimbkkaDaQ9hmbkarcu9hmekaCam9pmeindnaPaCfRbbmbaChrxdkamaCcefgC9hmbxdkkaQczaQcz6EhwazhoaXhzarcu9hmekkavyd:ydhokaocdtavc:4effc98fhrdninaoTmearydbcbyd:G:kjjbH:bjjjbbarc98fhraocufhoxbkkavc:Gdf8Kjjjjbk;UlevucuaicdtgvaicFFFFi0Egocbyd:K:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd:K:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd:K:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavzNjjjb8Aadci9UhwdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbawceawce0EhDabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic:01jjbz:mjjjbkQbabaeadaic:C:jjjbz:mjjjbk9DeeuabcFeaicdtzNjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk;:kivuo99lu8Jjjjjbcj;Hb9Rgl8Kjjjjbcbhvalc1;Gbfcbc;KbzNjjjb8AalcuadcdtadcFFFFi0Egocbyd:K:kjjbHjjjjbbgrBd19GalceBd;O9Galcwfcbyd:m:kjjbBdbalcb8Pd:e:kjjb83ibalc;W;Gbfcwfcbyd:y:kjjbBdbalcb8Pd:q:kjjb83i;W9Gaicd4hwdndnadmbJFFuFhDJFFuuhqJFFuuhkJFFuFhxJFFuuhmJFFuFhPxekawcdthsaehzincbhiinalaifgHazaifIdbgDaHIdbgxaxaD9EEUdbalc;W;GbfaifgHaDaHIdbgxaxaD9DEUdbaiclfgicx9hmbkazasfhzavcefgvad9hmbkalIdwhqalId;49GhDalIdlhkalId;09GhxalIdbhmalId;W9GhPkdndnadTmbJbbbbJbbjZaPam:tJbbbb:xgPaxak:tgxaxaP9DEgxaDaq:tgDaDax9DEgD:vaDJbbbb9BEhDawcdthsarhHadhzindndnaDaeIdbam:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcv2c;j:KM;jbGhvdndnaDaeclfIdbak:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcq2cM;j:KMeGavVhvdndnaDaecwfIdbaq:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaHavaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcC2c:KM;j:KdGVBdbaeasfheaHclfhHazcufgzmbkalcbcj;GbzNjjjbhiarhHadheinaiaHydbgzcFrGcx2fgvavydbcefBdbaiazcq4cFrGcx2fgvavydlcefBdlaiazcC4cFrGcx2fgzazydwcefBdwaHclfhHaecufgembxdkkalcbcj;GbzNjjjb8AkcbhHcbhzcbhecbhvinalaHfgiydbhsaiazBdbaicwfgwydbhOawavBdbaiclfgiydbhwaiaeBdbasazfhzaOavfhvawaefheaHcxfgHcj;Gb9hmbkcbhialaocbyd:K:kjjbHjjjjbbgzBd:m9GdnadTmbabhHinaHaiBdbaHclfhHadaicefgi9hmbkadTmbabhiadhHinalaraiydbgecdtfydbcFrGcx2fgvavydbgvcefBdbazavcdtfaeBdbaiclfhiaHcufgHmbkazhiadhHinalaraiydbgecdtfydbcq4cFrGcx2fgvavydlgvcefBdlabavcdtfaeBdbaiclfhiaHcufgHmbkabhiadhHinalaraiydbgecdtfydbcC4cFrGcx2fgvavydwgvcefBdwazavcdtfaeBdbaiclfhiaHcufgHmbkadTmbcbhiinabazydbcdtfaiBdbazclfhzadaicefgi9hmbkkclhidninaic98Smealc1;Gbfaifydbcbyd:G:kjjbH:bjjjbbaic98fhixbkkalcj;Hbf8Kjjjjbk9teiucbcbyd:O:kjjbgeabcifc98GfgbBd:O:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:O:kjjbgeabcrfc94GfgbBd:O:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:O:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:O:kjjbfgdBd:O:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk:6ddbcjwk:Cdb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:FFuuFFuuFFuuFFuFFFuFFFuFbc:Cqkzebbbebbbdbbb8WWbb"),{}).then(function(n){(r=n.instance).exports.__wasm_call_ctors(),r.exports.meshopt_encodeVertexVersion(0),r.exports.meshopt_encodeIndexVersion(1)});function t(n){if(!n)throw new Error("Assertion failed")}function A(n){return new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}function i(n,b,l,h,f){var g=r.exports.sbrk,u=g(b),I=g(h*f),p=new Uint8Array(r.exports.memory.buffer);p.set(A(l),I);var B=n(u,b,I,h,f),m=new Uint8Array(B);return m.set(p.subarray(u,u+B)),g(u-g(0)),m}function s(n){for(var b=0,l=0;l<n.length;++l)var h=n[l];return b}function o(n,b){if(t(b==2||b==4),b==4)return new Uint32Array(n.buffer,n.byteOffset,n.byteLength/4);var l=new Uint16Array(n.buffer,n.byteOffset,n.byteLength/2);return new Uint32Array(l)}function c(n,b,l,h,f,g,u){var I=r.exports.sbrk,p=I(l*h),B=I(l*g),m=new Uint8Array(r.exports.memory.buffer);m.set(A(b),B),n(p,l,h,f,B,u);var C=new Uint8Array(l*h);return C.set(m.subarray(p,p+l*h)),I(p-I(0)),C}})();var $a=function(){var r=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]),e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var a,t=WebAssembly.validate(r)?"b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;b9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;e8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincbhHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAcd0hHalhOaAcefgAclSmdxekkcbhlaHceGTmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;tzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfalaDcu7gPcl4fcsGcitfgsydlhzasydbhHdnaDcsGgDak9pmbavaiaPfcsGcdtfydbaxaDEhsaDThDdndnadcd9hmbabarcetfgPaH87ebaPcdfaz87ebaPclfas87ebxekabarcdtfgPaHBdbaPclfazBdbaPcwfasBdbkaxaDfhxavc;abfalcitfgPasBdbaPazBdlavaicdtfasBdbavc;abfalcefcsGglcitfgPaHBdbaPasBdlaiaDfhialcefhlxdkdndnaDcsSmbamaDfaDc987fcefhmxekaocefhDao8SbbgscFeGhPdndnascu9mmbaDhoxekaocvfhoaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhokaPce4cbaPceG9R7amfhmkdndnadcd9hmbabarcetfgDaH87ebaDcdfaz87ebaDclfam87ebxekabarcdtfgDaHBdbaDclfazBdbaDcwfamBdbkavc;abfalcitfgDamBdbaDazBdlavaicdtfamBdbavc;abfalcefcsGglcitfgDaHBdbaDamBdlaicefhialcefhlxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHcdfaD87ebaHclfas87ebxekabarcdtfgHaxBdbaHclfaDBdbaHcwfasBdbkavaicdtfaxBdbavc;abfalcitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfalcefcsGcitfgHasBdbaHaDBdlavaiaPfcsGgicdtfasBdbavc;abfalcdfcsGglcitfgDaxBdbaDasBdlalcefhlaiaOfhiazaOfhxxekaxcbaoRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbaocefhDxekaocdfhDao8SbegPcFeGhsdnaPcu9kmbaocofhAascFbGhscrhodninaD8SbbgPcFbGaotasVhsaPcu9kmeaDcefhDaocrfgoc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbgocFeGhPdnaocu9kmbaDcvfhzaPcFbGhPcrhodninas8SbbgDcFbGaotaPVhPaDcu9kmeascefhsaocrfgoc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashoxekascefhoas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninao8SbbgscFbGaDtaPVhPascu9kmeaocefhoaDcrfgDc8J9hmbkaOhoxekaocefhokaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDcdfaz87ebaDclfaO87ebxekabarcdtfgDaABdbaDclfazBdbaDcwfaOBdbkavc;abfalcitfgDazBdbaDaABdlavaicdtfaABdbavc;abfalcefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfalcdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiarcifgrae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:wPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabalcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnaval9pmbaialciGgecdtgdVcbc;abad9R;8kbaiabavcdtfgvad;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkavaiad;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb":"b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq;d8Yqdbk:yzeHu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhlaicefhodnadTmbalc;WFbGglcjdalcjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfglcl4cifcd4hxdndndndnalc9WGgmTmbcbhPcehsawcjdfhzaohHinaraH9Rax6midnaraHaxfgo9RcK6mbczhlcbhOinalgic9WfgAawcj;cbffhldndndndndnaHaAco4fRbbaOcoG4ciGPlbedibkal9cb83ibalcwf9cb83ibxikalaoRblaoRbbgAco4gCaCciSgCE86bbawcj;cbfaifglcGfaoclfaCfgCRbbaAcl4ciGgXaXciSgXE86bbalcVfaCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc7faCaXfgCRbbaAciGgAaAciSgAE86bbalctfaCaAfgCRbbaoRbegAco4gXaXciSgXE86bbalc91faCaXfgCRbbaAcl4ciGgXaXciSgXE86bbalc4faCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc93faCaXfgCRbbaAciGgAaAciSgAE86bbalc94faCaAfgCRbbaoRbdgAco4gXaXciSgXE86bbalc95faCaXfgCRbbaAcl4ciGgXaXciSgXE86bbalc96faCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc97faCaXfgCRbbaAciGgAaAciSgAE86bbalc98faCaAfgARbbaoRbigoco4gCaCciSgCE86bbalc99faAaCfgARbbaocl4ciGgCaCciSgCE86bbalc9:faAaCfgARbbaocd4ciGgCaCciSgCE86bbalcufaAaCfglRbbaociGgoaociSgoE86bbalaofhoxdkalaoRbwaoRbbgAcl4gCaCcsSgCE86bbawcj;cbfaifglcGfaocwfaCfgCRbbaAcsGgAaAcsSgAE86bbalcVfaCaAfgARbbaoRbegCcl4gXaXcsSgXE86bbalc7faAaXfgARbbaCcsGgCaCcsSgCE86bbalctfaAaCfgARbbaoRbdgCcl4gXaXcsSgXE86bbalc91faAaXfgARbbaCcsGgCaCcsSgCE86bbalc4faAaCfgARbbaoRbigCcl4gXaXcsSgXE86bbalc93faAaXfgARbbaCcsGgCaCcsSgCE86bbalc94faAaCfgARbbaoRblgCcl4gXaXcsSgXE86bbalc95faAaXfgARbbaCcsGgCaCcsSgCE86bbalc96faAaCfgARbbaoRbvgCcl4gXaXcsSgXE86bbalc97faAaXfgARbbaCcsGgCaCcsSgCE86bbalc98faAaCfgARbbaoRbogCcl4gXaXcsSgXE86bbalc99faAaXfgARbbaCcsGgCaCcsSgCE86bbalc9:faAaCfgARbbaoRbrgocl4gCaCcsSgCE86bbalcufaAaCfglRbbaocsGgoaocsSgoE86bbalaofhoxekalao8Pbb83bbalcwfaocwf8Pbb83bbaoczfhokdnaiam9pmbaOcdfhOaiczfhlarao9RcL0mekkaiam6miaoTmidnakTmbawaPfRbbhOawcj;cbfhlazhiakhAinaialRbbgHce4cbaHceG9R7aOfgO86bbaiadfhialcefhlaAcufgAmbkkazcefhzaPcefgPad6hsaohHaPad9hmexvkkcbhoasceGmdxikaoaxad2fhXdnakTmbcbhmcehsawcjdfhCinarao9Rax6miaoTmdaoaxfhoawamfRbbhOawcj;cbfhlaChiakhAinaialRbbgHce4cbaHceG9R7aOfgO86bbaiadfhialcefhlaAcufgAmbkaCcefhCamcefgmad6hsamad9hmbkaXhoxikcbhlcehsinarao9Rax6mdaoTmeaoaxfhoalcefglad6hsadal9hmbkaXhoxdkcbhoasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqaombkc9:hoxekcbc99arao9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;xzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfalaDcu7gPcl4fcsGcitfgsydlhzasydbhHdnaDcsGgDak9pmbavaiaPfcsGcdtfydbaxaDEhsaDThDdndnadcd9hmbabarcetfgPaH87ebaPcdfaz87ebaPclfas87ebxekabarcdtfgPaHBdbaPclfazBdbaPcwfasBdbkaxaDfhxavc;abfalcitfgPasBdbaPazBdlavaicdtfasBdbavc;abfalcefcsGglcitfgPaHBdbaPasBdlaiaDfhialcefhlxdkdndnaDcsSmbamaDfaDc987fcefhmxekaocefhDao8SbbgscFeGhPdndnascu9mmbaDhoxekaocvfhoaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhokaPce4cbaPceG9R7amfhmkdndnadcd9hmbabarcetfgDaH87ebaDcdfaz87ebaDclfam87ebxekabarcdtfgDaHBdbaDclfazBdbaDcwfamBdbkavc;abfalcitfgDamBdbaDazBdlavaicdtfamBdbavc;abfalcefcsGglcitfgDaHBdbaDamBdlaicefhialcefhlxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHcdfaD87ebaHclfas87ebxekabarcdtfgHaxBdbaHclfaDBdbaHcwfasBdbkavaicdtfaxBdbavc;abfalcitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfalcefcsGcitfgHasBdbaHaDBdlavaiaPfcsGgicdtfasBdbavc;abfalcdfcsGglcitfgDaxBdbaDasBdlalcefhlaiaOfhiazaOfhxxekaxcbaoRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbaocefhDxekaocdfhDao8SbegPcFeGhsdnaPcu9kmbaocofhAascFbGhscrhodninaD8SbbgPcFbGaotasVhsaPcu9kmeaDcefhDaocrfgoc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbgocFeGhPdnaocu9kmbaDcvfhzaPcFbGhPcrhodninas8SbbgDcFbGaotaPVhPaDcu9kmeascefhsaocrfgoc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashoxekascefhoas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninao8SbbgscFbGaDtaPVhPascu9kmeaocefhoaDcrfgDc8J9hmbkaOhoxekaocefhokaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDcdfaz87ebaDclfaO87ebxekabarcdtfgDaABdbaDclfazBdbaDcwfaOBdbkavc;abfalcitfgDazBdbaDaABdlavaicdtfaABdbavc;abfalcefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfalcdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiarcifgrae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabaiavcdfciGfcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabaiavcufciGfcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabaiavciGfcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb",A=WebAssembly.instantiate(i(t),{}).then(function(f){(a=f.instance).exports.__wasm_call_ctors()});function i(f){for(var g=new Uint8Array(f.length),u=0;u<f.length;++u){var I=f.charCodeAt(u);g[u]=I>96?I-97:I>64?I-39:I+4}var p=0;for(u=0;u<f.length;++u)g[p++]=g[u]<60?e[g[u]]:64*(g[u]-60)+g[++u];return g.buffer.slice(0,p)}function s(f,g,u,I,p,B,m){var C=f.exports.sbrk,w=I+3&-4,k=C(w*p),x=C(B.length),E=new Uint8Array(f.exports.memory.buffer);E.set(B,x);var y=g(k,I,p,x,B.length);if(y==0&&m&&m(k,w,p),u.set(E.subarray(k,k+I*p)),C(k-C(0)),y!=0)throw new Error("Malformed buffer data: "+y)}var o={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},c={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},n=[],b=0;function l(f){var g={object:new Worker(f),pending:0,requests:{}};return g.object.onmessage=function(u){var I=u.data;g.pending-=I.count,g.requests[I.id][I.action](I.value),delete g.requests[I.id]},g}function h(f){var g=f.data;if(!g.id)return self.close();self.ready.then(function(u){try{var I=new Uint8Array(g.count*g.size);s(u,u.exports[g.mode],I,g.count,g.size,g.source,u.exports[g.filter]),self.postMessage({id:g.id,count:g.count,action:"resolve",value:I},[I.buffer])}catch(p){self.postMessage({id:g.id,count:g.count,action:"reject",value:p})}})}return{ready:A,supported:!0,useWorkers:function(f){(function(g){for(var u="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(i(t))+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+h.name+";"+s.toString()+h.toString(),I=new Blob([u],{type:"text/javascript"}),p=URL.createObjectURL(I),B=n.length;B<g;++B)n[B]=l(p);for(B=g;B<n.length;++B)n[B].object.postMessage({});n.length=g,URL.revokeObjectURL(p)})(f)},decodeVertexBuffer:function(f,g,u,I,p){s(a,a.exports.meshopt_decodeVertexBuffer,f,g,u,I,a.exports[o[p]])},decodeIndexBuffer:function(f,g,u,I){s(a,a.exports.meshopt_decodeIndexBuffer,f,g,u,I)},decodeIndexSequence:function(f,g,u,I){s(a,a.exports.meshopt_decodeIndexSequence,f,g,u,I)},decodeGltfBuffer:function(f,g,u,I,p,B){s(a,a.exports[c[p]],f,g,u,I,a.exports[o[B]])},decodeGltfBufferAsync:function(f,g,u,I,p){return n.length>0?function(B,m,C,w,k){for(var x=n[0],E=1;E<n.length;++E)n[E].pending<x.pending&&(x=n[E]);return new Promise(function(y,D){var j=new Uint8Array(C),F=++b;x.pending+=B,x.requests[F]={resolve:y,reject:D},x.object.postMessage({id:F,count:B,size:m,source:j,mode:w,filter:k},[j.buffer])})}(f,g,u,c[I],o[p]):A.then(function(){var B=new Uint8Array(f*g);return s(a,a.exports[c[I]],B,f,g,u,a.exports[o[p]]),B})}}}();(function(){var r,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var a=WebAssembly.instantiate(function(o){for(var c=new Uint8Array(o.length),n=0;n<o.length;++n){var b=o.charCodeAt(n);c[n]=b>96?b-97:b>64?b-39:b+4}var l=0;for(n=0;n<o.length;++n)c[l++]=c[n]<60?e[c[n]]:64*(c[n]-60)+c[++n];return c.buffer.slice(0,l)}("b9H79Tebbbe9Ek9Geueu9Geub9Gbb9GPuuuuuuuuuuu99uueu9Gvuuuuub9Gluuuub9Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuizsdilvoirwDbqqbeqlve9Weiiviebeoweuec:G;jekr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95bl8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bvQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7boX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbra9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbwl79IV9RbDDwebcekdxmq::9Usdbk;i6iKuY99Ou8Jjjjjbc;W;ab9RgP8KjjjjbaPcwfcbc;Kbz:ljjjb8AaPcualcefgscdtascFFFFi0Ecbyd1:jjjbHjjjjbbgzBdwaPceBd9OaPazBdbaPcuadcitadcFFFFe0Ecbyd1:jjjbHjjjjbbgHBdxaPcdBd9OaPaHBdlaPaeadalcbz:cjjjbaPcualcdtgOalcFFFFi0EgAcbyd1:jjjbHjjjjbbgCBdzaPciBd9OaPaAcbyd1:jjjbHjjjjbbgXBdCaPclBd9Oalcd4alfhQcehLinaLgscethLasaQ6mbkcbhKaPcuascdtgLascFFFFi0Ecbyd1:jjjbHjjjjbbgQBdKaPcvBd9OaQcFeaLz:ljjjbhYdnalTmbavcd4h8AascufhEinaiaKa8A2cdtfg3ydlgscH4as7c:F:b:DD2a3ydbgscH4as7c;D;O:B8J27a3ydwgscH4as7c:3F;N8N27hQcbhsdndninaYaQaEGgQcdtfg5ydbgLcuSmeaiaLa8A2cdtfa3cxz:ojjjbTmdascefgsaQfhQasaE9nmbxdkka5aKBdbaKhLkaCaKcdtfaLBdbaKcefgKal9hmbkcbhsaXhLinaLasBdbaLclfhLalascefgs9hmbkcbhsaChLaXhQindnasaLydbgESmbaQaXaEcdtfgEydbBdbaEasBdbkaLclfhLaQclfhQalascefgs9hmbkkcbh8EaYcbyd:m:jjjbH:bjjjbbaPclBd9OaPalcbyd1:jjjbHjjjjbbgEBdKaPcvBd9OaPaAcbyd1:jjjbHjjjjbbgsBd3aPcoBd9OaPaAcbyd1:jjjbHjjjjbbgLBdaaPcrBd9OascFeaOz:ljjjbh8FaLcFeaOz:ljjjbhadnalTmbaHcwfhhindnaza8EgQcefg8Ecdtfydbg3azaQcdtgsfydbgLSmba3aL9RhOaHaLcitfhgaaasfh8Ja8FasfhKcbh8Aindndnaga8Acitfydbg5aQ9hmbaKaQBdba8JaQBdbxekdnaza5cdtg8KfgsclfydbgLasydbgsSmbaHascitg3fydbaQSmeaLas9Rh8Lascu7aLfhYaha3fhLcbhsinaYasSmeascefhsaLydbh3aLcwfhLa3aQ9hmbkasa8L6mekaaa8KfgsaQa5asydbcuSEBdbaKa5aQaKydbcuSEBdbka8Acefg8AaO9hmbkka8Eal9hmbkaChLaXhQaah3a8Fh8AcbhsindndnasaLydbg59hmbdnasaQydbg59hmba8Aydbh5dna3ydbgYcu9hmba5cu9hmbaEasfcb86bbxikaEasfhKdnasaYSmbasa5SmbaKce86bbxikaKcl86bbxdkdnasaXa5cdtgYfydb9hmbdna3ydbgKcuSmbasaKSmba8AydbgOcuSmbasaOSmbaaaYfydbggcuSmbaga5Smba8FaYfydbgYcuSmbaYa5SmbdnaCaKcdtfydbaCaYcdtfydb9hmbaCaOcdtfydbaCagcdtfydb9hmbaEasfcd86bbxlkaEasfcl86bbxikaEasfcl86bbxdkaEasfcl86bbxekaEasfaEa5fRbb86bbkaLclfhLaQclfhQa3clfh3a8Aclfh8Aalascefgs9hmbkaxceGTmbaEhsalhLindnasRbbce9hmbascl86bbkascefhsaLcufgLmbkkcualcx2alc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbh8JaPcwfaPyd9Ogscdtfa8JBdbaPascefgOBd9Oa8Jaialavz:djjjbdndnaDmbcbhvxekcbh5aPcwfaOcdtfcuaDal2gLcdtaLcFFFFi0Ecbyd1:jjjbHjjjjbbgvBdbaPascdfgOBd9OalTmbarcd4cdthYaDcdthKavh8AinaohsawhLa8AhQaDh3inaQasIdbaLIdbNUdbasclfhsaLclfhLaQclfhQa3cufg3mbkaoaYfhoa8AaKfh8Aa5cefg5al9hmbkkaPcwfaOcdtfcualc8S2gsalc;D;O;f8U0EgQcbyd1:jjjbHjjjjbbgLBdbaPaOcefg3Bd9OaLcbasz:ljjjbh8EdndndnaDTmbaPcwfa3cdtfaQcbyd1:jjjbHjjjjbbgoBdbaPaOcdfgLBd9Oaocbasz:ljjjb8AaPcwfaLcdtfcuaDal2gscltgLascFFFFb0Ecbyd1:jjjbHjjjjbbgwBdbaPaOcifBd9OawcbaLz:ljjjb8AadmexdkcbhocbhwadTmekcbh8AaehLindna8JaLclfydbg5cx2fgsIdba8JaLydbgYcx2fgQIdbg8M:tg8Na8JaLcwfydbgKcx2fg3IdlaQIdlgy:tg8PNa3Idba8M:tgIasIdlay:tg8RN:tg8Sa8SNa8Ra3IdwaQIdwgR:tg8UNa8PasIdwaR:tg8RN:tg8Pa8PNa8RaINa8Ua8NN:tg8Na8NNMM:rgIJbbbb9ETmba8SaI:vh8Sa8NaI:vh8Na8PaI:vh8Pka8EaCaYcdtfydbc8S2fgsa8PaI:rgIa8PNNg8RasIdbMUdbasa8NaIa8NNg8VNg8UasIdlMUdlasa8SaIa8SNg8WNg8XasIdwMUdwasa8Va8PNg8VasIdxMUdxasa8Wa8PNg8YasIdzMUdzasa8Wa8NNg8WasIdCMUdCasa8PaIa8SaRNa8Pa8MNaya8NNMM:mgyNg8MNg8PasIdKMUdKasa8Na8MNg8NasId3MUd3asa8Sa8MNg8SasIdaMUdaasa8MayNg8MasId8KMUd8KasaIasIdyMUdya8EaCa5cdtfydbc8S2fgsa8RasIdbMUdbasa8UasIdlMUdlasa8XasIdwMUdwasa8VasIdxMUdxasa8YasIdzMUdzasa8WasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asa8SasIdaMUdaasa8MasId8KMUd8KasaIasIdyMUdya8EaCaKcdtfydbc8S2fgsa8RasIdbMUdbasa8UasIdlMUdlasa8XasIdwMUdwasa8VasIdxMUdxasa8YasIdzMUdzasa8WasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asa8SasIdaMUdaasa8MasId8KMUd8KasaIasIdyMUdyaLcxfhLa8Acifg8Aad6mbkcbh5aehYincbhLinaEaeaLc:G1jjbfydba5fcdtfydbgQfRbbhsdndnaEaYaLfydbg3fRbbg8Ac99fcFeGcpe0mbasceSmbascd9hmekdna8AcufcFeGce0mba8Fa3cdtfydbaQ9hmekdnascufcFeGce0mbaaaQcdtfydba39hmekdna8Acv2asfc:W1jjbfRbbTmbaCaQcdtfydbaCa3cdtfydb0mekJbbacJbbjZasceSEhIa8AceShOa8JaeaLc:K1jjbfydba5fcdtfydbcx2fhsdna8JaQcx2fg8AIdwa8Ja3cx2fgKIdwgy:tg8Pa8PNa8AIdbaKIdbgR:tg8Na8NNa8AIdlaKIdlg8R:tg8Sa8SNMM:rg8MJbbbb9ETmba8Pa8M:vh8Pa8Sa8M:vh8Sa8Na8M:vh8NkJbbacaIaOEh8WdnasIdway:tgIa8PaIa8PNasIdbaR:tg8Xa8NNa8SasIdla8R:tg8VNMMg8UN:tgIaINa8Xa8Na8UN:tg8Pa8PNa8Va8Sa8UN:tg8Na8NNMM:rg8SJbbbb9ETmbaIa8S:vhIa8Na8S:vh8Na8Pa8S:vh8Pka8EaCa3cdtfydbc8S2fgsa8Pa8Wa8MNg8Sa8PNNg8UasIdbMUdbasa8Na8Sa8NNg8WNg8XasIdlMUdlasaIa8SaINg8MNg8VasIdwMUdwasa8Wa8PNg8WasIdxMUdxasa8Ma8PNg8YasIdzMUdzasa8Ma8NNg8ZasIdCMUdCasa8Pa8SaIayNa8PaRNa8Ra8NNMM:mgyNg8MNg8PasIdKMUdKasa8Na8MNg8NasId3MUd3asaIa8MNgIasIdaMUdaasa8MayNg8MasId8KMUd8Kasa8SasIdyMUdya8EaCaQcdtfydbc8S2fgsa8UasIdbMUdbasa8XasIdlMUdlasa8VasIdwMUdwasa8WasIdxMUdxasa8YasIdzMUdzasa8ZasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asaIasIdaMUdaasa8MasId8KMUd8Kasa8SasIdyMUdykaLclfgLcx9hmbkaYcxfhYa5cifg5ad6mbkaDTmbcbhYinJbbbbhRa8JaeaYcdtfgsclfydbgKcx2fgLIdwa8JasydbgOcx2fgQIdwg8V:tg8Na8NNaLIdbaQIdbg8Y:tgIaINaLIdlaQIdlg8Z:tg8Sa8SNMMg8Wa8Jascwfydbggcx2fgsIdwa8V:tg8MNa8Na8Na8MNaIasIdba8Y:tgyNa8SasIdla8Z:tg8RNMMg8PN:tJbbbbJbbjZa8Wa8Ma8MNayayNa8Ra8RNMMg8XNa8Pa8PN:tg8U:va8UJbbbb9BEg8UNh80a8Xa8NNa8Ma8PN:ta8UNh81a8Wa8RNa8Sa8PN:ta8UNhBa8Xa8SNa8Ra8PN:ta8UNh83a8WayNaIa8PN:ta8UNhUa8XaINaya8PN:ta8UNh85aIa8RNaya8SN:tg8Pa8PNa8Sa8MNa8Ra8NN:tg8Pa8PNa8NayNa8MaIN:tg8Pa8PNMM:r:rh8PavaOaD2cdtfhLavagaD2cdtfhQavaKaD2cdtfh3a8V:mh86a8Z:mh87a8Y:mh88cbh8AaDh5Jbbbbh8RJbbbbh8UJbbbbh8WJbbbbh8XJbbbbh8VJbbbbh8YJbbbbh8ZJbbbbh89Jbbbbh8:inaPc;Wbfa8Afgscwfa8Pa81a3IdbaLIdbg8M:tg8SNa80aQIdba8M:tgyNMg8NNUdbasclfa8Pa83a8SNaBayNMgINUdbasa8Pa85a8SNaUayNMg8SNUdbascxfa8Pa86a8NNa87aINa8Ma88a8SNMMMg8MNUdba8Pa8NaINNa8XMh8Xa8Pa8Na8SNNa8VMh8Va8PaIa8SNNa8YMh8Ya8Pa8Ma8MNNaRMhRa8Pa8Na8MNNa8RMh8Ra8PaIa8MNNa8UMh8Ua8Pa8Sa8MNNa8WMh8Wa8Pa8Na8NNNa8ZMh8Za8PaIaINNa89Mh89a8Pa8Sa8SNNa8:Mh8:aLclfhLa3clfh3aQclfhQa8Aczfh8Aa5cufg5mbkaoaCaOcdtfydbgLc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyaoaCaKcdtfydbgKc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyaoaCagcdtfydbgOc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyawaLaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkawaKaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkawaOaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkaYcifgYad6mbkkdnabaeSmbabaeadcdtz:kjjjb8AkaPydbhZcbhsdnalTmbaZclfhsaZydbh3aEhLalh8AcbhQincbasydbg5a39RaLRbbcpeGEaQfhQaLcefhLasclfhsa5h3a8Acufg8AmbkaQce4hskcuadas9Rcifgrcx2arc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbh8LaPcwfaPyd9Ogscdtfa8LBdbaPascefgLBd9OaPcwfaLcdtfcuarcdtarcFFFFi0Ecbyd1:jjjbHjjjjbbgxBdbaPascdfgLBd9OaPcwfaLcdtfaAcbyd1:jjjbHjjjjbbgHBdbaPascifgLBd9OaPcwfaLcdtfalcbyd1:jjjbHjjjjbbgnBdbaPasclfBd9OJbbbbh8Ydnadaq9nmbdnarci6mbakakNh8VaDclthca8Lcwfh9cJbbbbh8YinaPabadghalaCz:cjjjbabhOcbhzcbhKincbhsindnaCaOasfydbgQcdtgYfydbg8AaCabasc;m1jjbfydbaKfcdtfydbgLcdtfydbg5SmbaEaLfRbbgecv2aEaQfRbbg3fc;G1jjbfRbbg8Ka3cv2aefggc;G1jjbfRbbgiVcFeGTmbdnagc:W1jjbfRbbTmba5a8A0mekdna3ae9hmba3cufcFeGce0mba8FaYfydbaL9hmeka8Lazcx2fg3aLaQaicFeGg8AEBdla3aQaLa8AEBdba3a8Aa8KGcb9hBdwazcefhzkasclfgscx9hmbkdnaKcifgKah9pmbaOcxfhOazcifar9nmekkdnazmbahhdxikcbheinJbbbbJbbjZa8EaCa8Laecx2fg3ydlg8Aa3ydbg5a3ydwgLEgKcdtfydbg8Kc8S2gifgsIdyg8P:va8PJbbbb9BEasIdwa8Ja5a8AaLEgYcx2fgLIdwg8SNasIdzaLIdbg8MNasIdaMg8Pa8PMMa8SNasIdlaLIdlgyNasIdCa8SNasId3Mg8Pa8PMMayNasIdba8MNasIdxayNasIdKMg8Pa8PMMa8MNasId8KMMM:lNh8WJbbbbJbbjZa8EaCa5cdtfydbgdc8S2gQfgsIdyg8P:va8PJbbbb9BEasIdwa8Ja8Acx2fgLIdwgINasIdzaLIdbgRNasIdaMg8Pa8PMMaINasIdlaLIdlg8RNasIdCaINasId3Mg8Pa8PMMa8RNasIdbaRNasIdxa8RNasIdKMg8Pa8PMMaRNasId8KMMM:lNh8Xa3cwfhOa3clfhgdnaDTmbaoaQfgQIdwaINaQIdzaRNaQIdaMg8Pa8PMMaINaQIdla8RNaQIdCaINaQId3Mg8Pa8PMMa8RNaQIdbaRNaQIdxa8RNaQIdKMg8Pa8PMMaRNaQId8KMMMh8Nava8AaD2cdtfhLawadaD2cltfhsaQIdyh8UaDhQinaLIdbg8PJbbb;aNascxfIdbaIascwfIdbNaRasIdbNa8RasclfIdbNMMMNa8Pa8PNa8UNa8NMMh8NaLclfhLasczfhsaQcufgQmbkaoaifgQIdwa8SNaQIdza8MNaQIdaMg8Pa8PMMa8SNaQIdlayNaQIdCa8SNaQId3Mg8Pa8PMMayNaQIdba8MNaQIdxayNaQIdKMg8Pa8PMMa8MNaQId8KMMMhIavaYaD2cdtfhLawa8KaD2cltfhsaQIdyhRaDhQinaLIdbg8PJbbb;aNascxfIdba8SascwfIdbNa8MasIdbNayasclfIdbNMMMNa8Pa8PNaRNaIMMhIaLclfhLasczfhsaQcufgQmbka8WaI:lMh8Wa8Xa8N:lMh8Xkaga8AaYa8Xa8W9FgsEBdba3a5aKasEBdbaOa8Xa8WasEUdbaecefgeaz9hmbkaPc;Wbfcbcj;abz:ljjjb8Aa9chsazhLinaPc;WbfasydbcO4c;8ZGfgQaQydbcefBdbascxfhsaLcufgLmbkcbhscbhLinaPc;WbfasfgQydbh3aQaLBdba3aLfhLasclfgscj;ab9hmbkcbhsa9chLinaPc;WbfaLydbcO4c;8ZGfgQaQydbgQcefBdbaxaQcdtfasBdbaLcxfhLazascefgs9hmbkahaq9RgQci9UhJdnalTmbcbhsaHhLinaLasBdbaLclfhLalascefgs9hmbkkcbh9eancbalz:ljjjbhTaQcO9UhSaJce4h9haPydlh9icbhicbhgdnina8Laxagcdtfydbcx2fgOIdwg8Na8V9EmeaiaJ9pmeJFFuuh8Pdna9haz9pmba8Laxa9hcdtfydbcx2fIdwJbb;aZNh8Pkdna8Na8P9ETmbaiaS0mdkdnaTaCaOydlg6cdtg9kfydbg3fg0RbbaTaCaOydbgKcdtg9mfydbg9nfg9oRbbVmbdnaZa9ncdtfgsclfydbgLasydbgsSmbaLas9Rh5a9iascitfhsa8Ja3cx2fgYcwfhdaYclfhAa8Ja9ncx2fg8Kcwfh9pa8Kclfh9qcbhLcehednindnaHasydbcdtfydbgQa3SmbaHasclfydbcdtfydbg8Aa3SmbaQa8ASmba8Ja8Acx2fg8AIdba8JaQcx2fgQIdbgI:tg8Pa9qIdbaQIdlg8S:tg8MNa8KIdbaI:tgya8AIdla8S:tg8NN:ta8PaAIdba8S:tgRNaYIdbaI:tg8Ra8NN:tNa8Na9pIdbaQIdwg8S:tg8UNa8Ma8AIdwa8S:tgIN:ta8NadIdba8S:tg8SNaRaIN:tNaIayNa8Ua8PN:taIa8RNa8Sa8PN:tNMMJbbbb9FmdkascwfhsaLcefgLa56hea5aL9hmbkkaeceGTmba9hcefh9hxeka8Ea3c8S2gQfgsa8Ea9nc8S2g8AfgLIdbasIdbMUdbasaLIdlasIdlMUdlasaLIdwasIdwMUdwasaLIdxasIdxMUdxasaLIdzasIdzMUdzasaLIdCasIdCMUdCasaLIdKasIdKMUdKasaLId3asId3MUd3asaLIdaasIdaMUdaasaLId8KasId8KMUd8KasaLIdyasIdyMUdydnaDTmbaoaQfgsaoa8AfgLIdbasIdbMUdbasaLIdlasIdlMUdlasaLIdwasIdwMUdwasaLIdxasIdxMUdxasaLIdzasIdzMUdzasaLIdCasIdCMUdCasaLIdKasIdKMUdKasaLId3asId3MUd3asaLIdaasIdaMUdaasaLId8KasId8KMUd8KasaLIdyasIdyMUdyaca9n2heaca32hYawhLaDh8AinaLaYfgsaLaefgQIdbasIdbMUdbasclfg5aQclfIdba5IdbMUdbascwfg5aQcwfIdba5IdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa8Acufg8AmbkkaOcwfhLdndndndnaEaKfgQRbbc9:fPdebdkaKhsinaHascdtgsfa3BdbaXasfydbgsaK9hmbxikkaXa9kfydbhsaXa9mfydbhKaHa9mfa6Bdbash6kaHaKcdtfa6Bdbka9oce86bba0ce86bbaLIdbg8Pa8Ya8Ya8P9DEh8Ya9ecefh9ececdaQRbbceSEaifhikagcefggaz9hmbkkdna9embahhdxikdnalTmbcbhLa8FhsindnasydbgQcuSmbdnaLaHaQcdtg3fydbgQ9hmba8Fa3fydbhQkasaQBdbkasclfhsalaLcefgL9hmbkcbhLaahsindnasydbgQcuSmbdnaLaHaQcdtg3fydbgQ9hmbaaa3fydbhQkasaQBdbkasclfhsalaLcefgL9hmbkkcbhdabhscbh8AindnaHasydbcdtfydbgLaHasclfydbcdtfydbgQSmbaLaHascwfydbcdtfydbg3SmbaQa3Smbabadcdtfg5aLBdba5clfaQBdba5cwfa3Bdbadcifhdkascxfhsa8Acifg8Aah6mbkadaq9nmdxbkkaPabadalaCz:cjjjbkdnamTmbama8Y:rUdbkaPyd9OgscdtaPcwffc98fhCdninasTmeaCydbcbyd:m:jjjbH:bjjjbbaCc98fhCascufhsxbkkaPc;W;abf8Kjjjjbadk;:ieouabydlhvabydbclfcbaicdtz:ljjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbarcearce0EhdinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfheadcufgdmbkkabydbcbBdbk:Zldouv998Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdnadTmbaicd4hvdnabTmbavcdthocbhraehwinabarcx2fgiaearav2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinalczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbalaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawaofhwarcefgrad9hmbxdkkavcdthrcbhwincbhiinalczfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbalaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbkkdnabTmbadTmbJbbbbJbbjZalIdbalIdzgk:tJbbbb:xgqalIdlalIdCgx:tgmamaq9DEgqalIdwalIdKgm:tgPaPaq9DEgq:vaqJbbbb9BEhqinabaqabIdbak:tNUdbabclfgiaqaiIdbax:tNUdbabcwfgiaqaiIdbam:tNUdbabcxfhbadcufgdmbkkk8KbabaeadaialavcbcbcbcbaoarawaDz:bjjjbk8KbabaeadaialavaoarawaDaqakaxamz:bjjjbk;lOowud99wue99iul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcwfcbc;Kbz:ljjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbgqBdwawceBd9Oaqaeadaiz:djjjbawcuadcdtadcFFFFi0Egkcbyd1:jjjbHjjjjbbgxBdxawcdBd9Oadcd4adfhmceheinaegicetheaiam6mbkcbhmawcuaicdtgPaicFFFFi0Ecbyd1:jjjbHjjjjbbgsBdzawciBd9Odndnar:Zgz:rJbbbZMgH:lJbbb9p9DTmbaH:Ohexekcjjjj94hekaicufhOc:bwhAcbhCcbhXadhQinaChLaeaAgKcufaeaK9iEamgDcefaeaD9kEhYdndnadTmbaYcuf:YhHaqhiaxheadhmindndnaiIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhAxekcjjjj94hAkaAcCthAdndnaiclfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcqtaAVhAdndnaicwfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaeaAaCVBdbaicxfhiaeclfheamcufgmmbkascFeaPz:ljjjbhEcbh3cbh5indnaEaxa5cdtfydbgAcm4aA7c:v;t;h;Ev2gics4ai7aOGgmcdtfgCydbgecuSmbaeaASmbcehiinaEamaifaOGgmcdtfgCydbgecuSmeaicefhiaeaA9hmbkkaCaABdba3aecuSfh3a5cefg5ad9hmbxdkkascFeaPz:ljjjb8Acbh3kaDaYa3ar0giEhmaLa3aiEhCdna3arSmbaYaKaiEgAam9Rcd9imbdndnaXcl0mbdnaQ:ZgHaL:Zg8A:taY:Yg8EaD:Y:tg8Fa8EaK:Y:tgaa3:Zghaz:tNNNaHaz:taaNa8Aah:tNa8Aaz:ta8FNahaH:tNM:va8EMJbbbZMgH:lJbbb9p9DTmbaH:Ohexdkcjjjj94hexekamaAfcd9Theka3aQaiEhQaXcefgXcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd1:jjjbHjjjjbbg5BdCawclBd9OdndnadTmbamcuf:YhHaqhiaxheadhmindndnaiIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhAxekcjjjj94hAkaAcCthAdndnaiclfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcqtaAVhAdndnaicwfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaeaAaCVBdbaicxfhiaeclfheamcufgmmbkascFeaPz:ljjjbhEcbhDcbh3inaxa3cdtgYfydbgAcm4aA7c:v;t;h;Ev2gics4ai7hecbhidndninaEaeaOGgmcdtfgCydbgecuSmednaxaecdtgCfydbaASmbaicefgiamfheaiaO9nmekka5aCfydbhixekaCa3BdbaDhiaDcefhDka5aYfaiBdba3cefg3ad9hmbkcuaDc32giaDc;j:KM;jb0EhexekascFeaPz:ljjjb8AcbhDcbhekawaecbyd1:jjjbHjjjjbbgeBdKawcvBd9Oaecbaiz:ljjjbhOavcd4hxdnadTmbaxcdth3a5hmalhAaqheadhEinaOamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaAc;81jjbalEgCIdbaiIdxMUdxaiaCIdlaiIdzMUdzaiaCIdwaiIdCMUdCaiaiIdKJbbjZMUdKamclfhmaAa3fhAaecxfheaEcufgEmbkkdnaDTmbaOcxfhiaDheinaictfgmamIdbJbbbbJbbjZaicxfIdbgH:vaHJbbbb9BEgHNUdbaic94fgmaHamIdbNUdbaic98fgmaHamIdbNUdbaiaHaiIdbNUdbaiclfgmaHamIdbNUdbaicwfgmaHamIdbNUdbaic3fhiaecufgembkkcbhAawcuaDcdtgYaDcFFFFi0Egicbyd1:jjjbHjjjjbbgeBd3awcoBd9Oawaicbyd1:jjjbHjjjjbbgEBdaaecFeaYz:ljjjbh3dnadTmbaoaoNh8Aaxcdthxalheina8Aaec;81jjbalEgmIdwaOa5ydbgCc32fgiIdC:tgHaHNamIdbaiIdx:tgHaHNamIdlaiIdz:tgHaHNMMNaqcwfIdbaiIdw:tgHaHNaqIdbaiIdb:tgHaHNaqclfIdbaiIdl:tgHaHNMMMhHdndna3aCcdtgifgmydbcuSmbaEaifIdbaH9ETmekamaABdbaEaifaHUdbka5clfh5aeaxfheaqcxfhqadaAcefgA9hmbkkaba3aYz:kjjjb8AcrhikaicdthiinaiTmeaic98fgiawcwffydbcbyd:m:jjjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Qdidui99ducbhi8Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgoaDIdbgrarao9EEUdbaladfgDaoaDIdbgrarao9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkavJbbbb:xgvaoaoav9DEgoararao9DEk9DeeuabcFeaicdtz:ljjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcifc98GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcrfc94GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:jjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:jjjbfgdBd:q:jjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk6eiucbhidnadTmbdninabRbbglaeRbbgv9hmeaecefheabcefhbadcufgdmbxdkkalav9Rhikaikk:Iedbcjwk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbebbbdbbbbbbbebbbeeebeebebbeeebebbbbbebebbbbbebbbdbbbbbbbbbbbbbbbeeeeebebbbbbebbbbbeebbbbbbbbbbbbbbbbbbbbbc1Dkxebbbdbbb:G9Kbb"),{}).then(function(o){(r=o.instance).exports.__wasm_call_ctors()});function t(o){if(!o)throw new Error("Assertion failed")}function A(o){return new Uint8Array(o.buffer,o.byteOffset,o.byteLength)}function i(o,c,n,b,l,h,f,g){var u=r.exports.sbrk,I=u(4*g),p=u(n*b),B=u(n*h),m=new Uint8Array(r.exports.memory.buffer);m.set(A(c),p),l&&m.set(A(l),B);var C=o(I,p,n,b,B,h,f,g);new Uint8Array(r.exports.memory.buffer);var w=new Uint32Array(C);return A(w).set(m.subarray(I,I+4*C)),u(I-u(0)),w}var s={LockBorder:1}})();let Y=0;class et{constructor(e){if(this.renderer=e.renderer,this.zUpToYUpMatrix=new Q.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1),this.maxCachedItems=100,this.proxy=e.proxy,e&&(this.meshCallback=e.meshCallback,this.pointsCallback=e.pointsCallback,e.maxCachedItems!=null&&(this.maxCachedItems=e.maxCachedItems)),this.gltfLoader=new va,e&&e.dracoLoader)this.gltfLoader.setDRACOLoader(e.dracoLoader),this.hasDracoLoader=!0;else{const a=new Ua;a.setDecoderPath("https://storage.googleapis.com/ogc-3d-tiles/draco/"),this.gltfLoader.setDRACOLoader(a),this.gltfLoader.hasDracoLoader=!0}if(e&&e.ktx2Loader)this.gltfLoader.setKTX2Loader(e.ktx2Loader),this.hasKTX2Loader=!0;else if(e&&e.renderer){const a=new U;a.setTranscoderPath("https://storage.googleapis.com/ogc-3d-tiles/basis/").detectSupport(e.renderer),this.gltfLoader.setKTX2Loader(a),this.gltfLoader.hasKTX2Loader=!0}this.gltfLoader.setMeshoptDecoder($a),this.hasMeshOptDecoder=!0,this.b3dmDecoder=new Sa(this.gltfLoader),this.splatsDecoder=new ft(this.gltfLoader,this.renderer),this.cache=new Ra.LinkedHashMap,this.register={},this.ready=[],this.downloads=[],this.nextReady=[],this.nextDownloads=[]}update(){const e=this;Y<8&&e._download(),e._loadBatch()}_scheduleDownload(e){this.downloads.unshift(e)}_download(){if(this.nextDownloads.length!=0||(this._getNextDownloads(),this.nextDownloads.length!=0))for(;this.nextDownloads.length>0;){const e=this.nextDownloads.shift();e&&e.shouldDoDownload()&&e.doDownload()}}_meshReceived(e,a,t,A,i,s,o){this.ready.unshift([e,a,t,A,i,s,o])}_loadBatch(){for(this.nextReady.length==0&&this._getNextReady();this.nextReady.length>0;){const e=this.nextReady.shift();if(!e)return;const a=e[0],t=e[1],A=e[2],i=a.get(A);i&&t[A]&&Object.keys(t[A]).forEach(s=>{const o=t[A][s];o&&(o(i),t[A][s]=null)}),this.nextReady.length==0&&this._getNextReady()}}_getNextDownloads(){let e=Number.POSITIVE_INFINITY,a=-1;for(let t=this.downloads.length-1;t>=0;t--)this.downloads[t].distanceFunction||this.nextDownloads.push(this.downloads.splice(t,1)[0]);if(!(this.nextDownloads.length>0)){for(let t=this.downloads.length-1;t>=0;t--){const A=this.downloads[t].distanceFunction();A<=e&&(e=A,a=t)}if(a>=0){const t=this.downloads.splice(a,1).pop();this.nextDownloads.push(t);const A=t.getSiblings();for(let i=this.downloads.length-1;i>=0;i--)A.map(s=>s.uuid).includes(this.downloads[i].uuid)&&this.nextDownloads.push(this.downloads.splice(i,1).pop())}}}_getNextReady(){let e=Number.POSITIVE_INFINITY,a=-1;for(let t=this.ready.length-1;t>=0;t--)this.ready[t][3]||this.nextReady.push(this.ready.splice(t,1)[0]);if(!(this.nextReady.length>0)){for(let t=this.ready.length-1;t>=0;t--){const A=this.ready[t][3]()*this.ready[t][5];A<=e&&(e=A,a=t)}if(a>=0){const t=this.ready.splice(a,1).pop();this.nextReady.push(t);const A=t[4]();for(let i=this.ready.length-1;i>=0;i--)A.map(s=>s.uuid).includes(this.ready[i][6])&&this.nextReady.push(this.ready.splice(i,1).pop())}}}get(e,a,t,A,i,s,o,c,n,b,l){const h=this,f=Qa(t),g=new AbortController;if(e.signal.addEventListener("abort",()=>{h.register[f]&&Object.keys(h.register[f]).length!=0||g.abort("user abort")}),!(t.includes(".b3dm")||t.includes(".json")||t.includes(".gltf")||t.includes(".glb")))return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");if(h.register[f]||(h.register[f]={}),h.register[f][a]&&console.error(" a tile should only be loaded once"),h.register[f][a]=A,h.cache.get(f))this._meshReceived(h.cache,h.register,f,i,s,o,a);else if(Object.keys(h.register[f]).length==1){let u;t.includes(".b3dm")?u=()=>{var I;I=h.proxy?()=>fetch(h.proxy,{method:"POST",body:t,signal:g.signal}):()=>fetch(t,{signal:g.signal}),Y++,I().then(p=>{if(!p.ok)throw console.error("could not load tile with path : "+t),new Error(`couldn't load "${t}". Request failed with status ${p.status} : ${p.statusText}`);return p.arrayBuffer()}).then(p=>this.b3dmDecoder.parseB3DM(p,B=>{h.meshCallback(B,b)},c,n)).then(p=>{h.cache.put(f,p),h._checkSize(),this._meshReceived(h.cache,h.register,f,i,s,o,a)}).catch(p=>{}).finally(()=>{Y--})}:t.includes(".glb")||t.includes(".gltf")?u=l?()=>{var I;I=h.proxy?()=>fetch(h.proxy,{method:"POST",body:t,signal:g.signal}):()=>fetch(t,{signal:g.signal}),Y++,I().then(p=>{if(!p.ok)throw console.error("could not load tile with path : "+t),new Error(`couldn't load "${t}". Request failed with status ${p.status} : ${p.statusText}`);return p.arrayBuffer()}).then(p=>this.splatsDecoder.parseSplats(p,c,n,l)).then(p=>{h.cache.put(f,p),h._checkSize(),h._meshReceived(h.cache,h.register,f,i,s,o,a)}).catch(p=>{}).finally(()=>{Y--})}:()=>{var I;I=h.proxy?()=>fetch(h.proxy,{method:"POST",body:t,signal:g.signal}):()=>fetch(t,{signal:g.signal}),Y++,I().then(p=>{if(!p.ok)throw console.error("could not load tile with path : "+t),new Error(`couldn't load "${t}". Request failed with status ${p.status} : ${p.statusText}`);return p.arrayBuffer()}).then(async p=>{await async function(B){return new Promise(m=>{const C=setInterval(()=>{B.hasDracoLoader&&!B.dracoLoader||B.hasKTX2Loader&&!B.ktx2Loader||(clearInterval(C),m())},10)})}(this.gltfLoader),this.gltfLoader.parse(p,null,B=>{B.scene.asset=B.asset,c&&B.scene.applyMatrix4(this.zUpToYUpMatrix),B.scene.traverse(m=>{m.isMesh&&(n&&m.applyMatrix4(this.zUpToYUpMatrix),h.meshCallback&&h.meshCallback(m,b)),m.isPoints&&h.pointsCallback&&h.pointsCallback(m,b)}),h.cache.put(f,B.scene),h._checkSize(),h._meshReceived(h.cache,h.register,f,i,s,o,a)})}).catch(p=>{p!=="user abort"&&p.code}).finally(()=>{Y--})}:t.includes(".json")&&(u=()=>{var I;I=h.proxy?()=>fetch(h.proxy,{method:"POST",body:t,signal:g.signal}):()=>fetch(t,{signal:g.signal}),Y++,I().then(p=>{if(!p.ok)throw console.error("could not load tile with path : "+t),new Error(`couldn't load "${t}". Request failed with status ${p.status} : ${p.statusText}`);return p.json()}).then(p=>ia(p,t)).then(p=>{h.cache.put(f,p),h._checkSize(),h._meshReceived(h.cache,h.register,f)}).catch(p=>{}).finally(()=>{Y--})}),this._scheduleDownload({shouldDoDownload:()=>!e.signal.aborted&&!!h.register[f]&&Object.keys(h.register[f]).length>0,doDownload:u,distanceFunction:i,getSiblings:s,level:o,uuid:a})}}clear(){const e=this.maxCachedItems;this.maxCachedItems=0,this._checkSize(),this.maxCachedItems=e}invalidate(e,a){const t=Qa(e);this.register[t]&&(delete this.register[t][a],this._checkSize())}_checkSize(){const e=this;let a=0;for(;e.cache.size()>e.maxCachedItems&&a<e.cache.size();){a++;const t=e.cache.head(),A=e.register[t.key];A&&(Object.keys(A).length>0?(e.cache.remove(t.key),e.cache.put(t.key,t.value)):(e.cache.remove(t.key),delete e.register[t.key],t.value.isSplatsBatch?t.value.remove():t.value.traverse(i=>{if(i.material)if(i.material.length)for(let s=0;s<i.material.length;++s)i.material[s].dispose();else i.material.dispose();i.geometry&&i.geometry.dispose()})))}}}function Qa(r){for(var e=r.split("/"),a=[],t=0,A=0;A<e.length;A++){var i=e[A];i!=="."&&i!==""&&i!==".."?a[t++]=i:i===".."&&t>0&&t--}if(t===0)return"/";var s="";for(A=0;A<t;A++)s+="/"+a[A];return s}function K(r){if(typeof r!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(r))}function ya(r,e){for(var a,t="",A=0,i=-1,s=0,o=0;o<=r.length;++o){if(o<r.length)a=r.charCodeAt(o);else{if(a===47)break;a=47}if(a===47){if(!(i===o-1||s===1))if(i!==o-1&&s===2){if(t.length<2||A!==2||t.charCodeAt(t.length-1)!==46||t.charCodeAt(t.length-2)!==46){if(t.length>2){var c=t.lastIndexOf("/");if(c!==t.length-1){c===-1?(t="",A=0):A=(t=t.slice(0,c)).length-1-t.lastIndexOf("/"),i=o,s=0;continue}}else if(t.length===2||t.length===1){t="",A=0,i=o,s=0;continue}}e&&(t.length>0?t+="/..":t="..",A=2)}else t.length>0?t+="/"+r.slice(i+1,o):t=r.slice(i+1,o),A=o-i-1;i=o,s=0}else a===46&&s!==-1?++s:s=-1}return t}var fe={resolve:function(){for(var r,e="",a=!1,t=arguments.length-1;t>=-1&&!a;t--){var A;t>=0?A=arguments[t]:(r===void 0&&(r=process.cwd()),A=r),K(A),A.length!==0&&(e=A+"/"+e,a=A.charCodeAt(0)===47)}return e=ya(e,!a),a?e.length>0?"/"+e:"/":e.length>0?e:"."},normalize:function(r){if(K(r),r.length===0)return".";var e=r.charCodeAt(0)===47,a=r.charCodeAt(r.length-1)===47;return(r=ya(r,!e)).length!==0||e||(r="."),r.length>0&&a&&(r+="/"),e?"/"+r:r},isAbsolute:function(r){return K(r),r.length>0&&r.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var r,e=0;e<arguments.length;++e){var a=arguments[e];K(a),a.length>0&&(r===void 0?r=a:r+="/"+a)}return r===void 0?".":fe.normalize(r)},relative:function(r,e){if(K(r),K(e),r===e||(r=fe.resolve(r))===(e=fe.resolve(e)))return"";for(var a=1;a<r.length&&r.charCodeAt(a)===47;++a);for(var t=r.length,A=t-a,i=1;i<e.length&&e.charCodeAt(i)===47;++i);for(var s=e.length-i,o=A<s?A:s,c=-1,n=0;n<=o;++n){if(n===o){if(s>o){if(e.charCodeAt(i+n)===47)return e.slice(i+n+1);if(n===0)return e.slice(i+n)}else A>o&&(r.charCodeAt(a+n)===47?c=n:n===0&&(c=0));break}var b=r.charCodeAt(a+n);if(b!==e.charCodeAt(i+n))break;b===47&&(c=n)}var l="";for(n=a+c+1;n<=t;++n)n!==t&&r.charCodeAt(n)!==47||(l.length===0?l+="..":l+="/..");return l.length>0?l+e.slice(i+c):(i+=c,e.charCodeAt(i)===47&&++i,e.slice(i))},_makeLong:function(r){return r},dirname:function(r){if(K(r),r.length===0)return".";for(var e=r.charCodeAt(0),a=e===47,t=-1,A=!0,i=r.length-1;i>=1;--i)if((e=r.charCodeAt(i))===47){if(!A){t=i;break}}else A=!1;return t===-1?a?"/":".":a&&t===1?"//":r.slice(0,t)},basename:function(r,e){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');K(r);var a,t=0,A=-1,i=!0;if(e!==void 0&&e.length>0&&e.length<=r.length){if(e.length===r.length&&e===r)return"";var s=e.length-1,o=-1;for(a=r.length-1;a>=0;--a){var c=r.charCodeAt(a);if(c===47){if(!i){t=a+1;break}}else o===-1&&(i=!1,o=a+1),s>=0&&(c===e.charCodeAt(s)?--s==-1&&(A=a):(s=-1,A=o))}return t===A?A=o:A===-1&&(A=r.length),r.slice(t,A)}for(a=r.length-1;a>=0;--a)if(r.charCodeAt(a)===47){if(!i){t=a+1;break}}else A===-1&&(i=!1,A=a+1);return A===-1?"":r.slice(t,A)},extname:function(r){K(r);for(var e=-1,a=0,t=-1,A=!0,i=0,s=r.length-1;s>=0;--s){var o=r.charCodeAt(s);if(o!==47)t===-1&&(A=!1,t=s+1),o===46?e===-1?e=s:i!==1&&(i=1):e!==-1&&(i=-1);else if(!A){a=s+1;break}}return e===-1||t===-1||i===0||i===1&&e===t-1&&e===a+1?"":r.slice(e,t)},format:function(r){if(r===null||typeof r!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof r);return function(e,a){var t=a.dir||a.root,A=a.base||(a.name||"")+(a.ext||"");return t?t===a.root?t+A:t+e+A:A}("/",r)},parse:function(r){K(r);var e={root:"",dir:"",base:"",ext:"",name:""};if(r.length===0)return e;var a,t=r.charCodeAt(0),A=t===47;A?(e.root="/",a=1):a=0;for(var i=-1,s=0,o=-1,c=!0,n=r.length-1,b=0;n>=a;--n)if((t=r.charCodeAt(n))!==47)o===-1&&(c=!1,o=n+1),t===46?i===-1?i=n:b!==1&&(b=1):i!==-1&&(b=-1);else if(!c){s=n+1;break}return i===-1||o===-1||b===0||b===1&&i===o-1&&i===s+1?o!==-1&&(e.base=e.name=s===0&&A?r.slice(1,o):r.slice(s,o)):(s===0&&A?(e.name=r.slice(1,i),e.base=r.slice(1,o)):(e.name=r.slice(s,i),e.base=r.slice(s,o)),e.ext=r.slice(i,o)),s>0?e.dir=r.slice(0,s-1):A&&(e.dir="/"),e},sep:"/",delimiter:":",win32:null,posix:null};fe.posix=fe;var wa,Ae=fe;class AA{constructor(e){ie(this,"_toElementFn");if(e){const{toElementFn:a}=e;if(typeof a=="function")this._toElementFn=a;else if(a)throw new TypeError("toElementFn must be a function type")}}get toElementFn(){return this._toElementFn}*[Symbol.iterator](...e){yield*this._getIterator(...e)}*values(){for(const e of this)yield e}every(e,a){let t=0;for(const A of this)if(!e.call(a,A,t++,this))return!1;return!0}some(e,a){let t=0;for(const A of this)if(e.call(a,A,t++,this))return!0;return!1}forEach(e,a){let t=0;for(const A of this)e.call(a,A,t++,this)}find(e,a){let t=0;for(const A of this)if(e.call(a,A,t++,this))return A}has(e){for(const a of this)if(a===e)return!0;return!1}reduce(e,a){let t=a,A=0;for(const i of this)t=e(t,i,A++,this);return t}toVisual(){return[...this]}print(){console.log(this.toVisual())}}/**
18
+ */var Ra={Heap:nt,Queue:ot,LinkedHashMap:class{constructor(){this._data=new Map,this._link=new Map,this._head=void 0,this._tail=void 0}put(r,e,a=!1){this.has(r)?this._data.set(r,e):(this._data.set(r,e),this._link.set(r,{previous:void 0,next:void 0}),this._head==null?(this._head=r,this._tail=r):a?(this._link.get(this._head).previous=r,this._link.get(r).next=this._head,this._head=r):(this._link.get(this._tail).next=r,this._link.get(r).previous=this._tail,this._tail=r))}head(){return{key:this._head,value:this.get(this._head),next:()=>this.next(this._head),previous:()=>null}}tail(){return{key:this._tail,value:this.get(this._tail),next:()=>null,previous:()=>this.previous(this._tail)}}get(r){return this._data.get(r)}previousKey(r){const e=this._link.get(r);return e!=null?e.previous:void 0}previousValue(r){return this.get(this.previousKey(r))}previous(r){const e=this.previousKey(r);return{key:e,value:this.get(e),next:()=>this.next(e),previous:()=>this.previous(e)}}nextKey(r){const e=this._link.get(r);return e!=null?e.next:void 0}nextValue(r){return this.get(this.nextKey(r))}next(r){const e=this.nextKey(r);return{key:e,value:this.get(e),next:()=>this.next(e),previous:()=>this.previous(e)}}remove(r){const e=this._data.get(r);if(e!=null)if(this.size()===1)this.reset();else{if(r===this._head){const a=this._link.get(this._head);this._link.get(a.next).previous=null,this._head=a.next}else if(r===this._tail){const a=this._link.get(this._tail);this._link.get(a.previous).next=null,this._tail=a.previous}else{const a=this._link.get(r),t=this._link.get(a.previous),A=this._link.get(a.next);t.next=a.next,A.previous=a.previous}this._link.delete(r),this._data.delete(r)}return e}has(r){return this._data.has(r)}size(){return this._data.size}reset(){this._data.clear(),this._link.clear(),this._head=void 0,this._tail=void 0}keys(){return this._data.keys()}values(){return this._data.values()}entries(){return this._data.entries()}toArray(r="orderByInsert"){if(r!=="orderByInsert"){const e=[];let a=this._head;for(;a!=null;)e.push({key:a,value:this.get(a)}),a=this.nextKey(a);return e}return Array.from(this.keys()).map(e=>({key:e,value:this.get(e)}))}}};const ct=new TextDecoder;class Fa{constructor(e,a,t,A){this.buffer=e,this.binOffset=a+t,this.binLength=A;let i=null;if(t!==0)try{const s=new Uint8Array(e,a,t);i=JSON.parse(ct.decode(s))}catch{i={}}else i={};this.header=i}getKeys(){return Object.keys(this.header)}getData(e,a,t=null,A=null){const i=this.header;if(!(e in i))return null;const s=i[e];if(s instanceof Object){if(Array.isArray(s))return s;{const{buffer:n,binOffset:c,binLength:o}=this,b=s.byteOffset||0,l=s.type||A,h=s.componentType||t;if("type"in s&&A&&s.type!==A)throw new Error("FeatureTable: Specified type does not match expected type.");let f,g;switch(l){case"SCALAR":f=1;break;case"VEC2":f=2;break;case"VEC3":f=3;break;case"VEC4":f=4;break;default:throw new Error(`FeatureTable : Feature type not provided for "${e}".`)}const u=c+b,I=a*f;switch(h){case"BYTE":g=new Int8Array(n,u,I);break;case"UNSIGNED_BYTE":g=new Uint8Array(n,u,I);break;case"SHORT":g=new Int16Array(n,u,I);break;case"UNSIGNED_SHORT":g=new Uint16Array(n,u,I);break;case"INT":g=new Int32Array(n,u,I);break;case"UNSIGNED_INT":g=new Uint32Array(n,u,I);break;case"FLOAT":g=new Float32Array(n,u,I);break;case"DOUBLE":g=new Float64Array(n,u,I);break;default:throw new Error(`FeatureTable : Feature component type not provided for "${e}".`)}if(u+I*g.BYTES_PER_ELEMENT>c+o)throw new Error("FeatureTable: Feature data read outside binary body length.");return g}}return s}}class dt extends Fa{constructor(e,a,t,A,i){super(e,t,A,i),this.batchSize=a}getData(e,a=null,t=null){return super.getData(e,this.batchSize,a,t)}}function ba(r){let e,a,t,A=-1,i=0;for(let o=0;o<r.length;++o){const b=r[o];if(e===void 0&&(e=b.array.constructor),e!==b.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(a===void 0&&(a=b.itemSize),a!==b.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(t===void 0&&(t=b.normalized),t!==b.normalized)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;if(A===-1&&(A=b.gpuType),A!==b.gpuType)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes."),null;i+=b.count*a}const s=new e(i),n=new d.BufferAttribute(s,a,t);let c=0;for(let o=0;o<r.length;++o){const b=r[o];if(b.isInterleavedBufferAttribute){const l=c/a;for(let h=0,f=b.count;h<f;h++)for(let g=0;g<a;g++){const u=b.getComponent(h,g);n.setComponent(h+l,g,u)}}else s.set(b.array,c);c+=b.count*a}return A!==void 0&&(n.gpuType=A),n}function la(r,e){if(e===d.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),r;if(e===d.TriangleFanDrawMode||e===d.TriangleStripDrawMode){let a=r.getIndex();if(a===null){const s=[],n=r.getAttribute("position");if(n===void 0)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),r;for(let c=0;c<n.count;c++)s.push(c);r.setIndex(s),a=r.getIndex()}const t=a.count-2,A=[];if(e===d.TriangleFanDrawMode)for(let s=1;s<=t;s++)A.push(a.getX(0)),A.push(a.getX(s)),A.push(a.getX(s+1));else for(let s=0;s<t;s++)s%2==0?(A.push(a.getX(s)),A.push(a.getX(s+1)),A.push(a.getX(s+2))):(A.push(a.getX(s+2)),A.push(a.getX(s+1)),A.push(a.getX(s)));A.length/3!==t&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const i=r.clone();return i.setIndex(A),i.clearGroups(),i}return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",e),r}class Sa{constructor(e){ie(this,"checkLoaderInitialized",async()=>new Promise(e=>{const a=setInterval(()=>{this.gltfLoader.hasDracoLoader&&!this.gltfLoader.dracoLoader||this.gltfLoader.hasKTX2Loader&&!this.gltfLoader.ktx2Loader||(clearInterval(a),e())},10)}));this.gltfLoader=e,this.tempMatrix=new Q.Matrix4,this.zUpToYUpMatrix=new Q.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1)}parseB3DM(e,a,t,A){const i=this,s=new DataView(e),n=String.fromCharCode(s.getUint8(0))+String.fromCharCode(s.getUint8(1))+String.fromCharCode(s.getUint8(2))+String.fromCharCode(s.getUint8(3));console.assert(n==="b3dm");const c=s.getUint32(8,!0);console.assert(c===e.byteLength);const o=s.getUint32(12,!0),b=s.getUint32(16,!0),l=s.getUint32(20,!0),h=s.getUint32(24,!0),f=new Fa(e,28,o,b),g=28+o+b;new dt(e,f.getData("BATCH_LENGTH"),g,l,h);const u=g+l+h,I=new Uint8Array(e,u,c-u).slice().buffer;return new Promise(async(p,B)=>{await this.checkLoaderInitialized(),this.gltfLoader.parse(I,null,m=>{const C=f.getData("RTC_CENTER");C?(this.tempMatrix.makeTranslation(C[0],C[1],C[2]),m.scene.applyMatrix4(this.tempMatrix)):m.userData.gltfExtensions&&m.userData.gltfExtensions.CESIUM_RTC&&(this.tempMatrix.makeTranslation(m.userData.gltfExtensions.CESIUM_RTC.center[0],m.userData.gltfExtensions.CESIUM_RTC.center[1],m.userData.gltfExtensions.CESIUM_RTC.center[2]),m.scene.applyMatrix4(this.tempMatrix)),t&&m.scene.applyMatrix4(i.zUpToYUpMatrix),m.scene.asset=m.asset,m.scene.traverse(w=>{w.isMesh&&(A&&w.applyMatrix4(i.zUpToYUpMatrix),a&&a(w))}),p(m.scene)},m=>{console.error(m)})})}parseB3DMInstanced(e,a,t,A,i){return this.parseB3DM(e,a,A,i).then(s=>{let n,c=[],o=[];s.updateWorldMatrix(!1,!0),s.traverse(l=>{l.isMesh&&(l.geometry.applyMatrix4(l.matrixWorld),c.push(l.geometry),o.push(l.material))});let b=function(l){let h=new Set;return l.forEach(g=>{for(let u in g.attributes)h.add(u)}),l.forEach(g=>{h.forEach(u=>{if(!g.attributes[u]){const I=function(B){switch(B){case"position":case"normal":case"color":return 3;case"uv":case"uv2":return 2;default:throw new Error(`Unknown attribute ${B}`)}}(u),p=new Float32Array(I*g.getAttribute("position").count).fill(0);g.setAttribute(u,new Q.BufferAttribute(p,I))}})}),function(g,u=!1){const I=g[0].index!==null,p=new Set(Object.keys(g[0].attributes)),B=new Set(Object.keys(g[0].morphAttributes)),m={},C={},w=g[0].morphTargetsRelative,k=new d.BufferGeometry;let x=0;for(let E=0;E<g.length;++E){const y=g[E];let D=0;if(I!==(y.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+E+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(const j in y.attributes){if(!p.has(j))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+E+'. All geometries must have compatible attributes; make sure "'+j+'" attribute exists among all geometries, or in none of them.'),null;m[j]===void 0&&(m[j]=[]),m[j].push(y.attributes[j]),D++}if(D!==p.size)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+E+". Make sure all geometries have the same number of attributes."),null;if(w!==y.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+E+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(const j in y.morphAttributes){if(!B.has(j))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+E+". .morphAttributes must be consistent throughout all geometries."),null;C[j]===void 0&&(C[j]=[]),C[j].push(y.morphAttributes[j])}if(u){let j;if(I)j=y.index.count;else{if(y.attributes.position===void 0)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+E+". The geometry must have either an index or a position attribute"),null;j=y.attributes.position.count}k.addGroup(x,j,E),x+=j}}if(I){let E=0;const y=[];for(let D=0;D<g.length;++D){const j=g[D].index;for(let F=0;F<j.count;++F)y.push(j.getX(F)+E);E+=g[D].attributes.position.count}k.setIndex(y)}for(const E in m){const y=ba(m[E]);if(!y)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+E+" attribute."),null;k.setAttribute(E,y)}for(const E in C){const y=C[E][0].length;if(y===0)break;k.morphAttributes=k.morphAttributes||{},k.morphAttributes[E]=[];for(let D=0;D<y;++D){const j=[];for(let N=0;N<C[E].length;++N)j.push(C[E][N][D]);const F=ba(j);if(!F)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+E+" morphAttribute."),null;k.morphAttributes[E].push(F)}}return k}(l,!0)}(c);return n=new Q.InstancedMesh(b,o,t),n.baseMatrix=new Q.Matrix4().identity(),n})}}var ve,bt=new Uint8Array(16);function lt(){if(!ve&&!(ve=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto<"u"&&typeof msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return ve(bt)}const ht=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;for(var S=[],Le=0;Le<256;++Le)S.push((Le+256).toString(16).substr(1));function gt(r){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=(S[r[e+0]]+S[r[e+1]]+S[r[e+2]]+S[r[e+3]]+"-"+S[r[e+4]]+S[r[e+5]]+"-"+S[r[e+6]]+S[r[e+7]]+"-"+S[r[e+8]]+S[r[e+9]]+"-"+S[r[e+10]]+S[r[e+11]]+S[r[e+12]]+S[r[e+13]]+S[r[e+14]]+S[r[e+15]]).toLowerCase();if(!function(t){return typeof t=="string"&&ht.test(t)}(a))throw TypeError("Stringified UUID is invalid");return a}function Ta(r,e,a){var t=(r=r||{}).random||(r.rng||lt)();return t[6]=15&t[6]|64,t[8]=63&t[8]|128,gt(t)}class ft{constructor(e,a){ie(this,"checkLoaderInitialized",async()=>{const e=this;return new Promise(a=>{const t=setInterval(()=>{e.gltfLoader.hasDracoLoader&&!e.gltfLoader.dracoLoader||e.gltfLoader.hasKTX2Loader&&!e.gltfLoader.ktx2Loader||(clearInterval(t),a())},10)})});this.renderer=a,this.gltfLoader=e}parseSplats(e,a,t,A){const i=this;return new Promise(async(s,n)=>{await i.checkLoaderInitialized(),i.gltfLoader.parse(e,null,c=>{c.scene;const o=c.scene.children[0],b=o.geometry.attributes.position,l=o.geometry.attributes.color,h=o.geometry.attributes.cov_0,f=o.geometry.attributes.cov_1,g=A.addSplatsTile(b,l,h,f);c.scene.traverse(u=>{u.dispose&&u.dispose()}),s(g)},c=>{console.error(c)})})}}class va extends d.Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(a){return new Ct(a)}),this.register(function(a){return new mt(a)}),this.register(function(a){return new Mt(a)}),this.register(function(a){return new Rt(a)}),this.register(function(a){return new Ft(a)}),this.register(function(a){return new Qt(a)}),this.register(function(a){return new yt(a)}),this.register(function(a){return new wt(a)}),this.register(function(a){return new xt(a)}),this.register(function(a){return new Bt(a)}),this.register(function(a){return new kt(a)}),this.register(function(a){return new Et(a)}),this.register(function(a){return new jt(a)}),this.register(function(a){return new Dt(a)}),this.register(function(a){return new It(a)}),this.register(function(a){return new St(a)}),this.register(function(a){return new Tt(a)})}load(e,a,t,A){const i=this;let s;if(this.resourcePath!=="")s=this.resourcePath;else if(this.path!==""){const o=d.LoaderUtils.extractUrlBase(e);s=d.LoaderUtils.resolveURL(o,this.path)}else s=d.LoaderUtils.extractUrlBase(e);this.manager.itemStart(e);const n=function(o){A?A(o):console.error(o),i.manager.itemError(e),i.manager.itemEnd(e)},c=new d.FileLoader(this.manager);c.setPath(this.path),c.setResponseType("arraybuffer"),c.setRequestHeader(this.requestHeader),c.setWithCredentials(this.withCredentials),c.load(e,function(o){try{i.parse(o,s,function(b){a(b),i.manager.itemEnd(e)},n)}catch(b){n(b)}},t,n)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,a,t,A){let i;const s={},n={},c=new TextDecoder;if(typeof e=="string")i=JSON.parse(e);else if(e instanceof ArrayBuffer)if(c.decode(new Uint8Array(e,0,4))===La){try{s[M.KHR_BINARY_GLTF]=new Gt(e)}catch(b){return void(A&&A(b))}i=JSON.parse(s[M.KHR_BINARY_GLTF].content)}else i=JSON.parse(c.decode(e));else i=e;if(i.asset===void 0||i.asset.version[0]<2)return void(A&&A(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")));const o=new Wt(i,{path:a||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});o.fileLoader.setRequestHeader(this.requestHeader);for(let b=0;b<this.pluginCallbacks.length;b++){const l=this.pluginCallbacks[b](o);l.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),n[l.name]=l,s[l.name]=!0}if(i.extensionsUsed)for(let b=0;b<i.extensionsUsed.length;++b){const l=i.extensionsUsed[b],h=i.extensionsRequired||[];switch(l){case M.KHR_MATERIALS_UNLIT:s[l]=new pt;break;case M.KHR_DRACO_MESH_COMPRESSION:s[l]=new Ut(i,this.dracoLoader);break;case M.KHR_TEXTURE_TRANSFORM:s[l]=new Nt;break;case M.KHR_MESH_QUANTIZATION:s[l]=new Pt;break;default:h.indexOf(l)>=0&&n[l]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+l+'".')}}o.setExtensions(s),o.setPlugins(n),o.parse(t,A)}parseAsync(e,a){const t=this;return new Promise(function(A,i){t.parse(e,a,A,i)})}}function ut(){let r={};return{get:function(e){return r[e]},add:function(e,a){r[e]=a},remove:function(e){delete r[e]},removeAll:function(){r={}}}}const M={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class It{constructor(e){this.parser=e,this.name=M.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,a=this.parser.json.nodes||[];for(let t=0,A=a.length;t<A;t++){const i=a[t];i.extensions&&i.extensions[this.name]&&i.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,i.extensions[this.name].light)}}_loadLight(e){const a=this.parser,t="light:"+e;let A=a.cache.get(t);if(A)return A;const i=a.json,s=((i.extensions&&i.extensions[this.name]||{}).lights||[])[e];let n;const c=new d.Color(16777215);s.color!==void 0&&c.setRGB(s.color[0],s.color[1],s.color[2],d.LinearSRGBColorSpace);const o=s.range!==void 0?s.range:0;switch(s.type){case"directional":n=new d.DirectionalLight(c),n.target.position.set(0,0,-1),n.add(n.target);break;case"point":n=new d.PointLight(c),n.distance=o;break;case"spot":n=new d.SpotLight(c),n.distance=o,s.spot=s.spot||{},s.spot.innerConeAngle=s.spot.innerConeAngle!==void 0?s.spot.innerConeAngle:0,s.spot.outerConeAngle=s.spot.outerConeAngle!==void 0?s.spot.outerConeAngle:Math.PI/4,n.angle=s.spot.outerConeAngle,n.penumbra=1-s.spot.innerConeAngle/s.spot.outerConeAngle,n.target.position.set(0,0,-1),n.add(n.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+s.type)}return n.position.set(0,0,0),n.decay=2,Z(n,s),s.intensity!==void 0&&(n.intensity=s.intensity),n.name=a.createUniqueName(s.name||"light_"+e),A=Promise.resolve(n),a.cache.add(t,A),A}getDependency(e,a){if(e==="light")return this._loadLight(a)}createNodeAttachment(e){const a=this,t=this.parser,A=t.json.nodes[e],i=(A.extensions&&A.extensions[this.name]||{}).light;return i===void 0?null:this._loadLight(i).then(function(s){return t._getNodeRef(a.cache,i,s)})}}class pt{constructor(){this.name=M.KHR_MATERIALS_UNLIT}getMaterialType(){return d.MeshBasicMaterial}extendParams(e,a,t){const A=[];e.color=new d.Color(1,1,1),e.opacity=1;const i=a.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){const s=i.baseColorFactor;e.color.setRGB(s[0],s[1],s[2],d.LinearSRGBColorSpace),e.opacity=s[3]}i.baseColorTexture!==void 0&&A.push(t.assignTexture(e,"map",i.baseColorTexture,d.SRGBColorSpace))}return Promise.all(A)}}class Bt{constructor(e){this.parser=e,this.name=M.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,a){const t=this.parser.json.materials[e];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const A=t.extensions[this.name].emissiveStrength;return A!==void 0&&(a.emissiveIntensity=A),Promise.resolve()}}class Ct{constructor(e){this.parser=e,this.name=M.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?d.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,A=t.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const i=[],s=A.extensions[this.name];if(s.clearcoatFactor!==void 0&&(a.clearcoat=s.clearcoatFactor),s.clearcoatTexture!==void 0&&i.push(t.assignTexture(a,"clearcoatMap",s.clearcoatTexture)),s.clearcoatRoughnessFactor!==void 0&&(a.clearcoatRoughness=s.clearcoatRoughnessFactor),s.clearcoatRoughnessTexture!==void 0&&i.push(t.assignTexture(a,"clearcoatRoughnessMap",s.clearcoatRoughnessTexture)),s.clearcoatNormalTexture!==void 0&&(i.push(t.assignTexture(a,"clearcoatNormalMap",s.clearcoatNormalTexture)),s.clearcoatNormalTexture.scale!==void 0)){const n=s.clearcoatNormalTexture.scale;a.clearcoatNormalScale=new d.Vector2(n,n)}return Promise.all(i)}}class mt{constructor(e){this.parser=e,this.name=M.KHR_MATERIALS_DISPERSION}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?d.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser.json.materials[e];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const A=t.extensions[this.name];return a.dispersion=A.dispersion!==void 0?A.dispersion:0,Promise.resolve()}}class Et{constructor(e){this.parser=e,this.name=M.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?d.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,A=t.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const i=[],s=A.extensions[this.name];return s.iridescenceFactor!==void 0&&(a.iridescence=s.iridescenceFactor),s.iridescenceTexture!==void 0&&i.push(t.assignTexture(a,"iridescenceMap",s.iridescenceTexture)),s.iridescenceIor!==void 0&&(a.iridescenceIOR=s.iridescenceIor),a.iridescenceThicknessRange===void 0&&(a.iridescenceThicknessRange=[100,400]),s.iridescenceThicknessMinimum!==void 0&&(a.iridescenceThicknessRange[0]=s.iridescenceThicknessMinimum),s.iridescenceThicknessMaximum!==void 0&&(a.iridescenceThicknessRange[1]=s.iridescenceThicknessMaximum),s.iridescenceThicknessTexture!==void 0&&i.push(t.assignTexture(a,"iridescenceThicknessMap",s.iridescenceThicknessTexture)),Promise.all(i)}}class Qt{constructor(e){this.parser=e,this.name=M.KHR_MATERIALS_SHEEN}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?d.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,A=t.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const i=[];a.sheenColor=new d.Color(0,0,0),a.sheenRoughness=0,a.sheen=1;const s=A.extensions[this.name];if(s.sheenColorFactor!==void 0){const n=s.sheenColorFactor;a.sheenColor.setRGB(n[0],n[1],n[2],d.LinearSRGBColorSpace)}return s.sheenRoughnessFactor!==void 0&&(a.sheenRoughness=s.sheenRoughnessFactor),s.sheenColorTexture!==void 0&&i.push(t.assignTexture(a,"sheenColorMap",s.sheenColorTexture,d.SRGBColorSpace)),s.sheenRoughnessTexture!==void 0&&i.push(t.assignTexture(a,"sheenRoughnessMap",s.sheenRoughnessTexture)),Promise.all(i)}}class yt{constructor(e){this.parser=e,this.name=M.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?d.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,A=t.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const i=[],s=A.extensions[this.name];return s.transmissionFactor!==void 0&&(a.transmission=s.transmissionFactor),s.transmissionTexture!==void 0&&i.push(t.assignTexture(a,"transmissionMap",s.transmissionTexture)),Promise.all(i)}}class wt{constructor(e){this.parser=e,this.name=M.KHR_MATERIALS_VOLUME}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?d.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,A=t.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const i=[],s=A.extensions[this.name];a.thickness=s.thicknessFactor!==void 0?s.thicknessFactor:0,s.thicknessTexture!==void 0&&i.push(t.assignTexture(a,"thicknessMap",s.thicknessTexture)),a.attenuationDistance=s.attenuationDistance||1/0;const n=s.attenuationColor||[1,1,1];return a.attenuationColor=new d.Color().setRGB(n[0],n[1],n[2],d.LinearSRGBColorSpace),Promise.all(i)}}class xt{constructor(e){this.parser=e,this.name=M.KHR_MATERIALS_IOR}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?d.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser.json.materials[e];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const A=t.extensions[this.name];return a.ior=A.ior!==void 0?A.ior:1.5,Promise.resolve()}}class kt{constructor(e){this.parser=e,this.name=M.KHR_MATERIALS_SPECULAR}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?d.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,A=t.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const i=[],s=A.extensions[this.name];a.specularIntensity=s.specularFactor!==void 0?s.specularFactor:1,s.specularTexture!==void 0&&i.push(t.assignTexture(a,"specularIntensityMap",s.specularTexture));const n=s.specularColorFactor||[1,1,1];return a.specularColor=new d.Color().setRGB(n[0],n[1],n[2],d.LinearSRGBColorSpace),s.specularColorTexture!==void 0&&i.push(t.assignTexture(a,"specularColorMap",s.specularColorTexture,d.SRGBColorSpace)),Promise.all(i)}}class Dt{constructor(e){this.parser=e,this.name=M.EXT_MATERIALS_BUMP}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?d.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,A=t.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const i=[],s=A.extensions[this.name];return a.bumpScale=s.bumpFactor!==void 0?s.bumpFactor:1,s.bumpTexture!==void 0&&i.push(t.assignTexture(a,"bumpMap",s.bumpTexture)),Promise.all(i)}}class jt{constructor(e){this.parser=e,this.name=M.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){const a=this.parser.json.materials[e];return a.extensions&&a.extensions[this.name]?d.MeshPhysicalMaterial:null}extendMaterialParams(e,a){const t=this.parser,A=t.json.materials[e];if(!A.extensions||!A.extensions[this.name])return Promise.resolve();const i=[],s=A.extensions[this.name];return s.anisotropyStrength!==void 0&&(a.anisotropy=s.anisotropyStrength),s.anisotropyRotation!==void 0&&(a.anisotropyRotation=s.anisotropyRotation),s.anisotropyTexture!==void 0&&i.push(t.assignTexture(a,"anisotropyMap",s.anisotropyTexture)),Promise.all(i)}}class Mt{constructor(e){this.parser=e,this.name=M.KHR_TEXTURE_BASISU}loadTexture(e){const a=this.parser,t=a.json,A=t.textures[e];if(!A.extensions||!A.extensions[this.name])return null;const i=A.extensions[this.name],s=a.options.ktx2Loader;if(!s){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return a.loadTextureImage(e,i.source,s)}}class Rt{constructor(e){this.parser=e,this.name=M.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){const a=this.name,t=this.parser,A=t.json,i=A.textures[e];if(!i.extensions||!i.extensions[a])return null;const s=i.extensions[a],n=A.images[s.source];let c=t.textureLoader;if(n.uri){const o=t.options.manager.getHandler(n.uri);o!==null&&(c=o)}return this.detectSupport().then(function(o){if(o)return t.loadTextureImage(e,s.source,c);if(A.extensionsRequired&&A.extensionsRequired.indexOf(a)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return t.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const a=new Image;a.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",a.onload=a.onerror=function(){e(a.height===1)}})),this.isSupported}}class Ft{constructor(e){this.parser=e,this.name=M.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){const a=this.name,t=this.parser,A=t.json,i=A.textures[e];if(!i.extensions||!i.extensions[a])return null;const s=i.extensions[a],n=A.images[s.source];let c=t.textureLoader;if(n.uri){const o=t.options.manager.getHandler(n.uri);o!==null&&(c=o)}return this.detectSupport().then(function(o){if(o)return t.loadTextureImage(e,s.source,c);if(A.extensionsRequired&&A.extensionsRequired.indexOf(a)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return t.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const a=new Image;a.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",a.onload=a.onerror=function(){e(a.height===1)}})),this.isSupported}}class St{constructor(e){this.name=M.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const a=this.parser.json,t=a.bufferViews[e];if(t.extensions&&t.extensions[this.name]){const A=t.extensions[this.name],i=this.parser.getDependency("buffer",A.buffer),s=this.parser.options.meshoptDecoder;if(!s||!s.supported){if(a.extensionsRequired&&a.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return i.then(function(n){const c=A.byteOffset||0,o=A.byteLength||0,b=A.count,l=A.byteStride,h=new Uint8Array(n,c,o);return s.decodeGltfBufferAsync?s.decodeGltfBufferAsync(b,l,h,A.mode,A.filter).then(function(f){return f.buffer}):s.ready.then(function(){const f=new ArrayBuffer(b*l);return s.decodeGltfBuffer(new Uint8Array(f),b,l,h,A.mode,A.filter),f})})}return null}}class Tt{constructor(e){this.name=M.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const a=this.parser.json,t=a.nodes[e];if(!t.extensions||!t.extensions[this.name]||t.mesh===void 0)return null;const A=a.meshes[t.mesh];for(const c of A.primitives)if(c.mode!==P.TRIANGLES&&c.mode!==P.TRIANGLE_STRIP&&c.mode!==P.TRIANGLE_FAN&&c.mode!==void 0)return null;const i=t.extensions[this.name].attributes,s=[],n={};for(const c in i)s.push(this.parser.getDependency("accessor",i[c]).then(o=>(n[c]=o,n[c])));return s.length<1?null:(s.push(this.parser.createNodeMesh(e)),Promise.all(s).then(c=>{const o=c.pop(),b=o.isGroup?o.children:[o],l=c[0].count,h=[];for(const f of b){const g=new d.Matrix4,u=new d.Vector3,I=new d.Quaternion,p=new d.Vector3(1,1,1),B=new d.InstancedMesh(f.geometry,f.material,l);for(let m=0;m<l;m++)n.TRANSLATION&&u.fromBufferAttribute(n.TRANSLATION,m),n.ROTATION&&I.fromBufferAttribute(n.ROTATION,m),n.SCALE&&p.fromBufferAttribute(n.SCALE,m),B.setMatrixAt(m,g.compose(u,I,p));for(const m in n)if(m==="_COLOR_0"){const C=n[m];B.instanceColor=new d.InstancedBufferAttribute(C.array,C.itemSize,C.normalized)}else m!=="TRANSLATION"&&m!=="ROTATION"&&m!=="SCALE"&&f.geometry.setAttribute(m,n[m]);d.Object3D.prototype.copy.call(B,f),this.parser.assignFinalMaterial(B),h.push(B)}return o.isGroup?(o.clear(),o.add(...h),o):h[0]}))}}const La="glTF",vt=1313821514,Lt=5130562;class Gt{constructor(e){this.name=M.KHR_BINARY_GLTF,this.content=null,this.body=null;const a=new DataView(e,0,12),t=new TextDecoder;if(this.header={magic:t.decode(new Uint8Array(e.slice(0,4))),version:a.getUint32(4,!0),length:a.getUint32(8,!0)},this.header.magic!==La)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const A=this.header.length-12,i=new DataView(e,12);let s=0;for(;s<A;){const n=i.getUint32(s,!0);s+=4;const c=i.getUint32(s,!0);if(s+=4,c===vt){const o=new Uint8Array(e,12+s,n);this.content=t.decode(o)}else if(c===Lt){const o=12+s;this.body=e.slice(o,o+n)}s+=n}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class Ut{constructor(e,a){if(!a)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=M.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=a,this.dracoLoader.preload()}decodePrimitive(e,a){const t=this.json,A=this.dracoLoader,i=e.extensions[this.name].bufferView,s=e.extensions[this.name].attributes,n={},c={},o={};for(const b in s){const l=ea[b]||b.toLowerCase();n[l]=s[b]}for(const b in e.attributes){const l=ea[b]||b.toLowerCase();if(s[b]!==void 0){const h=t.accessors[e.attributes[b]],f=ge[h.componentType];o[l]=f.name,c[l]=h.normalized===!0}}return a.getDependency("bufferView",i).then(function(b){return new Promise(function(l,h){A.decodeDracoFile(b,function(f){for(const g in f.attributes){const u=f.attributes[g],I=c[g];I!==void 0&&(u.normalized=I)}l(f)},n,o,d.LinearSRGBColorSpace,h)})})}}class Nt{constructor(){this.name=M.KHR_TEXTURE_TRANSFORM}extendTexture(e,a){return(a.texCoord!==void 0&&a.texCoord!==e.channel||a.offset!==void 0||a.rotation!==void 0||a.scale!==void 0)&&(e=e.clone(),a.texCoord!==void 0&&(e.channel=a.texCoord),a.offset!==void 0&&e.offset.fromArray(a.offset),a.rotation!==void 0&&(e.rotation=a.rotation),a.scale!==void 0&&e.repeat.fromArray(a.scale),e.needsUpdate=!0),e}}class Pt{constructor(){this.name=M.KHR_MESH_QUANTIZATION}}class Ga extends d.Interpolant{constructor(e,a,t,A){super(e,a,t,A)}copySampleValue_(e){const a=this.resultBuffer,t=this.sampleValues,A=this.valueSize,i=e*A*3+A;for(let s=0;s!==A;s++)a[s]=t[i+s];return a}interpolate_(e,a,t,A){const i=this.resultBuffer,s=this.sampleValues,n=this.valueSize,c=2*n,o=3*n,b=A-a,l=(t-a)/b,h=l*l,f=h*l,g=e*o,u=g-o,I=-2*f+3*h,p=f-h,B=1-I,m=p-h+l;for(let C=0;C!==n;C++){const w=s[u+C+n],k=s[u+C+c]*b,x=s[g+C+n],E=s[g+C]*b;i[C]=B*w+m*k+I*x+p*E}return i}}const _t=new d.Quaternion;class Ht extends Ga{interpolate_(e,a,t,A){const i=super.interpolate_(e,a,t,A);return _t.fromArray(i).normalize().toArray(i),i}}const P={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},ge={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},ha={9728:d.NearestFilter,9729:d.LinearFilter,9984:d.NearestMipmapNearestFilter,9985:d.LinearMipmapNearestFilter,9986:d.NearestMipmapLinearFilter,9987:d.LinearMipmapLinearFilter},ga={33071:d.ClampToEdgeWrapping,33648:d.MirroredRepeatWrapping,10497:d.RepeatWrapping},Ge={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},ea={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},ee={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},qt={CUBICSPLINE:void 0,LINEAR:d.InterpolateLinear,STEP:d.InterpolateDiscrete},Ot="OPAQUE",Jt="MASK",Kt="BLEND";function se(r,e,a){for(const t in a.extensions)r[t]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[t]=a.extensions[t])}function Z(r,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(r.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function zt(r,e){if(r.updateMorphTargets(),e.weights!==void 0)for(let a=0,t=e.weights.length;a<t;a++)r.morphTargetInfluences[a]=e.weights[a];if(e.extras&&Array.isArray(e.extras.targetNames)){const a=e.extras.targetNames;if(r.morphTargetInfluences.length===a.length){r.morphTargetDictionary={};for(let t=0,A=a.length;t<A;t++)r.morphTargetDictionary[a[t]]=t}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function Vt(r){let e;const a=r.extensions&&r.extensions[M.KHR_DRACO_MESH_COMPRESSION];if(e=a?"draco:"+a.bufferView+":"+a.indices+":"+Ue(a.attributes):r.indices+":"+Ue(r.attributes)+":"+r.mode,r.targets!==void 0)for(let t=0,A=r.targets.length;t<A;t++)e+=":"+Ue(r.targets[t]);return e}function Ue(r){let e="";const a=Object.keys(r).sort();for(let t=0,A=a.length;t<A;t++)e+=a[t]+":"+r[a[t]]+";";return e}function aa(r){switch(r){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}const Yt=new d.Matrix4;class Wt{constructor(e={},a={}){this.json=e,this.extensions={},this.plugins={},this.options=a,this.cache=new ut,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let t=!1,A=-1,i=!1,s=-1;if(typeof navigator<"u"){const n=navigator.userAgent;t=/^((?!chrome|android).)*safari/i.test(n)===!0;const c=n.match(/Version\/(\d+)/);A=t&&c?parseInt(c[1],10):-1,i=n.indexOf("Firefox")>-1,s=i?n.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||t&&A<17||i&&s<98?this.textureLoader=new d.TextureLoader(this.options.manager):this.textureLoader=new d.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new d.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,a){const t=this,A=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(s){return s._markDefs&&s._markDefs()}),Promise.all(this._invokeAll(function(s){return s.beforeRoot&&s.beforeRoot()})).then(function(){return Promise.all([t.getDependencies("scene"),t.getDependencies("animation"),t.getDependencies("camera")])}).then(function(s){const n={scene:s[0][A.scene||0],scenes:s[0],animations:s[1],cameras:s[2],asset:A.asset,parser:t,userData:{}};return se(i,n,A),Z(n,A),Promise.all(t._invokeAll(function(c){return c.afterRoot&&c.afterRoot(n)})).then(function(){for(const c of n.scenes)c.updateMatrixWorld();e(n)})}).catch(a)}_markDefs(){const e=this.json.nodes||[],a=this.json.skins||[],t=this.json.meshes||[];for(let A=0,i=a.length;A<i;A++){const s=a[A].joints;for(let n=0,c=s.length;n<c;n++)e[s[n]].isBone=!0}for(let A=0,i=e.length;A<i;A++){const s=e[A];s.mesh!==void 0&&(this._addNodeRef(this.meshCache,s.mesh),s.skin!==void 0&&(t[s.mesh].isSkinnedMesh=!0)),s.camera!==void 0&&this._addNodeRef(this.cameraCache,s.camera)}}_addNodeRef(e,a){a!==void 0&&(e.refs[a]===void 0&&(e.refs[a]=e.uses[a]=0),e.refs[a]++)}_getNodeRef(e,a,t){if(e.refs[a]<=1)return t;const A=t.clone(),i=(s,n)=>{const c=this.associations.get(s);c!=null&&this.associations.set(n,c);for(const[o,b]of s.children.entries())i(b,n.children[o])};return i(t,A),A.name+="_instance_"+e.uses[a]++,A}_invokeOne(e){const a=Object.values(this.plugins);a.push(this);for(let t=0;t<a.length;t++){const A=e(a[t]);if(A)return A}return null}_invokeAll(e){const a=Object.values(this.plugins);a.unshift(this);const t=[];for(let A=0;A<a.length;A++){const i=e(a[A]);i&&t.push(i)}return t}getDependency(e,a){const t=e+":"+a;let A=this.cache.get(t);if(!A){switch(e){case"scene":A=this.loadScene(a);break;case"node":A=this._invokeOne(function(i){return i.loadNode&&i.loadNode(a)});break;case"mesh":A=this._invokeOne(function(i){return i.loadMesh&&i.loadMesh(a)});break;case"accessor":A=this.loadAccessor(a);break;case"bufferView":A=this._invokeOne(function(i){return i.loadBufferView&&i.loadBufferView(a)});break;case"buffer":A=this.loadBuffer(a);break;case"material":A=this._invokeOne(function(i){return i.loadMaterial&&i.loadMaterial(a)});break;case"texture":A=this._invokeOne(function(i){return i.loadTexture&&i.loadTexture(a)});break;case"skin":A=this.loadSkin(a);break;case"animation":A=this._invokeOne(function(i){return i.loadAnimation&&i.loadAnimation(a)});break;case"camera":A=this.loadCamera(a);break;default:if(A=this._invokeOne(function(i){return i!=this&&i.getDependency&&i.getDependency(e,a)}),!A)throw new Error("Unknown type: "+e)}this.cache.add(t,A)}return A}getDependencies(e){let a=this.cache.get(e);if(!a){const t=this,A=this.json[e+(e==="mesh"?"es":"s")]||[];a=Promise.all(A.map(function(i,s){return t.getDependency(e,s)})),this.cache.add(e,a)}return a}loadBuffer(e){const a=this.json.buffers[e],t=this.fileLoader;if(a.type&&a.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+a.type+" buffer type is not supported.");if(a.uri===void 0&&e===0)return Promise.resolve(this.extensions[M.KHR_BINARY_GLTF].body);const A=this.options;return new Promise(function(i,s){t.load(d.LoaderUtils.resolveURL(a.uri,A.path),i,void 0,function(){s(new Error('THREE.GLTFLoader: Failed to load buffer "'+a.uri+'".'))})})}loadBufferView(e){const a=this.json.bufferViews[e];return this.getDependency("buffer",a.buffer).then(function(t){const A=a.byteLength||0,i=a.byteOffset||0;return t.slice(i,i+A)})}loadAccessor(e){const a=this,t=this.json,A=this.json.accessors[e];if(A.bufferView===void 0&&A.sparse===void 0){const s=Ge[A.type],n=ge[A.componentType],c=A.normalized===!0,o=new n(A.count*s);return Promise.resolve(new d.BufferAttribute(o,s,c))}const i=[];return A.bufferView!==void 0?i.push(this.getDependency("bufferView",A.bufferView)):i.push(null),A.sparse!==void 0&&(i.push(this.getDependency("bufferView",A.sparse.indices.bufferView)),i.push(this.getDependency("bufferView",A.sparse.values.bufferView))),Promise.all(i).then(function(s){const n=s[0],c=Ge[A.type],o=ge[A.componentType],b=o.BYTES_PER_ELEMENT,l=b*c,h=A.byteOffset||0,f=A.bufferView!==void 0?t.bufferViews[A.bufferView].byteStride:void 0,g=A.normalized===!0;let u,I;if(f&&f!==l){const p=Math.floor(h/f),B="InterleavedBuffer:"+A.bufferView+":"+A.componentType+":"+p+":"+A.count;let m=a.cache.get(B);m||(u=new o(n,p*f,A.count*f/b),m=new d.InterleavedBuffer(u,f/b),a.cache.add(B,m)),I=new d.InterleavedBufferAttribute(m,c,h%f/b,g)}else u=n===null?new o(A.count*c):new o(n,h,A.count*c),I=new d.BufferAttribute(u,c,g);if(A.sparse!==void 0){const p=Ge.SCALAR,B=ge[A.sparse.indices.componentType],m=A.sparse.indices.byteOffset||0,C=A.sparse.values.byteOffset||0,w=new B(s[1],m,A.sparse.count*p),k=new o(s[2],C,A.sparse.count*c);n!==null&&(I=new d.BufferAttribute(I.array.slice(),I.itemSize,I.normalized)),I.normalized=!1;for(let x=0,E=w.length;x<E;x++){const y=w[x];if(I.setX(y,k[x*c]),c>=2&&I.setY(y,k[x*c+1]),c>=3&&I.setZ(y,k[x*c+2]),c>=4&&I.setW(y,k[x*c+3]),c>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}I.normalized=g}return I})}loadTexture(e){const a=this.json,t=this.options,A=a.textures[e].source,i=a.images[A];let s=this.textureLoader;if(i.uri){const n=t.manager.getHandler(i.uri);n!==null&&(s=n)}return this.loadTextureImage(e,A,s)}loadTextureImage(e,a,t){const A=this,i=this.json,s=i.textures[e],n=i.images[a],c=(n.uri||n.bufferView)+":"+s.sampler;if(this.textureCache[c])return this.textureCache[c];const o=this.loadImageSource(a,t).then(function(b){b.flipY=!1,b.name=s.name||n.name||"",b.name===""&&typeof n.uri=="string"&&n.uri.startsWith("data:image/")===!1&&(b.name=n.uri);const l=(i.samplers||{})[s.sampler]||{};return b.magFilter=ha[l.magFilter]||d.LinearFilter,b.minFilter=ha[l.minFilter]||d.LinearMipmapLinearFilter,b.wrapS=ga[l.wrapS]||d.RepeatWrapping,b.wrapT=ga[l.wrapT]||d.RepeatWrapping,b.generateMipmaps=!b.isCompressedTexture&&b.minFilter!==d.NearestFilter&&b.minFilter!==d.LinearFilter,A.associations.set(b,{textures:e}),b}).catch(function(){return null});return this.textureCache[c]=o,o}loadImageSource(e,a){const t=this,A=this.json,i=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(l=>l.clone());const s=A.images[e],n=self.URL||self.webkitURL;let c=s.uri||"",o=!1;if(s.bufferView!==void 0)c=t.getDependency("bufferView",s.bufferView).then(function(l){o=!0;const h=new Blob([l],{type:s.mimeType});return c=n.createObjectURL(h),c});else if(s.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const b=Promise.resolve(c).then(function(l){return new Promise(function(h,f){let g=h;a.isImageBitmapLoader===!0&&(g=function(u){const I=new d.Texture(u);I.needsUpdate=!0,h(I)}),a.load(d.LoaderUtils.resolveURL(l,i.path),g,void 0,f)})}).then(function(l){var h;return o===!0&&n.revokeObjectURL(c),Z(l,s),l.userData.mimeType=s.mimeType||((h=s.uri).search(/\.jpe?g($|\?)/i)>0||h.search(/^data\:image\/jpeg/)===0?"image/jpeg":h.search(/\.webp($|\?)/i)>0||h.search(/^data\:image\/webp/)===0?"image/webp":h.search(/\.ktx2($|\?)/i)>0||h.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"),l}).catch(function(l){throw console.error("THREE.GLTFLoader: Couldn't load texture",c),l});return this.sourceCache[e]=b,b}assignTexture(e,a,t,A){const i=this;return this.getDependency("texture",t.index).then(function(s){if(!s)return null;if(t.texCoord!==void 0&&t.texCoord>0&&((s=s.clone()).channel=t.texCoord),i.extensions[M.KHR_TEXTURE_TRANSFORM]){const n=t.extensions!==void 0?t.extensions[M.KHR_TEXTURE_TRANSFORM]:void 0;if(n){const c=i.associations.get(s);s=i.extensions[M.KHR_TEXTURE_TRANSFORM].extendTexture(s,n),i.associations.set(s,c)}}return A!==void 0&&(s.colorSpace=A),e[a]=s,s})}assignFinalMaterial(e){const a=e.geometry;let t=e.material;const A=a.attributes.tangent===void 0,i=a.attributes.color!==void 0,s=a.attributes.normal===void 0;if(e.isPoints){const n="PointsMaterial:"+t.uuid;let c=this.cache.get(n);c||(c=new d.PointsMaterial,d.Material.prototype.copy.call(c,t),c.color.copy(t.color),c.map=t.map,c.sizeAttenuation=!1,this.cache.add(n,c)),t=c}else if(e.isLine){const n="LineBasicMaterial:"+t.uuid;let c=this.cache.get(n);c||(c=new d.LineBasicMaterial,d.Material.prototype.copy.call(c,t),c.color.copy(t.color),c.map=t.map,this.cache.add(n,c)),t=c}if(A||i||s){let n="ClonedMaterial:"+t.uuid+":";A&&(n+="derivative-tangents:"),i&&(n+="vertex-colors:"),s&&(n+="flat-shading:");let c=this.cache.get(n);c||(c=t.clone(),i&&(c.vertexColors=!0),s&&(c.flatShading=!0),A&&(c.normalScale&&(c.normalScale.y*=-1),c.clearcoatNormalScale&&(c.clearcoatNormalScale.y*=-1)),this.cache.add(n,c),this.associations.set(c,this.associations.get(t))),t=c}e.material=t}getMaterialType(){return d.MeshStandardMaterial}loadMaterial(e){const a=this,t=this.json,A=this.extensions,i=t.materials[e];let s;const n={},c=[];if((i.extensions||{})[M.KHR_MATERIALS_UNLIT]){const b=A[M.KHR_MATERIALS_UNLIT];s=b.getMaterialType(),c.push(b.extendParams(n,i,a))}else{const b=i.pbrMetallicRoughness||{};if(n.color=new d.Color(1,1,1),n.opacity=1,Array.isArray(b.baseColorFactor)){const l=b.baseColorFactor;n.color.setRGB(l[0],l[1],l[2],d.LinearSRGBColorSpace),n.opacity=l[3]}b.baseColorTexture!==void 0&&c.push(a.assignTexture(n,"map",b.baseColorTexture,d.SRGBColorSpace)),n.metalness=b.metallicFactor!==void 0?b.metallicFactor:1,n.roughness=b.roughnessFactor!==void 0?b.roughnessFactor:1,b.metallicRoughnessTexture!==void 0&&(c.push(a.assignTexture(n,"metalnessMap",b.metallicRoughnessTexture)),c.push(a.assignTexture(n,"roughnessMap",b.metallicRoughnessTexture))),s=this._invokeOne(function(l){return l.getMaterialType&&l.getMaterialType(e)}),c.push(Promise.all(this._invokeAll(function(l){return l.extendMaterialParams&&l.extendMaterialParams(e,n)})))}i.doubleSided===!0&&(n.side=d.DoubleSide);const o=i.alphaMode||Ot;if(o===Kt?(n.transparent=!0,n.depthWrite=!1):(n.transparent=!1,o===Jt&&(n.alphaTest=i.alphaCutoff!==void 0?i.alphaCutoff:.5)),i.normalTexture!==void 0&&s!==d.MeshBasicMaterial&&(c.push(a.assignTexture(n,"normalMap",i.normalTexture)),n.normalScale=new d.Vector2(1,1),i.normalTexture.scale!==void 0)){const b=i.normalTexture.scale;n.normalScale.set(b,b)}if(i.occlusionTexture!==void 0&&s!==d.MeshBasicMaterial&&(c.push(a.assignTexture(n,"aoMap",i.occlusionTexture)),i.occlusionTexture.strength!==void 0&&(n.aoMapIntensity=i.occlusionTexture.strength)),i.emissiveFactor!==void 0&&s!==d.MeshBasicMaterial){const b=i.emissiveFactor;n.emissive=new d.Color().setRGB(b[0],b[1],b[2],d.LinearSRGBColorSpace)}return i.emissiveTexture!==void 0&&s!==d.MeshBasicMaterial&&c.push(a.assignTexture(n,"emissiveMap",i.emissiveTexture,d.SRGBColorSpace)),Promise.all(c).then(function(){const b=new s(n);return i.name&&(b.name=i.name),Z(b,i),a.associations.set(b,{materials:e}),i.extensions&&se(A,b,i),b})}createUniqueName(e){const a=d.PropertyBinding.sanitizeNodeName(e||"");return a in this.nodeNamesUsed?a+"_"+ ++this.nodeNamesUsed[a]:(this.nodeNamesUsed[a]=0,a)}loadGeometries(e){const a=this,t=this.extensions,A=this.primitiveCache;function i(n){return t[M.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(n,a).then(function(c){return fa(c,n,a)})}const s=[];for(let n=0,c=e.length;n<c;n++){const o=e[n],b=Vt(o),l=A[b];if(l)s.push(l.promise);else{let h;h=o.extensions&&o.extensions[M.KHR_DRACO_MESH_COMPRESSION]?i(o):fa(new d.BufferGeometry,o,a),A[b]={primitive:o,promise:h},s.push(h)}}return Promise.all(s)}loadMesh(e){const a=this,t=this.json,A=this.extensions,i=t.meshes[e],s=i.primitives,n=[];for(let o=0,b=s.length;o<b;o++){const l=s[o].material===void 0?((c=this.cache).DefaultMaterial===void 0&&(c.DefaultMaterial=new d.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:d.FrontSide})),c.DefaultMaterial):this.getDependency("material",s[o].material);n.push(l)}var c;return n.push(a.loadGeometries(s)),Promise.all(n).then(function(o){const b=o.slice(0,o.length-1),l=o[o.length-1],h=[];for(let g=0,u=l.length;g<u;g++){const I=l[g],p=s[g];let B;const m=b[g];if(p.mode===P.TRIANGLES||p.mode===P.TRIANGLE_STRIP||p.mode===P.TRIANGLE_FAN||p.mode===void 0)B=i.isSkinnedMesh===!0?new d.SkinnedMesh(I,m):new d.Mesh(I,m),B.isSkinnedMesh===!0&&B.normalizeSkinWeights(),p.mode===P.TRIANGLE_STRIP?B.geometry=la(B.geometry,d.TriangleStripDrawMode):p.mode===P.TRIANGLE_FAN&&(B.geometry=la(B.geometry,d.TriangleFanDrawMode));else if(p.mode===P.LINES)B=new d.LineSegments(I,m);else if(p.mode===P.LINE_STRIP)B=new d.Line(I,m);else if(p.mode===P.LINE_LOOP)B=new d.LineLoop(I,m);else{if(p.mode!==P.POINTS)throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+p.mode);B=new d.Points(I,m)}Object.keys(B.geometry.morphAttributes).length>0&&zt(B,i),B.name=a.createUniqueName(i.name||"mesh_"+e),Z(B,i),p.extensions&&se(A,B,p),a.assignFinalMaterial(B),h.push(B)}for(let g=0,u=h.length;g<u;g++)a.associations.set(h[g],{meshes:e,primitives:g});if(h.length===1)return i.extensions&&se(A,h[0],i),h[0];const f=new d.Group;i.extensions&&se(A,f,i),a.associations.set(f,{meshes:e});for(let g=0,u=h.length;g<u;g++)f.add(h[g]);return f})}loadCamera(e){let a;const t=this.json.cameras[e],A=t[t.type];if(A)return t.type==="perspective"?a=new d.PerspectiveCamera(d.MathUtils.radToDeg(A.yfov),A.aspectRatio||1,A.znear||1,A.zfar||2e6):t.type==="orthographic"&&(a=new d.OrthographicCamera(-A.xmag,A.xmag,A.ymag,-A.ymag,A.znear,A.zfar)),t.name&&(a.name=this.createUniqueName(t.name)),Z(a,t),Promise.resolve(a);console.warn("THREE.GLTFLoader: Missing camera parameters.")}loadSkin(e){const a=this.json.skins[e],t=[];for(let A=0,i=a.joints.length;A<i;A++)t.push(this._loadNodeShallow(a.joints[A]));return a.inverseBindMatrices!==void 0?t.push(this.getDependency("accessor",a.inverseBindMatrices)):t.push(null),Promise.all(t).then(function(A){const i=A.pop(),s=A,n=[],c=[];for(let o=0,b=s.length;o<b;o++){const l=s[o];if(l){n.push(l);const h=new d.Matrix4;i!==null&&h.fromArray(i.array,16*o),c.push(h)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',a.joints[o])}return new d.Skeleton(n,c)})}loadAnimation(e){const a=this.json,t=this,A=a.animations[e],i=A.name?A.name:"animation_"+e,s=[],n=[],c=[],o=[],b=[];for(let l=0,h=A.channels.length;l<h;l++){const f=A.channels[l],g=A.samplers[f.sampler],u=f.target,I=u.node,p=A.parameters!==void 0?A.parameters[g.input]:g.input,B=A.parameters!==void 0?A.parameters[g.output]:g.output;u.node!==void 0&&(s.push(this.getDependency("node",I)),n.push(this.getDependency("accessor",p)),c.push(this.getDependency("accessor",B)),o.push(g),b.push(u))}return Promise.all([Promise.all(s),Promise.all(n),Promise.all(c),Promise.all(o),Promise.all(b)]).then(function(l){const h=l[0],f=l[1],g=l[2],u=l[3],I=l[4],p=[];for(let B=0,m=h.length;B<m;B++){const C=h[B],w=f[B],k=g[B],x=u[B],E=I[B];if(C===void 0)continue;C.updateMatrix&&C.updateMatrix();const y=t._createAnimationTracks(C,w,k,x,E);if(y)for(let D=0;D<y.length;D++)p.push(y[D])}return new d.AnimationClip(i,void 0,p)})}createNodeMesh(e){const a=this.json,t=this,A=a.nodes[e];return A.mesh===void 0?null:t.getDependency("mesh",A.mesh).then(function(i){const s=t._getNodeRef(t.meshCache,A.mesh,i);return A.weights!==void 0&&s.traverse(function(n){if(n.isMesh)for(let c=0,o=A.weights.length;c<o;c++)n.morphTargetInfluences[c]=A.weights[c]}),s})}loadNode(e){const a=this,t=this.json.nodes[e],A=a._loadNodeShallow(e),i=[],s=t.children||[];for(let c=0,o=s.length;c<o;c++)i.push(a.getDependency("node",s[c]));const n=t.skin===void 0?Promise.resolve(null):a.getDependency("skin",t.skin);return Promise.all([A,Promise.all(i),n]).then(function(c){const o=c[0],b=c[1],l=c[2];l!==null&&o.traverse(function(h){h.isSkinnedMesh&&h.bind(l,Yt)});for(let h=0,f=b.length;h<f;h++)o.add(b[h]);return o})}_loadNodeShallow(e){const a=this.json,t=this.extensions,A=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];const i=a.nodes[e],s=i.name?A.createUniqueName(i.name):"",n=[],c=A._invokeOne(function(o){return o.createNodeMesh&&o.createNodeMesh(e)});return c&&n.push(c),i.camera!==void 0&&n.push(A.getDependency("camera",i.camera).then(function(o){return A._getNodeRef(A.cameraCache,i.camera,o)})),A._invokeAll(function(o){return o.createNodeAttachment&&o.createNodeAttachment(e)}).forEach(function(o){n.push(o)}),this.nodeCache[e]=Promise.all(n).then(function(o){let b;if(b=i.isBone===!0?new d.Bone:o.length>1?new d.Group:o.length===1?o[0]:new d.Object3D,b!==o[0])for(let l=0,h=o.length;l<h;l++)b.add(o[l]);if(i.name&&(b.userData.name=i.name,b.name=s),Z(b,i),i.extensions&&se(t,b,i),i.matrix!==void 0){const l=new d.Matrix4;l.fromArray(i.matrix),b.applyMatrix4(l)}else i.translation!==void 0&&b.position.fromArray(i.translation),i.rotation!==void 0&&b.quaternion.fromArray(i.rotation),i.scale!==void 0&&b.scale.fromArray(i.scale);return A.associations.has(b)||A.associations.set(b,{}),A.associations.get(b).nodes=e,b}),this.nodeCache[e]}loadScene(e){const a=this.extensions,t=this.json.scenes[e],A=this,i=new d.Group;t.name&&(i.name=A.createUniqueName(t.name)),Z(i,t),t.extensions&&se(a,i,t);const s=t.nodes||[],n=[];for(let c=0,o=s.length;c<o;c++)n.push(A.getDependency("node",s[c]));return Promise.all(n).then(function(c){for(let o=0,b=c.length;o<b;o++)i.add(c[o]);return A.associations=(o=>{const b=new Map;for(const[l,h]of A.associations)(l instanceof d.Material||l instanceof d.Texture)&&b.set(l,h);return o.traverse(l=>{const h=A.associations.get(l);h!=null&&b.set(l,h)}),b})(i),i})}_createAnimationTracks(e,a,t,A,i){const s=[],n=e.name?e.name:e.uuid,c=[];let o;switch(ee[i.path]===ee.weights?e.traverse(function(h){h.morphTargetInfluences&&c.push(h.name?h.name:h.uuid)}):c.push(n),ee[i.path]){case ee.weights:o=d.NumberKeyframeTrack;break;case ee.rotation:o=d.QuaternionKeyframeTrack;break;case ee.position:case ee.scale:o=d.VectorKeyframeTrack;break;default:t.itemSize===1?o=d.NumberKeyframeTrack:o=d.VectorKeyframeTrack}const b=A.interpolation!==void 0?qt[A.interpolation]:d.InterpolateLinear,l=this._getArrayFromAccessor(t);for(let h=0,f=c.length;h<f;h++){const g=new o(c[h]+"."+ee[i.path],a.array,l,b);A.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(g),s.push(g)}return s}_getArrayFromAccessor(e){let a=e.array;if(e.normalized){const t=aa(a.constructor),A=new Float32Array(a.length);for(let i=0,s=a.length;i<s;i++)A[i]=a[i]*t;a=A}return a}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(a){return new(this instanceof d.QuaternionKeyframeTrack?Ht:Ga)(this.times,this.values,this.getValueSize()/3,a)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function fa(r,e,a){const t=e.attributes,A=[];function i(s,n){return a.getDependency("accessor",s).then(function(c){r.setAttribute(n,c)})}for(const s in t){const n=ea[s]||s.toLowerCase();n in r.attributes||A.push(i(t[s],n))}if(e.indices!==void 0&&!r.index){const s=a.getDependency("accessor",e.indices).then(function(n){r.setIndex(n)});A.push(s)}return d.ColorManagement.workingColorSpace!==d.LinearSRGBColorSpace&&"COLOR_0"in t&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${d.ColorManagement.workingColorSpace}" not supported.`),Z(r,e),function(s,n,c){const o=n.attributes,b=new d.Box3;if(o.POSITION===void 0)return;{const f=c.json.accessors[o.POSITION],g=f.min,u=f.max;if(g===void 0||u===void 0)return void console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");if(b.set(new d.Vector3(g[0],g[1],g[2]),new d.Vector3(u[0],u[1],u[2])),f.normalized){const I=aa(ge[f.componentType]);b.min.multiplyScalar(I),b.max.multiplyScalar(I)}}const l=n.targets;if(l!==void 0){const f=new d.Vector3,g=new d.Vector3;for(let u=0,I=l.length;u<I;u++){const p=l[u];if(p.POSITION!==void 0){const B=c.json.accessors[p.POSITION],m=B.min,C=B.max;if(m!==void 0&&C!==void 0){if(g.setX(Math.max(Math.abs(m[0]),Math.abs(C[0]))),g.setY(Math.max(Math.abs(m[1]),Math.abs(C[1]))),g.setZ(Math.max(Math.abs(m[2]),Math.abs(C[2]))),B.normalized){const w=aa(ge[B.componentType]);g.multiplyScalar(w)}f.max(g)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}b.expandByVector(f)}s.boundingBox=b;const h=new d.Sphere;b.getCenter(h.center),h.radius=b.min.distanceTo(b.max)/2,s.boundingSphere=h}(r,e,a),Promise.all(A).then(function(){return e.targets!==void 0?function(s,n,c){let o=!1,b=!1,l=!1;for(let u=0,I=n.length;u<I;u++){const p=n[u];if(p.POSITION!==void 0&&(o=!0),p.NORMAL!==void 0&&(b=!0),p.COLOR_0!==void 0&&(l=!0),o&&b&&l)break}if(!o&&!b&&!l)return Promise.resolve(s);const h=[],f=[],g=[];for(let u=0,I=n.length;u<I;u++){const p=n[u];if(o){const B=p.POSITION!==void 0?c.getDependency("accessor",p.POSITION):s.attributes.position;h.push(B)}if(b){const B=p.NORMAL!==void 0?c.getDependency("accessor",p.NORMAL):s.attributes.normal;f.push(B)}if(l){const B=p.COLOR_0!==void 0?c.getDependency("accessor",p.COLOR_0):s.attributes.color;g.push(B)}}return Promise.all([Promise.all(h),Promise.all(f),Promise.all(g)]).then(function(u){const I=u[0],p=u[1],B=u[2];return o&&(s.morphAttributes.position=I),b&&(s.morphAttributes.normal=p),l&&(s.morphAttributes.color=B),s.morphTargetsRelative=!0,s})}(r,e.targets,a):r})}const Ne=new WeakMap;class Ua extends d.Loader{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,a,t,A){const i=new d.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,s=>{this.parse(s,a,A)},t,A)}parse(e,a,t=()=>{}){this.decodeDracoFile(e,a,null,null,d.SRGBColorSpace,t).catch(t)}decodeDracoFile(e,a,t,A,i=d.LinearSRGBColorSpace,s=()=>{}){const n={attributeIDs:t||this.defaultAttributeIDs,attributeTypes:A||this.defaultAttributeTypes,useUniqueIDs:!!t,vertexColorSpace:i};return this.decodeGeometry(e,n).then(a).catch(s)}decodeGeometry(e,a){const t=JSON.stringify(a);if(Ne.has(e)){const c=Ne.get(e);if(c.key===t)return c.promise;if(e.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let A;const i=this.workerNextTaskID++,s=e.byteLength,n=this._getWorker(i,s).then(c=>(A=c,new Promise((o,b)=>{A._callbacks[i]={resolve:o,reject:b},A.postMessage({type:"decode",id:i,taskConfig:a,buffer:e},[e])}))).then(c=>this._createGeometry(c.geometry));return n.catch(()=>!0).then(()=>{A&&i&&this._releaseTask(A,i)}),Ne.set(e,{key:t,promise:n}),n}_createGeometry(e){const a=new d.BufferGeometry;e.index&&a.setIndex(new d.BufferAttribute(e.index.array,1));for(let t=0;t<e.attributes.length;t++){const A=e.attributes[t],i=A.name,s=A.array,n=A.itemSize,c=new d.BufferAttribute(s,n);i==="color"&&(this._assignVertexColorSpace(c,A.vertexColorSpace),c.normalized=!(s instanceof Float32Array)),a.setAttribute(i,c)}return a}_assignVertexColorSpace(e,a){if(a!==d.SRGBColorSpace)return;const t=new d.Color;for(let A=0,i=e.count;A<i;A++)t.fromBufferAttribute(e,A),d.ColorManagement.toWorkingColorSpace(t,d.SRGBColorSpace),e.setXYZ(A,t.r,t.g,t.b)}_loadLibrary(e,a){const t=new d.FileLoader(this.manager);return t.setPath(this.decoderPath),t.setResponseType(a),t.setWithCredentials(this.withCredentials),new Promise((A,i)=>{t.load(e,A,void 0,i)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const e=typeof WebAssembly!="object"||this.decoderConfig.type==="js",a=[];return e?a.push(this._loadLibrary("draco_decoder.js","text")):(a.push(this._loadLibrary("draco_wasm_wrapper.js","text")),a.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(a).then(t=>{const A=t[0];e||(this.decoderConfig.wasmBinary=t[1]);const i=Xt.toString(),s=["/* draco decoder */",A,"","/* worker */",i.substring(i.indexOf("{")+1,i.lastIndexOf("}"))].join(`
19
+ `);this.workerSourceURL=URL.createObjectURL(new Blob([s]))}),this.decoderPending}_getWorker(e,a){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const A=new Worker(this.workerSourceURL);A._callbacks={},A._taskCosts={},A._taskLoad=0,A.postMessage({type:"init",decoderConfig:this.decoderConfig}),A.onmessage=function(i){const s=i.data;switch(s.type){case"decode":A._callbacks[s.id].resolve(s);break;case"error":A._callbacks[s.id].reject(s);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+s.type+'"')}},this.workerPool.push(A)}else this.workerPool.sort(function(A,i){return A._taskLoad>i._taskLoad?-1:1});const t=this.workerPool[this.workerPool.length-1];return t._taskCosts[e]=a,t._taskLoad+=a,t})}_releaseTask(e,a){e._taskLoad-=e._taskCosts[a],delete e._callbacks[a],delete e._taskCosts[a]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function Xt(){let r,e;function a(t,A,i,s,n,c){const o=c.num_components(),b=i.num_points()*o,l=b*n.BYTES_PER_ELEMENT,h=function(u,I){switch(I){case Float32Array:return u.DT_FLOAT32;case Int8Array:return u.DT_INT8;case Int16Array:return u.DT_INT16;case Int32Array:return u.DT_INT32;case Uint8Array:return u.DT_UINT8;case Uint16Array:return u.DT_UINT16;case Uint32Array:return u.DT_UINT32}}(t,n),f=t._malloc(l);A.GetAttributeDataArrayForAllPoints(i,c,h,l,f);const g=new n(t.HEAPF32.buffer,f,b).slice();return t._free(f),{name:s,array:g,itemSize:o}}onmessage=function(t){const A=t.data;switch(A.type){case"init":r=A.decoderConfig,e=new Promise(function(n){r.onModuleLoaded=function(c){n({draco:c})},DracoDecoderModule(r)});break;case"decode":const i=A.buffer,s=A.taskConfig;e.then(n=>{const c=n.draco,o=new c.Decoder;try{const b=function(h,f,g,u){const I=u.attributeIDs,p=u.attributeTypes;let B,m;const C=f.GetEncodedGeometryType(g);if(C===h.TRIANGULAR_MESH)B=new h.Mesh,m=f.DecodeArrayToMesh(g,g.byteLength,B);else{if(C!==h.POINT_CLOUD)throw new Error("THREE.DRACOLoader: Unexpected geometry type.");B=new h.PointCloud,m=f.DecodeArrayToPointCloud(g,g.byteLength,B)}if(!m.ok()||B.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+m.error_msg());const w={index:null,attributes:[]};for(const k in I){const x=self[p[k]];let E,y;if(u.useUniqueIDs)y=I[k],E=f.GetAttributeByUniqueId(B,y);else{if(y=f.GetAttributeId(B,h[I[k]]),y===-1)continue;E=f.GetAttribute(B,y)}const D=a(h,f,B,k,x,E);k==="color"&&(D.vertexColorSpace=u.vertexColorSpace),w.attributes.push(D)}return C===h.TRIANGULAR_MESH&&(w.index=function(k,x,E){const y=E.num_faces(),D=3*y,j=4*D,F=k._malloc(j);x.GetTrianglesUInt32Array(E,j,F);const N=new Uint32Array(k.HEAPF32.buffer,F,D).slice();return k._free(F),{array:N,itemSize:1}}(h,f,B)),h.destroy(B),w}(c,o,new Int8Array(i),s),l=b.attributes.map(h=>h.array.buffer);b.index&&l.push(b.index.array.buffer),self.postMessage({type:"decode",id:A.id,geometry:b},l)}catch(b){console.error(b),self.postMessage({type:"error",id:A.id,error:b.message})}finally{c.destroy(o)}})}}}class Zt{constructor(e=4){this.pool=e,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0}_initWorker(e){if(!this.workers[e]){const a=this.workerCreator();a.addEventListener("message",this._onMessage.bind(this,e)),this.workers[e]=a}}_getIdleWorker(){for(let e=0;e<this.pool;e++)if(!(this.workerStatus&1<<e))return e;return-1}_onMessage(e,a){const t=this.workersResolve[e];if(t&&t(a),this.queue.length){const{resolve:A,msg:i,transfer:s}=this.queue.shift();this.workersResolve[e]=A,this.workers[e].postMessage(i,s)}else this.workerStatus^=1<<e}setWorkerCreator(e){this.workerCreator=e}setWorkerLimit(e){this.pool=e}postMessage(e,a){return new Promise(t=>{const A=this._getIdleWorker();A!==-1?(this._initWorker(A),this.workerStatus|=1<<A,this.workersResolve[A]=t,this.workers[A].postMessage(e,a)):this.queue.push({resolve:t,msg:e,transfer:a})})}dispose(){this.workers.forEach(e=>e.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const Na=9,Pa=15,_a=16,Ha=22,qa=37,Oa=43,Ja=76,Ka=83,za=97,Va=100,Ya=103,Wa=109,Xa=165,Za=166,Aa=1000066e3;class $t{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}}class Ce{constructor(e,a,t,A){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(e.buffer,e.byteOffset+a,t),this._littleEndian=A,this._offset=0}_nextUint8(){const e=this._dataView.getUint8(this._offset);return this._offset+=1,e}_nextUint16(){const e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}_nextUint32(){const e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint64(){const e=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,e}_nextInt32(){const e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint8Array(e){const a=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,e);return this._offset+=e,a}_skip(e){return this._offset+=e,this}_scan(e,a){a===void 0&&(a=0);const t=this._offset;let A=0;for(;this._dataView.getUint8(this._offset)!==a&&A<e;)A++,this._offset++;return A<e&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+t,A)}}const L=[171,75,84,88,32,50,48,187,13,10,26,10];function ua(r){return new TextDecoder().decode(r)}let Pe,X,ta;const _e={env:{emscripten_notify_memory_growth:function(r){ta=new Uint8Array(X.exports.memory.buffer)}}};class eA{init(){return Pe||(Pe=typeof fetch<"u"?fetch("data:application/wasm;base64,"+Ia).then(e=>e.arrayBuffer()).then(e=>WebAssembly.instantiate(e,_e)).then(this._init):WebAssembly.instantiate(Buffer.from(Ia,"base64"),_e).then(this._init),Pe)}_init(e){X=e.instance,_e.env.emscripten_notify_memory_growth(0)}decode(e,a=0){if(!X)throw new Error("ZSTDDecoder: Await .init() before decoding.");const t=e.byteLength,A=X.exports.malloc(t);ta.set(e,A),a=a||Number(X.exports.ZSTD_findDecompressedSize(A,t));const i=X.exports.malloc(a),s=X.exports.ZSTD_decompress(i,a,A,t),n=ta.slice(i,i+s);return X.exports.free(A),X.exports.free(i),n}}const Ia="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigCACACaiAAQQZ2IgFBAnRBsB5qKAIAaiAAQSBxIgBFaiABRSAAQQV2cWoFQbh/CwsdACAAKAKQ4gEQWiAAQQA2AqDiASAAQgA3A5DiAQu1AwEFfyMAQZACayIKJABBuH8hBgJAIAVFDQAgBCwAACIIQf8BcSEHAkAgCEF/TARAIAdBgn9qQQF2IgggBU8NAkFsIQYgB0GBf2oiBUGAAk8NAiAEQQFqIQdBACEGA0AgBiAFTwRAIAUhBiAIIQcMAwUgACAGaiAHIAZBAXZqIgQtAABBBHY6AAAgACAGQQFyaiAELQAAQQ9xOgAAIAZBAmohBgwBCwAACwALIAcgBU8NASAAIARBAWogByAKEFMiBhADDQELIAYhBEEAIQYgAUEAQTQQECEJQQAhBQNAIAQgBkcEQCAAIAZqIggtAAAiAUELSwRAQWwhBgwDBSAJIAFBAnRqIgEgASgCAEEBajYCACAGQQFqIQZBASAILQAAdEEBdSAFaiEFDAILAAsLQWwhBiAFRQ0AIAUQFEEBaiIBQQxLDQAgAyABNgIAQQFBASABdCAFayIDEBQiAXQgA0cNACAAIARqIAFBAWoiADoAACAJIABBAnRqIgAgACgCAEEBajYCACAJKAIEIgBBAkkgAEEBcXINACACIARBAWo2AgAgB0EBaiEGCyAKQZACaiQAIAYLxhEBDH8jAEHwAGsiBSQAQWwhCwJAIANBCkkNACACLwAAIQogAi8AAiEJIAIvAAQhByAFQQhqIAQQDgJAIAMgByAJIApqakEGaiIMSQ0AIAUtAAohCCAFQdgAaiACQQZqIgIgChAGIgsQAw0BIAVBQGsgAiAKaiICIAkQBiILEAMNASAFQShqIAIgCWoiAiAHEAYiCxADDQEgBUEQaiACIAdqIAMgDGsQBiILEAMNASAAIAFqIg9BfWohECAEQQRqIQZBASELIAAgAUEDakECdiIDaiIMIANqIgIgA2oiDiEDIAIhBCAMIQcDQCALIAMgEElxBEAgACAGIAVB2ABqIAgQAkECdGoiCS8BADsAACAFQdgAaiAJLQACEAEgCS0AAyELIAcgBiAFQUBrIAgQAkECdGoiCS8BADsAACAFQUBrIAktAAIQASAJLQADIQogBCAGIAVBKGogCBACQQJ0aiIJLwEAOwAAIAVBKGogCS0AAhABIAktAAMhCSADIAYgBUEQaiAIEAJBAnRqIg0vAQA7AAAgBUEQaiANLQACEAEgDS0AAyENIAAgC2oiCyAGIAVB2ABqIAgQAkECdGoiAC8BADsAACAFQdgAaiAALQACEAEgAC0AAyEAIAcgCmoiCiAGIAVBQGsgCBACQQJ0aiIHLwEAOwAAIAVBQGsgBy0AAhABIActAAMhByAEIAlqIgkgBiAFQShqIAgQAkECdGoiBC8BADsAACAFQShqIAQtAAIQASAELQADIQQgAyANaiIDIAYgBUEQaiAIEAJBAnRqIg0vAQA7AAAgBUEQaiANLQACEAEgACALaiEAIAcgCmohByAEIAlqIQQgAyANLQADaiEDIAVB2ABqEA0gBUFAaxANciAFQShqEA1yIAVBEGoQDXJFIQsMAQsLIAQgDksgByACS3INAEFsIQsgACAMSw0BIAxBfWohCQNAQQAgACAJSSAFQdgAahAEGwRAIAAgBiAFQdgAaiAIEAJBAnRqIgovAQA7AAAgBUHYAGogCi0AAhABIAAgCi0AA2oiACAGIAVB2ABqIAgQAkECdGoiCi8BADsAACAFQdgAaiAKLQACEAEgACAKLQADaiEADAEFIAxBfmohCgNAIAVB2ABqEAQgACAKS3JFBEAgACAGIAVB2ABqIAgQAkECdGoiCS8BADsAACAFQdgAaiAJLQACEAEgACAJLQADaiEADAELCwNAIAAgCk0EQCAAIAYgBUHYAGogCBACQQJ0aiIJLwEAOwAAIAVB2ABqIAktAAIQASAAIAktAANqIQAMAQsLAkAgACAMTw0AIAAgBiAFQdgAaiAIEAIiAEECdGoiDC0AADoAACAMLQADQQFGBEAgBUHYAGogDC0AAhABDAELIAUoAlxBH0sNACAFQdgAaiAGIABBAnRqLQACEAEgBSgCXEEhSQ0AIAVBIDYCXAsgAkF9aiEMA0BBACAHIAxJIAVBQGsQBBsEQCAHIAYgBUFAayAIEAJBAnRqIgAvAQA7AAAgBUFAayAALQACEAEgByAALQADaiIAIAYgBUFAayAIEAJBAnRqIgcvAQA7AAAgBUFAayAHLQACEAEgACAHLQADaiEHDAEFIAJBfmohDANAIAVBQGsQBCAHIAxLckUEQCAHIAYgBUFAayAIEAJBAnRqIgAvAQA7AAAgBUFAayAALQACEAEgByAALQADaiEHDAELCwNAIAcgDE0EQCAHIAYgBUFAayAIEAJBAnRqIgAvAQA7AAAgBUFAayAALQACEAEgByAALQADaiEHDAELCwJAIAcgAk8NACAHIAYgBUFAayAIEAIiAEECdGoiAi0AADoAACACLQADQQFGBEAgBUFAayACLQACEAEMAQsgBSgCREEfSw0AIAVBQGsgBiAAQQJ0ai0AAhABIAUoAkRBIUkNACAFQSA2AkQLIA5BfWohAgNAQQAgBCACSSAFQShqEAQbBEAgBCAGIAVBKGogCBACQQJ0aiIALwEAOwAAIAVBKGogAC0AAhABIAQgAC0AA2oiACAGIAVBKGogCBACQQJ0aiIELwEAOwAAIAVBKGogBC0AAhABIAAgBC0AA2ohBAwBBSAOQX5qIQIDQCAFQShqEAQgBCACS3JFBEAgBCAGIAVBKGogCBACQQJ0aiIALwEAOwAAIAVBKGogAC0AAhABIAQgAC0AA2ohBAwBCwsDQCAEIAJNBEAgBCAGIAVBKGogCBACQQJ0aiIALwEAOwAAIAVBKGogAC0AAhABIAQgAC0AA2ohBAwBCwsCQCAEIA5PDQAgBCAGIAVBKGogCBACIgBBAnRqIgItAAA6AAAgAi0AA0EBRgRAIAVBKGogAi0AAhABDAELIAUoAixBH0sNACAFQShqIAYgAEECdGotAAIQASAFKAIsQSFJDQAgBUEgNgIsCwNAQQAgAyAQSSAFQRBqEAQbBEAgAyAGIAVBEGogCBACQQJ0aiIALwEAOwAAIAVBEGogAC0AAhABIAMgAC0AA2oiACAGIAVBEGogCBACQQJ0aiICLwEAOwAAIAVBEGogAi0AAhABIAAgAi0AA2ohAwwBBSAPQX5qIQIDQCAFQRBqEAQgAyACS3JFBEAgAyAGIAVBEGogCBACQQJ0aiIALwEAOwAAIAVBEGogAC0AAhABIAMgAC0AA2ohAwwBCwsDQCADIAJNBEAgAyAGIAVBEGogCBACQQJ0aiIALwEAOwAAIAVBEGogAC0AAhABIAMgAC0AA2ohAwwBCwsCQCADIA9PDQAgAyAGIAVBEGogCBACIgBBAnRqIgItAAA6AAAgAi0AA0EBRgRAIAVBEGogAi0AAhABDAELIAUoAhRBH0sNACAFQRBqIAYgAEECdGotAAIQASAFKAIUQSFJDQAgBUEgNgIUCyABQWwgBUHYAGoQCiAFQUBrEApxIAVBKGoQCnEgBUEQahAKcRshCwwJCwAACwALAAALAAsAAAsACwAACwALQWwhCwsgBUHwAGokACALC7UEAQ5/IwBBEGsiBiQAIAZBBGogABAOQVQhBQJAIARB3AtJDQAgBi0ABCEHIANB8ARqQQBB7AAQECEIIAdBDEsNACADQdwJaiIJIAggBkEIaiAGQQxqIAEgAhAxIhAQA0UEQCAGKAIMIgQgB0sNASADQdwFaiEPIANBpAVqIREgAEEEaiESIANBqAVqIQEgBCEFA0AgBSICQX9qIQUgCCACQQJ0aigCAEUNAAsgAkEBaiEOQQEhBQNAIAUgDk9FBEAgCCAFQQJ0IgtqKAIAIQwgASALaiAKNgIAIAVBAWohBSAKIAxqIQoMAQsLIAEgCjYCAEEAIQUgBigCCCELA0AgBSALRkUEQCABIAUgCWotAAAiDEECdGoiDSANKAIAIg1BAWo2AgAgDyANQQF0aiINIAw6AAEgDSAFOgAAIAVBAWohBQwBCwtBACEBIANBADYCqAUgBEF/cyAHaiEJQQEhBQNAIAUgDk9FBEAgCCAFQQJ0IgtqKAIAIQwgAyALaiABNgIAIAwgBSAJanQgAWohASAFQQFqIQUMAQsLIAcgBEEBaiIBIAJrIgRrQQFqIQgDQEEBIQUgBCAIT0UEQANAIAUgDk9FBEAgBUECdCIJIAMgBEE0bGpqIAMgCWooAgAgBHY2AgAgBUEBaiEFDAELCyAEQQFqIQQMAQsLIBIgByAPIAogESADIAIgARBkIAZBAToABSAGIAc6AAYgACAGKAIENgIACyAQIQULIAZBEGokACAFC8ENAQt/IwBB8ABrIgUkAEFsIQkCQCADQQpJDQAgAi8AACEKIAIvAAIhDCACLwAEIQYgBUEIaiAEEA4CQCADIAYgCiAMampBBmoiDUkNACAFLQAKIQcgBUHYAGogAkEGaiICIAoQBiIJEAMNASAFQUBrIAIgCmoiAiAMEAYiCRADDQEgBUEoaiACIAxqIgIgBhAGIgkQAw0BIAVBEGogAiAGaiADIA1rEAYiCRADDQEgACABaiIOQX1qIQ8gBEEEaiEGQQEhCSAAIAFBA2pBAnYiAmoiCiACaiIMIAJqIg0hAyAMIQQgCiECA0AgCSADIA9JcQRAIAYgBUHYAGogBxACQQF0aiIILQAAIQsgBUHYAGogCC0AARABIAAgCzoAACAGIAVBQGsgBxACQQF0aiIILQAAIQsgBUFAayAILQABEAEgAiALOgAAIAYgBUEoaiAHEAJBAXRqIggtAAAhCyAFQShqIAgtAAEQASAEIAs6AAAgBiAFQRBqIAcQAkEBdGoiCC0AACELIAVBEGogCC0AARABIAMgCzoAACAGIAVB2ABqIAcQAkEBdGoiCC0AACELIAVB2ABqIAgtAAEQASAAIAs6AAEgBiAFQUBrIAcQAkEBdGoiCC0AACELIAVBQGsgCC0AARABIAIgCzoAASAGIAVBKGogBxACQQF0aiIILQAAIQsgBUEoaiAILQABEAEgBCALOgABIAYgBUEQaiAHEAJBAXRqIggtAAAhCyAFQRBqIAgtAAEQASADIAs6AAEgA0ECaiEDIARBAmohBCACQQJqIQIgAEECaiEAIAkgBUHYAGoQDUVxIAVBQGsQDUVxIAVBKGoQDUVxIAVBEGoQDUVxIQkMAQsLIAQgDUsgAiAMS3INAEFsIQkgACAKSw0BIApBfWohCQNAIAVB2ABqEAQgACAJT3JFBEAgBiAFQdgAaiAHEAJBAXRqIggtAAAhCyAFQdgAaiAILQABEAEgACALOgAAIAYgBUHYAGogBxACQQF0aiIILQAAIQsgBUHYAGogCC0AARABIAAgCzoAASAAQQJqIQAMAQsLA0AgBUHYAGoQBCAAIApPckUEQCAGIAVB2ABqIAcQAkEBdGoiCS0AACEIIAVB2ABqIAktAAEQASAAIAg6AAAgAEEBaiEADAELCwNAIAAgCkkEQCAGIAVB2ABqIAcQAkEBdGoiCS0AACEIIAVB2ABqIAktAAEQASAAIAg6AAAgAEEBaiEADAELCyAMQX1qIQADQCAFQUBrEAQgAiAAT3JFBEAgBiAFQUBrIAcQAkEBdGoiCi0AACEJIAVBQGsgCi0AARABIAIgCToAACAGIAVBQGsgBxACQQF0aiIKLQAAIQkgBUFAayAKLQABEAEgAiAJOgABIAJBAmohAgwBCwsDQCAFQUBrEAQgAiAMT3JFBEAgBiAFQUBrIAcQAkEBdGoiAC0AACEKIAVBQGsgAC0AARABIAIgCjoAACACQQFqIQIMAQsLA0AgAiAMSQRAIAYgBUFAayAHEAJBAXRqIgAtAAAhCiAFQUBrIAAtAAEQASACIAo6AAAgAkEBaiECDAELCyANQX1qIQADQCAFQShqEAQgBCAAT3JFBEAgBiAFQShqIAcQAkEBdGoiAi0AACEKIAVBKGogAi0AARABIAQgCjoAACAGIAVBKGogBxACQQF0aiICLQAAIQogBUEoaiACLQABEAEgBCAKOgABIARBAmohBAwBCwsDQCAFQShqEAQgBCANT3JFBEAgBiAFQShqIAcQAkEBdGoiAC0AACECIAVBKGogAC0AARABIAQgAjoAACAEQQFqIQQMAQsLA0AgBCANSQRAIAYgBUEoaiAHEAJBAXRqIgAtAAAhAiAFQShqIAAtAAEQASAEIAI6AAAgBEEBaiEEDAELCwNAIAVBEGoQBCADIA9PckUEQCAGIAVBEGogBxACQQF0aiIALQAAIQIgBUEQaiAALQABEAEgAyACOgAAIAYgBUEQaiAHEAJBAXRqIgAtAAAhAiAFQRBqIAAtAAEQASADIAI6AAEgA0ECaiEDDAELCwNAIAVBEGoQBCADIA5PckUEQCAGIAVBEGogBxACQQF0aiIALQAAIQIgBUEQaiAALQABEAEgAyACOgAAIANBAWohAwwBCwsDQCADIA5JBEAgBiAFQRBqIAcQAkEBdGoiAC0AACECIAVBEGogAC0AARABIAMgAjoAACADQQFqIQMMAQsLIAFBbCAFQdgAahAKIAVBQGsQCnEgBUEoahAKcSAFQRBqEApxGyEJDAELQWwhCQsgBUHwAGokACAJC8oCAQR/IwBBIGsiBSQAIAUgBBAOIAUtAAIhByAFQQhqIAIgAxAGIgIQA0UEQCAEQQRqIQIgACABaiIDQX1qIQQDQCAFQQhqEAQgACAET3JFBEAgAiAFQQhqIAcQAkEBdGoiBi0AACEIIAVBCGogBi0AARABIAAgCDoAACACIAVBCGogBxACQQF0aiIGLQAAIQggBUEIaiAGLQABEAEgACAIOgABIABBAmohAAwBCwsDQCAFQQhqEAQgACADT3JFBEAgAiAFQQhqIAcQAkEBdGoiBC0AACEGIAVBCGogBC0AARABIAAgBjoAACAAQQFqIQAMAQsLA0AgACADT0UEQCACIAVBCGogBxACQQF0aiIELQAAIQYgBUEIaiAELQABEAEgACAGOgAAIABBAWohAAwBCwsgAUFsIAVBCGoQChshAgsgBUEgaiQAIAILtgMBCX8jAEEQayIGJAAgBkEANgIMIAZBADYCCEFUIQQCQAJAIANBQGsiDCADIAZBCGogBkEMaiABIAIQMSICEAMNACAGQQRqIAAQDiAGKAIMIgcgBi0ABEEBaksNASAAQQRqIQogBkEAOgAFIAYgBzoABiAAIAYoAgQ2AgAgB0EBaiEJQQEhBANAIAQgCUkEQCADIARBAnRqIgEoAgAhACABIAU2AgAgACAEQX9qdCAFaiEFIARBAWohBAwBCwsgB0EBaiEHQQAhBSAGKAIIIQkDQCAFIAlGDQEgAyAFIAxqLQAAIgRBAnRqIgBBASAEdEEBdSILIAAoAgAiAWoiADYCACAHIARrIQhBACEEAkAgC0EDTQRAA0AgBCALRg0CIAogASAEakEBdGoiACAIOgABIAAgBToAACAEQQFqIQQMAAALAAsDQCABIABPDQEgCiABQQF0aiIEIAg6AAEgBCAFOgAAIAQgCDoAAyAEIAU6AAIgBCAIOgAFIAQgBToABCAEIAg6AAcgBCAFOgAGIAFBBGohAQwAAAsACyAFQQFqIQUMAAALAAsgAiEECyAGQRBqJAAgBAutAQECfwJAQYQgKAIAIABHIAAoAgBBAXYiAyABa0F4aiICQXhxQQhHcgR/IAIFIAMQJ0UNASACQQhqC0EQSQ0AIAAgACgCACICQQFxIAAgAWpBD2pBeHEiASAAa0EBdHI2AgAgASAANgIEIAEgASgCAEEBcSAAIAJBAXZqIAFrIgJBAXRyNgIAQYQgIAEgAkH/////B3FqQQRqQYQgKAIAIABGGyABNgIAIAEQJQsLygIBBX8CQAJAAkAgAEEIIABBCEsbZ0EfcyAAaUEBR2oiAUEESSAAIAF2cg0AIAFBAnRB/B5qKAIAIgJFDQADQCACQXhqIgMoAgBBAXZBeGoiBSAATwRAIAIgBUEIIAVBCEsbZ0Efc0ECdEGAH2oiASgCAEYEQCABIAIoAgQ2AgALDAMLIARBHksNASAEQQFqIQQgAigCBCICDQALC0EAIQMgAUEgTw0BA0AgAUECdEGAH2ooAgAiAkUEQCABQR5LIQIgAUEBaiEBIAJFDQEMAwsLIAIgAkF4aiIDKAIAQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgEoAgBGBEAgASACKAIENgIACwsgAigCACIBBEAgASACKAIENgIECyACKAIEIgEEQCABIAIoAgA2AgALIAMgAygCAEEBcjYCACADIAAQNwsgAwvhCwINfwV+IwBB8ABrIgckACAHIAAoAvDhASIINgJcIAEgAmohDSAIIAAoAoDiAWohDwJAAkAgBUUEQCABIQQMAQsgACgCxOABIRAgACgCwOABIREgACgCvOABIQ4gAEEBNgKM4QFBACEIA0AgCEEDRwRAIAcgCEECdCICaiAAIAJqQazQAWooAgA2AkQgCEEBaiEIDAELC0FsIQwgB0EYaiADIAQQBhADDQEgB0EsaiAHQRhqIAAoAgAQEyAHQTRqIAdBGGogACgCCBATIAdBPGogB0EYaiAAKAIEEBMgDUFgaiESIAEhBEEAIQwDQCAHKAIwIAcoAixBA3RqKQIAIhRCEIinQf8BcSEIIAcoAkAgBygCPEEDdGopAgAiFUIQiKdB/wFxIQsgBygCOCAHKAI0QQN0aikCACIWQiCIpyEJIBVCIIghFyAUQiCIpyECAkAgFkIQiKdB/wFxIgNBAk8EQAJAIAZFIANBGUlyRQRAIAkgB0EYaiADQSAgBygCHGsiCiAKIANLGyIKEAUgAyAKayIDdGohCSAHQRhqEAQaIANFDQEgB0EYaiADEAUgCWohCQwBCyAHQRhqIAMQBSAJaiEJIAdBGGoQBBoLIAcpAkQhGCAHIAk2AkQgByAYNwNIDAELAkAgA0UEQCACBEAgBygCRCEJDAMLIAcoAkghCQwBCwJAAkAgB0EYakEBEAUgCSACRWpqIgNBA0YEQCAHKAJEQX9qIgMgA0VqIQkMAQsgA0ECdCAHaigCRCIJIAlFaiEJIANBAUYNAQsgByAHKAJINgJMCwsgByAHKAJENgJIIAcgCTYCRAsgF6chAyALBEAgB0EYaiALEAUgA2ohAwsgCCALakEUTwRAIAdBGGoQBBoLIAgEQCAHQRhqIAgQBSACaiECCyAHQRhqEAQaIAcgB0EYaiAUQhiIp0H/AXEQCCAUp0H//wNxajYCLCAHIAdBGGogFUIYiKdB/wFxEAggFadB//8DcWo2AjwgB0EYahAEGiAHIAdBGGogFkIYiKdB/wFxEAggFqdB//8DcWo2AjQgByACNgJgIAcoAlwhCiAHIAk2AmggByADNgJkAkACQAJAIAQgAiADaiILaiASSw0AIAIgCmoiEyAPSw0AIA0gBGsgC0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEEdCAAbiECCyAAQQh2IgEgAkEYbCIAQYwIaigCAGwgAEGICGooAgBqIgJBA3YgAmogAEGACGooAgAgAEGECGooAgAgAWxqSQs3ACAAIAMgBCAFQYAQEDMiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQMgVBuH8LC78DAQN/IwBBIGsiBSQAIAVBCGogAiADEAYiAhADRQRAIAAgAWoiB0F9aiEGIAUgBBAOIARBBGohAiAFLQACIQMDQEEAIAAgBkkgBUEIahAEGwRAIAAgAiAFQQhqIAMQAkECdGoiBC8BADsAACAFQQhqIAQtAAIQASAAIAQtAANqIgQgAiAFQQhqIAMQAkECdGoiAC8BADsAACAFQQhqIAAtAAIQASAEIAAtAANqIQAMAQUgB0F+aiEEA0AgBUEIahAEIAAgBEtyRQRAIAAgAiAFQQhqIAMQAkECdGoiBi8BADsAACAFQQhqIAYtAAIQASAAIAYtAANqIQAMAQsLA0AgACAES0UEQCAAIAIgBUEIaiADEAJBAnRqIgYvAQA7AAAgBUEIaiAGLQACEAEgACAGLQADaiEADAELCwJAIAAgB08NACAAIAIgBUEIaiADEAIiA0ECdGoiAC0AADoAACAALQADQQFGBEAgBUEIaiAALQACEAEMAQsgBSgCDEEfSw0AIAVBCGogAiADQQJ0ai0AAhABIAUoAgxBIUkNACAFQSA2AgwLIAFBbCAFQQhqEAobIQILCwsgBUEgaiQAIAILkgIBBH8jAEFAaiIJJAAgCSADQTQQCyEDAkAgBEECSA0AIAMgBEECdGooAgAhCSADQTxqIAgQIyADQQE6AD8gAyACOgA+QQAhBCADKAI8IQoDQCAEIAlGDQEgACAEQQJ0aiAKNgEAIARBAWohBAwAAAsAC0EAIQkDQCAGIAlGRQRAIAMgBSAJQQF0aiIKLQABIgtBAnRqIgwoAgAhBCADQTxqIAotAABBCHQgCGpB//8DcRAjIANBAjoAPyADIAcgC2siCiACajoAPiAEQQEgASAKa3RqIQogAygCPCELA0AgACAEQQJ0aiALNgEAIARBAWoiBCAKSQ0ACyAMIAo2AgAgCUEBaiEJDAELCyADQUBrJAALowIBCX8jAEHQAGsiCSQAIAlBEGogBUE0EAsaIAcgBmshDyAHIAFrIRADQAJAIAMgCkcEQEEBIAEgByACIApBAXRqIgYtAAEiDGsiCGsiC3QhDSAGLQAAIQ4gCUEQaiAMQQJ0aiIMKAIAIQYgCyAPTwRAIAAgBkECdGogCyAIIAUgCEE0bGogCCAQaiIIQQEgCEEBShsiCCACIAQgCEECdGooAgAiCEEBdGogAyAIayAHIA4QYyAGIA1qIQgMAgsgCUEMaiAOECMgCUEBOgAPIAkgCDoADiAGIA1qIQggCSgCDCELA0AgBiAITw0CIAAgBkECdGogCzYBACAGQQFqIQYMAAALAAsgCUHQAGokAA8LIAwgCDYCACAKQQFqIQoMAAALAAs0ACAAIAMgBCAFEDYiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQNAVBuH8LCyMAIAA/AEEQdGtB//8DakEQdkAAQX9GBEBBAA8LQQAQAEEBCzsBAX8gAgRAA0AgACABIAJBgCAgAkGAIEkbIgMQCyEAIAFBgCBqIQEgAEGAIGohACACIANrIgINAAsLCwYAIAAQAwsLqBUJAEGICAsNAQAAAAEAAAACAAAAAgBBoAgLswYBAAAAAQAAAAIAAAACAAAAJgAAAIIAAAAhBQAASgAAAGcIAAAmAAAAwAEAAIAAAABJBQAASgAAAL4IAAApAAAALAIAAIAAAABJBQAASgAAAL4IAAAvAAAAygIAAIAAAACKBQAASgAAAIQJAAA1AAAAcwMAAIAAAACdBQAASgAAAKAJAAA9AAAAgQMAAIAAAADrBQAASwAAAD4KAABEAAAAngMAAIAAAABNBgAASwAAAKoKAABLAAAAswMAAIAAAADBBgAATQAAAB8NAABNAAAAUwQAAIAAAAAjCAAAUQAAAKYPAABUAAAAmQQAAIAAAABLCQAAVwAAALESAABYAAAA2gQAAIAAAABvCQAAXQAAACMUAABUAAAARQUAAIAAAABUCgAAagAAAIwUAABqAAAArwUAAIAAAAB2CQAAfAAAAE4QAAB8AAAA0gIAAIAAAABjBwAAkQAAAJAHAACSAAAAAAAAAAEAAAABAAAABQAAAA0AAAAdAAAAPQAAAH0AAAD9AAAA/QEAAP0DAAD9BwAA/Q8AAP0fAAD9PwAA/X8AAP3/AAD9/wEA/f8DAP3/BwD9/w8A/f8fAP3/PwD9/38A/f//AP3//wH9//8D/f//B/3//w/9//8f/f//P/3//38AAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACUAAAAnAAAAKQAAACsAAAAvAAAAMwAAADsAAABDAAAAUwAAAGMAAACDAAAAAwEAAAMCAAADBAAAAwgAAAMQAAADIAAAA0AAAAOAAAADAAEAQeAPC1EBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAQcQQC4sBAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABIAAAAUAAAAFgAAABgAAAAcAAAAIAAAACgAAAAwAAAAQAAAAIAAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQBBkBIL5gQBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAAAEAAAAEAAAACAAAAAAAAAABAAEBBgAAAAAAAAQAAAAAEAAABAAAAAAgAAAFAQAAAAAAAAUDAAAAAAAABQQAAAAAAAAFBgAAAAAAAAUHAAAAAAAABQkAAAAAAAAFCgAAAAAAAAUMAAAAAAAABg4AAAAAAAEFEAAAAAAAAQUUAAAAAAABBRYAAAAAAAIFHAAAAAAAAwUgAAAAAAAEBTAAAAAgAAYFQAAAAAAABwWAAAAAAAAIBgABAAAAAAoGAAQAAAAADAYAEAAAIAAABAAAAAAAAAAEAQAAAAAAAAUCAAAAIAAABQQAAAAAAAAFBQAAACAAAAUHAAAAAAAABQgAAAAgAAAFCgAAAAAAAAULAAAAAAAABg0AAAAgAAEFEAAAAAAAAQUSAAAAIAABBRYAAAAAAAIFGAAAACAAAwUgAAAAAAADBSgAAAAAAAYEQAAAABAABgRAAAAAIAAHBYAAAAAAAAkGAAIAAAAACwYACAAAMAAABAAAAAAQAAAEAQAAACAAAAUCAAAAIAAABQMAAAAgAAAFBQAAACAAAAUGAAAAIAAABQgAAAAgAAAFCQAAACAAAAULAAAAIAAABQwAAAAAAAAGDwAAACAAAQUSAAAAIAABBRQAAAAgAAIFGAAAACAAAgUcAAAAIAADBSgAAAAgAAQFMAAAAAAAEAYAAAEAAAAPBgCAAAAAAA4GAEAAAAAADQYAIABBgBcLhwIBAAEBBQAAAAAAAAUAAAAAAAAGBD0AAAAAAAkF/QEAAAAADwX9fwAAAAAVBf3/HwAAAAMFBQAAAAAABwR9AAAAAAAMBf0PAAAAABIF/f8DAAAAFwX9/38AAAAFBR0AAAAAAAgE/QAAAAAADgX9PwAAAAAUBf3/DwAAAAIFAQAAABAABwR9AAAAAAALBf0HAAAAABEF/f8BAAAAFgX9/z8AAAAEBQ0AAAAQAAgE/QAAAAAADQX9HwAAAAATBf3/BwAAAAEFAQAAABAABgQ9AAAAAAAKBf0DAAAAABAF/f8AAAAAHAX9//8PAAAbBf3//wcAABoF/f//AwAAGQX9//8BAAAYBf3//wBBkBkLhgQBAAEBBgAAAAAAAAYDAAAAAAAABAQAAAAgAAAFBQAAAAAAAAUGAAAAAAAABQgAAAAAAAAFCQAAAAAAAAULAAAAAAAABg0AAAAAAAAGEAAAAAAAAAYTAAAAAAAABhYAAAAAAAAGGQAAAAAAAAYcAAAAAAAABh8AAAAAAAAGIgAAAAAAAQYlAAAAAAABBikAAAAAAAIGLwAAAAAAAwY7AAAAAAAEBlMAAAAAAAcGgwAAAAAACQYDAgAAEAAABAQAAAAAAAAEBQAAACAAAAUGAAAAAAAABQcAAAAgAAAFCQAAAAAAAAUKAAAAAAAABgwAAAAAAAAGDwAAAAAAAAYSAAAAAAAABhUAAAAAAAAGGAAAAAAAAAYbAAAAAAAABh4AAAAAAAAGIQAAAAAAAQYjAAAAAAABBicAAAAAAAIGKwAAAAAAAwYzAAAAAAAEBkMAAAAAAAUGYwAAAAAACAYDAQAAIAAABAQAAAAwAAAEBAAAABAAAAQFAAAAIAAABQcAAAAgAAAFCAAAACAAAAUKAAAAIAAABQsAAAAAAAAGDgAAAAAAAAYRAAAAAAAABhQAAAAAAAAGFwAAAAAAAAYaAAAAAAAABh0AAAAAAAAGIAAAAAAAEAYDAAEAAAAPBgOAAAAAAA4GA0AAAAAADQYDIAAAAAAMBgMQAAAAAAsGAwgAAAAACgYDBABBpB0L2QEBAAAAAwAAAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8BAAD/AwAA/wcAAP8PAAD/HwAA/z8AAP9/AAD//wAA//8BAP//AwD//wcA//8PAP//HwD//z8A//9/AP///wD///8B////A////wf///8P////H////z////9/AAAAAAEAAAACAAAABAAAAAAAAAACAAAABAAAAAgAAAAAAAAAAQAAAAIAAAABAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAcAAAAIAAAACQAAAAoAAAALAEGgIAsDwBBQ",He=new WeakMap;let qe,Oe=0;class U extends d.Loader{constructor(e){super(e),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new Zt,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER<"u"&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(e){return this.transcoderPath=e,this}setWorkerLimit(e){return this.workerPool.setWorkerLimit(e),this}async detectSupportAsync(e){return this.workerConfig={astcSupported:await e.hasFeatureAsync("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:await e.hasFeatureAsync("texture-compression-etc1"),etc2Supported:await e.hasFeatureAsync("texture-compression-etc2"),dxtSupported:await e.hasFeatureAsync("texture-compression-bc"),bptcSupported:await e.hasFeatureAsync("texture-compression-bptc"),pvrtcSupported:await e.hasFeatureAsync("texture-compression-pvrtc")},this}detectSupport(e){return e.isWebGPURenderer===!0?this.workerConfig={astcSupported:e.hasFeature("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:e.hasFeature("texture-compression-etc1"),etc2Supported:e.hasFeature("texture-compression-etc2"),dxtSupported:e.hasFeature("texture-compression-bc"),bptcSupported:e.hasFeature("texture-compression-bptc"),pvrtcSupported:e.hasFeature("texture-compression-pvrtc")}:this.workerConfig={astcSupported:e.extensions.has("WEBGL_compressed_texture_astc"),astcHDRSupported:e.extensions.has("WEBGL_compressed_texture_astc")&&e.extensions.get("WEBGL_compressed_texture_astc").getSupportedProfiles().includes("hdr"),etc1Supported:e.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:e.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:e.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:e.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:e.extensions.has("WEBGL_compressed_texture_pvrtc")||e.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},this}init(){if(!this.transcoderPending){const e=new d.FileLoader(this.manager);e.setPath(this.transcoderPath),e.setWithCredentials(this.withCredentials);const a=e.loadAsync("basis_transcoder.js"),t=new d.FileLoader(this.manager);t.setPath(this.transcoderPath),t.setResponseType("arraybuffer"),t.setWithCredentials(this.withCredentials);const A=t.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([a,A]).then(([i,s])=>{const n=U.BasisWorker.toString(),c=["/* constants */","let _EngineFormat = "+JSON.stringify(U.EngineFormat),"let _EngineType = "+JSON.stringify(U.EngineType),"let _TranscoderFormat = "+JSON.stringify(U.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(U.BasisFormat),"/* basis_transcoder.js */",i,"/* worker */",n.substring(n.indexOf("{")+1,n.lastIndexOf("}"))].join(`
20
+ `);this.workerSourceURL=URL.createObjectURL(new Blob([c])),this.transcoderBinary=s,this.workerPool.setWorkerCreator(()=>{const o=new Worker(this.workerSourceURL),b=this.transcoderBinary.slice(0);return o.postMessage({type:"init",config:this.workerConfig,transcoderBinary:b},[b]),o})}),Oe>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),Oe++}return this.transcoderPending}load(e,a,t,A){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const i=new d.FileLoader(this.manager);i.setResponseType("arraybuffer"),i.setWithCredentials(this.withCredentials),i.load(e,s=>{this.parse(s,a,A)},t,A)}parse(e,a,t){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(He.has(e))return He.get(e).promise.then(a).catch(t);this._createTexture(e).then(A=>a?a(A):null).catch(t)}_createTextureFrom(e,a){const{type:t,error:A,data:{faces:i,width:s,height:n,format:c,type:o,dfdFlags:b}}=e;if(t==="error")return Promise.reject(A);let l;if(a.faceCount===6)l=new d.CompressedCubeTexture(i,c,o);else{const h=i[0].mipmaps;l=a.layerCount>1?new d.CompressedArrayTexture(h,s,n,a.layerCount,c,o):new d.CompressedTexture(h,s,n,c,o)}return l.minFilter=i[0].mipmaps.length===1?d.LinearFilter:d.LinearMipmapLinearFilter,l.magFilter=d.LinearFilter,l.generateMipmaps=!1,l.needsUpdate=!0,l.colorSpace=pa(a),l.premultiplyAlpha=!!(1&b),l}async _createTexture(e,a={}){const t=function(n){const c=new Uint8Array(n.buffer,n.byteOffset,L.length);if(c[0]!==L[0]||c[1]!==L[1]||c[2]!==L[2]||c[3]!==L[3]||c[4]!==L[4]||c[5]!==L[5]||c[6]!==L[6]||c[7]!==L[7]||c[8]!==L[8]||c[9]!==L[9]||c[10]!==L[10]||c[11]!==L[11])throw new Error("Missing KTX 2.0 identifier.");const o=new $t,b=17*Uint32Array.BYTES_PER_ELEMENT,l=new Ce(n,L.length,b,!0);o.vkFormat=l._nextUint32(),o.typeSize=l._nextUint32(),o.pixelWidth=l._nextUint32(),o.pixelHeight=l._nextUint32(),o.pixelDepth=l._nextUint32(),o.layerCount=l._nextUint32(),o.faceCount=l._nextUint32();const h=l._nextUint32();o.supercompressionScheme=l._nextUint32();const f=l._nextUint32(),g=l._nextUint32(),u=l._nextUint32(),I=l._nextUint32(),p=l._nextUint64(),B=l._nextUint64(),m=new Ce(n,L.length+b,3*h*8,!0);for(let R=0;R<h;R++)o.levels.push({levelData:new Uint8Array(n.buffer,n.byteOffset+m._nextUint64(),m._nextUint64()),uncompressedByteLength:m._nextUint64()});const C=new Ce(n,f,g,!0),w={vendorId:C._skip(4)._nextUint16(),descriptorType:C._nextUint16(),versionNumber:C._nextUint16(),descriptorBlockSize:C._nextUint16(),colorModel:C._nextUint8(),colorPrimaries:C._nextUint8(),transferFunction:C._nextUint8(),flags:C._nextUint8(),texelBlockDimension:[C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8()],bytesPlane:[C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8()],samples:[]},k=(w.descriptorBlockSize/4-6)/4;for(let R=0;R<k;R++){const T={bitOffset:C._nextUint16(),bitLength:C._nextUint8(),channelType:C._nextUint8(),samplePosition:[C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&T.channelType?(T.sampleLower=C._nextInt32(),T.sampleUpper=C._nextInt32()):(T.sampleLower=C._nextUint32(),T.sampleUpper=C._nextUint32()),w.samples[R]=T}o.dataFormatDescriptor.length=0,o.dataFormatDescriptor.push(w);const x=new Ce(n,u,I,!0);for(;x._offset<I;){const R=x._nextUint32(),T=x._scan(R),_=ua(T);if(o.keyValue[_]=x._nextUint8Array(R-T.byteLength-1),_.match(/^ktx/i)){const J=ua(o.keyValue[_]);o.keyValue[_]=J.substring(0,J.lastIndexOf("\0"))}x._skip(R%4?4-R%4:0)}if(B<=0)return o;const E=new Ce(n,p,B,!0),y=E._nextUint16(),D=E._nextUint16(),j=E._nextUint32(),F=E._nextUint32(),N=E._nextUint32(),Se=E._nextUint32(),ue=[];for(let R=0;R<h;R++)ue.push({imageFlags:E._nextUint32(),rgbSliceByteOffset:E._nextUint32(),rgbSliceByteLength:E._nextUint32(),alphaSliceByteOffset:E._nextUint32(),alphaSliceByteLength:E._nextUint32()});const ye=p+E._offset,Ie=ye+j,pe=Ie+F,Be=pe+N,we=new Uint8Array(n.buffer,n.byteOffset+ye,j),xe=new Uint8Array(n.buffer,n.byteOffset+Ie,F),O=new Uint8Array(n.buffer,n.byteOffset+pe,N),ce=new Uint8Array(n.buffer,n.byteOffset+Be,Se);return o.globalData={endpointCount:y,selectorCount:D,imageDescs:ue,endpointsData:we,selectorsData:xe,tablesData:O,extendedData:ce},o}(new Uint8Array(e)),A=t.vkFormat===Aa&&t.dataFormatDescriptor[0].colorModel===167;if(!(t.vkFormat===0||A&&!this.workerConfig.astcHDRSupported))return async function(n){const{vkFormat:c}=n;if(Je[c]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");let o;n.supercompressionScheme===2&&(qe||(qe=new Promise(async h=>{const f=new eA;await f.init(),h(f)})),o=await qe);const b=[];for(let h=0;h<n.levels.length;h++){const f=Math.max(1,n.pixelWidth>>h),g=Math.max(1,n.pixelHeight>>h),u=n.pixelDepth?Math.max(1,n.pixelDepth>>h):0,I=n.levels[h];let p,B;if(n.supercompressionScheme===0)p=I.levelData;else{if(n.supercompressionScheme!==2)throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");p=o.decode(I.levelData,I.uncompressedByteLength)}B=Ke[c]===d.FloatType?new Float32Array(p.buffer,p.byteOffset,p.byteLength/Float32Array.BYTES_PER_ELEMENT):Ke[c]===d.HalfFloatType?new Uint16Array(p.buffer,p.byteOffset,p.byteLength/Uint16Array.BYTES_PER_ELEMENT):p,b.push({data:B,width:f,height:g,depth:u})}let l;if(aA.has(Je[c]))l=n.pixelDepth===0?new d.DataTexture(b[0].data,n.pixelWidth,n.pixelHeight):new d.Data3DTexture(b[0].data,n.pixelWidth,n.pixelHeight,n.pixelDepth);else{if(n.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");l=new d.CompressedTexture(b,n.pixelWidth,n.pixelHeight),l.minFilter=b.length===1?d.LinearFilter:d.LinearMipmapLinearFilter,l.magFilter=d.LinearFilter}return l.mipmaps=b,l.type=Ke[c],l.format=Je[c],l.colorSpace=pa(n),l.needsUpdate=!0,Promise.resolve(l)}(t);const i=a,s=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:e,taskConfig:i},[e])).then(n=>this._createTextureFrom(n.data,t));return He.set(e,{promise:s}),s}dispose(){return this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),Oe--,this}}U.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2},U.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16,BC6H:22,RGB_HALF:24,RGBA_HALF:25},U.EngineFormat={RGBAFormat:d.RGBAFormat,RGBA_ASTC_4x4_Format:d.RGBA_ASTC_4x4_Format,RGB_BPTC_UNSIGNED_Format:d.RGB_BPTC_UNSIGNED_Format,RGBA_BPTC_Format:d.RGBA_BPTC_Format,RGBA_ETC2_EAC_Format:d.RGBA_ETC2_EAC_Format,RGBA_PVRTC_4BPPV1_Format:d.RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT5_Format:d.RGBA_S3TC_DXT5_Format,RGB_ETC1_Format:d.RGB_ETC1_Format,RGB_ETC2_Format:d.RGB_ETC2_Format,RGB_PVRTC_4BPPV1_Format:d.RGB_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT1_Format:d.RGBA_S3TC_DXT1_Format},U.EngineType={UnsignedByteType:d.UnsignedByteType,HalfFloatType:d.HalfFloatType,FloatType:d.FloatType},U.BasisWorker=function(){let r,e,a;const t=_EngineFormat,A=_EngineType,i=_TranscoderFormat,s=_BasisFormat;self.addEventListener("message",function(l){const h=l.data;switch(h.type){case"init":r=h.config,f=h.transcoderBinary,e=new Promise(g=>{a={wasmBinary:f,onRuntimeInitialized:g},BASIS(a)}).then(()=>{a.initializeBasis(),a.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")});break;case"transcode":e.then(()=>{try{const{faces:g,buffers:u,width:I,height:p,hasAlpha:B,format:m,type:C,dfdFlags:w}=function(k){const x=new a.KTX2File(new Uint8Array(k));function E(){x.close(),x.delete()}if(!x.isValid())throw E(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");let y;if(x.isUASTC())y=s.UASTC;else if(x.isETC1S())y=s.ETC1S;else{if(!x.isHDR())throw new Error("THREE.KTX2Loader: Unknown Basis encoding");y=s.UASTC_HDR}const D=x.getWidth(),j=x.getHeight(),F=x.getLayers()||1,N=x.getLevels(),Se=x.getFaces(),ue=x.getHasAlpha(),ye=x.getDFDFlags(),{transcoderFormat:Ie,engineFormat:pe,engineType:Be}=function(O,ce,R,T){const _=c[O];for(let J=0;J<_.length;J++){const H=_[J];if(!(H.if&&!r[H.if])&&H.basisFormat.includes(O)&&!(T&&H.transcoderFormat.length<2)&&!(H.needsPowerOfTwo&&(!o(ce)||!o(R))))return{transcoderFormat:H.transcoderFormat[T?1:0],engineFormat:H.engineFormat[T?1:0],engineType:H.engineType[0]}}throw new Error("THREE.KTX2Loader: Failed to identify transcoding target.")}(y,D,j,ue);if(!D||!j||!N)throw E(),new Error("THREE.KTX2Loader: Invalid texture");if(!x.startTranscoding())throw E(),new Error("THREE.KTX2Loader: .startTranscoding failed");const we=[],xe=[];for(let O=0;O<Se;O++){const ce=[];for(let R=0;R<N;R++){const T=[];let _,J;for(let de=0;de<F;de++){const be=x.getImageLevelInfo(R,de,O);O!==0||R!==0||de!==0||be.origWidth%4==0&&be.origHeight%4==0||console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),N>1?(_=be.origWidth,J=be.origHeight):(_=be.width,J=be.height);let le=new Uint8Array(x.getImageTranscodedSizeInBytes(R,de,0,Ie));const At=x.transcodeImage(le,R,de,O,Ie,0,-1,-1);if(Be===A.HalfFloatType&&(le=new Uint16Array(le.buffer,le.byteOffset,le.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!At)throw E(),new Error("THREE.KTX2Loader: .transcodeImage failed.");T.push(le)}const H=b(T);ce.push({data:H,width:_,height:J}),xe.push(H.buffer)}we.push({mipmaps:ce,width:D,height:j,format:pe,type:Be})}return E(),{faces:we,buffers:xe,width:D,height:j,hasAlpha:ue,dfdFlags:ye,format:pe,type:Be}}(h.buffer);self.postMessage({type:"transcode",id:h.id,data:{faces:g,width:I,height:p,hasAlpha:B,format:m,type:C,dfdFlags:w}},u)}catch(g){console.error(g),self.postMessage({type:"error",id:h.id,error:g.message})}})}var f});const n=[{if:"astcSupported",basisFormat:[s.UASTC],transcoderFormat:[i.ASTC_4x4,i.ASTC_4x4],engineFormat:[t.RGBA_ASTC_4x4_Format,t.RGBA_ASTC_4x4_Format],engineType:[A.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[i.BC7_M5,i.BC7_M5],engineFormat:[t.RGBA_BPTC_Format,t.RGBA_BPTC_Format],engineType:[A.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[i.BC1,i.BC3],engineFormat:[t.RGBA_S3TC_DXT1_Format,t.RGBA_S3TC_DXT5_Format],engineType:[A.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[i.ETC1,i.ETC2],engineFormat:[t.RGB_ETC2_Format,t.RGBA_ETC2_EAC_Format],engineType:[A.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[i.ETC1],engineFormat:[t.RGB_ETC1_Format],engineType:[A.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[i.PVRTC1_4_RGB,i.PVRTC1_4_RGBA],engineFormat:[t.RGB_PVRTC_4BPPV1_Format,t.RGBA_PVRTC_4BPPV1_Format],engineType:[A.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:"bptcSupported",basisFormat:[s.UASTC_HDR],transcoderFormat:[i.BC6H],engineFormat:[t.RGB_BPTC_UNSIGNED_Format],engineType:[A.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[s.ETC1S,s.UASTC],transcoderFormat:[i.RGBA32,i.RGBA32],engineFormat:[t.RGBAFormat,t.RGBAFormat],engineType:[A.UnsignedByteType,A.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[s.UASTC_HDR],transcoderFormat:[i.RGBA_HALF],engineFormat:[t.RGBAFormat],engineType:[A.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],c={[s.ETC1S]:n.filter(l=>l.basisFormat.includes(s.ETC1S)).sort((l,h)=>l.priorityUASTC-h.priorityUASTC),[s.UASTC]:n.filter(l=>l.basisFormat.includes(s.UASTC)).sort((l,h)=>l.priorityUASTC-h.priorityUASTC),[s.UASTC_HDR]:n.filter(l=>l.basisFormat.includes(s.UASTC_HDR)).sort((l,h)=>l.priorityHDR-h.priorityHDR)};function o(l){return l<=2||!(l&l-1)&&l!==0}function b(l){if(l.length===1)return l[0];let h=0;for(let u=0;u<l.length;u++)h+=l[u].byteLength;const f=new Uint8Array(h);let g=0;for(let u=0;u<l.length;u++){const I=l[u];f.set(I,g),g+=I.byteLength}return f}};const aA=new Set([d.RGBAFormat,d.RGFormat,d.RedFormat]),Je={[Wa]:d.RGBAFormat,[za]:d.RGBAFormat,[qa]:d.RGBAFormat,[Oa]:d.RGBAFormat,[Ya]:d.RGFormat,[Ka]:d.RGFormat,[_a]:d.RGFormat,[Ha]:d.RGFormat,[Va]:d.RedFormat,[Ja]:d.RedFormat,[Pa]:d.RedFormat,[Na]:d.RedFormat,[Aa]:d.RGBA_ASTC_4x4_Format,[Za]:d.RGBA_ASTC_6x6_Format,[Xa]:d.RGBA_ASTC_6x6_Format},Ke={[Wa]:d.FloatType,[za]:d.HalfFloatType,[qa]:d.UnsignedByteType,[Oa]:d.UnsignedByteType,[Ya]:d.FloatType,[Ka]:d.HalfFloatType,[_a]:d.UnsignedByteType,[Ha]:d.UnsignedByteType,[Va]:d.FloatType,[Ja]:d.HalfFloatType,[Pa]:d.UnsignedByteType,[Na]:d.UnsignedByteType,[Aa]:d.HalfFloatType,[Za]:d.UnsignedByteType,[Xa]:d.UnsignedByteType};function pa(r){const e=r.dataFormatDescriptor[0];return e.colorPrimaries===1?e.transferFunction===2?d.SRGBColorSpace:d.LinearSRGBColorSpace:e.colorPrimaries===10?e.transferFunction===2?"display-p3":"display-p3-linear":(e.colorPrimaries===0||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${e.colorPrimaries}"`),d.NoColorSpace)}async function Ba(r){const e=r.split("?")[0].split(".").pop(),a=await fetch(r);if(!a.ok)throw new Error(`Failed to fetch ${r}: ${a.statusText}`);if(e==="json"){const t=await a.json();return handleJSONSubtree(t,Ca(r))}if(e==="subtree")return async function(t,A){const i=new DataView(t),s=i.getBigUint64(8,!0),n=i.getBigUint64(16,!0),c=24,o=c+Number(s),b=o+(8-o%8)%8,l=b+Number(n),h=t.slice(c,o),f=new TextDecoder().decode(h).trim(),g=JSON.parse(f);if(!g.buffers)throw new Error("subtree has no buffers");const u=g.buffers.map(async p=>{if(p.uri){const B=new URL(p.uri,A).href,m=await fetch(B);if(!m.ok)throw new Error(`Failed to fetch binary file ${B}: ${m.statusText}`);return new Uint8Array(await m.arrayBuffer())}return new Uint8Array(t.slice(b,l))}),I=await Promise.all(u);return function(p,B){function m(E,y){if(!E)throw new Error("incomplete json subtree");if(E.constant){if(E.constant==0)return!1;if(E.constant==1)return!0}if(E.bitstream==null)throw new Error('json subtree "tileAvailability" does not specify a bitstream');if(!p.bufferViews||!p.bufferViews[E.bitstream])throw new Error('json subtree "bufferViews" does not specify a bitstream');const D=p.bufferViews[E.bitstream];return C(B[D.buffer],D.byteOffset,y)}function C(E,y,D){const j=D%8;return E[y+Math.floor(D/8)]>>j&!0}function w(E){let y=0;return y=E.z==null?ze(E.x,E.y,E.level):Ye(E.x,E.y,E.z,E.level),m(p.tileAvailability,y)}function k(E){let y=0;y=E.z==null?ze(E.x,E.y,E.level):Ye(E.x,E.y,E.z,E.level);const D=[];return p.contentAvailability.forEach(j=>{D.push(m(j,y))}),D}function x(E){let y=0;return y=E.z==null?ze(E.x,E.y):Ye(E.x,E.y,E.z),m(p.childSubtreeAvailability,y)}return{isTileAvailable:w,isContentAvailable:k,isChildSubtreeAvailable:x}}(g,I)}(await a.arrayBuffer(),Ca(r));throw new Error(`Unsupported file extension: ${e}`)}function Ca(r){const e=r.split("?")[0];return e.substring(0,e.lastIndexOf("/")+1)}function ma(r){return r=1431655765&((r=858993459&((r=252645135&((r=16711935&((r&=65535)^r<<8))^r<<4))^r<<2))^r<<1)}function ze(r,e,a){let t=0;return a&&(t=(Math.pow(4,a)-1)/3),t+(ma(r)|ma(e)<<1)}function Ve(r){return r=153391689&((r=51130563&((r=50393103&((r=4278190335&((r&=1023)^r<<16))^r<<8))^r<<4))^r<<2)}function Ye(r,e,a,t){let A=0;return t&&(A=(Math.pow(8,t)-1)/7),A+(Ve(r)|Ve(e)<<1|Ve(a)<<2)}const me=new Map;async function ia(r,e){if(!r.root||!r.root.implicitTiling)return r;if(!r.root.content&&!r.root.contents)throw new Error("implicit tiling requires a Template URI");let a=!0;r.root.implicitTiling.subdivisionScheme&&(a=r.root.implicitTiling.subdivisionScheme.toUpperCase()==="QUADTREE");let t="";r.root.implicitTiling.subtrees&&(r.root.implicitTiling.subtrees.uri?t=r.root.implicitTiling.subtrees.uri:r.root.implicitTiling.subtrees.url&&(t=r.root.implicitTiling.subtrees.url));let A=[];r.root.content?r.root.content.uri?A.push(r.root.content.uri):r.root.content.url&&A.push(r.root.content.url):r.root.contents&&r.root.contents.forEach(f=>{f.uri?A.push(f.uri):f.url&&A.push(f.url)});const i=function(f){const g=f.split("?")[0];return g.substring(0,g.lastIndexOf("/")+1)}(e);let s;a&&(s=t.replace("{level}",0).replace("{x}",0).replace("{y}",0)),a||(s=t.replace("{level}",0).replace("{x}",0).replace("{y}",0).replace("{z}",0));const n={level:0,x:0,y:0},c={level:0,x:0,y:0};a||(n.z=0,c.z=0),me.set(s,await Ba(i+s));const o=me.get(s),b=[];o.isContentAvailable(c)&&A.forEach(f=>{let g;a&&(g=f.replace("{level}",n.level).replace("{x}",n.x).replace("{y}",n.y)),a||(g=f.replace("{level}",n.level).replace("{x}",n.x).replace("{y}",n.y).replace("{z}",n.z)),b.push({uri:g})});const l={geometricError:r.root.geometricError,boundingVolume:r.root.boundingVolume,refine:r.root.refine,globalAddress:n,localAddress:c,subtree:o,contents:b,getChildren:async()=>h(l)};return{root:l};async function h(f){const g=[];if(f.localAddress.level==r.root.implicitTiling.availableLevels-1)return g;if((f.localAddress.level+1)%r.root.implicitTiling.subtreeLevels==0){const u=De(f.localAddress),I=De(f.globalAddress),p=Ea(a,r.root.boundingVolume,I);for(let B=0;B<u.length;B++){const m=u[B],C=I[B];f.subtree.isChildSubtreeAvailable(m)&&(a&&t.replace("{level}",C.level).replace("{x}",C.x).replace("{y}",C.y),a||t.replace("{level}",C.level).replace("{x}",C.x).replace("{y}",C.y).replace("{z}",C.z)),me.has(s)||me.set(s,await Ba(i+s));const w=me.get(s),k={level:0,x:0,y:0};a||(k.z=0);const x=[];w.isContentAvailable(k)&&A.forEach(y=>{let D;a&&(D=y.replace("{level}",C.level).replace("{x}",C.x).replace("{y}",C.y)),a||(D=y.replace("{level}",C.level).replace("{x}",C.x).replace("{y}",C.y).replace("{z}",C.z)),x.push({uri:D})});const E={geometricError:f.geometricError/2,boundingVolume:p[B],refine:r.root.refine,globalAddress:C,localAddress:k,subtree:w,contents:x,getChildren:async()=>h(E)};g.push(E)}}else{const u=De(f.localAddress),I=De(f.globalAddress),p=Ea(a,r.root.boundingVolume,I);for(let B=0;B<u.length;B++){const m=u[B],C=I[B];if(!f.subtree.isTileAvailable(m))continue;const w=[],k=f.subtree.isContentAvailable(m);for(let E=0;E<A.length;E++){if(!k[E])continue;const y=A[E];let D;a&&(D=y.replace("{level}",C.level).replace("{x}",C.x).replace("{y}",C.y)),a||(D=y.replace("{level}",C.level).replace("{x}",C.x).replace("{y}",C.y).replace("{z}",C.z)),w.push({uri:D})}const x={geometricError:f.geometricError/2,boundingVolume:p[B],refine:r.root.refine,globalAddress:C,localAddress:m,subtree:f.subtree,contents:w,getChildren:async()=>h(x)};g.push(x)}}return g.length>0?g:void 0}}function De(r){const{level:e,x:a,y:t,z:A}=r,i=e+1;let s=[];return s=A===void 0?[{level:i,x:2*a,y:2*t},{level:i,x:2*a+1,y:2*t},{level:i,x:2*a,y:2*t+1},{level:i,x:2*a+1,y:2*t+1}]:[{level:i,x:2*a,y:2*t,z:2*A},{level:i,x:2*a+1,y:2*t,z:2*A},{level:i,x:2*a,y:2*t+1,z:2*A},{level:i,x:2*a+1,y:2*t+1,z:2*A},{level:i,x:2*a,y:2*t,z:2*A+1},{level:i,x:2*a+1,y:2*t,z:2*A+1},{level:i,x:2*a,y:2*t+1,z:2*A+1},{level:i,x:2*a+1,y:2*t+1,z:2*A+1}],s}function Ea(r,e,a){const t=[];for(let A=0;A<a.length;A++)t.push(tA(r,e,a[A]));return t}function tA(r,e,a){if(e.region)return function(t,A,i){const[s,n,c,o,b,l]=A,h=(c-s)/2**i.level,f=(o-n)/2**i.level,g=t?0:(l-b)/2**i.level,u=s+h*i.x,I=n+f*i.y,p=u+h,B=I+f,m=t?b:b+g*i.z,C=t?l:m+g;return{region:[u,I,p,B,m,C]}}(r,e.region,a);if(e.box)return function(t,A,i){const s=A.slice(0,3),n=[A.slice(3,6),A.slice(6,9),A.slice(9,12)],c=1/Math.pow(2,i.level),o=[c,c,t?1:c],b=n.map((f,g)=>f.map(u=>u*o[g])),l=[s[0]-n[0][0]-n[1][0]-n[2][0],s[1]-n[0][1]-n[1][1]-n[2][1],s[2]-n[0][2]-n[1][2]-n[2][2]];return{box:[l[0]+(2*i.x+1)*(b[0][0]+b[1][0]+b[2][0]),l[1]+(2*i.y+1)*(b[0][1]+b[1][1]+b[2][1]),t?s[2]:l[2]+(2*i.z+1)*(b[0][2]+b[1][2]+b[2][2])].concat(...b)}}(r,e.box,a);throw new Error("Unsupported bounding volume type")}(function(){var r,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var a=WebAssembly.instantiate(function(o){for(var b=new Uint8Array(o.length),l=0;l<o.length;++l){var h=o.charCodeAt(l);b[l]=h>96?h-97:h>64?h-39:h+4}var f=0;for(l=0;l<o.length;++l)b[f++]=b[l]<60?e[b[l]]:64*(b[l]-60)+b[++l];return b.buffer.slice(0,f)}("b9H79TebbbeJq9Geueu9Geub9Gbb9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9GiuuueuiKLdilevlevlooroowwvwbDDbelve9Weiiviebeoweuec:W;kekr;RiOo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbe8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbdE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UbiY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbl8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbv8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UboE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbra9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbwL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbDK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbqL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbkE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbPa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9Wbsa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbzK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbHl79IV9RbODwebcekdQXq:g9sLdbk;3keYu8Jjjjjbcjo9Rgv8Kjjjjbcbhodnalcefae0mbabcbRb:S:kjjbc:GeV86bbavcjdfcbcjdzNjjjb8AdnaiTmbavcjdfadalz:tjjjb8Akabaefhrabcefhwavalfcbcbcjdal9RalcFe0EzNjjjb8Aavavcjdfalz:tjjjbhDcj;abal9UhodndndndndnalTmbaoc;WFbGgecjdaecjd6Ehqcbhkdninakai9pmiaDcjlfcbcjdzNjjjb8Aaqaiak9Rakaqfai6Egxcsfgecl4cifcd4hmadakal2fhPdndndndndnaec9WGgsTmbcbhzcehHaPhOawhAxekdnaxTmbcbhAcehHaPhCinaDaAfRbbhXaDcjlfheaChoaxhQinaeaoRbbgLaX9RgXcetaX;acr4786bbaoalfhoaecefheaLhXaQcufgQmbkaraw9Ram6miawcbamzNjjjbgeTmiaCcefhCaeamfhwaAcefgAal6hHaAal9hmbxvkkaraw9Ram6mvawcbamzNjjjb8AceheinawgXamfhwalaegoSmldnaraw9Ram6mbaocefheawcbamzNjjjb8AaXmekkaoal6hHxekindnaxTmbaDazfRbbhXaDcjlfheaOhoaxhQinaeaoRbbgLaX9RgXcetaX;acr4786bbaoalfhoaecefheaLhXaQcufgQmbkkaraA9Ram6mearaAcbamzNjjjbgKamfgw9RcK6mdcbhYaDcjlfhAinaDcjlfaYfh8AcwhCczhLcehQindndnaQce9hmbcuhoa8ARbbmecbhodninaogecsSmeaecefhoaAaefcefRbbTmbkkcucbaecs6EhoxekaQcetc;:FFFeGhocuaQtcu7cFeGhXcbheinaoaXaAaefRbb9nfhoaecefgecz9hmbkkaoaLaoaL6geEhLaQaCaeEhCaQcetgQcw6mbkdndndndnaCcufPdiebkaKaYco4fgeaeRbbcdciaCclSEaYci4coGtV86bbaCcw9hmeawa8A8Pbb83bbawcwfa8Acwf8Pbb83bbawczfhwxdkaKaYco4fgeaeRbbceaYci4coGtV86bbkdncwaC9TgEmbinawcb86bbawcefhwxbkkcuaCtcu7h8Acbh3aAh5ina5heaEhQcbhoinaeRbbgLa8AcFeGgXaLaX6EaoaCtVhoaecefheaQcufgQmbkawao86bba5aEfh5awcefhwa3aEfg3cz6mbkcbheindnaAaefRbbgoaX6mbawao86bbawcefhwkaecefgecz9hmbkkdnaYczfgYas9pmbaAczfhAaraw9RcL0mekkaYas6meawTmeaOcefhOazcefgzal6hHawhAazalSmixbkkcbhwaHceGTmexikcbhwaHceGmdkaDaPaxcufal2falz:tjjjb8AaxakfhkawmbkcbhoxokcbhoxvkaiTmekcbhoaraw9Ralcaalca0E6mialc8F9nmexdkcbhoaecufca6mdkawcbcaal9RgezNjjjbaefhwkawaDcjdfalz:tjjjbalfab9Rhokavcjof8Kjjjjbaok9heeuaecaaeca0Eabcj;abae9Uc;WFbGgdcjdadcjd6Egdfcufad9Uae2adcl4cifcd4adV2fcefkmbcbabBd:S:kjjbk;rse3u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd:C:kjjbgrc;GeV86bbalc;abfcFecjezNjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgoydbhLaocwfydbhKaoclfydbhYcbh8Adndninalc;abfavcsGcitfgoydlhEdndndnaoydbgoaL9hmbaEaYSmekdnaoaY9hmbaEaK9hmba8Acefh8AxekaoaK9hmeaEaL9hmea8Acdfh8Aka8Ac870mdaXcufhvada8AciGcx2goc:y1jjbfydbaCfcdtfydbhEadaocN1jjbfydbaCfcdtfydbhKadaoc:q1jjbfydbaCfcdtfydbhLcbhodnindnalavcsGcdtfydbaE9hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaEaOSgvaYce9iaYaH9oVgoGh3dndndndndncbcsavEaYaoEgvcs9hmbarce9imbaEaEaAaEcefaASgvEgAcefSmecmcsavEhvkasava8Acdtc;WeGV86bbavcs9hmeaEaA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbkaEhAxdkcPhvasa8AcdtcPV86bbaEhAkavTmbavaH9imekalaXcdtfaEBdbaXcefcsGhXkaOa3fhOalc;abfaQcitfgvaKBdlavaEBdbalc;abfaQcefcsGgvcitfgoaEBdlaoaLBdbavcefhoxikavcufhva8Aclfg8Ac;ab9hmbkkdnadceaKaOScetaYaOSEcx2gvc:q1jjbfydbaCfcdtfydbgLTadavcN1jjbfydbaCfcdtfydbg8AceSGadavc:y1jjbfydbaCfcdtfydbgYcdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhKxdkcuhKaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydbaY9hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaLaOSg8Efh3dndnaKcm0mbaKcefhKxekcbcsa8Aa3SgvEhKa3avfh3kdndnaEcm0mbaEcefhExekcbcsaYa3SgvEhEa3avfh3kc9:cua8EEh8FaEaKcltVhocbhvdndndninavcj1jjbfRbbaocFeGSmeavcefgvcz9hmbxdkka5aLaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeao86bbaecefhekdna8EmbaLaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaLhAkdnaKcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmbaYaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaYhAkalaXcdtfaLBdbaXcefcsGhvdndnaKPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfaYBdbavcefcsGhvkalc;abfaQcitfgoaLBdlaoa8ABdbalc;abfaQcefcsGcitfgoa8ABdlaoaYBdbalc;abfaQcdfcsGcitfgoaYBdlaoaLBdbaQcifhoavhXa3hOkascefhsaocsGhQaCcifgCai6mbkkcbhvaeaP0mbcbhvinaeavfavcj1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd:C:kjjbk:ydewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb:C:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkcbhvaoar0mbaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:dvli99dui99ludnaeTmbcuadcetcuftcu7:Yhvdndncuaicuftcu7:YgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhralcxfIdbhqdndnakJbbbb9GTmbaxhkxekJbbjZar:l:tgkak:maxJbbbb9GEhkJbbjZax:l:tgxax:marJbbbb9GEhrkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEavNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohmxekcjjjj94hmkdndnakJbbj:;akJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;akJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;klld99eud99eudnaeTmbdndncuaicuftcu7:YgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicdfciGcdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk:Hvdxue998Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6mearcearce0EhwaohDinaDc:CuBdbaDclfhDawcufgwmbkaeTmiadcl6mdarcearce0EhqarcdthkalhxcbhminaohDaxhwaqhPinaDaDydbgsawydbgzcL4cFeGc:cufcbazEgzasaz9kEBdbawclfhwaDclfhDaPcufgPmbkaxakfhxamcefgmae9hmbkkaeTmdxekaeTmekavcb9hadcl6gqVhHarcearce0Ehkarcdthrceai9Rhmcbhdindndndnavce9hmbaqmdc:CuhwalhDakhPinawaDydbgscL4cFeGc:cufcbasEgsawas9kEhwaDclfhDaPcufgPmbxdkkc:CuhwaHmbaohDalhPakhsinaDaPydbgzcL4cFeGgxc8Aaxc8A9kEc:cufcbazEBdbaPclfhPaDclfhDascufgsmbkkaqmbcbhDakhsinawhPdnavceSmbaoaDfydbhPkdndnalaDfIdbgOcjjj;8iamaPfgPcLt9R::NJbbbZJbbb:;aOJbbbb9GEMgO:lJbbb9p9DTmbaO:Ohzxekcjjjj94hzkabaDfazcFFFrGaPcKtVBdbaDclfhDascufgsmbkkabarfhbalarfhladcefgdae9hmbkkaocjdf8KjjjjbkFkdCui998Jjjjjbc:Gd9Rgv8Kjjjjbavc:4efcbc;KbzNjjjb8AcbhodnadTmbcbhoaiTmbdnabae9hmbavcuadcdtgoadcFFFFi0Ecbyd:K:kjjbHjjjjbbgeBd:4eavceBd:ydaeabaoz:tjjjb8Akavc:OefcwfcbBdbav9cb83i:Oeavc:Oefaeadaiavc:4efz:njjjbcuaicdtgraicFFFFi0Egwcbyd:K:kjjbHjjjjbbhoavc:4efavyd:ydgDcdtfaoBdbavaDcefgqBd:ydaoavyd:Oegkarz:tjjjbhxavc:4efaqcdtfadci9Ugmcbyd:K:kjjbHjjjjbbgoBdbavaDcdfgrBd:ydaocbamzNjjjbhPavc:4efarcdtfawcbyd:K:kjjbHjjjjbbgsBdbavaDcifgqBd:ydaxhoashrinaralIdbalaoydbgwcwawcw6Ecdtfc;ebfIdbMUdbaoclfhoarclfhraicufgimbkavc:4efaqcdtfcuamcdtadcFFFF970Ecbyd:K:kjjbHjjjjbbgqBdbavaDclfBd:yddnadci6mbamceamce0EhiaehoaqhrinarasaoydbcdtfIdbasaoclfydbcdtfIdbMasaocwfydbcdtfIdbMUdbaocxfhoarclfhraicufgimbkkavc;qbfhzavhoavyd:SehHavyd:WehOcbhwcbhrcbhAcehCinaohXcihQaearci2gLcdtfgocwfydbhdaoydbhDabaAcx2fgiclfaoclfydbgKBdbaiaDBdbaicwfadBdbaParfce86bbazadBdwazaKBdlazaDBdbaqarcdtfcbBdbdnawTmbcihQaXhiinazaQcdtfaiydbgoBdbaQaoaD9haoaK9hGaoad9hGfhQaiclfhiawcufgwmbkkaAcefhAaxaDcdtfgoaoydbcufBdbaxaKcdtfgoaoydbcufBdbaxadcdtfgoaoydbcufBdbcbhwinaOaHaeawaLfcdtfydbcdtgifydbcdtfgKhoakaifgDydbgdhidnadTmbdninaoydbarSmeaoclfhoaicufgiTmdxbkkaoadcdtaKfc98fydbBdbaDaDydbcufBdbkawcefgwci9hmbkdndndnaQTmbcuhrJbbbbhYcbhDavyd:SehKavyd:WehLindndnakazaDcdtfydbcdtgofydbgimbaDcefhDxekaDcs0hwasaofgdIdbh8AadalcbaDcefgDawEcdtfIdbalaxaofydbgwcwawcw6Ecdtfc;ebfIdbMgEUdbaEa8A:thEaicdthiaLaKaofydbcdtfhoinaqaoydbgwcdtfgdaEadIdbMg8AUdba8AaYaYa8A9DgdEhYawaradEhraoclfhoaic98fgimbkkaDaQ9hmbkarcu9hmekaCam9pmeindnaPaCfRbbmbaChrxdkamaCcefgC9hmbxdkkaQczaQcz6EhwazhoaXhzarcu9hmekkavyd:ydhokaocdtavc:4effc98fhrdninaoTmearydbcbyd:G:kjjbH:bjjjbbarc98fhraocufhoxbkkavc:Gdf8Kjjjjbk;UlevucuaicdtgvaicFFFFi0Egocbyd:K:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd:K:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd:K:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavzNjjjb8Aadci9UhwdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbawceawce0EhDabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic:01jjbz:mjjjbkQbabaeadaic:C:jjjbz:mjjjbk9DeeuabcFeaicdtzNjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk;:kivuo99lu8Jjjjjbcj;Hb9Rgl8Kjjjjbcbhvalc1;Gbfcbc;KbzNjjjb8AalcuadcdtadcFFFFi0Egocbyd:K:kjjbHjjjjbbgrBd19GalceBd;O9Galcwfcbyd:m:kjjbBdbalcb8Pd:e:kjjb83ibalc;W;Gbfcwfcbyd:y:kjjbBdbalcb8Pd:q:kjjb83i;W9Gaicd4hwdndnadmbJFFuFhDJFFuuhqJFFuuhkJFFuFhxJFFuuhmJFFuFhPxekawcdthsaehzincbhiinalaifgHazaifIdbgDaHIdbgxaxaD9EEUdbalc;W;GbfaifgHaDaHIdbgxaxaD9DEUdbaiclfgicx9hmbkazasfhzavcefgvad9hmbkalIdwhqalId;49GhDalIdlhkalId;09GhxalIdbhmalId;W9GhPkdndnadTmbJbbbbJbbjZaPam:tJbbbb:xgPaxak:tgxaxaP9DEgxaDaq:tgDaDax9DEgD:vaDJbbbb9BEhDawcdthsarhHadhzindndnaDaeIdbam:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcv2c;j:KM;jbGhvdndnaDaeclfIdbak:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcq2cM;j:KMeGavVhvdndnaDaecwfIdbaq:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaHavaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcC2c:KM;j:KdGVBdbaeasfheaHclfhHazcufgzmbkalcbcj;GbzNjjjbhiarhHadheinaiaHydbgzcFrGcx2fgvavydbcefBdbaiazcq4cFrGcx2fgvavydlcefBdlaiazcC4cFrGcx2fgzazydwcefBdwaHclfhHaecufgembxdkkalcbcj;GbzNjjjb8AkcbhHcbhzcbhecbhvinalaHfgiydbhsaiazBdbaicwfgwydbhOawavBdbaiclfgiydbhwaiaeBdbasazfhzaOavfhvawaefheaHcxfgHcj;Gb9hmbkcbhialaocbyd:K:kjjbHjjjjbbgzBd:m9GdnadTmbabhHinaHaiBdbaHclfhHadaicefgi9hmbkadTmbabhiadhHinalaraiydbgecdtfydbcFrGcx2fgvavydbgvcefBdbazavcdtfaeBdbaiclfhiaHcufgHmbkazhiadhHinalaraiydbgecdtfydbcq4cFrGcx2fgvavydlgvcefBdlabavcdtfaeBdbaiclfhiaHcufgHmbkabhiadhHinalaraiydbgecdtfydbcC4cFrGcx2fgvavydwgvcefBdwazavcdtfaeBdbaiclfhiaHcufgHmbkadTmbcbhiinabazydbcdtfaiBdbazclfhzadaicefgi9hmbkkclhidninaic98Smealc1;Gbfaifydbcbyd:G:kjjbH:bjjjbbaic98fhixbkkalcj;Hbf8Kjjjjbk9teiucbcbyd:O:kjjbgeabcifc98GfgbBd:O:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:O:kjjbgeabcrfc94GfgbBd:O:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:O:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:O:kjjbfgdBd:O:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk:6ddbcjwk:Cdb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:FFuuFFuuFFuuFFuFFFuFFFuFbc:Cqkzebbbebbbdbbb8WWbb"),{}).then(function(o){(r=o.instance).exports.__wasm_call_ctors(),r.exports.meshopt_encodeVertexVersion(0),r.exports.meshopt_encodeIndexVersion(1)});function t(o){if(!o)throw new Error("Assertion failed")}function A(o){return new Uint8Array(o.buffer,o.byteOffset,o.byteLength)}function i(o,b,l,h,f){var g=r.exports.sbrk,u=g(b),I=g(h*f),p=new Uint8Array(r.exports.memory.buffer);p.set(A(l),I);var B=o(u,b,I,h,f),m=new Uint8Array(B);return m.set(p.subarray(u,u+B)),g(u-g(0)),m}function s(o){for(var b=0,l=0;l<o.length;++l)var h=o[l];return b}function n(o,b){if(t(b==2||b==4),b==4)return new Uint32Array(o.buffer,o.byteOffset,o.byteLength/4);var l=new Uint16Array(o.buffer,o.byteOffset,o.byteLength/2);return new Uint32Array(l)}function c(o,b,l,h,f,g,u){var I=r.exports.sbrk,p=I(l*h),B=I(l*g),m=new Uint8Array(r.exports.memory.buffer);m.set(A(b),B),o(p,l,h,f,B,u);var C=new Uint8Array(l*h);return C.set(m.subarray(p,p+l*h)),I(p-I(0)),C}})();var $a=function(){var r=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]),e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var a,t=WebAssembly.validate(r)?"b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;b9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;e8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincbhHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAcd0hHalhOaAcefgAclSmdxekkcbhlaHceGTmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;tzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfalaDcu7gPcl4fcsGcitfgsydlhzasydbhHdnaDcsGgDak9pmbavaiaPfcsGcdtfydbaxaDEhsaDThDdndnadcd9hmbabarcetfgPaH87ebaPcdfaz87ebaPclfas87ebxekabarcdtfgPaHBdbaPclfazBdbaPcwfasBdbkaxaDfhxavc;abfalcitfgPasBdbaPazBdlavaicdtfasBdbavc;abfalcefcsGglcitfgPaHBdbaPasBdlaiaDfhialcefhlxdkdndnaDcsSmbamaDfaDc987fcefhmxekaocefhDao8SbbgscFeGhPdndnascu9mmbaDhoxekaocvfhoaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhokaPce4cbaPceG9R7amfhmkdndnadcd9hmbabarcetfgDaH87ebaDcdfaz87ebaDclfam87ebxekabarcdtfgDaHBdbaDclfazBdbaDcwfamBdbkavc;abfalcitfgDamBdbaDazBdlavaicdtfamBdbavc;abfalcefcsGglcitfgDaHBdbaDamBdlaicefhialcefhlxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHcdfaD87ebaHclfas87ebxekabarcdtfgHaxBdbaHclfaDBdbaHcwfasBdbkavaicdtfaxBdbavc;abfalcitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfalcefcsGcitfgHasBdbaHaDBdlavaiaPfcsGgicdtfasBdbavc;abfalcdfcsGglcitfgDaxBdbaDasBdlalcefhlaiaOfhiazaOfhxxekaxcbaoRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbaocefhDxekaocdfhDao8SbegPcFeGhsdnaPcu9kmbaocofhAascFbGhscrhodninaD8SbbgPcFbGaotasVhsaPcu9kmeaDcefhDaocrfgoc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbgocFeGhPdnaocu9kmbaDcvfhzaPcFbGhPcrhodninas8SbbgDcFbGaotaPVhPaDcu9kmeascefhsaocrfgoc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashoxekascefhoas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninao8SbbgscFbGaDtaPVhPascu9kmeaocefhoaDcrfgDc8J9hmbkaOhoxekaocefhokaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDcdfaz87ebaDclfaO87ebxekabarcdtfgDaABdbaDclfazBdbaDcwfaOBdbkavc;abfalcitfgDazBdbaDaABdlavaicdtfaABdbavc;abfalcefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfalcdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiarcifgrae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:wPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabalcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnaval9pmbaialciGgecdtgdVcbc;abad9R;8kbaiabavcdtfgvad;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkavaiad;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb":"b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq;d8Yqdbk:yzeHu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhlaicefhodnadTmbalc;WFbGglcjdalcjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfglcl4cifcd4hxdndndndnalc9WGgmTmbcbhPcehsawcjdfhzaohHinaraH9Rax6midnaraHaxfgo9RcK6mbczhlcbhOinalgic9WfgAawcj;cbffhldndndndndnaHaAco4fRbbaOcoG4ciGPlbedibkal9cb83ibalcwf9cb83ibxikalaoRblaoRbbgAco4gCaCciSgCE86bbawcj;cbfaifglcGfaoclfaCfgCRbbaAcl4ciGgXaXciSgXE86bbalcVfaCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc7faCaXfgCRbbaAciGgAaAciSgAE86bbalctfaCaAfgCRbbaoRbegAco4gXaXciSgXE86bbalc91faCaXfgCRbbaAcl4ciGgXaXciSgXE86bbalc4faCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc93faCaXfgCRbbaAciGgAaAciSgAE86bbalc94faCaAfgCRbbaoRbdgAco4gXaXciSgXE86bbalc95faCaXfgCRbbaAcl4ciGgXaXciSgXE86bbalc96faCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc97faCaXfgCRbbaAciGgAaAciSgAE86bbalc98faCaAfgARbbaoRbigoco4gCaCciSgCE86bbalc99faAaCfgARbbaocl4ciGgCaCciSgCE86bbalc9:faAaCfgARbbaocd4ciGgCaCciSgCE86bbalcufaAaCfglRbbaociGgoaociSgoE86bbalaofhoxdkalaoRbwaoRbbgAcl4gCaCcsSgCE86bbawcj;cbfaifglcGfaocwfaCfgCRbbaAcsGgAaAcsSgAE86bbalcVfaCaAfgARbbaoRbegCcl4gXaXcsSgXE86bbalc7faAaXfgARbbaCcsGgCaCcsSgCE86bbalctfaAaCfgARbbaoRbdgCcl4gXaXcsSgXE86bbalc91faAaXfgARbbaCcsGgCaCcsSgCE86bbalc4faAaCfgARbbaoRbigCcl4gXaXcsSgXE86bbalc93faAaXfgARbbaCcsGgCaCcsSgCE86bbalc94faAaCfgARbbaoRblgCcl4gXaXcsSgXE86bbalc95faAaXfgARbbaCcsGgCaCcsSgCE86bbalc96faAaCfgARbbaoRbvgCcl4gXaXcsSgXE86bbalc97faAaXfgARbbaCcsGgCaCcsSgCE86bbalc98faAaCfgARbbaoRbogCcl4gXaXcsSgXE86bbalc99faAaXfgARbbaCcsGgCaCcsSgCE86bbalc9:faAaCfgARbbaoRbrgocl4gCaCcsSgCE86bbalcufaAaCfglRbbaocsGgoaocsSgoE86bbalaofhoxekalao8Pbb83bbalcwfaocwf8Pbb83bbaoczfhokdnaiam9pmbaOcdfhOaiczfhlarao9RcL0mekkaiam6miaoTmidnakTmbawaPfRbbhOawcj;cbfhlazhiakhAinaialRbbgHce4cbaHceG9R7aOfgO86bbaiadfhialcefhlaAcufgAmbkkazcefhzaPcefgPad6hsaohHaPad9hmexvkkcbhoasceGmdxikaoaxad2fhXdnakTmbcbhmcehsawcjdfhCinarao9Rax6miaoTmdaoaxfhoawamfRbbhOawcj;cbfhlaChiakhAinaialRbbgHce4cbaHceG9R7aOfgO86bbaiadfhialcefhlaAcufgAmbkaCcefhCamcefgmad6hsamad9hmbkaXhoxikcbhlcehsinarao9Rax6mdaoTmeaoaxfhoalcefglad6hsadal9hmbkaXhoxdkcbhoasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqaombkc9:hoxekcbc99arao9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;xzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfalaDcu7gPcl4fcsGcitfgsydlhzasydbhHdnaDcsGgDak9pmbavaiaPfcsGcdtfydbaxaDEhsaDThDdndnadcd9hmbabarcetfgPaH87ebaPcdfaz87ebaPclfas87ebxekabarcdtfgPaHBdbaPclfazBdbaPcwfasBdbkaxaDfhxavc;abfalcitfgPasBdbaPazBdlavaicdtfasBdbavc;abfalcefcsGglcitfgPaHBdbaPasBdlaiaDfhialcefhlxdkdndnaDcsSmbamaDfaDc987fcefhmxekaocefhDao8SbbgscFeGhPdndnascu9mmbaDhoxekaocvfhoaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhokaPce4cbaPceG9R7amfhmkdndnadcd9hmbabarcetfgDaH87ebaDcdfaz87ebaDclfam87ebxekabarcdtfgDaHBdbaDclfazBdbaDcwfamBdbkavc;abfalcitfgDamBdbaDazBdlavaicdtfamBdbavc;abfalcefcsGglcitfgDaHBdbaDamBdlaicefhialcefhlxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHcdfaD87ebaHclfas87ebxekabarcdtfgHaxBdbaHclfaDBdbaHcwfasBdbkavaicdtfaxBdbavc;abfalcitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfalcefcsGcitfgHasBdbaHaDBdlavaiaPfcsGgicdtfasBdbavc;abfalcdfcsGglcitfgDaxBdbaDasBdlalcefhlaiaOfhiazaOfhxxekaxcbaoRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbaocefhDxekaocdfhDao8SbegPcFeGhsdnaPcu9kmbaocofhAascFbGhscrhodninaD8SbbgPcFbGaotasVhsaPcu9kmeaDcefhDaocrfgoc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbgocFeGhPdnaocu9kmbaDcvfhzaPcFbGhPcrhodninas8SbbgDcFbGaotaPVhPaDcu9kmeascefhsaocrfgoc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashoxekascefhoas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninao8SbbgscFbGaDtaPVhPascu9kmeaocefhoaDcrfgDc8J9hmbkaOhoxekaocefhokaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDcdfaz87ebaDclfaO87ebxekabarcdtfgDaABdbaDclfazBdbaDcwfaOBdbkavc;abfalcitfgDazBdbaDaABdlavaicdtfaABdbavc;abfalcefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfalcdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiarcifgrae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabaiavcdfciGfcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabaiavcufciGfcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabaiavciGfcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb",A=WebAssembly.instantiate(i(t),{}).then(function(f){(a=f.instance).exports.__wasm_call_ctors()});function i(f){for(var g=new Uint8Array(f.length),u=0;u<f.length;++u){var I=f.charCodeAt(u);g[u]=I>96?I-97:I>64?I-39:I+4}var p=0;for(u=0;u<f.length;++u)g[p++]=g[u]<60?e[g[u]]:64*(g[u]-60)+g[++u];return g.buffer.slice(0,p)}function s(f,g,u,I,p,B,m){var C=f.exports.sbrk,w=I+3&-4,k=C(w*p),x=C(B.length),E=new Uint8Array(f.exports.memory.buffer);E.set(B,x);var y=g(k,I,p,x,B.length);if(y==0&&m&&m(k,w,p),u.set(E.subarray(k,k+I*p)),C(k-C(0)),y!=0)throw new Error("Malformed buffer data: "+y)}var n={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},c={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},o=[],b=0;function l(f){var g={object:new Worker(f),pending:0,requests:{}};return g.object.onmessage=function(u){var I=u.data;g.pending-=I.count,g.requests[I.id][I.action](I.value),delete g.requests[I.id]},g}function h(f){var g=f.data;if(!g.id)return self.close();self.ready.then(function(u){try{var I=new Uint8Array(g.count*g.size);s(u,u.exports[g.mode],I,g.count,g.size,g.source,u.exports[g.filter]),self.postMessage({id:g.id,count:g.count,action:"resolve",value:I},[I.buffer])}catch(p){self.postMessage({id:g.id,count:g.count,action:"reject",value:p})}})}return{ready:A,supported:!0,useWorkers:function(f){(function(g){for(var u="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(i(t))+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+h.name+";"+s.toString()+h.toString(),I=new Blob([u],{type:"text/javascript"}),p=URL.createObjectURL(I),B=o.length;B<g;++B)o[B]=l(p);for(B=g;B<o.length;++B)o[B].object.postMessage({});o.length=g,URL.revokeObjectURL(p)})(f)},decodeVertexBuffer:function(f,g,u,I,p){s(a,a.exports.meshopt_decodeVertexBuffer,f,g,u,I,a.exports[n[p]])},decodeIndexBuffer:function(f,g,u,I){s(a,a.exports.meshopt_decodeIndexBuffer,f,g,u,I)},decodeIndexSequence:function(f,g,u,I){s(a,a.exports.meshopt_decodeIndexSequence,f,g,u,I)},decodeGltfBuffer:function(f,g,u,I,p,B){s(a,a.exports[c[p]],f,g,u,I,a.exports[n[B]])},decodeGltfBufferAsync:function(f,g,u,I,p){return o.length>0?function(B,m,C,w,k){for(var x=o[0],E=1;E<o.length;++E)o[E].pending<x.pending&&(x=o[E]);return new Promise(function(y,D){var j=new Uint8Array(C),F=++b;x.pending+=B,x.requests[F]={resolve:y,reject:D},x.object.postMessage({id:F,count:B,size:m,source:j,mode:w,filter:k},[j.buffer])})}(f,g,u,c[I],n[p]):A.then(function(){var B=new Uint8Array(f*g);return s(a,a.exports[c[I]],B,f,g,u,a.exports[n[p]]),B})}}}();(function(){var r,e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var a=WebAssembly.instantiate(function(n){for(var c=new Uint8Array(n.length),o=0;o<n.length;++o){var b=n.charCodeAt(o);c[o]=b>96?b-97:b>64?b-39:b+4}var l=0;for(o=0;o<n.length;++o)c[l++]=c[o]<60?e[c[o]]:64*(c[o]-60)+c[++o];return c.buffer.slice(0,l)}("b9H79Tebbbe9Ek9Geueu9Geub9Gbb9GPuuuuuuuuuuu99uueu9Gvuuuuub9Gluuuub9Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuizsdilvoirwDbqqbeqlve9Weiiviebeoweuec:G;jekr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95bl8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bvQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7boX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbra9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbwl79IV9RbDDwebcekdxmq::9Usdbk;i6iKuY99Ou8Jjjjjbc;W;ab9RgP8KjjjjbaPcwfcbc;Kbz:ljjjb8AaPcualcefgscdtascFFFFi0Ecbyd1:jjjbHjjjjbbgzBdwaPceBd9OaPazBdbaPcuadcitadcFFFFe0Ecbyd1:jjjbHjjjjbbgHBdxaPcdBd9OaPaHBdlaPaeadalcbz:cjjjbaPcualcdtgOalcFFFFi0EgAcbyd1:jjjbHjjjjbbgCBdzaPciBd9OaPaAcbyd1:jjjbHjjjjbbgXBdCaPclBd9Oalcd4alfhQcehLinaLgscethLasaQ6mbkcbhKaPcuascdtgLascFFFFi0Ecbyd1:jjjbHjjjjbbgQBdKaPcvBd9OaQcFeaLz:ljjjbhYdnalTmbavcd4h8AascufhEinaiaKa8A2cdtfg3ydlgscH4as7c:F:b:DD2a3ydbgscH4as7c;D;O:B8J27a3ydwgscH4as7c:3F;N8N27hQcbhsdndninaYaQaEGgQcdtfg5ydbgLcuSmeaiaLa8A2cdtfa3cxz:ojjjbTmdascefgsaQfhQasaE9nmbxdkka5aKBdbaKhLkaCaKcdtfaLBdbaKcefgKal9hmbkcbhsaXhLinaLasBdbaLclfhLalascefgs9hmbkcbhsaChLaXhQindnasaLydbgESmbaQaXaEcdtfgEydbBdbaEasBdbkaLclfhLaQclfhQalascefgs9hmbkkcbh8EaYcbyd:m:jjjbH:bjjjbbaPclBd9OaPalcbyd1:jjjbHjjjjbbgEBdKaPcvBd9OaPaAcbyd1:jjjbHjjjjbbgsBd3aPcoBd9OaPaAcbyd1:jjjbHjjjjbbgLBdaaPcrBd9OascFeaOz:ljjjbh8FaLcFeaOz:ljjjbhadnalTmbaHcwfhhindnaza8EgQcefg8Ecdtfydbg3azaQcdtgsfydbgLSmba3aL9RhOaHaLcitfhgaaasfh8Ja8FasfhKcbh8Aindndnaga8Acitfydbg5aQ9hmbaKaQBdba8JaQBdbxekdnaza5cdtg8KfgsclfydbgLasydbgsSmbaHascitg3fydbaQSmeaLas9Rh8Lascu7aLfhYaha3fhLcbhsinaYasSmeascefhsaLydbh3aLcwfhLa3aQ9hmbkasa8L6mekaaa8KfgsaQa5asydbcuSEBdbaKa5aQaKydbcuSEBdbka8Acefg8AaO9hmbkka8Eal9hmbkaChLaXhQaah3a8Fh8AcbhsindndnasaLydbg59hmbdnasaQydbg59hmba8Aydbh5dna3ydbgYcu9hmba5cu9hmbaEasfcb86bbxikaEasfhKdnasaYSmbasa5SmbaKce86bbxikaKcl86bbxdkdnasaXa5cdtgYfydb9hmbdna3ydbgKcuSmbasaKSmba8AydbgOcuSmbasaOSmbaaaYfydbggcuSmbaga5Smba8FaYfydbgYcuSmbaYa5SmbdnaCaKcdtfydbaCaYcdtfydb9hmbaCaOcdtfydbaCagcdtfydb9hmbaEasfcd86bbxlkaEasfcl86bbxikaEasfcl86bbxdkaEasfcl86bbxekaEasfaEa5fRbb86bbkaLclfhLaQclfhQa3clfh3a8Aclfh8Aalascefgs9hmbkaxceGTmbaEhsalhLindnasRbbce9hmbascl86bbkascefhsaLcufgLmbkkcualcx2alc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbh8JaPcwfaPyd9Ogscdtfa8JBdbaPascefgOBd9Oa8Jaialavz:djjjbdndnaDmbcbhvxekcbh5aPcwfaOcdtfcuaDal2gLcdtaLcFFFFi0Ecbyd1:jjjbHjjjjbbgvBdbaPascdfgOBd9OalTmbarcd4cdthYaDcdthKavh8AinaohsawhLa8AhQaDh3inaQasIdbaLIdbNUdbasclfhsaLclfhLaQclfhQa3cufg3mbkaoaYfhoa8AaKfh8Aa5cefg5al9hmbkkaPcwfaOcdtfcualc8S2gsalc;D;O;f8U0EgQcbyd1:jjjbHjjjjbbgLBdbaPaOcefg3Bd9OaLcbasz:ljjjbh8EdndndnaDTmbaPcwfa3cdtfaQcbyd1:jjjbHjjjjbbgoBdbaPaOcdfgLBd9Oaocbasz:ljjjb8AaPcwfaLcdtfcuaDal2gscltgLascFFFFb0Ecbyd1:jjjbHjjjjbbgwBdbaPaOcifBd9OawcbaLz:ljjjb8AadmexdkcbhocbhwadTmekcbh8AaehLindna8JaLclfydbg5cx2fgsIdba8JaLydbgYcx2fgQIdbg8M:tg8Na8JaLcwfydbgKcx2fg3IdlaQIdlgy:tg8PNa3Idba8M:tgIasIdlay:tg8RN:tg8Sa8SNa8Ra3IdwaQIdwgR:tg8UNa8PasIdwaR:tg8RN:tg8Pa8PNa8RaINa8Ua8NN:tg8Na8NNMM:rgIJbbbb9ETmba8SaI:vh8Sa8NaI:vh8Na8PaI:vh8Pka8EaCaYcdtfydbc8S2fgsa8PaI:rgIa8PNNg8RasIdbMUdbasa8NaIa8NNg8VNg8UasIdlMUdlasa8SaIa8SNg8WNg8XasIdwMUdwasa8Va8PNg8VasIdxMUdxasa8Wa8PNg8YasIdzMUdzasa8Wa8NNg8WasIdCMUdCasa8PaIa8SaRNa8Pa8MNaya8NNMM:mgyNg8MNg8PasIdKMUdKasa8Na8MNg8NasId3MUd3asa8Sa8MNg8SasIdaMUdaasa8MayNg8MasId8KMUd8KasaIasIdyMUdya8EaCa5cdtfydbc8S2fgsa8RasIdbMUdbasa8UasIdlMUdlasa8XasIdwMUdwasa8VasIdxMUdxasa8YasIdzMUdzasa8WasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asa8SasIdaMUdaasa8MasId8KMUd8KasaIasIdyMUdya8EaCaKcdtfydbc8S2fgsa8RasIdbMUdbasa8UasIdlMUdlasa8XasIdwMUdwasa8VasIdxMUdxasa8YasIdzMUdzasa8WasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asa8SasIdaMUdaasa8MasId8KMUd8KasaIasIdyMUdyaLcxfhLa8Acifg8Aad6mbkcbh5aehYincbhLinaEaeaLc:G1jjbfydba5fcdtfydbgQfRbbhsdndnaEaYaLfydbg3fRbbg8Ac99fcFeGcpe0mbasceSmbascd9hmekdna8AcufcFeGce0mba8Fa3cdtfydbaQ9hmekdnascufcFeGce0mbaaaQcdtfydba39hmekdna8Acv2asfc:W1jjbfRbbTmbaCaQcdtfydbaCa3cdtfydb0mekJbbacJbbjZasceSEhIa8AceShOa8JaeaLc:K1jjbfydba5fcdtfydbcx2fhsdna8JaQcx2fg8AIdwa8Ja3cx2fgKIdwgy:tg8Pa8PNa8AIdbaKIdbgR:tg8Na8NNa8AIdlaKIdlg8R:tg8Sa8SNMM:rg8MJbbbb9ETmba8Pa8M:vh8Pa8Sa8M:vh8Sa8Na8M:vh8NkJbbacaIaOEh8WdnasIdway:tgIa8PaIa8PNasIdbaR:tg8Xa8NNa8SasIdla8R:tg8VNMMg8UN:tgIaINa8Xa8Na8UN:tg8Pa8PNa8Va8Sa8UN:tg8Na8NNMM:rg8SJbbbb9ETmbaIa8S:vhIa8Na8S:vh8Na8Pa8S:vh8Pka8EaCa3cdtfydbc8S2fgsa8Pa8Wa8MNg8Sa8PNNg8UasIdbMUdbasa8Na8Sa8NNg8WNg8XasIdlMUdlasaIa8SaINg8MNg8VasIdwMUdwasa8Wa8PNg8WasIdxMUdxasa8Ma8PNg8YasIdzMUdzasa8Ma8NNg8ZasIdCMUdCasa8Pa8SaIayNa8PaRNa8Ra8NNMM:mgyNg8MNg8PasIdKMUdKasa8Na8MNg8NasId3MUd3asaIa8MNgIasIdaMUdaasa8MayNg8MasId8KMUd8Kasa8SasIdyMUdya8EaCaQcdtfydbc8S2fgsa8UasIdbMUdbasa8XasIdlMUdlasa8VasIdwMUdwasa8WasIdxMUdxasa8YasIdzMUdzasa8ZasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asaIasIdaMUdaasa8MasId8KMUd8Kasa8SasIdyMUdykaLclfgLcx9hmbkaYcxfhYa5cifg5ad6mbkaDTmbcbhYinJbbbbhRa8JaeaYcdtfgsclfydbgKcx2fgLIdwa8JasydbgOcx2fgQIdwg8V:tg8Na8NNaLIdbaQIdbg8Y:tgIaINaLIdlaQIdlg8Z:tg8Sa8SNMMg8Wa8Jascwfydbggcx2fgsIdwa8V:tg8MNa8Na8Na8MNaIasIdba8Y:tgyNa8SasIdla8Z:tg8RNMMg8PN:tJbbbbJbbjZa8Wa8Ma8MNayayNa8Ra8RNMMg8XNa8Pa8PN:tg8U:va8UJbbbb9BEg8UNh80a8Xa8NNa8Ma8PN:ta8UNh81a8Wa8RNa8Sa8PN:ta8UNhBa8Xa8SNa8Ra8PN:ta8UNh83a8WayNaIa8PN:ta8UNhUa8XaINaya8PN:ta8UNh85aIa8RNaya8SN:tg8Pa8PNa8Sa8MNa8Ra8NN:tg8Pa8PNa8NayNa8MaIN:tg8Pa8PNMM:r:rh8PavaOaD2cdtfhLavagaD2cdtfhQavaKaD2cdtfh3a8V:mh86a8Z:mh87a8Y:mh88cbh8AaDh5Jbbbbh8RJbbbbh8UJbbbbh8WJbbbbh8XJbbbbh8VJbbbbh8YJbbbbh8ZJbbbbh89Jbbbbh8:inaPc;Wbfa8Afgscwfa8Pa81a3IdbaLIdbg8M:tg8SNa80aQIdba8M:tgyNMg8NNUdbasclfa8Pa83a8SNaBayNMgINUdbasa8Pa85a8SNaUayNMg8SNUdbascxfa8Pa86a8NNa87aINa8Ma88a8SNMMMg8MNUdba8Pa8NaINNa8XMh8Xa8Pa8Na8SNNa8VMh8Va8PaIa8SNNa8YMh8Ya8Pa8Ma8MNNaRMhRa8Pa8Na8MNNa8RMh8Ra8PaIa8MNNa8UMh8Ua8Pa8Sa8MNNa8WMh8Wa8Pa8Na8NNNa8ZMh8Za8PaIaINNa89Mh89a8Pa8Sa8SNNa8:Mh8:aLclfhLa3clfh3aQclfhQa8Aczfh8Aa5cufg5mbkaoaCaOcdtfydbgLc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyaoaCaKcdtfydbgKc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyaoaCagcdtfydbgOc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyawaLaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkawaKaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkawaOaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkaYcifgYad6mbkkdnabaeSmbabaeadcdtz:kjjjb8AkaPydbhZcbhsdnalTmbaZclfhsaZydbh3aEhLalh8AcbhQincbasydbg5a39RaLRbbcpeGEaQfhQaLcefhLasclfhsa5h3a8Acufg8AmbkaQce4hskcuadas9Rcifgrcx2arc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbh8LaPcwfaPyd9Ogscdtfa8LBdbaPascefgLBd9OaPcwfaLcdtfcuarcdtarcFFFFi0Ecbyd1:jjjbHjjjjbbgxBdbaPascdfgLBd9OaPcwfaLcdtfaAcbyd1:jjjbHjjjjbbgHBdbaPascifgLBd9OaPcwfaLcdtfalcbyd1:jjjbHjjjjbbgnBdbaPasclfBd9OJbbbbh8Ydnadaq9nmbdnarci6mbakakNh8VaDclthca8Lcwfh9cJbbbbh8YinaPabadghalaCz:cjjjbabhOcbhzcbhKincbhsindnaCaOasfydbgQcdtgYfydbg8AaCabasc;m1jjbfydbaKfcdtfydbgLcdtfydbg5SmbaEaLfRbbgecv2aEaQfRbbg3fc;G1jjbfRbbg8Ka3cv2aefggc;G1jjbfRbbgiVcFeGTmbdnagc:W1jjbfRbbTmba5a8A0mekdna3ae9hmba3cufcFeGce0mba8FaYfydbaL9hmeka8Lazcx2fg3aLaQaicFeGg8AEBdla3aQaLa8AEBdba3a8Aa8KGcb9hBdwazcefhzkasclfgscx9hmbkdnaKcifgKah9pmbaOcxfhOazcifar9nmekkdnazmbahhdxikcbheinJbbbbJbbjZa8EaCa8Laecx2fg3ydlg8Aa3ydbg5a3ydwgLEgKcdtfydbg8Kc8S2gifgsIdyg8P:va8PJbbbb9BEasIdwa8Ja5a8AaLEgYcx2fgLIdwg8SNasIdzaLIdbg8MNasIdaMg8Pa8PMMa8SNasIdlaLIdlgyNasIdCa8SNasId3Mg8Pa8PMMayNasIdba8MNasIdxayNasIdKMg8Pa8PMMa8MNasId8KMMM:lNh8WJbbbbJbbjZa8EaCa5cdtfydbgdc8S2gQfgsIdyg8P:va8PJbbbb9BEasIdwa8Ja8Acx2fgLIdwgINasIdzaLIdbgRNasIdaMg8Pa8PMMaINasIdlaLIdlg8RNasIdCaINasId3Mg8Pa8PMMa8RNasIdbaRNasIdxa8RNasIdKMg8Pa8PMMaRNasId8KMMM:lNh8Xa3cwfhOa3clfhgdnaDTmbaoaQfgQIdwaINaQIdzaRNaQIdaMg8Pa8PMMaINaQIdla8RNaQIdCaINaQId3Mg8Pa8PMMa8RNaQIdbaRNaQIdxa8RNaQIdKMg8Pa8PMMaRNaQId8KMMMh8Nava8AaD2cdtfhLawadaD2cltfhsaQIdyh8UaDhQinaLIdbg8PJbbb;aNascxfIdbaIascwfIdbNaRasIdbNa8RasclfIdbNMMMNa8Pa8PNa8UNa8NMMh8NaLclfhLasczfhsaQcufgQmbkaoaifgQIdwa8SNaQIdza8MNaQIdaMg8Pa8PMMa8SNaQIdlayNaQIdCa8SNaQId3Mg8Pa8PMMayNaQIdba8MNaQIdxayNaQIdKMg8Pa8PMMa8MNaQId8KMMMhIavaYaD2cdtfhLawa8KaD2cltfhsaQIdyhRaDhQinaLIdbg8PJbbb;aNascxfIdba8SascwfIdbNa8MasIdbNayasclfIdbNMMMNa8Pa8PNaRNaIMMhIaLclfhLasczfhsaQcufgQmbka8WaI:lMh8Wa8Xa8N:lMh8Xkaga8AaYa8Xa8W9FgsEBdba3a5aKasEBdbaOa8Xa8WasEUdbaecefgeaz9hmbkaPc;Wbfcbcj;abz:ljjjb8Aa9chsazhLinaPc;WbfasydbcO4c;8ZGfgQaQydbcefBdbascxfhsaLcufgLmbkcbhscbhLinaPc;WbfasfgQydbh3aQaLBdba3aLfhLasclfgscj;ab9hmbkcbhsa9chLinaPc;WbfaLydbcO4c;8ZGfgQaQydbgQcefBdbaxaQcdtfasBdbaLcxfhLazascefgs9hmbkahaq9RgQci9UhJdnalTmbcbhsaHhLinaLasBdbaLclfhLalascefgs9hmbkkcbh9eancbalz:ljjjbhTaQcO9UhSaJce4h9haPydlh9icbhicbhgdnina8Laxagcdtfydbcx2fgOIdwg8Na8V9EmeaiaJ9pmeJFFuuh8Pdna9haz9pmba8Laxa9hcdtfydbcx2fIdwJbb;aZNh8Pkdna8Na8P9ETmbaiaS0mdkdnaTaCaOydlg6cdtg9kfydbg3fg0RbbaTaCaOydbgKcdtg9mfydbg9nfg9oRbbVmbdnaZa9ncdtfgsclfydbgLasydbgsSmbaLas9Rh5a9iascitfhsa8Ja3cx2fgYcwfhdaYclfhAa8Ja9ncx2fg8Kcwfh9pa8Kclfh9qcbhLcehednindnaHasydbcdtfydbgQa3SmbaHasclfydbcdtfydbg8Aa3SmbaQa8ASmba8Ja8Acx2fg8AIdba8JaQcx2fgQIdbgI:tg8Pa9qIdbaQIdlg8S:tg8MNa8KIdbaI:tgya8AIdla8S:tg8NN:ta8PaAIdba8S:tgRNaYIdbaI:tg8Ra8NN:tNa8Na9pIdbaQIdwg8S:tg8UNa8Ma8AIdwa8S:tgIN:ta8NadIdba8S:tg8SNaRaIN:tNaIayNa8Ua8PN:taIa8RNa8Sa8PN:tNMMJbbbb9FmdkascwfhsaLcefgLa56hea5aL9hmbkkaeceGTmba9hcefh9hxeka8Ea3c8S2gQfgsa8Ea9nc8S2g8AfgLIdbasIdbMUdbasaLIdlasIdlMUdlasaLIdwasIdwMUdwasaLIdxasIdxMUdxasaLIdzasIdzMUdzasaLIdCasIdCMUdCasaLIdKasIdKMUdKasaLId3asId3MUd3asaLIdaasIdaMUdaasaLId8KasId8KMUd8KasaLIdyasIdyMUdydnaDTmbaoaQfgsaoa8AfgLIdbasIdbMUdbasaLIdlasIdlMUdlasaLIdwasIdwMUdwasaLIdxasIdxMUdxasaLIdzasIdzMUdzasaLIdCasIdCMUdCasaLIdKasIdKMUdKasaLId3asId3MUd3asaLIdaasIdaMUdaasaLId8KasId8KMUd8KasaLIdyasIdyMUdyaca9n2heaca32hYawhLaDh8AinaLaYfgsaLaefgQIdbasIdbMUdbasclfg5aQclfIdba5IdbMUdbascwfg5aQcwfIdba5IdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa8Acufg8AmbkkaOcwfhLdndndndnaEaKfgQRbbc9:fPdebdkaKhsinaHascdtgsfa3BdbaXasfydbgsaK9hmbxikkaXa9kfydbhsaXa9mfydbhKaHa9mfa6Bdbash6kaHaKcdtfa6Bdbka9oce86bba0ce86bbaLIdbg8Pa8Ya8Ya8P9DEh8Ya9ecefh9ececdaQRbbceSEaifhikagcefggaz9hmbkkdna9embahhdxikdnalTmbcbhLa8FhsindnasydbgQcuSmbdnaLaHaQcdtg3fydbgQ9hmba8Fa3fydbhQkasaQBdbkasclfhsalaLcefgL9hmbkcbhLaahsindnasydbgQcuSmbdnaLaHaQcdtg3fydbgQ9hmbaaa3fydbhQkasaQBdbkasclfhsalaLcefgL9hmbkkcbhdabhscbh8AindnaHasydbcdtfydbgLaHasclfydbcdtfydbgQSmbaLaHascwfydbcdtfydbg3SmbaQa3Smbabadcdtfg5aLBdba5clfaQBdba5cwfa3Bdbadcifhdkascxfhsa8Acifg8Aah6mbkadaq9nmdxbkkaPabadalaCz:cjjjbkdnamTmbama8Y:rUdbkaPyd9OgscdtaPcwffc98fhCdninasTmeaCydbcbyd:m:jjjbH:bjjjbbaCc98fhCascufhsxbkkaPc;W;abf8Kjjjjbadk;:ieouabydlhvabydbclfcbaicdtz:ljjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbarcearce0EhdinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfheadcufgdmbkkabydbcbBdbk:Zldouv998Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdnadTmbaicd4hvdnabTmbavcdthocbhraehwinabarcx2fgiaearav2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinalczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbalaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawaofhwarcefgrad9hmbxdkkavcdthrcbhwincbhiinalczfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbalaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbkkdnabTmbadTmbJbbbbJbbjZalIdbalIdzgk:tJbbbb:xgqalIdlalIdCgx:tgmamaq9DEgqalIdwalIdKgm:tgPaPaq9DEgq:vaqJbbbb9BEhqinabaqabIdbak:tNUdbabclfgiaqaiIdbax:tNUdbabcwfgiaqaiIdbam:tNUdbabcxfhbadcufgdmbkkk8KbabaeadaialavcbcbcbcbaoarawaDz:bjjjbk8KbabaeadaialavaoarawaDaqakaxamz:bjjjbk;lOowud99wue99iul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcwfcbc;Kbz:ljjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbgqBdwawceBd9Oaqaeadaiz:djjjbawcuadcdtadcFFFFi0Egkcbyd1:jjjbHjjjjbbgxBdxawcdBd9Oadcd4adfhmceheinaegicetheaiam6mbkcbhmawcuaicdtgPaicFFFFi0Ecbyd1:jjjbHjjjjbbgsBdzawciBd9Odndnar:Zgz:rJbbbZMgH:lJbbb9p9DTmbaH:Ohexekcjjjj94hekaicufhOc:bwhAcbhCcbhXadhQinaChLaeaAgKcufaeaK9iEamgDcefaeaD9kEhYdndnadTmbaYcuf:YhHaqhiaxheadhmindndnaiIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhAxekcjjjj94hAkaAcCthAdndnaiclfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcqtaAVhAdndnaicwfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaeaAaCVBdbaicxfhiaeclfheamcufgmmbkascFeaPz:ljjjbhEcbh3cbh5indnaEaxa5cdtfydbgAcm4aA7c:v;t;h;Ev2gics4ai7aOGgmcdtfgCydbgecuSmbaeaASmbcehiinaEamaifaOGgmcdtfgCydbgecuSmeaicefhiaeaA9hmbkkaCaABdba3aecuSfh3a5cefg5ad9hmbxdkkascFeaPz:ljjjb8Acbh3kaDaYa3ar0giEhmaLa3aiEhCdna3arSmbaYaKaiEgAam9Rcd9imbdndnaXcl0mbdnaQ:ZgHaL:Zg8A:taY:Yg8EaD:Y:tg8Fa8EaK:Y:tgaa3:Zghaz:tNNNaHaz:taaNa8Aah:tNa8Aaz:ta8FNahaH:tNM:va8EMJbbbZMgH:lJbbb9p9DTmbaH:Ohexdkcjjjj94hexekamaAfcd9Theka3aQaiEhQaXcefgXcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd1:jjjbHjjjjbbg5BdCawclBd9OdndnadTmbamcuf:YhHaqhiaxheadhmindndnaiIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhAxekcjjjj94hAkaAcCthAdndnaiclfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcqtaAVhAdndnaicwfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaeaAaCVBdbaicxfhiaeclfheamcufgmmbkascFeaPz:ljjjbhEcbhDcbh3inaxa3cdtgYfydbgAcm4aA7c:v;t;h;Ev2gics4ai7hecbhidndninaEaeaOGgmcdtfgCydbgecuSmednaxaecdtgCfydbaASmbaicefgiamfheaiaO9nmekka5aCfydbhixekaCa3BdbaDhiaDcefhDka5aYfaiBdba3cefg3ad9hmbkcuaDc32giaDc;j:KM;jb0EhexekascFeaPz:ljjjb8AcbhDcbhekawaecbyd1:jjjbHjjjjbbgeBdKawcvBd9Oaecbaiz:ljjjbhOavcd4hxdnadTmbaxcdth3a5hmalhAaqheadhEinaOamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaAc;81jjbalEgCIdbaiIdxMUdxaiaCIdlaiIdzMUdzaiaCIdwaiIdCMUdCaiaiIdKJbbjZMUdKamclfhmaAa3fhAaecxfheaEcufgEmbkkdnaDTmbaOcxfhiaDheinaictfgmamIdbJbbbbJbbjZaicxfIdbgH:vaHJbbbb9BEgHNUdbaic94fgmaHamIdbNUdbaic98fgmaHamIdbNUdbaiaHaiIdbNUdbaiclfgmaHamIdbNUdbaicwfgmaHamIdbNUdbaic3fhiaecufgembkkcbhAawcuaDcdtgYaDcFFFFi0Egicbyd1:jjjbHjjjjbbgeBd3awcoBd9Oawaicbyd1:jjjbHjjjjbbgEBdaaecFeaYz:ljjjbh3dnadTmbaoaoNh8Aaxcdthxalheina8Aaec;81jjbalEgmIdwaOa5ydbgCc32fgiIdC:tgHaHNamIdbaiIdx:tgHaHNamIdlaiIdz:tgHaHNMMNaqcwfIdbaiIdw:tgHaHNaqIdbaiIdb:tgHaHNaqclfIdbaiIdl:tgHaHNMMMhHdndna3aCcdtgifgmydbcuSmbaEaifIdbaH9ETmekamaABdbaEaifaHUdbka5clfh5aeaxfheaqcxfhqadaAcefgA9hmbkkaba3aYz:kjjjb8AcrhikaicdthiinaiTmeaic98fgiawcwffydbcbyd:m:jjjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Qdidui99ducbhi8Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgoaDIdbgrarao9EEUdbaladfgDaoaDIdbgrarao9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkavJbbbb:xgvaoaoav9DEgoararao9DEk9DeeuabcFeaicdtz:ljjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcifc98GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcrfc94GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:jjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:jjjbfgdBd:q:jjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk6eiucbhidnadTmbdninabRbbglaeRbbgv9hmeaecefheabcefhbadcufgdmbxdkkalav9Rhikaikk:Iedbcjwk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbebbbdbbbbbbbebbbeeebeebebbeeebebbbbbebebbbbbebbbdbbbbbbbbbbbbbbbeeeeebebbbbbebbbbbeebbbbbbbbbbbbbbbbbbbbbc1Dkxebbbdbbb:G9Kbb"),{}).then(function(n){(r=n.instance).exports.__wasm_call_ctors()});function t(n){if(!n)throw new Error("Assertion failed")}function A(n){return new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}function i(n,c,o,b,l,h,f,g){var u=r.exports.sbrk,I=u(4*g),p=u(o*b),B=u(o*h),m=new Uint8Array(r.exports.memory.buffer);m.set(A(c),p),l&&m.set(A(l),B);var C=n(I,p,o,b,B,h,f,g);new Uint8Array(r.exports.memory.buffer);var w=new Uint32Array(C);return A(w).set(m.subarray(I,I+4*C)),u(I-u(0)),w}var s={LockBorder:1}})();let Y=0;class et{constructor(e){if(this.renderer=e.renderer,this.zUpToYUpMatrix=new Q.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1),this.maxCachedItems=100,this.proxy=e.proxy,e&&(this.meshCallback=e.meshCallback,this.pointsCallback=e.pointsCallback,e.maxCachedItems!=null&&(this.maxCachedItems=e.maxCachedItems)),this.gltfLoader=new va,e&&e.dracoLoader)this.gltfLoader.setDRACOLoader(e.dracoLoader),this.hasDracoLoader=!0;else{const a=new Ua;a.setDecoderPath("https://storage.googleapis.com/ogc-3d-tiles/draco/"),this.gltfLoader.setDRACOLoader(a),this.gltfLoader.hasDracoLoader=!0}if(e&&e.ktx2Loader)this.gltfLoader.setKTX2Loader(e.ktx2Loader),this.hasKTX2Loader=!0;else if(e&&e.renderer){const a=new U;a.setTranscoderPath("https://storage.googleapis.com/ogc-3d-tiles/basis/").detectSupport(e.renderer),this.gltfLoader.setKTX2Loader(a),this.gltfLoader.hasKTX2Loader=!0}this.gltfLoader.setMeshoptDecoder($a),this.hasMeshOptDecoder=!0,this.b3dmDecoder=new Sa(this.gltfLoader),this.splatsDecoder=new ft(this.gltfLoader,this.renderer),this.cache=new Ra.LinkedHashMap,this.register={},this.ready=[],this.downloads=[],this.nextReady=[],this.nextDownloads=[]}update(){const e=this;Y<8&&e._download(),e._loadBatch()}_scheduleDownload(e){this.downloads.unshift(e)}_download(){if(this.nextDownloads.length!=0||(this._getNextDownloads(),this.nextDownloads.length!=0))for(;this.nextDownloads.length>0;){const e=this.nextDownloads.shift();e&&e.shouldDoDownload()&&e.doDownload()}}_meshReceived(e,a,t,A,i,s,n){this.ready.unshift([e,a,t,A,i,s,n])}_loadBatch(){for(this.nextReady.length==0&&this._getNextReady();this.nextReady.length>0;){const e=this.nextReady.shift();if(!e)return;const a=e[0],t=e[1],A=e[2],i=a.get(A);i&&t[A]&&Object.keys(t[A]).forEach(s=>{const n=t[A][s];n&&(n(i),t[A][s]=null)}),this.nextReady.length==0&&this._getNextReady()}}_getNextDownloads(){let e=Number.POSITIVE_INFINITY,a=-1;for(let t=this.downloads.length-1;t>=0;t--)this.downloads[t].distanceFunction||this.nextDownloads.push(this.downloads.splice(t,1)[0]);if(!(this.nextDownloads.length>0)){for(let t=this.downloads.length-1;t>=0;t--){const A=this.downloads[t].distanceFunction();A<=e&&(e=A,a=t)}if(a>=0){const t=this.downloads.splice(a,1).pop();this.nextDownloads.push(t);const A=t.getSiblings();for(let i=this.downloads.length-1;i>=0;i--)A.map(s=>s.uuid).includes(this.downloads[i].uuid)&&this.nextDownloads.push(this.downloads.splice(i,1).pop())}}}_getNextReady(){let e=Number.POSITIVE_INFINITY,a=-1;for(let t=this.ready.length-1;t>=0;t--)this.ready[t][3]||this.nextReady.push(this.ready.splice(t,1)[0]);if(!(this.nextReady.length>0)){for(let t=this.ready.length-1;t>=0;t--){const A=this.ready[t][3]()*this.ready[t][5];A<=e&&(e=A,a=t)}if(a>=0){const t=this.ready.splice(a,1).pop();this.nextReady.push(t);const A=t[4]();for(let i=this.ready.length-1;i>=0;i--)A.map(s=>s.uuid).includes(this.ready[i][6])&&this.nextReady.push(this.ready.splice(i,1).pop())}}}get(e,a,t,A,i,s,n,c,o,b,l){const h=this,f=Qa(t),g=new AbortController;if(e.signal.addEventListener("abort",()=>{h.register[f]&&Object.keys(h.register[f]).length!=0||g.abort("user abort")}),!(t.includes(".b3dm")||t.includes(".json")||t.includes(".gltf")||t.includes(".glb")))return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");if(h.register[f]||(h.register[f]={}),h.register[f][a]&&console.error(" a tile should only be loaded once"),h.register[f][a]=A,h.cache.get(f))this._meshReceived(h.cache,h.register,f,i,s,n,a);else if(Object.keys(h.register[f]).length==1){let u;t.includes(".b3dm")?u=()=>{var I;I=h.proxy?()=>fetch(h.proxy,{method:"POST",body:t,signal:g.signal}):()=>fetch(t,{signal:g.signal}),Y++,I().then(p=>{if(!p.ok)throw console.error("could not load tile with path : "+t),new Error(`couldn't load "${t}". Request failed with status ${p.status} : ${p.statusText}`);return p.arrayBuffer()}).then(p=>this.b3dmDecoder.parseB3DM(p,B=>{h.meshCallback(B,b)},c,o)).then(p=>{h.cache.put(f,p),h._checkSize(),this._meshReceived(h.cache,h.register,f,i,s,n,a)}).catch(p=>{}).finally(()=>{Y--})}:t.includes(".glb")||t.includes(".gltf")?u=l?()=>{var I;I=h.proxy?()=>fetch(h.proxy,{method:"POST",body:t,signal:g.signal}):()=>fetch(t,{signal:g.signal}),Y++,I().then(p=>{if(!p.ok)throw console.error("could not load tile with path : "+t),new Error(`couldn't load "${t}". Request failed with status ${p.status} : ${p.statusText}`);return p.arrayBuffer()}).then(p=>this.splatsDecoder.parseSplats(p,c,o,l)).then(p=>{h.cache.put(f,p),h._checkSize(),h._meshReceived(h.cache,h.register,f,i,s,n,a)}).catch(p=>{}).finally(()=>{Y--})}:()=>{var I;I=h.proxy?()=>fetch(h.proxy,{method:"POST",body:t,signal:g.signal}):()=>fetch(t,{signal:g.signal}),Y++,I().then(p=>{if(!p.ok)throw console.error("could not load tile with path : "+t),new Error(`couldn't load "${t}". Request failed with status ${p.status} : ${p.statusText}`);return p.arrayBuffer()}).then(async p=>{await async function(B){return new Promise(m=>{const C=setInterval(()=>{B.hasDracoLoader&&!B.dracoLoader||B.hasKTX2Loader&&!B.ktx2Loader||(clearInterval(C),m())},10)})}(this.gltfLoader),this.gltfLoader.parse(p,null,B=>{B.scene.asset=B.asset,c&&B.scene.applyMatrix4(this.zUpToYUpMatrix),B.scene.traverse(m=>{m.isMesh&&(o&&m.applyMatrix4(this.zUpToYUpMatrix),h.meshCallback&&h.meshCallback(m,b)),m.isPoints&&h.pointsCallback&&h.pointsCallback(m,b)}),h.cache.put(f,B.scene),h._checkSize(),h._meshReceived(h.cache,h.register,f,i,s,n,a)})}).catch(p=>{p!=="user abort"&&p.code}).finally(()=>{Y--})}:t.includes(".json")&&(u=()=>{var I;I=h.proxy?()=>fetch(h.proxy,{method:"POST",body:t,signal:g.signal}):()=>fetch(t,{signal:g.signal}),Y++,I().then(p=>{if(!p.ok)throw console.error("could not load tile with path : "+t),new Error(`couldn't load "${t}". Request failed with status ${p.status} : ${p.statusText}`);return p.json()}).then(p=>ia(p,t)).then(p=>{h.cache.put(f,p),h._checkSize(),h._meshReceived(h.cache,h.register,f)}).catch(p=>{}).finally(()=>{Y--})}),this._scheduleDownload({shouldDoDownload:()=>!e.signal.aborted&&!!h.register[f]&&Object.keys(h.register[f]).length>0,doDownload:u,distanceFunction:i,getSiblings:s,level:n,uuid:a})}}clear(){const e=this.maxCachedItems;this.maxCachedItems=0,this._checkSize(),this.maxCachedItems=e}invalidate(e,a){const t=Qa(e);this.register[t]&&(delete this.register[t][a],this._checkSize())}_checkSize(){const e=this;let a=0;for(;e.cache.size()>e.maxCachedItems&&a<e.cache.size();){a++;const t=e.cache.head(),A=e.register[t.key];A&&(Object.keys(A).length>0?(e.cache.remove(t.key),e.cache.put(t.key,t.value)):(e.cache.remove(t.key),delete e.register[t.key],t.value.isSplatsBatch?t.value.remove():t.value.traverse(i=>{if(i.material)if(i.material.length)for(let s=0;s<i.material.length;++s)i.material[s].dispose();else i.material.dispose();i.geometry&&i.geometry.dispose()})))}}}function Qa(r){for(var e=r.split("/"),a=[],t=0,A=0;A<e.length;A++){var i=e[A];i!=="."&&i!==""&&i!==".."?a[t++]=i:i===".."&&t>0&&t--}if(t===0)return"/";var s="";for(A=0;A<t;A++)s+="/"+a[A];return s}function K(r){if(typeof r!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(r))}function ya(r,e){for(var a,t="",A=0,i=-1,s=0,n=0;n<=r.length;++n){if(n<r.length)a=r.charCodeAt(n);else{if(a===47)break;a=47}if(a===47){if(!(i===n-1||s===1))if(i!==n-1&&s===2){if(t.length<2||A!==2||t.charCodeAt(t.length-1)!==46||t.charCodeAt(t.length-2)!==46){if(t.length>2){var c=t.lastIndexOf("/");if(c!==t.length-1){c===-1?(t="",A=0):A=(t=t.slice(0,c)).length-1-t.lastIndexOf("/"),i=n,s=0;continue}}else if(t.length===2||t.length===1){t="",A=0,i=n,s=0;continue}}e&&(t.length>0?t+="/..":t="..",A=2)}else t.length>0?t+="/"+r.slice(i+1,n):t=r.slice(i+1,n),A=n-i-1;i=n,s=0}else a===46&&s!==-1?++s:s=-1}return t}var fe={resolve:function(){for(var r,e="",a=!1,t=arguments.length-1;t>=-1&&!a;t--){var A;t>=0?A=arguments[t]:(r===void 0&&(r=process.cwd()),A=r),K(A),A.length!==0&&(e=A+"/"+e,a=A.charCodeAt(0)===47)}return e=ya(e,!a),a?e.length>0?"/"+e:"/":e.length>0?e:"."},normalize:function(r){if(K(r),r.length===0)return".";var e=r.charCodeAt(0)===47,a=r.charCodeAt(r.length-1)===47;return(r=ya(r,!e)).length!==0||e||(r="."),r.length>0&&a&&(r+="/"),e?"/"+r:r},isAbsolute:function(r){return K(r),r.length>0&&r.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var r,e=0;e<arguments.length;++e){var a=arguments[e];K(a),a.length>0&&(r===void 0?r=a:r+="/"+a)}return r===void 0?".":fe.normalize(r)},relative:function(r,e){if(K(r),K(e),r===e||(r=fe.resolve(r))===(e=fe.resolve(e)))return"";for(var a=1;a<r.length&&r.charCodeAt(a)===47;++a);for(var t=r.length,A=t-a,i=1;i<e.length&&e.charCodeAt(i)===47;++i);for(var s=e.length-i,n=A<s?A:s,c=-1,o=0;o<=n;++o){if(o===n){if(s>n){if(e.charCodeAt(i+o)===47)return e.slice(i+o+1);if(o===0)return e.slice(i+o)}else A>n&&(r.charCodeAt(a+o)===47?c=o:o===0&&(c=0));break}var b=r.charCodeAt(a+o);if(b!==e.charCodeAt(i+o))break;b===47&&(c=o)}var l="";for(o=a+c+1;o<=t;++o)o!==t&&r.charCodeAt(o)!==47||(l.length===0?l+="..":l+="/..");return l.length>0?l+e.slice(i+c):(i+=c,e.charCodeAt(i)===47&&++i,e.slice(i))},_makeLong:function(r){return r},dirname:function(r){if(K(r),r.length===0)return".";for(var e=r.charCodeAt(0),a=e===47,t=-1,A=!0,i=r.length-1;i>=1;--i)if((e=r.charCodeAt(i))===47){if(!A){t=i;break}}else A=!1;return t===-1?a?"/":".":a&&t===1?"//":r.slice(0,t)},basename:function(r,e){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');K(r);var a,t=0,A=-1,i=!0;if(e!==void 0&&e.length>0&&e.length<=r.length){if(e.length===r.length&&e===r)return"";var s=e.length-1,n=-1;for(a=r.length-1;a>=0;--a){var c=r.charCodeAt(a);if(c===47){if(!i){t=a+1;break}}else n===-1&&(i=!1,n=a+1),s>=0&&(c===e.charCodeAt(s)?--s==-1&&(A=a):(s=-1,A=n))}return t===A?A=n:A===-1&&(A=r.length),r.slice(t,A)}for(a=r.length-1;a>=0;--a)if(r.charCodeAt(a)===47){if(!i){t=a+1;break}}else A===-1&&(i=!1,A=a+1);return A===-1?"":r.slice(t,A)},extname:function(r){K(r);for(var e=-1,a=0,t=-1,A=!0,i=0,s=r.length-1;s>=0;--s){var n=r.charCodeAt(s);if(n!==47)t===-1&&(A=!1,t=s+1),n===46?e===-1?e=s:i!==1&&(i=1):e!==-1&&(i=-1);else if(!A){a=s+1;break}}return e===-1||t===-1||i===0||i===1&&e===t-1&&e===a+1?"":r.slice(e,t)},format:function(r){if(r===null||typeof r!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof r);return function(e,a){var t=a.dir||a.root,A=a.base||(a.name||"")+(a.ext||"");return t?t===a.root?t+A:t+e+A:A}("/",r)},parse:function(r){K(r);var e={root:"",dir:"",base:"",ext:"",name:""};if(r.length===0)return e;var a,t=r.charCodeAt(0),A=t===47;A?(e.root="/",a=1):a=0;for(var i=-1,s=0,n=-1,c=!0,o=r.length-1,b=0;o>=a;--o)if((t=r.charCodeAt(o))!==47)n===-1&&(c=!1,n=o+1),t===46?i===-1?i=o:b!==1&&(b=1):i!==-1&&(b=-1);else if(!c){s=o+1;break}return i===-1||n===-1||b===0||b===1&&i===n-1&&i===s+1?n!==-1&&(e.base=e.name=s===0&&A?r.slice(1,n):r.slice(s,n)):(s===0&&A?(e.name=r.slice(1,i),e.base=r.slice(1,n)):(e.name=r.slice(s,i),e.base=r.slice(s,n)),e.ext=r.slice(i,n)),s>0?e.dir=r.slice(0,s-1):A&&(e.dir="/"),e},sep:"/",delimiter:":",win32:null,posix:null};fe.posix=fe;var wa,Ae=fe;class AA{constructor(e){ie(this,"_toElementFn");if(e){const{toElementFn:a}=e;if(typeof a=="function")this._toElementFn=a;else if(a)throw new TypeError("toElementFn must be a function type")}}get toElementFn(){return this._toElementFn}*[Symbol.iterator](...e){yield*this._getIterator(...e)}*values(){for(const e of this)yield e}every(e,a){let t=0;for(const A of this)if(!e.call(a,A,t++,this))return!1;return!0}some(e,a){let t=0;for(const A of this)if(e.call(a,A,t++,this))return!0;return!1}forEach(e,a){let t=0;for(const A of this)e.call(a,A,t++,this)}find(e,a){let t=0;for(const A of this)if(e.call(a,A,t++,this))return A}has(e){for(const a of this)if(a===e)return!0;return!1}reduce(e,a){let t=a,A=0;for(const i of this)t=e(t,i,A++,this);return t}toVisual(){return[...this]}print(){console.log(this.toVisual())}}/**
21
21
  * data-structure-typed
22
22
  * @author Kirk Qi
23
23
  * @copyright Copyright (c) 2022 Kirk Qi <qilinaus@gmail.com>
24
24
  * @license MIT License
25
- */class ne extends AA{constructor(a=[],t){super(t);ie(this,"_elements",[]);ie(this,"_DEFAULT_COMPARATOR",(a,t)=>{if(typeof a=="object"||typeof t=="object")throw TypeError("When comparing object types, a custom comparator must be defined in the constructor's options parameter.");return a>t?1:a<t?-1:0});ie(this,"_comparator",this._DEFAULT_COMPARATOR);if(t){const{comparator:A}=t;A&&(this._comparator=A)}if(a)for(const A of a)this.toElementFn?this.add(this.toElementFn(A)):this.add(A)}get elements(){return this._elements}get size(){return this.elements.length}get leaf(){return this.elements[this.size-1]??void 0}static heapify(a,t){return new ne(a,t)}add(a){return this._elements.push(a),this._bubbleUp(this.elements.length-1)}poll(){if(this.elements.length===0)return;const a=this.elements[0],t=this.elements.pop();return this.elements.length&&(this.elements[0]=t,this._sinkDown(0,this.elements.length>>1)),a}peek(){return this.elements[0]}isEmpty(){return this.size===0}clear(){this._elements=[]}refill(a){return this._elements=a,this.fix()}has(a){return this.elements.includes(a)}delete(a){const t=this.elements.indexOf(a);return!(t<0)&&(t===0?this.poll():t===this.elements.length-1?this.elements.pop():(this.elements.splice(t,1,this.elements.pop()),this._bubbleUp(t),this._sinkDown(t,this.elements.length>>1)),!0)}dfs(a="PRE"){const t=[],A=i=>{const s=2*i+1,o=s+1;i<this.size&&(a==="IN"?(A(s),t.push(this.elements[i]),A(o)):a==="PRE"?(t.push(this.elements[i]),A(s),A(o)):a==="POST"&&(A(s),A(o),t.push(this.elements[i])))};return A(0),t}toArray(){return[...this.elements]}clone(){return new ne(this,{comparator:this.comparator,toElementFn:this.toElementFn})}sort(){const a=[],t=new ne(this,{comparator:this.comparator});for(;t.size!==0;){const A=t.poll();A!==void 0&&a.push(A)}return a}fix(){const a=[];for(let t=Math.floor(this.size/2);t>=0;t--)a.push(this._sinkDown(t,this.elements.length>>1));return a}filter(a,t){const A=new ne([],{toElementFn:this.toElementFn,comparator:this.comparator});let i=0;for(const s of this)a.call(t,s,i,this)&&A.add(s),i++;return A}map(a,t,A,i){const s=new ne([],{comparator:t,toElementFn:A});let o=0;for(const c of this)s.add(a.call(i,c,o,this)),o++;return s}get comparator(){return this._comparator}*_getIterator(){for(const a of this.elements)yield a}_bubbleUp(a){const t=this.elements[a];for(;a>0;){const A=a-1>>1,i=this.elements[A];if(this.comparator(i,t)<=0)break;this.elements[a]=i,a=A}return this.elements[a]=t,!0}_sinkDown(a,t){const A=this.elements[a];for(;a<t;){let i=a<<1|1;const s=i+1;let o=this.elements[i];if(s<this.elements.length&&this.comparator(o,this.elements[s])>0&&(i=s,o=this.elements[s]),this.comparator(o,A)>=0)break;this.elements[a]=o,a=i}return this.elements[a]=A,!0}}(function(r){r[r.VISIT=0]="VISIT",r[r.PROCESS=1]="PROCESS"})(wa||(wa={}));class Ee extends ne{constructor(e=[],a){super(e,a)}clone(){return new Ee(this,{comparator:this.comparator,toElementFn:this.toElementFn})}filter(e,a){const t=new Ee([],{toElementFn:this.toElementFn,comparator:this.comparator});let A=0;for(const i of this)e.call(a,i,A,this)&&t.add(i),A++;return t}map(e,a,t,A){const i=new Ee([],{comparator:a,toElementFn:t});let s=0;for(const o of this)i.add(e.call(A,o,s,this)),s++;return i}}class Qe extends Ee{constructor(e=[],a){super(e,a)}clone(){return new Qe(this,{comparator:this.comparator,toElementFn:this.toElementFn})}filter(e,a){const t=new Qe([],{toElementFn:this.toElementFn,comparator:this.comparator});let A=0;for(const i of this)e.call(a,i,A,this)&&t.add(i),A++;return t}map(e,a,t,A){const i=new Qe([],{comparator:a,toElementFn:t});let s=0;for(const o of this)i.add(e.call(A,o,s,this)),s++;return i}}new d.Box3,new d.Vector3,new d.Vector3,new d.Vector3,new d.Vector3;const je=new d.Vector3,iA=new d.Vector3,at=new d.Matrix3;at.set(1,0,0,0,0,1,0,-1,0);class sA extends d.Mesh{constructor(e){const t=Math.min(Math.ceil(8)*512,Math.pow(512,2));let A=1*Math.pow(512,2);A=Math.floor(A/t)*t;const i=new d.WebGL3DRenderTarget(512,512,1,{magFilter:d.NearestFilter,minFilter:d.NearestFilter,anisotropy:0,depthBuffer:!1,resolveDepthBuffer:!1});e.initRenderTarget(i);const s=new d.WebGL3DRenderTarget(512,512,1,{magFilter:d.NearestFilter,minFilter:d.NearestFilter,anisotropy:0,type:d.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});s.texture.type=d.FloatType,e.initRenderTarget(s);const o=new d.WebGL3DRenderTarget(512,512,1,{magFilter:d.NearestFilter,minFilter:d.NearestFilter,anisotropy:0,type:d.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});o.texture.type=d.FloatType,e.initRenderTarget(o);const c=new d.WebGL3DRenderTarget(512,512,1,{magFilter:d.NearestFilter,minFilter:d.NearestFilter,anisotropy:0,type:d.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});c.texture.type=d.FloatType,e.initRenderTarget(c);const n=new d.ShaderMaterial({uniforms:{textureSize:{value:512},numSlices:{value:1},cov1Texture:{value:o.texture},cov2Texture:{value:c.texture},colorTexture:{value:i.texture},positionTexture:{value:s.texture},zUpToYUpMatrix3x3:{value:at},sizeMultiplier:{value:1},cropRadius:{value:Number.MAX_VALUE}},vertexShader:`
25
+ */class oe extends AA{constructor(a=[],t){super(t);ie(this,"_elements",[]);ie(this,"_DEFAULT_COMPARATOR",(a,t)=>{if(typeof a=="object"||typeof t=="object")throw TypeError("When comparing object types, a custom comparator must be defined in the constructor's options parameter.");return a>t?1:a<t?-1:0});ie(this,"_comparator",this._DEFAULT_COMPARATOR);if(t){const{comparator:A}=t;A&&(this._comparator=A)}if(a)for(const A of a)this.toElementFn?this.add(this.toElementFn(A)):this.add(A)}get elements(){return this._elements}get size(){return this.elements.length}get leaf(){return this.elements[this.size-1]??void 0}static heapify(a,t){return new oe(a,t)}add(a){return this._elements.push(a),this._bubbleUp(this.elements.length-1)}poll(){if(this.elements.length===0)return;const a=this.elements[0],t=this.elements.pop();return this.elements.length&&(this.elements[0]=t,this._sinkDown(0,this.elements.length>>1)),a}peek(){return this.elements[0]}isEmpty(){return this.size===0}clear(){this._elements=[]}refill(a){return this._elements=a,this.fix()}has(a){return this.elements.includes(a)}delete(a){const t=this.elements.indexOf(a);return!(t<0)&&(t===0?this.poll():t===this.elements.length-1?this.elements.pop():(this.elements.splice(t,1,this.elements.pop()),this._bubbleUp(t),this._sinkDown(t,this.elements.length>>1)),!0)}dfs(a="PRE"){const t=[],A=i=>{const s=2*i+1,n=s+1;i<this.size&&(a==="IN"?(A(s),t.push(this.elements[i]),A(n)):a==="PRE"?(t.push(this.elements[i]),A(s),A(n)):a==="POST"&&(A(s),A(n),t.push(this.elements[i])))};return A(0),t}toArray(){return[...this.elements]}clone(){return new oe(this,{comparator:this.comparator,toElementFn:this.toElementFn})}sort(){const a=[],t=new oe(this,{comparator:this.comparator});for(;t.size!==0;){const A=t.poll();A!==void 0&&a.push(A)}return a}fix(){const a=[];for(let t=Math.floor(this.size/2);t>=0;t--)a.push(this._sinkDown(t,this.elements.length>>1));return a}filter(a,t){const A=new oe([],{toElementFn:this.toElementFn,comparator:this.comparator});let i=0;for(const s of this)a.call(t,s,i,this)&&A.add(s),i++;return A}map(a,t,A,i){const s=new oe([],{comparator:t,toElementFn:A});let n=0;for(const c of this)s.add(a.call(i,c,n,this)),n++;return s}get comparator(){return this._comparator}*_getIterator(){for(const a of this.elements)yield a}_bubbleUp(a){const t=this.elements[a];for(;a>0;){const A=a-1>>1,i=this.elements[A];if(this.comparator(i,t)<=0)break;this.elements[a]=i,a=A}return this.elements[a]=t,!0}_sinkDown(a,t){const A=this.elements[a];for(;a<t;){let i=a<<1|1;const s=i+1;let n=this.elements[i];if(s<this.elements.length&&this.comparator(n,this.elements[s])>0&&(i=s,n=this.elements[s]),this.comparator(n,A)>=0)break;this.elements[a]=n,a=i}return this.elements[a]=A,!0}}(function(r){r[r.VISIT=0]="VISIT",r[r.PROCESS=1]="PROCESS"})(wa||(wa={}));class Ee extends oe{constructor(e=[],a){super(e,a)}clone(){return new Ee(this,{comparator:this.comparator,toElementFn:this.toElementFn})}filter(e,a){const t=new Ee([],{toElementFn:this.toElementFn,comparator:this.comparator});let A=0;for(const i of this)e.call(a,i,A,this)&&t.add(i),A++;return t}map(e,a,t,A){const i=new Ee([],{comparator:a,toElementFn:t});let s=0;for(const n of this)i.add(e.call(A,n,s,this)),s++;return i}}class Qe extends Ee{constructor(e=[],a){super(e,a)}clone(){return new Qe(this,{comparator:this.comparator,toElementFn:this.toElementFn})}filter(e,a){const t=new Qe([],{toElementFn:this.toElementFn,comparator:this.comparator});let A=0;for(const i of this)e.call(a,i,A,this)&&t.add(i),A++;return t}map(e,a,t,A){const i=new Qe([],{comparator:a,toElementFn:t});let s=0;for(const n of this)i.add(e.call(A,n,s,this)),s++;return i}}new d.Box3,new d.Vector3,new d.Vector3,new d.Vector3,new d.Vector3;const je=new d.Vector3,iA=new d.Vector3,at=new d.Matrix3;at.set(1,0,0,0,0,1,0,-1,0);class sA extends d.Mesh{constructor(e){const t=Math.min(Math.ceil(8)*512,Math.pow(512,2));let A=1*Math.pow(512,2);A=Math.floor(A/t)*t;const i=new d.WebGL3DRenderTarget(512,512,1,{magFilter:d.NearestFilter,minFilter:d.NearestFilter,anisotropy:0,depthBuffer:!1,resolveDepthBuffer:!1});e.initRenderTarget(i);const s=new d.WebGL3DRenderTarget(512,512,1,{magFilter:d.NearestFilter,minFilter:d.NearestFilter,anisotropy:0,type:d.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});s.texture.type=d.FloatType,e.initRenderTarget(s);const n=new d.WebGL3DRenderTarget(512,512,1,{magFilter:d.NearestFilter,minFilter:d.NearestFilter,anisotropy:0,type:d.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});n.texture.type=d.FloatType,e.initRenderTarget(n);const c=new d.WebGL3DRenderTarget(512,512,1,{magFilter:d.NearestFilter,minFilter:d.NearestFilter,anisotropy:0,type:d.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});c.texture.type=d.FloatType,e.initRenderTarget(c);const o=new d.ShaderMaterial({uniforms:{textureSize:{value:512},numSlices:{value:1},cov1Texture:{value:n.texture},cov2Texture:{value:c.texture},colorTexture:{value:i.texture},positionTexture:{value:s.texture},zUpToYUpMatrix3x3:{value:at},sizeMultiplier:{value:1},cropRadius:{value:Number.MAX_VALUE}},vertexShader:`
26
26
  precision highp float;
27
27
  precision highp int;
28
28
 
@@ -181,7 +181,7 @@ void main() {
181
181
 
182
182
  gl_FragColor = vec4(pow(color.xyz,vec3(1.0/2.2)), color.w * pow(alpha, 1.8));
183
183
 
184
- }`,transparent:!0,side:d.FrontSide,depthTest:!1,depthWrite:!1,depthFunc:d.AlwaysDepth}),b=new d.InstancedBufferGeometry,l=new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]);b.setIndex([0,2,1,2,3,1]),b.setAttribute("position",new d.BufferAttribute(l,3));const h=new Uint32Array(A),f=new d.InstancedBufferAttribute(h,1,!1);f.needsUpdate=!0,f.setUsage(d.DynamicDrawUsage),b.setAttribute("order",f),b.instanceCount=0,super(b,n),this.orderAttribute=f,this.textureSize=512,this.numTextures=1,this.batchSize=t,this.maxSplats=A,this.colorRenderTarget=i,this.positionRenderTarget=s,this.cov1RenderTarget=o,this.cov2RenderTarget=c,this.renderer=e,this.sortID=0,this.freeAddresses=new Qe;for(let I=0;I<this.maxSplats;I+=t)this.freeAddresses.add(I);this.worker=new Worker(new URL("/assets/PointsManager.worker-5fpGpVvf.js",typeof document>"u"?require("url").pathToFileURL(__filename).href:Te&&Te.tagName.toUpperCase()==="SCRIPT"&&Te.src||new URL("threedtiles.cjs.js",document.baseURI).href),{type:"module"}),this.sortListeners=[],this.worker.onmessage=I=>{const p=new Uint32Array(I.data.order);if(p.length>this.orderAttribute.count){const B=new d.InstancedBufferGeometry,m=new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]),C=[0,2,1,2,3,1];B.setIndex(C),B.setAttribute("position",new d.BufferAttribute(m,3));const w=new Uint32Array(this.maxSplats),k=new d.InstancedBufferAttribute(w,1,!1);k.needsUpdate=!0,k.setUsage(d.DynamicDrawUsage),B.setAttribute("order",k),B.instanceCount=0,this.geometry.dispose(),this.geometry=B,this.orderAttribute=k}this.orderAttribute.clearUpdateRanges(),this.orderAttribute.set(p),this.orderAttribute.addUpdateRange(0,p.length),this.orderAttribute.needsUpdate=!0,this.geometry.instanceCount=I.data.count,this.geometry.needsUpdate=!0;for(let B=this.sortListeners.length-1;B>=0;B--)this.sortListeners[B](I.data.id)&&this.sortListeners.splice(B,1)},this.cameraPosition=new d.Vector3(0,0,0),this.rotateOnAxis(new d.Vector3(1,0,0),.5*Math.PI),this.frustumCulled=!1,this.copyMaterial2D=new d.ShaderMaterial({uniforms:{sourceTexture:{}},vertexShader:xa(),fragmentShader:`
184
+ }`,transparent:!0,side:d.FrontSide,depthTest:!0,depthWrite:!0,depthFunc:d.AlwaysDepth}),b=new d.InstancedBufferGeometry,l=new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]);b.setIndex([0,2,1,2,3,1]),b.setAttribute("position",new d.BufferAttribute(l,3));const h=new Uint32Array(A),f=new d.InstancedBufferAttribute(h,1,!1);f.needsUpdate=!0,f.setUsage(d.DynamicDrawUsage),b.setAttribute("order",f),b.instanceCount=0,super(b,o),this.orderAttribute=f,this.textureSize=512,this.numTextures=1,this.batchSize=t,this.maxSplats=A,this.colorRenderTarget=i,this.positionRenderTarget=s,this.cov1RenderTarget=n,this.cov2RenderTarget=c,this.renderer=e,this.sortID=0,this.freeAddresses=new Qe;for(let I=0;I<this.maxSplats;I+=t)this.freeAddresses.add(I);this.worker=new Worker(new URL(""+(typeof document>"u"?require("url").pathToFileURL(__dirname+"/assets/PointsManager.worker-5fpGpVvf.js").href:new URL("assets/PointsManager.worker-5fpGpVvf.js",document.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"&&document.currentScript.src||document.baseURI).href),typeof document>"u"?require("url").pathToFileURL(__filename).href:Te&&Te.tagName.toUpperCase()==="SCRIPT"&&Te.src||new URL("threedtiles.cjs.js",document.baseURI).href),{type:"module"}),this.sortListeners=[],this.worker.onmessage=I=>{const p=new Uint32Array(I.data.order);if(p.length>this.orderAttribute.count){const B=new d.InstancedBufferGeometry,m=new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]),C=[0,2,1,2,3,1];B.setIndex(C),B.setAttribute("position",new d.BufferAttribute(m,3));const w=new Uint32Array(this.maxSplats),k=new d.InstancedBufferAttribute(w,1,!1);k.needsUpdate=!0,k.setUsage(d.DynamicDrawUsage),B.setAttribute("order",k),B.instanceCount=0,this.geometry.dispose(),this.geometry=B,this.orderAttribute=k}this.orderAttribute.clearUpdateRanges(),this.orderAttribute.set(p),this.orderAttribute.addUpdateRange(0,p.length),this.orderAttribute.needsUpdate=!0,this.geometry.instanceCount=I.data.count,this.geometry.needsUpdate=!0;for(let B=this.sortListeners.length-1;B>=0;B--)this.sortListeners[B](I.data.id)&&this.sortListeners.splice(B,1)},this.cameraPosition=new d.Vector3(0,0,0),this.rotateOnAxis(new d.Vector3(1,0,0),.5*Math.PI),this.frustumCulled=!1,this.copyMaterial2D=new d.ShaderMaterial({uniforms:{sourceTexture:{}},vertexShader:xa(),fragmentShader:`
185
185
  precision highp float;
186
186
 
187
187
  uniform sampler2D sourceTexture;
@@ -200,12 +200,12 @@ in vec2 vUv;
200
200
 
201
201
  void main() {
202
202
  gl_FragColor = texture( sourceTexture, vec3(vUv, w) );
203
- }`,transparent:!1,side:d.FrontSide,depthTest:!1,depthWrite:!1}),this.copyCamera=new d.OrthographicCamera(-.5,.5,.5,-.5,.1,10),this.copyCamera.position.z=1,this.copyScene=new d.Scene;const g=new d.PlaneGeometry(1,1);this.copyQuad=new d.Mesh(g,this.copyMaterial2D),this.copyScene.add(this.copyQuad),this.copyScene.matrixAutoUpdate=!1,this.copyQuad.matrixAutoUpdate=!1;const u=this;document.addEventListener("keyup",function(I){I.key==="a"&&(u.growTextures(),console.log(u.positionRenderTarget.depth))})}dispose(){this.material.dispose(),this.copyMaterial2D.dispose(),this.copyMaterial3D.dispose(),this.cov1RenderTarget.dispose(),this.cov2RenderTarget.dispose(),this.positionRenderTarget.dispose(),this.colorRenderTarget.dispose(),this.worker.terminate(),this.worker=null,this.geometry.dispose()}copyTex2D(e,a,t,A){this.copyMaterial2D.uniforms.sourceTexture.value=e;const i=this.renderer.autoClear,s=this.renderer.getRenderTarget();this.renderer.autoClear=!1;const o=t[2]-t[0],c=t[3]-t[1];a.viewport.set(t[0],t[1],o,c),this.renderer.setRenderTarget(a,A),this.renderer.render(this.copyScene,this.copyCamera),this.renderer.setRenderTarget(s),this.renderer.autoClear=i}copyTex3D(e,a,t){this.copyMaterial3D.uniforms.sourceTexture.value=e;const A=this.renderer.autoClear,i=this.renderer.getRenderTarget();this.renderer.autoClear=!1,this.copyQuad.material=this.copyMaterial3D;for(let s=0;s<t;s++)this.renderer.setRenderTarget(a,s),this.copyMaterial3D.uniforms.w.value=(s+.5)/t,this.renderer.render(this.copyScene,this.copyCamera);this.copyQuad.material=this.copyMaterial2D,this.renderer.setRenderTarget(i),this.renderer.autoClear=A}setSplatsSizeMultiplier(e){this.material.uniforms.sizeMultiplier.value=e}setSplatsCropRadius(e){this.material.uniforms.cropRadius.value=e}sort(e){!e&&this.cameraPosition?this.worker.postMessage({method:"sort",xyz:[this.cameraPosition.x,this.cameraPosition.z,-this.cameraPosition.y],id:this.sortID++}):this.cameraPosition&&e.equals(this.cameraPosition)||(this.cameraPosition.copy(e),this.worker.postMessage({method:"sort",xyz:[this.cameraPosition.x,this.cameraPosition.z,-this.cameraPosition.y],id:this.sortID++}))}raycast(e,a){}addSplatsTile(e,a,t,A){const i=this;e.count;const s=e.data?e.data.array:e.array,o=e.data&&e.data.isInterleavedBuffer?e.data.stride:3,c=e.data&&e.data.isInterleavedBuffer?e.offset:0,n=Math.ceil(s.length/(this.batchSize*o)),b=[],l=[];let h=()=>{};const f=new Float32Array(s.length/o*3);for(let u=0;u<s.length/3;u++)f[3*u]=s[u*o+c],f[3*u+1]=s[u*o+c+1],f[3*u+2]=s[u*o+c+2];h=(u,I,p)=>{const B=p*p;for(let m=0;m<f.length;m+=3){je.set(f[m],-f[m+2],f[m+1]);const C=iA.copy(je).sub(u.origin).dot(u.direction);C>0&&u.distanceSqToPoint(je)<B&&I.push({distance:C,point:je.clone(),type:"splat"})}},n>this.freeAddresses.size&&this.growTextures();for(let u=0;u<n;u++){const I=this.freeAddresses.poll();isNaN(I)&&console.log("insuficient texture size to store splats info"),b.push(I),l.push(3*I);const p=u*this.batchSize;this.addSplatsBatch(p,I,e,a,t,A)}i.worker.postMessage({method:"addBatches",insertionIndexes:l,positions:s.buffer,offset:c,stride:o,batchSize:i.batchSize},[s.buffer]);let g=!1;return{hide:()=>{g==1&&(g=!1,i.worker.postMessage({method:"hideBatches",insertionIndexes:l,xyz:[i.cameraPosition.x,i.cameraPosition.z,-i.cameraPosition.y],id:i.sortID++}))},show:u=>{g==0&&(g=!0);const I=i.sortID;i.sortListeners.push(p=>p>=I&&(u(),!0)),i.worker.postMessage({method:"showBatches",insertionIndexes:l,xyz:[i.cameraPosition.x,i.cameraPosition.z,-i.cameraPosition.y],id:i.sortID++})},remove:()=>{h=void 0,i.worker.postMessage({method:"removeBatches",insertionIndexes:l,xyz:[i.cameraPosition.x,i.cameraPosition.z,-i.cameraPosition.y],id:i.sortID++}),b.forEach(u=>i.freeAddresses.add(u))},sort:this.sort,raycast:h,isSplatsBatch:!0}}addSplatsBatch(e,a,t,A,i,s){const o=new Float32Array(4*this.batchSize),c=new Uint8Array(4*this.batchSize),n=new Float32Array(4*this.batchSize),b=new Float32Array(4*this.batchSize);for(let B=a;B<a+this.batchSize;B++){const m=B-a,C=4*m,w=e+m;if(w>=t.count)break;o[C]=t.getX(w),o[C+1]=t.getY(w),o[C+2]=t.getZ(w),Math.floor(255*A.getX(w)),Math.floor(255*A.getY(w)),Math.floor(255*A.getZ(w)),Math.floor(255*A.getW(w)),c[C]=Math.floor(255*A.getX(w)),c[C+1]=Math.floor(255*A.getY(w)),c[C+2]=Math.floor(255*A.getZ(w)),c[C+3]=Math.floor(255*A.getW(w)),n[C]=i.getX(w),n[C+1]=i.getY(w),n[C+2]=i.getZ(w),b[C]=s.getX(w),b[C+1]=s.getY(w),b[C+2]=s.getZ(w)}const l=Math.floor(a/Math.pow(this.textureSize,2)),h=Math.ceil(this.batchSize/this.textureSize),f=[0,a/this.textureSize-l*this.textureSize,this.textureSize];f.push(f[1]+h);const g=new d.DataTexture(o,this.textureSize,h,d.RGBAFormat,d.FloatType);g.generateMipmaps=!1,g.magFilter=d.NearestFilter,g.minFilter=d.NearestFilter,g.anisotropy=0,g.needsUpdate=!0,this.renderer.initTexture(g),this.renderer.initRenderTarget(this.positionRenderTarget),this.copyTex2D(g,this.positionRenderTarget,f,l),g.dispose();const u=new d.DataTexture(c,this.textureSize,h,d.RGBAFormat,d.UnsignedByteType);u.generateMipmaps=!1,u.magFilter=d.NearestFilter,u.minFilter=d.NearestFilter,u.anisotropy=0,u.needsUpdate=!0,this.renderer.initTexture(u),this.copyTex2D(u,this.colorRenderTarget,f,l),u.dispose();const I=new d.DataTexture(n,this.textureSize,h,d.RGBAFormat,d.FloatType);I.generateMipmaps=!1,I.magFilter=d.NearestFilter,I.minFilter=d.NearestFilter,I.anisotropy=0,I.needsUpdate=!0,this.renderer.initTexture(I),this.copyTex2D(I,this.cov1RenderTarget,f,l),I.dispose();const p=new d.DataTexture(b,this.textureSize,h,d.RGBAFormat,d.FloatType);p.generateMipmaps=!1,p.magFilter=d.NearestFilter,p.minFilter=d.NearestFilter,p.anisotropy=0,p.needsUpdate=!0,this.renderer.initTexture(p),this.copyTex2D(p,this.cov2RenderTarget,f,l),p.dispose()}growTextures(){for(let s=this.maxSplats;s<this.maxSplats+this.textureSize*this.textureSize;s+=this.batchSize)this.freeAddresses.add(s);this.maxSplats+=this.textureSize*this.textureSize;const e=this.numTextures+1,a=new d.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:d.NearestFilter,minFilter:d.NearestFilter,anisotropy:0,depthBuffer:!1,resolveDepthBuffer:!1});this.renderer.initRenderTarget(a),this.copyTex3D(this.colorRenderTarget.texture,a,this.numTextures),this.colorRenderTarget.dispose(),this.colorRenderTarget=a,this.material.uniforms.colorTexture.value=this.colorRenderTarget.texture;const t=new d.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:d.NearestFilter,minFilter:d.NearestFilter,anisotropy:0,type:d.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});t.texture.type=d.FloatType,this.renderer.initRenderTarget(t),this.copyTex3D(this.positionRenderTarget.texture,t,this.numTextures),this.positionRenderTarget.dispose(),this.positionRenderTarget=t,this.material.uniforms.positionTexture.value=this.positionRenderTarget.texture;const A=new d.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:d.NearestFilter,minFilter:d.NearestFilter,anisotropy:0,type:d.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});A.texture.type=d.FloatType,this.renderer.initRenderTarget(A),this.copyTex3D(this.cov1RenderTarget.texture,A,this.numTextures),this.cov1RenderTarget.dispose(),this.cov1RenderTarget=A,this.material.uniforms.cov1Texture.value=this.cov1RenderTarget.texture;const i=new d.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:d.NearestFilter,minFilter:d.NearestFilter,anisotropy:0,type:d.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});i.texture.type=d.FloatType,this.renderer.initRenderTarget(i),this.copyTex3D(this.cov2RenderTarget.texture,i,this.numTextures),this.cov2RenderTarget.dispose(),this.cov2RenderTarget=i,this.material.uniforms.cov2Texture.value=this.cov2RenderTarget.texture,this.numTextures=e,this.material.uniforms.numSlices.value=this.numTextures}}function xa(){return`
203
+ }`,transparent:!1,side:d.FrontSide,depthTest:!1,depthWrite:!1}),this.copyCamera=new d.OrthographicCamera(-.5,.5,.5,-.5,.1,10),this.copyCamera.position.z=1,this.copyScene=new d.Scene;const g=new d.PlaneGeometry(1,1);this.copyQuad=new d.Mesh(g,this.copyMaterial2D),this.copyScene.add(this.copyQuad),this.copyScene.matrixAutoUpdate=!1,this.copyQuad.matrixAutoUpdate=!1;const u=this;document.addEventListener("keyup",function(I){I.key==="a"&&(u.growTextures(),console.log(u.positionRenderTarget.depth))})}dispose(){this.material.dispose(),this.copyMaterial2D.dispose(),this.copyMaterial3D.dispose(),this.cov1RenderTarget.dispose(),this.cov2RenderTarget.dispose(),this.positionRenderTarget.dispose(),this.colorRenderTarget.dispose(),this.worker.terminate(),this.worker=null,this.geometry.dispose()}copyTex2D(e,a,t,A){this.copyMaterial2D.uniforms.sourceTexture.value=e;const i=this.renderer.autoClear,s=this.renderer.getRenderTarget();this.renderer.autoClear=!1;const n=t[2]-t[0],c=t[3]-t[1];a.viewport.set(t[0],t[1],n,c),this.renderer.setRenderTarget(a,A),this.renderer.render(this.copyScene,this.copyCamera),this.renderer.setRenderTarget(s),this.renderer.autoClear=i}copyTex3D(e,a,t){this.copyMaterial3D.uniforms.sourceTexture.value=e;const A=this.renderer.autoClear,i=this.renderer.getRenderTarget();this.renderer.autoClear=!1,this.copyQuad.material=this.copyMaterial3D;for(let s=0;s<t;s++)this.renderer.setRenderTarget(a,s),this.copyMaterial3D.uniforms.w.value=(s+.5)/t,this.renderer.render(this.copyScene,this.copyCamera);this.copyQuad.material=this.copyMaterial2D,this.renderer.setRenderTarget(i),this.renderer.autoClear=A}setSplatsSizeMultiplier(e){this.material.uniforms.sizeMultiplier.value=e}setSplatsCropRadius(e){this.material.uniforms.cropRadius.value=e}sort(e){!e&&this.cameraPosition?this.worker.postMessage({method:"sort",xyz:[this.cameraPosition.x,this.cameraPosition.z,-this.cameraPosition.y],id:this.sortID++}):this.cameraPosition&&e.equals(this.cameraPosition)||(this.cameraPosition.copy(e),this.worker.postMessage({method:"sort",xyz:[this.cameraPosition.x,this.cameraPosition.z,-this.cameraPosition.y],id:this.sortID++}))}raycast(e,a){}addSplatsTile(e,a,t,A){const i=this;e.count;const s=e.data?e.data.array:e.array,n=e.data&&e.data.isInterleavedBuffer?e.data.stride:3,c=e.data&&e.data.isInterleavedBuffer?e.offset:0,o=Math.ceil(s.length/(this.batchSize*n)),b=[],l=[];let h=()=>{};const f=new Float32Array(s.length/n*3);for(let u=0;u<s.length/3;u++)f[3*u]=s[u*n+c],f[3*u+1]=s[u*n+c+1],f[3*u+2]=s[u*n+c+2];h=(u,I,p)=>{const B=p*p;for(let m=0;m<f.length;m+=3){je.set(f[m],-f[m+2],f[m+1]);const C=iA.copy(je).sub(u.origin).dot(u.direction);C>0&&u.distanceSqToPoint(je)<B&&I.push({distance:C,point:je.clone(),type:"splat"})}},o>this.freeAddresses.size&&this.growTextures();for(let u=0;u<o;u++){const I=this.freeAddresses.poll();isNaN(I)&&console.log("insuficient texture size to store splats info"),b.push(I),l.push(3*I);const p=u*this.batchSize;this.addSplatsBatch(p,I,e,a,t,A)}i.worker.postMessage({method:"addBatches",insertionIndexes:l,positions:s.buffer,offset:c,stride:n,batchSize:i.batchSize},[s.buffer]);let g=!1;return{hide:()=>{g==1&&(g=!1,i.worker.postMessage({method:"hideBatches",insertionIndexes:l,xyz:[i.cameraPosition.x,i.cameraPosition.z,-i.cameraPosition.y],id:i.sortID++}))},show:u=>{g==0&&(g=!0);const I=i.sortID;i.sortListeners.push(p=>p>=I&&(u(),!0)),i.worker.postMessage({method:"showBatches",insertionIndexes:l,xyz:[i.cameraPosition.x,i.cameraPosition.z,-i.cameraPosition.y],id:i.sortID++})},remove:()=>{h=void 0,i.worker.postMessage({method:"removeBatches",insertionIndexes:l,xyz:[i.cameraPosition.x,i.cameraPosition.z,-i.cameraPosition.y],id:i.sortID++}),b.forEach(u=>i.freeAddresses.add(u))},sort:this.sort,raycast:h,isSplatsBatch:!0}}addSplatsBatch(e,a,t,A,i,s){const n=new Float32Array(4*this.batchSize),c=new Uint8Array(4*this.batchSize),o=new Float32Array(4*this.batchSize),b=new Float32Array(4*this.batchSize);for(let B=a;B<a+this.batchSize;B++){const m=B-a,C=4*m,w=e+m;if(w>=t.count)break;n[C]=t.getX(w),n[C+1]=t.getY(w),n[C+2]=t.getZ(w),Math.floor(255*A.getX(w)),Math.floor(255*A.getY(w)),Math.floor(255*A.getZ(w)),Math.floor(255*A.getW(w)),c[C]=Math.floor(255*A.getX(w)),c[C+1]=Math.floor(255*A.getY(w)),c[C+2]=Math.floor(255*A.getZ(w)),c[C+3]=Math.floor(255*A.getW(w)),o[C]=i.getX(w),o[C+1]=i.getY(w),o[C+2]=i.getZ(w),b[C]=s.getX(w),b[C+1]=s.getY(w),b[C+2]=s.getZ(w)}const l=Math.floor(a/Math.pow(this.textureSize,2)),h=Math.ceil(this.batchSize/this.textureSize),f=[0,a/this.textureSize-l*this.textureSize,this.textureSize];f.push(f[1]+h);const g=new d.DataTexture(n,this.textureSize,h,d.RGBAFormat,d.FloatType);g.generateMipmaps=!1,g.magFilter=d.NearestFilter,g.minFilter=d.NearestFilter,g.anisotropy=0,g.needsUpdate=!0,this.renderer.initTexture(g),this.renderer.initRenderTarget(this.positionRenderTarget),this.copyTex2D(g,this.positionRenderTarget,f,l),g.dispose();const u=new d.DataTexture(c,this.textureSize,h,d.RGBAFormat,d.UnsignedByteType);u.generateMipmaps=!1,u.magFilter=d.NearestFilter,u.minFilter=d.NearestFilter,u.anisotropy=0,u.needsUpdate=!0,this.renderer.initTexture(u),this.copyTex2D(u,this.colorRenderTarget,f,l),u.dispose();const I=new d.DataTexture(o,this.textureSize,h,d.RGBAFormat,d.FloatType);I.generateMipmaps=!1,I.magFilter=d.NearestFilter,I.minFilter=d.NearestFilter,I.anisotropy=0,I.needsUpdate=!0,this.renderer.initTexture(I),this.copyTex2D(I,this.cov1RenderTarget,f,l),I.dispose();const p=new d.DataTexture(b,this.textureSize,h,d.RGBAFormat,d.FloatType);p.generateMipmaps=!1,p.magFilter=d.NearestFilter,p.minFilter=d.NearestFilter,p.anisotropy=0,p.needsUpdate=!0,this.renderer.initTexture(p),this.copyTex2D(p,this.cov2RenderTarget,f,l),p.dispose()}growTextures(){for(let s=this.maxSplats;s<this.maxSplats+this.textureSize*this.textureSize;s+=this.batchSize)this.freeAddresses.add(s);this.maxSplats+=this.textureSize*this.textureSize;const e=this.numTextures+1,a=new d.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:d.NearestFilter,minFilter:d.NearestFilter,anisotropy:0,depthBuffer:!1,resolveDepthBuffer:!1});this.renderer.initRenderTarget(a),this.copyTex3D(this.colorRenderTarget.texture,a,this.numTextures),this.colorRenderTarget.dispose(),this.colorRenderTarget=a,this.material.uniforms.colorTexture.value=this.colorRenderTarget.texture;const t=new d.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:d.NearestFilter,minFilter:d.NearestFilter,anisotropy:0,type:d.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});t.texture.type=d.FloatType,this.renderer.initRenderTarget(t),this.copyTex3D(this.positionRenderTarget.texture,t,this.numTextures),this.positionRenderTarget.dispose(),this.positionRenderTarget=t,this.material.uniforms.positionTexture.value=this.positionRenderTarget.texture;const A=new d.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:d.NearestFilter,minFilter:d.NearestFilter,anisotropy:0,type:d.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});A.texture.type=d.FloatType,this.renderer.initRenderTarget(A),this.copyTex3D(this.cov1RenderTarget.texture,A,this.numTextures),this.cov1RenderTarget.dispose(),this.cov1RenderTarget=A,this.material.uniforms.cov1Texture.value=this.cov1RenderTarget.texture;const i=new d.WebGL3DRenderTarget(this.textureSize,this.textureSize,e,{magFilter:d.NearestFilter,minFilter:d.NearestFilter,anisotropy:0,type:d.FloatType,depthBuffer:!1,resolveDepthBuffer:!1});i.texture.type=d.FloatType,this.renderer.initRenderTarget(i),this.copyTex3D(this.cov2RenderTarget.texture,i,this.numTextures),this.cov2RenderTarget.dispose(),this.cov2RenderTarget=i,this.material.uniforms.cov2Texture.value=this.cov2RenderTarget.texture,this.numTextures=e,this.material.uniforms.numSlices.value=this.numTextures}}function xa(){return`
204
204
 
205
205
  out vec2 vUv;
206
206
 
207
207
  void main() {
208
208
  vUv = uv;
209
209
  gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
210
- }`}var z;const W=new Q.Sphere(new Q.Vector3(0,0,0),1),re=new $([0,0,0,1,0,0,0,1,0,0,0,1]);new Q.Box3;const ae=new Q.Vector3(0,0,0),he=new Q.Vector3(0,0,0),rA=new Q.Vector3(0,1,0),Me=new Q.Ray,Re=new Q.Matrix4;new Q.Matrix4,new Q.Frustum;const We=new Q.Vector3,Fe=[],ka=new Q.Quaternion,V={};function tt(){var r=[];for(let e in V)V.hasOwnProperty(e)&&V[e]>0&&r.push(e);return r}class sa extends Q.Object3D{constructor(e){super();const a=this;if(a.splatsMesh=e.splatsMesh,this.contentURL=[],e.domWidth&&e.domHeight?this.rendererSize=new Q.Vector2(e.domWidth,e.domHeight):this.rendererSize=new Q.Vector2(1e3,1e3),this.loadingStrategy=e.loadingStrategy?e.loadingStrategy.toUpperCase():"INCREMENTAL",this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.proxy=e.proxy,this.drawBoundingVolume=!!e.drawBoundingVolume&&e.drawBoundingVolume,this.displayErrors=e.displayErrors,this.displayCopyright=e.displayCopyright,e.queryParams&&(this.queryParams={...e.queryParams}),this.uuid=Ta(),e.tileLoader)this.tileLoader=e.tileLoader;else{const i={};i.meshCallback=e.meshCallback?e.meshCallback:(s,o)=>{s.material.wireframe=!1,s.material.side=Q.DoubleSide},i.pointsCallback=e.pointsCallback?e.pointsCallback:(s,o)=>{s.material.size=Math.pow(o,.33),s.material.sizeAttenuation=!0},i.proxy=this.proxy,i.renderer=e.renderer,i.dracoLoader=e.dracoLoader,i.ktx2Loader=e.ktx2Loader,this.tileLoader=new et(i),this.update=s=>{this.update(s),this.tileLoader.update()}}if(this.displayCopyright=!!e.displayCopyright,this.geometricErrorMultiplier=e.geometricErrorMultiplier?e.geometricErrorMultiplier:1,this.splatsCropRadius=Number.MAX_VALUE,this.splatsSizeMultiplier=1,this.renderer=e.renderer,this.meshCallback=e.meshCallback,this.loadOutsideView=e.loadOutsideView,this.cameraOnLoad=e.cameraOnLoad,this.parentTile=e.parentTile,this.occlusionCullingService=e.occlusionCullingService,this.static=e.static,this.occlusionCullingService&&(this.color=new Q.Color,this.color.setHex(16777215*Math.random()),this.colorID=Q.MathUtils.clamp(255*a.color.r,0,255)<<16^Q.MathUtils.clamp(255*a.color.g,0,255)<<8^Q.MathUtils.clamp(255*a.color.b,0,255)),this.static&&(this.matrixAutoUpdate=!1,this.matrixWorldAutoUpdate=!1),this.childrenTiles=[],this.meshContent=[],this.tileContent,this.refine,this.rootPath,this.geometricError,this.boundingVolume,this.json,this.materialVisibility=!1,this.level=e.level?e.level:0,this.hasMeshContent=0,this.hasUnloadedJSONContent=0,this.centerModel=e.centerModel,this.abortController=new AbortController,this.onLoadCallback=e.onLoadCallback,e.json)a._setup(e);else if(e.url){var t=e.url;if(a.queryParams){var A="";for(let i in a.queryParams)a.queryParams.hasOwnProperty(i)&&(A+="&"+i+"="+a.queryParams[i]);t.includes("?")?t+=A:t+="?"+A.substring(1)}(a.proxy?()=>fetch(a.proxy,{method:"POST",body:t,signal:a.abortController.signal}):()=>fetch(t,{signal:a.abortController.signal}))().then(i=>{if(!i.ok)throw new Error(`couldn't load "${e.url}". Request failed with status ${i.status} : ${i.statusText}`);i.json().then(s=>ia(s,t)).then(s=>{a._setup({rootPath:Ae.dirname(e.url),json:s})})}).catch(i=>{a.displayErrors&&Da(i)})}}setSplatsSizeMultiplier(e){this.splatsSizeMultiplier=e,this.splatsMesh&&this.splatsMesh.setSplatsSizeMultiplier(this.splatsSizeMultiplier)}setSplatsCropRadius(e){this.splatsCropRadius=e,this.splatsMesh&&this.splatsMesh.setSplatsCropRadius(this.splatsCropRadius)}updateMatrices(){this.updateMatrix(),this.static&&this.traverse(e=>{e.isObject3D&&(e.matrixWorldAutoUpdate=!0)}),this.updateMatrixWorld(!0),this.static&&this.traverse(e=>{e.isObject3D&&(e.matrixWorldAutoUpdate=!1)})}setCanvasSize(e,a){this.rendererSize.set(e,a)}async _setup(e){const a=this;if(e.json.extensionsRequired&&e.json.extensionsRequired.includes("JDULTRA_gaussian_splats")&&(a.splatsMesh=new sA(a.tileLoader.renderer),this.splatsMesh.setSplatsCropRadius(this.splatsCropRadius),this.splatsMesh.setSplatsSizeMultiplier(this.splatsSizeMultiplier),a.add(a.splatsMesh)),e.json.root?(a.json=e.json.root,a.json.refine||(a.json.refine=e.json.refine),a.json.geometricError||(a.json.geometricError=e.json.geometricError),a.json.transform||(a.json.transform=e.json.transform),a.json.boundingVolume||(a.json.boundingVolume=e.json.boundingVolume)):a.json=e.json,a.json.children||(a.json.getChildren?a.json.children=await a.json.getChildren():a.json.children=[]),a.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,a.json.refine?a.refine=a.json.refine:a.refine=e.parentRefine,a.json.geometricError?a.geometricError=a.json.geometricError:a.geometricError=e.parentGeometricError,a.json.transform){let A=new Q.Matrix4;A.elements=a.json.transform,a.applyMatrix4(A)}if(a.json.boundingVolume)if(a.json.boundingVolume.box)a.boundingVolume=new $(a.json.boundingVolume.box);else if(a.json.boundingVolume.region){const A=a.json.boundingVolume.region;a._transformWGS84ToCartesian(A[0],A[1],A[4],ae),a._transformWGS84ToCartesian(A[2],A[3],A[5],he),ae.lerp(he,.5),a.boundingVolume=new Q.Sphere(new Q.Vector3(ae.x,ae.y,ae.z),ae.distanceTo(he))}else if(a.json.boundingVolume.sphere){const A=a.json.boundingVolume.sphere;a.boundingVolume=new Q.Sphere(new Q.Vector3(A[0],A[1],A[2]),A[3])}else a.boundingVolume=e.parentBoundingVolume;else a.boundingVolume=e.parentBoundingVolume;function t(A){A.uri&&A.uri.includes("json")||A.url&&A.url.includes("json")?a.hasUnloadedJSONContent++:a.hasMeshContent++}if(a.json.content?(t(a.json.content),a.hasMeshContent==0&&(a.level=Math.max(0,a.parentTile?a.parentTile.level+.01:0)),a.loadingStrategy==="IMMEDIATE"?a._load(!0,!1):a._load()):a.json.contents&&(a.json.contents.forEach(A=>t(A)),a.hasMeshContent==0&&(a.level=Math.max(0,a.parentTile?a.parentTile.level+.01:0)),a.loadingStrategy==="IMMEDIATE"?a._load(!0,!1):a._load()),a.centerModel&&(he.copy(a.boundingVolume.center),this.json.boundingVolume.region&&(this._transformWGS84ToCartesian(.5*(this.json.boundingVolume.region[0]+this.json.boundingVolume.region[2]),.5*(this.json.boundingVolume.region[1]+this.json.boundingVolume.region[3]),.5*(this.json.boundingVolume.region[4]+this.json.boundingVolume.region[5]),ae),ka.setFromUnitVectors(ae.normalize(),rA.normalize()),a.applyQuaternion(ka)),he.applyMatrix4(a.matrix),a.position.sub(he),a.updateMatrices()),e.onLoadCallback&&a.onLoadCallback(a),a.isSetup=!0,a.level>0&&a.drawBoundingVolume&&(a.bbox&&console.log("double setup"),this.boundingVolume.aabb)){let A=this.boundingVolume.aabb.clone();A.applyMatrix4(this.matrixWorld),a.bbox=new Q.Box3Helper(A,new Q.Color(Math.random(),Math.random(),Math.random())),a.add(a.bbox),a.bbox.material.visible=!1}}_assembleURL(e,a){e.endsWith("/")||(e+="/");const t=new URL(e);let A=t.pathname.split("/").filter(s=>s!==""),i=a.split("/").filter(s=>s!=="");for(let s=1;s<=A.length&&!(s>=i.length);s++)if(A.slice(A.length-s,A.length).join("/")===i.slice(0,s).join("/")){for(let o=0;o<s;o++)A.pop();break}for(;i.length>0&&i[0]==="..";)A.pop(),i.shift();return`${t.protocol}//${t.host}/${[...A,...i].join("/")}`}_extractQueryParams(e,a){const t=new URL(e);for(let[A,i]of t.searchParams)a[A]=i;return t.search="",t.toString()}async _load(e=!0,a=!0){var t=this;if(!t.deleted){if(t.json.content)await A(t.json.content,null,e,a);else if(t.json.contents){let i=t.json.contents.map((s,o)=>A(s,o,e,a));Promise.all(i)}}async function A(i,s,o,c){let n;i.uri?n=i.uri:i.url&&(n=i.url);const b=/^(?:http|https|ftp|tcp|udp):\/\/\S+/;if(b.test(t.rootPath)?b.test(n)||(n=t._assembleURL(t.rootPath,n)):Ae.isAbsolute(t.rootPath)&&(n=t.rootPath+Ae.sep+n),n=t._extractQueryParams(n,t.queryParams),t.queryParams){var l="";for(let h in t.queryParams)t.queryParams.hasOwnProperty(h)&&(l+="&"+h+"="+t.queryParams[h]);n.includes("?")?n+=l:n+="?"+l.substring(1)}if(n)if(c&&(n.includes(".b3dm")||n.includes(".glb")||n.includes(".gltf"))){t.contentURL.push(n);try{t.tileLoader.get(t.abortController,t.uuid,n,h=>{t.deleted||(h.asset&&h.asset.copyright&&(h.asset.copyright.split(";").forEach(f=>{V[f]?V[f]++:V[f]=1}),t.displayCopyright&&Xe()),t.meshContent.push(h),t.splatsMesh||(h.traverse(f=>{if((f.isMesh||f.isPoints)&&f.layers.disable(0),f.isMesh&&t.occlusionCullingService){const g=f.geometry.attributes.position,u=[];for(let I=0;I<g.count;I++)u.push(t.color.r,t.color.g,t.color.b);f.geometry.setAttribute("color",new Q.Float32BufferAttribute(u,3))}}),t.add(h),t.updateMatrices()))},t.cameraOnLoad?()=>{let h=1;return(t.metric&&t.metric<0||t.deleted)&&(h=2),t.parentTile?t.parentTile._calculateDistanceToCamera(t.cameraOnLoad)*h*t.level:t._calculateDistanceToCamera(t.cameraOnLoad)*h*t.level}:()=>0,()=>t._getSiblings(),t.level,!t.json.boundingVolume.region,!!t.json.boundingVolume.region,t.geometricError,t.splatsMesh)}catch(h){t.displayErrors&&Da(h)}}else o&&n.includes(".json")&&(t.jsonRequested=n,t.tileLoader.get(t.abortController,t.uuid,n,async h=>{t.deleted||(h.rootPath=Ae.dirname(n),t.json.children.push(h),s==null?delete t.json.content:t.json.contents.splice(s,1),t.hasUnloadedJSONContent--)}))}}dispose(){const e=this;e.meshContent.forEach(a=>{a&&a.asset&&a.asset.copyright&&(a.asset.copyright.split(";").forEach(t=>{V[t]&&V[t]--}),e.displayCopyright&&Xe())}),e.meshContent=[],e.bbox&&e.bbox.dispose(),e.childrenTiles.forEach(a=>a.dispose()),e.deleted=!0,e.splatsMesh&&(e.meshContent.forEach(a=>a.hide()),e.parentTile||e.splatsMesh.dispose()),e.contentURL&&(e.contentURL.forEach(a=>{e.tileLoader.invalidate(a,e.uuid)}),e.contentURL=[]),e.abortController&&e.abortController.abort("tile not needed"),this.parent=null,this.dispatchEvent({type:"removed"})}_disposeMeshContent(){const e=this;if(!e.deleted){e.deleted=!0,e.abortController&&(e.abortController.abort("tile not needed"),e.abortController=new AbortController);for(let a=e.meshContent.length-1;a>=0;a--){const t=e.meshContent[a];t&&t.asset&&t.asset.copyright&&(t.asset.copyright.split(";").forEach(A=>{V[A]&&V[A]--}),e.displayCopyright&&Xe()),e.remove(t)}e.splatsMesh&&e.meshContent.forEach(a=>a.hide()),e.meshContent=[],e.contentURL.forEach(a=>{e.tileLoader.invalidate(a,e.uuid)}),e.contentURL=[]}}_disposeChildren(){var e=this;e.childrenTiles.forEach(a=>{a.dispose(),e.remove(a)}),e.childrenTiles=[]}raycast(e,a){if(this.splatsMesh){Me.copy(e.ray),Re.copy(this.matrixWorld).invert(),Me.applyMatrix4(Re);let t=!1;if(this.boundingVolume instanceof $)t=this.boundingVolume.intersectsRay(Me);else{if(!(this.boundingVolume instanceof Q.Sphere))return!1;t=ray.intersectsSphere(this.boundingVolume)}return t&&this.materialVisibility&&this.splatsReady&&(Fe.length=0,this.meshContent.forEach(A=>{A.isSplatsBatch&&(A.raycast(Me,Fe,e.params.Points.threshold),Fe.forEach(i=>{i.point.applyMatrix4(this.matrixWorld)}),a.push(...Fe))})),t}return super.raycast(e,a)}update(e){const a=new Q.Frustum;a.setFromProjectionMatrix(new Q.Matrix4().multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse));let t=[0],A=[0],i=[0],s=[0];return this.refine=="REPLACE"?this.loadingStrategy==="IMMEDIATE"?(this._updateImmediate(e,a),this._statsImmediate(i,t,s,A)):(this._update(e,a),this._stats(i,t,s,A)):(this._update(e,a),this._stats(i,t,s,A)),t>0&&(s[0]/=t[0]),this.splatsMesh&&(We.copy(e.position),Re.copy(this.matrixWorld).invert(),We.applyMatrix4(Re),this.splatsMesh.sort(We)),{numTilesLoaded:t[0],numTilesRendered:A[0],maxLOD:i[0],percentageLoaded:s[0]}}_updateImmediate(e,a){this._computeMetricRecursive(e,a),this._updateNodeVisibilityImmediate(),this._expandTreeImmediate(e),this.shouldBeVisible=this.metric>0||!!this.loadOutsideView,this._shouldBeVisibleUpdateImmediate(),this._trimTreeImmediate(),this._loadMeshImmediate()}_statsImmediate(e,a,t,A){e[0]=Math.max(e[0],this.level),(this.shouldBeVisible||this.materialVisibility)&&(a[0]++,this.materialVisibility&&t[0]++),this.materialVisibility&&A[0]++,this.childrenTiles.forEach(i=>{i._statsImmediate(e,a,t,A)})}_stats(e,a,t,A){e[0]=Math.max(e[0],this.level),this.hasMeshContent&&(a[0]++,this.meshContent.length==this.hasMeshContent&&t[0]++,this.materialVisibility&&A[0]++),this.childrenTiles.forEach(i=>{i._stats(e,a,t,A)})}_trimTreeImmediate(){if(this.metric!=null)if(this.hasMeshContent&&this.shouldBeVisible&&this.materialVisibility){if(self.splatsMesh&&!self.splatsReady)return;this._disposeChildren()}else this.childrenTiles.forEach(e=>{e._trimTreeImmediate()})}_updateNodeVisibilityImmediate(e=!1){const a=this;if(a.hasMeshContent)if(a.shouldBeVisible)a.meshContent.length==a.hasMeshContent?a.materialVisibility?a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(!0)}):(a._changeContentVisibility(!0),a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(e)})):a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(e)});else{if(!a.loadOutsideView&&a.metric<0)return a._changeContentVisibility(!1),a.meshContent.length>0&&a._disposeMeshContent(),void a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(!0)});if(!a.materialVisibility||a.splatsMesh&&!a.splatsReady)a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(e)});else if(e)a._changeContentVisibility(!1),a.meshContent.length>0&&a._disposeMeshContent(),a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(e)});else{let t=!0;a.childrenTiles.every(A=>!!A._isReadyImmediate()||(t=!1,!1)),t&&a.childrenTiles.length>0?(a._changeContentVisibility(!1),a.meshContent.length>0&&a._disposeMeshContent(),a.childrenTiles.forEach(A=>{A._updateNodeVisibilityImmediate(e)})):a.childrenTiles.forEach(A=>{A._updateNodeVisibilityImmediate(!a.splatsMesh||a.splatsReady)})}}else a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(e)})}_shouldBeVisibleUpdateImmediate(){const e=this;e.hasMeshContent?e.metric==null?e.shouldBeVisible=!1:e.metric<0?(e.shouldBeVisible=!!e.loadOutsideView,e.childrenTiles.forEach(a=>{a._setShouldNotBeVisibleRecursive()})):e.metric<e.geometricErrorMultiplier*e.geometricError?e.hasUnloadedJSONContent||(e.json&&e.json.children&&e.json.children.length>0?(e.shouldBeVisible=!1,e.childrenTiles.forEach(a=>{a.shouldBeVisible=!0,a._shouldBeVisibleUpdateImmediate()})):e.shouldBeVisible=!0):e.childrenTiles.forEach(a=>{a._setShouldNotBeVisibleRecursive()}):(e.childrenTiles.forEach(a=>{a.shouldBeVisible=!0,a._shouldBeVisibleUpdateImmediate()}),e.shouldBeVisible=!1)}_setShouldNotBeVisibleRecursive(){this.shouldBeVisible=!1,this.childrenTiles.forEach(e=>{e._setShouldNotBeVisibleRecursive()})}_loadMeshImmediate(){const e=this;e.hasMeshContent&&e.shouldBeVisible?e.meshContent.length<e.hasMeshContent&&e.contentURL.length==0&&(e.deleted=!1,e._load(!1,!0)):e.childrenTiles.forEach(a=>{a._loadMeshImmediate()})}_computeMetricRecursive(e,a){const t=this;t.metric=-1,t.isSetup&&(t.boundingVolume&&t.geometricError&&(t.metric=t._calculateUpdateMetric(e,a)),t.childrenTiles.forEach(A=>A._computeMetricRecursive(e,a)))}_expandTreeImmediate(e){const a=this;a.hasUnloadedJSONContent||(a.hasMeshContent?a.occlusionCullingService&&a.hasMeshContent&&!a.occlusionCullingService.hasID(a.colorID)||a.metric>=0&&a.metric<a.geometricErrorMultiplier*a.geometricError&&a.json&&a.json.children&&a.childrenTiles.length<a.json.children.length&&a._loadJsonChildren(e):a.json&&a.json.children&&a.childrenTiles.length<a.json.children.length&&a._loadJsonChildren(e)),a.childrenTiles.forEach(t=>t._expandTreeImmediate(e))}_update(e,a){const t=this;if(!t.isSetup)return;const A=t.materialVisibility;t.boundingVolume&&t.geometricError&&(t.metric=t._calculateUpdateMetric(e,a)),t.childrenTiles.forEach(i=>i._update(e,a)),function(i){if(t.hasMeshContent&&!(t.meshContent.length<t.hasMeshContent)){if(i<0)return t.inFrustum=!1,void t._changeContentVisibility(!!t.loadOutsideView);if(t.inFrustum=!0,t.childrenTiles.length==0)return void t._changeContentVisibility(!0);if(i>=t.geometricErrorMultiplier*t.geometricError)t._changeContentVisibility(!0);else if(i<t.geometricErrorMultiplier*t.geometricError&&t.refine=="REPLACE"){let s=!0;t.childrenTiles.every(o=>!!o._isReady()||(s=!1,!1)),s?t._changeContentVisibility(!1):t._changeContentVisibility(!0)}}}(t.metric),function(i){i<0&&t.hasMeshContent||t.occlusionCullingService&&t.hasMeshContent&&!t.occlusionCullingService.hasID(t.colorID)||(!t.hasMeshContent||i<=t.geometricErrorMultiplier*t.geometricError&&t.meshContent.length>0)&&t.json&&t.json.children&&t.childrenTiles.length!=t.json.children.length&&t._loadJsonChildren(e)}(t.metric),function(i,s){if(t.hasMeshContent){if(!t.inFrustum)return void t._disposeChildren();if(t.occlusionCullingService&&!s&&t.hasMeshContent&&t.meshContent.length>0&&t.materialVisibility&&t._areAllChildrenLoadedAndHidden())return t.splatsMesh&&this.materialVisibility&&!t.splatsReady?void 0:void t._disposeChildren();if(i>=t.geometricErrorMultiplier*t.geometricError){if(t.splatsMesh&&t.materialVisibility&&!t.splatsReady)return;t._disposeChildren()}}}(t.metric,A)}_loadJsonChildren(e){const a=this;for(let t=a.json.children.length-1;t>=0;t--)a.json.children[t].root||a.json.children[t].children||a.json.children[t].getChildren||a.json.children[t].content||a.json.children[t].contents||a.json.children.splice(t,1);a.json.children.forEach(t=>{let A=new sa({parentTile:a,queryParams:a.queryParams,parentGeometricError:a.geometricError,parentBoundingVolume:a.boundingVolume,parentRefine:a.refine,json:t,rootPath:a.rootPath,geometricErrorMultiplier:a.geometricErrorMultiplier,loadOutsideView:a.loadOutsideView,level:Math.floor(a.level)+1,tileLoader:a.tileLoader,cameraOnLoad:e,occlusionCullingService:a.occlusionCullingService,renderer:a.renderer,static:a.static,centerModel:!1,displayErrors:a.displayErrors,displayCopyright:a.displayCopyright,distanceBias:a.distanceBias,loadingStrategy:a.loadingStrategy,drawBoundingVolume:a.drawBoundingVolume,splatsMesh:a.splatsMesh});a.childrenTiles.push(A),a.add(A)}),a.updateMatrices(!0)}_areAllChildrenLoadedAndHidden(){let e=!0;const a=this;return this.childrenTiles.every(t=>{if(t.hasMeshContent){if(t.childrenTiles.length>0)return e=!1,!1;if(!t.metric<0)return!0;if(t.materialVisibility&&(!a.splatsMesh||a.splatsReady)||a.occlusionCullingService.hasID(t.colorID))return e=!1,!1}else if(!t._areAllChildrenLoadedAndHidden())return e=!1,!1;return!0}),e}_isReady(){if(this.metric==null)return!1;if(this.metric<0)return!0;if(this.hasUnloadedJSONContent)return!1;if(!this.hasMeshContent&&this.json.children.length==0&&!this.hasUnloadedJSONContent)return!0;if(!this.hasMeshContent||this.meshContent.length==0||!this.materialVisibility||self.splatsMesh&&!self.splatsReady){if(this.children.length>0){var e=!0;return this.childrenTiles.every(a=>!!a._isReady()||(e=!1,!1)),e}return!1}return!this.hasMeshContent||(this.meshContent.length<this.hasMeshContent?(console.log("jkhkjh"),!1):!(!this.materialVisibility||this.splatsMesh&&!this.splatsReady))}_isReadyImmediate(){return!!(this.materialVisibility||!this.loadOutsideView&&this.metric<0)||!!this.splatsMesh&&!!this.splatsReady}_changeContentVisibility(e){const a=this;if(a.bbox&&(a.bbox.material.visible=e),a.splatsMesh)e!=a.materialVisibility&&(a.meshContent.forEach(t=>{e&&t.isSplatsBatch?(a.splatsReady=!0,t.show(()=>{a.materialVisibility&&(a.splatsReady=!0)})):t.hide()}),a.materialVisibility=e);else{if(a.hasMeshContent&&a.meshContent.length>0&&(e?a.meshContent.forEach(t=>{t.traverse(A=>{(A.isMesh||A.isPoints)&&A.layers.enable(0)})}):a.meshContent.forEach(t=>{t.traverse(A=>{(A.isMesh||A.isPoints)&&A.layers.disable(0)})})),a.materialVisibility==e)return;a.materialVisibility=e}}_calculateUpdateMetric(e,a){let t=0;if(this.boundingVolume instanceof $){if(re.copy(this.boundingVolume),re.applyMatrix4(this.matrixWorld),!re.inFrustum(a))return-1;t=Math.max(0,re.distanceToPoint(e.position)-e.near)}else{if(!(this.boundingVolume instanceof Q.Sphere))return console.error("unsupported shape"),-1;if(W.copy(this.boundingVolume),W.applyMatrix4(this.matrixWorld),!a.intersectsSphere(W))return-1;t=Math.max(0,e.position.distanceTo(W.center)-W.radius-e.near)}if(t=Math.pow(t,this.distanceBias),t==0)return 0;const A=this.matrixWorld.getMaxScaleOnAxis();this.renderer&&this.renderer.getDrawingBufferSize(this.rendererSize);let i=this.rendererSize.y,s=e.fov;e.aspect<1&&(s*=e.aspect,i=this.rendererSize.x);let o=2*Math.tan(.5*s*.017453292519943295)*t;return 16*window.devicePixelRatio*o/(i*A)}_getSiblings(){const e=this,a=[];if(!e.parentTile)return a;let t=e.parentTile;for(;!t.hasMeshContent&&t.parentTile;)t=t.parentTile;return t.childrenTiles.forEach(A=>{if(A&&A!=e){for(;!A.hasMeshContent&&A.childrenTiles[0];)A=A.childrenTiles[0];a.push(A)}}),a}_calculateDistanceToCamera(e){return this.boundingVolume instanceof $?(re.copy(this.boundingVolume),re.applyMatrix4(this.matrixWorld),Math.max(0,re.distanceToPoint(e.position))):this.boundingVolume instanceof Q.Sphere?(W.copy(this.boundingVolume),W.applyMatrix4(this.matrixWorld),Math.max(0,e.position.distanceTo(W.center)-W.radius)):(console.error("unsupported shape"),-1)}setGeometricErrorMultiplier(e){this.geometricErrorMultiplier=e,this.splatsReady=!0,this.childrenTiles.forEach(a=>a.setGeometricErrorMultiplier(e))}setDistanceBias(e){this.distanceBias=e,this.childrenTiles.forEach(a=>a.setDistanceBias(e))}_transformWGS84ToCartesian(e,a,t,A){const i=6378137/Math.sqrt(1-.006694384442042*Math.pow(Math.sin(a),2)),s=Math.cos(a),o=Math.cos(e),c=Math.sin(a),n=i+t,b=n*s*o,l=n*s*Math.sin(e),h=(.993305615557957*i+t)*c;A.set(b,l,h)}}function Da(r){var e=document.createElement("div");e.textContent=r,e.style.position="fixed",e.style.top="10px",e.style.left="50%",e.style.transform="translateX(-50%)",e.style.padding="10px",e.style.backgroundColor="#ff8800",e.style.color="#ffffff",e.style.zIndex="9999",document.body.appendChild(e),setTimeout(function(){e.remove()},8e3)}function Xe(){z||((z=document.createElement("div")).style.position="fixed",z.style.bottom="20px",z.style.left="20px",z.style.color="white",z.style.textShadow="2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000",z.style.padding="10px",z.style.backgroundColor="rgba(0, 0, 0, 0.1)",document.body.appendChild(z));const r=tt();let e="";r.forEach(a=>{e+=a+", "}),e=e.slice(0,-2),z.textContent=e}const G=new Q.Sphere(new Q.Vector3(0,0,0),1),te=new Q.Vector3(0,0,0),Ze=new Q.Vector3(0,0,0),oA=new Q.Vector3(0,1,0),$e=new Q.Vector2,ja=new Q.Quaternion,Ma=new Q.Matrix4;class ra extends Q.Object3D{constructor(e){super();const a=this;if(e.queryParams&&(this.queryParams={...e.queryParams}),this.uuid=Ta(),e.tileLoader?this.tileLoader=e.tileLoader:console.error("an instanced tileset must be provided an InstancedTilesetLoader"),this.master=e.master,this.loadOutsideView=e.loadOutsideView,this.cameraOnLoad=e.cameraOnLoad,this.parentTile=e.parentTile,this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.childrenTiles=[],this.jsonChildren=[],this.meshContent=new Set,this.static=e.static,this.static&&(this.matrixAutoUpdate=!1,this.matrixWorldAutoUpdate=!1),this.tileContent,this.refinement,this.rootPath,this.geometricError,this.boundingVolume,this.json,this.materialVisibility=!1,this.inFrustum=!0,this.level=e.level?e.level:0,this.hasMeshContent=0,this.hasUnloadedJSONContent=0,this.centerModel=e.centerModel,this.deleted=!1,this.abortController=new AbortController,e.json)this.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,e.json.children&&(this.jsonChildren=e.json.children),a.setup(e);else if(e.url){this.loadJson=(i,s)=>{const o=Ae.dirname(s);a.setup({rootPath:o,json:i,onLoadCallback:e.onLoadCallback})};var t=e.url;if(a.queryParams){var A="";for(let i in a.queryParams)a.queryParams.hasOwnProperty(i)&&(A+="&"+i+"="+a.queryParams[i]);t.includes("?")?t+=A:t+="?"+A.substring(1)}a.tileLoader.get(a.abortController,t,a.uuid,a)}}async setup(e){const a=this;e.json.root?(a.json=e.json.root,!a.json.children&&a.json.getChildren&&(a.json.children=await a.json.getChildren()),a.jsonChildren=a.json.children,a.json.refinement||(a.json.refinement=e.json.refinement),a.json.geometricError||(a.json.geometricError=e.json.geometricError),a.json.transform||(a.json.transform=e.json.transform),a.json.boundingVolume||(a.json.boundingVolume=e.json.boundingVolume)):(a.json=e.json,!a.json.children&&a.json.getChildren&&(a.json.children=await a.json.getChildren(),a.jsonChildren=a.json.children)),a.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,a.json.refinement?a.refinement=a.json.refinement:a.refinement=e.parentRefinement,a.json.geometricError?a.geometricError=a.json.geometricError:a.geometricError=e.parentGeometricError;let t=new Q.Matrix4;if(a.json.transform&&!a.centerModel&&(t.elements=a.json.transform),a.applyMatrix4(t),a.parentTile&&a.parentTile.matrix&&(a.matrix.premultiply(a.parentTile.matrix),a.matrix.decompose(a.position,a.quaternion,a.scale)),a.matrixWorldNeedsUpdate=!0,a.updateWorldMatrix(!0,!0),a.json.boundingVolume)if(a.json.boundingVolume.box)a.boundingVolume=new $(a.json.boundingVolume.box);else if(a.json.boundingVolume.region){const i=a.json.boundingVolume.region;a.transformWGS84ToCartesian(i[0],i[1],i[4],te),a.transformWGS84ToCartesian(i[2],i[3],i[5],Ze),te.lerp(Ze,.5),a.boundingVolume=new Q.Sphere(new Q.Vector3(te.x,te.y,te.z),te.distanceTo(Ze))}else if(a.json.boundingVolume.sphere){const i=a.json.boundingVolume.sphere;a.boundingVolume=new Q.Sphere(new Q.Vector3(i[0],i[1],i[2]),i[3])}else a.boundingVolume=e.parentBoundingVolume;else a.boundingVolume=e.parentBoundingVolume;function A(i){i.uri&&i.uri.includes("json")||i.url&&i.url.includes("json")?a.hasUnloadedJSONContent++:a.hasMeshContent++}if(a.json.content?(A(a.json.content),a.load()):a.json.contents&&(a.json.contents.forEach(i=>A(i)),a.load()),a.centerModel){const i=new Q.Sphere;a.boundingVolume instanceof $?i.copy(a.boundingVolume.sphere):a.boundingVolume instanceof Q.Sphere&&i.copy(a.boundingVolume),this.json.boundingVolume.region&&(a.transformWGS84ToCartesian(.5*(a.json.boundingVolume.region[0]+a.json.boundingVolume.region[2]),.5*(a.json.boundingVolume.region[1]+a.json.boundingVolume.region[3]),.5*(a.json.boundingVolume.region[4]+a.json.boundingVolume.region[5]),te),ja.setFromUnitVectors(te.normalize(),oA.normalize()),a.master.applyQuaternion(ja),a.master.updateWorldMatrix(!1,!1)),Ma.makeTranslation(-i.center.x*a.scale.x,-i.center.y*a.scale.y,-i.center.z*a.scale.z),a.master.matrix.multiply(Ma),a.master.matrix.decompose(a.master.position,a.master.quaternion,a.master.scale)}a.isSetup=!0,e.onLoadCallback&&e.onLoadCallback(a)}isAbsolutePathOrURL(e){const a=/^(?:http|https|ftp|tcp|udp):\/\/\S+/.test(e),t=e.startsWith("/")&&!e.startsWith("//");return a||t}assembleURL(e,a){e.endsWith("/")||(e+="/");const t=new URL(e);let A=t.pathname.split("/").filter(s=>s!==""),i=a.split("/").filter(s=>s!=="");for(let s=1;s<=A.length&&!(s>=i.length);s++)if(A.slice(A.length-s,A.length).join("/")===i.slice(0,s).join("/")){for(let o=0;o<s;o++)A.pop();break}for(;i.length>0&&i[0]==="..";)A.pop(),i.shift();return`${t.protocol}//${t.host}/${[...A,...i].join("/")}`}extractQueryParams(e,a){const t=new URL(e);for(let[A,i]of t.searchParams)a[A]=i;return t.search="",t.toString()}load(){var e=this;function a(t){let A;t.uri?A=t.uri:t.url&&(A=t.url);const i=/^(?:http|https|ftp|tcp|udp):\/\/\S+/;if(i.test(e.rootPath)?i.test(A)||(A=e.assembleURL(e.rootPath,A)):Ae.isAbsolute(e.rootPath)&&(A=e.rootPath+Ae.sep+A),A=e.extractQueryParams(A,e.queryParams),e.queryParams){var s="";for(let o in e.queryParams)e.queryParams.hasOwnProperty(o)&&(s+="&"+o+"="+e.queryParams[o]);A.includes("?")?A+=s:A+="?"+s.substring(1)}A&&(A.includes(".b3dm")||A.includes(".glb")||A.includes(".gltf")?(e.contentURL=A,e.tileLoader.get(e.abortController,A,e.uuid,e,e.cameraOnLoad?()=>e.calculateDistanceToCamera(e.cameraOnLoad):()=>0,()=>e.getSiblings(),e.level,!e.json.boundingVolume.region,!!e.json.boundingVolume.region,e.geometricError)):A.includes(".json")&&e.tileLoader.get(e.abortController,A,e.uuid,e))}e.deleted||(e.json.content?a(e.json.content):e.json.contents&&e.json.contents.forEach(t=>a(t)))}loadMesh(e){this.deleted||this.meshContent.add(e)}loadJson(e,a){this.deleted||(this.json.children&&(this.jsonChildren=this.json.children),e.rootPath=Ae.dirname(a),this.jsonChildren.push(e),this.hasUnloadedJSONContent--)}dispose(){const e=this;e.childrenTiles.forEach(a=>a.dispose()),e.deleted=!0,e.abortController&&e.abortController.abort(),this.parent=null,this.parentTile=null,this.dispatchEvent({type:"removed"})}disposeChildren(){this.childrenTiles.forEach(e=>e.dispose()),this.childrenTiles=[]}_update(e,a){const t=this;function A(i){if(t.hasMeshContent&&!(t.meshContent.size<t.hasMeshContent)){if(i<0)return t.inFrustum=!1,void t.changeContentVisibility(!!t.loadOutsideView);if(t.inFrustum=!0,t.childrenTiles.length!=0){if(i>=t.master.geometricErrorMultiplier*t.geometricError)t.changeContentVisibility(!0);else if(i<t.master.geometricErrorMultiplier*t.geometricError){let s=!0;t.childrenTiles.every(o=>!!o.isReady()||(s=!1,!1)),s&&t.changeContentVisibility(!1)}}else t.changeContentVisibility(!0)}}t.isSetup&&(t.materialVisibility,t.boundingVolume&&t.geometricError&&(t.metric=t.calculateUpdateMetric(e,a)),t.childrenTiles.forEach(i=>i._update(e,a)),A(t.metric),function(i){i<0&&t.hasMeshContent||(!t.hasMeshContent&&t.rootPath||i<t.master.geometricErrorMultiplier*t.geometricError&&t.meshContent.size>0)&&t.json&&t.jsonChildren&&t.childrenTiles.length!=t.jsonChildren.length&&t.jsonChildren.forEach(s=>{if(!(s.root||s.children||s.getChildren||s.content||s.contents))return;let o=new ra({parentTile:t,queryParams:t.queryParams,parentGeometricError:t.geometricError,parentBoundingVolume:t.boundingVolume,parentRefinement:t.refinement,json:s,rootPath:t.rootPath,loadOutsideView:t.loadOutsideView,level:t.level+1,tileLoader:t.tileLoader,cameraOnLoad:e,master:t.master,centerModel:!1});t.childrenTiles.push(o)})}(t.metric),function(i){if(t.hasMeshContent){if(!t.inFrustum)return t.disposeChildren(),void A(i);i>=t.master.geometricErrorMultiplier*t.geometricError&&(t.disposeChildren(),A(i))}}(t.metric))}areAllChildrenLoadedAndHidden(){let e=!0;return this.childrenTiles.every(a=>{if(a.hasMeshContent){if(a.childrenTiles.length>0)return e=!1,!1;if(!a.inFrustum)return!0;if(!a.materialVisibility||a.meshesToDisplay!=a.meshesDisplayed)return e=!1,!1}else if(!a.areAllChildrenLoadedAndHidden())return e=!1,!1;return!0}),e}isReady(){if(!this.inFrustum)return!0;if(this.hasUnloadedJSONContent)return!1;if(!this.hasMeshContent||this.meshContent.size==0||!this.materialVisibility){if(this.childrenTiles.length>0){var e=!0;return this.childrenTiles.every(a=>!!a.isReady()||(e=!1,!1)),e}return!1}return!this.hasMeshContent||!(this.meshContent.size<this.hasMeshContent)&&!!this.materialVisibility}changeContentVisibility(e){this.materialVisibility=e}calculateUpdateMetric(e,a){if(this.boundingVolume instanceof $){if(G.copy(this.boundingVolume.sphere),G.applyMatrix4(this.matrixWorld),!a.intersectsSphere(G))return-1}else{if(!(this.boundingVolume instanceof Q.Sphere))return console.error("unsupported shape"),-1;if(G.copy(this.boundingVolume),G.applyMatrix4(this.matrixWorld),!a.intersectsSphere(G))return-1}let t=Math.max(0,e.position.distanceTo(G.center)-G.radius);if(t=Math.pow(t,this.distanceBias),t==0)return 0;const A=this.matrixWorld.getMaxScaleOnAxis();this.master._renderSize($e);let i=$e.y,s=e.fov;e.aspect<1&&(s*=e.aspect,i=$e.x);let o=2*Math.tan(.5*s*.017453292519943295)*t;return 16*window.devicePixelRatio*o/(i*A)}getSiblings(){const e=this,a=[];if(!e.parentTile)return a;let t=e.parentTile;for(;!t.hasMeshContent&&t.parentTile;)t=t.parentTile;return t.childrenTiles.forEach(A=>{if(A&&A!=e){for(;!A.hasMeshContent&&A.childrenTiles[0];)A=A.childrenTiles[0];a.push(A)}}),a}calculateDistanceToCamera(e){return this.boundingVolume instanceof $?(G.copy(this.boundingVolume.sphere),G.applyMatrix4(this.matrixWorld)):this.boundingVolume instanceof Q.Sphere?(G.copy(this.boundingVolume),G.applyMatrix4(this.matrixWorld)):console.error("unsupported shape"),Math.max(0,e.position.distanceTo(G.center)-G.radius)}getWorldMatrix(){return this.matrixWorld}transformWGS84ToCartesian(e,a,t,A){const i=6378137/Math.sqrt(1-.006694384442042*Math.pow(Math.sin(a),2)),s=Math.cos(a),o=Math.cos(e),c=Math.sin(a),n=i+t,b=n*s*o,l=n*s*Math.sin(e),h=(.993305615557957*i+t)*c;A.set(b,l,h)}}class nA extends Q.Object3D{constructor(e){super(),e.master=this,e.domWidth&&e.domHeight?this.rendererSize=new Q.Vector2(e.domWidth,e.domHeight):this.rendererSize=new Q.Vector2(1e3,1e3),this.renderer=e.renderer,this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.geometricErrorMultiplier=e.geometricErrorMultiplier?e.geometricErrorMultiplier:1,this.tileset=new ra(e),e.static&&(this.matrixAutoUpdate=!1),this.tileLoader=e.tileLoader}_renderSize(e){this.renderer?this.renderer.getDrawingBufferSize(e):e.copy(this.rendererSize)}setCanvasSize(e,a){this.rendererSize.set(e,a)}update(e,a){if(a)this.tileset._update(e,a);else{const t=new Q.Frustum;t.setFromProjectionMatrix(new Q.Matrix4().multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse)),this.tileset._update(e,t)}}setGeometricErrorMultiplier(e){this.geometricErrorMultiplier=e||1}}class cA{constructor(e){const a=this;a.scene=e,a.instancedTiles=[],a.instancedMesh,a.reuseableMatrix=new Q.Matrix4}addInstance(e){const a=this;e.added=!0,e.listOMesh=a.instancedTiles,a.instancedTiles.push(e),a.instancedMesh&&e.loadMesh(a.instancedMesh)}addToScene(){const e=this;e.instancedMesh.setMatrixAt(0,new Q.Matrix4),e.instancedMesh.instanceMatrix.needsUpdate=!0,e.instancedMesh.count=1,e.scene.add(e.instancedMesh),e.instancedMesh.onAfterRender=()=>{delete e.instancedMesh.onAfterRender,e.instancedMesh.displayedOnce=!0}}setObject(e){const a=this;a.instancedMesh=e,a.instancedMesh.matrixAutoUpdate=!1,a.instancedMesh.matrixWorldAutoUpdate=!1,a.scene.children.includes(e)||this.addToScene();for(let t=0;t<a.instancedTiles.length;t++)a.instancedTiles[t].loadMesh(a.instancedMesh)}update(){const e=this;for(let a=e.instancedTiles.length-1;a>=0;a--)e.instancedTiles[a].deleted&&e.instancedTiles.splice(a,1);if(e.instancedMesh){e.instancedMesh.count=0,e.instancedMesh.instancedTiles=[];for(let a=0;a<e.instancedTiles.length;a++)e.instancedTiles[a].meshContent.add(e.instancedMesh),e.instancedTiles[a].materialVisibility&&(e.instancedMesh.count++,e.reuseableMatrix.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),e.reuseableMatrix.multiply(e.instancedTiles[a].matrixWorld),e.reuseableMatrix.multiply(e.instancedMesh.baseMatrix),e.instancedMesh.setMatrixAt(e.instancedMesh.count-1,e.reuseableMatrix),e.instancedMesh.instancedTiles.push(e.instancedTiles[a]));e.instancedMesh.instanceMatrix.needsUpdate=!0,e.instancedMesh.needsUpdate=!0,e.instancedMesh.computeBoundingSphere()}}getCount(){return this.instancedTiles.length}dispose(){const e=this;return!(e.instancedTiles.length>0)&&!!e.instancedMesh&&(e.scene.remove(e.instancedMesh),e.instancedMesh.traverse(a=>{if(a.dispose&&a.dispose(),a.material)if(a.material.length)for(let t=0;t<a.material.length;++t)a.material[t].dispose();else a.material.dispose();a.geometry&&a.geometry.dispose()}),e.instancedMesh.dispose(),!0)}}class dA{constructor(){const e=this;e.count=0,e.json,e.instancedTiles=[]}addInstance(e){this.instancedTiles.push(e),this.json&&e.loadJson(this.json,this.url)}setObject(e,a){const t=this;t.json=e,t.url=a;for(let A=0;A<t.instancedTiles.length;A++)t.instancedTiles[A].loadJson(t.json,t.url)}getCount(){return this.instancedTiles.length}update(){const e=this;for(let a=e.instancedTiles.length-1;a>=0;a--)e.instancedTiles[a].deleted&&e.instancedTiles.splice(a,1)}dispose(){return!(!this.json||this.instancedTiles.length!=0)}}let oe=0;async function bA(r){return new Promise(e=>{const a=setInterval(()=>{r.hasDracoLoader&&!r.dracoLoader||r.hasKTX2Loader&&!r.ktx2Loader||(clearInterval(a),e())},10)})}exports.InstancedOGC3DTile=nA,exports.InstancedTileLoader=class{constructor(r,e){if(this.zUpToYUpMatrix=new Q.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1),this.maxCachedItems=100,this.maxInstances=1,this.proxy=e.proxy,e&&(this.meshCallback=e.meshCallback,this.pointsCallback=e.pointsCallback,e.maxCachedItems&&(this.maxCachedItems=e.maxCachedItems),e.maxInstances&&(this.maxInstances=e.maxInstances)),this.gltfLoader=new va,e&&e.dracoLoader)this.gltfLoader.setDRACOLoader(e.dracoLoader),this.hasDracoLoader=!0;else{const a=new Ua;a.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),this.gltfLoader.setDRACOLoader(a),this.gltfLoader.hasDracoLoader=!0}if(e&&e.ktx2Loader)this.gltfLoader.setKTX2Loader(e.ktx2Loader),this.hasKTX2Loader=!0;else if(e&&e.renderer){const a=new U;a.setTranscoderPath("https://storage.googleapis.com/ogc-3d-tiles/basis/").detectSupport(e.renderer),this.gltfLoader.setKTX2Loader(a),this.gltfLoader.hasKTX2Loader=!0}this.gltfLoader.setMeshoptDecoder($a),this.hasMeshOptDecoder=!0,this.b3dmDecoder=new Sa(this.gltfLoader),this.cache=new Ra.LinkedHashMap,this.scene=r,this.ready=[],this.downloads=[],this.nextReady=[],this.nextDownloads=[]}update(){const r=this;r._checkSize(),r.cache._data.forEach(e=>{e.update()}),oe<8&&r._download(),r._loadBatch()}_download(){const r=this;if(r.nextDownloads.length!=0||(r._getNextDownloads(),r.nextDownloads.length!=0))for(;r.nextDownloads.length>0;){const a=r.nextDownloads.shift();if(a){if(a.path.includes(".b3dm")&&(e=r.proxy?()=>fetch(r.proxy,{method:"POST",body:a.path}):()=>fetch(a.path),oe++,e().then(t=>{if(!t.ok)throw console.error("could not load tile with path : "+a.path),new Error(`couldn't load "${a.path}". Request failed with status ${t.status} : ${t.statusText}`);return t.arrayBuffer()}).then(t=>this.b3dmDecoder.parseB3DMInstanced(t,A=>{r.meshCallback(A,a.geometricError)},r.maxInstances,a.sceneZupToYup,a.meshZupToYup)).then(t=>{t.frustumCulled=!1,a.tile.setObject(t),r.ready.unshift(a)}).catch(t=>console.error(t)).finally(()=>{oe--})),a.path.includes(".glb")||a.path.includes(".gltf"))e=r.proxy?()=>fetch(r.proxy,{method:"POST",body:a.path}):()=>fetch(a.path),oe++,e().then(t=>{if(!t.ok)throw new Error("missing content");return t.arrayBuffer()}).then(async t=>{await bA(this.gltfLoader),this.gltfLoader.parse(t,null,A=>{let i;A.scene.asset=A.asset,a.sceneZupToYup&&A.scene.applyMatrix4(this.zUpToYUpMatrix),A.scene.traverse(s=>{s.geometricError=a.geometricError,s.isMesh&&(a.meshZupToYup&&s.applyMatrix4(this.zUpToYUpMatrix),r.meshCallback&&r.meshCallback(s,s.geometricError)),s.isPoints&&console.error("instanced point cloud is not supported")}),A.scene.updateWorldMatrix(!1,!0),A.scene.traverse(s=>{s.isMesh&&(i=new Q.InstancedMesh(s.geometry,s.material,r.maxInstances),i.baseMatrix=s.matrixWorld)}),r.ready.unshift(a),i?(i.frustumCulled=!1,a.tile.setObject(i)):A.scene.traverse(s=>{s.dispose&&s.dispose(),s.material&&s.material.dispose()})})},t=>{console.error("could not load tile : "+a.path)}).finally(()=>{oe--});else if(a.path.includes(".json")){var e;e=r.proxy?()=>fetch(r.proxy,{method:"POST",body:a.path}):()=>fetch(a.path),oe++,e().then(t=>{if(!t.ok)throw console.error("could not load tile with path : "+a.path),new Error(`couldn't load "${a.path}". Request failed with status ${t.status} : ${t.statusText}`);return t.json()}).then(t=>ia(t,a.path)).then(t=>{a.tile.setObject(t,a.path),r.ready.unshift(a)}).catch(t=>console.error(t)).finally(()=>{oe--})}}}}_loadBatch(){return this.nextReady.length==0&&(this._getNextReady(),this.nextReady.length==0)?0:this.nextReady.shift()?1:0}_getNextReady(){let r=Number.MAX_VALUE,e=-1;for(let a=this.ready.length-1;a>=0;a--)this.ready[a].distanceFunction||this.nextReady.push(this.ready.splice(a,1)[0]);if(!(this.nextReady.length>0)){for(let a=this.ready.length-1;a>=0;a--){const t=this.ready[a].distanceFunction()*this.ready[a].level;t<r&&(r=t,e=a)}if(e>=0){const a=this.ready.splice(e,1).pop();this.nextReady.push(a);const t=a.getSiblings();for(let A=this.ready.length-1;A>=0;A--)t.includes(this.ready[A].uuid)&&this.nextready.push(this.ready.splice(A,1).pop())}}}get(r,e,a,t,A,i,s,o,c,n){const b=this,l=function(f){for(var g=f.split("/"),u=[],I=0,p=0;p<g.length;p++){var B=g[p];B!=="."&&B!==""&&B!==".."?u[I++]=B:B===".."&&I>0&&I--}if(I===0)return"/";var m="";for(p=0;p<I;p++)m+="/"+u[p];return m}(e);if(!(e.includes(".b3dm")||e.includes(".json")||e.includes(".glb")||e.includes(".gltf")))return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");const h=b.cache.get(l);if(h)h.addInstance(t);else if(e.includes(".b3dm")||e.includes(".glb")||e.includes(".gltf")){const f=new cA(b.scene);f.addInstance(t),b.cache.put(l,f);const g=new AbortController;r.signal.addEventListener("abort",()=>{f.getCount()==0&&g.abort()}),this.downloads.push({abortController:g,tile:f,key:l,path:e,distanceFunction:A,getSiblings:i,level:s,uuid:a,sceneZupToYup:o,meshZupToYup:c,geometricError:n,shouldDoDownload:()=>!0})}else if(e.includes(".json")){const f=new dA;f.addInstance(t),b.cache.put(l,f);const g=new AbortController;r.signal.addEventListener("abort",()=>{f.getCount()==0&&g.abort()}),this.downloads.push({abortController:g,tile:f,key:l,path:e,distanceFunction:A,getSiblings:i,level:s,shouldDoDownload:()=>!0})}}_getNextDownloads(){let r=Number.MAX_VALUE,e=-1;for(let a=this.downloads.length-1;a>=0;a--){const t=this.downloads[a];t.shouldDoDownload()?t.distanceFunction||this.nextDownloads.push(this.downloads.splice(a,1)[0]):this.downloads.splice(a,1)}if(!(this.nextDownloads.length>0)){for(let a=this.downloads.length-1;a>=0;a--){const t=this.downloads[a],A=t.distanceFunction()*t.level;A<r&&(r=A,e=a)}if(e>=0){const a=this.downloads.splice(e,1).pop();this.nextDownloads.push(a);const t=a.getSiblings();for(let A=this.downloads.length-1;A>=0;A--)t.includes(this.downloads[A].uuid)&&this.nextDownloads.push(this.downloads.splice(A,1).pop())}}}_checkSize(){const r=this;let e=0;for(;r.cache.size()>r.maxCachedItems&&e<r.cache.size();){e++;const a=r.cache.head();r.cache.remove(a.key),a.value.dispose()||r.cache.put(a.key,a.value)}}},exports.OGC3DTile=sa,exports.OcclusionCullingService=class{constructor(){this.cullMap=[],this.cullMaterial=new Q.MeshBasicMaterial({vertexColors:!0}),this.cullMaterial.side=Q.FrontSide,this.cullTarget=this._createCullTarget(),this.cullPixels=new Uint8Array(4*this.cullTarget.width*this.cullTarget.height)}setSide(r){this.cullMaterial.side=r}_createCullTarget(){const r=new Q.WebGLRenderTarget(Math.floor(.05*window.innerWidth),Math.floor(.05*window.innerHeight));return r.texture.format=Q.RGBAFormat,r.texture.colorSpace=Q.LinearSRGBColorSpace,r.texture.minFilter=Q.NearestFilter,r.texture.magFilter=Q.NearestFilter,r.texture.generateMipmaps=!1,r.stencilBuffer=!1,r.depthBuffer=!0,r.depthTexture=new Q.DepthTexture,r.depthTexture.format=Q.DepthFormat,r.depthTexture.type=Q.UnsignedShortType,r}update(r,e,a){let t=e.getRenderTarget(),A=r.overrideMaterial;r.overrideMaterial=this.cullMaterial,e.setRenderTarget(this.cullTarget),e.render(r,a),r.overrideMaterial=A,e.setRenderTarget(t),e.readRenderTargetPixels(this.cullTarget,0,0,this.cullTarget.width,this.cullTarget.height,this.cullPixels),this.cullMap=[];for(let i=0;i<this.cullPixels.length;i+=4){const s=Q.MathUtils.clamp(this.cullPixels[i],0,255)<<16^Q.MathUtils.clamp(this.cullPixels[i+1],0,255)<<8^Q.MathUtils.clamp(this.cullPixels[i+2],0,255);this.cullMap[s]=!0}}hasID(r){return this.cullMap[r]}},exports.TileLoader=et,exports.getOGC3DTilesCopyrightInfo=tt;
210
+ }`}var z;const W=new Q.Sphere(new Q.Vector3(0,0,0),1),re=new $([0,0,0,1,0,0,0,1,0,0,0,1]);new Q.Box3;const ae=new Q.Vector3(0,0,0),he=new Q.Vector3(0,0,0),rA=new Q.Vector3(0,1,0),Me=new Q.Ray,Re=new Q.Matrix4;new Q.Matrix4,new Q.Frustum;const We=new Q.Vector3,Fe=[],ka=new Q.Quaternion,V={};function tt(){var r=[];for(let e in V)V.hasOwnProperty(e)&&V[e]>0&&r.push(e);return r}class sa extends Q.Object3D{constructor(e){super();const a=this;if(a.splatsMesh=e.splatsMesh,this.contentURL=[],e.domWidth&&e.domHeight?this.rendererSize=new Q.Vector2(e.domWidth,e.domHeight):this.rendererSize=new Q.Vector2(1e3,1e3),this.loadingStrategy=e.loadingStrategy?e.loadingStrategy.toUpperCase():"INCREMENTAL",this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.proxy=e.proxy,this.drawBoundingVolume=!!e.drawBoundingVolume&&e.drawBoundingVolume,this.displayErrors=e.displayErrors,this.displayCopyright=e.displayCopyright,e.queryParams&&(this.queryParams={...e.queryParams}),this.uuid=Ta(),e.tileLoader)this.tileLoader=e.tileLoader;else{const i={};i.meshCallback=e.meshCallback?e.meshCallback:(s,n)=>{s.material.wireframe=!1,s.material.side=Q.DoubleSide},i.pointsCallback=e.pointsCallback?e.pointsCallback:(s,n)=>{s.material.size=Math.pow(n,.33),s.material.sizeAttenuation=!0},i.proxy=this.proxy,i.renderer=e.renderer,i.dracoLoader=e.dracoLoader,i.ktx2Loader=e.ktx2Loader,this.tileLoader=new et(i),this.update=s=>{this.update(s),this.tileLoader.update()}}if(this.displayCopyright=!!e.displayCopyright,this.geometricErrorMultiplier=e.geometricErrorMultiplier?e.geometricErrorMultiplier:1,this.splatsCropRadius=Number.MAX_VALUE,this.splatsSizeMultiplier=1,this.renderer=e.renderer,this.meshCallback=e.meshCallback,this.loadOutsideView=e.loadOutsideView,this.cameraOnLoad=e.cameraOnLoad,this.parentTile=e.parentTile,this.occlusionCullingService=e.occlusionCullingService,this.static=e.static,this.occlusionCullingService&&(this.color=new Q.Color,this.color.setHex(16777215*Math.random()),this.colorID=Q.MathUtils.clamp(255*a.color.r,0,255)<<16^Q.MathUtils.clamp(255*a.color.g,0,255)<<8^Q.MathUtils.clamp(255*a.color.b,0,255)),this.static&&(this.matrixAutoUpdate=!1,this.matrixWorldAutoUpdate=!1),this.childrenTiles=[],this.meshContent=[],this.tileContent,this.refine,this.rootPath,this.geometricError,this.boundingVolume,this.json,this.materialVisibility=!1,this.level=e.level?e.level:0,this.hasMeshContent=0,this.hasUnloadedJSONContent=0,this.centerModel=e.centerModel,this.abortController=new AbortController,this.onLoadCallback=e.onLoadCallback,e.json)a._setup(e);else if(e.url){var t=e.url;if(a.queryParams){var A="";for(let i in a.queryParams)a.queryParams.hasOwnProperty(i)&&(A+="&"+i+"="+a.queryParams[i]);t.includes("?")?t+=A:t+="?"+A.substring(1)}(a.proxy?()=>fetch(a.proxy,{method:"POST",body:t,signal:a.abortController.signal}):()=>fetch(t,{signal:a.abortController.signal}))().then(i=>{if(!i.ok)throw new Error(`couldn't load "${e.url}". Request failed with status ${i.status} : ${i.statusText}`);i.json().then(s=>ia(s,t)).then(s=>{a._setup({rootPath:Ae.dirname(e.url),json:s})})}).catch(i=>{a.displayErrors&&Da(i)})}}setSplatsSizeMultiplier(e){this.splatsSizeMultiplier=e,this.splatsMesh&&this.splatsMesh.setSplatsSizeMultiplier(this.splatsSizeMultiplier)}setSplatsCropRadius(e){this.splatsCropRadius=e,this.splatsMesh&&this.splatsMesh.setSplatsCropRadius(this.splatsCropRadius)}updateMatrices(){this.updateMatrix(),this.static&&this.traverse(e=>{e.isObject3D&&(e.matrixWorldAutoUpdate=!0)}),this.updateMatrixWorld(!0),this.static&&this.traverse(e=>{e.isObject3D&&(e.matrixWorldAutoUpdate=!1)})}setCanvasSize(e,a){this.rendererSize.set(e,a)}async _setup(e){const a=this;if(e.json.extensionsRequired&&e.json.extensionsRequired.includes("JDULTRA_gaussian_splats")&&(a.splatsMesh=new sA(a.tileLoader.renderer),this.splatsMesh.setSplatsCropRadius(this.splatsCropRadius),this.splatsMesh.setSplatsSizeMultiplier(this.splatsSizeMultiplier),a.add(a.splatsMesh)),e.json.root?(a.json=e.json.root,a.json.refine||(a.json.refine=e.json.refine),a.json.geometricError||(a.json.geometricError=e.json.geometricError),a.json.transform||(a.json.transform=e.json.transform),a.json.boundingVolume||(a.json.boundingVolume=e.json.boundingVolume)):a.json=e.json,a.json.children||(a.json.getChildren?a.json.children=await a.json.getChildren():a.json.children=[]),a.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,a.json.refine?a.refine=a.json.refine:a.refine=e.parentRefine,a.json.geometricError?a.geometricError=a.json.geometricError:a.geometricError=e.parentGeometricError,a.json.transform){let A=new Q.Matrix4;A.elements=a.json.transform,a.applyMatrix4(A)}if(a.json.boundingVolume)if(a.json.boundingVolume.box)a.boundingVolume=new $(a.json.boundingVolume.box);else if(a.json.boundingVolume.region){const A=a.json.boundingVolume.region;a._transformWGS84ToCartesian(A[0],A[1],A[4],ae),a._transformWGS84ToCartesian(A[2],A[3],A[5],he),ae.lerp(he,.5),a.boundingVolume=new Q.Sphere(new Q.Vector3(ae.x,ae.y,ae.z),ae.distanceTo(he))}else if(a.json.boundingVolume.sphere){const A=a.json.boundingVolume.sphere;a.boundingVolume=new Q.Sphere(new Q.Vector3(A[0],A[1],A[2]),A[3])}else a.boundingVolume=e.parentBoundingVolume;else a.boundingVolume=e.parentBoundingVolume;function t(A){A.uri&&A.uri.includes("json")||A.url&&A.url.includes("json")?a.hasUnloadedJSONContent++:a.hasMeshContent++}if(a.json.content?(t(a.json.content),a.hasMeshContent==0&&(a.level=Math.max(0,a.parentTile?a.parentTile.level+.01:0)),a.loadingStrategy==="IMMEDIATE"?a._load(!0,!1):a._load()):a.json.contents&&(a.json.contents.forEach(A=>t(A)),a.hasMeshContent==0&&(a.level=Math.max(0,a.parentTile?a.parentTile.level+.01:0)),a.loadingStrategy==="IMMEDIATE"?a._load(!0,!1):a._load()),a.centerModel&&(he.copy(a.boundingVolume.center),this.json.boundingVolume.region&&(this._transformWGS84ToCartesian(.5*(this.json.boundingVolume.region[0]+this.json.boundingVolume.region[2]),.5*(this.json.boundingVolume.region[1]+this.json.boundingVolume.region[3]),.5*(this.json.boundingVolume.region[4]+this.json.boundingVolume.region[5]),ae),ka.setFromUnitVectors(ae.normalize(),rA.normalize()),a.applyQuaternion(ka)),he.applyMatrix4(a.matrix),a.position.sub(he),a.updateMatrices()),e.onLoadCallback&&a.onLoadCallback(a),a.isSetup=!0,a.level>0&&a.drawBoundingVolume&&(a.bbox&&console.log("double setup"),this.boundingVolume.aabb)){let A=this.boundingVolume.aabb.clone();A.applyMatrix4(this.matrixWorld),a.bbox=new Q.Box3Helper(A,new Q.Color(Math.random(),Math.random(),Math.random())),a.add(a.bbox),a.bbox.material.visible=!1}}_assembleURL(e,a){e.endsWith("/")||(e+="/");const t=new URL(e);let A=t.pathname.split("/").filter(s=>s!==""),i=a.split("/").filter(s=>s!=="");for(let s=1;s<=A.length&&!(s>=i.length);s++)if(A.slice(A.length-s,A.length).join("/")===i.slice(0,s).join("/")){for(let n=0;n<s;n++)A.pop();break}for(;i.length>0&&i[0]==="..";)A.pop(),i.shift();return`${t.protocol}//${t.host}/${[...A,...i].join("/")}`}_extractQueryParams(e,a){const t=new URL(e);for(let[A,i]of t.searchParams)a[A]=i;return t.search="",t.toString()}async _load(e=!0,a=!0){var t=this;if(!t.deleted){if(t.json.content)await A(t.json.content,null,e,a);else if(t.json.contents){let i=t.json.contents.map((s,n)=>A(s,n,e,a));Promise.all(i)}}async function A(i,s,n,c){let o;i.uri?o=i.uri:i.url&&(o=i.url);const b=/^(?:http|https|ftp|tcp|udp):\/\/\S+/;if(b.test(t.rootPath)?b.test(o)||(o=t._assembleURL(t.rootPath,o)):Ae.isAbsolute(t.rootPath)&&(o=t.rootPath+Ae.sep+o),o=t._extractQueryParams(o,t.queryParams),t.queryParams){var l="";for(let h in t.queryParams)t.queryParams.hasOwnProperty(h)&&(l+="&"+h+"="+t.queryParams[h]);o.includes("?")?o+=l:o+="?"+l.substring(1)}if(o)if(c&&(o.includes(".b3dm")||o.includes(".glb")||o.includes(".gltf"))){t.contentURL.push(o);try{t.tileLoader.get(t.abortController,t.uuid,o,h=>{t.deleted||(h.asset&&h.asset.copyright&&(h.asset.copyright.split(";").forEach(f=>{V[f]?V[f]++:V[f]=1}),t.displayCopyright&&Xe()),t.meshContent.push(h),t.splatsMesh||(h.traverse(f=>{if((f.isMesh||f.isPoints)&&f.layers.disable(0),f.isMesh&&t.occlusionCullingService){const g=f.geometry.attributes.position,u=[];for(let I=0;I<g.count;I++)u.push(t.color.r,t.color.g,t.color.b);f.geometry.setAttribute("color",new Q.Float32BufferAttribute(u,3))}}),t.add(h),t.updateMatrices()))},t.cameraOnLoad?()=>{let h=1;return(t.metric&&t.metric<0||t.deleted)&&(h=2),t.parentTile?t.parentTile._calculateDistanceToCamera(t.cameraOnLoad)*h*t.level:t._calculateDistanceToCamera(t.cameraOnLoad)*h*t.level}:()=>0,()=>t._getSiblings(),t.level,!t.json.boundingVolume.region,!!t.json.boundingVolume.region,t.geometricError,t.splatsMesh)}catch(h){t.displayErrors&&Da(h)}}else n&&o.includes(".json")&&(t.jsonRequested=o,t.tileLoader.get(t.abortController,t.uuid,o,async h=>{t.deleted||(h.rootPath=Ae.dirname(o),t.json.children.push(h),s==null?delete t.json.content:t.json.contents.splice(s,1),t.hasUnloadedJSONContent--)}))}}dispose(){const e=this;e.meshContent.forEach(a=>{a&&a.asset&&a.asset.copyright&&(a.asset.copyright.split(";").forEach(t=>{V[t]&&V[t]--}),e.displayCopyright&&Xe())}),e.meshContent=[],e.bbox&&e.bbox.dispose(),e.childrenTiles.forEach(a=>a.dispose()),e.deleted=!0,e.splatsMesh&&(e.meshContent.forEach(a=>a.hide()),e.parentTile||e.splatsMesh.dispose()),e.contentURL&&(e.contentURL.forEach(a=>{e.tileLoader.invalidate(a,e.uuid)}),e.contentURL=[]),e.abortController&&e.abortController.abort("tile not needed"),this.parent=null,this.dispatchEvent({type:"removed"})}_disposeMeshContent(){const e=this;if(!e.deleted){e.deleted=!0,e.abortController&&(e.abortController.abort("tile not needed"),e.abortController=new AbortController);for(let a=e.meshContent.length-1;a>=0;a--){const t=e.meshContent[a];t&&t.asset&&t.asset.copyright&&(t.asset.copyright.split(";").forEach(A=>{V[A]&&V[A]--}),e.displayCopyright&&Xe()),e.remove(t)}e.splatsMesh&&e.meshContent.forEach(a=>a.hide()),e.meshContent=[],e.contentURL.forEach(a=>{e.tileLoader.invalidate(a,e.uuid)}),e.contentURL=[]}}_disposeChildren(){var e=this;e.childrenTiles.forEach(a=>{a.dispose(),e.remove(a)}),e.childrenTiles=[]}raycast(e,a){if(this.splatsMesh){Me.copy(e.ray),Re.copy(this.matrixWorld).invert(),Me.applyMatrix4(Re);let t=!1;if(this.boundingVolume instanceof $)t=this.boundingVolume.intersectsRay(Me);else{if(!(this.boundingVolume instanceof Q.Sphere))return!1;t=ray.intersectsSphere(this.boundingVolume)}return t&&this.materialVisibility&&this.splatsReady&&(Fe.length=0,this.meshContent.forEach(A=>{A.isSplatsBatch&&(A.raycast(Me,Fe,e.params.Points.threshold),Fe.forEach(i=>{i.point.applyMatrix4(this.matrixWorld)}),a.push(...Fe))})),t}return super.raycast(e,a)}update(e){const a=new Q.Frustum;a.setFromProjectionMatrix(new Q.Matrix4().multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse));let t=[0],A=[0],i=[0],s=[0];return this.refine=="REPLACE"?this.loadingStrategy==="IMMEDIATE"?(this._updateImmediate(e,a),this._statsImmediate(i,t,s,A)):(this._update(e,a),this._stats(i,t,s,A)):(this._update(e,a),this._stats(i,t,s,A)),t>0&&(s[0]/=t[0]),this.splatsMesh&&(We.copy(e.position),Re.copy(this.matrixWorld).invert(),We.applyMatrix4(Re),this.splatsMesh.sort(We)),{numTilesLoaded:t[0],numTilesRendered:A[0],maxLOD:i[0],percentageLoaded:s[0]}}_updateImmediate(e,a){this._computeMetricRecursive(e,a),this._updateNodeVisibilityImmediate(),this._expandTreeImmediate(e),this.shouldBeVisible=this.metric>0||!!this.loadOutsideView,this._shouldBeVisibleUpdateImmediate(),this._trimTreeImmediate(),this._loadMeshImmediate()}_statsImmediate(e,a,t,A){e[0]=Math.max(e[0],this.level),(this.shouldBeVisible||this.materialVisibility)&&(a[0]++,this.materialVisibility&&t[0]++),this.materialVisibility&&A[0]++,this.childrenTiles.forEach(i=>{i._statsImmediate(e,a,t,A)})}_stats(e,a,t,A){e[0]=Math.max(e[0],this.level),this.hasMeshContent&&(a[0]++,this.meshContent.length==this.hasMeshContent&&t[0]++,this.materialVisibility&&A[0]++),this.childrenTiles.forEach(i=>{i._stats(e,a,t,A)})}_trimTreeImmediate(){if(this.metric!=null)if(this.hasMeshContent&&this.shouldBeVisible&&this.materialVisibility){if(self.splatsMesh&&!self.splatsReady)return;this._disposeChildren()}else this.childrenTiles.forEach(e=>{e._trimTreeImmediate()})}_updateNodeVisibilityImmediate(e=!1){const a=this;if(a.hasMeshContent)if(a.shouldBeVisible)a.meshContent.length==a.hasMeshContent?a.materialVisibility?a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(!0)}):(a._changeContentVisibility(!0),a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(e)})):a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(e)});else{if(!a.loadOutsideView&&a.metric<0)return a._changeContentVisibility(!1),a.meshContent.length>0&&a._disposeMeshContent(),void a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(!0)});if(!a.materialVisibility||a.splatsMesh&&!a.splatsReady)a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(e)});else if(e)a._changeContentVisibility(!1),a.meshContent.length>0&&a._disposeMeshContent(),a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(e)});else{let t=!0;a.childrenTiles.every(A=>!!A._isReadyImmediate()||(t=!1,!1)),t&&a.childrenTiles.length>0?(a._changeContentVisibility(!1),a.meshContent.length>0&&a._disposeMeshContent(),a.childrenTiles.forEach(A=>{A._updateNodeVisibilityImmediate(e)})):a.childrenTiles.forEach(A=>{A._updateNodeVisibilityImmediate(!a.splatsMesh||a.splatsReady)})}}else a.childrenTiles.forEach(t=>{t._updateNodeVisibilityImmediate(e)})}_shouldBeVisibleUpdateImmediate(){const e=this;e.hasMeshContent?e.metric==null?e.shouldBeVisible=!1:e.metric<0?(e.shouldBeVisible=!!e.loadOutsideView,e.childrenTiles.forEach(a=>{a._setShouldNotBeVisibleRecursive()})):e.metric<e.geometricErrorMultiplier*e.geometricError?e.hasUnloadedJSONContent||(e.json&&e.json.children&&e.json.children.length>0?(e.shouldBeVisible=!1,e.childrenTiles.forEach(a=>{a.shouldBeVisible=!0,a._shouldBeVisibleUpdateImmediate()})):e.shouldBeVisible=!0):e.childrenTiles.forEach(a=>{a._setShouldNotBeVisibleRecursive()}):(e.childrenTiles.forEach(a=>{a.shouldBeVisible=!0,a._shouldBeVisibleUpdateImmediate()}),e.shouldBeVisible=!1)}_setShouldNotBeVisibleRecursive(){this.shouldBeVisible=!1,this.childrenTiles.forEach(e=>{e._setShouldNotBeVisibleRecursive()})}_loadMeshImmediate(){const e=this;e.hasMeshContent&&e.shouldBeVisible?e.meshContent.length<e.hasMeshContent&&e.contentURL.length==0&&(e.deleted=!1,e._load(!1,!0)):e.childrenTiles.forEach(a=>{a._loadMeshImmediate()})}_computeMetricRecursive(e,a){const t=this;t.metric=-1,t.isSetup&&(t.boundingVolume&&t.geometricError&&(t.metric=t._calculateUpdateMetric(e,a)),t.childrenTiles.forEach(A=>A._computeMetricRecursive(e,a)))}_expandTreeImmediate(e){const a=this;a.hasUnloadedJSONContent||(a.hasMeshContent?a.occlusionCullingService&&a.hasMeshContent&&!a.occlusionCullingService.hasID(a.colorID)||a.metric>=0&&a.metric<a.geometricErrorMultiplier*a.geometricError&&a.json&&a.json.children&&a.childrenTiles.length<a.json.children.length&&a._loadJsonChildren(e):a.json&&a.json.children&&a.childrenTiles.length<a.json.children.length&&a._loadJsonChildren(e)),a.childrenTiles.forEach(t=>t._expandTreeImmediate(e))}_update(e,a){const t=this;if(!t.isSetup)return;const A=t.materialVisibility;t.boundingVolume&&t.geometricError&&(t.metric=t._calculateUpdateMetric(e,a)),t.childrenTiles.forEach(i=>i._update(e,a)),function(i){if(t.hasMeshContent&&!(t.meshContent.length<t.hasMeshContent)){if(i<0)return t.inFrustum=!1,void t._changeContentVisibility(!!t.loadOutsideView);if(t.inFrustum=!0,t.childrenTiles.length==0)return void t._changeContentVisibility(!0);if(i>=t.geometricErrorMultiplier*t.geometricError)t._changeContentVisibility(!0);else if(i<t.geometricErrorMultiplier*t.geometricError&&t.refine=="REPLACE"){let s=!0;t.childrenTiles.every(n=>!!n._isReady()||(s=!1,!1)),s?t._changeContentVisibility(!1):t._changeContentVisibility(!0)}}}(t.metric),function(i){i<0&&t.hasMeshContent||t.occlusionCullingService&&t.hasMeshContent&&!t.occlusionCullingService.hasID(t.colorID)||(!t.hasMeshContent||i<=t.geometricErrorMultiplier*t.geometricError&&t.meshContent.length>0)&&t.json&&t.json.children&&t.childrenTiles.length!=t.json.children.length&&t._loadJsonChildren(e)}(t.metric),function(i,s){if(t.hasMeshContent){if(!t.inFrustum)return void t._disposeChildren();if(t.occlusionCullingService&&!s&&t.hasMeshContent&&t.meshContent.length>0&&t.materialVisibility&&t._areAllChildrenLoadedAndHidden())return t.splatsMesh&&this.materialVisibility&&!t.splatsReady?void 0:void t._disposeChildren();if(i>=t.geometricErrorMultiplier*t.geometricError){if(t.splatsMesh&&t.materialVisibility&&!t.splatsReady)return;t._disposeChildren()}}}(t.metric,A)}_loadJsonChildren(e){const a=this;for(let t=a.json.children.length-1;t>=0;t--)a.json.children[t].root||a.json.children[t].children||a.json.children[t].getChildren||a.json.children[t].content||a.json.children[t].contents||a.json.children.splice(t,1);a.json.children.forEach(t=>{let A=new sa({parentTile:a,queryParams:a.queryParams,parentGeometricError:a.geometricError,parentBoundingVolume:a.boundingVolume,parentRefine:a.refine,json:t,rootPath:a.rootPath,geometricErrorMultiplier:a.geometricErrorMultiplier,loadOutsideView:a.loadOutsideView,level:Math.floor(a.level)+1,tileLoader:a.tileLoader,cameraOnLoad:e,occlusionCullingService:a.occlusionCullingService,renderer:a.renderer,static:a.static,centerModel:!1,displayErrors:a.displayErrors,displayCopyright:a.displayCopyright,distanceBias:a.distanceBias,loadingStrategy:a.loadingStrategy,drawBoundingVolume:a.drawBoundingVolume,splatsMesh:a.splatsMesh});a.childrenTiles.push(A),a.add(A)}),a.updateMatrices(!0)}_areAllChildrenLoadedAndHidden(){let e=!0;const a=this;return this.childrenTiles.every(t=>{if(t.hasMeshContent){if(t.childrenTiles.length>0)return e=!1,!1;if(!t.metric<0)return!0;if(t.materialVisibility&&(!a.splatsMesh||a.splatsReady)||a.occlusionCullingService.hasID(t.colorID))return e=!1,!1}else if(!t._areAllChildrenLoadedAndHidden())return e=!1,!1;return!0}),e}_isReady(){if(this.metric==null)return!1;if(this.metric<0)return!0;if(this.hasUnloadedJSONContent)return!1;if(!this.hasMeshContent&&this.json.children.length==0&&!this.hasUnloadedJSONContent)return!0;if(!this.hasMeshContent||this.meshContent.length==0||!this.materialVisibility||self.splatsMesh&&!self.splatsReady){if(this.children.length>0){var e=!0;return this.childrenTiles.every(a=>!!a._isReady()||(e=!1,!1)),e}return!1}return!this.hasMeshContent||(this.meshContent.length<this.hasMeshContent?(console.log("jkhkjh"),!1):!(!this.materialVisibility||this.splatsMesh&&!this.splatsReady))}_isReadyImmediate(){return!!(this.materialVisibility||!this.loadOutsideView&&this.metric<0)||!!this.splatsMesh&&!!this.splatsReady}_changeContentVisibility(e){const a=this;if(a.bbox&&(a.bbox.material.visible=e),a.splatsMesh)e!=a.materialVisibility&&(a.meshContent.forEach(t=>{e&&t.isSplatsBatch?(a.splatsReady=!0,t.show(()=>{a.materialVisibility&&(a.splatsReady=!0)})):t.hide()}),a.materialVisibility=e);else{if(a.hasMeshContent&&a.meshContent.length>0&&(e?a.meshContent.forEach(t=>{t.traverse(A=>{(A.isMesh||A.isPoints)&&A.layers.enable(0)})}):a.meshContent.forEach(t=>{t.traverse(A=>{(A.isMesh||A.isPoints)&&A.layers.disable(0)})})),a.materialVisibility==e)return;a.materialVisibility=e}}_calculateUpdateMetric(e,a){let t=0;if(this.boundingVolume instanceof $){if(re.copy(this.boundingVolume),re.applyMatrix4(this.matrixWorld),!re.inFrustum(a))return-1;t=Math.max(0,re.distanceToPoint(e.position)-e.near)}else{if(!(this.boundingVolume instanceof Q.Sphere))return console.error("unsupported shape"),-1;if(W.copy(this.boundingVolume),W.applyMatrix4(this.matrixWorld),!a.intersectsSphere(W))return-1;t=Math.max(0,e.position.distanceTo(W.center)-W.radius-e.near)}if(t=Math.pow(t,this.distanceBias),t==0)return 0;const A=this.matrixWorld.getMaxScaleOnAxis();this.renderer&&this.renderer.getDrawingBufferSize(this.rendererSize);let i=this.rendererSize.y,s=e.fov;e.aspect<1&&(s*=e.aspect,i=this.rendererSize.x);let n=2*Math.tan(.5*s*.017453292519943295)*t;return 16*window.devicePixelRatio*n/(i*A)}_getSiblings(){const e=this,a=[];if(!e.parentTile)return a;let t=e.parentTile;for(;!t.hasMeshContent&&t.parentTile;)t=t.parentTile;return t.childrenTiles.forEach(A=>{if(A&&A!=e){for(;!A.hasMeshContent&&A.childrenTiles[0];)A=A.childrenTiles[0];a.push(A)}}),a}_calculateDistanceToCamera(e){return this.boundingVolume instanceof $?(re.copy(this.boundingVolume),re.applyMatrix4(this.matrixWorld),Math.max(0,re.distanceToPoint(e.position))):this.boundingVolume instanceof Q.Sphere?(W.copy(this.boundingVolume),W.applyMatrix4(this.matrixWorld),Math.max(0,e.position.distanceTo(W.center)-W.radius)):(console.error("unsupported shape"),-1)}setGeometricErrorMultiplier(e){this.geometricErrorMultiplier=e,this.splatsReady=!0,this.childrenTiles.forEach(a=>a.setGeometricErrorMultiplier(e))}setDistanceBias(e){this.distanceBias=e,this.childrenTiles.forEach(a=>a.setDistanceBias(e))}_transformWGS84ToCartesian(e,a,t,A){const i=6378137/Math.sqrt(1-.006694384442042*Math.pow(Math.sin(a),2)),s=Math.cos(a),n=Math.cos(e),c=Math.sin(a),o=i+t,b=o*s*n,l=o*s*Math.sin(e),h=(.993305615557957*i+t)*c;A.set(b,l,h)}}function Da(r){var e=document.createElement("div");e.textContent=r,e.style.position="fixed",e.style.top="10px",e.style.left="50%",e.style.transform="translateX(-50%)",e.style.padding="10px",e.style.backgroundColor="#ff8800",e.style.color="#ffffff",e.style.zIndex="9999",document.body.appendChild(e),setTimeout(function(){e.remove()},8e3)}function Xe(){z||((z=document.createElement("div")).style.position="fixed",z.style.bottom="20px",z.style.left="20px",z.style.color="white",z.style.textShadow="2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000",z.style.padding="10px",z.style.backgroundColor="rgba(0, 0, 0, 0.1)",document.body.appendChild(z));const r=tt();let e="";r.forEach(a=>{e+=a+", "}),e=e.slice(0,-2),z.textContent=e}const G=new Q.Sphere(new Q.Vector3(0,0,0),1),te=new Q.Vector3(0,0,0),Ze=new Q.Vector3(0,0,0),nA=new Q.Vector3(0,1,0),$e=new Q.Vector2,ja=new Q.Quaternion,Ma=new Q.Matrix4;class ra extends Q.Object3D{constructor(e){super();const a=this;if(e.queryParams&&(this.queryParams={...e.queryParams}),this.uuid=Ta(),e.tileLoader?this.tileLoader=e.tileLoader:console.error("an instanced tileset must be provided an InstancedTilesetLoader"),this.master=e.master,this.loadOutsideView=e.loadOutsideView,this.cameraOnLoad=e.cameraOnLoad,this.parentTile=e.parentTile,this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.childrenTiles=[],this.jsonChildren=[],this.meshContent=new Set,this.static=e.static,this.static&&(this.matrixAutoUpdate=!1,this.matrixWorldAutoUpdate=!1),this.tileContent,this.refinement,this.rootPath,this.geometricError,this.boundingVolume,this.json,this.materialVisibility=!1,this.inFrustum=!0,this.level=e.level?e.level:0,this.hasMeshContent=0,this.hasUnloadedJSONContent=0,this.centerModel=e.centerModel,this.deleted=!1,this.abortController=new AbortController,e.json)this.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,e.json.children&&(this.jsonChildren=e.json.children),a.setup(e);else if(e.url){this.loadJson=(i,s)=>{const n=Ae.dirname(s);a.setup({rootPath:n,json:i,onLoadCallback:e.onLoadCallback})};var t=e.url;if(a.queryParams){var A="";for(let i in a.queryParams)a.queryParams.hasOwnProperty(i)&&(A+="&"+i+"="+a.queryParams[i]);t.includes("?")?t+=A:t+="?"+A.substring(1)}a.tileLoader.get(a.abortController,t,a.uuid,a)}}async setup(e){const a=this;e.json.root?(a.json=e.json.root,!a.json.children&&a.json.getChildren&&(a.json.children=await a.json.getChildren()),a.jsonChildren=a.json.children,a.json.refinement||(a.json.refinement=e.json.refinement),a.json.geometricError||(a.json.geometricError=e.json.geometricError),a.json.transform||(a.json.transform=e.json.transform),a.json.boundingVolume||(a.json.boundingVolume=e.json.boundingVolume)):(a.json=e.json,!a.json.children&&a.json.getChildren&&(a.json.children=await a.json.getChildren(),a.jsonChildren=a.json.children)),a.rootPath=e.json.rootPath?e.json.rootPath:e.rootPath,a.json.refinement?a.refinement=a.json.refinement:a.refinement=e.parentRefinement,a.json.geometricError?a.geometricError=a.json.geometricError:a.geometricError=e.parentGeometricError;let t=new Q.Matrix4;if(a.json.transform&&!a.centerModel&&(t.elements=a.json.transform),a.applyMatrix4(t),a.parentTile&&a.parentTile.matrix&&(a.matrix.premultiply(a.parentTile.matrix),a.matrix.decompose(a.position,a.quaternion,a.scale)),a.matrixWorldNeedsUpdate=!0,a.updateWorldMatrix(!0,!0),a.json.boundingVolume)if(a.json.boundingVolume.box)a.boundingVolume=new $(a.json.boundingVolume.box);else if(a.json.boundingVolume.region){const i=a.json.boundingVolume.region;a.transformWGS84ToCartesian(i[0],i[1],i[4],te),a.transformWGS84ToCartesian(i[2],i[3],i[5],Ze),te.lerp(Ze,.5),a.boundingVolume=new Q.Sphere(new Q.Vector3(te.x,te.y,te.z),te.distanceTo(Ze))}else if(a.json.boundingVolume.sphere){const i=a.json.boundingVolume.sphere;a.boundingVolume=new Q.Sphere(new Q.Vector3(i[0],i[1],i[2]),i[3])}else a.boundingVolume=e.parentBoundingVolume;else a.boundingVolume=e.parentBoundingVolume;function A(i){i.uri&&i.uri.includes("json")||i.url&&i.url.includes("json")?a.hasUnloadedJSONContent++:a.hasMeshContent++}if(a.json.content?(A(a.json.content),a.load()):a.json.contents&&(a.json.contents.forEach(i=>A(i)),a.load()),a.centerModel){const i=new Q.Sphere;a.boundingVolume instanceof $?i.copy(a.boundingVolume.sphere):a.boundingVolume instanceof Q.Sphere&&i.copy(a.boundingVolume),this.json.boundingVolume.region&&(a.transformWGS84ToCartesian(.5*(a.json.boundingVolume.region[0]+a.json.boundingVolume.region[2]),.5*(a.json.boundingVolume.region[1]+a.json.boundingVolume.region[3]),.5*(a.json.boundingVolume.region[4]+a.json.boundingVolume.region[5]),te),ja.setFromUnitVectors(te.normalize(),nA.normalize()),a.master.applyQuaternion(ja),a.master.updateWorldMatrix(!1,!1)),Ma.makeTranslation(-i.center.x*a.scale.x,-i.center.y*a.scale.y,-i.center.z*a.scale.z),a.master.matrix.multiply(Ma),a.master.matrix.decompose(a.master.position,a.master.quaternion,a.master.scale)}a.isSetup=!0,e.onLoadCallback&&e.onLoadCallback(a)}isAbsolutePathOrURL(e){const a=/^(?:http|https|ftp|tcp|udp):\/\/\S+/.test(e),t=e.startsWith("/")&&!e.startsWith("//");return a||t}assembleURL(e,a){e.endsWith("/")||(e+="/");const t=new URL(e);let A=t.pathname.split("/").filter(s=>s!==""),i=a.split("/").filter(s=>s!=="");for(let s=1;s<=A.length&&!(s>=i.length);s++)if(A.slice(A.length-s,A.length).join("/")===i.slice(0,s).join("/")){for(let n=0;n<s;n++)A.pop();break}for(;i.length>0&&i[0]==="..";)A.pop(),i.shift();return`${t.protocol}//${t.host}/${[...A,...i].join("/")}`}extractQueryParams(e,a){const t=new URL(e);for(let[A,i]of t.searchParams)a[A]=i;return t.search="",t.toString()}load(){var e=this;function a(t){let A;t.uri?A=t.uri:t.url&&(A=t.url);const i=/^(?:http|https|ftp|tcp|udp):\/\/\S+/;if(i.test(e.rootPath)?i.test(A)||(A=e.assembleURL(e.rootPath,A)):Ae.isAbsolute(e.rootPath)&&(A=e.rootPath+Ae.sep+A),A=e.extractQueryParams(A,e.queryParams),e.queryParams){var s="";for(let n in e.queryParams)e.queryParams.hasOwnProperty(n)&&(s+="&"+n+"="+e.queryParams[n]);A.includes("?")?A+=s:A+="?"+s.substring(1)}A&&(A.includes(".b3dm")||A.includes(".glb")||A.includes(".gltf")?(e.contentURL=A,e.tileLoader.get(e.abortController,A,e.uuid,e,e.cameraOnLoad?()=>e.calculateDistanceToCamera(e.cameraOnLoad):()=>0,()=>e.getSiblings(),e.level,!e.json.boundingVolume.region,!!e.json.boundingVolume.region,e.geometricError)):A.includes(".json")&&e.tileLoader.get(e.abortController,A,e.uuid,e))}e.deleted||(e.json.content?a(e.json.content):e.json.contents&&e.json.contents.forEach(t=>a(t)))}loadMesh(e){this.deleted||this.meshContent.add(e)}loadJson(e,a){this.deleted||(this.json.children&&(this.jsonChildren=this.json.children),e.rootPath=Ae.dirname(a),this.jsonChildren.push(e),this.hasUnloadedJSONContent--)}dispose(){const e=this;e.childrenTiles.forEach(a=>a.dispose()),e.deleted=!0,e.abortController&&e.abortController.abort(),this.parent=null,this.parentTile=null,this.dispatchEvent({type:"removed"})}disposeChildren(){this.childrenTiles.forEach(e=>e.dispose()),this.childrenTiles=[]}_update(e,a){const t=this;function A(i){if(t.hasMeshContent&&!(t.meshContent.size<t.hasMeshContent)){if(i<0)return t.inFrustum=!1,void t.changeContentVisibility(!!t.loadOutsideView);if(t.inFrustum=!0,t.childrenTiles.length!=0){if(i>=t.master.geometricErrorMultiplier*t.geometricError)t.changeContentVisibility(!0);else if(i<t.master.geometricErrorMultiplier*t.geometricError){let s=!0;t.childrenTiles.every(n=>!!n.isReady()||(s=!1,!1)),s&&t.changeContentVisibility(!1)}}else t.changeContentVisibility(!0)}}t.isSetup&&(t.materialVisibility,t.boundingVolume&&t.geometricError&&(t.metric=t.calculateUpdateMetric(e,a)),t.childrenTiles.forEach(i=>i._update(e,a)),A(t.metric),function(i){i<0&&t.hasMeshContent||(!t.hasMeshContent&&t.rootPath||i<t.master.geometricErrorMultiplier*t.geometricError&&t.meshContent.size>0)&&t.json&&t.jsonChildren&&t.childrenTiles.length!=t.jsonChildren.length&&t.jsonChildren.forEach(s=>{if(!(s.root||s.children||s.getChildren||s.content||s.contents))return;let n=new ra({parentTile:t,queryParams:t.queryParams,parentGeometricError:t.geometricError,parentBoundingVolume:t.boundingVolume,parentRefinement:t.refinement,json:s,rootPath:t.rootPath,loadOutsideView:t.loadOutsideView,level:t.level+1,tileLoader:t.tileLoader,cameraOnLoad:e,master:t.master,centerModel:!1});t.childrenTiles.push(n)})}(t.metric),function(i){if(t.hasMeshContent){if(!t.inFrustum)return t.disposeChildren(),void A(i);i>=t.master.geometricErrorMultiplier*t.geometricError&&(t.disposeChildren(),A(i))}}(t.metric))}areAllChildrenLoadedAndHidden(){let e=!0;return this.childrenTiles.every(a=>{if(a.hasMeshContent){if(a.childrenTiles.length>0)return e=!1,!1;if(!a.inFrustum)return!0;if(!a.materialVisibility||a.meshesToDisplay!=a.meshesDisplayed)return e=!1,!1}else if(!a.areAllChildrenLoadedAndHidden())return e=!1,!1;return!0}),e}isReady(){if(!this.inFrustum)return!0;if(this.hasUnloadedJSONContent)return!1;if(!this.hasMeshContent||this.meshContent.size==0||!this.materialVisibility){if(this.childrenTiles.length>0){var e=!0;return this.childrenTiles.every(a=>!!a.isReady()||(e=!1,!1)),e}return!1}return!this.hasMeshContent||!(this.meshContent.size<this.hasMeshContent)&&!!this.materialVisibility}changeContentVisibility(e){this.materialVisibility=e}calculateUpdateMetric(e,a){if(this.boundingVolume instanceof $){if(G.copy(this.boundingVolume.sphere),G.applyMatrix4(this.matrixWorld),!a.intersectsSphere(G))return-1}else{if(!(this.boundingVolume instanceof Q.Sphere))return console.error("unsupported shape"),-1;if(G.copy(this.boundingVolume),G.applyMatrix4(this.matrixWorld),!a.intersectsSphere(G))return-1}let t=Math.max(0,e.position.distanceTo(G.center)-G.radius);if(t=Math.pow(t,this.distanceBias),t==0)return 0;const A=this.matrixWorld.getMaxScaleOnAxis();this.master._renderSize($e);let i=$e.y,s=e.fov;e.aspect<1&&(s*=e.aspect,i=$e.x);let n=2*Math.tan(.5*s*.017453292519943295)*t;return 16*window.devicePixelRatio*n/(i*A)}getSiblings(){const e=this,a=[];if(!e.parentTile)return a;let t=e.parentTile;for(;!t.hasMeshContent&&t.parentTile;)t=t.parentTile;return t.childrenTiles.forEach(A=>{if(A&&A!=e){for(;!A.hasMeshContent&&A.childrenTiles[0];)A=A.childrenTiles[0];a.push(A)}}),a}calculateDistanceToCamera(e){return this.boundingVolume instanceof $?(G.copy(this.boundingVolume.sphere),G.applyMatrix4(this.matrixWorld)):this.boundingVolume instanceof Q.Sphere?(G.copy(this.boundingVolume),G.applyMatrix4(this.matrixWorld)):console.error("unsupported shape"),Math.max(0,e.position.distanceTo(G.center)-G.radius)}getWorldMatrix(){return this.matrixWorld}transformWGS84ToCartesian(e,a,t,A){const i=6378137/Math.sqrt(1-.006694384442042*Math.pow(Math.sin(a),2)),s=Math.cos(a),n=Math.cos(e),c=Math.sin(a),o=i+t,b=o*s*n,l=o*s*Math.sin(e),h=(.993305615557957*i+t)*c;A.set(b,l,h)}}class oA extends Q.Object3D{constructor(e){super(),e.master=this,e.domWidth&&e.domHeight?this.rendererSize=new Q.Vector2(e.domWidth,e.domHeight):this.rendererSize=new Q.Vector2(1e3,1e3),this.renderer=e.renderer,this.distanceBias=Math.max(1e-4,e.distanceBias?e.distanceBias:1),this.geometricErrorMultiplier=e.geometricErrorMultiplier?e.geometricErrorMultiplier:1,this.tileset=new ra(e),e.static&&(this.matrixAutoUpdate=!1),this.tileLoader=e.tileLoader}_renderSize(e){this.renderer?this.renderer.getDrawingBufferSize(e):e.copy(this.rendererSize)}setCanvasSize(e,a){this.rendererSize.set(e,a)}update(e,a){if(a)this.tileset._update(e,a);else{const t=new Q.Frustum;t.setFromProjectionMatrix(new Q.Matrix4().multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse)),this.tileset._update(e,t)}}setGeometricErrorMultiplier(e){this.geometricErrorMultiplier=e||1}}class cA{constructor(e){const a=this;a.scene=e,a.instancedTiles=[],a.instancedMesh,a.reuseableMatrix=new Q.Matrix4}addInstance(e){const a=this;e.added=!0,e.listOMesh=a.instancedTiles,a.instancedTiles.push(e),a.instancedMesh&&e.loadMesh(a.instancedMesh)}addToScene(){const e=this;e.instancedMesh.setMatrixAt(0,new Q.Matrix4),e.instancedMesh.instanceMatrix.needsUpdate=!0,e.instancedMesh.count=1,e.scene.add(e.instancedMesh),e.instancedMesh.onAfterRender=()=>{delete e.instancedMesh.onAfterRender,e.instancedMesh.displayedOnce=!0}}setObject(e){const a=this;a.instancedMesh=e,a.instancedMesh.matrixAutoUpdate=!1,a.instancedMesh.matrixWorldAutoUpdate=!1,a.scene.children.includes(e)||this.addToScene();for(let t=0;t<a.instancedTiles.length;t++)a.instancedTiles[t].loadMesh(a.instancedMesh)}update(){const e=this;for(let a=e.instancedTiles.length-1;a>=0;a--)e.instancedTiles[a].deleted&&e.instancedTiles.splice(a,1);if(e.instancedMesh){e.instancedMesh.count=0,e.instancedMesh.instancedTiles=[];for(let a=0;a<e.instancedTiles.length;a++)e.instancedTiles[a].meshContent.add(e.instancedMesh),e.instancedTiles[a].materialVisibility&&(e.instancedMesh.count++,e.reuseableMatrix.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),e.reuseableMatrix.multiply(e.instancedTiles[a].matrixWorld),e.reuseableMatrix.multiply(e.instancedMesh.baseMatrix),e.instancedMesh.setMatrixAt(e.instancedMesh.count-1,e.reuseableMatrix),e.instancedMesh.instancedTiles.push(e.instancedTiles[a]));e.instancedMesh.instanceMatrix.needsUpdate=!0,e.instancedMesh.needsUpdate=!0,e.instancedMesh.computeBoundingSphere()}}getCount(){return this.instancedTiles.length}dispose(){const e=this;return!(e.instancedTiles.length>0)&&!!e.instancedMesh&&(e.scene.remove(e.instancedMesh),e.instancedMesh.traverse(a=>{if(a.dispose&&a.dispose(),a.material)if(a.material.length)for(let t=0;t<a.material.length;++t)a.material[t].dispose();else a.material.dispose();a.geometry&&a.geometry.dispose()}),e.instancedMesh.dispose(),!0)}}class dA{constructor(){const e=this;e.count=0,e.json,e.instancedTiles=[]}addInstance(e){this.instancedTiles.push(e),this.json&&e.loadJson(this.json,this.url)}setObject(e,a){const t=this;t.json=e,t.url=a;for(let A=0;A<t.instancedTiles.length;A++)t.instancedTiles[A].loadJson(t.json,t.url)}getCount(){return this.instancedTiles.length}update(){const e=this;for(let a=e.instancedTiles.length-1;a>=0;a--)e.instancedTiles[a].deleted&&e.instancedTiles.splice(a,1)}dispose(){return!(!this.json||this.instancedTiles.length!=0)}}let ne=0;async function bA(r){return new Promise(e=>{const a=setInterval(()=>{r.hasDracoLoader&&!r.dracoLoader||r.hasKTX2Loader&&!r.ktx2Loader||(clearInterval(a),e())},10)})}exports.InstancedOGC3DTile=oA,exports.InstancedTileLoader=class{constructor(r,e){if(this.zUpToYUpMatrix=new Q.Matrix4,this.zUpToYUpMatrix.set(1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1),this.maxCachedItems=100,this.maxInstances=1,this.proxy=e.proxy,e&&(this.meshCallback=e.meshCallback,this.pointsCallback=e.pointsCallback,e.maxCachedItems&&(this.maxCachedItems=e.maxCachedItems),e.maxInstances&&(this.maxInstances=e.maxInstances)),this.gltfLoader=new va,e&&e.dracoLoader)this.gltfLoader.setDRACOLoader(e.dracoLoader),this.hasDracoLoader=!0;else{const a=new Ua;a.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),this.gltfLoader.setDRACOLoader(a),this.gltfLoader.hasDracoLoader=!0}if(e&&e.ktx2Loader)this.gltfLoader.setKTX2Loader(e.ktx2Loader),this.hasKTX2Loader=!0;else if(e&&e.renderer){const a=new U;a.setTranscoderPath("https://storage.googleapis.com/ogc-3d-tiles/basis/").detectSupport(e.renderer),this.gltfLoader.setKTX2Loader(a),this.gltfLoader.hasKTX2Loader=!0}this.gltfLoader.setMeshoptDecoder($a),this.hasMeshOptDecoder=!0,this.b3dmDecoder=new Sa(this.gltfLoader),this.cache=new Ra.LinkedHashMap,this.scene=r,this.ready=[],this.downloads=[],this.nextReady=[],this.nextDownloads=[]}update(){const r=this;r._checkSize(),r.cache._data.forEach(e=>{e.update()}),ne<8&&r._download(),r._loadBatch()}_download(){const r=this;if(r.nextDownloads.length!=0||(r._getNextDownloads(),r.nextDownloads.length!=0))for(;r.nextDownloads.length>0;){const a=r.nextDownloads.shift();if(a){if(a.path.includes(".b3dm")&&(e=r.proxy?()=>fetch(r.proxy,{method:"POST",body:a.path}):()=>fetch(a.path),ne++,e().then(t=>{if(!t.ok)throw console.error("could not load tile with path : "+a.path),new Error(`couldn't load "${a.path}". Request failed with status ${t.status} : ${t.statusText}`);return t.arrayBuffer()}).then(t=>this.b3dmDecoder.parseB3DMInstanced(t,A=>{r.meshCallback(A,a.geometricError)},r.maxInstances,a.sceneZupToYup,a.meshZupToYup)).then(t=>{t.frustumCulled=!1,a.tile.setObject(t),r.ready.unshift(a)}).catch(t=>console.error(t)).finally(()=>{ne--})),a.path.includes(".glb")||a.path.includes(".gltf"))e=r.proxy?()=>fetch(r.proxy,{method:"POST",body:a.path}):()=>fetch(a.path),ne++,e().then(t=>{if(!t.ok)throw new Error("missing content");return t.arrayBuffer()}).then(async t=>{await bA(this.gltfLoader),this.gltfLoader.parse(t,null,A=>{let i;A.scene.asset=A.asset,a.sceneZupToYup&&A.scene.applyMatrix4(this.zUpToYUpMatrix),A.scene.traverse(s=>{s.geometricError=a.geometricError,s.isMesh&&(a.meshZupToYup&&s.applyMatrix4(this.zUpToYUpMatrix),r.meshCallback&&r.meshCallback(s,s.geometricError)),s.isPoints&&console.error("instanced point cloud is not supported")}),A.scene.updateWorldMatrix(!1,!0),A.scene.traverse(s=>{s.isMesh&&(i=new Q.InstancedMesh(s.geometry,s.material,r.maxInstances),i.baseMatrix=s.matrixWorld)}),r.ready.unshift(a),i?(i.frustumCulled=!1,a.tile.setObject(i)):A.scene.traverse(s=>{s.dispose&&s.dispose(),s.material&&s.material.dispose()})})},t=>{console.error("could not load tile : "+a.path)}).finally(()=>{ne--});else if(a.path.includes(".json")){var e;e=r.proxy?()=>fetch(r.proxy,{method:"POST",body:a.path}):()=>fetch(a.path),ne++,e().then(t=>{if(!t.ok)throw console.error("could not load tile with path : "+a.path),new Error(`couldn't load "${a.path}". Request failed with status ${t.status} : ${t.statusText}`);return t.json()}).then(t=>ia(t,a.path)).then(t=>{a.tile.setObject(t,a.path),r.ready.unshift(a)}).catch(t=>console.error(t)).finally(()=>{ne--})}}}}_loadBatch(){return this.nextReady.length==0&&(this._getNextReady(),this.nextReady.length==0)?0:this.nextReady.shift()?1:0}_getNextReady(){let r=Number.MAX_VALUE,e=-1;for(let a=this.ready.length-1;a>=0;a--)this.ready[a].distanceFunction||this.nextReady.push(this.ready.splice(a,1)[0]);if(!(this.nextReady.length>0)){for(let a=this.ready.length-1;a>=0;a--){const t=this.ready[a].distanceFunction()*this.ready[a].level;t<r&&(r=t,e=a)}if(e>=0){const a=this.ready.splice(e,1).pop();this.nextReady.push(a);const t=a.getSiblings();for(let A=this.ready.length-1;A>=0;A--)t.includes(this.ready[A].uuid)&&this.nextready.push(this.ready.splice(A,1).pop())}}}get(r,e,a,t,A,i,s,n,c,o){const b=this,l=function(f){for(var g=f.split("/"),u=[],I=0,p=0;p<g.length;p++){var B=g[p];B!=="."&&B!==""&&B!==".."?u[I++]=B:B===".."&&I>0&&I--}if(I===0)return"/";var m="";for(p=0;p<I;p++)m+="/"+u[p];return m}(e);if(!(e.includes(".b3dm")||e.includes(".json")||e.includes(".glb")||e.includes(".gltf")))return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");const h=b.cache.get(l);if(h)h.addInstance(t);else if(e.includes(".b3dm")||e.includes(".glb")||e.includes(".gltf")){const f=new cA(b.scene);f.addInstance(t),b.cache.put(l,f);const g=new AbortController;r.signal.addEventListener("abort",()=>{f.getCount()==0&&g.abort()}),this.downloads.push({abortController:g,tile:f,key:l,path:e,distanceFunction:A,getSiblings:i,level:s,uuid:a,sceneZupToYup:n,meshZupToYup:c,geometricError:o,shouldDoDownload:()=>!0})}else if(e.includes(".json")){const f=new dA;f.addInstance(t),b.cache.put(l,f);const g=new AbortController;r.signal.addEventListener("abort",()=>{f.getCount()==0&&g.abort()}),this.downloads.push({abortController:g,tile:f,key:l,path:e,distanceFunction:A,getSiblings:i,level:s,shouldDoDownload:()=>!0})}}_getNextDownloads(){let r=Number.MAX_VALUE,e=-1;for(let a=this.downloads.length-1;a>=0;a--){const t=this.downloads[a];t.shouldDoDownload()?t.distanceFunction||this.nextDownloads.push(this.downloads.splice(a,1)[0]):this.downloads.splice(a,1)}if(!(this.nextDownloads.length>0)){for(let a=this.downloads.length-1;a>=0;a--){const t=this.downloads[a],A=t.distanceFunction()*t.level;A<r&&(r=A,e=a)}if(e>=0){const a=this.downloads.splice(e,1).pop();this.nextDownloads.push(a);const t=a.getSiblings();for(let A=this.downloads.length-1;A>=0;A--)t.includes(this.downloads[A].uuid)&&this.nextDownloads.push(this.downloads.splice(A,1).pop())}}}_checkSize(){const r=this;let e=0;for(;r.cache.size()>r.maxCachedItems&&e<r.cache.size();){e++;const a=r.cache.head();r.cache.remove(a.key),a.value.dispose()||r.cache.put(a.key,a.value)}}},exports.OGC3DTile=sa,exports.OcclusionCullingService=class{constructor(){this.cullMap=[],this.cullMaterial=new Q.MeshBasicMaterial({vertexColors:!0}),this.cullMaterial.side=Q.FrontSide,this.cullTarget=this._createCullTarget(),this.cullPixels=new Uint8Array(4*this.cullTarget.width*this.cullTarget.height)}setSide(r){this.cullMaterial.side=r}_createCullTarget(){const r=new Q.WebGLRenderTarget(Math.floor(.05*window.innerWidth),Math.floor(.05*window.innerHeight));return r.texture.format=Q.RGBAFormat,r.texture.colorSpace=Q.LinearSRGBColorSpace,r.texture.minFilter=Q.NearestFilter,r.texture.magFilter=Q.NearestFilter,r.texture.generateMipmaps=!1,r.stencilBuffer=!1,r.depthBuffer=!0,r.depthTexture=new Q.DepthTexture,r.depthTexture.format=Q.DepthFormat,r.depthTexture.type=Q.UnsignedShortType,r}update(r,e,a){let t=e.getRenderTarget(),A=r.overrideMaterial;r.overrideMaterial=this.cullMaterial,e.setRenderTarget(this.cullTarget),e.render(r,a),r.overrideMaterial=A,e.setRenderTarget(t),e.readRenderTargetPixels(this.cullTarget,0,0,this.cullTarget.width,this.cullTarget.height,this.cullPixels),this.cullMap=[];for(let i=0;i<this.cullPixels.length;i+=4){const s=Q.MathUtils.clamp(this.cullPixels[i],0,255)<<16^Q.MathUtils.clamp(this.cullPixels[i+1],0,255)<<8^Q.MathUtils.clamp(this.cullPixels[i+2],0,255);this.cullMap[s]=!0}}hasID(r){return this.cullMap[r]}},exports.TileLoader=et,exports.getOGC3DTilesCopyrightInfo=tt;
211
211
  //# sourceMappingURL=threedtiles.cjs.js.map