@mapvx/web-components-ssr 1.6.1 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/dist/browser/chunk-7vIcv6rM.js +1180 -0
- package/dist/browser/chunk-BK2bFfek.js +6148 -0
- package/dist/browser/chunk-Bjk3HkK2.js +2 -1
- package/dist/browser/chunk-C8XJWaI5.js +2 -0
- package/dist/browser/chunk-CCaUxYwr.js +2 -1
- package/dist/browser/chunk-CTFjnL_B.js +2 -1
- package/dist/browser/chunk-Cg9Nd_Mm.js +4336 -0
- package/dist/browser/chunk-ClYPPgpq.js +3 -0
- package/dist/browser/chunk-ConEJto8.js +1318 -0
- package/dist/browser/chunk-CuTcljJ2.js +2 -0
- package/dist/browser/chunk-CzASft0S.js +13 -0
- package/dist/browser/chunk-DAjekpI-.js +3 -0
- package/dist/browser/chunk-DHX-WiFW.js +3 -0
- package/dist/browser/chunk-DsKCGfdq.js +3 -1
- package/dist/browser/chunk-LltjhLJU.js +2 -1
- package/dist/browser/chunk-qJiyNNGo.js +348 -0
- package/dist/browser/main.js +551 -532
- package/dist/browser/styles.css +1 -1
- package/package.json +37 -30
- package/dist/browser/chunk-CP_etSVX.js +0 -4343
- package/dist/browser/chunk-CdqAsQa0.js +0 -2047
- package/dist/browser/chunk-Dkhxm9pV.js +0 -1
- package/dist/browser/chunk-Dm8HBhbB.js +0 -1
- package/dist/browser/chunk-UfDdP4s_.js +0 -1
- package/dist/browser/chunk-VDwq1GVr.js +0 -511
|
@@ -0,0 +1,1180 @@
|
|
|
1
|
+
import{a as v,i as u,n as s,o as w,r as t,s as x,t as r}from"./main.js";import{$ as ys,L as j,O as Y,P as f,Q as x$1,R as je,X as v$1,_ as P}from"./chunk-CzASft0S.js";import{$ as rd$1,B as hi,D as Yr$1,E as Yd$1,G as kt,J as ne,L as fi,M as ar,N as di,O as Z,P as ed$1,R as ga$1,T as Xr$1,V as hr$1,W as ka$1,_ as Pi$1,at as zi$1,f as Mt,i as Ho$1,j as Zp$1,k as Zn$1,l as Ko$1,m as Nt$1,n as Ga,nt as ue,o as Jr,p as Ni$1,q as mt$1,rt as za,s as Kd$1,t as De,tt,u as Kr$1,v as Qr$1,x as V,y as U,z as ge$1}from"./chunk-BK2bFfek.js";import{A as en,C as Zi$1,D as cf,E as ap$1,F as ne$1,G as st,H as qu,I as ns$1,K as ua$1,M as ge$2,N as jt$1,P as ma$1,R as on$1,S as Ym$1,U as se,V as qi$1,W as sp$1,a as Dm$1,b as Xu,c as Iu$1,d as Ku,f as Ls,g as Qu,i as B,j as et,k as ef,l as Ju,m as Os,n as A,o as Er$1,p as Nu$1,r as Ar,s as Hu,t as $i$1,u as Ka,v as Wa,w as Zu,x as Yi$1,z as pa$1}from"./chunk-ConEJto8.js";import{_ as xt$1,a as Xs$1,d as fn,i as Tn,l as de,n as Nn,o as _e,s as br,u as en$1}from"./chunk-Cg9Nd_Mm.js";var _c=v((Mp,Xo)=>{"use strict";(function(r,e){typeof define==`function`&&define.amd?define([],e):typeof t==`function`&&typeof Xo==`object`&&Xo&&Xo.exports?Xo.exports=e():(r.dcodeIO=r.dcodeIO||{}).Long=e()})(Mp,function(){"use strict";function r(z,B,ue){this.low=z|0,this.high=B|0,this.unsigned=!!ue}r.prototype.__isLong__,Object.defineProperty(r.prototype,"__isLong__",{value:!0,enumerable:!1,configurable:!1});function e(z){return(z&&z.__isLong__)===!0}r.isLong=e;var t={},i={};function o(z,B){var ue,we,Ee;return B?(z>>>=0,(Ee=0<=z&&z<256)&&(we=i[z],we)?we:(ue=d(z,(z|0)<0?-1:0,!0),Ee&&(i[z]=ue),ue)):(z|=0,(Ee=-128<=z&&z<128)&&(we=t[z],we)?we:(ue=d(z,z<0?-1:0,!1),Ee&&(t[z]=ue),ue))}r.fromInt=o;function a(z,B){if(isNaN(z)||!isFinite(z))return B?V:Q;if(B){if(z<0)return V;if(z>=M)return re}else{if(z<=-k)return le;if(z+1>=k)return te}return z<0?a(-z,B).neg():d(z%S|0,z/S|0,B)}r.fromNumber=a;function d(z,B,ue){return new r(z,B,ue)}r.fromBits=d;var m=Math.pow;function b(z,B,ue){if(z.length===0)throw Error(`empty string`);if(z===`NaN`||z===`Infinity`||z===`+Infinity`||z===`-Infinity`)return Q;if(typeof B==`number`?(ue=B,B=!1):B=!!B,ue=ue||10,ue<2||36<ue)throw RangeError(`radix`);var we;if((we=z.indexOf(`-`))>0)throw Error(`interior hyphen`);if(we===0)return b(z.substring(1),B,ue).neg();for(var Ee=a(m(ue,8)),_e=Q,Ne=0;Ne<z.length;Ne+=8){var Fe=Math.min(8,z.length-Ne),Oe=parseInt(z.substring(Ne,Ne+Fe),ue);if(Fe<8){var Ge=a(m(ue,Fe));_e=_e.mul(Ge).add(a(Oe))}else _e=_e.mul(Ee),_e=_e.add(a(Oe))}return _e.unsigned=B,_e}r.fromString=b;function y(z){return z instanceof r?z:typeof z==`number`?a(z):typeof z==`string`?b(z):d(z.low,z.high,z.unsigned)}r.fromValue=y;var _=65536,w=1<<24,S=_*_,M=S*S,k=M/2,O=o(w),Q=o(0);r.ZERO=Q;var V=o(0,!0);r.UZERO=V;var G=o(1);r.ONE=G;var J=o(1,!0);r.UONE=J;var $=o(-1);r.NEG_ONE=$;var te=d(-1,2147483647,!1);r.MAX_VALUE=te;var re=d(-1,-1,!0);r.MAX_UNSIGNED_VALUE=re;var le=d(0,-2147483648,!1);r.MIN_VALUE=le;var Y=r.prototype;return Y.toInt=function(){return this.unsigned?this.low>>>0:this.low},Y.toNumber=function(){return this.unsigned?(this.high>>>0)*S+(this.low>>>0):this.high*S+(this.low>>>0)},Y.toString=function(B){if(B=B||10,B<2||36<B)throw RangeError(`radix`);if(this.isZero())return`0`;if(this.isNegative())if(this.eq(le)){var ue=a(B),we=this.div(ue),Ee=we.mul(ue).sub(this);return we.toString(B)+Ee.toInt().toString(B)}else return`-`+this.neg().toString(B);for(var _e=a(m(B,6),this.unsigned),Ne=this,Fe=``;;){var Oe=Ne.div(_e),He=(Ne.sub(Oe.mul(_e)).toInt()>>>0).toString(B);if(Ne=Oe,Ne.isZero())return He+Fe;for(;He.length<6;)He=`0`+He;Fe=``+He+Fe}},Y.getHighBits=function(){return this.high},Y.getHighBitsUnsigned=function(){return this.high>>>0},Y.getLowBits=function(){return this.low},Y.getLowBitsUnsigned=function(){return this.low>>>0},Y.getNumBitsAbs=function(){if(this.isNegative())return this.eq(le)?64:this.neg().getNumBitsAbs();for(var B=this.high!=0?this.high:this.low,ue=31;ue>0&&(B&1<<ue)==0;ue--);return this.high!=0?ue+33:ue+1},Y.isZero=function(){return this.high===0&&this.low===0},Y.isNegative=function(){return!this.unsigned&&this.high<0},Y.isPositive=function(){return this.unsigned||this.high>=0},Y.isOdd=function(){return(this.low&1)===1},Y.isEven=function(){return(this.low&1)===0},Y.equals=function(B){return e(B)||(B=y(B)),this.unsigned!==B.unsigned&&this.high>>>31===1&&B.high>>>31===1?!1:this.high===B.high&&this.low===B.low},Y.eq=Y.equals,Y.notEquals=function(B){return!this.eq(B)},Y.neq=Y.notEquals,Y.lessThan=function(B){return this.comp(B)<0},Y.lt=Y.lessThan,Y.lessThanOrEqual=function(B){return this.comp(B)<=0},Y.lte=Y.lessThanOrEqual,Y.greaterThan=function(B){return this.comp(B)>0},Y.gt=Y.greaterThan,Y.greaterThanOrEqual=function(B){return this.comp(B)>=0},Y.gte=Y.greaterThanOrEqual,Y.compare=function(B){if(e(B)||(B=y(B)),this.eq(B))return 0;var ue=this.isNegative(),we=B.isNegative();return ue&&!we?-1:!ue&&we?1:this.unsigned?B.high>>>0>this.high>>>0||B.high===this.high&&B.low>>>0>this.low>>>0?-1:1:this.sub(B).isNegative()?-1:1},Y.comp=Y.compare,Y.negate=function(){return!this.unsigned&&this.eq(le)?le:this.not().add(G)},Y.neg=Y.negate,Y.add=function(B){e(B)||(B=y(B));var ue=this.high>>>16,we=this.high&65535,Ee=this.low>>>16,_e=this.low&65535,Ne=B.high>>>16,Fe=B.high&65535,Oe=B.low>>>16,Ge=B.low&65535,He=0,je=0,qe=0,vt=0;return vt+=_e+Ge,qe+=vt>>>16,vt&=65535,qe+=Ee+Oe,je+=qe>>>16,qe&=65535,je+=we+Fe,He+=je>>>16,je&=65535,He+=ue+Ne,He&=65535,d(qe<<16|vt,He<<16|je,this.unsigned)},Y.subtract=function(B){return e(B)||(B=y(B)),this.add(B.neg())},Y.sub=Y.subtract,Y.multiply=function(B){if(this.isZero()||(e(B)||(B=y(B)),B.isZero()))return Q;if(this.eq(le))return B.isOdd()?le:Q;if(B.eq(le))return this.isOdd()?le:Q;if(this.isNegative())return B.isNegative()?this.neg().mul(B.neg()):this.neg().mul(B).neg();if(B.isNegative())return this.mul(B.neg()).neg();if(this.lt(O)&&B.lt(O))return a(this.toNumber()*B.toNumber(),this.unsigned);var ue=this.high>>>16,we=this.high&65535,Ee=this.low>>>16,_e=this.low&65535,Ne=B.high>>>16,Fe=B.high&65535,Oe=B.low>>>16,Ge=B.low&65535,He=0,je=0,qe=0,vt=0;return vt+=_e*Ge,qe+=vt>>>16,vt&=65535,qe+=Ee*Ge,je+=qe>>>16,qe&=65535,qe+=_e*Oe,je+=qe>>>16,qe&=65535,je+=we*Ge,He+=je>>>16,je&=65535,je+=Ee*Oe,He+=je>>>16,je&=65535,je+=_e*Fe,He+=je>>>16,je&=65535,He+=ue*Ge+we*Oe+Ee*Fe+_e*Ne,He&=65535,d(qe<<16|vt,He<<16|je,this.unsigned)},Y.mul=Y.multiply,Y.divide=function(B){if(e(B)||(B=y(B)),B.isZero())throw Error(`division by zero`);if(this.isZero())return this.unsigned?V:Q;var ue,we,Ee;if(this.unsigned){if(B.unsigned||(B=B.toUnsigned()),B.gt(this))return V;if(B.gt(this.shru(1)))return J;Ee=V}else{if(this.eq(le)){if(B.eq(G)||B.eq($))return le;if(B.eq(le))return G;return ue=this.shr(1).div(B).shl(1),ue.eq(Q)?B.isNegative()?G:$:(we=this.sub(B.mul(ue)),Ee=ue.add(we.div(B)),Ee)}else if(B.eq(le))return this.unsigned?V:Q;if(this.isNegative())return B.isNegative()?this.neg().div(B.neg()):this.neg().div(B).neg();if(B.isNegative())return this.div(B.neg()).neg();Ee=Q}for(we=this;we.gte(B);){ue=Math.max(1,Math.floor(we.toNumber()/B.toNumber()));for(var Ne=Math.ceil(Math.log(ue)/Math.LN2),Fe=Ne<=48?1:m(2,Ne-48),Oe=a(ue),Ge=Oe.mul(B);Ge.isNegative()||Ge.gt(we);)ue-=Fe,Oe=a(ue,this.unsigned),Ge=Oe.mul(B);Oe.isZero()&&(Oe=G),Ee=Ee.add(Oe),we=we.sub(Ge)}return Ee},Y.div=Y.divide,Y.modulo=function(B){return e(B)||(B=y(B)),this.sub(this.div(B).mul(B))},Y.mod=Y.modulo,Y.not=function(){return d(~this.low,~this.high,this.unsigned)},Y.and=function(B){return e(B)||(B=y(B)),d(this.low&B.low,this.high&B.high,this.unsigned)},Y.or=function(B){return e(B)||(B=y(B)),d(this.low|B.low,this.high|B.high,this.unsigned)},Y.xor=function(B){return e(B)||(B=y(B)),d(this.low^B.low,this.high^B.high,this.unsigned)},Y.shiftLeft=function(B){return e(B)&&(B=B.toInt()),(B&=63)===0?this:B<32?d(this.low<<B,this.high<<B|this.low>>>32-B,this.unsigned):d(0,this.low<<B-32,this.unsigned)},Y.shl=Y.shiftLeft,Y.shiftRight=function(B){return e(B)&&(B=B.toInt()),(B&=63)===0?this:B<32?d(this.low>>>B|this.high<<32-B,this.high>>B,this.unsigned):d(this.high>>B-32,this.high>=0?0:-1,this.unsigned)},Y.shr=Y.shiftRight,Y.shiftRightUnsigned=function(B){if(e(B)&&(B=B.toInt()),B&=63,B===0)return this;var ue=this.high;if(B<32){var we=this.low;return d(we>>>B|ue<<32-B,ue>>>B,this.unsigned)}else return B===32?d(ue,0,this.unsigned):d(ue>>>B-32,0,this.unsigned)},Y.shru=Y.shiftRightUnsigned,Y.toSigned=function(){return this.unsigned?d(this.low,this.high,!1):this},Y.toUnsigned=function(){return this.unsigned?this:d(this.low,this.high,!0)},Y.toBytes=function(z){return z?this.toBytesLE():this.toBytesBE()},Y.toBytesLE=function(){var z=this.high,B=this.low;return[B&255,B>>>8&255,B>>>16&255,B>>>24&255,z&255,z>>>8&255,z>>>16&255,z>>>24&255]},Y.toBytesBE=function(){var z=this.high,B=this.low;return[z>>>24&255,z>>>16&255,z>>>8&255,z&255,B>>>24&255,B>>>16&255,B>>>8&255,B&255]},r})});var S1=v(Eu=>{"use strict";Eu.read=function(r,e,t,i,o){var a,d,m=o*8-i-1,b=(1<<m)-1,y=b>>1,_=-7,w=t?o-1:0,S=t?-1:1,M=r[e+w];for(w+=S,a=M&(1<<-_)-1,M>>=-_,_+=m;_>0;a=a*256+r[e+w],w+=S,_-=8);for(d=a&(1<<-_)-1,a>>=-_,_+=i;_>0;d=d*256+r[e+w],w+=S,_-=8);if(a===0)a=1-y;else{if(a===b)return d?NaN:(M?-1:1)*Infinity;d=d+Math.pow(2,i),a=a-y}return(M?-1:1)*d*Math.pow(2,a-i)};Eu.write=function(r,e,t,i,o,a){var d,m,b,y=a*8-o-1,_=(1<<y)-1,w=_>>1,S=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,M=i?0:a-1,k=i?1:-1,O=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===Infinity?(m=isNaN(e)?1:0,d=_):(d=Math.floor(Math.log(e)/Math.LN2),e*(b=Math.pow(2,-d))<1&&(d--,b*=2),d+w>=1?e+=S/b:e+=S*Math.pow(2,1-w),e*b>=2&&(d++,b/=2),d+w>=_?(m=0,d=_):d+w>=1?(m=(e*b-1)*Math.pow(2,o),d=d+w):(m=e*Math.pow(2,w-1)*Math.pow(2,o),d=0));o>=8;r[t+M]=m&255,M+=k,m/=256,o-=8);for(d=d<<o|m,y+=o;y>0;r[t+M]=d&255,M+=k,d/=256,y-=8);r[t+M-k]|=O*128}});var P1=v((lq,R1)=>{"use strict";R1.exports=et;var Pa=S1();function et(r){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(r)?r:new Uint8Array(r||0),this.pos=0,this.type=0,this.length=this.buf.length}et.Varint=0;et.Fixed64=1;et.Bytes=2;et.Fixed32=5;var vu=65536*65536,C1=1/vu,a8=12,L1=typeof TextDecoder>`u`?null:new TextDecoder(`utf-8`);et.prototype={destroy:function(){this.buf=null},readFields:function(r,e,t){for(t=t||this.length;this.pos<t;){var i=this.readVarint(),o=i>>3,a=this.pos;this.type=i&7,r(o,e,this),this.pos===a&&this.skip(i)}return e},readMessage:function(r,e){return this.readFields(r,e,this.readVarint()+this.pos)},readFixed32:function(){var r=Na(this.buf,this.pos);return this.pos+=4,r},readSFixed32:function(){var r=M1(this.buf,this.pos);return this.pos+=4,r},readFixed64:function(){var r=Na(this.buf,this.pos)+Na(this.buf,this.pos+4)*vu;return this.pos+=8,r},readSFixed64:function(){var r=Na(this.buf,this.pos)+M1(this.buf,this.pos+4)*vu;return this.pos+=8,r},readFloat:function(){var r=Pa.read(this.buf,this.pos,!0,23,4);return this.pos+=4,r},readDouble:function(){var r=Pa.read(this.buf,this.pos,!0,52,8);return this.pos+=8,r},readVarint:function(r){var e=this.buf,t,i;return i=e[this.pos++],t=i&127,i<128||(i=e[this.pos++],t|=(i&127)<<7,i<128)||(i=e[this.pos++],t|=(i&127)<<14,i<128)||(i=e[this.pos++],t|=(i&127)<<21,i<128)?t:(i=e[this.pos],t|=(i&15)<<28,c8(t,r,this))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var r=this.readVarint();return r%2===1?(r+1)/-2:r/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var r=this.readVarint()+this.pos,e=this.pos;return this.pos=r,r-e>=a8&&L1?w8(this.buf,e,r):_8(this.buf,e,r)},readBytes:function(){var r=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,r);return this.pos=r,e},readPackedVarint:function(r,e){if(this.type!==et.Bytes)return r.push(this.readVarint(e));var t=un(this);for(r=r||[];this.pos<t;)r.push(this.readVarint(e));return r},readPackedSVarint:function(r){if(this.type!==et.Bytes)return r.push(this.readSVarint());var e=un(this);for(r=r||[];this.pos<e;)r.push(this.readSVarint());return r},readPackedBoolean:function(r){if(this.type!==et.Bytes)return r.push(this.readBoolean());var e=un(this);for(r=r||[];this.pos<e;)r.push(this.readBoolean());return r},readPackedFloat:function(r){if(this.type!==et.Bytes)return r.push(this.readFloat());var e=un(this);for(r=r||[];this.pos<e;)r.push(this.readFloat());return r},readPackedDouble:function(r){if(this.type!==et.Bytes)return r.push(this.readDouble());var e=un(this);for(r=r||[];this.pos<e;)r.push(this.readDouble());return r},readPackedFixed32:function(r){if(this.type!==et.Bytes)return r.push(this.readFixed32());var e=un(this);for(r=r||[];this.pos<e;)r.push(this.readFixed32());return r},readPackedSFixed32:function(r){if(this.type!==et.Bytes)return r.push(this.readSFixed32());var e=un(this);for(r=r||[];this.pos<e;)r.push(this.readSFixed32());return r},readPackedFixed64:function(r){if(this.type!==et.Bytes)return r.push(this.readFixed64());var e=un(this);for(r=r||[];this.pos<e;)r.push(this.readFixed64());return r},readPackedSFixed64:function(r){if(this.type!==et.Bytes)return r.push(this.readSFixed64());var e=un(this);for(r=r||[];this.pos<e;)r.push(this.readSFixed64());return r},skip:function(r){var e=r&7;if(e===et.Varint)for(;this.buf[this.pos++]>127;);else if(e===et.Bytes)this.pos=this.readVarint()+this.pos;else if(e===et.Fixed32)this.pos+=4;else if(e===et.Fixed64)this.pos+=8;else throw new Error(`Unimplemented type: `+e)},writeTag:function(r,e){this.writeVarint(r<<3|e)},realloc:function(r){for(var e=this.length||16;e<this.pos+r;)e*=2;if(e!==this.length){var t=new Uint8Array(e);t.set(this.buf),this.buf=t,this.length=e}},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(r){this.realloc(4),uo(this.buf,r,this.pos),this.pos+=4},writeSFixed32:function(r){this.realloc(4),uo(this.buf,r,this.pos),this.pos+=4},writeFixed64:function(r){this.realloc(8),uo(this.buf,r&-1,this.pos),uo(this.buf,Math.floor(r*C1),this.pos+4),this.pos+=8},writeSFixed64:function(r){this.realloc(8),uo(this.buf,r&-1,this.pos),uo(this.buf,Math.floor(r*C1),this.pos+4),this.pos+=8},writeVarint:function(r){if(r=+r||0,r>268435455||r<0){l8(r,this);return}this.realloc(4),this.buf[this.pos++]=r&127|(r>127?128:0),!(r<=127)&&(this.buf[this.pos++]=(r>>>=7)&127|(r>127?128:0),!(r<=127)&&(this.buf[this.pos++]=(r>>>=7)&127|(r>127?128:0),!(r<=127)&&(this.buf[this.pos++]=r>>>7&127)))},writeSVarint:function(r){this.writeVarint(r<0?-r*2-1:r*2)},writeBoolean:function(r){this.writeVarint(!!r)},writeString:function(r){r=String(r),this.realloc(r.length*4),this.pos++;var e=this.pos;this.pos=E8(this.buf,r,this.pos);var t=this.pos-e;t>=128&&I1(e,t,this),this.pos=e-1,this.writeVarint(t),this.pos+=t},writeFloat:function(r){this.realloc(4),Pa.write(this.buf,r,this.pos,!0,23,4),this.pos+=4},writeDouble:function(r){this.realloc(8),Pa.write(this.buf,r,this.pos,!0,52,8),this.pos+=8},writeBytes:function(r){var e=r.length;this.writeVarint(e),this.realloc(e);for(var t=0;t<e;t++)this.buf[this.pos++]=r[t]},writeRawMessage:function(r,e){this.pos++;var t=this.pos;r(e,this);var i=this.pos-t;i>=128&&I1(t,i,this),this.pos=t-1,this.writeVarint(i),this.pos+=i},writeMessage:function(r,e,t){this.writeTag(r,et.Bytes),this.writeRawMessage(e,t)},writePackedVarint:function(r,e){e.length&&this.writeMessage(r,h8,e)},writePackedSVarint:function(r,e){e.length&&this.writeMessage(r,d8,e)},writePackedBoolean:function(r,e){e.length&&this.writeMessage(r,g8,e)},writePackedFloat:function(r,e){e.length&&this.writeMessage(r,p8,e)},writePackedDouble:function(r,e){e.length&&this.writeMessage(r,m8,e)},writePackedFixed32:function(r,e){e.length&&this.writeMessage(r,b8,e)},writePackedSFixed32:function(r,e){e.length&&this.writeMessage(r,T8,e)},writePackedFixed64:function(r,e){e.length&&this.writeMessage(r,y8,e)},writePackedSFixed64:function(r,e){e.length&&this.writeMessage(r,x8,e)},writeBytesField:function(r,e){this.writeTag(r,et.Bytes),this.writeBytes(e)},writeFixed32Field:function(r,e){this.writeTag(r,et.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(r,e){this.writeTag(r,et.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(r,e){this.writeTag(r,et.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(r,e){this.writeTag(r,et.Fixed64),this.writeSFixed64(e)},writeVarintField:function(r,e){this.writeTag(r,et.Varint),this.writeVarint(e)},writeSVarintField:function(r,e){this.writeTag(r,et.Varint),this.writeSVarint(e)},writeStringField:function(r,e){this.writeTag(r,et.Bytes),this.writeString(e)},writeFloatField:function(r,e){this.writeTag(r,et.Fixed32),this.writeFloat(e)},writeDoubleField:function(r,e){this.writeTag(r,et.Fixed64),this.writeDouble(e)},writeBooleanField:function(r,e){this.writeVarintField(r,!!e)}};function c8(r,e,t){var i=t.buf,o,a;if(a=i[t.pos++],o=(a&112)>>4,a<128||(a=i[t.pos++],o|=(a&127)<<3,a<128)||(a=i[t.pos++],o|=(a&127)<<10,a<128)||(a=i[t.pos++],o|=(a&127)<<17,a<128)||(a=i[t.pos++],o|=(a&127)<<24,a<128)||(a=i[t.pos++],o|=(a&1)<<31,a<128))return lo(r,o,e);throw new Error(`Expected varint not more than 10 bytes`)}function un(r){return r.type===et.Bytes?r.readVarint()+r.pos:r.pos+1}function lo(r,e,t){return t?e*4294967296+(r>>>0):(e>>>0)*4294967296+(r>>>0)}function l8(r,e){var t,i;if(r>=0?(t=r%4294967296|0,i=r/4294967296|0):(t=~(-r%4294967296),i=~(-r/4294967296),t^4294967295?t=t+1|0:(t=0,i=i+1|0)),r>=0x10000000000000000||r<-0x10000000000000000)throw new Error(`Given varint doesn't fit into 10 bytes`);e.realloc(10),u8(t,i,e),f8(i,e)}function u8(r,e,t){t.buf[t.pos++]=r&127|128,r>>>=7,t.buf[t.pos++]=r&127|128,r>>>=7,t.buf[t.pos++]=r&127|128,r>>>=7,t.buf[t.pos++]=r&127|128,r>>>=7,t.buf[t.pos]=r&127}function f8(r,e){var t=(r&7)<<4;e.buf[e.pos++]|=t|((r>>>=3)?128:0),r&&(e.buf[e.pos++]=r&127|((r>>>=7)?128:0),r&&(e.buf[e.pos++]=r&127|((r>>>=7)?128:0),r&&(e.buf[e.pos++]=r&127|((r>>>=7)?128:0),r&&(e.buf[e.pos++]=r&127|((r>>>=7)?128:0),r&&(e.buf[e.pos++]=r&127)))))}function I1(r,e,t){var i=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(Math.LN2*7));t.realloc(i);for(var o=t.pos-1;o>=r;o--)t.buf[o+i]=t.buf[o]}function h8(r,e){for(var t=0;t<r.length;t++)e.writeVarint(r[t])}function d8(r,e){for(var t=0;t<r.length;t++)e.writeSVarint(r[t])}function p8(r,e){for(var t=0;t<r.length;t++)e.writeFloat(r[t])}function m8(r,e){for(var t=0;t<r.length;t++)e.writeDouble(r[t])}function g8(r,e){for(var t=0;t<r.length;t++)e.writeBoolean(r[t])}function b8(r,e){for(var t=0;t<r.length;t++)e.writeFixed32(r[t])}function T8(r,e){for(var t=0;t<r.length;t++)e.writeSFixed32(r[t])}function y8(r,e){for(var t=0;t<r.length;t++)e.writeFixed64(r[t])}function x8(r,e){for(var t=0;t<r.length;t++)e.writeSFixed64(r[t])}function Na(r,e){return(r[e]|r[e+1]<<8|r[e+2]<<16)+r[e+3]*16777216}function uo(r,e,t){r[t]=e,r[t+1]=e>>>8,r[t+2]=e>>>16,r[t+3]=e>>>24}function M1(r,e){return(r[e]|r[e+1]<<8|r[e+2]<<16)+(r[e+3]<<24)}function _8(r,e,t){for(var i=``,o=e;o<t;){var a=r[o],d=null,m=a>239?4:a>223?3:a>191?2:1;if(o+m>t)break;var b,y,_;m===1?a<128&&(d=a):m===2?(b=r[o+1],(b&192)===128&&(d=(a&31)<<6|b&63,d<=127&&(d=null))):m===3?(b=r[o+1],y=r[o+2],(b&192)===128&&(y&192)===128&&(d=(a&15)<<12|(b&63)<<6|y&63,(d<=2047||d>=55296&&d<=57343)&&(d=null))):m===4&&(b=r[o+1],y=r[o+2],_=r[o+3],(b&192)===128&&(y&192)===128&&(_&192)===128&&(d=(a&15)<<18|(b&63)<<12|(y&63)<<6|_&63,(d<=65535||d>=1114112)&&(d=null))),d===null?(d=65533,m=1):d>65535&&(d-=65536,i+=String.fromCharCode(d>>>10&1023|55296),d=56320|d&1023),i+=String.fromCharCode(d),o+=m}return i}function w8(r,e,t){return L1.decode(r.subarray(e,t))}function E8(r,e,t){for(var i=0,o,a;i<e.length;i++){if(o=e.charCodeAt(i),o>55295&&o<57344)if(a)if(o<56320){r[t++]=239,r[t++]=191,r[t++]=189,a=o;continue}else o=a-55296<<10|o-56320|65536,a=null;else{o>56319||i+1===e.length?(r[t++]=239,r[t++]=191,r[t++]=189):a=o;continue}else a&&(r[t++]=239,r[t++]=191,r[t++]=189,a=null);o<128?r[t++]=o:(o<2048?r[t++]=o>>6|192:(o<65536?r[t++]=o>>12|224:(r[t++]=o>>18|240,r[t++]=o>>12&63|128),r[t++]=o>>6&63|128),r[t++]=o&63|128)}return t}});function Ro(r){let e=Infinity,t=Infinity,i=Infinity,o=-Infinity,a=-Infinity,d=-Infinity,m=r.POSITION?r.POSITION.value:[],b=m&&m.length;for(let y=0;y<b;y+=3){let _=m[y],w=m[y+1],S=m[y+2];e=_<e?_:e,t=w<t?w:t,i=S<i?S:i,o=_>o?_:o,a=w>a?w:a,d=S>d?S:d}return[[e,t,i],[o,a,d]]}function iy(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version=`4.5.1`),globalThis._loadersgl_.version}var Th=iy();function yh(r,e){if(!r)throw new Error(e||`loaders.gl assertion failed.`)}var Hr={self:typeof self<`u`&&self,window:typeof window<`u`&&window,global:typeof global<`u`&&global,document:typeof document<`u`&&document};Hr.self||Hr.window||Hr.global;Hr.window||Hr.self||Hr.global;Hr.global||Hr.self||Hr.window;Hr.document;var tn=typeof process!=`object`||String(process)!==`[object process]`||process.browser;var Po=typeof importScripts==`function`;typeof window<`u`&&window.orientation;var xh=typeof process<`u`&&process.version&&/v([0-9]*)/.exec(process.version);xh&&parseFloat(xh[1]);var M0={};function No(r$1={}){let e=r$1.useLocalLibraries??r$1.core?.useLocalLibraries,t=r$1.CDN??r$1.core?.CDN,i=r$1.modules;return r(r(r({},e!==void 0?{useLocalLibraries:e}:{}),t!==void 0?{CDN:t}:{}),i!==void 0?{modules:i}:{})}async function wr(r,e=null,t={},i=null){return e&&(r=_h(r,e,t,i)),M0[r]=M0[r]||oy(r),await M0[r]}function _h(r,e,t={},i=null){if(t?.core)throw new Error(`loadLibrary: options.core must be pre-normalized`);if(!t.useLocalLibraries&&r.startsWith(`http`))return r;i=i||r;let o=t.modules||{};return o[i]?o[i]:tn?t.CDN?(yh(t.CDN.startsWith(`http`)),`${t.CDN}/${e}@${Th}/dist/libs/${i}`):Po?`../src/libs/${i}`:`modules/${e}/src/libs/${i}`:`modules/${e}/dist/libs/${i}`}async function oy(r){if(r.endsWith(`wasm`))return await Ay(r);if(!tn){let{requireFromFile:t}=globalThis.loaders||{};try{let i=await t?.(r);return i||!r.includes(`/dist/libs/`)?i:await t?.(r.replace(`/dist/libs/`,`/src/libs/`))}catch(i){if(r.includes(`/dist/libs/`))try{return await t?.(r.replace(`/dist/libs/`,`/src/libs/`))}catch{}return console.error(i),null}}if(Po)return importScripts(r);return sy(await ay(r),r)}function sy(r,e){if(!tn){let{requireFromString:i}=globalThis.loaders||{};return i?.(r,e)}if(Po)return eval.call(globalThis,r),null;let t=document.createElement(`script`);t.id=e;try{t.appendChild(document.createTextNode(r))}catch{t.text=r}return document.body.appendChild(t),null}async function Ay(r){let{readFileAsArrayBuffer:e}=globalThis.loaders||{};if(tn||!e||r.startsWith(`http`))return await(await fetch(r)).arrayBuffer();try{return await e(r)}catch{if(r.includes(`/dist/libs/`))return await e(r.replace(`/dist/libs/`,`/src/libs/`));throw new Error(`Failed to load ArrayBuffer from ${r}`)}}async function ay(r){let{readFileAsText:e}=globalThis.loaders||{};if(tn||!e||r.startsWith(`http`))return await(await fetch(r)).text();try{return await e(r)}catch{if(r.includes(`/dist/libs/`))return await e(r.replace(`/dist/libs/`,`/src/libs/`));throw new Error(`Failed to load text from ${r}`)}}var cy=r({},Xs$1.defaultProps);var Pr=(()=>{class r$2 extends Dm$1{indexToBounds(){return null}renderLayers(){let{elevationScale:t,extruded:i,wireframe:o,filled:a,stroked:d,lineWidthUnits:m,lineWidthScale:b,lineWidthMinPixels:y,lineWidthMaxPixels:_,lineAntialiasing:w,lineJointRounded:S,lineMiterLimit:M,lineDashJustified:k,getElevation:O,getFillColor:Q,getLineColor:V,getLineWidth:G}=this.props,{updateTriggers:J,material:$,transitions:te}=this.props,re=this.getSubLayerClass(`cell`,Xs$1),z=this.indexToBounds()||{},{updateTriggers:le}=z,Y=u(z,[`updateTriggers`]);return new re({filled:a,wireframe:o,extruded:i,elevationScale:t,stroked:d,lineWidthUnits:m,lineWidthScale:b,lineWidthMinPixels:y,lineWidthMaxPixels:_,lineAntialiasing:w,lineJointRounded:S,lineMiterLimit:M,lineDashJustified:k,material:$,transitions:te,getElevation:O,getFillColor:Q,getLineColor:V,getLineWidth:G},this.getSubLayerProps({id:`cell`,updateTriggers:J&&s(r({},le),{getElevation:J.getElevation,getFillColor:J.getFillColor,getLineColor:J.getLineColor,getLineWidth:J.getLineWidth})}),Y)}}return r$2.layerName=`GeoCellLayer`,r$2.defaultProps=cy,r$2})();function Xh(){let r=new Float64Array(4);return r[0]=1,r[3]=1,r}function uy(r,e){let t=Math.sin(e),i=Math.cos(e);return r[0]=i,r[1]=t,r[2]=-t,r[3]=i,r}function zn(){return new Float64Array(2)}function F0(r){let e=new Float64Array(2);return e[0]=r[0],e[1]=r[1],e}function fy(r,e,t){return r[0]=e,r[1]=t,r}function hy(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r}function Yh(r,e,t){return r[0]=e[0]*t,r[1]=e[1]*t,r}function dy(r,e,t,i){return r[0]=e[0]+t[0]*i,r[1]=e[1]+t[1]*i,r}function Jh(r,e){return r[0]=-e[0],r[1]=-e[1],r}function Zh(r){return Math.hypot(r[0],r[1])}function $h(r,e,t,i){let o=e[0],a=e[1];return r[0]=o+i*(t[0]-o),r[1]=a+i*(t[1]-a),r}function py(r,e,t,i){let o=e[0]-t[0],a=e[1]-t[1],d=Math.sin(i),m=Math.cos(i);return r[0]=o*m-a*d+t[0],r[1]=o*d+a*m+t[1],r}function z0(r,e,t){let i=e[0],o=e[1];return r[0]=t[0]*i+t[2]*o,r[1]=t[1]*i+t[3]*o,r}function ed(r,e,t){let i=e[0],o=e[1];return r[0]=t[0]*i+t[2]*o+t[4],r[1]=t[1]*i+t[3]*o+t[5],r}function Er(){return new Float64Array(3)}function Ei(r,e,t){let i=new Float64Array(3);return i[0]=r,i[1]=e,i[2]=t,i}function my(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r}function Bs(r,e,t){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r}function L0(r,e,t,i){return r[0]=e[0]+t[0]*i,r[1]=e[1]+t[1]*i,r[2]=e[2]+t[2]*i,r}function gy(r){return Math.hypot(r[0],r[1],r[2])}function wh(r,e){return Math.hypot(e[0]-r[0],e[1]-r[1],e[2]-r[2])}function H0(r,e){let t=e[0],i=e[1],o=e[2],a=t*t+i*i+o*o;return a>0&&(a=1/Math.sqrt(a)),r[0]=e[0]*a,r[1]=e[1]*a,r[2]=e[2]*a,r}function rn(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]}function Eh(r,e,t){let i=e[0],o=e[1],a=e[2],d=t[0],m=t[1],b=t[2];return r[0]=o*b-a*m,r[1]=a*d-i*b,r[2]=i*m-o*d,r}function Hs(r,e,t){let i=t[0],o=t[1],a=t[2],d=t[3],m=e[0],b=e[1],y=e[2],_=o*y-a*b,w=a*m-i*y,S=i*b-o*m,M=o*S-a*w,k=a*_-i*S,O=i*w-o*_,Q=d*2;return _*=Q,w*=Q,S*=Q,M*=2,k*=2,O*=2,r[0]=m+_+M,r[1]=b+w+k,r[2]=y+S+O,r}var Xs=(1+Math.sqrt(5))/2;2*Math.PI;var qs=2*Math.PI/5;var qr=Math.PI/5;var vh=Math.PI/10;var by=2*Math.atan(Xs);var k0=Math.PI-by;-.5*Math.PI+Math.acos(-1/Math.sqrt(3-Xs));var Ys=(Math.sqrt(5)-1)/2;var Ty=3-Math.sqrt(5);var yy=Math.sqrt(3-Xs);Math.sqrt(3)*yy/Xs;var Ws=6371007.2;4*Math.PI*Ws*Ws;function xy(r,e,t,i){let o=e[0]-r[0],a=e[1]-r[1],d=i[0]-t[0],m=i[1]-t[1],b=o*m-a*d;if(Math.abs(b)<1e-12)return!1;let y=t[0]-r[0],_=t[1]-r[1],w=(y*m-_*d)/b,S=(y*a-_*o)/b;return w>=0&&w<=1&&S>=0&&S<=1}var q0=class O0{constructor(e){this.vertices=e,this.isWindingCorrect()||this.vertices.reverse()}getArea(){let e=0,t=this.vertices.length;for(let i=0;i<t;i++){let o=(i+1)%t;e+=(this.vertices[o][0]-this.vertices[i][0])*(this.vertices[o][1]+this.vertices[i][1])}return e}isWindingCorrect(){return this.getArea()>=0}getVertices(){return this.vertices}scale(e){for(let t of this.vertices)Yh(t,t,e);return this}rotate180(){for(let e of this.vertices)Jh(e,e);return this}reflectY(){for(let e of this.vertices)e[1]=-e[1];return this.vertices.reverse(),this}translate(e){for(let t of this.vertices)hy(t,t,e);return this}transform(e){for(let t of this.vertices)z0(t,t,e);return this}transform2d(e){for(let t of this.vertices)ed(t,t,e);return this}clone(){return new O0(this.vertices.map(t=>F0(t)))}getCenter(){let e=this.vertices.length;return this.vertices.reduce((i,o)=>[i[0]+o[0]/e,i[1]+o[1]/e],[0,0])}containsPoint(e){if(!this.isWindingCorrect())throw new Error(`Pentagon is not counter-clockwise`);let t=this.vertices.length,i=1;for(let o=0;o<t;o++){let a=this.vertices[o],d=this.vertices[(o+1)%t],m=a[0]-d[0],b=a[1]-d[1],y=e[0]-a[0],_=e[1]-a[1],w=m*_-b*y;if(w<0){let S=Math.sqrt(y*y+_*_);i=Math.min(i,w/S)}}return i}intersectsSegment(e,t){if(this.containsPoint(e)>0||this.containsPoint(t)>0)return!0;let i=this.vertices.length;for(let o=0;o<i;o++){let a=this.vertices[o],d=this.vertices[(o+1)%i];if(xy(e,t,a,d))return!0}return!1}splitEdges(e){if(e<=1)return this;let t=[],i=this.vertices.length;for(let o=0;o<i;o++){let a=this.vertices[o],d=this.vertices[(o+1)%i];t.push(F0(a));for(let m=1;m<e;m++){let b=m/e,y=zn();$h(y,a,d,b),t.push(y)}}return new O0(t)}};var td=[0,0];var rd=[0,1];var jn=[.7885966681787006,1.6149108024237764];var nd=[1.6171013659387945,1.054928690397459];var id=[Math.cos(vh),Math.sin(vh)];var _y=2*Zh(jn)*Math.cos(qr);var wy=qr-Math.atan2(jn[1],jn[0]);var Ey=2*Ys/_y;[td,rd,jn,nd,id].forEach(r=>{Yh(r,r,Ey),py(r,r,[0,0],wy)});var od=new q0([td,rd,jn,nd,id]);var sd=Math.atan2(jn[1],jn[0])-qr;var vy=[0,0];var Qs=Ys/Math.cos(qr);var Sh=sd+qr;var _n=[Qs*Math.cos(Sh),Qs*Math.sin(Sh)];var Ch=sd-qr;var Vn=[Qs*Math.cos(Ch),Qs*Math.sin(Ch)];var Ad=new q0([vy,_n,Vn]);var Sy=[_n[0],_n[1],Vn[0],Vn[1]];var Us=1/(_n[0]*Vn[1]-Vn[0]*_n[1]);Vn[1]*Us,-_n[1]*Us,-Vn[0]*Us,_n[0]*Us;var Cy=new Float64Array([-.0022392098386786394,21308606513250217e-22,-2.559257686421274e-9,33701965267802837e-28,-4667545312611249e-30,667492870384816e-32]);var Iy=new Float64Array([.0022392089963541657,28831978048607556e-22,5.08622073997266e-9,102018123778161e-25,21912872306767718e-30,49284235482523806e-33]);var My=class{applyCoefficients(r,e){let t=Math.sin(r),i=Math.cos(r),o=2*(i-t)*(i+t),a,d;return a=o*e[5]+e[4],d=o*a+e[3],a=o*d-a+e[2],d=o*a-d+e[1],a=o*d-a+e[0],r+2*t*i*a}forward(r){return this.applyCoefficients(r,Cy)}inverse(r){return this.applyCoefficients(r,Iy)}};var ad=new My;function Ih(r){return r*(Math.PI/180)}function Mh(r){return r*(180/Math.PI)}function Lh(r){return[Zh(r),Math.atan2(r[1],r[0])]}function Ly([r,e]){return[r*Math.cos(e),r*Math.sin(e)]}function Ry(r,[e,t,i]){let o=[e[0]-i[0],e[1]-i[1]],a=[i[0]-t[0],i[1]-t[1]],d=[r[0]-i[0],r[1]-i[1]],m=a[0]*o[1]-a[1]*o[0],b=(a[0]*d[1]-a[1]*d[0])/m,y=(o[0]*d[1]-o[1]*d[0])/m;return[b,y,1-(b+y)]}function Py(r,[e,t,i]){return[r[0]*e[0]+r[1]*t[0]+r[2]*i[0],r[0]*e[1]+r[1]*t[1]+r[2]*i[1]]}function D0(r){let e=Math.atan2(r[1],r[0]),t=Math.sqrt(r[0]*r[0]+r[1]*r[1]);return[e,Math.atan2(t,r[2])]}function Gn([r,e]){let t=Math.sin(e);return[t*Math.cos(r),t*Math.sin(r),Math.cos(e)]}var cd=93;function Ny([r,e]){let t=Ih(r+cd),i=Ih(e),o=ad.forward(i);return[t,Math.PI/2-o]}function ld(r){return((r+180)%360+360)%360-180}function ud([r,e]){let t=ld(Mh(r)-cd),i=Math.PI/2-e;return[t,Mh(ad.inverse(i))]}function Fy(r){let e=Er();for(let a=0;a<r.length;a++)my(e,e,Gn(Ny(r[a])));H0(e,e);let[t,i]=ud(D0(e));(i>89.99||i<-89.99)&&(t=r[0][0]),t=ld(t);let o=new Array(r.length);for(let a=0;a<r.length;a++){let d=r[a][0],m=r[a][1];for(;d-t>180;)d=d-360;for(;d-t<-180;)d=d+360;o[a]=[d,m]}return o}function ky(){let r=new Float64Array(4);return r[3]=1,r}function Oy(r,e){return r[0]=-e[0],r[1]=-e[1],r[2]=-e[2],r[3]=e[3],r}Ei(1,0,0);Ei(0,1,0);var Js=Math.sqrt(5);var Zs=Math.sqrt(.2);var fd=Math.sqrt((1-Zs)/2);var hd=Math.sqrt((1+Zs)/2);var Gs=.5;var Rh=Math.sqrt((2.5-Js)/10);var Ph=Math.sqrt((2.5+Js)/10);var Nh=Math.sqrt((1+Zs)/8);var Fh=Math.sqrt((1-Zs)/8);var kh=Math.sqrt((3-Js)/8);var Oh=Math.sqrt((3+Js)/8);var js=[[0,0],[fd,0],[Rh,Gs],[-Nh,kh],[-Nh,-kh],[Rh,-Gs],[-hd,0],[-Fh,-Oh],[Ph,-Gs],[Ph,Gs],[-Fh,Oh],[0,0]].map(([r,e])=>[-e,r]).map((r,e)=>e===0?[0,0,0,1]:e===11?[0,-1,0,0]:[...r,0,e<6?hd:fd]);var dd=[`vu`,`uw`,`vw`,`vw`,`vw`];var Fo=[`wu`,`uw`,`vw`,`vu`,`uw`];var R0=[`wu`,`uv`,`wv`,`wu`,`uw`];var Vs=[`vu`,`uv`,`wv`,`wu`,`uw`];var Uy=[dd,Vs,R0,Fo,R0,Vs,R0,Fo,Fo,Fo,Vs,Vs];var Gy=[4,2,3,2,0,4,3,2,2,0,3,0];var Dh=[0,1,2,4,3,5,7,8,6,11,10,9];var Nr=[];function jy(){zs([0,0],0,js[0]);for(let r=0;r<5;r++){let e=r*qs,t=e+qr;zs([e,k0],qr,js[r+1]),zs([t,Math.PI-k0],qr,js[(r+3)%5+6])}zs([0,Math.PI],0,js[11])}var xi=0;function zs(r,e,t){if(xi>11)throw new Error(`Too many origins: ${xi}`);let i=ky();Oy(i,t);let o={id:xi,axis:r,axisCartesian:Gn(r),quat:t,inverseQuat:i,angle:e,orientation:Uy[xi],firstQuintant:Gy[xi]};Nr.push(o),xi++}jy();Nr.sort((r,e)=>Dh.indexOf(r.id)-Dh.indexOf(e.id));Nr.forEach((r,e)=>r.id=e);function Vy(r,e){let t=e.orientation,i=t===dd||t===Fo?-1:1,o=(r-e.firstQuintant+5)%5,a=t[o];return{quintant:(e.firstQuintant+i*o+5)%5,orientation:a}}var zy=class{forward([r,e]){return[Math.tan(e),r]}inverse([r,e]){return[e,Math.atan(r)]}};function Hy(r,e,t,i,o,a){let d=new Float64Array(6);return d[0]=r,d[1]=e,d[2]=t,d[3]=i,d[4]=o,d[5]=a,d}function qy(r,e,t){return r[0]*(e[1]*t[2]-e[2]*t[1])+r[1]*(e[2]*t[0]-e[0]*t[2])+r[2]*(e[0]*t[1]-e[1]*t[0])}function Bh(r,e,t){let i=1+(r[0]*e[0]+r[1]*e[1]+r[2]*e[2])+(e[0]*t[0]+e[1]*t[1]+e[2]*t[2])+(t[0]*r[0]+t[1]*r[1]+t[2]*r[2]);return 2*Math.atan2(qy(r,e,t),i)}var Uh=Er();var Wt=Er();var P0=zn();var N0=zn();var Wy=class pd{constructor(e){this.constants=pd.computeConstants(e)}static computeConstants(e){let[t,i,o]=e,a=Er();Eh(a,i,o);let d=rn(t,i),m=rn(t,o),b=rn(i,o),y=rn(t,a),_=m+b,w=d+1,S=d*b-m,M=_*_-w*w,k=2*w*S,O=Hy(y*y-M,-k,-2*y*_,2*y*w,y*y+M,k);return{volumeABC:y,areaABC:Bh(t,i,o),AdotB:d,AdotC:m,alphaTransform:O}}forward(e,t,i){let[o,a,d]=t,{areaABC:m,volumeABC:b}=this.constants;Eh(Uh,a,d);let y=rn(e,Uh);Bs(Wt,e,b),L0(Wt,Wt,o,-y);let _=gy(Wt);Bs(Wt,Wt,_>0?1/_:1);let M=Math.max(0,Bh(o,a,Wt))/m,k=_/b*Math.sqrt((1+rn(o,Wt))/(1+rn(o,e)));return Py([1-k,k*(1-M),k*M],i)}inverse(e,t,i){let[o,a,d]=i,m=Ry(e,t),b=.99999999999999;if(m[0]>b)return o;if(m[1]>b)return a;if(m[2]>b)return d;let{AdotB:y,AdotC:_,alphaTransform:w,areaABC:S}=this.constants,M=rn(o,a),k=Math.abs(M-y)>Math.abs(M-_),O=k?d:a,Q=k?a:d,V=k?m[1]:m[2],G=1-m[0],J=V/G*S;P0[0]=Math.cos(J),P0[1]=Math.sin(J),ed(N0,P0,w),Bs(Wt,O,N0[0]),L0(Wt,Wt,Q,N0[1]),H0(Wt,Wt);let $=rn(o,Wt),te=1+G*G*($-1),re=G*Math.sqrt((1+te)/(1+$)),le=te-$*re,Y=Er();return Bs(Y,o,le),L0(Y,Y,Wt,re),Y}};var Qy=!1;var W0=[0,1,2,3,4].map(r=>{let e=Xh();return uy(e,qs*r),e});var Gh=zn();var jh=zn();[0,1,2,3].map(r=>{let e=od.clone();return r&1&&e.rotate180(),r&2&&e.reflectY(),e.getCenter()});function Ky(r,e,t,i,o=Qy){let a=(o?Ad:od).clone();return i&1&&a.rotate180(),i&2&&a.reflectY(),fy(jh,t.x+t.y,-t.x+(i&1)),z0(Gh,jh,Sy),a.translate(Gh),a.scale(1/2**r),a.transform(W0[e]),a}function md(r){let e=Ad.clone();return e.transform(W0[r]),e}function Xy(){let r=[];for(let e of W0)r.push(z0(zn(),_n,e));return r.reverse(),new q0(r)}var Yy=class{constructor(){if(this.vertices=[],this.invocations=0,this.addFaceCenters(),this.addVertices(),this.addMidpoints(),this.vertices.length!==62)throw new Error(`Failed to construct CRS: vertices length is not 62`);Object.freeze(this.vertices)}getCanonicalTriangle(){return[this.vertices[0],this.vertices[32],this.vertices[12]]}getVertex(r){this.invocations++,this.invocations===1e4&&console.warn(`Too many CRS invocations, results should be cached`);for(let e of this.vertices)if(wh(r,e)<1e-5)return e;throw new Error(`Failed to find vertex in CRS`)}addFaceCenters(){Nr.forEach(r=>this.add(Gn(r.axis)))}addVertices(){let r=Math.atan(Ty);for(let e of Nr)for(let t=0;t<5;t++){let o=Gn([(2*t+1)*Math.PI/5+e.angle,r]);Hs(o,o,e.quat),this.add(o)}}addMidpoints(){let r=Math.atan(Ys);for(let e of Nr)for(let t=0;t<5;t++){let o=Gn([2*t*Math.PI/5+e.angle,r]);Hs(o,o,e.quat),this.add(o)}}add(r){let e=H0(Er(),r);return this.vertices.find(i=>wh(e,i)<1e-5)?!1:(this.vertices.push(e),!0)}};var Vh=new Yy;var Jy=class{constructor(){this.faceTriangles=[],this.sphericalTriangles=[],this.equalArea=new Wy(Vh.getCanonicalTriangle()),this.gnomonic=new zy}forward(r,e){return this.forwardCartesian(Gn(r),e)}forwardCartesian(r,e){let t=Nr[e],i=Er();Hs(i,r,t.inverseQuat);let o=D0(i),a=this.gnomonic.forward(o);a[1]=a[1]-t.angle;let d=this.getFaceTriangleIndex(a),m=this.shouldReflect(a),b=this.getFaceTriangle(d,m,!1),y=this.getSphericalTriangle(d,e,m);return this.equalArea.forward(r,y,b)}inverse(r,e){let t=Lh(r),i=this.getFaceTriangleIndex(t),o=this.shouldReflect(t),a=this.getFaceTriangle(i,o,!1),d=this.getSphericalTriangle(i,e,o);return D0(this.equalArea.inverse(r,a,d))}shouldReflect(r){let[e,t]=r;return Ly([e,this.normalizeGamma(t)])[0]>Ys}getFaceTriangleIndex([r,e]){return(Math.floor(e/qr)+10)%10}getFaceTriangle(r,e=!1,t=!1){let i=r;return e&&(i+=t?20:10),this.faceTriangles[i]?this.faceTriangles[i]:(this.faceTriangles[i]=e?this._getReflectedFaceTriangle(r,t):this._getFaceTriangle(r),Object.freeze(this.faceTriangles[i]),this.faceTriangles[i])}_getFaceTriangle(r){let[t,i,o]=md(Math.floor((r+1)/2)%5).getVertices(),a=zn();return $h(a,i,o,.5),r%2===0?[t,a,i]:[t,o,a]}_getReflectedFaceTriangle(r,e=!1){let[t,i,o]=this._getFaceTriangle(r).map(m=>F0(m)),a=r%2===0;return Jh(t,t),dy(t,t,a?i:o,e?1+1/Math.cos(k0):2),[t,o,i]}getSphericalTriangle(r,e,t=!1){let i=10*e+r;return t&&(i+=120),this.sphericalTriangles[i]?this.sphericalTriangles[i]:(this.sphericalTriangles[i]=this._getSphericalTriangle(r,e,t),Object.freeze(this.sphericalTriangles[i]),this.sphericalTriangles[i])}_getSphericalTriangle(r,e,t=!1){let i=Nr[e];return this.getFaceTriangle(r,t,!0).map(d=>{let[m,b]=Lh(d),y=[m,b+i.angle],_=Gn(this.gnomonic.inverse(y));return Hs(_,_,i.quat),Vh.getVertex(_)})}normalizeGamma(r){let e=r/qs;return(e-Math.round(e))*qs}};var gd={A:`PQAB`,B:`B+++PQ---A`,C:`P---RMb+++`,M:`qQ+++C---b`,P:`PpB---B+++`,Q:`PQ---Cb+++`,R:`b+++a---qQ`};var Zy={A:`E`,B:`+e-`,C:`-e+`,M:`T`,P:`S`,Q:`D`,R:`+++D---`};var zh=Object.keys(gd);[...zh,...zh.map(r=>r.toLowerCase())];var $y=r=>r>=`a`&&r<=`z`?r.toUpperCase():r.toLowerCase();var bd=r=>[...r].reverse().map(e=>e===`+`?`-`:e===`-`?`+`:$y(e)).join(``);function Hh(r,e){let t=``;for(let i of r){let o=i.toUpperCase();e[i]!==void 0?t+=e[i]:i!==o&&e[o]!==void 0?t+=bd(e[o]):t+=i}return t}var Td=(r,e)=>({a:r.a+e.a,b:r.b+e.b});var ex=r=>({a:-r.b,b:r.a+r.b});var yd=(r,e)=>{let t=r,i=(e%6+6)%6;for(let o=0;o<i;o++)t=ex(t);return t};var xd={E:{a:4,b:0},e:{a:4,b:0},S:{a:4,b:-2},s:{a:4,b:-2},U:{a:0,b:2},u:{a:0,b:2},D:{a:0,b:-2},d:{a:0,b:-2},T:{a:-4,b:0},t:{a:-4,b:0}};var tx=new Set(Object.keys(xd));var rx={E:[{a:0,b:0},{a:4,b:0},{a:4,b:-4}],e:[{a:0,b:0},{a:4,b:0},{a:0,b:4}],S:[{a:0,b:0},{a:4,b:0},{a:4,b:-4}],s:[{a:4,b:-2},{a:0,b:2},{a:0,b:-2}],U:[{a:0,b:2},{a:0,b:-2},{a:4,b:-2}],u:[{a:0,b:0},{a:0,b:4},{a:-4,b:4}],D:[{a:0,b:2},{a:0,b:-2},{a:4,b:-2}],d:[{a:0,b:0},{a:0,b:-4},{a:-4,b:0}],T:[{a:0,b:-4},{a:-4,b:0},{a:-4,b:-4}],t:[{a:-4,b:4},{a:0,b:0},{a:0,b:4}]};function B0(r,e,t){return rx[r].map(i=>Td(e,yd(i,t)))}function nx(r,e,t){let[i,o,a]=B0(r,e,t);return{a:i.a+o.a+a.a,b:i.b+o.b+a.b}}function U0(r$3,e,t,i){let o=r({},e),a=(t%6+6)%6;for(let d of r$3){if(d===`+`){a=(a+1)%6;continue}if(d===`-`){a=(a+5)%6;continue}tx.has(d)&&(i?.(d,o,a),o=Td(o,yd(xd[d],a)))}return{pos:o,heading:a}}function ix(r){let e=U0(r,{a:0,b:0},0);return{disp:e.pos,dHeading:e.heading}}var qh=1e-6;function ox(r,e,t){let i=t?-1:1,o=[];for(let a=0;a<4;a++){let d=e*4+a,m=r.childToken[d],b=r.childFlip[d],y=r.childOffA[d],_=r.childOffB[d],w=r.fpEdges[m*2+(t^b)],S=[];for(let M=0;M<w.length;M+=4)S.push([3*y*i+w[M],3*_*i+w[M+1]]);o.push([a,S])}return o}function G0(r){if(r.length===1)return{leaf:r[0][0]};for(let[,e]of r){let t=e.length;for(let i=0;i<t;i++){let[o,a]=e[i],[d,m]=e[(i+1)%t],b=m-a,y=-(d-o),_=-(b*o+y*a),w=[],S=[],M=!0;for(let[k,O]of r){let Q=Infinity,V=-Infinity;for(let[G,J]of O){let $=b*G+y*J+_;$<Q&&(Q=$),$>V&&(V=$)}if(Q>=-qh)w.push([k,O]);else if(V<=qh)S.push([k,O]);else{M=!1;break}}if(M&&w.length&&S.length)return{nx:b,ny:y,c:_,pos:G0(w),neg:G0(S)}}}throw new Error(`lsystem: no clean BSP split for child set`)}function j0(r,e){if(`leaf`in r)return;let t=[r.nx,r.ny,r.c];e.some(i=>i[0]===t[0]&&i[1]===t[1]&&i[2]===t[2])||e.push(t),j0(r.pos,e),j0(r.neg,e)}function _d(r,e,t){if(`leaf`in r)return r.leaf;return _d(e>>t.findIndex(o=>o[0]===r.nx&&o[1]===r.ny&&o[2]===r.c)&1?r.pos:r.neg,e,t)}var Wh={S:0,D:1,E:2,T:3};function wd(r$4,e){let t=Object.keys(r$4),i=[...t,...t.map($=>$.toLowerCase())],o=i.length,a={};i.forEach(($,te)=>a[$]=te);function d($,te){let re=$;for(let le=0;le<te;le++)re=Hh(re,r$4);return Hh(re,e)}let m=$=>ix(d($,1)).disp;function b($){let te={a:0,b:0},re=0,le=[];for(let Y of $){if(Y===`+`){re=(re+1)%6;continue}if(Y===`-`){re=(re+5)%6;continue}if(r$4[Y.toUpperCase()]===void 0)continue;if(re!==0&&re!==3)throw new Error(`lsystem: non-180\xB0 turn (${60*re}\xB0) before a child in rule "${$}"`);let z=re===3;le.push({token:Y,offUnit:r({},te),flip:z});let B=m(Y);te=z?{a:te.a-B.a,b:te.b-B.b}:{a:te.a+B.a,b:te.b+B.b}}if(le.length!==4)throw new Error(`lsystem: rule "${$}" must have 4 children`);return le}let y={};for(let $ of t)y[$]=b(r$4[$]);for(let $ of t)y[$.toLowerCase()]=b(bd(r$4[$]));let _=new Int32Array(o*4),w=new Uint8Array(o*4),S=new Float64Array(o*4),M=new Float64Array(o*4);for(let $ of i){let te=y[$];for(let re=0;re<4;re++){let le=a[$]*4+re;_[le]=a[te[re].token],w[le]=te[re].flip?1:0,S[le]=te[re].offUnit.a,M[le]=te[re].offUnit.b}}function k($){let te=[...new Map($.map(z=>[`${z.a},${z.b}`,z])).values()].sort((z,B)=>z.a-B.a||z.b-B.b);if(te.length<3)return te;let re=(z,B,ue)=>(B.a-z.a)*(ue.b-z.b)-(B.b-z.b)*(ue.a-z.a),le=[];for(let z of te){for(;le.length>=2&&re(le[le.length-2],le[le.length-1],z)<=0;)le.pop();le.push(z)}let Y=[];for(let z=te.length-1;z>=0;z--){let B=te[z];for(;Y.length>=2&&re(Y[Y.length-2],Y[Y.length-1],B)<=0;)Y.pop();Y.push(B)}return le.slice(0,-1).concat(Y.slice(0,-1))}let O=new Array(o*2);for(let $ of i){let te=[];U0(d($,1),{a:0,b:0},0,(le,Y,z)=>te.push(...B0(le,Y,z)));let re=k(te);for(let le=0;le<2;le++){let Y=le?-1:1,z=new Float64Array(re.length*4);for(let B=0;B<re.length;B++){let ue=re[B],we=re[(B+1)%re.length];z[B*4]=3*Y*ue.a,z[B*4+1]=3*Y*ue.b,z[B*4+2]=Y*(we.a-ue.a),z[B*4+3]=Y*(we.b-ue.b)}O[a[$]*2+le]=z}}let Q=new Float64Array(o*2*8),V=new Float64Array(o*2*48),G=new Uint8Array(o*2*4);for(let $ of i){let te=d($,1);for(let re=0;re<2;re++){let le=a[$]*2+re,Y=0;U0(te,{a:0,b:0},re?3:0,(z,B,ue)=>{let we=nx(z,B,ue);Q[le*8+Y*2]=we.a,Q[le*8+Y*2+1]=we.b;let Ee=z.toUpperCase();if(Wh[Ee]===void 0)throw new Error(`lsystem: no pentagon flavor for draw symbol ${z}`);G[le*4+Y]=Wh[Ee]^(z===Ee?0:1)^ue&1;let _e=B0(z,B,ue);(_e[1].a-_e[0].a)*(_e[2].b-_e[0].b)-(_e[1].b-_e[0].b)*(_e[2].a-_e[0].a)<0&&(_e=[_e[0],_e[2],_e[1]]);for(let Fe=0;Fe<3;Fe++){let Oe=_e[Fe],Ge=_e[(Fe+1)%3],He=le*48+Y*12+Fe*4;V[He]=3*Oe.a,V[He+1]=3*Oe.b,V[He+2]=Ge.a-Oe.a,V[He+3]=Ge.b-Oe.b}Y++})}}let J={motifIdx:a,childToken:_,childFlip:w,childOffA:S,childOffB:M,fpEdges:O,leafSum:Q,leafTri:V,leafFlavor:G,classSep:new Float64Array(o*2*9),classLut:new Uint8Array(o*2*8)};for(let $=0;$<o;$++)for(let te=0;te<2;te++){let re=$*2+te,le=G0(ox(J,$,te)),Y=[];j0(le,Y);for(let z=0;z<Y.length;z++)J.classSep[re*9+z*3]=Y[z][0],J.classSep[re*9+z*3+1]=Y[z][1],J.classSep[re*9+z*3+2]=Y[z][2];for(let z=0;z<8;z++)J.classLut[re*8+z]=_d(le,z,Y)}return J}var Ks=new Float64Array(32);for(let r=0;r<32;r++)Ks[r]=2**r;var Ed=new Float64Array(20);for(let r=0;r<20;r++)Ed[r]=4**r;var _i=wd(gd,Zy);var Qh=13;var sx=26n;var Ax=67108863n;function ax(r,e){if((2*r+e)%12!==0||e%4!==0)throw new Error(`abToTriple: off-lattice corner sum (${r},${e})`);let t=(2*r+e-12)/12,i=(e+4)/4;for(let o of[0,1]){if((i+o)%3!==0)continue;let a=(i+o)/3,d=o-a;if((d+t)%2===0)return{x:a,y:(d+t)/2,z:(d-t)/2}}throw new Error(`abToTriple: no integer triple for (${r},${e})`)}function cx(r,e,t,i){let{childToken:o,childFlip:a,childOffA:d,childOffB:m,leafSum:b,leafFlavor:y}=r,_=Number(e&Ax),w=Number(e>>sx),S=i,M=0,k=0,O=0;for(let G=t;G>=2;G--){let J=G-1,$=J<Qh?_>>>(J<<1)&3:Math.floor(w/Ed[J-Qh])%4,te=S*4+$,re=M?-Ks[G-2]:Ks[G-2];k+=d[te]*re,O+=m[te]*re,M^=a[te],S=o[te]}let Q=t>=1?_&3:0,V=S*2+M;return{a:3*k+b[V*8+Q*2],b:3*O+b[V*8+Q*2+1],flavor:y[V*4+Q]}}_i.motifIdx.A,_i.motifIdx.A,_i.motifIdx.C,_i.motifIdx.C,_i.motifIdx.B,_i.motifIdx.B;var vd=wd({W:`W+++Z---WZ`,Z:`Z+++W---ZW`},{W:`E`,Z:`+e-`});var lx=vd.motifIdx.W;function Sd(r){return Array.from({length:r.length},(e,t)=>r.indexOf(t))}var Cd=[0,1,3,4,5,6,7,2];var Id=[0,1,2,7,3,4,5,6];Sd(Cd);Sd(Id);function ux(r,e,t,i,o){if(e<=0)return;let a=r[e]||0,d=r[e-1],m=t[0]+t[1],b=!0,y=!0;if(i!==(m===0)?(b=a===1||a===2,y=a===1):(b=a<2,y=a===0),!b)return;let _=y?d:d+4,w=o[_];r[e-1]=w%4,r[e]=(a+4+Math.floor(w/4)-Math.floor(_/4))%4}function fx(r,e){e===1?r[1]=-r[1]:e===3&&(r[0]=-r[0])}function hx(r,e,t){let i=t?Id:Cd,o=[1,1];for(let a=r.length-1;a>=0;a--)ux(r,a,o,e,i),fx(o,r[a]);return o}function dx(r,e){let t=[],i=r;for(;i>0n||t.length<e;)t.push(Number(i&3n)),i>>=2n;return t}function px(r){let e=0n;for(let t=r.length-1;t>=0;t--)e=e<<2n|BigInt(r[t]);return e}var mx={uv:{reverse:!1,invertJ:!1,flipIJ:!1},vu:{reverse:!0,invertJ:!1,flipIJ:!1},uw:{reverse:!1,invertJ:!1,flipIJ:!0},wu:{reverse:!0,invertJ:!1,flipIJ:!0},vw:{reverse:!0,invertJ:!0,flipIJ:!1},wv:{reverse:!1,invertJ:!0,flipIJ:!1}};function gx(r,e){return(r[1]===-1?1:0)|((r[0]+r[1]===0?e===0||e===3:e===2||e===3)?1:0)<<1}function bx(r,e,t){let i=1n<<BigInt(2*e),a=dx(t.reverse?i-1n-r:r,e),d=hx(a,t.invertJ,t.flipIJ),m=cx(vd,px(a),e,lx),b=ax(m.a,m.b);if(t.flipIJ&&(b={x:b.z,y:b.y,z:b.x}),t.invertJ){let y=Ks[e]-1;b={x:b.y-y,y:b.x+y,z:b.z}}return{triple:b,flips:d,q:a.length>0?a[0]:0}}function Tx(r,e,t=`uv`){let i=mx[t],{triple:o,flips:a,q:d}=bx(r,e,i);return i.invertJ&&(a[0]=-a[0]),{triple:o,flavor:gx(a,d)}}var wi=2;var V0=30;var Kh=58n;var yx=0n;function xx(r){if(r===0n)return-1;if(r&1n||(r&7n)===4n||(r&31n)===16n)return V0;let e=V0-1,t=r>>1n;if(t===0n)return-1;let i=Number(t&4294967295n),o;for(i===0?(t>>=32n,e-=16,o=Number(t)):o=i,!(o&65535)&&(o>>=16,e-=8),e>=6&&!(o&255)&&(o>>=8,e-=4),e>=4&&!(o&15)&&(o>>=4,e-=2);e>-1&&(o&1)===0;)e-=1,o=o>>(e<wi?1:2);return e}function _x(r){let e=xx(r);if(e===-1)return{origin:Nr[0],segment:0,S:0n,resolution:e};let t=Kh,i=0;if(e===V0){let w=r&1n?1n:r&4n?3n:5n;t=Kh+w,i=w===1n?0:w===3n?32:40}let o=Number(r>>t)+i,a,d;if(e===0)a=Nr[o],d=0;else a=Nr[Math.floor(o/5)],d=(o+a.firstQuintant)%5;if(!a)throw new Error(`Could not parse origin: ${o}`);if(e<wi)return{origin:a,segment:d,S:0n,resolution:e};let m=e-wi+1,b=BigInt(2*m),_=(r&(1n<<t)-1n)>>t-b;return{origin:a,segment:d,S:_,resolution:e}}var wx=24;var Ex=1.4;Ei(0,0,1);(()=>{let r=[];for(let e=0;e<wx;e++){let t=(e+1)*Ex;r.push(Ei(Math.cos(t),Math.sin(t),0))}return r})();Xh();var vx=new Jy;70*Math.PI/180;function Sx({S:r,segment:e,origin:t,resolution:i}){let{quintant:o,orientation:a}=Vy(e,t);if(i===wi-1)return md(o);if(i===wi-2)return Xy();let d=i-wi+1,{triple:m,flavor:b}=Tx(r,d,a);return Ky(d,o,m,b)}function Md(r,{closedRing:e=!0,segments:t=`auto`}={closedRing:!0,segments:`auto`}){if(r===yx)return[];let{S:i,segment:o,origin:a,resolution:d}=_x(r);t===`auto`&&(t=Math.max(1,Math.pow(2,6-d)));let y=Sx({S:i,segment:o,origin:a,resolution:d}).splitEdges(t).getVertices(),_=new Array(y.length);for(let S=0;S<y.length;S++)_[S]=ud(vx.inverse(y[S],a.id));let w=Fy(_);return e&&w.push(w[0]),w.reverse(),w}function Ld(r){return BigInt(`0x${r}`)}var Rd=2;var Cx=Rd*Ws/Math.sqrt(15);var Pd=new Array(31);Pd[0]=Rd*Ws/Math.sqrt(3);for(let r=1;r<=30;r++)Pd[r]=Cx/(1<<r-1);(()=>{let r=[];for(let e=-1;e<=1;e++)for(let t=-1;t<=1;t++)for(let i=-1;i<=1;i++)e===0&&t===0&&i===0||r.push([e,t,i]);return r})();Ei(0,0,1);Ei(1,0,0);var Je=(function(r){r=r||{};var e=typeof r<`u`?r:{},t={},i;for(i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);var o=[],a=``;function d(Z){return e.locateFile?e.locateFile(Z,a):a+Z}var m;typeof document<`u`&&document.currentScript&&(a=document.currentScript.src),a.indexOf(`blob:`)!==0?a=a.substr(0,a.lastIndexOf(`/`)+1):a=``,m=function(ae,Te,ne){var n=new XMLHttpRequest;n.open(`GET`,ae,!0),n.responseType=`arraybuffer`,n.onload=function(){if(n.status==200||n.status==0&&n.response){Te(n.response);return}var Ze=ja(ae);if(Ze){Te(Ze.buffer);return}ne()},n.onerror=ne,n.send(null)};var b=e.print||console.log.bind(console),y=e.printErr||console.warn.bind(console);for(i in t)t.hasOwnProperty(i)&&(e[i]=t[i]);t=null,e.arguments&&(o=e.arguments);var _=0,w=function(Z){_=Z},S=function(){return _},M=8;function k(Z,ae,Te,ne){switch(Te=Te||`i8`,Te.charAt(Te.length-1)===`*`&&(Te=`i32`),Te){case`i1`:_e[Z>>0]=ae;break;case`i8`:_e[Z>>0]=ae;break;case`i16`:Fe[Z>>1]=ae;break;case`i32`:Ge[Z>>2]=ae;break;case`i64`:Ga=[ae>>>0,(ci=ae,+$1(ci)>=1?ci>0?(rb(+tb(ci/4294967296),4294967295)|0)>>>0:~~+eb((ci-+(~~ci>>>0))/4294967296)>>>0:0)],Ge[Z>>2]=Ga[0],Ge[Z+4>>2]=Ga[1];break;case`float`:je[Z>>2]=ae;break;case`double`:qe[Z>>3]=ae;break;default:kn(`invalid type for setValue: `+Te)}}function O(Z,ae,Te){switch(ae=ae||`i8`,ae.charAt(ae.length-1)===`*`&&(ae=`i32`),ae){case`i1`:return _e[Z>>0];case`i8`:return _e[Z>>0];case`i16`:return Fe[Z>>1];case`i32`:return Ge[Z>>2];case`i64`:return Ge[Z>>2];case`float`:return je[Z>>2];case`double`:return qe[Z>>3];default:kn(`invalid type for getValue: `+ae)}return null}var Q=!1;function V(Z,ae){Z||kn(`Assertion failed: `+ae)}function G(Z){var ae=e[`_`+Z];return V(ae,`Cannot call unknown function `+Z+`, make sure it is exported`),ae}function J(Z,ae,Te,ne,n){var ot={string:function(De){var tt=0;if(De!=null&&De!==0){var ms=(De.length<<2)+1;tt=Gu(ms),z(De,tt,ms)}return tt},array:function(De){var tt=Gu(De.length);return ue(De,tt),tt}};function Ze(De){return ae===`string`?le(De):ae===`boolean`?!!De:De}var P=G(Z),st=[],Yt=0;if(ne)for(var Lt=0;Lt<ne.length;Lt++){var Ct=ot[Te[Lt]];Ct?(Yt===0&&(Yt=Tb()),st[Lt]=Ct(ne[Lt])):st[Lt]=ne[Lt]}var dt=P.apply(null,st);return dt=Ze(dt),Yt!==0&&bb(Yt),dt}function $(Z,ae,Te,ne){Te=Te||[];var n=Te.every(function(Ze){return Ze===`number`});return ae!==`string`&&n&&!ne?G(Z):function(){return J(Z,ae,Te,arguments,ne)}}var te=typeof TextDecoder<`u`?new TextDecoder(`utf8`):void 0;function re(Z,ae,Te){for(var ne=ae+Te,n=ae;Z[n]&&!(n>=ne);)++n;if(n-ae>16&&Z.subarray&&te)return te.decode(Z.subarray(ae,n));for(var ot=``;ae<n;){var Ze=Z[ae++];if(!(Ze&128)){ot+=String.fromCharCode(Ze);continue}var P=Z[ae++]&63;if((Ze&224)==192){ot+=String.fromCharCode((Ze&31)<<6|P);continue}var st=Z[ae++]&63;if((Ze&240)==224?Ze=(Ze&15)<<12|P<<6|st:Ze=(Ze&7)<<18|P<<12|st<<6|Z[ae++]&63,Ze<65536)ot+=String.fromCharCode(Ze);else{var Yt=Ze-65536;ot+=String.fromCharCode(55296|Yt>>10,56320|Yt&1023)}}return ot}function le(Z,ae){return Z?re(Ne,Z,ae):``}function Y(Z,ae,Te,ne){if(!(ne>0))return 0;for(var n=Te,ot=Te+ne-1,Ze=0;Ze<Z.length;++Ze){var P=Z.charCodeAt(Ze);if(P>=55296&&P<=57343){var st=Z.charCodeAt(++Ze);P=65536+((P&1023)<<10)|st&1023}if(P<=127){if(Te>=ot)break;ae[Te++]=P}else if(P<=2047){if(Te+1>=ot)break;ae[Te++]=192|P>>6,ae[Te++]=128|P&63}else if(P<=65535){if(Te+2>=ot)break;ae[Te++]=224|P>>12,ae[Te++]=128|P>>6&63,ae[Te++]=128|P&63}else{if(Te+3>=ot)break;ae[Te++]=240|P>>18,ae[Te++]=128|P>>12&63,ae[Te++]=128|P>>6&63,ae[Te++]=128|P&63}}return ae[Te]=0,Te-n}function z(Z,ae,Te){return Y(Z,Ne,ae,Te)}typeof TextDecoder<`u`&&new TextDecoder(`utf-16le`);function ue(Z,ae){_e.set(Z,ae)}function we(Z,ae){return Z%ae>0&&(Z+=ae-Z%ae),Z}var Ee,_e,Ne,Fe,Ge,je,qe;function vt(Z){Ee=Z,e.HEAP8=_e=new Int8Array(Z),e.HEAP16=Fe=new Int16Array(Z),e.HEAP32=Ge=new Int32Array(Z),e.HEAPU8=Ne=new Uint8Array(Z),e.HEAPU16=new Uint16Array(Z),e.HEAPU32=new Uint32Array(Z),e.HEAPF32=je=new Float32Array(Z),e.HEAPF64=qe=new Float64Array(Z)}var Da=5271296,fo=28384,St=e.TOTAL_MEMORY||33554432;e.buffer?Ee=e.buffer:Ee=new ArrayBuffer(St),St=Ee.byteLength,vt(Ee),Ge[fo>>2]=Da;function kt(Z){for(;Z.length>0;){var ae=Z.shift();if(typeof ae==`function`){ae();continue}var Te=ae.func;typeof Te==`number`?ae.arg===void 0?e.dynCall_v(Te):e.dynCall_vi(Te,ae.arg):Te(ae.arg===void 0?null:ae.arg)}}var or=[],Nn=[],Ai=[],Ur=[];function fn(){if(e.preRun)for(typeof e.preRun==`function`&&(e.preRun=[e.preRun]);e.preRun.length;)J1(e.preRun.shift());kt(or)}function ai(){kt(Nn)}function ho(){kt(Ai)}function po(){if(e.postRun)for(typeof e.postRun==`function`&&(e.postRun=[e.postRun]);e.postRun.length;)Z1(e.postRun.shift());kt(Ur)}function J1(Z){or.unshift(Z)}function Z1(Z){Ur.unshift(Z)}var $1=Math.abs,eb=Math.ceil,tb=Math.floor,rb=Math.min,Fn=0,Ba=null,mo=null;function nb(Z){Fn++,e.monitorRunDependencies&&e.monitorRunDependencies(Fn)}function ib(Z){if(Fn--,e.monitorRunDependencies&&e.monitorRunDependencies(Fn),Fn==0&&(Ba!==null&&(clearInterval(Ba),Ba=null),mo)){var ae=mo;mo=null,ae()}}e.preloadedImages={},e.preloadedAudios={};var Jr=null,Ua=`data:application/octet-stream;base64,`;function ku(Z){return String.prototype.startsWith?Z.startsWith(Ua):Z.indexOf(Ua)===0}var ci,Ga;Jr=`data:application/octet-stream;base64,AAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAAAQAAAAQAAAADAAAABgAAAAUAAAACAAAAAAAAAAIAAAADAAAAAQAAAAQAAAAGAAAAAAAAAAUAAAADAAAABgAAAAQAAAAFAAAAAAAAAAEAAAACAAAABAAAAAUAAAAGAAAAAAAAAAIAAAADAAAAAQAAAAUAAAACAAAAAAAAAAEAAAADAAAABgAAAAQAAAAGAAAAAAAAAAUAAAACAAAAAQAAAAQAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAIAAAADAAAAAAAAAAAAAAACAAAAAAAAAAEAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAYAAAAAAAAABQAAAAAAAAAAAAAABAAAAAUAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAAAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAAAAAAAQAAAAMAAAAEAAAABQAAAAYAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAYAAAAAAAAAAQAAAAIAAAADAAAABQAAAAYAAAAAAAAAAQAAAAIAAAADAAAABAAAAAYAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAYAAAAAAAAAAwAAAAIAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAFAAAABAAAAAAAAAABAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAYAAAAAAAAABAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAgAAAAQAAAADAAAACAAAAAEAAAAHAAAABgAAAAkAAAAAAAAAAwAAAAIAAAACAAAABgAAAAoAAAALAAAAAAAAAAEAAAAFAAAAAwAAAA0AAAABAAAABwAAAAQAAAAMAAAAAAAAAAQAAAB/AAAADwAAAAgAAAADAAAAAAAAAAwAAAAFAAAAAgAAABIAAAAKAAAACAAAAAAAAAAQAAAABgAAAA4AAAALAAAAEQAAAAEAAAAJAAAAAgAAAAcAAAAVAAAACQAAABMAAAADAAAADQAAAAEAAAAIAAAABQAAABYAAAAQAAAABAAAAAAAAAAPAAAACQAAABMAAAAOAAAAFAAAAAEAAAAHAAAABgAAAAoAAAALAAAAGAAAABcAAAAFAAAAAgAAABIAAAALAAAAEQAAABcAAAAZAAAAAgAAAAYAAAAKAAAADAAAABwAAAANAAAAGgAAAAQAAAAPAAAAAwAAAA0AAAAaAAAAFQAAAB0AAAADAAAADAAAAAcAAAAOAAAAfwAAABEAAAAbAAAACQAAABQAAAAGAAAADwAAABYAAAAcAAAAHwAAAAQAAAAIAAAADAAAABAAAAASAAAAIQAAAB4AAAAIAAAABQAAABYAAAARAAAACwAAAA4AAAAGAAAAIwAAABkAAAAbAAAAEgAAABgAAAAeAAAAIAAAAAUAAAAKAAAAEAAAABMAAAAiAAAAFAAAACQAAAAHAAAAFQAAAAkAAAAUAAAADgAAABMAAAAJAAAAKAAAABsAAAAkAAAAFQAAACYAAAATAAAAIgAAAA0AAAAdAAAABwAAABYAAAAQAAAAKQAAACEAAAAPAAAACAAAAB8AAAAXAAAAGAAAAAsAAAAKAAAAJwAAACUAAAAZAAAAGAAAAH8AAAAgAAAAJQAAAAoAAAAXAAAAEgAAABkAAAAXAAAAEQAAAAsAAAAtAAAAJwAAACMAAAAaAAAAKgAAAB0AAAArAAAADAAAABwAAAANAAAAGwAAACgAAAAjAAAALgAAAA4AAAAUAAAAEQAAABwAAAAfAAAAKgAAACwAAAAMAAAADwAAABoAAAAdAAAAKwAAACYAAAAvAAAADQAAABoAAAAVAAAAHgAAACAAAAAwAAAAMgAAABAAAAASAAAAIQAAAB8AAAApAAAALAAAADUAAAAPAAAAFgAAABwAAAAgAAAAHgAAABgAAAASAAAANAAAADIAAAAlAAAAIQAAAB4AAAAxAAAAMAAAABYAAAAQAAAAKQAAACIAAAATAAAAJgAAABUAAAA2AAAAJAAAADMAAAAjAAAALgAAAC0AAAA4AAAAEQAAABsAAAAZAAAAJAAAABQAAAAiAAAAEwAAADcAAAAoAAAANgAAACUAAAAnAAAANAAAADkAAAAYAAAAFwAAACAAAAAmAAAAfwAAACIAAAAzAAAAHQAAAC8AAAAVAAAAJwAAACUAAAAZAAAAFwAAADsAAAA5AAAALQAAACgAAAAbAAAAJAAAABQAAAA8AAAALgAAADcAAAApAAAAMQAAADUAAAA9AAAAFgAAACEAAAAfAAAAKgAAADoAAAArAAAAPgAAABwAAAAsAAAAGgAAACsAAAA+AAAALwAAAEAAAAAaAAAAKgAAAB0AAAAsAAAANQAAADoAAABBAAAAHAAAAB8AAAAqAAAALQAAACcAAAAjAAAAGQAAAD8AAAA7AAAAOAAAAC4AAAA8AAAAOAAAAEQAAAAbAAAAKAAAACMAAAAvAAAAJgAAACsAAAAdAAAARQAAADMAAABAAAAAMAAAADEAAAAeAAAAIQAAAEMAAABCAAAAMgAAADEAAAB/AAAAPQAAAEIAAAAhAAAAMAAAACkAAAAyAAAAMAAAACAAAAAeAAAARgAAAEMAAAA0AAAAMwAAAEUAAAA2AAAARwAAACYAAAAvAAAAIgAAADQAAAA5AAAARgAAAEoAAAAgAAAAJQAAADIAAAA1AAAAPQAAAEEAAABLAAAAHwAAACkAAAAsAAAANgAAAEcAAAA3AAAASQAAACIAAAAzAAAAJAAAADcAAAAoAAAANgAAACQAAABIAAAAPAAAAEkAAAA4AAAARAAAAD8AAABNAAAAIwAAAC4AAAAtAAAAOQAAADsAAABKAAAATgAAACUAAAAnAAAANAAAADoAAAB/AAAAPgAAAEwAAAAsAAAAQQAAACoAAAA7AAAAPwAAAE4AAABPAAAAJwAAAC0AAAA5AAAAPAAAAEgAAABEAAAAUAAAACgAAAA3AAAALgAAAD0AAAA1AAAAMQAAACkAAABRAAAASwAAAEIAAAA+AAAAKwAAADoAAAAqAAAAUgAAAEAAAABMAAAAPwAAAH8AAAA4AAAALQAAAE8AAAA7AAAATQAAAEAAAAAvAAAAPgAAACsAAABUAAAARQAAAFIAAABBAAAAOgAAADUAAAAsAAAAVgAAAEwAAABLAAAAQgAAAEMAAABRAAAAVQAAADEAAAAwAAAAPQAAAEMAAABCAAAAMgAAADAAAABXAAAAVQAAAEYAAABEAAAAOAAAADwAAAAuAAAAWgAAAE0AAABQAAAARQAAADMAAABAAAAALwAAAFkAAABHAAAAVAAAAEYAAABDAAAANAAAADIAAABTAAAAVwAAAEoAAABHAAAAWQAAAEkAAABbAAAAMwAAAEUAAAA2AAAASAAAAH8AAABJAAAANwAAAFAAAAA8AAAAWAAAAEkAAABbAAAASAAAAFgAAAA2AAAARwAAADcAAABKAAAATgAAAFMAAABcAAAANAAAADkAAABGAAAASwAAAEEAAAA9AAAANQAAAF4AAABWAAAAUQAAAEwAAABWAAAAUgAAAGAAAAA6AAAAQQAAAD4AAABNAAAAPwAAAEQAAAA4AAAAXQAAAE8AAABaAAAATgAAAEoAAAA7AAAAOQAAAF8AAABcAAAATwAAAE8AAABOAAAAPwAAADsAAABdAAAAXwAAAE0AAABQAAAARAAAAEgAAAA8AAAAYwAAAFoAAABYAAAAUQAAAFUAAABeAAAAZQAAAD0AAABCAAAASwAAAFIAAABgAAAAVAAAAGIAAAA+AAAATAAAAEAAAABTAAAAfwAAAEoAAABGAAAAZAAAAFcAAABcAAAAVAAAAEUAAABSAAAAQAAAAGEAAABZAAAAYgAAAFUAAABXAAAAZQAAAGYAAABCAAAAQwAAAFEAAABWAAAATAAAAEsAAABBAAAAaAAAAGAAAABeAAAAVwAAAFMAAABmAAAAZAAAAEMAAABGAAAAVQAAAFgAAABIAAAAWwAAAEkAAABjAAAAUAAAAGkAAABZAAAAYQAAAFsAAABnAAAARQAAAFQAAABHAAAAWgAAAE0AAABQAAAARAAAAGoAAABdAAAAYwAAAFsAAABJAAAAWQAAAEcAAABpAAAAWAAAAGcAAABcAAAAUwAAAE4AAABKAAAAbAAAAGQAAABfAAAAXQAAAE8AAABaAAAATQAAAG0AAABfAAAAagAAAF4AAABWAAAAUQAAAEsAAABrAAAAaAAAAGUAAABfAAAAXAAAAE8AAABOAAAAbQAAAGwAAABdAAAAYAAAAGgAAABiAAAAbgAAAEwAAABWAAAAUgAAAGEAAAB/AAAAYgAAAFQAAABnAAAAWQAAAG8AAABiAAAAbgAAAGEAAABvAAAAUgAAAGAAAABUAAAAYwAAAFAAAABpAAAAWAAAAGoAAABaAAAAcQAAAGQAAABmAAAAUwAAAFcAAABsAAAAcgAAAFwAAABlAAAAZgAAAGsAAABwAAAAUQAAAFUAAABeAAAAZgAAAGUAAABXAAAAVQAAAHIAAABwAAAAZAAAAGcAAABbAAAAYQAAAFkAAAB0AAAAaQAAAG8AAABoAAAAawAAAG4AAABzAAAAVgAAAF4AAABgAAAAaQAAAFgAAABnAAAAWwAAAHEAAABjAAAAdAAAAGoAAABdAAAAYwAAAFoAAAB1AAAAbQAAAHEAAABrAAAAfwAAAGUAAABeAAAAcwAAAGgAAABwAAAAbAAAAGQAAABfAAAAXAAAAHYAAAByAAAAbQAAAG0AAABsAAAAXQAAAF8AAAB1AAAAdgAAAGoAAABuAAAAYgAAAGgAAABgAAAAdwAAAG8AAABzAAAAbwAAAGEAAABuAAAAYgAAAHQAAABnAAAAdwAAAHAAAABrAAAAZgAAAGUAAAB4AAAAcwAAAHIAAABxAAAAYwAAAHQAAABpAAAAdQAAAGoAAAB5AAAAcgAAAHAAAABkAAAAZgAAAHYAAAB4AAAAbAAAAHMAAABuAAAAawAAAGgAAAB4AAAAdwAAAHAAAAB0AAAAZwAAAHcAAABvAAAAcQAAAGkAAAB5AAAAdQAAAH8AAABtAAAAdgAAAHEAAAB5AAAAagAAAHYAAAB4AAAAbAAAAHIAAAB1AAAAeQAAAG0AAAB3AAAAbwAAAHMAAABuAAAAeQAAAHQAAAB4AAAAeAAAAHMAAAByAAAAcAAAAHkAAAB3AAAAdgAAAHkAAAB0AAAAeAAAAHcAAAB1AAAAcQAAAHYAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAABAAAABQAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAACAAAABQAAAAEAAAAAAAAA/////wEAAAAAAAAAAwAAAAQAAAACAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAADAAAABQAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAEAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAwAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAUAAAABAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAABAAAAAUAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAIAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAD/////AQAAAAAAAAADAAAABAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAUAAAABAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAD//////////wEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAACAAAAAAAAAAAAAAABAAAAAgAAAAYAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAKAAAAAgAAAAAAAAAAAAAAAQAAAAEAAAAFAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAACAAAAAAAAAAAAAAABAAAAAwAAAAcAAAAGAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABwAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAADgAAAAIAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAMAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAIAAAAAAAAAAAAAAAEAAAAEAAAACAAAAAoAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAACQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAgAAAAAAAAAAAAAAAQAAAAsAAAAPAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAIAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAgAAAAAAAAAAAAAAAQAAAAwAAAAQAAAADAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAADwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACAAAAAAAAAAAAAAABAAAACgAAABMAAAAIAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAACQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAIAAAAAAAAAAAAAAAEAAAANAAAAEQAAAA0AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAACAAAAAAAAAAAAAAABAAAADgAAABIAAAAPAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAADwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABIAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAgAAAAAAAAAAAAAAAQAAAP//////////EwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAASAAAAAAAAABgAAAAAAAAAIQAAAAAAAAAeAAAAAAAAACAAAAADAAAAMQAAAAEAAAAwAAAAAwAAADIAAAADAAAACAAAAAAAAAAFAAAABQAAAAoAAAAFAAAAFgAAAAAAAAAQAAAAAAAAABIAAAAAAAAAKQAAAAEAAAAhAAAAAAAAAB4AAAAAAAAABAAAAAAAAAAAAAAABQAAAAIAAAAFAAAADwAAAAEAAAAIAAAAAAAAAAUAAAAFAAAAHwAAAAEAAAAWAAAAAAAAABAAAAAAAAAAAgAAAAAAAAAGAAAAAAAAAA4AAAAAAAAACgAAAAAAAAALAAAAAAAAABEAAAADAAAAGAAAAAEAAAAXAAAAAwAAABkAAAADAAAAAAAAAAAAAAABAAAABQAAAAkAAAAFAAAABQAAAAAAAAACAAAAAAAAAAYAAAAAAAAAEgAAAAEAAAAKAAAAAAAAAAsAAAAAAAAABAAAAAEAAAADAAAABQAAAAcAAAAFAAAACAAAAAEAAAAAAAAAAAAAAAEAAAAFAAAAEAAAAAEAAAAFAAAAAAAAAAIAAAAAAAAABwAAAAAAAAAVAAAAAAAAACYAAAAAAAAACQAAAAAAAAATAAAAAAAAACIAAAADAAAADgAAAAEAAAAUAAAAAwAAACQAAAADAAAAAwAAAAAAAAANAAAABQAAAB0AAAAFAAAAAQAAAAAAAAAHAAAAAAAAABUAAAAAAAAABgAAAAEAAAAJAAAAAAAAABMAAAAAAAAABAAAAAIAAAAMAAAABQAAABoAAAAFAAAAAAAAAAEAAAADAAAAAAAAAA0AAAAFAAAAAgAAAAEAAAABAAAAAAAAAAcAAAAAAAAAGgAAAAAAAAAqAAAAAAAAADoAAAAAAAAAHQAAAAAAAAArAAAAAAAAAD4AAAADAAAAJgAAAAEAAAAvAAAAAwAAAEAAAAADAAAADAAAAAAAAAAcAAAABQAAACwAAAAFAAAADQAAAAAAAAAaAAAAAAAAACoAAAAAAAAAFQAAAAEAAAAdAAAAAAAAACsAAAAAAAAABAAAAAMAAAAPAAAABQAAAB8AAAAFAAAAAwAAAAEAAAAMAAAAAAAAABwAAAAFAAAABwAAAAEAAAANAAAAAAAAABoAAAAAAAAAHwAAAAAAAAApAAAAAAAAADEAAAAAAAAALAAAAAAAAAA1AAAAAAAAAD0AAAADAAAAOgAAAAEAAABBAAAAAwAAAEsAAAADAAAADwAAAAAAAAAWAAAABQAAACEAAAAFAAAAHAAAAAAAAAAfAAAAAAAAACkAAAAAAAAAKgAAAAEAAAAsAAAAAAAAADUAAAAAAAAABAAAAAQAAAAIAAAABQAAABAAAAAFAAAADAAAAAEAAAAPAAAAAAAAABYAAAAFAAAAGgAAAAEAAAAcAAAAAAAAAB8AAAAAAAAAMgAAAAAAAAAwAAAAAAAAADEAAAADAAAAIAAAAAAAAAAeAAAAAwAAACEAAAADAAAAGAAAAAMAAAASAAAAAwAAABAAAAADAAAARgAAAAAAAABDAAAAAAAAAEIAAAADAAAANAAAAAMAAAAyAAAAAAAAADAAAAAAAAAAJQAAAAMAAAAgAAAAAAAAAB4AAAADAAAAUwAAAAAAAABXAAAAAwAAAFUAAAADAAAASgAAAAMAAABGAAAAAAAAAEMAAAAAAAAAOQAAAAEAAAA0AAAAAwAAADIAAAAAAAAAGQAAAAAAAAAXAAAAAAAAABgAAAADAAAAEQAAAAAAAAALAAAAAwAAAAoAAAADAAAADgAAAAMAAAAGAAAAAwAAAAIAAAADAAAALQAAAAAAAAAnAAAAAAAAACUAAAADAAAAIwAAAAMAAAAZAAAAAAAAABcAAAAAAAAAGwAAAAMAAAARAAAAAAAAAAsAAAADAAAAPwAAAAAAAAA7AAAAAwAAADkAAAADAAAAOAAAAAMAAAAtAAAAAAAAACcAAAAAAAAALgAAAAMAAAAjAAAAAwAAABkAAAAAAAAAJAAAAAAAAAAUAAAAAAAAAA4AAAADAAAAIgAAAAAAAAATAAAAAwAAAAkAAAADAAAAJgAAAAMAAAAVAAAAAwAAAAcAAAADAAAANwAAAAAAAAAoAAAAAAAAABsAAAADAAAANgAAAAMAAAAkAAAAAAAAABQAAAAAAAAAMwAAAAMAAAAiAAAAAAAAABMAAAADAAAASAAAAAAAAAA8AAAAAwAAAC4AAAADAAAASQAAAAMAAAA3AAAAAAAAACgAAAAAAAAARwAAAAMAAAA2AAAAAwAAACQAAAAAAAAAQAAAAAAAAAAvAAAAAAAAACYAAAADAAAAPgAAAAAAAAArAAAAAwAAAB0AAAADAAAAOgAAAAMAAAAqAAAAAwAAABoAAAADAAAAVAAAAAAAAABFAAAAAAAAADMAAAADAAAAUgAAAAMAAABAAAAAAAAAAC8AAAAAAAAATAAAAAMAAAA+AAAAAAAAACsAAAADAAAAYQAAAAAAAABZAAAAAwAAAEcAAAADAAAAYgAAAAMAAABUAAAAAAAAAEUAAAAAAAAAYAAAAAMAAABSAAAAAwAAAEAAAAAAAAAASwAAAAAAAABBAAAAAAAAADoAAAADAAAAPQAAAAAAAAA1AAAAAwAAACwAAAADAAAAMQAAAAMAAAApAAAAAwAAAB8AAAADAAAAXgAAAAAAAABWAAAAAAAAAEwAAAADAAAAUQAAAAMAAABLAAAAAAAAAEEAAAAAAAAAQgAAAAMAAAA9AAAAAAAAADUAAAADAAAAawAAAAAAAABoAAAAAwAAAGAAAAADAAAAZQAAAAMAAABeAAAAAAAAAFYAAAAAAAAAVQAAAAMAAABRAAAAAwAAAEsAAAAAAAAAOQAAAAAAAAA7AAAAAAAAAD8AAAADAAAASgAAAAAAAABOAAAAAwAAAE8AAAADAAAAUwAAAAMAAABcAAAAAwAAAF8AAAADAAAAJQAAAAAAAAAnAAAAAwAAAC0AAAADAAAANAAAAAAAAAA5AAAAAAAAADsAAAAAAAAARgAAAAMAAABKAAAAAAAAAE4AAAADAAAAGAAAAAAAAAAXAAAAAwAAABkAAAADAAAAIAAAAAMAAAAlAAAAAAAAACcAAAADAAAAMgAAAAMAAAA0AAAAAAAAADkAAAAAAAAALgAAAAAAAAA8AAAAAAAAAEgAAAADAAAAOAAAAAAAAABEAAAAAwAAAFAAAAADAAAAPwAAAAMAAABNAAAAAwAAAFoAAAADAAAAGwAAAAAAAAAoAAAAAwAAADcAAAADAAAAIwAAAAAAAAAuAAAAAAAAADwAAAAAAAAALQAAAAMAAAA4AAAAAAAAAEQAAAADAAAADgAAAAAAAAAUAAAAAwAAACQAAAADAAAAEQAAAAMAAAAbAAAAAAAAACgAAAADAAAAGQAAAAMAAAAjAAAAAAAAAC4AAAAAAAAARwAAAAAAAABZAAAAAAAAAGEAAAADAAAASQAAAAAAAABbAAAAAwAAAGcAAAADAAAASAAAAAMAAABYAAAAAwAAAGkAAAADAAAAMwAAAAAAAABFAAAAAwAAAFQAAAADAAAANgAAAAAAAABHAAAAAAAAAFkAAAAAAAAANwAAAAMAAABJAAAAAAAAAFsAAAADAAAAJgAAAAAAAAAvAAAAAwAAAEAAAAADAAAAIgAAAAMAAAAzAAAAAAAAAEUAAAADAAAAJAAAAAMAAAA2AAAAAAAAAEcAAAAAAAAAYAAAAAAAAABoAAAAAAAAAGsAAAADAAAAYgAAAAAAAABuAAAAAwAAAHMAAAADAAAAYQAAAAMAAABvAAAAAwAAAHcAAAADAAAATAAAAAAAAABWAAAAAwAAAF4AAAADAAAAUgAAAAAAAABgAAAAAAAAAGgAAAAAAAAAVAAAAAMAAABiAAAAAAAAAG4AAAADAAAAOgAAAAAAAABBAAAAAwAAAEsAAAADAAAAPgAAAAMAAABMAAAAAAAAAFYAAAADAAAAQAAAAAMAAABSAAAAAAAAAGAAAAAAAAAAVQAAAAAAAABXAAAAAAAAAFMAAAADAAAAZQAAAAAAAABmAAAAAwAAAGQAAAADAAAAawAAAAMAAABwAAAAAwAAAHIAAAADAAAAQgAAAAAAAABDAAAAAwAAAEYAAAADAAAAUQAAAAAAAABVAAAAAAAAAFcAAAAAAAAAXgAAAAMAAABlAAAAAAAAAGYAAAADAAAAMQAAAAAAAAAwAAAAAwAAADIAAAADAAAAPQAAAAMAAABCAAAAAAAAAEMAAAADAAAASwAAAAMAAABRAAAAAAAAAFUAAAAAAAAAXwAAAAAAAABcAAAAAAAAAFMAAAAAAAAATwAAAAAAAABOAAAAAAAAAEoAAAADAAAAPwAAAAEAAAA7AAAAAwAAADkAAAADAAAAbQAAAAAAAABsAAAAAAAAAGQAAAAFAAAAXQAAAAEAAABfAAAAAAAAAFwAAAAAAAAATQAAAAEAAABPAAAAAAAAAE4AAAAAAAAAdQAAAAQAAAB2AAAABQAAAHIAAAAFAAAAagAAAAEAAABtAAAAAAAAAGwAAAAAAAAAWgAAAAEAAABdAAAAAQAAAF8AAAAAAAAAWgAAAAAAAABNAAAAAAAAAD8AAAAAAAAAUAAAAAAAAABEAAAAAAAAADgAAAADAAAASAAAAAEAAAA8AAAAAwAAAC4AAAADAAAAagAAAAAAAABdAAAAAAAAAE8AAAAFAAAAYwAAAAEAAABaAAAAAAAAAE0AAAAAAAAAWAAAAAEAAABQAAAAAAAAAEQAAAAAAAAAdQAAAAMAAABtAAAABQAAAF8AAAAFAAAAcQAAAAEAAABqAAAAAAAAAF0AAAAAAAAAaQAAAAEAAABjAAAAAQAAAFoAAAAAAAAAaQAAAAAAAABYAAAAAAAAAEgAAAAAAAAAZwAAAAAAAABbAAAAAAAAAEkAAAADAAAAYQAAAAEAAABZAAAAAwAAAEcAAAADAAAAcQAAAAAAAABjAAAAAAAAAFAAAAAFAAAAdAAAAAEAAABpAAAAAAAAAFgAAAAAAAAAbwAAAAEAAABnAAAAAAAAAFsAAAAAAAAAdQAAAAIAAABqAAAABQAAAFoAAAAFAAAAeQAAAAEAAABxAAAAAAAAAGMAAAAAAAAAdwAAAAEAAAB0AAAAAQAAAGkAAAAAAAAAdwAAAAAAAABvAAAAAAAAAGEAAAAAAAAAcwAAAAAAAABuAAAAAAAAAGIAAAADAAAAawAAAAEAAABoAAAAAwAAAGAAAAADAAAAeQAAAAAAAAB0AAAAAAAAAGcAAAAFAAAAeAAAAAEAAAB3AAAAAAAAAG8AAAAAAAAAcAAAAAEAAABzAAAAAAAAAG4AAAAAAAAAdQAAAAEAAABxAAAABQAAAGkAAAAFAAAAdgAAAAEAAAB5AAAAAAAAAHQAAAAAAAAAcgAAAAEAAAB4AAAAAQAAAHcAAAAAAAAAcgAAAAAAAABwAAAAAAAAAGsAAAAAAAAAZAAAAAAAAABmAAAAAAAAAGUAAAADAAAAUwAAAAEAAABXAAAAAwAAAFUAAAADAAAAdgAAAAAAAAB4AAAAAAAAAHMAAAAFAAAAbAAAAAEAAAByAAAAAAAAAHAAAAAAAAAAXAAAAAEAAABkAAAAAAAAAGYAAAAAAAAAdQAAAAAAAAB5AAAABQAAAHcAAAAFAAAAbQAAAAEAAAB2AAAAAAAAAHgAAAAAAAAAXwAAAAEAAABsAAAAAQAAAHIAAAAAAAAAGC1EVPsh+T8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgtRFT7Ifk/GC1EVPsh+T8AAAAAAAAAAAAAAAAAAAAAGC1EVPsh+T8AAAAAAAAAABgtRFT7IQlAGC1EVPsh+T8AAAAAAAAAAAAAAAAAAAAAGC1EVPshCUAAAAAAAAAAABgtRFT7Ifm/GC1EVPsh+T8AAAAAAAAAAAAAAAAAAAAAGC1EVPsh+b8AAAAAAAAAAAAAAAAAAAAAGC1EVPsh+b8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgtRFT7Ifm/GC1EVPsh+b8AAAAAAAAAAAAAAAAAAAAAGC1EVPsh+b8AAAAAAAAAABgtRFT7IQnAGC1EVPsh+b8AAAAAAAAAAAAAAAAAAAAAGC1EVPshCcAAAAAAAAAAABgtRFT7Ifk/GC1EVPsh+b8AAAAAAAAAAAAAAAAAAAAAGC1EVPsh+T8AAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGAAAAAgAAAAUAAAABAAAABAAAAAAAAAAAAAAABQAAAAMAAAABAAAABgAAAAQAAAACAAAAAAAAAMpi5RexJsw/BlIKPVwR5T95Wyu0/QjnP5PjoT7YYcu/mBhKZ6zrwj8wRYS7NebuP3qW6geh+Ls/SLrixebL3r+pcyymN9XrPwmkNHp7xec/GWNMZVAA17+82s+x2BLiPwn2ytbJ9ek/LgEH1sMS1j8yp/2LhTfeP+SnWwtQBbu/d38gkp5X7z8ytsuHaADGPzUYObdf1+m/7IauECWhwz+cjSACjzniP76Z+wUhN9K/1+GEKzup67+/GYr/04baPw6idWOvsuc/ZedTWsRa5b/EJQOuRzi0v/OncYhHPes/h49PixY53j+i8wWfC03Nvw2idWOvsue/ZedTWsRa5T/EJQOuRzi0P/KncYhHPeu/iY9PixY53r+i8wWfC03NP9anWwtQBbs/d38gkp5X778ytsuHaADGvzUYObdf1+k/74auECWhw7+cjSACjzniv8CZ+wUhN9I/1uGEKzup6z+/GYr/04bavwmkNHp7xee/F2NMZVAA1z+82s+x2BLivwr2ytbJ9em/KwEH1sMS1r8yp/2LhTfev81i5RexJsy/BlIKPVwR5b95Wyu0/Qjnv5DjoT7YYcs/nBhKZ6zrwr8wRYS7Nebuv3OW6geh+Lu/SLrixebL3j+pcyymN9Xrv8rHIFfWehZAMBwUdlo0DECTUc17EOb2PxpVB1SWChdAzjbhb9pTDUDQhmdvECX5P9FlMKCC9+g/IIAzjELgE0DajDngMv8GQFhWDmDPjNs/y1guLh96EkAxPi8k7DIEQJCc4URlhRhA3eLKKLwkEECqpNAyTBD/P6xpjXcDiwVAFtl//cQm4z+Ibt3XKiYTQM7mCLUb3QdAoM1t8yVv7D8aLZv2Nk8UQEAJPV5nQwxAtSsfTCoE9z9TPjXLXIIWQBVanC5W9AtAYM3d7Adm9j++5mQz1FoWQBUThyaVBghAwH5muQsV7T89Q1qv82MUQJoWGOfNuBdAzrkClkmwDkDQjKq77t37Py+g0dtitsE/ZwAMTwVPEUBojepluNwBQGYbtuW+t9w/HNWIJs6MEkDTNuQUSlgEQKxktPP5TcQ/ixbLB8JjEUCwuWjXMQYCQAS/R09FkRdAowpiZjhhDkB7LmlczD/7P01iQmhhsAVAnrtTwDy84z/Z6jfQ2TgTQChOCXMnWwpAhrW3daoz8z/HYJvVPI4VQLT3ik5FcA5Angi7LOZd+z+NNVzDy5gXQBXdvVTFUA1AYNMgOeYe+T8+qHXGCwkXQKQTOKwa5AJA8gFVoEMW0T+FwzJyttIRQAEAAAD/////BwAAAP////8xAAAA/////1cBAAD/////YQkAAP////+nQQAA/////5HLAQD/////95AMAP/////B9lcAAAAAAAAAAAAAAAAAAgAAAP////8OAAAA/////2IAAAD/////rgIAAP/////CEgAA/////06DAAD/////IpcDAP/////uIRkA/////4LtrwAAAAAAAAAAAAAAAAAAAAAAAgAAAP//////////AQAAAAMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////wIAAAD//////////wEAAAAAAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA/////////////////////wEAAAD///////////////8CAAAA////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD///////////////////////////////8CAAAA////////////////AQAAAP////////////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAAAQAAAP//////////AgAAAP//////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAAEAAAD//////////wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgAAAAAAAAACAAAAAQAAAAEAAAACAAAAAgAAAAAAAAAFAAAABQAAAAAAAAACAAAAAgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAABAAAAAgAAAAIAAAACAAAAAAAAAAUAAAAGAAAAAAAAAAIAAAACAAAAAwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAgAAAAEAAAADAAAAAgAAAAIAAAAAAAAABQAAAAcAAAAAAAAAAgAAAAIAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAACAAAAAQAAAAQAAAACAAAAAgAAAAAAAAAFAAAACAAAAAAAAAACAAAAAgAAAAMAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAACAAAAAAAAAAIAAAABAAAAAAAAAAIAAAACAAAAAAAAAAUAAAAJAAAAAAAAAAIAAAACAAAAAwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAIAAAACAAAAAAAAAAMAAAAOAAAAAgAAAAAAAAACAAAAAwAAAAAAAAAAAAAAAgAAAAIAAAADAAAABgAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAgAAAAIAAAAAAAAAAwAAAAoAAAACAAAAAAAAAAIAAAADAAAAAQAAAAAAAAACAAAAAgAAAAMAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAACAAAAAgAAAAAAAAADAAAACwAAAAIAAAAAAAAAAgAAAAMAAAACAAAAAAAAAAIAAAACAAAAAwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAIAAAACAAAAAAAAAAMAAAAMAAAAAgAAAAAAAAACAAAAAwAAAAMAAAAAAAAAAgAAAAIAAAADAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAIAAAAAAAAAAwAAAA0AAAACAAAAAAAAAAIAAAADAAAABAAAAAAAAAACAAAAAgAAAAMAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACAAAAAgAAAAAAAAADAAAABgAAAAIAAAAAAAAAAgAAAAMAAAAPAAAAAAAAAAIAAAACAAAAAwAAAAsAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAIAAAACAAAAAAAAAAMAAAAHAAAAAgAAAAAAAAACAAAAAwAAABAAAAAAAAAAAgAAAAIAAAADAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAgAAAAIAAAAAAAAAAwAAAAgAAAACAAAAAAAAAAIAAAADAAAAEQAAAAAAAAACAAAAAgAAAAMAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAACAAAAAgAAAAAAAAADAAAACQAAAAIAAAAAAAAAAgAAAAMAAAASAAAAAAAAAAIAAAACAAAAAwAAAA4AAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAACAAAAAAAAAAMAAAAFAAAAAgAAAAAAAAACAAAAAwAAABMAAAAAAAAAAgAAAAIAAAADAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAgAAAAAAAAACAAAAAQAAABMAAAACAAAAAgAAAAAAAAAFAAAACgAAAAAAAAACAAAAAgAAAAMAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABEAAAACAAAAAAAAAAIAAAABAAAADwAAAAIAAAACAAAAAAAAAAUAAAALAAAAAAAAAAIAAAACAAAAAwAAABEAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAIAAAAAAAAAAgAAAAEAAAAQAAAAAgAAAAIAAAAAAAAABQAAAAwAAAAAAAAAAgAAAAIAAAADAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAgAAAAAAAAACAAAAAQAAABEAAAACAAAAAgAAAAAAAAAFAAAADQAAAAAAAAACAAAAAgAAAAMAAAATAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAACAAAAAAAAAAIAAAABAAAAEgAAAAIAAAACAAAAAAAAAAUAAAAOAAAAAAAAAAIAAAACAAAAAwAAAAIAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAAACAAAAAQAAAAAAAAABAAAAAgAAAAEAAAAAAAAAAgAAAAAAAAAFAAAABAAAAAAAAAABAAAABQAAAAAAAAAAAAAABQAAAAQAAAAAAAAAAQAAAAUAAAAEAAAAAAAAAAUAAAAAAAAAAgAAAAEAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAEAAAACAAAAAQAAAAAAAAACAAAAAgAAAAAAAAABAAAAAAAAAAAAAAAFAAAABAAAAAAAAAABAAAABQAAAAAAAAAAAAAABQAAAAQAAAAAAAAAAQAAAAUAAAAEAAAAAAAAAAUAAAAFAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAABAAAAAAEAAAAAAAAAAAEAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAQAAAAAAAAAAAAEAAAAAAAAAAAAAOgehWlKfUEEz1zLi+JsiQa2og3wcMfVAWCbHorc0yEDi+Yn/Y6mbQJ11/mfsnG9At6bnG4UQQkBvMCQWKqUUQJVmwwswmOc/3hVgVBL3uj//qqOEOdGOPw/WDN4gnGE/H3ANkCUgND+AA8btKgAHPwTXBqJVSdo+XfRQAqsKrj4fc+zLYbSPQklEmCZHv2FCUP+uDso1NEKYtPhwphUHQptxnyFXYdpB7CddZAMmrkGAt1AxSTqBQUibBVdTsFNBSuX3MV+AJkFocv82SLf5QAqmgj7AY81A23VDSEnLoEDGEJVSeDFzQDYrqvBk70VA8U157pcRGUBWfEF+ZKbsP6phvycGBZRAJbod0OgwfkCp+L8jatBmQCjl3pGrPlFAfMWm114SOkButwtqS7UjQHQwbcjXyw1A8jnLuuyA9j9KwjL0VwHhPyotk0lcs8k/Q5PvEs9rsz+SfsOQEVqdPzUAKDojLoY/WJz/kcjCcD8YFu070FRZPyoLC2BdJEM/YOXQAuiMM0HIBz1bw3sdQdV46aaHRwZByatzjDPX8EDb3Jie8HXZQCJxj6ULP8NAUaG6uRAZrUCWdmou5/mVQLb9huRPm4BAhvoCHygZaUCuX/I3SPdSQC9/bC/1qTxAfKxsYQ6pJUCuslH+N14QQMS/cv7SvPg/Ol8maYKx4j8AAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////wAAAAD/////AAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAA/////wAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAP////8AAAAABQAAAAAAAAAAAAAAAAAAAAAAAAD/////BQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAABQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////wAAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAAAAAABAAAAAAAAAAUAAAABAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAEAAQAAAQEAAAAAAAEAAAABAAAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAKriWFiWZfg/Y2nmTbY/8z8MHSPSqmnjv6hnn18HR3c/quJYWJZl+D/jq5TzDdzyPwwdI9KqaeO/u0kC1eFSBECq4lhYlmX4P69pJmt7c/E/NnkJi6jSBsDESFlzKkr6P33ArMz7sfY/o2q2uqM08D+oZ59fB0d3PzEqCi3qrvK/kmm4ANp49D+4wS2wzhzvP9WJvyAnx+E/upcY75RVx7+95t+9y0T1P9L18g1caO0/k6CkRyVzAEBf99+e/GjxP6QMsuuLQ/U/PlP4Qr8q7j8Mb/GO2GMCwLl2K/DQIghAePiwytEp9D9UHrsuI/nqPzjMedJ+yuy/k6xgf58n/L+XoQtn22DzP2lzCnsYk+s/JhUSDI4P8z+8lFcBhgTcPxOqKRxEX/M/89MEdoPQ6j8OKQaXDob7vzWwNvblgAPAzGkxMcl88j9Nm4okPkbpP0vI89vxSgRAdac2Z6W2/T+6UFOMC3zyP/+2XEF3hug/QqhELwGKCMAwdlQerEoEQFcr/B+VnvE/hB1hfFzT5j8wdsE/Da64P0hIvnF/sOC/KH/hrXUg8T9bI5OQHaLlP+mYzla7td6/CtKG6iOm8b8FW3TV8oXwP8ORhtNuJ+c/q8JrTMz/AcC8PaUl+PUFwAXv9rkMT/A/m+sAswr15D+7hk/O3yvkP6c/yVsOHKI/qqAX9idJ8D/8hNz1KNPiP7xSXh3Ggvg/epbkiKr57T/23/LB1GLvP4GTTeNZi+M/W4TqlTheBcDupZgIdYUIQGwlcW3YZO8/tQvDXQ3H4j8Bt+sf9DkAQMdFie+nNvg/Z5Uh1wDX7j9h5X2d4KjhPxMJ1ZVT4Pa/evqB8xB//7+W183U9QLsPwzNxsC7AOA/af/LqCnK/r/lPceQ0FQDwHoY0nYIW+w/bHNSHrTg4D/DFcMAdabuv2sz5Ojhnve/FvLf01HN6z/tEDL2Hz/gP0bBv0KUhPA/pd7sEnMc4D8EGon4Lo7sP5NVbYtSON8/DAMC50odBkB+Z2J8MGYCQIhlM1gubOo/FssiPwWy4D8OIlGqRnkCQAd1vopp6f4/QS1keLLK6T9rfoBuT7LZP3KQbH5ugwjAjqVPXTmbBUBL/JxcqR3qP3oSeovuktg/Y6pRhJmqy7+0kwuU0Yjmv2wvsfFmQ+g/R98lJFqQ2T/IGb5gjLkCwK3mNff3kQbAqDznPFM86T+iiP0FfsvYP7fzKG6Mls0/h7+at2btzL8tsUTgk+LmP/YEIrTDINU/WmwKoVjA5L9aC02r6FHxvzzFCT/Qg+Y/nx0V97en0j8+1toJOm77P1kZ7h8KjfQ/GBbbqxgk5j9RGXM79G/SP+beHsWmweQ/9REi4eX0xD/V9s+kmMHkP+pb9yNs09A/c5ERjVDTAECqEr3OBCH7P14ILfMECOU/piRx4P8P0j+JYU//bfL0Pw62fw28B+w/l5YW2Ga45D9+CyKRbenOP5cH6fHy1/S/o/egk03++r91nTYRL/bjP3fHN6OJVdA/7xXQh1XLBcAB3g6tBdUIQKW2KnGYjeQ/SqIpagclyz8F9P3YgNL6v9H6NBsZ8QDAW2k5L5Qs4z/0axa1l6zLP1GE65Mu4wNAwfX+BYmWAEBBgJP90M3hP6/03qhPLdA/zqo5bJz2778/ESlPCTn1v7JkhGyvzuE/DM7sj5twwz/6xbXLavYGQH29RFRGkgNA7bOXVSJ54T9fEhTHO/TDP+8t+HMOiwDAxa0SbGTtA8Atii7y0mLgP4cecHFB3sM/uPUpyv+K7j8nktD1/WvhP2cWmi772d8/Fj7uU9kEvD8oKOESLzKmvwSdCqrHdNu/XCluGsvI3T929OW5md+uP9dP6rXcZNq/gXM+ggzL6b+eKjsPgJncP6i1e9aVu7E/2CnPNJyD1D/DnyGgSe+xvy8k7g9bp9s/nYmLvHn1sz9cFOwApH8IwGa6Mjy9cgZAJr95SiSW2z8rCkhOFvqdP3SIKmO/UwPAEy0zkN7bBsCds8Hg/13YP1zv413hVGi/FVtqixSn6L9XAPQGul3yv7SGu2BoCNk/n94bv7Maj79p13T6X9z3P45MPCW3WvI/rU/8/LRj1T9cgR6SXd+ZPymL2DstbPI/8s/pAkIz6z/fmoB+8efYPz2XyfWgYaa/6wys72AW/j8LZImhgrf3P729Zla/n9U/ySB8B3PBqL8O2nhevvbxv17+5A+n6fe/YrGIqEGB1T+wCEGbkhaxv989QHVE5wFAzd12PTu3/T9AHUPZY2DUP3SQDST0zq2/JCxAlIoj5T+Mhe1IJkrQP/cRpl8QhtU/amc4seFts79khiUSVaz3vxYfWtjPwf2/CHscxQqD0j/ctUBQ9my3v0POnFiyXv2/pjjn2Ju/AcDk45DwBhPRP/GjwlCrv7m/aT2ciwolBsAQOzHr/wUJQCzpq5UYvtI/gDCf3SlCwb+4i7S+mukEQBDA1f8mowFA2utnRN3KyT9T+9EYAVG6v9/IVZ0enrE/7NbRtdGfzr/8y8GpRz7LP3U0vTSk18e/JzHEcwiBB0AGm8Q7AJkEQNLciyt4Esk/gLou5zoQxr+RrOfM91oBwEzd36KybgTAgLou5zoQxj/S3IsreBLJv1gCch0OHO8/FD+RxSLN4j91NL00pNfHP/zLwalHPsu/nL7/By4Pyr8tSP5h7CPiv1P70RgBUbo/2utnRN3Kyb/KfllfCpUIwLkP5zj+NwdAgDCf3SlCwT8s6auVGL7Sv2aFPlaC4eC/XrS5UVH77b/xo8JQq7+5P+TjkPAGE9G/Q30/RYbn1z8FF/ISafuLv9y1QFD2bLc/CHscxQqD0r/fi+tPROX0P6vRc+19ie0/amc4seFtsz/3EaZfEIbVv77TYpahl/o/DDsu0CaC9D90kA0k9M6tP0AdQ9ljYNS/CCI0rxjZA8BgfCaLthgHwLAIQZuSFrE/YrGIqEGB1b8kvQ982+rsv4J8EWu7jPS/ySB8B3PBqD+9vWZWv5/VvwrAByWcJgBAxFujmE9a+j89l8n1oGGmP9+agH7x59i/N03cuJUt9L8X9v4GdIz6v1yBHpJd35m/rU/8/LRj1b8mz69sydf/vyu5idMqVQLAn94bv7Majz8AhrtgaAjZv+aCE66WZ/q/lA1Mgz/p/79c7+Nd4VRoP52zweD/Xdi/TJZpMTb4AkDLWZShPOb/PysKSE4W+p2/Jr95SiSW27/PkmbE7zjnP6UAiCDmMNI/nYmLvHn1s78vJO4PW6fbv5MWA2vqSrQ/V5WLwPB51b+otXvWlbuxv54qOw+Amdy/1keqzYeRBsApIEMHgZIIQHb05bmZ366/XCluGsvI3b8W44a9X9UFQEeQtDM4rwJAFj7uU9kEvL9nFpou+9nfv3Co+JcyyQhAcdkCX2KzBUCHHnBxQd7Dvy2KLvLSYuC/o6+5YTt/AcCHCNDW+8YEwF8SFMc79MO/7bOXVSJ54b9E/pfA2S3xPzD9xaBb0uQ/DM7sj5tww7+yZIRsr87hv7c4c0SEXNG/Tr79/9M+5r+v9N6oTy3Qv5uAk/3QzeG/XcI1OVQkAUAQSV9Z7Qr9P/RrFrWXrMu/W2k5L5Qs479Zo2IBM/vkv6FuipzkFvG/SqIpagcly7+ltipxmI3kv0pmis91cfc/gWQecsRh8D93xzejiVXQv3WdNhEv9uO/D7mgYy612j+PyVPNaT2jv34LIpFt6c6/l5YW2Ga45L+LUp+2A2z9P39i5xSpRfc/piRx4P8P0r9eCC3zBAjlv5n4OKmIUf2/jj/kUAwgAsDqW/cjbNPQv9X2z6SYweS/aTdljlWd8L94R8vZ8SL3v1EZczv0b9K/GBbbqxgk5r9XdfyikfEDwPILMvas0gfAnx0V97en0r88xQk/0IPmvxGErZ681fa/9kCaiOy2/b/2BCK0wyDVvy2xROCT4ua/+5EBLOXxA0B7p53+BnkAQKKI/QV+y9i/qDznPFM86b/snWGNkkgHwC+ByugkUwdAR98lJFqQ2b9sL7HxZkPovyJNGM67oek/HzNy6BqA1D96EnqL7pLYv0v8nFypHeq/axL/u1FnB0AkSEHvxn8DQGt+gG5Pstm/QS1keLLK6b/Sk/O6mtGzPxU8pLcPNty/FssiPwWy4L+IZTNYLmzqvw4szKfSouq/G+XJHY1a87+TVW2LUjjfvwQaifgujuy/3VARaoMl2L9NFodfK+/qv+0QMvYfP+C/FvLf01HN67+ETOQysd8AwH71iI/eGgXAbHNSHrTg4L96GNJ2CFvsv6BnExReeAFA5CakvxSl+j8MzcbAuwDgv5bXzdT1Auy/uVq8/8x58z+uvPMNqzTnP2HlfZ3gqOG/Z5Uh1wDX7r8PUbMSo2P7P9VfBrXlxPI/tQvDXQ3H4r9sJXFt2GTvvyDssGgO0PG/WxT/uE4N+r+Bk03jWYvjv/bf8sHUYu+/rUXN8hUe3j9m5HB1yZCzv/yE3PUo0+K/qqAX9idJ8L9mByqLMMH5v4kHC7KQowHAm+sAswr15L8F7/a5DE/wv2JLsGADFwTAKQjVGovZCMDDkYbTbifnvwVbdNXyhfC/malhH7yI7D+oevd0GWDZP1sjk5AdouW/KH/hrXUg8b8KWmrpQ0sFQAzEAF/pTgBAhB1hfFzT5r9XK/wflZ7xv18hRuqKXAjA/5rUd9v1BED/tlxBd4bov7pQU4wLfPK/4pnwn0T/sj/c277XPF3jv02biiQ+Rum/zGkxMcl88r8Yk0HhJVzjv62yUUFRjfS/89MEdoPQ6r8TqikcRF/zvxQxghHovfY/cfM1eFWE5j9pcwp7GJPrv5ehC2fbYPO/KUV2nGg0/795OhmUaqEFwFQeuy4j+eq/ePiwytEp9L8DuqWfW+8BQLytJylXHPY/PlP4Qr8q7r+kDLLri0P1vxT4ShWL+Oo/DMsWg0zlv7/S9fINXGjtv73m373LRPW/+xg/Gaxd8b94MdQEfW0AwLjBLbDOHO+/kmm4ANp49L+cShSMMbAEwKyjUgWirAdAo2q2uqM08L99wKzM+7H2v3RdlNBXFgnA8S9+ewyV/z+vaSZre3Pxv6riWFiWZfi/2J7VSZZ60j+LES81zPn3v+OrlPMN3PK/quJYWJZl+L/OZbufkEcEQLCNB/1lPOO/Y2nmTbY/87+q4lhYlmX4v7CNB/1lPOO/zmW7n5BHBEBwKD1Aa57LP/XsSsw7RbU/PMDPJGsfoD/TqningGKIPzFtCLYmb3I/qYfrJr7eWz9pQmleXRFFP0rWlJkA2i8/pCvcttgTGD9Dt8IWbjMCPyCG4GRlhOs+1JI2GhDN1D7ns8cGvXK/Pi8m8UTJxac+hNTfA2z4kT7GI8kjLyt7Pv//////HwAI//////8zEAj/////fzIgCP////9vMjAI/////2MyQAj///8/YjJQCP///zdiMmAI////M2IycAj//78zYjKACP//qzNiMpAI/3+rM2IyoAj/D6szYjKwCP8DqzNiMsAIvwOrM2Iy0AifA6szYjLgCJkDqzNiMvAI//////8/Dwj//////ysfCP////9/KS8I/////z8pPwj/////OSlPCP///z84KV8I////Dzgpbwj///8OOCl/CP//Hw44KY8I//8PDjgpnwj/fw0OOCmvCP8PDQ44Kb8I/w0NDjgpzwj/DA0OOCnfCMcMDQ44Ke8IxAwNDjgp/wgHAAAABwAAAAEAAAACAAAABAAAAAMAAAAAAAAAAAAAAAcAAAADAAAAAQAAAAIAAAAFAAAABAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAgAAAAEAAAADAAAADgAAAAYAAAALAAAAAgAAAAcAAAABAAAAGAAAAAUAAAAKAAAAAQAAAAYAAAAAAAAAJgAAAAcAAAAMAAAAAwAAAAgAAAACAAAAMQAAAAkAAAAOAAAAAAAAAAUAAAAEAAAAOgAAAAgAAAANAAAABAAAAAkAAAADAAAAPwAAAAsAAAAGAAAADwAAAAoAAAAQAAAASAAAAAwAAAAHAAAAEAAAAAsAAAARAAAAUwAAAAoAAAAFAAAAEwAAAA4AAAAPAAAAYQAAAA0AAAAIAAAAEQAAAAwAAAASAAAAawAAAA4AAAAJAAAAEgAAAA0AAAATAAAAdQAAAA8AAAATAAAAEQAAABIAAAAQAAAABgAAAAIAAAADAAAABQAAAAQAAAAAAAAAAAAAAAAAAAAGAAAAAgAAAAMAAAABAAAABQAAAAQAAAAAAAAAAAAAAAcAAAAFAAAAAwAAAAQAAAABAAAAAAAAAAIAAAAAAAAAAgAAAAMAAAABAAAABQAAAAQAAAAGAAAAAAAAAAAAAAAYLURU+yH5PxgtRFT7Ifm/GC1EVPshCUAYLURU+yEJwGFsZ29zLmMAaDNOZWlnaGJvclJvdGF0aW9ucwBjZWxsc1RvTXVsdGlQb2x5LmMAY2VsbFRvRWRnZUFyY3MAAAEDAgQABAMFAQJjYW5jZWxBcmNQYWlycwBjcmVhdGVTb3J0YWJsZUxvb3AAZGlyZWN0ZWRFZGdlLmMAZGlyZWN0ZWRFZGdlVG9Cb3VuZGFyeQBhZGphY2VudEZhY2VEaXJbdG1wRmlqay5mYWNlXVtmaWprLmZhY2VdID09IEtJAGZhY2VpamsuYwBfZmFjZUlqa1BlbnRUb0NlbGxCb3VuZGFyeQBhZGphY2VudEZhY2VEaXJbY2VudGVySUpLLmZhY2VdW2ZhY2UyXSA9PSBLSQBfZmFjZUlqa1RvQ2VsbEJvdW5kYXJ5AGgzSW5kZXguYwBjb21wYWN0Q2VsbHMAdmVjM1RvQ2VsbABjZWxsVG9DaGlsZFBvcwB2YWxpZGF0ZUNoaWxkUG9zAHJldkRpciAhPSBJTlZBTElEX0RJR0lUAGxvY2FsaWouYwBjZWxsVG9Mb2NhbElqawBiYXNlQ2VsbCAhPSBvcmlnaW5CYXNlQ2VsbAAhKG9yaWdpbk9uUGVudCAmJiBpbmRleE9uUGVudCkAYmFzZUNlbGwgPT0gb3JpZ2luQmFzZUNlbGwALi4vaW5jbHVkZS9jb29yZGlqay5oAF91cEFwN0NoZWNrZWQAX3VwQXA3ckNoZWNrZWQAYmFzZUNlbGwgIT0gSU5WQUxJRF9CQVNFX0NFTEwAbG9jYWxJamtUb0NlbGwAIV9pc0Jhc2VDZWxsUGVudGFnb24oYmFzZUNlbGwpAGJhc2VDZWxsUm90YXRpb25zID49IDAAZ3JpZFBhdGhDZWxsc0ludGVycG9sYXRlAHBvbHlmaWxsLmMAaXRlclN0ZXBQb2x5Z29uQ29tcGFjdAAwAHZlcnRleC5jAHZlcnRleFJvdGF0aW9ucwBjZWxsVG9WZXJ0ZXg=`;var ob=28400;function sb(Z){return Z}function Ou(Z){return Z.replace(/\b__Z[\w\d_]+/g,function(Te){var ne=Te;return Te===ne?Te:ne+` [`+Te+`]`})}function Du(){var Z=new Error;if(!Z.stack){try{throw new Error(0)}catch(ae){Z=ae}if(!Z.stack)return`(no stack trace available)`}return Z.stack.toString()}function Ab(){var Z=Du();return e.extraStackTrace&&(Z+=`
|
|
2
|
+
`+e.extraStackTrace()),Ou(Z)}function ab(Z,ae,Te,ne){kn(`Assertion failed: `+le(Z)+`, at: `+[ae?le(ae):`unknown filename`,Te,ne?le(ne):`unknown function`])}function Bu(){return _e.length}function cb(Z,ae,Te){Ne.set(Ne.subarray(ae,ae+Te),Z)}function lb(Z){return e.___errno_location&&(Ge[e.___errno_location()>>2]=Z),Z}function ub(Z){kn(`OOM`)}function Uu(Z){try{var ae=new ArrayBuffer(Z);return ae.byteLength!=Z?void 0:(new Int8Array(ae).set(_e),gb(ae),vt(ae),1)}catch{}}function fb(Z){var ae=Bu(),Te=16777216,ne=2147483648-Te;if(Z>ne)return!1;for(var ot=Math.max(ae,16777216);ot<Z;)ot<=536870912?ot=we(2*ot,Te):ot=Math.min(we((3*ot+2147483648)/4,Te),ne);return!!Uu(ot)}var hb=typeof atob==`function`?atob:function(Z){var ae=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=`,Te=``,ne,n,ot,Ze,P,st,Yt,Lt=0;Z=Z.replace(/[^A-Za-z0-9\+\/\=]/g,``);do Ze=ae.indexOf(Z.charAt(Lt++)),P=ae.indexOf(Z.charAt(Lt++)),st=ae.indexOf(Z.charAt(Lt++)),Yt=ae.indexOf(Z.charAt(Lt++)),ne=Ze<<2|P>>4,n=(P&15)<<4|st>>2,ot=(st&3)<<6|Yt,Te=Te+String.fromCharCode(ne),st!==64&&(Te=Te+String.fromCharCode(n)),Yt!==64&&(Te=Te+String.fromCharCode(ot));while(Lt<Z.length);return Te};function db(Z){try{for(var ae=hb(Z),Te=new Uint8Array(ae.length),ne=0;ne<ae.length;++ne)Te[ne]=ae.charCodeAt(ne);return Te}catch{throw new Error(`Converting base64 string to bytes failed.`)}}function ja(Z){if(ku(Z))return db(Z.slice(Ua.length))}var fe=(function(Z,ae,Te){"almost asm";var ne=new Z.Int8Array(Te),n=new Z.Int32Array(Te);new Z.Uint8Array(Te);new Z.Float32Array(Te);var P=new Z.Float64Array(Te),st=ae.o|0,Yt=ae.p|0,Lt=Z.Math.floor,Ct=Z.Math.abs,dt=Z.Math.sqrt,De=Z.Math.cos,tt=Z.Math.sin,ms=Z.Math.tan,yb=Z.Math.acos,go=Z.Math.asin,Hu=Z.Math.atan,Vt=Z.Math.atan2,li=Z.Math.ceil,Jt=Z.Math.imul,Ha=Z.Math.min,xb=Z.Math.max,Zr=Z.Math.clz32,_b=ae.a,Re=ae.b,R=ae.c,Ve=ae.d,qu=ae.e,wb=ae.f,Eb=ae.g,vb=ae.h,Sb=ae.i,L=28416;function Cb(s){return ne=new Int8Array(s),new Uint8Array(s),n=new Int32Array(s),new Float32Array(s),P=new Float64Array(s),Te=s,!0}function Ib(s){s=s|0;var A=0;return A=L,L=L+s|0,L=L+15&-16,A|0}function Mb(){return L|0}function Lb(s){s=s|0,L=s}function Rb(s,A){s=s|0,A=A|0,L=s}function Pb(s,A){s=s|0,A=A|0;var c=0,u=0,l=0;return(s|0)<0?(A=2,A|0):(s|0)>13780509?(A=ys(15,A)|0,A|0):(c=((s|0)<0)<<31>>31,l=lt(s|0,c|0,3,0)|0,u=R()|0,c=pe(s|0,c|0,1,0)|0,c=lt(l|0,u|0,c|0,R()|0)|0,c=pe(c|0,R()|0,1,0)|0,s=R()|0,n[A>>2]=c,n[A+4>>2]=s,A=0,A|0)}function Wu(s,A,c,u){return s=s|0,A=A|0,c=c|0,u=u|0,Qu(s,A,c,u,0)|0}function Qu(s,A,c,u,l){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0;if(g=L,L=L+16|0,h=g,!(Ku(s,A,c,u,l)|0))return u=0,L=g,u|0;do if((c|0)>=0){if((c|0)>13780509){if(f=ys(15,h)|0,f|0)break;p=h,h=n[p>>2]|0,p=n[p+4>>2]|0}else f=((c|0)<0)<<31>>31,T=lt(c|0,f|0,3,0)|0,p=R()|0,f=pe(c|0,f|0,1,0)|0,f=lt(T|0,p|0,f|0,R()|0)|0,f=pe(f|0,R()|0,1,0)|0,p=R()|0,n[h>>2]=f,n[h+4>>2]=p,h=f;if(mn(u|0,0,h<<3|0)|0,l|0){mn(l|0,0,h<<2|0)|0,f=Gr(s,A,c,u,l,h,p,0)|0;break}f=zt(h,4)|0,f?(T=Gr(s,A,c,u,f,h,p,0)|0,be(f),f=T):f=13}else f=2;while(!1);return T=f,L=g,T|0}function Ku(s,A,c,u,l){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0;if(F=L,L=L+16|0,C=F,I=F+8|0,v=C,n[v>>2]=s,n[v+4>>2]=A,(c|0)<0)return I=2,L=F,I|0;if(f=u,n[f>>2]=s,n[f+4>>2]=A,f=(l|0)!=0,f&&(n[l>>2]=0),nt(s,A)|0)return I=9,L=F,I|0;n[I>>2]=0;e:do if((c|0)>=1)if(f)for(x=1,T=0,E=0,v=1,f=s;;){if(!(T|E)){if(f=It(f,A,4,I,C)|0,f|0)break e;if(A=C,f=n[A>>2]|0,A=n[A+4>>2]|0,nt(f,A)|0){f=9;break e}}if(f=It(f,A,n[26864+(E<<2)>>2]|0,I,C)|0,f|0)break e;if(A=C,f=n[A>>2]|0,A=n[A+4>>2]|0,s=u+(x<<3)|0,n[s>>2]=f,n[s+4>>2]=A,n[l+(x<<2)>>2]=v,s=T+1|0,h=(s|0)==(v|0),p=E+1|0,g=(p|0)==6,nt(f,A)|0){f=9;break e}if(v=v+(g&h&1)|0,(v|0)>(c|0)){f=0;break}else x=x+1|0,T=h?0:s,E=h?g?0:p:E}else for(x=1,T=0,E=0,v=1,f=s;;){if(!(T|E)){if(f=It(f,A,4,I,C)|0,f|0)break e;if(A=C,f=n[A>>2]|0,A=n[A+4>>2]|0,nt(f,A)|0){f=9;break e}}if(f=It(f,A,n[26864+(E<<2)>>2]|0,I,C)|0,f|0)break e;if(A=C,f=n[A>>2]|0,A=n[A+4>>2]|0,s=u+(x<<3)|0,n[s>>2]=f,n[s+4>>2]=A,s=T+1|0,h=(s|0)==(v|0),p=E+1|0,g=(p|0)==6,nt(f,A)|0){f=9;break e}if(v=v+(g&h&1)|0,(v|0)>(c|0)){f=0;break}else x=x+1|0,T=h?0:s,E=h?g?0:p:E}else f=0;while(!1);return I=f,L=F,I|0}function Gr(s,A,c,u,l,f,h,p){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0,f=f|0,h=h|0,p=p|0;var g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0,H=0;if(F=L,L=L+16|0,C=F+8|0,I=F,g=$r(s|0,A|0,f|0,h|0)|0,x=R()|0,E=u+(g<<3)|0,U=E,H=n[U>>2]|0,U=n[U+4>>2]|0,T=(H|0)==(s|0)&(U|0)==(A|0),!((H|0)==0&(U|0)==0|T))do g=pe(g|0,x|0,1,0)|0,g=pn(g|0,R()|0,f|0,h|0)|0,x=R()|0,E=u+(g<<3)|0,H=E,U=n[H>>2]|0,H=n[H+4>>2]|0,T=(U|0)==(s|0)&(H|0)==(A|0);while(!((U|0)==0&(H|0)==0|T));if(g=l+(g<<2)|0,T&&(n[g>>2]|0)<=(p|0)||(H=E,n[H>>2]=s,n[H+4>>2]=A,n[g>>2]=p,(p|0)>=(c|0)))return H=0,L=F,H|0;switch(T=p+1|0,n[C>>2]=0,g=It(s,A,2,C,I)|0,g|0){case 9:v=9;break;case 0:g=I,g=Gr(n[g>>2]|0,n[g+4>>2]|0,c,u,l,f,h,T)|0,g||(v=9);break;default:}e:do if((v|0)==9){switch(n[C>>2]=0,g=It(s,A,3,C,I)|0,g|0){case 9:break;case 0:if(g=I,g=Gr(n[g>>2]|0,n[g+4>>2]|0,c,u,l,f,h,T)|0,g|0)break e;break;default:break e}switch(n[C>>2]=0,g=It(s,A,1,C,I)|0,g|0){case 9:break;case 0:if(g=I,g=Gr(n[g>>2]|0,n[g+4>>2]|0,c,u,l,f,h,T)|0,g|0)break e;break;default:break e}switch(n[C>>2]=0,g=It(s,A,5,C,I)|0,g|0){case 9:break;case 0:if(g=I,g=Gr(n[g>>2]|0,n[g+4>>2]|0,c,u,l,f,h,T)|0,g|0)break e;break;default:break e}switch(n[C>>2]=0,g=It(s,A,4,C,I)|0,g|0){case 9:break;case 0:if(g=I,g=Gr(n[g>>2]|0,n[g+4>>2]|0,c,u,l,f,h,T)|0,g|0)break e;break;default:break e}switch(n[C>>2]=0,g=It(s,A,6,C,I)|0,g|0){case 9:break;case 0:if(g=I,g=Gr(n[g>>2]|0,n[g+4>>2]|0,c,u,l,f,h,T)|0,g|0)break e;break;default:break e}return H=0,L=F,H|0}while(!1);return H=g,L=F,H|0}function It(s,A,c,u,l){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0;if(c>>>0>6)return l=1,l|0;h=(n[u>>2]|0)%6|0,n[u>>2]=h;e:do if((h|0)>0)for(f=0;;){switch(c|0){case 1:c=5;break;case 5:c=4;break;case 4:c=6;break;case 6:c=2;break;case 2:c=3;break;case 3:c=1;break;default:}if(f=f+1|0,(f|0)==(h|0))break e}while(!1);if(E=se(s|0,A|0,45)|0,R()|0,x=E&127,x>>>0>121)return l=5,l|0;g=Zt(s,A)|0,f=se(s|0,A|0,52)|0,R()|0,f=f&15;e:do if(!f)T=15;else{for(;;){if(h=(15-f|0)*3|0,p=se(s|0,A|0,h|0)|0,R()|0,p=p&7,(p|0)==7){A=5;break}if(I=(pr(f)|0)==0,f=f+-1|0,v=he(7,0,h|0)|0,A=A&~(R()|0),C=he(n[(I?432:16)+(p*28|0)+(c<<2)>>2]|0,0,h|0)|0,h=R()|0,c=n[(I?640:224)+(p*28|0)+(c<<2)>>2]|0,s=C|s&~v,A=h|A,!c){c=0;break e}if(!f){T=15;break e}}return A|0}while(!1);(T|0)==15&&(I=n[848+(x*28|0)+(c<<2)>>2]|0,C=he(I|0,0,45)|0,s=C|s,A=R()|0|A&-1040385,c=n[4272+(x*28|0)+(c<<2)>>2]|0,(I&127|0)==127&&(I=he(n[848+(x*28|0)+20>>2]|0,0,45)|0,A=R()|0|A&-1040385,c=n[4272+(x*28|0)+20>>2]|0,s=On(I|s,A)|0,A=R()|0,n[u>>2]=(n[u>>2]|0)+1)),p=se(s|0,A|0,45)|0,R()|0,p=p&127;e:do if(at(p)|0){t:do if((Zt(s,A)|0)==1){if((x|0)!=(p|0))if(Zu(p,n[7696+(x*28|0)>>2]|0)|0){s=r0(s,A)|0,h=1,A=R()|0;break}else Ve(27634,26928,533,26936);switch(g|0){case 3:s=On(s,A)|0,A=R()|0,n[u>>2]=(n[u>>2]|0)+1,h=0;break t;case 5:s=r0(s,A)|0,A=R()|0,n[u>>2]=(n[u>>2]|0)+5,h=0;break t;case 0:return I=9,I|0;default:return I=1,I|0}}else h=0;while(!1);if((c|0)>0){f=0;do s=t0(s,A)|0,A=R()|0,f=f+1|0;while((f|0)!=(c|0))}if((x|0)!=(p|0)){if(!(qa(p)|0)){if((h|0)!=0|(Zt(s,A)|0)!=5)break;n[u>>2]=(n[u>>2]|0)+1;break}switch(E&127){case 8:case 118:break e;default:}(Zt(s,A)|0)!=3&&(n[u>>2]=(n[u>>2]|0)+1)}}else if((c|0)>0){f=0;do s=On(s,A)|0,A=R()|0,f=f+1|0;while((f|0)!=(c|0))}while(!1);return n[u>>2]=((n[u>>2]|0)+c|0)%6|0,I=l,n[I>>2]=s,n[I+4>>2]=A,I=0,I|0}function Nb(s,A,c,u){return s=s|0,A=A|0,c=c|0,u=u|0,Xu(s,A,c,u)|0?(mn(u|0,0,c*48|0)|0,u=Fb(s,A,c,u)|0,u|0):(u=0,u|0)}function Xu(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0;if(I=L,L=L+16|0,v=I,C=I+8|0,E=v,n[E>>2]=s,n[E+4>>2]=A,(c|0)<0)return C=2,L=I,C|0;if(!c)return C=u,n[C>>2]=s,n[C+4>>2]=A,C=0,L=I,C|0;n[C>>2]=0;e:do if(nt(s,A)|0)s=9;else{l=0,E=s;do{if(s=It(E,A,4,C,v)|0,s|0)break e;if(A=v,E=n[A>>2]|0,A=n[A+4>>2]|0,l=l+1|0,nt(E,A)|0){s=9;break e}}while((l|0)<(c|0));x=u,n[x>>2]=E,n[x+4>>2]=A,x=c+-1|0,T=0,s=1;do{if(l=26864+(T<<2)|0,(T|0)==5)for(h=n[l>>2]|0,f=0,l=s;;){if(s=v,s=It(n[s>>2]|0,n[s+4>>2]|0,h,C,v)|0,s|0)break e;if((f|0)!=(x|0))if(g=v,p=n[g>>2]|0,g=n[g+4>>2]|0,s=u+(l<<3)|0,n[s>>2]=p,n[s+4>>2]=g,!(nt(p,g)|0))s=l+1|0;else{s=9;break e}else s=l;if(f=f+1|0,(f|0)>=(c|0))break;l=s}else for(h=v,g=n[l>>2]|0,p=0,l=s,f=n[h>>2]|0,h=n[h+4>>2]|0;;){if(s=It(f,h,g,C,v)|0,s|0)break e;if(h=v,f=n[h>>2]|0,h=n[h+4>>2]|0,s=u+(l<<3)|0,n[s>>2]=f,n[s+4>>2]=h,s=l+1|0,nt(f,h)|0){s=9;break e}if(p=p+1|0,(p|0)>=(c|0))break;l=s}T=T+1|0}while(T>>>0<6);s=v,s=(E|0)==(n[s>>2]|0)&&(A|0)==(n[s+4>>2]|0)?0:9}while(!1);return C=s,L=I,C|0}function Fb(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0;if(E=L,L=L+16|0,h=E,!c)return n[u>>2]=s,n[u+4>>2]=A,u=0,L=E,u|0;do if((c|0)>=0){if((c|0)>13780509){if(l=ys(15,h)|0,l|0)break;f=h,l=n[f>>2]|0,f=n[f+4>>2]|0}else l=((c|0)<0)<<31>>31,x=lt(c|0,l|0,3,0)|0,f=R()|0,l=pe(c|0,l|0,1,0)|0,l=lt(x|0,f|0,l|0,R()|0)|0,l=pe(l|0,R()|0,1,0)|0,f=R()|0,x=h,n[x>>2]=l,n[x+4>>2]=f;if(T=zt(l,8)|0,!T)l=13;else{if(x=zt(l,4)|0,!x){be(T),l=13;break}if(l=Gr(s,A,c,T,x,l,f,0)|0,l|0){be(T),be(x);break}if(A=n[h>>2]|0,h=n[h+4>>2]|0,(h|0)>0|(h|0)==0&A>>>0>0){l=0,p=0,g=0;do s=T+(p<<3)|0,f=n[s>>2]|0,s=n[s+4>>2]|0,!((f|0)==0&(s|0)==0)&&(n[x+(p<<2)>>2]|0)==(c|0)&&(v=u+(l<<3)|0,n[v>>2]=f,n[v+4>>2]=s,l=l+1|0),p=pe(p|0,g|0,1,0)|0,g=R()|0;while((g|0)<(h|0)|(g|0)==(h|0)&p>>>0<A>>>0)}be(T),be(x),l=0}}else l=2;while(!1);return v=l,L=E,v|0}function gs(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0;for(p=L,L=L+16|0,f=p,h=p+8|0,l=(nt(s,A)|0)==0,l=l?1:2;;){if(n[h>>2]=0,T=(It(s,A,l,h,f)|0)==0,g=f,T&((n[g>>2]|0)==(c|0)?(n[g+4>>2]|0)==(u|0):0)){s=4;break}if(l=l+1|0,l>>>0>=7){l=7,s=4;break}}return(s|0)==4?(L=p,l|0):0}function kb(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0;if(p=L,L=L+48|0,l=p+16|0,f=p+8|0,h=p,c=vo(c)|0,c|0)return h=c,L=p,h|0;if(T=s,g=n[T+4>>2]|0,c=f,n[c>>2]=n[T>>2],n[c+4>>2]=g,gf(f,l),c=rf(l,A,h)|0,!c){if(A=n[f>>2]|0,f=n[s+8>>2]|0,(f|0)>0){l=n[s+12>>2]|0,c=0;do A=(n[l+(c<<3)>>2]|0)+A|0,c=c+1|0;while((c|0)<(f|0))}c=h,l=n[c>>2]|0,c=n[c+4>>2]|0,f=((A|0)<0)<<31>>31,(c|0)<(f|0)|(c|0)==(f|0)&l>>>0<A>>>0?(c=h,n[c>>2]=A,n[c+4>>2]=f,c=f):A=l,g=pe(A|0,c|0,12,0)|0,T=R()|0,c=h,n[c>>2]=g,n[c+4>>2]=T,c=u,n[c>>2]=g,n[c+4>>2]=T,c=0}return T=c,L=p,T|0}function Yu(s,A,c,u,l,f,h){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0,f=f|0,h=h|0;var p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0,H=0,N=0,W=0,j=0,ee=0,oe=0,X=0,q=0,me=0,ie=0,ye=0,ce=0,de=0,ze=0,We=0,Ot=0,Pe=0,Qe=0,Ht=0;if(We=L,L=L+64|0,ye=We+48|0,ce=We+32|0,de=We+24|0,ee=We+8|0,oe=We,g=n[s>>2]|0,(g|0)<=0)return ze=0,L=We,ze|0;for(X=s+4|0,q=ye+8|0,me=ce+8|0,ie=ee+8|0,p=0,W=0;;){T=n[X>>2]|0,N=T+(W<<4)|0,n[ye>>2]=n[N>>2],n[ye+4>>2]=n[N+4>>2],n[ye+8>>2]=n[N+8>>2],n[ye+12>>2]=n[N+12>>2],(W|0)==(g+-1|0)?(n[ce>>2]=n[T>>2],n[ce+4>>2]=n[T+4>>2],n[ce+8>>2]=n[T+8>>2],n[ce+12>>2]=n[T+12>>2]):(N=T+(W+1<<4)|0,n[ce>>2]=n[N>>2],n[ce+4>>2]=n[N+4>>2],n[ce+8>>2]=n[N+8>>2],n[ce+12>>2]=n[N+12>>2]),g=Yb(ye,ce,u,de)|0;e:do if(g)T=0,p=g;else if(g=de,T=n[g>>2]|0,g=n[g+4>>2]|0,(g|0)>0|(g|0)==0&T>>>0>0){H=0,N=0;t:for(;;){if(Pe=1/(+(T>>>0)+4294967296*+(g|0)),Ht=+P[ye>>3],g=Mt(T|0,g|0,H|0,N|0)|0,Qe=+(g>>>0)+4294967296*+(R()|0),Ot=+(H>>>0)+4294967296*+(N|0),P[ee>>3]=Pe*(Ht*Qe)+Pe*(+P[ce>>3]*Ot),P[ie>>3]=Pe*(+P[q>>3]*Qe)+Pe*(+P[me>>3]*Ot),g=n0(ee,u,oe)|0,g|0){p=g;break}U=oe,F=n[U>>2]|0,U=n[U+4>>2]|0,v=$r(F|0,U|0,A|0,c|0)|0,x=R()|0,g=h+(v<<3)|0,E=g,T=n[E>>2]|0,E=n[E+4>>2]|0;r:do if((T|0)==0&(E|0)==0)j=g,ze=16;else for(C=0,I=0;;){if((C|0)>(c|0)|(C|0)==(c|0)&I>>>0>A>>>0){p=1;break t}if((T|0)==(F|0)&(E|0)==(U|0))break r;if(g=pe(v|0,x|0,1,0)|0,v=pn(g|0,R()|0,A|0,c|0)|0,x=R()|0,I=pe(I|0,C|0,1,0)|0,C=R()|0,g=h+(v<<3)|0,E=g,T=n[E>>2]|0,E=n[E+4>>2]|0,(T|0)==0&(E|0)==0){j=g,ze=16;break}}while(!1);if((ze|0)==16&&(ze=0,!((F|0)==0&(U|0)==0))&&(I=j,n[I>>2]=F,n[I+4>>2]=U,I=f+(n[l>>2]<<3)|0,n[I>>2]=F,n[I+4>>2]=U,I=l,I=pe(n[I>>2]|0,n[I+4>>2]|0,1,0)|0,F=R()|0,U=l,n[U>>2]=I,n[U+4>>2]=F),H=pe(H|0,N|0,1,0)|0,N=R()|0,g=de,T=n[g>>2]|0,g=n[g+4>>2]|0,!((g|0)>(N|0)|(g|0)==(N|0)&T>>>0>H>>>0)){T=1;break e}}T=0}else T=1;while(!1);if(W=W+1|0,!T){ze=21;break}if(g=n[s>>2]|0,(W|0)>=(g|0)){p=0,ze=21;break}}return(ze|0)==21?(L=We,p|0):0}function Ob(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0,H=0,N=0,W=0,j=0,ee=0,oe=0,X=0,q=0,me=0,ie=0,ye=0,ce=0,de=0,ze=0,We=0,Ot=0,Pe=0,Qe=0;if(Qe=L,L=L+112|0,ze=Qe+80|0,g=Qe+72|0,We=Qe,Ot=Qe+56|0,l=vo(c)|0,l|0)return Pe=l,L=Qe,Pe|0;if(T=s+8|0,Pe=ct((n[T>>2]<<5)+32|0)|0,!Pe)return Pe=13,L=Qe,Pe|0;if(l0(s,Pe),l=vo(c)|0,!l){if(ce=s,de=n[ce+4>>2]|0,l=g,n[l>>2]=n[ce>>2],n[l+4>>2]=de,gf(g,ze),l=rf(ze,A,We)|0,l)ce=0,de=0;else{if(l=n[g>>2]|0,f=n[T>>2]|0,(f|0)>0){h=n[s+12>>2]|0,c=0;do l=(n[h+(c<<3)>>2]|0)+l|0,c=c+1|0;while((c|0)!=(f|0));c=l}else c=l;l=We,f=n[l>>2]|0,l=n[l+4>>2]|0,h=((c|0)<0)<<31>>31,(l|0)<(h|0)|(l|0)==(h|0)&f>>>0<c>>>0?(l=We,n[l>>2]=c,n[l+4>>2]=h,l=h):c=f,ce=pe(c|0,l|0,12,0)|0,de=R()|0,l=We,n[l>>2]=ce,n[l+4>>2]=de,l=0}if(!l){if(c=zt(ce,8)|0,!c)return be(Pe),Pe=13,L=Qe,Pe|0;if(p=zt(ce,8)|0,!p)return be(Pe),be(c),Pe=13,L=Qe,Pe|0;ie=ze,n[ie>>2]=0,n[ie+4>>2]=0,ie=s,ye=n[ie+4>>2]|0,l=g,n[l>>2]=n[ie>>2],n[l+4>>2]=ye,l=Yu(g,ce,de,A,ze,c,p)|0;e:do if(l)be(c),be(p),be(Pe);else{t:do if((n[T>>2]|0)>0){for(h=s+12|0,f=0;l=Yu((n[h>>2]|0)+(f<<3)|0,ce,de,A,ze,c,p)|0,f=f+1|0,!(l|0);)if((f|0)>=(n[T>>2]|0))break t;be(c),be(p),be(Pe);break e}while(!1);(de|0)>0|(de|0)==0&ce>>>0>0&&mn(p|0,0,ce<<3|0)|0,ye=ze,ie=n[ye+4>>2]|0;t:do if((ie|0)>0|(ie|0)==0&(n[ye>>2]|0)>>>0>0){X=c,q=p,me=c,ie=p,ye=c,l=c,j=c,ee=p,oe=p,c=p;r:for(;;){for(U=0,H=0,N=0,W=0,f=0,h=0;;){p=We,g=p+56|0;do n[p>>2]=0,p=p+4|0;while((p|0)<(g|0));if(A=X+(U<<3)|0,T=n[A>>2]|0,A=n[A+4>>2]|0,Ku(T,A,1,We,0)|0){p=We,g=p+56|0;do n[p>>2]=0,p=p+4|0;while((p|0)<(g|0));p=zt(7,4)|0,p|0&&(Gr(T,A,1,We,p,7,0,0)|0,be(p))}for(F=0;;){I=We+(F<<3)|0,C=n[I>>2]|0,I=n[I+4>>2]|0;n:do if((C|0)==0&(I|0)==0)p=f,g=h;else{if(x=$r(C|0,I|0,ce|0,de|0)|0,T=R()|0,p=u+(x<<3)|0,A=p,g=n[A>>2]|0,A=n[A+4>>2]|0,!((g|0)==0&(A|0)==0)){E=0,v=0;do{if((E|0)>(de|0)|(E|0)==(de|0)&v>>>0>ce>>>0)break r;if((g|0)==(C|0)&(A|0)==(I|0)){p=f,g=h;break n}p=pe(x|0,T|0,1,0)|0,x=pn(p|0,R()|0,ce|0,de|0)|0,T=R()|0,v=pe(v|0,E|0,1,0)|0,E=R()|0,p=u+(x<<3)|0,A=p,g=n[A>>2]|0,A=n[A+4>>2]|0}while(!((g|0)==0&(A|0)==0))}if((C|0)==0&(I|0)==0){p=f,g=h;break}hi(C,I,Ot)|0,u0(s,Pe,Ot)|0&&(v=pe(f|0,h|0,1,0)|0,h=R()|0,E=p,n[E>>2]=C,n[E+4>>2]=I,f=q+(f<<3)|0,n[f>>2]=C,n[f+4>>2]=I,f=v),p=f,g=h}while(!1);if(F=F+1|0,F>>>0>=7)break;f=p,h=g}if(U=pe(U|0,H|0,1,0)|0,H=R()|0,N=pe(N|0,W|0,1,0)|0,W=R()|0,h=ze,f=n[h>>2]|0,h=n[h+4>>2]|0,(W|0)<(h|0)|(W|0)==(h|0)&N>>>0<f>>>0)f=p,h=g;else break}if((h|0)>0|(h|0)==0&f>>>0>0){f=0,h=0;do W=X+(f<<3)|0,n[W>>2]=0,n[W+4>>2]=0,f=pe(f|0,h|0,1,0)|0,h=R()|0,W=ze,N=n[W+4>>2]|0;while((h|0)<(N|0)|((h|0)==(N|0)?f>>>0<(n[W>>2]|0)>>>0:0))}if(W=ze,n[W>>2]=p,n[W+4>>2]=g,(g|0)>0|(g|0)==0&p>>>0>0)F=c,U=oe,H=ye,N=ee,W=q,c=j,oe=l,ee=me,j=F,l=U,ye=ie,ie=H,me=N,q=X,X=W;else break t}be(me),be(ie),be(Pe),l=1;break e}else l=p;while(!1);be(Pe),be(c),be(l),l=0}while(!1);return Pe=l,L=Qe,Pe|0}}return be(Pe),Pe=l,L=Qe,Pe|0}function Db(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0;if(p=L,L=L+16|0,h=p,s=Zb(s,A,((A|0)<0)<<31>>31,h)|0,s|0)return h=s,L=p,h|0;if(f=NT(h,c)|0,c=h+4|0,(n[h>>2]|0)>0){A=0;do{if(l=n[c>>2]|0,u=l+(A<<4)+4|0,be(n[u>>2]|0),n[u>>2]=0,n[l+(A<<4)>>2]=0,u=l+(A<<4)+8|0,l=l+(A<<4)+12|0,(n[u>>2]|0)>0){s=0;do g=n[l>>2]|0,T=g+(s<<3)+4|0,be(n[T>>2]|0),n[T>>2]=0,n[g+(s<<3)>>2]=0,s=s+1|0;while((s|0)<(n[u>>2]|0))}be(n[l>>2]|0),n[l>>2]=0,n[u>>2]=0,A=A+1|0}while((A|0)<(n[h>>2]|0))}return be(n[c>>2]|0),n[c>>2]=0,n[h>>2]=0,T=f,L=p,T|0}function dr(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0;if(h=n[s>>2]|0,(h|0)<=0)return l=0,u=0,h=l<0,u=12.566370614359172-u,u=l+u,l=h?u:l,P[A>>3]=l,0;if(f=n[s+4>>2]|0,s=(h|0)!=1&1,p=+P[f>>3]*.5+.7853981633974483,l=+P[f+(s<<4)>>3]*.5+.7853981633974483,c=+tt(+p)*+tt(+l),u=+P[f+(s<<4)+8>>3]-+P[f+8>>3],c=+Vt(+(+tt(+u)*c),+(+De(+p)*+De(+l)+ +De(+u)*c))*-2,u=c+0,c=u-c,(h|0)==1)return p=u,l=c,h=p<0,l=12.566370614359172-l,l=p+l,p=h?l:p,P[A>>3]=p,0;for(s=1,l=u;x=s,s=s+1|0,E=(s|0)%(h|0)|0,T=+P[f+(x<<4)>>3]*.5+.7853981633974483,g=+P[f+(E<<4)>>3]*.5+.7853981633974483,u=+tt(+T)*+tt(+g),p=+P[f+(E<<4)+8>>3]-+P[f+(x<<4)+8>>3],c=+Vt(+(+tt(+p)*u),+(+De(+T)*+De(+g)+ +De(+p)*u))*-2-c,u=l+c,c=u-l-c,!((s|0)>=(h|0));)l=u;return E=u<0,T=12.566370614359172-c,T=u+T,T=E?T:u,P[A>>3]=T,0}function Bb(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0;return h=L,L=L+192|0,u=h+176|0,l=h,f=h+168|0,s=Dn(s,A,l)|0,s|0?(f=s,L=h,f|0):(n[f>>2]=n[l>>2],n[f+4>>2]=l+8,n[u>>2]=n[f>>2],n[u+4>>2]=n[f+4>>2],dr(u,c)|0,f=0,L=h,f|0)}function Ub(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0;return h=L,L=L+192|0,u=h+176|0,l=h,f=h+168|0,s=Dn(s,A,l)|0,s?(f=s,L=h,f|0):(n[f>>2]=n[l>>2],n[f+4>>2]=l+8,n[u>>2]=n[f>>2],n[u+4>>2]=n[f+4>>2],dr(u,c)|0,P[c>>3]=+P[c>>3]*40589732.49931477,f=0,L=h,f|0)}function Gb(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0;return h=L,L=L+192|0,u=h+176|0,l=h,f=h+168|0,s=Dn(s,A,l)|0,s?(f=s,L=h,f|0):(n[f>>2]=n[l>>2],n[f+4>>2]=l+8,n[u>>2]=n[f>>2],n[u+4>>2]=n[f+4>>2],dr(u,c)|0,P[c>>3]=+P[c>>3]*40589732.49931477*1e6,f=0,L=h,f|0)}function at(s){return s=s|0,s>>>0>121?(s=0,s|0):(s=n[7696+(s*28|0)+16>>2]|0,s|0)}function qa(s){return s=s|0,(s|0)==4|(s|0)==117|0}function Ju(s){return s=s|0,n[11120+((n[s>>2]|0)*216|0)+((n[s+4>>2]|0)*72|0)+((n[s+8>>2]|0)*24|0)+(n[s+12>>2]<<3)>>2]|0}function jb(s){return s=s|0,n[11120+((n[s>>2]|0)*216|0)+((n[s+4>>2]|0)*72|0)+((n[s+8>>2]|0)*24|0)+(n[s+12>>2]<<3)+4>>2]|0}function Vb(s,A){s=s|0,A=A|0,s=7696+(s*28|0)|0,n[A>>2]=n[s>>2],n[A+4>>2]=n[s+4>>2],n[A+8>>2]=n[s+8>>2],n[A+12>>2]=n[s+12>>2]}function zb(s,A){s=s|0,A=A|0;var c=0,u=0;if(A>>>0>20)return A=-1,A|0;do if((n[11120+(A*216|0)>>2]|0)!=(s|0))if((n[11120+(A*216|0)+8>>2]|0)!=(s|0))if((n[11120+(A*216|0)+16>>2]|0)!=(s|0))if((n[11120+(A*216|0)+24>>2]|0)!=(s|0))if((n[11120+(A*216|0)+32>>2]|0)!=(s|0))if((n[11120+(A*216|0)+40>>2]|0)!=(s|0))if((n[11120+(A*216|0)+48>>2]|0)!=(s|0))if((n[11120+(A*216|0)+56>>2]|0)!=(s|0))if((n[11120+(A*216|0)+64>>2]|0)!=(s|0))if((n[11120+(A*216|0)+72>>2]|0)!=(s|0))if((n[11120+(A*216|0)+80>>2]|0)!=(s|0))if((n[11120+(A*216|0)+88>>2]|0)!=(s|0))if((n[11120+(A*216|0)+96>>2]|0)!=(s|0))if((n[11120+(A*216|0)+104>>2]|0)!=(s|0))if((n[11120+(A*216|0)+112>>2]|0)!=(s|0))if((n[11120+(A*216|0)+120>>2]|0)!=(s|0))if((n[11120+(A*216|0)+128>>2]|0)!=(s|0))if((n[11120+(A*216|0)+136>>2]|0)==(s|0))s=2,c=1,u=2;else{if((n[11120+(A*216|0)+144>>2]|0)==(s|0)){s=0,c=2,u=0;break}if((n[11120+(A*216|0)+152>>2]|0)==(s|0)){s=0,c=2,u=1;break}if((n[11120+(A*216|0)+160>>2]|0)==(s|0)){s=0,c=2,u=2;break}if((n[11120+(A*216|0)+168>>2]|0)==(s|0)){s=1,c=2,u=0;break}if((n[11120+(A*216|0)+176>>2]|0)==(s|0)){s=1,c=2,u=1;break}if((n[11120+(A*216|0)+184>>2]|0)==(s|0)){s=1,c=2,u=2;break}if((n[11120+(A*216|0)+192>>2]|0)==(s|0)){s=2,c=2,u=0;break}if((n[11120+(A*216|0)+200>>2]|0)==(s|0)){s=2,c=2,u=1;break}if((n[11120+(A*216|0)+208>>2]|0)==(s|0)){s=2,c=2,u=2;break}else s=-1;return s|0}else s=2,c=1,u=1;else s=2,c=1,u=0;else s=1,c=1,u=2;else s=1,c=1,u=1;else s=1,c=1,u=0;else s=0,c=1,u=2;else s=0,c=1,u=1;else s=0,c=1,u=0;else s=2,c=0,u=2;else s=2,c=0,u=1;else s=2,c=0,u=0;else s=1,c=0,u=2;else s=1,c=0,u=1;else s=1,c=0,u=0;else s=0,c=0,u=2;else s=0,c=0,u=1;else s=0,c=0,u=0;while(!1);return A=n[11120+(A*216|0)+(c*72|0)+(s*24|0)+(u<<3)+4>>2]|0,A|0}function Zu(s,A){return s=s|0,A=A|0,(n[7696+(s*28|0)+20>>2]|0)==(A|0)?(A=1,A|0):(A=(n[7696+(s*28|0)+24>>2]|0)==(A|0),A|0)}function Wa(s,A){return s=s|0,A=A|0,n[848+(s*28|0)+(A<<2)>>2]|0}function Qa(s,A){return s=s|0,A=A|0,(n[848+(s*28|0)>>2]|0)==(A|0)?(A=0,A|0):(n[848+(s*28|0)+4>>2]|0)==(A|0)?(A=1,A|0):(n[848+(s*28|0)+8>>2]|0)==(A|0)?(A=2,A|0):(n[848+(s*28|0)+12>>2]|0)==(A|0)?(A=3,A|0):(n[848+(s*28|0)+16>>2]|0)==(A|0)?(A=4,A|0):(n[848+(s*28|0)+20>>2]|0)==(A|0)?(A=5,A|0):((n[848+(s*28|0)+24>>2]|0)==(A|0)?6:7)|0}function Hb(){return 122}function qb(s){s=s|0;var A=0,c=0,u=0;A=0;do he(A|0,0,45)|0,u=R()|134225919,c=s+(A<<3)|0,n[c>>2]=-1,n[c+4>>2]=u,A=A+1|0;while((A|0)!=122);return 0}function Wb(s){s=s|0;var A=0,c=0,u=0;return u=+P[s+16>>3],c=+P[s+24>>3],A=u-c,+(u<c?A+6.283185307179586:A)}function Qb(s){return s=s|0,+P[s+16>>3]<+P[s+24>>3]|0}function Kb(s){return s=s|0,+(+P[s>>3]-+P[s+8>>3])}function $u(s,A){s=s|0,A=A|0;var c=0,u=0,l=0;return c=+P[A>>3],!(c>=+P[s+8>>3])||!(c<=+P[s>>3])?(A=0,A|0):(u=+P[s+16>>3],c=+P[s+24>>3],l=+P[A+8>>3],A=l>=c,s=l<=u&1,u<c?A&&(s=1):A||(s=0),A=(s|0)!=0,A|0)}function Ka(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0;return+P[s>>3]<+P[A+8>>3]||+P[s+8>>3]>+P[A>>3]?(u=0,u|0):(f=+P[s+16>>3],c=s+24|0,x=+P[c>>3],h=f<x,u=A+16|0,T=+P[u>>3],l=A+24|0,g=+P[l>>3],p=T<g,A=x-T<g-f,s=h?p|A?1:2:0,A=p?h?1:A?2:1:0,f=+sr(f,s),f<+sr(+P[l>>3],A)||(x=+sr(+P[c>>3],s),x>+sr(+P[u>>3],A))?(p=0,p|0):(p=1,p|0))}function Xb(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0;f=+P[s+16>>3],g=+P[s+24>>3],s=f<g,p=+P[A+16>>3],h=+P[A+24>>3],l=p<h,A=g-p<h-f,n[c>>2]=s?l|A?1:2:0,n[u>>2]=l?s?1:A?2:1:0}function ef(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0;return+P[s>>3]<+P[A>>3]||+P[s+8>>3]>+P[A+8>>3]?(u=0,u|0):(u=s+16|0,g=+P[u>>3],f=+P[s+24>>3],h=g<f,c=A+16|0,x=+P[c>>3],l=A+24|0,T=+P[l>>3],p=x<T,A=f-x<T-g,s=h?p|A?1:2:0,A=p?h?1:A?2:1:0,f=+sr(f,s),f<=+sr(+P[l>>3],A)?(x=+sr(+P[u>>3],s),p=x>=+sr(+P[c>>3],A),p|0):(p=0,p|0))}function tf(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0;l=L,L=L+176|0,u=l,n[u>>2]=4,p=+P[A>>3],P[u+8>>3]=p,f=+P[A+16>>3],P[u+16>>3]=f,P[u+24>>3]=p,p=+P[A+24>>3],P[u+32>>3]=p,h=+P[A+8>>3],P[u+40>>3]=h,P[u+48>>3]=p,P[u+56>>3]=h,P[u+64>>3]=f,A=u+72|0,c=A+96|0;do n[A>>2]=0,A=A+4|0;while((A|0)<(c|0));Mr(s|0,u|0,168)|0,L=l}function rf(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0;I=L,L=L+288|0,x=I+264|0,E=I+96|0,T=I,p=T,g=p+96|0;do n[p>>2]=0,p=p+4|0;while((p|0)<(g|0));return A=o0(A,T)|0,A|0?(C=A,L=I,C|0):(g=T,T=n[g>>2]|0,g=n[g+4>>2]|0,hi(T,g,x)|0,Dn(T,g,E)|0,h=+_o(x,E+8|0),P[x>>3]=+P[s>>3],g=x+8|0,P[g>>3]=+P[s+16>>3],P[E>>3]=+P[s+8>>3],T=E+8|0,P[T>>3]=+P[s+24>>3],l=+_o(x,E),U=+P[g>>3]-+P[T>>3],f=+Ct(+U),F=+P[x>>3]-+P[E>>3],u=+Ct(+F),!(U==0|F==0)&&(U=+Lf(+f,+u),U=+li(+(l*l/+Cs(+(U/+Cs(+f,+u)),3)/(h*(h*2.59807621135)*.8))),P[st>>3]=U,v=~~U>>>0,C=+Ct(U)>=1?U>0?~~+Ha(+Lt(U/4294967296),4294967295)>>>0:~~+li((U-+(~~U>>>0))/4294967296)>>>0:0,(n[st+4>>2]&2146435072|0)!=2146435072)?(E=(v|0)==0&(C|0)==0,A=c,n[A>>2]=E?1:v,n[A+4>>2]=E?0:C,A=0):A=1,C=A,L=I,C|0)}function Yb(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,x=0;T=L,L=L+288|0,h=T+264|0,p=T+96|0,g=T,l=g,f=l+96|0;do n[l>>2]=0,l=l+4|0;while((l|0)<(f|0));return c=o0(c,g)|0,c|0?(u=c,L=T,u|0):(c=g,l=n[c>>2]|0,c=n[c+4>>2]|0,hi(l,c,h)|0,Dn(l,c,p)|0,x=+_o(h,p+8|0),x=+li(+(+_o(s,A)/(x*2))),P[st>>3]=x,c=~~x>>>0,l=+Ct(x)>=1?x>0?~~+Ha(+Lt(x/4294967296),4294967295)>>>0:~~+li((x-+(~~x>>>0))/4294967296)>>>0:0,(n[st+4>>2]&2146435072|0)==2146435072?(u=1,L=T,u|0):(g=(c|0)==0&(l|0)==0,n[u>>2]=g?1:c,n[u+4>>2]=g?0:l,u=0,L=T,u|0))}function Jb(s,A){s=s|0,A=+A;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0;f=s+16|0,h=+P[f>>3],c=s+24|0,l=+P[c>>3],u=h-l,u=h<l?u+6.283185307179586:u,T=+P[s>>3],p=s+8|0,g=+P[p>>3],x=T-g,u=(u*A-u)*.5,A=(x*A-x)*.5,T=T+A,P[s>>3]=T>1.5707963267948966?1.5707963267948966:T,A=g-A,P[p>>3]=A<-1.5707963267948966?-1.5707963267948966:A,A=h+u,A=A>3.141592653589793?A+-6.283185307179586:A,P[f>>3]=A<-3.141592653589793?A+6.283185307179586:A,A=l-u,A=A>3.141592653589793?A+-6.283185307179586:A,P[c>>3]=A<-3.141592653589793?A+6.283185307179586:A}function Zb(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0,H=0,N=0,W=0,j=0,ee=0,oe=0,X=0,q=0,me=0,ie=0,ye=0,ce=0,de=0;if(de=L,L=L+224|0,me=de,ee=de+48|0,g=(c|0)>0|(c|0)==0&A>>>0>0,g&(c>>>0>0|(c|0)==0&A>>>0>17895697))return ce=14,L=de,ce|0;if((c|0)<0)return ce=2,L=de,ce|0;if((A|0)==0&(c|0)==0)return n[u>>2]=0,n[u+4>>2]=0,ce=0,L=de,ce|0;for(l=s,l=Za(n[l>>2]|0,n[l+4>>2]|0)|0,h=0,p=0;;){if(f=s+(h<<3)|0,ce=f,!(Ts(n[ce>>2]|0,n[ce+4>>2]|0)|0)){l=5,ie=159;break}if(ce=f,ce=(Za(n[ce>>2]|0,n[ce+4>>2]|0)|0)==(l|0),h=pe(h|0,p|0,1,0)|0,p=R()|0,!ce){l=12,ie=159;break}if(!((p|0)<(c|0)|(p|0)==(c|0)&h>>>0<A>>>0)){ie=8;break}}if((ie|0)==8){do if((c|0)>0|(c|0)==0&A>>>0>1){if(l=A<<3,h=ct(l)|0,!h)return ce=13,L=de,ce|0;for(Mr(h|0,s|0,l|0)|0,ws(h,A,8,1),l=1,f=0;ye=h+(l<<3)|0,ce=h+(l+-1<<3)|0,ce=(n[ye>>2]|0)==(n[ce>>2]|0)?(n[ye+4>>2]|0)==(n[ce+4>>2]|0):0,l=pe(l|0,f|0,1,0)|0,f=R()|0,!ce;)if(!((f|0)<(c|0)|(f|0)==(c|0)&l>>>0<A>>>0)){ie=14;break}if((ie|0)==14){be(h);break}return be(h),ce=10,L=de,ce|0}while(!1);if(l=lt(A|0,c|0,6,0)|0,f=R()|0,g){h=0,p=0;do ce=s+(p<<3)|0,ce=((nt(n[ce>>2]|0,n[ce+4>>2]|0)|0)!=0)<<31>>31,l=pe(l|0,f|0,ce|0,((ce|0)<0)<<31>>31|0)|0,f=R()|0,p=pe(p|0,h|0,1,0)|0,h=R()|0;while((h|0)<(c|0)|(h|0)==(c|0)&p>>>0<A>>>0);j=l,W=f}else j=l,W=f;if(H=lt(j|0,W|0,10,0)|0,N=R()|0,ye=ct(j<<5)|0,!ye)return ce=13,L=de,ce|0;if(ce=zt(H,4)|0,!ce)return be(ye),ce=13,L=de,ce|0;e:do if(g){for(q=s,Xa(n[q>>2]|0,n[q+4>>2]|0,me)|0,C=ye,I=0,F=0,l=0,U=0;;){g=me,g=(n[g>>2]|0)==0&(n[g+4>>2]|0)==0,f=g?26990:26995,h=g?5:6,p=0,g=me+((g&1)<<3)|0,T=pe(h|0,p|0,-1,-1)|0,x=R()|0,E=0,v=0;do X=g+(E<<3)|0,oe=n[X+4>>2]|0,q=C+(E<<5)|0,n[q>>2]=n[X>>2],n[q+4>>2]=oe,ne[C+(E<<5)+9>>0]=0,ne[C+(E<<5)+8>>0]=0,n[C+(E<<5)+20>>2]=C,q=C+(E<<5)+24|0,n[q>>2]=1,n[q+4>>2]=0,q=ne[f+E>>0]|0,oe=pe(T|0,x|0,E|0,v|0)|0,oe=$r(oe|0,R()|0,h|0,p|0)|0,R()|0,oe=ne[f+oe>>0]|0,E=pe(E|0,v|0,1,0)|0,v=R()|0,X=ne[f+((E|0)==(h|0)&(v|0)==(p|0)?0:E)>>0]|0,q=q&255,n[C+(q<<5)+16>>2]=C+((oe&255)<<5),n[C+(q<<5)+12>>2]=C+((X&255)<<5);while(v>>>0<p>>>0|(v|0)==(p|0)&E>>>0<h>>>0);if(I=pe(I|0,F|0,1,0)|0,F=R()|0,l=pe(h|0,p|0,l|0,U|0)|0,U=R()|0,!((F|0)<(c|0)|(F|0)==(c|0)&I>>>0<A>>>0))break e;q=s+(I<<3)|0,Xa(n[q>>2]|0,n[q+4>>2]|0,me)|0||(C=ye+(l<<5)|0)}Ve(27634,26956,108,26975)}while(!1);if((W|0)>0|(W|0)==0&j>>>0>0){p=0,g=0;do{if(f=ye+(p<<5)|0,h=n[f>>2]|0,f=n[f+4>>2]|0,l=se(h|0,f|0,30)|0,f=lt(l^h|0,(R()|0)^f|0,484763065,-1084733587)|0,h=R()|0,l=se(f|0,h|0,27)|0,h=lt(l^f|0,(R()|0)^h|0,321982955,-1798288965)|0,f=R()|0,l=se(h|0,f|0,31)|0,f=$r(l^h|0,(R()|0)^f|0,H|0,N|0)|0,h=R()|0,l=ce+(f<<2)|0,n[l>>2]|0)do l=pe(f|0,h|0,1,0)|0,f=pn(l|0,R()|0,H|0,N|0)|0,h=R()|0,l=ce+(f<<2)|0;while((n[l>>2]|0)!=0);n[l>>2]=ye+(p<<5),p=pe(p|0,g|0,1,0)|0,g=R()|0}while((g|0)<(W|0)|(g|0)==(W|0)&p>>>0<j>>>0);E=0,v=0;do{if(p=ye+(E<<5)|0,g=ye+(E<<5)+9|0,!(ne[g>>0]|0)){if(q=p,of(n[q>>2]|0,n[q+4>>2]|0,me)|0){ie=39;break}x=me,T=n[x>>2]|0,x=n[x+4>>2]|0,f=se(T|0,x|0,30)|0,f=lt(f^T|0,(R()|0)^x|0,484763065,-1084733587)|0,h=R()|0,l=se(f|0,h|0,27)|0,h=lt(l^f|0,(R()|0)^h|0,321982955,-1798288965)|0,f=R()|0,l=se(h|0,f|0,31)|0,f=$r(l^h|0,(R()|0)^f|0,H|0,N|0)|0,h=R()|0,l=n[ce+(f<<2)>>2]|0;e:do if(l|0){for(;q=l,!((n[q>>2]|0)==(T|0)&&(n[q+4>>2]|0)==(x|0));)if(l=pe(f|0,h|0,1,0)|0,f=pn(l|0,R()|0,H|0,N|0)|0,h=R()|0,l=n[ce+(f<<2)>>2]|0,!l)break e;ne[g>>0]=1,ne[l+9>>0]=1,f=l+16|0,q=ye+(E<<5)+12|0,n[(n[q>>2]|0)+16>>2]=n[f>>2],c=l+12|0,X=n[ye+(E<<5)+16>>2]|0,n[X+12>>2]=n[c>>2],n[(n[c>>2]|0)+16>>2]=X,n[(n[f>>2]|0)+12>>2]=n[q>>2],f=bs(p)|0,q=bs(l)|0,l=f+24|0,c=n[l+4>>2]|0,X=q+24|0,oe=n[X+4>>2]|0,X=(c|0)<(oe|0)|((c|0)==(oe|0)?(n[l>>2]|0)>>>0<(n[X>>2]|0)>>>0:0),l=X?f:q,f=X?q:f,(f|0)!=(l|0)&&(oe=l+24|0,q=f+24|0,X=q,oe=pe(n[X>>2]|0,n[X+4>>2]|0,n[oe>>2]|0,n[oe+4>>2]|0)|0,X=R()|0,n[q>>2]=oe,n[q+4>>2]=X,n[l+20>>2]=f)}while(!1)}E=pe(E|0,v|0,1,0)|0,v=R()|0}while((v|0)<(W|0)|(v|0)==(W|0)&E>>>0<j>>>0);(ie|0)==39&&Ve(27634,26956,258,27001),l=0,f=0;do ne[ye+(l<<5)+8>>0]=0,l=pe(l|0,f|0,1,0)|0,f=R()|0;while((f|0)<(W|0)|(f|0)==(W|0)&l>>>0<j>>>0);for(T=0,h=0,g=0,x=0;;){if(l=ye+(T<<5)|0,(ne[ye+(T<<5)+8>>0]|0)==0&&(ne[ye+(T<<5)+9>>0]|0)==0){p=l,f=n[p>>2]|0,p=n[p+4>>2]|0;do ne[l+8>>0]=1,l=n[l+12>>2]|0,q=l;while(!((n[q>>2]|0)==(f|0)&&(n[q+4>>2]|0)==(p|0)));h=pe(h|0,g|0,1,0)|0,p=R()|0}else p=g;if(T=pe(T|0,x|0,1,0)|0,x=R()|0,(x|0)<(W|0)|(x|0)==(W|0)&T>>>0<j>>>0)g=p;else break}l=0,f=0;do ne[ye+(l<<5)+8>>0]=0,l=pe(l|0,f|0,1,0)|0,f=R()|0;while((f|0)<(W|0)|(f|0)==(W|0)&l>>>0<j>>>0);X=h,oe=p,l=1}else X=0,oe=0,l=0;q=ct(X*24|0)|0;e:do if(q|0){t:do if(l){s=0,H=0,c=0,A=0;r:for(;;){if(l=ye+(s<<5)|0,(ne[ye+(s<<5)+8>>0]|0)==0&&(ne[ye+(s<<5)+9>>0]|0)==0){U=l,F=n[U>>2]|0,U=n[U+4>>2]|0,f=0,h=0;do f=pe(f|0,h|0,2,0)|0,h=R()|0,l=n[l+12>>2]|0,N=l;while(!((n[N>>2]|0)==(F|0)&&(n[N+4>>2]|0)==(U|0)));if(I=ct(f<<4)|0,!I)break;f=F,h=U,C=0,v=0,p=0,g=0;do{if(bo(f,h,ee)|0){ie=69;break r}if(N=n[ee>>2]|0,x=N+-1|0,E=((x|0)<0)<<31>>31,(N|0)>1){h=p,T=0,f=g,p=0;do N=I+(h<<4)|0,g=ee+8+(T<<4)|0,n[N>>2]=n[g>>2],n[N+4>>2]=n[g+4>>2],n[N+8>>2]=n[g+8>>2],n[N+12>>2]=n[g+12>>2],h=pe(h|0,f|0,1,0)|0,f=R()|0,T=pe(T|0,p|0,1,0)|0,p=R()|0;while((p|0)<(E|0)|(p|0)==(E|0)&T>>>0<x>>>0);p=h,g=f}C=pe(C|0,v|0,x|0,E|0)|0,v=R()|0,ne[l+8>>0]=1,l=n[l+12>>2]|0,h=l,f=n[h>>2]|0,h=n[h+4>>2]|0}while(!((f|0)==(F|0)&(h|0)==(U|0)));if(f=$T(I,C<<4)|0,!f){ie=75;break}U=bs(l)|0,N=n[U+4>>2]|0,l=q+(c*24|0)|0,n[l>>2]=n[U>>2],n[l+4>>2]=N,l=q+(c*24|0)+16|0,n[l>>2]=C,n[q+(c*24|0)+20>>2]=f,n[me>>2]=n[l>>2],n[me+4>>2]=n[l+4>>2],dr(me,q+(c*24|0)+8|0)|0,f=pe(c|0,H|0,1,0)|0,l=R()|0}else f=c,l=H;if(s=pe(s|0,A|0,1,0)|0,A=R()|0,(A|0)<(W|0)|(A|0)==(W|0)&s>>>0<j>>>0)H=l,c=f;else break t}if((ie|0)==69?Ve(27634,26956,351,27016):(ie|0)==75&&be(I),(H|0)>0|(H|0)==0&c>>>0>0)for(p=0,g=0,l=c,h=H;f=n[q+(p*24|0)+20>>2]|0,f?(be(f),f=H,l=c):f=h,p=pe(p|0,g|0,1,0)|0,g=R()|0,(g|0)<(f|0)|(g|0)==(f|0)&p>>>0<l>>>0;)h=f;be(q);break e}while(!1);ws(q,X,24,2);t:do if((X|0)==0&(oe|0)==0){if(N=ct(192)|0,N|0){if(n[N+16>>2]=0,n[N+20>>2]=0,v=N+8|0,n[v>>2]=3,l=ct(48)|0,C=N+12|0,n[C>>2]=l,l|0){n[l>>2]=n[3860],n[l+4>>2]=n[3861],n[l+8>>2]=n[3862],n[l+12>>2]=n[3863],E=l+16|0,n[E>>2]=n[3864],n[E+4>>2]=n[3865],n[E+8>>2]=n[3866],n[E+12>>2]=n[3867],E=l+32|0,n[E>>2]=n[3868],n[E+4>>2]=n[3869],n[E+8>>2]=n[3870],n[E+12>>2]=n[3871],n[me>>2]=n[v>>2],n[me+4>>2]=n[v+4>>2],dr(me,N)|0,n[N+40>>2]=0,n[N+44>>2]=0,E=N+32|0,n[E>>2]=3,l=ct(48)|0,I=N+36|0,n[I>>2]=l;do if(!l)p=0,g=1;else{if(n[l>>2]=n[3872],n[l+4>>2]=n[3873],n[l+8>>2]=n[3874],n[l+12>>2]=n[3875],x=l+16|0,n[x>>2]=n[3876],n[x+4>>2]=n[3877],n[x+8>>2]=n[3878],n[x+12>>2]=n[3879],x=l+32|0,n[x>>2]=n[3880],n[x+4>>2]=n[3881],n[x+8>>2]=n[3882],n[x+12>>2]=n[3883],n[me>>2]=n[E>>2],n[me+4>>2]=n[E+4>>2],dr(me,N+24|0)|0,n[N+64>>2]=0,n[N+68>>2]=0,x=N+56|0,n[x>>2]=3,l=ct(48)|0,F=N+60|0,n[F>>2]=l,!l){p=0,g=2;break}if(n[l>>2]=n[3884],n[l+4>>2]=n[3885],n[l+8>>2]=n[3886],n[l+12>>2]=n[3887],T=l+16|0,n[T>>2]=n[3888],n[T+4>>2]=n[3889],n[T+8>>2]=n[3890],n[T+12>>2]=n[3891],T=l+32|0,n[T>>2]=n[3892],n[T+4>>2]=n[3893],n[T+8>>2]=n[3894],n[T+12>>2]=n[3895],n[me>>2]=n[x>>2],n[me+4>>2]=n[x+4>>2],dr(me,N+48|0)|0,n[N+88>>2]=0,n[N+92>>2]=0,T=N+80|0,n[T>>2]=3,l=ct(48)|0,U=N+84|0,n[U>>2]=l,!l){p=0,g=3;break}if(n[l>>2]=n[3896],n[l+4>>2]=n[3897],n[l+8>>2]=n[3898],n[l+12>>2]=n[3899],g=l+16|0,n[g>>2]=n[3900],n[g+4>>2]=n[3901],n[g+8>>2]=n[3902],n[g+12>>2]=n[3903],g=l+32|0,n[g>>2]=n[3904],n[g+4>>2]=n[3905],n[g+8>>2]=n[3906],n[g+12>>2]=n[3907],n[me>>2]=n[T>>2],n[me+4>>2]=n[T+4>>2],dr(me,N+72|0)|0,n[N+112>>2]=0,n[N+116>>2]=0,g=N+104|0,n[g>>2]=3,l=ct(48)|0,s=N+108|0,n[s>>2]=l,!l){p=0,g=4;break}if(n[l>>2]=n[3908],n[l+4>>2]=n[3909],n[l+8>>2]=n[3910],n[l+12>>2]=n[3911],p=l+16|0,n[p>>2]=n[3912],n[p+4>>2]=n[3913],n[p+8>>2]=n[3914],n[p+12>>2]=n[3915],p=l+32|0,n[p>>2]=n[3916],n[p+4>>2]=n[3917],n[p+8>>2]=n[3918],n[p+12>>2]=n[3919],n[me>>2]=n[g>>2],n[me+4>>2]=n[g+4>>2],dr(me,N+96|0)|0,n[N+136>>2]=0,n[N+140>>2]=0,p=N+128|0,n[p>>2]=3,l=ct(48)|0,A=N+132|0,n[A>>2]=l,!l){p=0,g=5;break}if(n[l>>2]=n[3920],n[l+4>>2]=n[3921],n[l+8>>2]=n[3922],n[l+12>>2]=n[3923],h=l+16|0,n[h>>2]=n[3924],n[h+4>>2]=n[3925],n[h+8>>2]=n[3926],n[h+12>>2]=n[3927],h=l+32|0,n[h>>2]=n[3928],n[h+4>>2]=n[3929],n[h+8>>2]=n[3930],n[h+12>>2]=n[3931],n[me>>2]=n[p>>2],n[me+4>>2]=n[p+4>>2],dr(me,N+120|0)|0,n[N+160>>2]=0,n[N+164>>2]=0,h=N+152|0,n[h>>2]=3,l=ct(48)|0,c=N+156|0,n[c>>2]=l,!l){p=0,g=6;break}if(n[l>>2]=n[3932],n[l+4>>2]=n[3933],n[l+8>>2]=n[3934],n[l+12>>2]=n[3935],f=l+16|0,n[f>>2]=n[3936],n[f+4>>2]=n[3937],n[f+8>>2]=n[3938],n[f+12>>2]=n[3939],f=l+32|0,n[f>>2]=n[3940],n[f+4>>2]=n[3941],n[f+8>>2]=n[3942],n[f+12>>2]=n[3943],n[me>>2]=n[h>>2],n[me+4>>2]=n[h+4>>2],dr(me,N+144|0)|0,n[N+184>>2]=0,n[N+188>>2]=0,f=N+176|0,n[f>>2]=3,l=ct(48)|0,H=N+180|0,n[H>>2]=l,!l){p=0,g=7;break}if(n[l>>2]=n[3944],n[l+4>>2]=n[3945],n[l+8>>2]=n[3946],n[l+12>>2]=n[3947],ee=l+16|0,n[ee>>2]=n[3948],n[ee+4>>2]=n[3949],n[ee+8>>2]=n[3950],n[ee+12>>2]=n[3951],l=l+32|0,n[l>>2]=n[3952],n[l+4>>2]=n[3953],n[l+8>>2]=n[3954],n[l+12>>2]=n[3955],n[me>>2]=n[f>>2],n[me+4>>2]=n[f+4>>2],dr(me,N+168|0)|0,ws(N,8,24,3),l=ct(128)|0,n[u+4>>2]=l,l|0){n[u>>2]=8,n[l>>2]=n[v>>2],n[l+4>>2]=n[v+4>>2],n[l+8>>2]=n[v+8>>2],n[l+12>>2]=n[v+12>>2],ie=l+16|0,n[ie>>2]=n[E>>2],n[ie+4>>2]=n[E+4>>2],n[ie+8>>2]=n[E+8>>2],n[ie+12>>2]=n[E+12>>2],ie=l+32|0,n[ie>>2]=n[x>>2],n[ie+4>>2]=n[x+4>>2],n[ie+8>>2]=n[x+8>>2],n[ie+12>>2]=n[x+12>>2],ie=l+48|0,n[ie>>2]=n[T>>2],n[ie+4>>2]=n[T+4>>2],n[ie+8>>2]=n[T+8>>2],n[ie+12>>2]=n[T+12>>2],ie=l+64|0,n[ie>>2]=n[g>>2],n[ie+4>>2]=n[g+4>>2],n[ie+8>>2]=n[g+8>>2],n[ie+12>>2]=n[g+12>>2],ie=l+80|0,n[ie>>2]=n[p>>2],n[ie+4>>2]=n[p+4>>2],n[ie+8>>2]=n[p+8>>2],n[ie+12>>2]=n[p+12>>2],ie=l+96|0,n[ie>>2]=n[h>>2],n[ie+4>>2]=n[h+4>>2],n[ie+8>>2]=n[h+8>>2],n[ie+12>>2]=n[h+12>>2],ie=l+112|0,n[ie>>2]=n[f>>2],n[ie+4>>2]=n[f+4>>2],n[ie+8>>2]=n[f+8>>2],n[ie+12>>2]=n[f+12>>2],be(N),ie=158;break t}l=n[C>>2]|0,l|0&&be(l),l=n[I>>2]|0,l|0&&be(l),l=n[F>>2]|0,l|0&&be(l),l=n[U>>2]|0,l|0&&be(l),l=n[s>>2]|0,l|0&&be(l),l=n[A>>2]|0,l|0&&be(l),l=n[c>>2]|0,l|0&&be(l),l=n[H>>2]|0,l|0&&be(l),be(N);break t}while(!1);l=0,h=0;do f=n[N+(l*24|0)+12>>2]|0,f|0&&be(f),l=pe(l|0,h|0,1,0)|0,h=R()|0;while(h>>>0<p>>>0|(h|0)==(p|0)&l>>>0<g>>>0)}be(N),ie=152}}else{if((oe|0)>0|(oe|0)==0&X>>>0>0){h=0,p=0,g=0,f=0,l=0,T=0;do ee=q+(h*24|0)|0,me=p,p=n[ee>>2]|0,ie=g,g=n[ee+4>>2]|0,f=pe(f|0,l|0,((p|0)!=(me|0)|(g|0)!=(ie|0))&1|0,0)|0,l=R()|0,h=pe(h|0,T|0,1,0)|0,T=R()|0;while((T|0)<(oe|0)|(T|0)==(oe|0)&h>>>0<X>>>0);U=f,F=l}else U=0,F=0;if(s=ct(U*24|0)|0,s){r:do if((oe|0)>=0){for(v=0,C=0,f=0,h=0,I=0,p=0;;){if(!((v|0)==(X|0)&(C|0)==(oe|0))&&(me=q+(f*24|0)|0,ie=q+(v*24|0)|0,(n[me>>2]|0)==(n[ie>>2]|0)?(n[me+4>>2]|0)==(n[ie+4>>2]|0):0))l=I;else{if(x=q+(f*24|0)|0,ie=Mt(v|0,C|0,f|0,h|0)|0,me=R()|0,E=pe(ie|0,me|0,-1,-1)|0,h=R()|0,(me|0)>0|(me|0)==0&ie>>>0>1){if(l=ct(E<<3)|0,!l)break;g=0,T=0;do ie=g,g=pe(g|0,T|0,1,0)|0,T=R()|0,ee=x+(g*24|0)+16|0,me=n[ee+4>>2]|0,ie=l+(ie<<3)|0,n[ie>>2]=n[ee>>2],n[ie+4>>2]=me;while((T|0)<(h|0)|(T|0)==(h|0)&g>>>0<E>>>0)}else l=0;me=q+(f*24|0)+16|0,ie=n[me+4>>2]|0,h=s+(p*24|0)+8|0,n[h>>2]=n[me>>2],n[h+4>>2]=ie,n[s+(p*24|0)+16>>2]=E,n[s+(p*24|0)+20>>2]=l,P[s+(p*24|0)>>3]=+P[q+(f*24|0)+8>>3],p=pe(p|0,I|0,1,0)|0,f=v,h=C,l=R()|0}if(ie=v,v=pe(v|0,C|0,1,0)|0,me=C,C=R()|0,(me|0)<(oe|0)|(me|0)==(oe|0)&ie>>>0<X>>>0)I=l;else break r}if((I|0)>0|(I|0)==0&p>>>0>0){l=0,h=0;do f=n[s+(l*24|0)+20>>2]|0,f|0&&be(f),l=pe(l|0,h|0,1,0)|0,h=R()|0;while((h|0)<(I|0)|(h|0)==(I|0)&l>>>0<p>>>0)}be(s),ie=152;break t}while(!1);if(ws(s,U,24,3),l=ct(U<<4)|0,h=u+4|0,n[h>>2]=l,l){n[u>>2]=U;do if((F|0)>0|(F|0)==0&U>>>0>0){if(u=s+8|0,n[l>>2]=n[u>>2],n[l+4>>2]=n[u+4>>2],n[l+8>>2]=n[u+8>>2],n[l+12>>2]=n[u+12>>2],(U|0)==1&(F|0)==0||(u=l+16|0,ie=s+32|0,n[u>>2]=n[ie>>2],n[u+4>>2]=n[ie+4>>2],n[u+8>>2]=n[ie+8>>2],n[u+12>>2]=n[ie+12>>2],!((F|0)>0|(F|0)==0&U>>>0>2)))break;l=2,f=0;do u=(n[h>>2]|0)+(l<<4)|0,ie=s+(l*24|0)+8|0,n[u>>2]=n[ie>>2],n[u+4>>2]=n[ie+4>>2],n[u+8>>2]=n[ie+8>>2],n[u+12>>2]=n[ie+12>>2],l=pe(l|0,f|0,1,0)|0,f=R()|0;while((f|0)<(F|0)|(f|0)==(F|0)&l>>>0<U>>>0)}while(!1);be(s),ie=158;break}else{if((F|0)>0|(F|0)==0&U>>>0>0){l=0,h=0;do f=n[s+(l*24|0)+20>>2]|0,f|0&&be(f),l=pe(l|0,h|0,1,0)|0,h=R()|0;while((h|0)<(F|0)|(h|0)==(F|0)&l>>>0<U>>>0)}be(s),ie=152;break}}else ie=152}while(!1);if((ie|0)==158)return be(ye),be(ce),be(q),ce=0,L=de,ce|0;if((ie|0)==152&&(oe|0)>0|(oe|0)==0&X>>>0>0)for(p=0,g=0,l=X,h=oe;f=n[q+(p*24|0)+20>>2]|0,f?(be(f),f=oe,l=X):f=h,p=pe(p|0,g|0,1,0)|0,g=R()|0,(g|0)<(f|0)|(g|0)==(f|0)&p>>>0<l>>>0;)h=f;return be(q),be(ye),be(ce),ce=13,L=de,ce|0}while(!1);return be(ye),be(ce),ce=13,L=de,ce|0}else if((ie|0)==159)return L=de,l|0;return 0}function $b(s,A){s=s|0,A=A|0;var c=0,u=0;return u=s,s=n[u>>2]|0,u=n[u+4>>2]|0,c=A,A=n[c>>2]|0,c=n[c+4>>2]|0,(u>>>0<c>>>0|(u|0)==(c|0)&s>>>0<A>>>0?-1:(u>>>0>c>>>0|(u|0)==(c|0)&s>>>0>A>>>0)&1)|0}function bs(s){s=s|0;var A=0,c=0;return A=s+20|0,c=n[A>>2]|0,(c|0)==(s|0)?s|0:(c=bs(c)|0,n[A>>2]=c,c|0)}function eT(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0;return p=s,h=n[p>>2]|0,p=n[p+4>>2]|0,f=A,l=n[f>>2]|0,f=n[f+4>>2]|0,p>>>0<f>>>0|(p|0)==(f|0)&h>>>0<l>>>0?(A=-1,A|0):p>>>0>f>>>0|(p|0)==(f|0)&h>>>0>l>>>0?(A=1,A|0):(u=+P[s+8>>3],c=+P[A+8>>3],u<c?(A=-1,A|0):(A=u>c&1,A|0))}function tT(s,A){s=s|0,A=A|0;var c=0,u=0;return u=+P[s>>3],c=+P[A>>3],(u>c?-1:u<c&1)|0}function rT(s,A,c,u,l){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,x=0,E=0;if(E=L,L=L+64|0,x=E,p=E+56|0,!(!0&(A&2013265920|0)==134217728&(!0&(u&2013265920|0)==134217728)))return l=5,L=E,l|0;if((s|0)==(c|0)&(A|0)==(u|0))return n[l>>2]=0,l=0,L=E,l|0;if(h=se(s|0,A|0,52)|0,R()|0,h=h&15,T=se(c|0,u|0,52)|0,R()|0,(h|0)!=(T&15|0))return l=12,L=E,l|0;if(f=h+-1|0,h>>>0>1){e0(s,A,f,x)|0,e0(c,u,f,p)|0,T=x,g=n[T>>2]|0,T=n[T+4>>2]|0;e:do if((g|0)==(n[p>>2]|0)&&(T|0)==(n[p+4>>2]|0)){h=(h^15)*3|0,f=se(s|0,A|0,h|0)|0,R()|0,f=f&7,h=se(c|0,u|0,h|0)|0,R()|0,h=h&7;do if((f|0)==0|(h|0)==0)n[l>>2]=1,f=0;else if((f|0)==7)f=5;else{if((f|0)==1|(h|0)==1&&nt(g,T)|0){f=5;break}if((n[15824+(f<<2)>>2]|0)!=(h|0)&&(n[15856+(f<<2)>>2]|0)!=(h|0))break e;n[l>>2]=1,f=0}while(!1);return l=f,L=E,l|0}while(!1)}f=x,h=f+56|0;do n[f>>2]=0,f=f+4|0;while((f|0)<(h|0));return Wu(s,A,1,x)|0,A=x,!((n[A>>2]|0)==(c|0)&&(n[A+4>>2]|0)==(u|0))&&(A=x+8|0,!((n[A>>2]|0)==(c|0)&&(n[A+4>>2]|0)==(u|0)))&&(A=x+16|0,!((n[A>>2]|0)==(c|0)&&(n[A+4>>2]|0)==(u|0)))&&(A=x+24|0,!((n[A>>2]|0)==(c|0)&&(n[A+4>>2]|0)==(u|0)))&&(A=x+32|0,!((n[A>>2]|0)==(c|0)&&(n[A+4>>2]|0)==(u|0)))&&(A=x+40|0,!((n[A>>2]|0)==(c|0)&&(n[A+4>>2]|0)==(u|0)))?(f=x+48|0,f=((n[f>>2]|0)==(c|0)?(n[f+4>>2]|0)==(u|0):0)&1):f=1,n[l>>2]=f,l=0,L=E,l|0}function nT(s,A,c,u,l){return s=s|0,A=A|0,c=c|0,u=u|0,l=l|0,c=gs(s,A,c,u)|0,(c|0)==7?(l=11,l|0):(u=he(c|0,0,56)|0,A=A&-2130706433|(R()|0)|268435456,n[l>>2]=s|u,n[l+4>>2]=A,l=0,l|0)}function iT(s,A,c){return s=s|0,A=A|0,c=c|0,!0&(A&2013265920|0)==268435456?(n[c>>2]=s,n[c+4>>2]=A&-2130706433|134217728,c=0,c|0):(c=6,c|0)}function oT(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0;return l=L,L=L+16|0,u=l,n[u>>2]=0,!0&(A&2013265920|0)==268435456?(f=se(s|0,A|0,56)|0,R()|0,u=It(s,A&-2130706433|134217728,f&7,u,c)|0,L=l,u|0):(u=6,L=l,u|0)}function nf(s,A){s=s|0,A=A|0;var c=0;switch(c=se(s|0,A|0,56)|0,R()|0,c&7){case 0:case 7:return c=0,c|0;default:}return c=A&-2130706433|134217728,!(!0&(A&2013265920|0)==268435456)||!0&(A&117440512|0)==16777216&(nt(s,c)|0)!=0?(c=0,c|0):(c=Ts(s,c)|0,c|0)}function sT(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0;return l=L,L=L+16|0,u=l,!0&(A&2013265920|0)==268435456?(f=A&-2130706433|134217728,h=c,n[h>>2]=s,n[h+4>>2]=f,n[u>>2]=0,A=se(s|0,A|0,56)|0,R()|0,u=It(s,f,A&7,u,c+8|0)|0,L=l,u|0):(u=6,L=l,u|0)}function Xa(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0;return l=(nt(s,A)|0)==0,A=A&-2130706433,u=c,n[u>>2]=l?s:0,n[u+4>>2]=l?A|285212672:0,u=c+8|0,n[u>>2]=s,n[u+4>>2]=A|301989888,u=c+16|0,n[u>>2]=s,n[u+4>>2]=A|318767104,u=c+24|0,n[u>>2]=s,n[u+4>>2]=A|335544320,u=c+32|0,n[u>>2]=s,n[u+4>>2]=A|352321536,c=c+40|0,n[c>>2]=s,n[c+4>>2]=A|369098752,0}function bo(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0;return h=L,L=L+16|0,l=h,f=A&-2130706433|134217728,!0&(A&2013265920|0)==268435456?(u=se(s|0,A|0,56)|0,R()|0,u=YT(s,f,u&7)|0,(u|0)==-1?(n[c>>2]=0,f=6,L=h,f|0):(fi(s,f,l)|0&&Ve(27634,27035,282,27050),A=se(s|0,A|0,52)|0,R()|0,A=A&15,nt(s,f)|0?Ya(l,A,u,2,c):Ja(l,A,u,2,c),f=0,L=h,f|0)):(f=6,L=h,f|0)}function of(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0;return h=L,L=L+16|0,u=h+8|0,l=h,f=A&-2130706433|134217728,!0&(A&2013265920|0)==268435456?(n[u>>2]=0,A=se(s|0,A|0,56)|0,R()|0,A=It(s,f,A&7,u,l)|0,A|0?(c=A,L=h,c|0):(u=n[l>>2]|0,l=n[l+4>>2]|0,A=gs(u,l,s,f)|0,(A|0)==7?(c=11,L=h,c|0):(s=he(A|0,0,56)|0,f=l&-2130706433|(R()|0)|268435456,n[c>>2]=u|s,n[c+4>>2]=f,c=0,L=h,c|0))):(c=6,L=h,c|0)}function AT(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0,H=0,N=0,W=0,j=0,ee=0;n[c>>2]=0,T=+P[s>>3],x=+P[s+8>>3],g=+P[s+16>>3],l=0,f=5,u=5,s=0;do F=+P[15888+(l*24|0)>>3]-T,I=+P[15888+(l*24|0)+8>>3]-x,h=+P[15888+(l*24|0)+16>>3]-g,h=F*F+I*I+h*h,h<u&&(n[c>>2]=l,f=h,s=l,u=h),l=l+1|0;while((l|0)!=20);if(f=+yb(+(1-f*.5)),f<1e-16)g=0,h=0;else{if(j=+P[16368+(s*24|0)>>3],N=+P[15888+(s*24|0)>>3],W=+P[15888+(s*24|0)+8>>3],H=+P[15888+(s*24|0)+16>>3],ee=-(H+(N*0+W*0)),h=N*ee+0,F=W*ee+0,ee=H*ee+1,U=+dt(+(ee*ee+(h*h+F*F))),U=U>0?1/U:0,h=h*U,F=F*U,U=ee*U,ee=-(T*N+x*W+g*H),I=T+N*ee,u=x+W*ee,T=g+H*ee,x=+dt(+(T*T+(I*I+u*u))),x=x>0?1/x:0,I=I*x,u=u*x,x=T*x,u=+xo(j-+xo(+Vt(+(x*(W*h-N*F)+(I*(H*F-W*U)+u*(N*U-H*h))),+(U*x+(h*I+F*u))))),pr(A)|0?h=+xo(u+-.3334731722518321):h=u,u=+ms(+f)*2.618033988749896,(A|0)>0){s=0;do u=u*2.6457513110645907,s=s+1|0;while((s|0)!=(A|0))}g=+De(+h)*u,h=+tt(+h)*u}A=c+4|0,C=c+12|0,n[C>>2]=0,f=+Ct(+h)*1.1547005383792515,u=+Ct(+g)+f*.5,s=~~u,l=~~f,u=u-+(s|0),f=f-+(l|0);do if(u<.5)if(u<.3333333333333333)if(n[A>>2]=s,f<(u+1)*.5){n[c+8>>2]=l;break}else{l=l+1|0,n[c+8>>2]=l;break}else if(ee=1-u,l=(!(f<ee)&1)+l|0,n[c+8>>2]=l,ee<=f&f<u*2){s=s+1|0,n[A>>2]=s;break}else{n[A>>2]=s;break}else{if(!(u<.6666666666666666))if(s=s+1|0,n[A>>2]=s,f<u*.5){n[c+8>>2]=l;break}else{l=l+1|0,n[c+8>>2]=l;break}if(f<1-u){if(n[c+8>>2]=l,u*2+-1<f){n[A>>2]=s;break}}else l=l+1|0,n[c+8>>2]=l;s=s+1|0,n[A>>2]=s}while(!1);do if(g<0)if(l&1){v=(l+1|0)/2|0,v=Mt(s|0,((s|0)<0)<<31>>31|0,v|0,((v|0)<0)<<31>>31|0)|0,s=~~(+(s|0)-((+(v>>>0)+4294967296*+(R()|0))*2+1)),n[A>>2]=s,v=A;break}else{v=(l|0)/2|0,v=Mt(s|0,((s|0)<0)<<31>>31|0,v|0,((v|0)<0)<<31>>31|0)|0,s=~~(+(s|0)-(+(v>>>0)+4294967296*+(R()|0))*2),n[A>>2]=s,v=A;break}else v=A;while(!1);E=c+8|0,A=0-l|0,h<0?(c=s-((l<<1|1)/2|0)|0,n[v>>2]=c,n[E>>2]=A,l=A):c=s,s=l-c|0,A=0-c|0,(c|0)<0?(n[E>>2]=s,n[C>>2]=A,n[v>>2]=0,p=0):(s=l,p=c,A=0),c=p-s|0,l=A-s|0,(s|0)<0?(n[v>>2]=c,n[C>>2]=l,n[E>>2]=0,p=c,s=0):l=A,c=p-l|0,A=s-l|0,(l|0)<0?(n[v>>2]=c,n[E>>2]=A,n[C>>2]=0,l=0):(A=s,c=p),s=(A|0)<(c|0)?A:c,s=(l|0)<(s|0)?l:s,!((s|0)<=0)&&(n[v>>2]=c-s,n[E>>2]=A-s,n[C>>2]=l-s)}function aT(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0;u=L,L=L+16|0,l=u,h=n[s+12>>2]|0,f=+((n[s+8>>2]|0)-h|0),P[l>>3]=+((n[s+4>>2]|0)-h|0)-f*.5,P[l+8>>3]=f*.8660254037844386,To(l,n[s>>2]|0,A,0,c),L=u}function To(s,A,c,u,l){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0;if(f=+XT(s),f<1e-16){A=15888+(A*24|0)|0,n[l>>2]=n[A>>2],n[l+4>>2]=n[A+4>>2],n[l+8>>2]=n[A+8>>2],n[l+12>>2]=n[A+12>>2],n[l+16>>2]=n[A+16>>2],n[l+20>>2]=n[A+20>>2];return}if(h=+Vt(+ +P[s+8>>3],+ +P[s>>3]),(c|0)>0){s=0;do f=f*.37796447300922725,s=s+1|0;while((s|0)!=(c|0))}p=f*.3333333333333333,u?(c=(pr(c)|0)==0,f=+Hu(+((c?p:p*.37796447300922725)*.381966011250105))):(f=+Hu(+(f*.381966011250105)),pr(c)|0&&(h=+xo(h+.3334731722518321))),E=+xo(+P[16368+(A*24|0)>>3]-h),p=+P[15888+(A*24|0)>>3],x=+P[15888+(A*24|0)+8>>3],F=+P[15888+(A*24|0)+16>>3],C=-(F+(p*0+x*0)),T=p*C+0,h=x*C+0,C=F*C+1,v=+dt(+(C*C+(T*T+h*h))),v=v>0?1/v:0,T=T*v,h=h*v,v=C*v,C=+De(+E),E=+tt(+E),U=+De(+f),I=+tt(+f),g=U*p+I*(C*T+E*(F*h-x*v)),f=U*x+I*(C*h+E*(p*v-F*T)),h=U*F+I*(C*v+E*(x*T-p*h)),p=+dt(+(h*h+(g*g+f*f))),p=p>0?1/p:0,P[l>>3]=g*p,P[l+8>>3]=f*p,P[l+16>>3]=h*p}function Ya(s,A,c,u,l){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0,H=0,N=0,W=0,j=0,ee=0,oe=0,X=0,q=0,me=0,ie=0,ye=0,ce=0,de=0,ze=0,We=0,Ot=0,Pe=0,Qe=0,Ht=0,_t=0,ft=0,wt=0,pt=0,$t=0,Rt=0,Pt=0,gr=0,Dt=0,$e=0,Bn=0;if($t=L,L=L+256|0,f=$t+240|0,ze=$t+224|0,ft=$t,wt=$t+208|0,pt=$t+192|0,We=$t+168|0,Ot=$t+152|0,Pe=$t+136|0,Qe=$t+120|0,Ht=$t+104|0,_t=$t+80|0,n[f>>2]=A,n[ze>>2]=n[s>>2],n[ze+4>>2]=n[s+4>>2],n[ze+8>>2]=n[s+8>>2],n[ze+12>>2]=n[s+12>>2],sf(ze,f,ft),n[l>>2]=0,ze=u+c+((u|0)==5&1)|0,(ze|0)<=(c|0)){L=$t;return}j=n[f>>2]|0,W=wt+4|0,H=wt+8|0,N=wt+12|0,ee=pt+8|0,oe=c+5|0,X=16848+(j<<2)|0,q=We+8|0,me=16928+(j<<2)|0,ie=Ot+8|0,ye=Pe+8|0,ce=Qe+8|0,de=pt+8|0,C=We+8|0,F=We+16|0,I=_t+8|0,U=_t+16|0,v=c,u=0,h=0,p=0,g=0;e:for(;;){E=ft+(((v|0)%5|0)<<4)|0,n[wt>>2]=n[E>>2],n[wt+4>>2]=n[E+4>>2],n[wt+8>>2]=n[E+8>>2],n[wt+12>>2]=n[E+12>>2];do;while((ui(wt,j,0,1)|0)==2);if((v|0)>(c|0)&(pr(A)|0)!=0){if(E=n[wt>>2]|0,s=n[W>>2]|0,T=n[H>>2]|0,f=n[N>>2]|0,Rt=+(p-g|0),P[pt>>3]=+(h-g|0)-Rt*.5,P[ee>>3]=Rt*.8660254037844386,g=n[17008+(E*80|0)+(u<<2)>>2]|0,x=n[18608+(E*80|0)+(g*20|0)>>2]|0,p=n[18608+(E*80|0)+(g*20|0)+16>>2]|0,(p|0)>0){h=0,u=T;do Dt=f+s|0,$e=(Dt|0)<0,T=u+s-($e?Dt:0)|0,gr=(T|0)<0,Pt=f+u-($e?Dt:0)-(gr?T:0)|0,f=(Pt|0)<0,s=($e?0:Dt)-(gr?T:0)-(f?Pt:0)|0,u=(gr?0:T)-(f?Pt:0)|0,Pt=f?0:Pt,f=(u|0)<(s|0)?u:s,f=(Pt|0)<(f|0)?Pt:f,T=(f|0)>0,s=s-(T?f:0)|0,u=u-(T?f:0)|0,f=Pt-(T?f:0)|0,h=h+1|0;while((h|0)<(p|0))}else u=T;switch($e=(n[X>>2]|0)*3|0,Pt=(Jt($e,n[18608+(E*80|0)+(g*20|0)+4>>2]|0)|0)+s|0,T=(Jt($e,n[18608+(E*80|0)+(g*20|0)+8>>2]|0)|0)+u|0,$e=(Jt($e,n[18608+(E*80|0)+(g*20|0)+12>>2]|0)|0)+f|0,g=(Pt|0)<0,T=T-(g?Pt:0)|0,gr=(T|0)<0,$e=$e+(g?0-Pt|0:0)+(gr?0-T|0:0)|0,Dt=($e|0)<0,Pt=(g?0:Pt)-(gr?T:0)-(Dt?$e:0)|0,T=(gr?0:T)-(Dt?$e:0)|0,$e=Dt?0:$e,Dt=(T|0)<(Pt|0)?T:Pt,Dt=($e|0)<(Dt|0)?$e:Dt,gr=(Dt|0)>0,$e=$e-(gr?Dt:0)|0,Rt=+(T-(gr?Dt:0)-$e|0),P[We>>3]=+(Pt-(gr?Dt:0)-$e|0)-Rt*.5,P[q>>3]=Rt*.8660254037844386,Rt=+(n[me>>2]|0),P[Ot>>3]=Rt*3,P[ie>>3]=0,Bn=Rt*-1.5,P[Pe>>3]=Bn,P[ye>>3]=Rt*2.598076211353316,P[Qe>>3]=Bn,P[ce>>3]=Rt*-2.598076211353316,n[17008+(x*80|0)+(E<<2)>>2]|0){case 1:s=Pe,u=Ot;break;case 3:s=Qe,u=Pe;break;case 2:s=Ot,u=Qe;break;default:s=12;break e}yf(pt,We,u,s,Ht),To(Ht,x,j,1,_t),$e=n[l>>2]|0,Rt=+go(+ +P[U>>3]),Bn=+Vt(+ +P[I>>3],+ +P[_t>>3]),P[l+8+($e<<4)>>3]=Rt,P[l+8+($e<<4)+8>>3]=Bn,n[l>>2]=(n[l>>2]|0)+1}if((v|0)<(oe|0)&&($e=n[N>>2]|0,Rt=+((n[H>>2]|0)-$e|0),P[pt>>3]=+((n[W>>2]|0)-$e|0)-Rt*.5,P[de>>3]=Rt*.8660254037844386,To(pt,n[wt>>2]|0,j,1,We),$e=n[l>>2]|0,Rt=+go(+ +P[F>>3]),Bn=+Vt(+ +P[C>>3],+ +P[We>>3]),P[l+8+($e<<4)>>3]=Rt,P[l+8+($e<<4)+8>>3]=Bn,n[l>>2]=(n[l>>2]|0)+1),v=v+1|0,(v|0)>=(ze|0)){s=3;break}else u=n[wt>>2]|0,h=n[W>>2]|0,p=n[H>>2]|0,g=n[N>>2]|0}if((s|0)==3){L=$t;return}else(s|0)==12&&Ve(27073,27120,599,27130)}function sf(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0;I=L,L=L+128|0,u=I+64|0,l=I,f=u,h=20208,p=f+60|0;do n[f>>2]=n[h>>2],f=f+4|0,h=h+4|0;while((f|0)<(p|0));f=l,h=20272,p=f+60|0;do n[f>>2]=n[h>>2],f=f+4|0,h=h+4|0;while((f|0)<(p|0));if(x=(pr(n[A>>2]|0)|0)==0,x=x?u:l,C=s+4|0,f=n[C>>2]|0,E=s+8|0,u=n[E>>2]|0,v=s+12|0,l=n[v>>2]|0,h=u+(f<<1)|0,n[C>>2]=h,u=l+(u<<1)|0,n[E>>2]=u,f=(l<<1)+f|0,n[v>>2]=f,l=u-h|0,p=f-h|0,(h|0)<0&&(n[E>>2]=l,n[v>>2]=p,n[C>>2]=0,u=l,h=0,f=p),p=h-u|0,l=f-u|0,(u|0)<0?(n[C>>2]=p,n[v>>2]=l,n[E>>2]=0,u=0):(l=f,p=h),h=p-l|0,f=u-l|0,(l|0)<0?(n[C>>2]=h,n[E>>2]=f,n[v>>2]=0,l=0):(f=u,h=p),u=(f|0)<(h|0)?f:h,u=(l|0)<(u|0)?l:u,(u|0)>0&&(l=l-u|0,f=f-u|0,h=h-u|0,n[C>>2]=h,n[E>>2]=f,n[v>>2]=l),g=(f<<1)+h|0,p=l+(h<<1)|0,n[C>>2]=p,n[E>>2]=g,f=(l<<1)+f|0,n[v>>2]=f,u=g-p|0,l=f-p|0,(p|0)<0?(n[E>>2]=u,n[v>>2]=l,n[C>>2]=0,p=0,f=l):u=g,h=p-u|0,l=f-u|0,(u|0)<0?(n[C>>2]=h,n[v>>2]=l,n[E>>2]=0,p=h,u=0):l=f,h=p-l|0,f=u-l|0,(l|0)<0?(n[C>>2]=h,n[E>>2]=f,n[v>>2]=0,l=0):(f=u,h=p),u=(f|0)<(h|0)?f:h,u=(l|0)<(u|0)?l:u,(u|0)>0&&(n[C>>2]=h-u,n[E>>2]=f-u,n[v>>2]=l-u),pr(n[A>>2]|0)|0&&(f=n[C>>2]|0,h=n[E>>2]|0,l=n[v>>2]|0,u=(h*3|0)+f|0,f=l+(f*3|0)|0,n[C>>2]=f,n[E>>2]=u,h=(l*3|0)+h|0,n[v>>2]=h,l=u-f|0,p=h-f|0,(f|0)<0?(n[E>>2]=l,n[v>>2]=p,n[C>>2]=0,u=l,g=0):(g=f,p=h),f=g-u|0,l=p-u|0,(u|0)<0?(n[C>>2]=f,n[v>>2]=l,n[E>>2]=0,g=f,h=0):(h=u,l=p),f=g-l|0,u=h-l|0,(l|0)<0?(n[C>>2]=f,n[E>>2]=u,n[v>>2]=0,h=u,l=0):f=g,u=(h|0)<(f|0)?h:f,u=(l|0)<(u|0)?l:u,(u|0)>0&&(n[C>>2]=f-u,n[E>>2]=h-u,n[v>>2]=l-u),n[A>>2]=(n[A>>2]|0)+1),n[c>>2]=n[s>>2],l=n[E>>2]|0,u=n[v>>2]|0,A=n[x+4>>2]|0,T=n[x+8>>2]|0,h=(n[x>>2]|0)+(n[C>>2]|0)|0,g=c+4|0,n[g>>2]=h,l=A+l|0,A=c+8|0,n[A>>2]=l,u=T+u|0,T=c+12|0,n[T>>2]=u,f=l-h|0,(h|0)<0&&(u=u-h|0,n[A>>2]=f,n[T>>2]=u,n[g>>2]=0,l=f,h=0),(l|0)<0&&(h=h-l|0,n[g>>2]=h,u=u-l|0,n[T>>2]=u,n[A>>2]=0,l=0),p=h-u|0,f=l-u|0,(u|0)<0?(n[g>>2]=p,n[A>>2]=f,n[T>>2]=0,h=p,u=0):f=l,l=(f|0)<(h|0)?f:h,l=(u|0)<(l|0)?u:l,(l|0)>0&&(n[g>>2]=h-l,n[A>>2]=f-l,n[T>>2]=u-l),n[c+16>>2]=n[s>>2],l=n[E>>2]|0,u=n[v>>2]|0,A=n[x+16>>2]|0,T=n[x+20>>2]|0,h=(n[x+12>>2]|0)+(n[C>>2]|0)|0,g=c+20|0,n[g>>2]=h,l=A+l|0,A=c+24|0,n[A>>2]=l,u=T+u|0,T=c+28|0,n[T>>2]=u,f=l-h|0,(h|0)<0&&(u=u-h|0,n[A>>2]=f,n[T>>2]=u,n[g>>2]=0,l=f,h=0),(l|0)<0&&(h=h-l|0,n[g>>2]=h,u=u-l|0,n[T>>2]=u,n[A>>2]=0,l=0),p=h-u|0,f=l-u|0,(u|0)<0?(n[g>>2]=p,n[A>>2]=f,n[T>>2]=0,h=p,u=0):f=l,l=(f|0)<(h|0)?f:h,l=(u|0)<(l|0)?u:l,(l|0)>0&&(n[g>>2]=h-l,n[A>>2]=f-l,n[T>>2]=u-l),n[c+32>>2]=n[s>>2],l=n[E>>2]|0,u=n[v>>2]|0,A=n[x+28>>2]|0,T=n[x+32>>2]|0,h=(n[x+24>>2]|0)+(n[C>>2]|0)|0,g=c+36|0,n[g>>2]=h,l=A+l|0,A=c+40|0,n[A>>2]=l,u=T+u|0,T=c+44|0,n[T>>2]=u,f=l-h|0,(h|0)<0&&(u=u-h|0,n[A>>2]=f,n[T>>2]=u,n[g>>2]=0,l=f,h=0),(l|0)<0&&(h=h-l|0,n[g>>2]=h,u=u-l|0,n[T>>2]=u,n[A>>2]=0,l=0),p=h-u|0,f=l-u|0,(u|0)<0?(n[g>>2]=p,n[A>>2]=f,n[T>>2]=0,h=p,u=0):f=l,l=(f|0)<(h|0)?f:h,l=(u|0)<(l|0)?u:l,(l|0)>0&&(n[g>>2]=h-l,n[A>>2]=f-l,n[T>>2]=u-l),n[c+48>>2]=n[s>>2],l=n[E>>2]|0,u=n[v>>2]|0,A=n[x+40>>2]|0,T=n[x+44>>2]|0,h=(n[x+36>>2]|0)+(n[C>>2]|0)|0,g=c+52|0,n[g>>2]=h,l=A+l|0,A=c+56|0,n[A>>2]=l,u=T+u|0,T=c+60|0,n[T>>2]=u,f=l-h|0,(h|0)<0&&(u=u-h|0,n[A>>2]=f,n[T>>2]=u,n[g>>2]=0,l=f,h=0),(l|0)<0&&(h=h-l|0,n[g>>2]=h,u=u-l|0,n[T>>2]=u,n[A>>2]=0,l=0),p=h-u|0,f=l-u|0,(u|0)<0?(n[g>>2]=p,n[A>>2]=f,n[T>>2]=0,h=p,u=0):f=l,l=(f|0)<(h|0)?f:h,l=(u|0)<(l|0)?u:l,(l|0)>0&&(n[g>>2]=h-l,n[A>>2]=f-l,n[T>>2]=u-l),n[c+64>>2]=n[s>>2],f=n[E>>2]|0,u=n[v>>2]|0,T=n[x+52>>2]|0,g=n[x+56>>2]|0,h=(n[x+48>>2]|0)+(n[C>>2]|0)|0,A=c+68|0,n[A>>2]=h,f=T+f|0,T=c+72|0,n[T>>2]=f,u=g+u|0,g=c+76|0,n[g>>2]=u,l=f-h|0,(h|0)<0?(u=u-h|0,n[T>>2]=l,n[g>>2]=u,n[A>>2]=0,f=0):(l=f,f=h),(l|0)<0&&(f=f-l|0,n[A>>2]=f,u=u-l|0,n[g>>2]=u,n[T>>2]=0,l=0),p=f-u|0,h=l-u|0,(u|0)<0?(n[A>>2]=p,n[T>>2]=h,n[g>>2]=0,f=p,u=0):h=l,l=(h|0)<(f|0)?h:f,l=(u|0)<(l|0)?u:l,(l|0)<=0){L=I;return}n[A>>2]=f-l,n[T>>2]=h-l,n[g>>2]=u-l,L=I}function ui(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0,H=0;if(v=n[16928+(A<<2)>>2]|0,E=(u|0)!=0,v=E?v*3|0:v,x=s+4|0,p=n[x>>2]|0,T=s+8|0,f=n[T>>2]|0,E){if(h=s+12|0,u=n[h>>2]|0,l=f+p+u|0,(l|0)==(v|0))return v=1,v|0;g=h}else g=s+12|0,l=n[g>>2]|0,u=l,l=f+p+l|0;if((l|0)<=(v|0))return v=0,v|0;do if((u|0)>0){if(l=n[s>>2]|0,(f|0)>0){l=18608+(l*80|0)+60|0,h=p;break}l=18608+(l*80|0)+40|0,c?(h=p-v|0,c=f+h|0,C=(c|0)<0,f=u+f-(C?c:0)|0,p=(f|0)<0,u=u+h-(C?c:0)-(p?f:0)|0,h=(u|0)<0,c=(C?0:c)-(p?f:0)-(h?u:0)|0,f=(p?0:f)-(h?u:0)|0,u=h?0:u,h=(f|0)<(c|0)?f:c,h=(u|0)<(h|0)?u:h,p=(h|0)>0,f=f-(p?h:0)|0,u=u-(p?h:0)|0,h=c-(p?h:0)+v|0,n[x>>2]=h,n[T>>2]=f,n[g>>2]=u):h=p}else l=18608+((n[s>>2]|0)*80|0)+20|0,h=p;while(!1);if(n[s>>2]=n[l>>2],p=n[l+16>>2]|0,(p|0)>0){c=0;do C=u+h|0,I=(C|0)<0,H=I?C:0,F=f+h-H|0,U=(F|0)<0,s=U?F:0,h=u+f-H-s|0,f=(h|0)<0,u=f?0:h,h=f?h:0,f=(U?0:F)-h|0,h=(I?0:C)-s-h|0,s=(f|0)<(h|0)?f:h,s=(u|0)<(s|0)?u:s,(s|0)>0&&(h=h-s|0,f=f-s|0,u=u-s|0),c=c+1|0;while((c|0)<(p|0));n[x>>2]=h,n[T>>2]=f,n[g>>2]=u}return F=n[16848+(A<<2)>>2]|0,F=E?F*3|0:F,U=Jt(F,n[l+8>>2]|0)|0,H=Jt(F,n[l+12>>2]|0)|0,h=(Jt(F,n[l+4>>2]|0)|0)+h|0,n[x>>2]=h,f=U+f|0,n[T>>2]=f,u=H+u|0,n[g>>2]=u,l=f-h|0,(h|0)<0?(u=u-h|0,n[T>>2]=l,n[g>>2]=u,n[x>>2]=0,f=0):(l=f,f=h),(l|0)<0?(s=f-l|0,n[x>>2]=s,u=u-l|0,n[g>>2]=u,n[T>>2]=0,h=0):(s=f,h=l),f=s-u|0,l=h-u|0,(u|0)<0?(n[x>>2]=f,n[T>>2]=l,n[g>>2]=0,u=0):(l=h,f=s),h=(l|0)<(f|0)?l:f,h=(u|0)<(h|0)?u:h,(h|0)>0&&(f=f-h|0,l=l-h|0,u=u-h|0,n[x>>2]=f,n[T>>2]=l,n[g>>2]=u),E?(H=(l+f+u|0)==(v|0)?1:2,H|0):(H=2,H|0)}function cT(s,A){s=s|0,A=A|0;var c=0;do c=ui(s,A,0,1)|0;while((c|0)==2);return c|0}function Ja(s,A,c,u,l){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0,H=0,N=0,W=0,j=0,ee=0,oe=0,X=0,q=0,me=0,ie=0,ye=0,ce=0,de=0,ze=0,We=0,Ot=0,Pe=0,Qe=0,Ht=0,_t=0,ft=0,wt=0,pt=0;if(_t=L,L=L+272|0,f=_t+256|0,h=_t+240|0,Pe=_t,Qe=_t+224|0,Ht=_t+208|0,ie=_t+184|0,ye=_t+168|0,ce=_t+152|0,de=_t+136|0,ze=_t+120|0,We=_t+96|0,n[f>>2]=A,n[h>>2]=n[s>>2],n[h+4>>2]=n[s+4>>2],n[h+8>>2]=n[s+8>>2],n[h+12>>2]=n[s+12>>2],Af(h,f,Pe),n[l>>2]=0,me=u+c+((u|0)==6&1)|0,(me|0)<=(c|0)){L=_t;return}H=n[f>>2]|0,N=c+6|0,W=Ht+8|0,j=ie+8|0,ee=16928+(H<<2)|0,oe=ye+8|0,X=ce+8|0,q=de+8|0,F=n[h>>2]|0,v=Qe+4|0,C=Qe+8|0,I=Qe+12|0,U=Ht+8|0,g=ie+8|0,x=ie+16|0,T=We+8|0,E=We+16|0,h=0,p=c,u=-1;e:for(;;){if(f=(p|0)%6|0,s=Pe+(f<<4)|0,n[Qe>>2]=n[s>>2],n[Qe+4>>2]=n[s+4>>2],n[Qe+8>>2]=n[s+8>>2],n[Qe+12>>2]=n[s+12>>2],s=h,h=ui(Qe,H,0,1)|0,(p|0)>(c|0)&(pr(A)|0)!=0&&(Ot=n[Qe>>2]|0,(s|0)!=1&(Ot|0)!=(u|0))){switch(pt=(f+5|0)%6|0,s=n[Pe+(pt<<4)+12>>2]|0,ft=+((n[Pe+(pt<<4)+8>>2]|0)-s|0),P[Ht>>3]=+((n[Pe+(pt<<4)+4>>2]|0)-s|0)-ft*.5,P[W>>3]=ft*.8660254037844386,s=n[Pe+(f<<4)+12>>2]|0,ft=+((n[Pe+(f<<4)+8>>2]|0)-s|0),P[ie>>3]=+((n[Pe+(f<<4)+4>>2]|0)-s|0)-ft*.5,P[j>>3]=ft*.8660254037844386,ft=+(n[ee>>2]|0),P[ye>>3]=ft*3,P[oe>>3]=0,wt=ft*-1.5,P[ce>>3]=wt,P[X>>3]=ft*2.598076211353316,P[de>>3]=wt,P[q>>3]=ft*-2.598076211353316,n[17008+(F*80|0)+(((u|0)==(F|0)?Ot:u)<<2)>>2]|0){case 1:s=ce,u=ye;break;case 3:s=de,u=ce;break;case 2:s=ye,u=de;break;default:s=8;break e}yf(Ht,ie,u,s,ze),!(xf(Ht,ze)|0)&&!(xf(ie,ze)|0)&&(To(ze,F,H,1,We),pt=n[l>>2]|0,ft=+go(+ +P[E>>3]),wt=+Vt(+ +P[T>>3],+ +P[We>>3]),P[l+8+(pt<<4)>>3]=ft,P[l+8+(pt<<4)+8>>3]=wt,n[l>>2]=(n[l>>2]|0)+1)}if((p|0)<(N|0)&&(pt=n[I>>2]|0,ft=+((n[C>>2]|0)-pt|0),P[Ht>>3]=+((n[v>>2]|0)-pt|0)-ft*.5,P[U>>3]=ft*.8660254037844386,To(Ht,n[Qe>>2]|0,H,1,ie),pt=n[l>>2]|0,ft=+go(+ +P[x>>3]),wt=+Vt(+ +P[g>>3],+ +P[ie>>3]),P[l+8+(pt<<4)>>3]=ft,P[l+8+(pt<<4)+8>>3]=wt,n[l>>2]=(n[l>>2]|0)+1),p=p+1|0,(p|0)>=(me|0)){s=3;break}else u=n[Qe>>2]|0}if((s|0)==3){L=_t;return}else(s|0)==8&&Ve(27157,27120,766,27202)}function Af(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0;F=L,L=L+160|0,u=F+80|0,l=F,f=u,h=20336,p=f+72|0;do n[f>>2]=n[h>>2],f=f+4|0,h=h+4|0;while((f|0)<(p|0));f=l,h=20416,p=f+72|0;do n[f>>2]=n[h>>2],f=f+4|0,h=h+4|0;while((f|0)<(p|0));E=(pr(n[A>>2]|0)|0)==0,E=E?u:l,I=s+4|0,f=n[I>>2]|0,v=s+8|0,u=n[v>>2]|0,C=s+12|0,l=n[C>>2]|0,h=u+(f<<1)|0,n[I>>2]=h,u=l+(u<<1)|0,n[v>>2]=u,f=(l<<1)+f|0,n[C>>2]=f,l=u-h|0,p=f-h|0,(h|0)<0&&(n[v>>2]=l,n[C>>2]=p,n[I>>2]=0,u=l,h=0,f=p),p=h-u|0,l=f-u|0,(u|0)<0?(n[I>>2]=p,n[C>>2]=l,n[v>>2]=0,u=0):(l=f,p=h),h=p-l|0,f=u-l|0,(l|0)<0?(n[I>>2]=h,n[v>>2]=f,n[C>>2]=0,l=0):(f=u,h=p),u=(f|0)<(h|0)?f:h,u=(l|0)<(u|0)?l:u,(u|0)>0&&(l=l-u|0,f=f-u|0,h=h-u|0,n[I>>2]=h,n[v>>2]=f,n[C>>2]=l),g=(f<<1)+h|0,p=l+(h<<1)|0,n[I>>2]=p,n[v>>2]=g,f=(l<<1)+f|0,n[C>>2]=f,u=g-p|0,l=f-p|0,(p|0)<0?(n[v>>2]=u,n[C>>2]=l,n[I>>2]=0,p=0,f=l):u=g,h=p-u|0,l=f-u|0,(u|0)<0?(n[I>>2]=h,n[C>>2]=l,n[v>>2]=0,p=h,u=0):l=f,h=p-l|0,f=u-l|0,(l|0)<0?(n[I>>2]=h,n[v>>2]=f,n[C>>2]=0,l=0):(f=u,h=p),u=(f|0)<(h|0)?f:h,u=(l|0)<(u|0)?l:u,(u|0)>0&&(n[I>>2]=h-u,n[v>>2]=f-u,n[C>>2]=l-u),pr(n[A>>2]|0)|0&&(f=n[I>>2]|0,h=n[v>>2]|0,l=n[C>>2]|0,u=(h*3|0)+f|0,f=l+(f*3|0)|0,n[I>>2]=f,n[v>>2]=u,h=(l*3|0)+h|0,n[C>>2]=h,l=u-f|0,p=h-f|0,(f|0)<0?(n[v>>2]=l,n[C>>2]=p,n[I>>2]=0,u=l,g=0):(g=f,p=h),f=g-u|0,l=p-u|0,(u|0)<0?(n[I>>2]=f,n[C>>2]=l,n[v>>2]=0,g=f,h=0):(h=u,l=p),f=g-l|0,u=h-l|0,(l|0)<0?(n[I>>2]=f,n[v>>2]=u,n[C>>2]=0,h=u,l=0):f=g,u=(h|0)<(f|0)?h:f,u=(l|0)<(u|0)?l:u,(u|0)>0&&(n[I>>2]=f-u,n[v>>2]=h-u,n[C>>2]=l-u),n[A>>2]=(n[A>>2]|0)+1),g=0;do n[c+(g<<4)>>2]=n[s>>2],l=n[v>>2]|0,u=n[C>>2]|0,T=n[E+(g*12|0)+4>>2]|0,x=n[E+(g*12|0)+8>>2]|0,h=(n[E+(g*12|0)>>2]|0)+(n[I>>2]|0)|0,A=c+(g<<4)+4|0,n[A>>2]=h,l=T+l|0,T=c+(g<<4)+8|0,n[T>>2]=l,u=x+u|0,x=c+(g<<4)+12|0,n[x>>2]=u,f=l-h|0,(h|0)<0&&(u=u-h|0,n[T>>2]=f,n[x>>2]=u,n[A>>2]=0,l=f,h=0),(l|0)<0&&(h=h-l|0,n[A>>2]=h,u=u-l|0,n[x>>2]=u,n[T>>2]=0,l=0),p=h-u|0,f=l-u|0,(u|0)<0?(n[A>>2]=p,n[T>>2]=f,n[x>>2]=0,h=p,u=0):f=l,l=(f|0)<(h|0)?f:h,l=(u|0)<(l|0)?u:l,(l|0)>0&&(n[A>>2]=h-l,n[T>>2]=f-l,n[x>>2]=u-l),g=g+1|0;while((g|0)!=6);L=F}function Za(s,A){return s=s|0,A=A|0,A=se(s|0,A|0,52)|0,R()|0,A&15|0}function af(s,A){return s=s|0,A=A|0,A=se(s|0,A|0,45)|0,R()|0,A&127|0}function lT(s,A,c,u){return s=s|0,A=A|0,c=c|0,u=u|0,(c+-1|0)>>>0>14?(u=4,u|0):(c=se(s|0,A|0,(15-c|0)*3|0)|0,R()|0,n[u>>2]=c&7,u=0,u|0)}function uT(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0;if(s>>>0>15)return u=4,u|0;if(A>>>0>121)return u=17,u|0;h=he(s|0,0,52)|0,l=R()|0,p=he(A|0,0,45)|0,l=l|(R()|0)|134225919;e:do if((s|0)>=1){for(p=1,h=(ne[20496+A>>0]|0)!=0,f=-1;;){if(A=n[c+(p+-1<<2)>>2]|0,A>>>0>6){l=18,A=10;break}if(!((A|0)==0|h^1))if((A|0)==1){l=19,A=10;break}else h=0;if(T=(15-p|0)*3|0,g=he(7,0,T|0)|0,l=l&~(R()|0),A=he(A|0,((A|0)<0)<<31>>31|0,T|0)|0,f=A|f&~g,l=R()|0|l,(p|0)<(s|0))p=p+1|0;else break e}if((A|0)==10)return l|0}else f=-1;while(!1);return T=u,n[T>>2]=f,n[T+4>>2]=l,T=0,T|0}function Ts(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0,h=0;return!(!0&(A&-16777216|0)==134217728)||(u=se(s|0,A|0,52)|0,R()|0,u=u&15,c=se(s|0,A|0,45)|0,R()|0,c=c&127,c>>>0>121)?(s=0,s|0):(h=(u^15)*3|0,l=se(s|0,A|0,h|0)|0,h=he(l|0,R()|0,h|0)|0,l=R()|0,f=Mt(-1227133514,-1171,h|0,l|0)|0,!((h&613566756&f|0)==0&(l&4681&(R()|0)|0)==0)||(h=(u*3|0)+19|0,f=he(~s|0,~A|0,h|0)|0,h=se(f|0,R()|0,h|0)|0,!((u|0)==15|(h|0)==0&(R()|0)==0))?(h=0,h|0):!(ne[20496+c>>0]|0)||(A=A&8191,(s|0)==0&(A|0)==0)?(h=1,h|0):(h=d0(s|0,A|0,0)|0,R()|0,((63-h|0)%3|0)!=0|0))}function fT(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0,h=0;return!0&(A&-16777216|0)==134217728&&(u=se(s|0,A|0,52)|0,R()|0,u=u&15,c=se(s|0,A|0,45)|0,R()|0,c=c&127,c>>>0<=121)&&(h=(u^15)*3|0,l=se(s|0,A|0,h|0)|0,h=he(l|0,R()|0,h|0)|0,l=R()|0,f=Mt(-1227133514,-1171,h|0,l|0)|0,(h&613566756&f|0)==0&(l&4681&(R()|0)|0)==0)&&(h=(u*3|0)+19|0,f=he(~s|0,~A|0,h|0)|0,h=se(f|0,R()|0,h|0)|0,(u|0)==15|(h|0)==0&(R()|0)==0)&&(!(ne[20496+c>>0]|0)||(c=A&8191,(s|0)==0&(c|0)==0)||(h=d0(s|0,c|0,0)|0,R()|0,(63-h|0)%3|0))||nf(s,A)|0?(h=1,h|0):(h=(_f(s,A)|0)!=0&1,h|0)}function $a(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0;if(l=he(A|0,0,52)|0,f=R()|0,c=he(c|0,0,45)|0,c=f|(R()|0)|134225919,(A|0)<1){f=-1,u=c,A=s,n[A>>2]=f,s=s+4|0,n[s>>2]=u;return}for(f=1,l=-1;h=(15-f|0)*3|0,p=he(7,0,h|0)|0,c=c&~(R()|0),h=he(u|0,0,h|0)|0,l=l&~p|h,c=c|(R()|0),(f|0)!=(A|0);)f=f+1|0;p=s,h=p,n[h>>2]=l,p=p+4|0,n[p>>2]=c}function e0(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0;if(f=se(s|0,A|0,52)|0,R()|0,f=f&15,c>>>0>15)return u=4,u|0;if((f|0)<(c|0))return u=12,u|0;if((f|0)==(c|0))return n[u>>2]=s,n[u+4>>2]=A,u=0,u|0;if(l=he(c|0,0,52)|0,l=l|s,s=R()|0|A&-15728641,(f|0)>(c|0))do A=he(7,0,(14-c|0)*3|0)|0,c=c+1|0,l=A|l,s=R()|0|s;while((c|0)<(f|0));return n[u>>2]=l,n[u+4>>2]=s,u=0,u|0}function yo(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0;if(f=se(s|0,A|0,52)|0,R()|0,f=f&15,!((c|0)<16&(f|0)<=(c|0)))return u=4,u|0;l=c-f|0,c=se(s|0,A|0,45)|0,R()|0;e:do if(!(at(c&127)|0))c=hn(7,0,l,((l|0)<0)<<31>>31)|0,l=R()|0;else{t:do if(f|0){for(c=1;h=he(7,0,(15-c|0)*3|0)|0,!!((h&s|0)==0&((R()|0)&A|0)==0);)if(c>>>0<f>>>0)c=c+1|0;else break t;c=hn(7,0,l,((l|0)<0)<<31>>31)|0,l=R()|0;break e}while(!1);c=hn(7,0,l,((l|0)<0)<<31>>31)|0,c=lt(c|0,R()|0,5,0)|0,c=pe(c|0,R()|0,-5,-1)|0,c=dn(c|0,R()|0,6,0)|0,c=pe(c|0,R()|0,1,0)|0,l=R()|0}while(!1);return h=u,n[h>>2]=c,n[h+4>>2]=l,h=0,h|0}function nt(s,A){s=s|0,A=A|0;var c=0,u=0,l=0;if(l=se(s|0,A|0,45)|0,R()|0,!(at(l&127)|0))return l=0,l|0;l=se(s|0,A|0,52)|0,R()|0,l=l&15;e:do if(!l)c=0;else for(u=1;;){if(c=se(s|0,A|0,(15-u|0)*3|0)|0,R()|0,c=c&7,c|0)break e;if(u>>>0<l>>>0)u=u+1|0;else{c=0;break}}while(!1);return l=(c|0)==0&1,l|0}function hT(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0;if(h=L,L=L+16|0,f=h,s0(f,s,A,c),A=f,s=n[A>>2]|0,A=n[A+4>>2]|0,(s|0)==0&(A|0)==0)return L=h,0;l=0,c=0;do p=u+(l<<3)|0,n[p>>2]=s,n[p+4>>2]=A,l=pe(l|0,c|0,1,0)|0,c=R()|0,A0(f),p=f,s=n[p>>2]|0,A=n[p+4>>2]|0;while(!((s|0)==0&(A|0)==0));return L=h,0}function cf(s,A,c,u){return s=s|0,A=A|0,c=c|0,u=u|0,(u|0)<(c|0)?(c=A,u=s,Re(c|0),u|0):(c=he(-1,-1,((u-c|0)*3|0)+3|0)|0,u=he(~c|0,~(R()|0)|0,(15-u|0)*3|0)|0,c=~(R()|0)&A,u=~u&s,Re(c|0),u|0)}function lf(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0;return l=se(s|0,A|0,52)|0,R()|0,l=l&15,(c|0)<16&(l|0)<=(c|0)?((l|0)<(c|0)&&(l=he(-1,-1,((c+-1-l|0)*3|0)+3|0)|0,l=he(~l|0,~(R()|0)|0,(15-c|0)*3|0)|0,A=~(R()|0)&A,s=~l&s),l=he(c|0,0,52)|0,c=A&-15728641|(R()|0),n[u>>2]=s|l,n[u+4>>2]=c,u=0,u|0):(u=4,u|0)}function dT(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0,H=0,N=0,W=0,j=0,ee=0,oe=0,X=0,q=0,me=0,ie=0,ye=0,ce=0,de=0;if((c|0)==0&(u|0)==0)return de=0,de|0;if(l=s,f=n[l>>2]|0,l=n[l+4>>2]|0,!0&(l&15728640|0)==0){if(!((u|0)>0|(u|0)==0&c>>>0>0)||(de=A,n[de>>2]=f,n[de+4>>2]=l,(c|0)==1&(u|0)==0))return de=0,de|0;l=1,f=0;do ye=s+(l<<3)|0,ce=n[ye+4>>2]|0,de=A+(l<<3)|0,n[de>>2]=n[ye>>2],n[de+4>>2]=ce,l=pe(l|0,f|0,1,0)|0,f=R()|0;while((f|0)<(u|0)|(f|0)==(u|0)&l>>>0<c>>>0);return l=0,l|0}if(ie=c<<3,ce=ct(ie)|0,!ce)return de=13,de|0;if(Mr(ce|0,s|0,ie|0)|0,ye=zt(c,8)|0,!ye)return be(ce),de=13,de|0;e:for(;;){l=ce,T=n[l>>2]|0,l=n[l+4>>2]|0,q=se(T|0,l|0,52)|0,R()|0,q=q&15,me=q+-1|0,X=(q|0)!=0,oe=(u|0)>0|(u|0)==0&c>>>0>0;t:do if(X&oe){if(N=he(me|0,0,52)|0,W=R()|0,me>>>0>15){if(!((T|0)==0&(l|0)==0)){de=16;break e}for(f=0,s=0;;){if(f=pe(f|0,s|0,1,0)|0,s=R()|0,!((s|0)<(u|0)|(s|0)==(u|0)&f>>>0<c>>>0))break t;if(h=ce+(f<<3)|0,ee=n[h>>2]|0,h=n[h+4>>2]|0,!((ee|0)==0&(h|0)==0)){l=h,de=16;break e}}}for(p=T,s=l,f=0,h=0;;){if(!((p|0)==0&(s|0)==0)){if(!(!0&(s&117440512|0)==0)){de=21;break e}if(x=se(p|0,s|0,52)|0,R()|0,x=x&15,(x|0)<(me|0)){l=12,de=27;break e}if((x|0)!=(me|0)&&(p=p|N,s=s&-15728641|W,x>>>0>=q>>>0)){g=me;do ee=he(7,0,(14-g|0)*3|0)|0,g=g+1|0,p=ee|p,s=R()|0|s;while(g>>>0<x>>>0)}if(v=$r(p|0,s|0,c|0,u|0)|0,C=R()|0,g=ye+(v<<3)|0,x=g,E=n[x>>2]|0,x=n[x+4>>2]|0,!((E|0)==0&(x|0)==0)){U=0,H=0;do{if((U|0)>(u|0)|(U|0)==(u|0)&H>>>0>c>>>0){de=31;break e}if((E|0)==(p|0)&(x&-117440513|0)==(s|0)){I=se(E|0,x|0,56)|0,R()|0,I=I&7,F=I+1|0,ee=se(E|0,x|0,45)|0,R()|0;r:do if(!(at(ee&127)|0))x=7;else{if(E=se(E|0,x|0,52)|0,R()|0,E=E&15,!E){x=6;break}for(x=1;;){if(ee=he(7,0,(15-x|0)*3|0)|0,!((ee&p|0)==0&((R()|0)&s|0)==0)){x=7;break r}if(x>>>0<E>>>0)x=x+1|0;else{x=6;break}}}while(!1);if((I+2|0)>>>0>x>>>0){de=41;break e}ee=he(F|0,0,56)|0,s=R()|0|s&-117440513,j=g,n[j>>2]=0,n[j+4>>2]=0,p=ee|p}else v=pe(v|0,C|0,1,0)|0,v=pn(v|0,R()|0,c|0,u|0)|0,C=R()|0;H=pe(H|0,U|0,1,0)|0,U=R()|0,g=ye+(v<<3)|0,x=g,E=n[x>>2]|0,x=n[x+4>>2]|0}while(!((E|0)==0&(x|0)==0))}ee=g,n[ee>>2]=p,n[ee+4>>2]=s}if(f=pe(f|0,h|0,1,0)|0,h=R()|0,!((h|0)<(u|0)|(h|0)==(u|0)&f>>>0<c>>>0))break t;s=ce+(f<<3)|0,p=n[s>>2]|0,s=n[s+4>>2]|0}}while(!1);if(ee=pe(c|0,u|0,5,0)|0,j=R()|0,j>>>0<0|(j|0)==0&ee>>>0<11){de=85;break}if(ee=dn(c|0,u|0,6,0)|0,R()|0,ee=zt(ee,8)|0,!ee){de=48;break}do if(oe){for(F=0,s=0,I=0,U=0;;){if(x=ye+(F<<3)|0,h=x,f=n[h>>2]|0,h=n[h+4>>2]|0,(f|0)==0&(h|0)==0)j=I;else{E=se(f|0,h|0,56)|0,R()|0,E=E&7,p=E+1|0,v=h&-117440513,j=se(f|0,h|0,45)|0,R()|0;t:do if(at(j&127)|0){if(C=se(f|0,h|0,52)|0,R()|0,C=C&15,C|0)for(g=1;;){if(j=he(7,0,(15-g|0)*3|0)|0,!((f&j|0)==0&(v&(R()|0)|0)==0))break t;if(g>>>0<C>>>0)g=g+1|0;else break}h=he(p|0,0,56)|0,f=h|f,h=R()|0|v,p=x,n[p>>2]=f,n[p+4>>2]=h,p=E+2|0}while(!1);(p|0)==7?(j=ee+(s<<3)|0,n[j>>2]=f,n[j+4>>2]=h&-117440513,s=pe(s|0,I|0,1,0)|0,j=R()|0):j=I}if(F=pe(F|0,U|0,1,0)|0,U=R()|0,(U|0)<(u|0)|(U|0)==(u|0)&F>>>0<c>>>0)I=j;else break}if(oe){if(H=me>>>0>15,N=he(me|0,0,52)|0,W=R()|0,!X){for(f=0,g=0,p=0,h=0;(T|0)==0&(l|0)==0||(me=A+(f<<3)|0,n[me>>2]=T,n[me+4>>2]=l,f=pe(f|0,g|0,1,0)|0,g=R()|0),p=pe(p|0,h|0,1,0)|0,h=R()|0,!!((h|0)<(u|0)|(h|0)==(u|0)&p>>>0<c>>>0);)l=ce+(p<<3)|0,T=n[l>>2]|0,l=n[l+4>>2]|0;l=j;break}for(f=0,g=0,h=0,p=0;;){do if(!((T|0)==0&(l|0)==0)){if(C=se(T|0,l|0,52)|0,R()|0,C=C&15,H|(C|0)<(me|0)){de=80;break e}if((C|0)!=(me|0)){if(x=T|N,E=l&-15728641|W,C>>>0>=q>>>0){v=me;do X=he(7,0,(14-v|0)*3|0)|0,v=v+1|0,x=X|x,E=R()|0|E;while(v>>>0<C>>>0)}}else x=T,E=l;I=$r(x|0,E|0,c|0,u|0)|0,v=0,C=0,U=R()|0;do{if((v|0)>(u|0)|(v|0)==(u|0)&C>>>0>c>>>0){de=81;break e}if(X=ye+(I<<3)|0,F=n[X+4>>2]|0,(F&-117440513|0)==(E|0)&&(n[X>>2]|0)==(x|0)){de=65;break}X=pe(I|0,U|0,1,0)|0,I=pn(X|0,R()|0,c|0,u|0)|0,U=R()|0,C=pe(C|0,v|0,1,0)|0,v=R()|0,X=ye+(I<<3)|0}while(!((n[X>>2]|0)==(x|0)&&(n[X+4>>2]|0)==(E|0)));if((de|0)==65&&(de=0,!0&(F&117440512|0)==100663296))break;X=A+(f<<3)|0,n[X>>2]=T,n[X+4>>2]=l,f=pe(f|0,g|0,1,0)|0,g=R()|0}while(!1);if(h=pe(h|0,p|0,1,0)|0,p=R()|0,!((p|0)<(u|0)|(p|0)==(u|0)&h>>>0<c>>>0))break;l=ce+(h<<3)|0,T=n[l>>2]|0,l=n[l+4>>2]|0}l=j}else f=0,l=j}else f=0,s=0,l=0;while(!1);if(mn(ye|0,0,ie|0)|0,Mr(ce|0,ee|0,s<<3|0)|0,be(ee),(s|0)==0&(l|0)==0){de=89;break}else A=A+(f<<3)|0,u=l,c=s}if((de|0)==16)!0&(l&117440512|0)==0?(l=4,de=27):de=21;else if((de|0)==31)Ve(27634,27225,620,27235);else{if((de|0)==41)return be(ce),be(ye),de=10,de|0;if((de|0)==48)return be(ce),be(ye),de=13,de|0;(de|0)==80?Ve(27634,27225,711,27235):(de|0)==81?Ve(27634,27225,723,27235):(de|0)==85&&(Mr(A|0,ce|0,c<<3|0)|0,de=89)}return(de|0)==21?(be(ce),be(ye),de=5,de|0):(de|0)==27?(be(ce),be(ye),de=l,de|0):(de|0)==89?(be(ce),be(ye),de=0,de|0):0}function pT(s,A,c,u,l,f,h){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0,f=f|0,h=h|0;var p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0;if(F=L,L=L+16|0,I=F,!((c|0)>0|(c|0)==0&A>>>0>0))return I=0,L=F,I|0;if((h|0)>=16)return I=12,L=F,I|0;v=0,C=0,E=0,p=0;e:for(;;){if(T=s+(v<<3)|0,g=n[T>>2]|0,T=n[T+4>>2]|0,x=se(g|0,T|0,52)|0,R()|0,(x&15|0)>(h|0)){p=12,g=11;break}if(s0(I,g,T,h),x=I,T=n[x>>2]|0,x=n[x+4>>2]|0,(T|0)==0&(x|0)==0)g=E;else{g=E;do{if(!((p|0)<(f|0)|(p|0)==(f|0)&g>>>0<l>>>0)){g=10;break e}E=u+(g<<3)|0,n[E>>2]=T,n[E+4>>2]=x,g=pe(g|0,p|0,1,0)|0,p=R()|0,A0(I),E=I,T=n[E>>2]|0,x=n[E+4>>2]|0}while(!((T|0)==0&(x|0)==0))}if(v=pe(v|0,C|0,1,0)|0,C=R()|0,(C|0)<(c|0)|(C|0)==(c|0)&v>>>0<A>>>0)E=g;else{p=0,g=11;break}}return(g|0)==10?(I=14,L=F,I|0):(g|0)==11?(L=F,p|0):0}function mT(s,A,c,u,l){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0;v=L,L=L+16|0,E=v;e:do if((c|0)>0|(c|0)==0&A>>>0>0){for(T=0,h=0,f=0,x=0;;){if(g=s+(T<<3)|0,p=n[g>>2]|0,g=n[g+4>>2]|0,!((p|0)==0&(g|0)==0)&&(g=(yo(p,g,u,E)|0)==0,p=E,h=pe(n[p>>2]|0,n[p+4>>2]|0,h|0,f|0)|0,f=R()|0,!g)){f=12;break}if(T=pe(T|0,x|0,1,0)|0,x=R()|0,!((x|0)<(c|0)|(x|0)==(c|0)&T>>>0<A>>>0))break e}return L=v,f|0}else h=0,f=0;while(!1);return n[l>>2]=h,n[l+4>>2]=f,l=0,L=v,l|0}function gT(s,A){return s=s|0,A=A|0,A=se(s|0,A|0,52)|0,R()|0,A&1|0}function Zt(s,A){s=s|0,A=A|0;var c=0,u=0,l=0;if(l=se(s|0,A|0,52)|0,R()|0,l=l&15,!l)return l=0,l|0;for(u=1;;){if(c=se(s|0,A|0,(15-u|0)*3|0)|0,R()|0,c=c&7,c|0){u=5;break}if(u>>>0<l>>>0)u=u+1|0;else{c=0,u=5;break}}return(u|0)==5?c|0:0}function t0(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0;if(x=se(s|0,A|0,52)|0,R()|0,x=x&15,!x)return T=A,x=s,Re(T|0),x|0;for(T=1,c=0;;){switch(u=(15-T|0)*3|0,p=he(7,0,u|0)|0,g=R()|0,f=s&~p,h=A&~g,s=se(s|0,A|0,u|0)|0,R()|0,s&7){case 1:s=5;break;case 5:s=4;break;case 4:s=6;break;case 6:s=2;break;case 2:s=3;break;case 3:s=1;break;default:s=s&7}u=he(s|0,0,u|0)|0,l=R()|0,s=u|f,A=l|h;e:do if(!c)if((u&p|0)==0&(l&g|0)==0)c=0;else if(h=se(s|0,A|0,52)|0,R()|0,h=h&15,!h)c=1;else{c=1;t:for(;;){switch(g=se(s|0,A|0,(15-c|0)*3|0)|0,R()|0,g&7){case 1:break t;case 0:break;default:c=1;break e}if(c>>>0<h>>>0)c=c+1|0;else{c=1;break e}}for(f=1;;){switch(l=(15-f|0)*3|0,c=se(s|0,A|0,l|0)|0,R()|0,u=he(7,0,l|0)|0,u=s&~u,A=A&~(R()|0),c&7){case 1:s=5;break;case 5:s=4;break;case 4:s=6;break;case 6:s=2;break;case 2:s=3;break;case 3:s=1;break;default:s=c&7}if(s=he(s|0,0,l|0)|0,s=s|u,A=R()|0|A,f>>>0<h>>>0)f=f+1|0;else{c=1;break e}}}while(!1);if(T>>>0<x>>>0)T=T+1|0;else break}return Re(A|0),s|0}function On(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0,h=0;if(h=se(s|0,A|0,52)|0,R()|0,h=h&15,!h)return f=A,h=s,Re(f|0),h|0;for(f=1;;){switch(l=(15-f|0)*3|0,c=se(s|0,A|0,l|0)|0,R()|0,u=he(7,0,l|0)|0,u=s&~u,A=A&~(R()|0),c&7){case 1:s=5;break;case 5:s=4;break;case 4:s=6;break;case 6:s=2;break;case 2:s=3;break;case 3:s=1;break;default:s=c&7}if(s=he(s|0,0,l|0)|0,s=s|u,A=R()|0|A,f>>>0<h>>>0)f=f+1|0;else break}return Re(A|0),s|0}function bT(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0;if(x=se(s|0,A|0,52)|0,R()|0,x=x&15,!x)return T=A,x=s,Re(T|0),x|0;for(T=1,c=0;;){switch(u=(15-T|0)*3|0,p=he(7,0,u|0)|0,g=R()|0,f=s&~p,h=A&~g,s=se(s|0,A|0,u|0)|0,R()|0,s&7){case 1:s=3;break;case 3:s=2;break;case 2:s=6;break;case 6:s=4;break;case 4:s=5;break;case 5:s=1;break;default:s=s&7}u=he(s|0,0,u|0)|0,l=R()|0,s=u|f,A=l|h;e:do if(!c)if((u&p|0)==0&(l&g|0)==0)c=0;else if(h=se(s|0,A|0,52)|0,R()|0,h=h&15,!h)c=1;else{c=1;t:for(;;){switch(g=se(s|0,A|0,(15-c|0)*3|0)|0,R()|0,g&7){case 1:break t;case 0:break;default:c=1;break e}if(c>>>0<h>>>0)c=c+1|0;else{c=1;break e}}for(f=1;;){switch(c=(15-f|0)*3|0,u=he(7,0,c|0)|0,u=s&~u,l=A&~(R()|0),s=se(s|0,A|0,c|0)|0,R()|0,s&7){case 1:s=3;break;case 3:s=2;break;case 2:s=6;break;case 6:s=4;break;case 4:s=5;break;case 5:s=1;break;default:s=s&7}if(s=he(s|0,0,c|0)|0,s=s|u,A=R()|0|l,f>>>0<h>>>0)f=f+1|0;else{c=1;break e}}}while(!1);if(T>>>0<x>>>0)T=T+1|0;else break}return Re(A|0),s|0}function r0(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0,h=0;if(h=se(s|0,A|0,52)|0,R()|0,h=h&15,!h)return f=A,h=s,Re(f|0),h|0;for(f=1;;){switch(u=(15-f|0)*3|0,c=he(7,0,u|0)|0,c=s&~c,l=A&~(R()|0),s=se(s|0,A|0,u|0)|0,R()|0,s&7){case 1:s=3;break;case 3:s=2;break;case 2:s=6;break;case 6:s=4;break;case 4:s=5;break;case 5:s=1;break;default:s=s&7}if(s=he(s|0,0,u|0)|0,s=s|c,A=R()|0|l,f>>>0<h>>>0)f=f+1|0;else break}return Re(A|0),s|0}function TT(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0,H=0,N=0,W=0,j=0,ee=0,oe=0,X=0;if(j=L,L=L+16|0,W=j,he(A|0,0,52)|0,c=R()|134225919,!A)return(n[s+4>>2]|0)>2||(n[s+8>>2]|0)>2||(n[s+12>>2]|0)>2?(N=0,W=0,Re(N|0),L=j,W|0):(he(Ju(s)|0,0,45)|0,N=R()|0|c,W=-1,Re(N|0),L=j,W|0);n[W>>2]=n[s>>2],n[W+4>>2]=n[s+4>>2],n[W+8>>2]=n[s+8>>2],n[W+12>>2]=n[s+12>>2],N=W+4|0;e:do if((A|0)>0)for(F=W+8|0,U=W+12|0,I=A,E=n[F>>2]|0,v=n[U>>2]|0,A=-1,x=n[W+4>>2]|0;;){C=I,I=I+-1|0,s=x-v|0,u=E-v|0,C&1?(f=jr(+((s*3|0)-u|0)*.14285714285714285)|0,n[N>>2]=f,s=jr(+((u<<1)+s|0)*.14285714285714285)|0,n[F>>2]=s,n[U>>2]=0,u=s-f|0,l=0-f|0,(f|0)<0?(n[F>>2]=u,n[U>>2]=l,n[N>>2]=0,s=u,h=0):(h=f,l=0),f=h-s|0,u=l-s|0,(s|0)<0?(n[N>>2]=f,n[U>>2]=u,n[F>>2]=0,h=f,f=0):(u=l,f=s),s=h-u|0,l=f-u|0,(u|0)<0?(n[N>>2]=s,n[F>>2]=l,n[U>>2]=0,f=0):(l=f,s=h,f=u),u=(l|0)<(s|0)?l:s,u=(f|0)<(u|0)?f:u,(u|0)>0&&(f=f-u|0,l=l-u|0,s=s-u|0,n[N>>2]=s,n[F>>2]=l,n[U>>2]=f),oe=l+(s*3|0)|0,ee=(oe|0)<0,T=f+(l*3|0)-(ee?oe:0)|0,g=(T|0)<0,u=(f*3|0)+s-(ee?oe:0)-(g?T:0)|0,p=(u|0)<0,X=p?0:u,h=(g?0:T)-(p?u:0)|0,u=(ee?0:oe)-(g?T:0)-(p?u:0)|0,p=(h|0)<(u|0)?h:u,p=(X|0)<(p|0)?X:p,T=(p|0)>0,g=T?p:0,h=h-(T?p:0)|0,p=X-(T?p:0)|0,T=f):(p=jr(+((s<<1)+u|0)*.14285714285714285)|0,n[N>>2]=p,l=jr(+((u*3|0)-s|0)*.14285714285714285)|0,n[F>>2]=l,n[U>>2]=0,u=l-p|0,s=0-p|0,(p|0)<0?(n[F>>2]=u,n[U>>2]=s,n[N>>2]=0,l=u,p=0):s=0,h=p-l|0,u=s-l|0,(l|0)<0?(n[N>>2]=h,n[U>>2]=u,n[F>>2]=0,f=u,l=0):(f=s,h=p),s=h-f|0,u=l-f|0,(f|0)<0?(n[N>>2]=s,n[F>>2]=u,n[U>>2]=0,l=u,f=0):s=h,u=(l|0)<(s|0)?l:s,u=(f|0)<(u|0)?f:u,(u|0)>0&&(f=f-u|0,l=l-u|0,s=s-u|0,n[N>>2]=s,n[F>>2]=l,n[U>>2]=f),oe=f+(s*3|0)|0,X=(oe|0)<0,T=(l*3|0)+s-(X?oe:0)|0,g=(T|0)<0,u=(f*3|0)+l-(X?oe:0)-(g?T:0)|0,p=(u|0)<0,ee=p?0:u,h=(g?0:T)-(p?u:0)|0,u=(X?0:oe)-(g?T:0)-(p?u:0)|0,p=(h|0)<(u|0)?h:u,p=(ee|0)<(p|0)?ee:p,T=(p|0)>0,g=T?p:0,h=h-(T?p:0)|0,p=ee-(T?p:0)|0,T=f),u=x+(g-u)|0,f=(u|0)<0,g=E-h-(f?u:0)|0,h=(g|0)<0,v=v-p+(f?0-u|0:0)+(h?0-g|0:0)|0,x=(v|0)<0,p=x?0:v,X=(h?0:g)-(x?v:0)|0,v=(f?0:u)-(h?g:0)-(x?v:0)|0,x=(X|0)<(v|0)?X:v,x=(p|0)<(x|0)?p:x,g=(x|0)>0,v=v-(g?x:0)|0,h=(15-C|0)*3|0,u=he(7,0,h|0)|0,u=A&~u,f=c&~(R()|0),E=(v|0)<0,oe=E?v:0,X=X-(g?x:0)-oe|0,ee=(X|0)<0,oe=(ee?0-X|0:0)+(p-(g?x:0)-oe)|0,c=(oe|0)<0,A=c?0:oe,oe=c?oe:0,c=(ee?0:X)-oe|0,oe=(E?0:v)-(ee?X:0)-oe|0,X=(c|0)<(oe|0)?c:oe,X=(A|0)<(X|0)?A:X,X=(X|0)>0?X:0,A=A-X|0,c=c-X|0;t:do switch(oe-X|0){case 0:switch(c|0){case 0:A=(A|0)==0?0:(A|0)==1?1:7;break t;case 1:A=(A|0)==0?2:(A|0)==1?3:7;break t;default:H=36;break t}case 1:switch(c|0){case 0:A=(A|0)==0?4:(A|0)==1?5:7;break t;case 1:if(A){H=36;break t}else{A=6;break t}default:H=36;break t}default:H=36}while(!1);if((H|0)==36&&(H=0,A=7),A=he(A|0,0,h|0)|0,A=A|u,c=R()|0|f,(C|0)<=1)break e;E=l,v=T,x=s}else A=-1,s=n[N>>2]|0;while(!1);e:do if((s|0)<=2&&(n[W+8>>2]|0)<=2&&(n[W+12>>2]|0)<=2){if(u=Ju(W)|0,s=he(u|0,0,45)|0,A=s|A,s=R()|0|c&-1040385,g=jb(W)|0,!(at(u)|0)){if((g|0)<=0)break;for(p=0;;){h=se(A|0,s|0,52)|0,R()|0,h=h&15;t:do if(h)for(f=1;;){switch(l=(15-f|0)*3|0,c=se(A|0,s|0,l|0)|0,R()|0,u=he(7,0,l|0)|0,A=A&~u,u=s&~(R()|0),c&7){case 1:s=5;break;case 5:s=4;break;case 4:s=6;break;case 6:s=2;break;case 2:s=3;break;case 3:s=1;break;default:s=c&7}if(s=he(s|0,0,l|0)|0,A=s|A,s=R()|0|u,f>>>0<h>>>0)f=f+1|0;else break t}while(!1);if(p=p+1|0,(p|0)==(g|0))break e}}h=se(A|0,s|0,52)|0,R()|0,h=h&15;t:do if(h){c=1;r:for(;;){switch(X=se(A|0,s|0,(15-c|0)*3|0)|0,R()|0,X&7){case 1:break r;case 0:break;default:break t}if(c>>>0<h>>>0)c=c+1|0;else break t}if(Zu(u,n[W>>2]|0)|0)for(f=1;;){switch(c=(15-f|0)*3|0,u=he(7,0,c|0)|0,u=A&~u,l=s&~(R()|0),s=se(A|0,s|0,c|0)|0,R()|0,s&7){case 1:s=3;break;case 3:s=2;break;case 2:s=6;break;case 6:s=4;break;case 4:s=5;break;case 5:s=1;break;default:s=s&7}if(A=he(s|0,0,c|0)|0,A=A|u,s=R()|0|l,f>>>0<h>>>0)f=f+1|0;else break t}else for(f=1;;){switch(l=(15-f|0)*3|0,c=se(A|0,s|0,l|0)|0,R()|0,u=he(7,0,l|0)|0,A=A&~u,u=s&~(R()|0),c&7){case 1:s=5;break;case 5:s=4;break;case 4:s=6;break;case 6:s=2;break;case 2:s=3;break;case 3:s=1;break;default:s=c&7}if(s=he(s|0,0,l|0)|0,A=s|A,s=R()|0|u,f>>>0<h>>>0)f=f+1|0;else break t}}while(!1);if((g|0)>0){c=0;do A=t0(A,s)|0,s=R()|0,c=c+1|0;while((c|0)!=(g|0))}}else A=0,s=0;while(!1);return oe=s,X=A,Re(oe|0),L=j,X|0}function pr(s){return s=s|0,(s|0)%2|0}function n0(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0;if(x=L,L=L+64|0,p=x+24|0,g=x+48|0,T=x,A>>>0>15)return T=4,L=x,T|0;if(f=+P[s>>3],P[st>>3]=f,(n[st+4>>2]&2146435072|0)==2146435072||(u=+P[s+8>>3],P[st>>3]=u,(n[st+4>>2]&2146435072|0)==2146435072))return T=3,L=x,T|0;l=+De(+f),E=l*+De(+u),l=l*+tt(+u),u=+tt(+f),P[T>>3]=E,P[T+8>>3]=l,P[T+16>>3]=u,P[st>>3]=E;do if((n[st+4>>2]&2146435072|0)!=2146435072&&(P[st>>3]=u,s=n[st+4>>2]|0,P[st>>3]=l,!((n[st+4>>2]&2146435072|0)==2146435072|!0&(s&2146435072|0)==2146435072)))if(n[p>>2]=n[T>>2],n[p+4>>2]=n[T+4>>2],n[p+8>>2]=n[T+8>>2],n[p+12>>2]=n[T+12>>2],n[p+16>>2]=n[T+16>>2],n[p+20>>2]=n[T+20>>2],AT(p,A,g),g=TT(g,A)|0,T=R()|0,n[c>>2]=g,n[c+4>>2]=T,(g|0)==0&(T|0)==0)Ve(27634,27225,1073,27248);else{h=0;break}else h=2;while(!1);return T=h,L=x,T|0}function i0(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0;if(C=c+4|0,I=se(s|0,A|0,52)|0,R()|0,I=I&15,v=se(s|0,A|0,45)|0,R()|0,u=(I|0)==0,at(v&127)|0){if(u)return I=1,I|0;u=1}else{if(u)return I=0,I|0;(n[C>>2]|0)==0&&(n[c+8>>2]|0)==0?u=(n[c+12>>2]|0)!=0&1:u=1}for(v=c+8|0,E=c+12|0,x=1,c=n[C>>2]|0,h=n[v>>2]|0,f=n[E>>2]|0;l=c*3|0,p=h*3|0,T=f*3|0,x&1?(g=h+l|0,n[C>>2]=g,f=f+p|0,n[v>>2]=f,l=T+c|0,n[E>>2]=l,c=f-g|0,h=l-g|0,(g|0)<0?(n[v>>2]=c,n[E>>2]=h,n[C>>2]=0,p=0,l=h):(c=f,p=g),h=p-c|0,f=l-c|0,(c|0)<0?(n[C>>2]=h,n[E>>2]=f,n[v>>2]=0,p=h,l=0):(f=l,l=c),c=p-f|0,h=l-f|0,(f|0)<0?(n[C>>2]=c,n[v>>2]=h,n[E>>2]=0,f=0):(h=l,c=p),l=(h|0)<(c|0)?h:c,l=(f|0)<(l|0)?f:l,(l|0)>0&&(f=f-l|0,h=h-l|0,c=c-l|0,n[C>>2]=c,n[v>>2]=h,n[E>>2]=f)):(g=p+c|0,p=f+l|0,n[C>>2]=p,n[v>>2]=g,l=T+h|0,n[E>>2]=l,c=g-p|0,f=l-p|0,(p|0)<0?(n[v>>2]=c,n[E>>2]=f,n[C>>2]=0,p=0,l=f):c=g,h=p-c|0,f=l-c|0,(c|0)<0?(n[C>>2]=h,n[E>>2]=f,n[v>>2]=0,p=h,l=0):(f=l,l=c),c=p-f|0,h=l-f|0,(f|0)<0?(n[C>>2]=c,n[v>>2]=h,n[E>>2]=0,f=0):(h=l,c=p),l=(h|0)<(c|0)?h:c,l=(f|0)<(l|0)?f:l,(l|0)>0&&(f=f-l|0,h=h-l|0,c=c-l|0,n[C>>2]=c,n[v>>2]=h,n[E>>2]=f)),l=se(s|0,A|0,(15-x|0)*3|0)|0,R()|0,l=l&7,(l+-1|0)>>>0<6&&(g=n[22032+(l*12|0)+4>>2]|0,T=n[22032+(l*12|0)+8>>2]|0,p=(n[22032+(l*12|0)>>2]|0)+c|0,n[C>>2]=p,h=g+h|0,n[v>>2]=h,c=T+f|0,n[E>>2]=c,f=h-p|0,l=c-p|0,(p|0)<0&&(n[v>>2]=f,n[E>>2]=l,n[C>>2]=0,p=0,c=l,h=f),l=p-h|0,f=c-h|0,(h|0)<0?(n[C>>2]=l,n[E>>2]=f,n[v>>2]=0,p=l,h=0):f=c,c=p-f|0,l=h-f|0,(f|0)<0?(n[C>>2]=c,n[v>>2]=l,n[E>>2]=0,h=l,f=0):c=p,l=(h|0)<(c|0)?h:c,l=(f|0)<(l|0)?f:l,(l|0)>0&&(f=f-l|0,h=h-l|0,c=c-l|0,n[C>>2]=c,n[v>>2]=h,n[E>>2]=f)),x>>>0<I>>>0;)x=x+1|0;return u|0}function fi(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0;if(I=L,L=L+16|0,E=I,v=se(s|0,A|0,45)|0,R()|0,v=v&127,v>>>0>121)return n[c>>2]=0,n[c+4>>2]=0,n[c+8>>2]=0,n[c+12>>2]=0,C=5,L=I,C|0;e:do if((at(v)|0)!=0&&(p=se(s|0,A|0,52)|0,R()|0,p=p&15,(p|0)!=0)){u=1;t:for(;;){switch(C=se(s|0,A|0,(15-u|0)*3|0)|0,R()|0,C&7){case 5:break t;case 0:break;default:T=A;break e}if(u>>>0<p>>>0)u=u+1|0;else{T=A;break e}}for(h=1,u=A;;){switch(A=(15-h|0)*3|0,l=he(7,0,A|0)|0,l=s&~l,f=u&~(R()|0),u=se(s|0,u|0,A|0)|0,R()|0,u&7){case 1:u=3;break;case 3:u=2;break;case 2:u=6;break;case 6:u=4;break;case 4:u=5;break;case 5:u=1;break;default:u=u&7}if(s=he(u|0,0,A|0)|0,s=s|l,u=R()|0|f,h>>>0<p>>>0)h=h+1|0;else{T=u;break e}}}else T=A;while(!1);if(C=7696+(v*28|0)|0,n[c>>2]=n[C>>2],n[c+4>>2]=n[C+4>>2],n[c+8>>2]=n[C+8>>2],n[c+12>>2]=n[C+12>>2],!(i0(s,T,c)|0))return C=0,L=I,C|0;if(C=c+4|0,n[E>>2]=n[C>>2],n[E+4>>2]=n[C+4>>2],n[E+8>>2]=n[C+8>>2],g=se(s|0,T|0,52)|0,R()|0,x=g&15,g&1?(f=n[C>>2]|0,p=c+8|0,l=n[p>>2]|0,g=c+12|0,A=n[g>>2]|0,u=(l*3|0)+f|0,f=A+(f*3|0)|0,n[C>>2]=f,n[p>>2]=u,l=(A*3|0)+l|0,n[g>>2]=l,A=u-f|0,h=l-f|0,(f|0)<0&&(n[p>>2]=A,n[g>>2]=h,n[C>>2]=0,u=A,f=0,l=h),h=f-u|0,A=l-u|0,(u|0)<0?(n[C>>2]=h,n[g>>2]=A,n[p>>2]=0,u=0):(A=l,h=f),f=h-A|0,l=u-A|0,(A|0)<0?(n[C>>2]=f,n[p>>2]=l,n[g>>2]=0,A=0):(l=u,f=h),u=(l|0)<(f|0)?l:f,u=(A|0)<(u|0)?A:u,(u|0)>0&&(n[C>>2]=f-u,n[p>>2]=l-u,n[g>>2]=A-u),l=x+1|0):l=x,!(at(v)|0))u=0;else{e:do if(!x)u=0;else for(A=1;;){if(u=se(s|0,T|0,(15-A|0)*3|0)|0,R()|0,u=u&7,u|0)break e;if(A>>>0<x>>>0)A=A+1|0;else{u=0;break}}while(!1);u=(u|0)==4&1}if(!(ui(c,l,u,0)|0))(l|0)!=(x|0)&&(n[C>>2]=n[E>>2],n[C+4>>2]=n[E+4>>2],n[C+8>>2]=n[E+8>>2]);else{if(at(v)|0)do;while((ui(c,l,0,0)|0)!=0);(l|0)!=(x|0)&&(p=c+12|0,s=n[p>>2]|0,u=(n[C>>2]|0)-s|0,h=c+8|0,s=(n[h>>2]|0)-s|0,A=jr(+((u<<1)+s|0)*.14285714285714285)|0,n[C>>2]=A,u=jr(+((s*3|0)-u|0)*.14285714285714285)|0,n[h>>2]=u,n[p>>2]=0,s=u-A|0,l=0-A|0,(A|0)<0?(n[h>>2]=s,n[p>>2]=l,n[C>>2]=0,u=s,A=0):l=0,f=A-u|0,s=l-u|0,(u|0)<0?(n[C>>2]=f,n[p>>2]=s,n[h>>2]=0,A=f,u=0):s=l,f=A-s|0,l=u-s|0,(s|0)<0?(n[C>>2]=f,n[h>>2]=l,n[p>>2]=0,A=f,s=0):l=u,u=(l|0)<(A|0)?l:A,u=(s|0)<(u|0)?s:u,(u|0)>0&&(n[C>>2]=A-u,n[h>>2]=l-u,n[p>>2]=s-u))}return C=0,L=I,C|0}function hi(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0;return h=L,L=L+48|0,u=h+24|0,l=h,f=fi(s,A,u)|0,f?(L=h,f|0):(f=se(s|0,A|0,52)|0,R()|0,aT(u,f&15,l),g=+go(+ +P[l+16>>3]),p=+Vt(+ +P[l+8>>3],+ +P[l>>3]),P[c>>3]=g,P[c+8>>3]=p,f=0,L=h,f|0)}function Dn(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0;if(h=L,L=L+16|0,f=h,u=fi(s,A,f)|0,u|0)return f=u,L=h,f|0;u=se(s|0,A|0,45)|0,R()|0,u=(at(u&127)|0)==0,l=se(s|0,A|0,52)|0,R()|0,l=l&15;e:do if(!u){if(l|0)for(u=1;;){if(p=he(7,0,(15-u|0)*3|0)|0,!((p&s|0)==0&((R()|0)&A|0)==0))break e;if(u>>>0<l>>>0)u=u+1|0;else break}return Ya(f,l,0,5,c),p=0,L=h,p|0}while(!1);return Ja(f,l,0,6,c),p=0,L=h,p|0}function yT(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0;if(l=se(s|0,A|0,45)|0,R()|0,!(at(l&127)|0))return l=2,n[c>>2]=l,0;if(l=se(s|0,A|0,52)|0,R()|0,l=l&15,!l)return l=5,n[c>>2]=l,0;for(u=1;;){if(f=he(7,0,(15-u|0)*3|0)|0,!((f&s|0)==0&((R()|0)&A|0)==0)){u=2,s=6;break}if(u>>>0<l>>>0)u=u+1|0;else{u=5,s=6;break}}return(s|0)==6&&(n[c>>2]=u),0}function uf(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0;E=L,L=L+128|0,T=E+112|0,f=E+96|0,x=E,l=se(s|0,A|0,52)|0,R()|0,p=l&15,n[T>>2]=p,h=se(s|0,A|0,45)|0,R()|0,h=h&127;e:do if(at(h)|0){if(p|0)for(u=1;;){if(g=he(7,0,(15-u|0)*3|0)|0,!((g&s|0)==0&((R()|0)&A|0)==0)){l=0;break e}if(u>>>0<p>>>0)u=u+1|0;else break}if(l&1)l=1;else return g=he(p+1|0,0,52)|0,x=R()|0|A&-15728641,T=he(7,0,(14-p|0)*3|0)|0,x=uf((g|s)&~T,x&~(R()|0),c)|0,L=E,x|0}else l=0;while(!1);if(u=fi(s,A,f)|0,!u){l?(sf(f,T,x),g=5):(Af(f,T,x),g=6);e:do if(at(h)|0)if(!p)s=5;else for(u=1;;){if(h=he(7,0,(15-u|0)*3|0)|0,!((h&s|0)==0&((R()|0)&A|0)==0)){s=2;break e}if(u>>>0<p>>>0)u=u+1|0;else{s=5;break}}else s=2;while(!1);mn(c|0,-1,s<<2|0)|0;e:do if(l)for(f=0;;){if(h=x+(f<<4)|0,cT(h,n[T>>2]|0)|0,h=n[h>>2]|0,p=n[c>>2]|0,(p|0)==-1|(p|0)==(h|0))u=c;else{l=0;do{if(l=l+1|0,l>>>0>=s>>>0){u=1;break e}u=c+(l<<2)|0,p=n[u>>2]|0}while(!((p|0)==-1|(p|0)==(h|0)))}if(n[u>>2]=h,f=f+1|0,f>>>0>=g>>>0){u=0;break}}else for(f=0;;){if(h=x+(f<<4)|0,ui(h,n[T>>2]|0,0,1)|0,h=n[h>>2]|0,p=n[c>>2]|0,(p|0)==-1|(p|0)==(h|0))u=c;else{l=0;do{if(l=l+1|0,l>>>0>=s>>>0){u=1;break e}u=c+(l<<2)|0,p=n[u>>2]|0}while(!((p|0)==-1|(p|0)==(h|0)))}if(n[u>>2]=h,f=f+1|0,f>>>0>=g>>>0){u=0;break}}while(!1)}return x=u,L=E,x|0}function xT(){return 12}function o0(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0;if(s>>>0>15)return p=4,p|0;if(he(s|0,0,52)|0,p=R()|134225919,!s){c=0,u=0;do at(u)|0&&(he(u|0,0,45)|0,h=p|(R()|0),s=A+(c<<3)|0,n[s>>2]=-1,n[s+4>>2]=h,c=c+1|0),u=u+1|0;while((u|0)!=122);return c=0,c|0}c=0,h=0;do{if(at(h)|0){for(he(h|0,0,45)|0,u=1,l=-1,f=p|(R()|0);g=he(7,0,(15-u|0)*3|0)|0,l=l&~g,f=f&~(R()|0),(u|0)!=(s|0);)u=u+1|0;g=A+(c<<3)|0,n[g>>2]=l,n[g+4>>2]=f,c=c+1|0}h=h+1|0}while((h|0)!=122);return c=0,c|0}function _T(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0,H=0,N=0;if(N=L,L=L+16|0,U=N,H=se(s|0,A|0,52)|0,R()|0,H=H&15,c>>>0>15)return H=4,L=N,H|0;if((H|0)<(c|0))return H=12,L=N,H|0;if((H|0)!=(c|0))if(f=he(c|0,0,52)|0,f=f|s,p=R()|0|A&-15728641,(H|0)>(c|0)){g=c;do F=he(7,0,(14-g|0)*3|0)|0,g=g+1|0,f=F|f,p=R()|0|p;while((g|0)<(H|0));F=f}else F=f;else F=s,p=A;I=se(F|0,p|0,45)|0,R()|0;e:do if(at(I&127)|0){if(g=se(F|0,p|0,52)|0,R()|0,g=g&15,g|0)for(f=1;;){if(I=he(7,0,(15-f|0)*3|0)|0,!((I&F|0)==0&((R()|0)&p|0)==0)){T=33;break e}if(f>>>0<g>>>0)f=f+1|0;else break}if(I=u,n[I>>2]=0,n[I+4>>2]=0,(H|0)>(c|0)){for(I=A&-15728641,C=H;;){if(v=C,C=C+-1|0,C>>>0>15|(H|0)<(C|0)){T=19;break}if((H|0)!=(C|0))if(f=he(C|0,0,52)|0,f=f|s,g=R()|0|I,(H|0)<(v|0))E=f;else{T=C;do E=he(7,0,(14-T|0)*3|0)|0,T=T+1|0,f=E|f,g=R()|0|g;while((T|0)<(H|0));E=f}else E=s,g=A;if(x=se(E|0,g|0,45)|0,R()|0,!(at(x&127)|0))f=0;else{x=se(E|0,g|0,52)|0,R()|0,x=x&15;t:do if(!x)f=0;else for(T=1;;){if(f=se(E|0,g|0,(15-T|0)*3|0)|0,R()|0,f=f&7,f|0)break t;if(T>>>0<x>>>0)T=T+1|0;else{f=0;break}}while(!1);f=(f|0)==0&1}if(g=se(s|0,A|0,(15-v|0)*3|0)|0,R()|0,g=g&7,(g|0)==7){l=5,T=42;break}if(f=(f|0)!=0,(g|0)==1&f){l=5,T=42;break}if(E=g+(((g|0)!=0&f)<<31>>31)|0,E|0&&(T=H-v|0,T=hn(7,0,T,((T|0)<0)<<31>>31)|0,x=R()|0,f?(f=lt(T|0,x|0,5,0)|0,f=pe(f|0,R()|0,-5,-1)|0,f=dn(f|0,R()|0,6,0)|0,f=pe(f|0,R()|0,1,0)|0,g=R()|0):(f=T,g=x),v=E+-1|0,v=lt(T|0,x|0,v|0,((v|0)<0)<<31>>31|0)|0,v=pe(f|0,g|0,v|0,R()|0)|0,E=R()|0,x=u,x=pe(v|0,E|0,n[x>>2]|0,n[x+4>>2]|0)|0,E=R()|0,v=u,n[v>>2]=x,n[v+4>>2]=E),(C|0)<=(c|0)){T=37;break}}if((T|0)==19)Ve(27634,27225,1407,27259);else if((T|0)==37){h=u,l=n[h+4>>2]|0,h=n[h>>2]|0;break}else if((T|0)==42)return L=N,l|0}else l=0,h=0}else T=33;while(!1);e:do if((T|0)==33)if(I=u,n[I>>2]=0,n[I+4>>2]=0,(H|0)>(c|0)){for(f=H;;){if(l=se(s|0,A|0,(15-f|0)*3|0)|0,R()|0,l=l&7,(l|0)==7){l=5;break}if(h=H-f|0,h=hn(7,0,h,((h|0)<0)<<31>>31)|0,l=lt(h|0,R()|0,l|0,0)|0,h=R()|0,I=u,h=pe(n[I>>2]|0,n[I+4>>2]|0,l|0,h|0)|0,l=R()|0,I=u,n[I>>2]=h,n[I+4>>2]=l,f=f+-1|0,(f|0)<=(c|0))break e}return L=N,l|0}else l=0,h=0;while(!1);return yo(F,p,H,U)|0&&Ve(27634,27225,1367,27274),H=U,U=n[H+4>>2]|0,((l|0)>-1|(l|0)==-1&h>>>0>4294967295)&((U|0)>(l|0)|((U|0)==(l|0)?(n[H>>2]|0)>>>0>h>>>0:0))?(H=0,L=N,H|0):(Ve(27634,27225,1447,27259),0)}function wT(s,A,c,u,l,f){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0,f=f|0;var h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0;if(E=L,L=L+16|0,h=E,l>>>0>15)return f=4,L=E,f|0;if(p=se(c|0,u|0,52)|0,R()|0,p=p&15,(p|0)>(l|0))return f=12,L=E,f|0;if(yo(c,u,l,h)|0&&Ve(27634,27225,1367,27274),x=h,T=n[x+4>>2]|0,!(((A|0)>-1|(A|0)==-1&s>>>0>4294967295)&((T|0)>(A|0)|((T|0)==(A|0)?(n[x>>2]|0)>>>0>s>>>0:0))))return f=2,L=E,f|0;x=l-p|0,l=he(l|0,0,52)|0,g=R()|0|u&-15728641,T=f,n[T>>2]=l|c,n[T+4>>2]=g,T=se(c|0,u|0,45)|0,R()|0;e:do if(at(T&127)|0){if(p|0)for(h=1;;){if(T=he(7,0,(15-h|0)*3|0)|0,!((T&c|0)==0&((R()|0)&u|0)==0))break e;if(h>>>0<p>>>0)h=h+1|0;else break}if((x|0)<1)return f=0,L=E,f|0;for(T=p^15,u=-1,g=1,h=1;;){p=x-g|0,p=hn(7,0,p,((p|0)<0)<<31>>31)|0,c=R()|0;do if(h)if(h=lt(p|0,c|0,5,0)|0,h=pe(h|0,R()|0,-5,-1)|0,h=dn(h|0,R()|0,6,0)|0,l=R()|0,(A|0)>(l|0)|(A|0)==(l|0)&s>>>0>h>>>0){A=pe(s|0,A|0,-1,-1)|0,A=Mt(A|0,R()|0,h|0,l|0)|0,h=R()|0,v=f,I=n[v>>2]|0,v=n[v+4>>2]|0,F=(T+u|0)*3|0,C=he(7,0,F|0)|0,v=v&~(R()|0),u=dn(A|0,h|0,p|0,c|0)|0,s=R()|0,l=pe(u|0,s|0,2,0)|0,F=he(l|0,R()|0,F|0)|0,v=R()|0|v,l=f,n[l>>2]=F|I&~C,n[l+4>>2]=v,s=lt(u|0,s|0,p|0,c|0)|0,s=Mt(A|0,h|0,s|0,R()|0)|0,h=0,A=R()|0;break}else{F=f,C=n[F>>2]|0,F=n[F+4>>2]|0,I=he(7,0,(T+u|0)*3|0)|0,F=F&~(R()|0),h=f,n[h>>2]=C&~I,n[h+4>>2]=F,h=1;break}else C=f,l=n[C>>2]|0,C=n[C+4>>2]|0,u=(T+u|0)*3|0,v=he(7,0,u|0)|0,C=C&~(R()|0),F=dn(s|0,A|0,p|0,c|0)|0,h=R()|0,u=he(F|0,h|0,u|0)|0,C=R()|0|C,I=f,n[I>>2]=u|l&~v,n[I+4>>2]=C,h=lt(F|0,h|0,p|0,c|0)|0,s=Mt(s|0,A|0,h|0,R()|0)|0,h=0,A=R()|0;while(!1);if((x|0)>(g|0))u=~g,g=g+1|0;else{A=0;break}}return L=E,A|0}while(!1);if((x|0)<1)return F=0,L=E,F|0;for(l=p^15,h=1;;)if(I=x-h|0,I=hn(7,0,I,((I|0)<0)<<31>>31)|0,F=R()|0,g=f,c=n[g>>2]|0,g=n[g+4>>2]|0,p=(l-h|0)*3|0,u=he(7,0,p|0)|0,g=g&~(R()|0),v=dn(s|0,A|0,I|0,F|0)|0,C=R()|0,p=he(v|0,C|0,p|0)|0,g=R()|0|g,T=f,n[T>>2]=p|c&~u,n[T+4>>2]=g,F=lt(v|0,C|0,I|0,F|0)|0,s=Mt(s|0,A|0,F|0,R()|0)|0,A=R()|0,(x|0)<=(h|0)){A=0;break}else h=h+1|0;return L=E,A|0}function s0(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0;l=se(A|0,c|0,52)|0,R()|0,l=l&15,(A|0)==0&(c|0)==0|((u|0)>15|(l|0)>(u|0))?(f=-1,A=-1,c=0,l=0):(A=cf(A,c,l+1|0,u)|0,h=(R()|0)&-15728641,c=he(u|0,0,52)|0,c=A|c,h=h|(R()|0),A=(nt(c,h)|0)==0,f=l,A=A?-1:u,l=h),h=s,n[h>>2]=c,n[h+4>>2]=l,n[s+8>>2]=f,n[s+12>>2]=A}function ff(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0;if(l=se(s|0,A|0,52)|0,R()|0,l=l&15,f=u+8|0,n[f>>2]=l,(s|0)==0&(A|0)==0|((c|0)>15|(l|0)>(c|0))){c=u,n[c>>2]=0,n[c+4>>2]=0,n[f>>2]=-1,n[u+12>>2]=-1;return}if(s=cf(s,A,l+1|0,c)|0,f=(R()|0)&-15728641,l=he(c|0,0,52)|0,l=s|l,f=f|(R()|0),s=u,n[s>>2]=l,n[s+4>>2]=f,s=u+12|0,nt(l,f)|0){n[s>>2]=c;return}else{n[s>>2]=-1;return}}function A0(s){s=s|0;var A=0,c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0;if(c=s,A=n[c>>2]|0,c=n[c+4>>2]|0,!((A|0)==0&(c|0)==0)&&(u=se(A|0,c|0,52)|0,R()|0,u=u&15,p=he(1,0,(u^15)*3|0)|0,A=pe(p|0,R()|0,A|0,c|0)|0,c=R()|0,p=s,n[p>>2]=A,n[p+4>>2]=c,p=s+8|0,h=n[p>>2]|0,!((u|0)<(h|0)))){for(g=s+12|0,f=u;;){if((f|0)==(h|0)){u=5;break}if(T=(f|0)==(n[g>>2]|0),l=(15-f|0)*3|0,u=se(A|0,c|0,l|0)|0,R()|0,u=u&7,T&((u|0)==1&!0)){u=7;break}if(!((u|0)==7&!0)){u=10;break}if(T=he(1,0,l|0)|0,A=pe(A|0,c|0,T|0,R()|0)|0,c=R()|0,T=s,n[T>>2]=A,n[T+4>>2]=c,(f|0)>(h|0))f=f+-1|0;else{u=10;break}}if((u|0)==5){T=s,n[T>>2]=0,n[T+4>>2]=0,n[p>>2]=-1,n[g>>2]=-1;return}else if((u|0)==7){h=he(1,0,l|0)|0,h=pe(A|0,c|0,h|0,R()|0)|0,p=R()|0,T=s,n[T>>2]=h,n[T+4>>2]=p,n[g>>2]=f+-1;return}else if((u|0)==10)return}}function xo(s){s=+s;var A=0;return A=s<0?s+6.283185307179586:s,+(s>=6.283185307179586?A+-6.283185307179586:A)}function sr(s,A){switch(s=+s,A=A|0,A|0){case 1:s=s<0?s+6.283185307179586:s;break;case 2:s=s>0?s+-6.283185307179586:s;break;default:}return+s}function ET(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0;return l=+P[A>>3],u=+P[s>>3],f=+tt(+((l-u)*.5)),c=+tt(+((+P[A+8>>3]-+P[s+8>>3])*.5)),c=f*f+c*(+De(+l)*+De(+u)*c),+(+Vt(+ +dt(+c),+ +dt(+(1-c)))*2)}function _o(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0;return l=+P[A>>3],u=+P[s>>3],f=+tt(+((l-u)*.5)),c=+tt(+((+P[A+8>>3]-+P[s+8>>3])*.5)),c=f*f+c*(+De(+l)*+De(+u)*c),+(+Vt(+ +dt(+c),+ +dt(+(1-c)))*2*6371.007180918475)}function vT(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0;return l=+P[A>>3],u=+P[s>>3],f=+tt(+((l-u)*.5)),c=+tt(+((+P[A+8>>3]-+P[s+8>>3])*.5)),c=f*f+c*(+De(+l)*+De(+u)*c),+(+Vt(+ +dt(+c),+ +dt(+(1-c)))*2*6371.007180918475*1e3)}function hf(s,A){return s=s|0,A=A|0,s>>>0>15?(A=4,A|0):(P[A>>3]=+P[20624+(s<<3)>>3],A=0,A|0)}function ST(s,A){return s=s|0,A=A|0,s>>>0>15?(A=4,A|0):(P[A>>3]=+P[20752+(s<<3)>>3],A=0,A|0)}function CT(s,A){return s=s|0,A=A|0,s>>>0>15?(A=4,A|0):(P[A>>3]=+P[20880+(s<<3)>>3],A=0,A|0)}function IT(s,A){return s=s|0,A=A|0,s>>>0>15?(A=4,A|0):(P[A>>3]=+P[21008+(s<<3)>>3],A=0,A|0)}function ys(s,A){s=s|0,A=A|0;var c=0;return s>>>0>15?(A=4,A|0):(c=hn(7,0,s,((s|0)<0)<<31>>31)|0,c=lt(c|0,R()|0,120,0)|0,s=R()|0,n[A>>2]=c|2,n[A+4>>2]=s,A=0,A|0)}function MT(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0;if(p=L,L=L+176|0,h=p,s=bo(s,A,h)|0,s|0)return h=s,L=p,h|0;if(P[c>>3]=0,s=n[h>>2]|0,(s|0)<=1)return h=0,L=p,h|0;A=s+-1|0,s=0,u=+P[h+8>>3],l=+P[h+16>>3],f=0;do s=s+1|0,T=u,u=+P[h+8+(s<<4)>>3],x=+tt(+((u-T)*.5)),g=l,l=+P[h+8+(s<<4)+8>>3],g=+tt(+((l-g)*.5)),g=x*x+g*(+De(+u)*+De(+T)*g),f=f+ +Vt(+ +dt(+g),+ +dt(+(1-g)))*2;while((s|0)<(A|0));return P[c>>3]=f,h=0,L=p,h|0}function LT(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0;if(p=L,L=L+176|0,h=p,s=bo(s,A,h)|0,s|0)return h=s,f=+P[c>>3],f=f*6371.007180918475,P[c>>3]=f,L=p,h|0;if(P[c>>3]=0,s=n[h>>2]|0,(s|0)<=1)return h=0,f=0,f=f*6371.007180918475,P[c>>3]=f,L=p,h|0;A=s+-1|0,s=0,u=+P[h+8>>3],l=+P[h+16>>3],f=0;do s=s+1|0,T=u,u=+P[h+8+(s<<4)>>3],x=+tt(+((u-T)*.5)),g=l,l=+P[h+8+(s<<4)+8>>3],g=+tt(+((l-g)*.5)),g=x*x+g*(+De(+T)*+De(+u)*g),f=f+ +Vt(+ +dt(+g),+ +dt(+(1-g)))*2;while((s|0)!=(A|0));return P[c>>3]=f,h=0,x=f,x=x*6371.007180918475,P[c>>3]=x,L=p,h|0}function RT(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0;if(p=L,L=L+176|0,h=p,s=bo(s,A,h)|0,s|0)return h=s,f=+P[c>>3],f=f*6371.007180918475,f=f*1e3,P[c>>3]=f,L=p,h|0;if(P[c>>3]=0,s=n[h>>2]|0,(s|0)<=1)return h=0,f=0,f=f*6371.007180918475,f=f*1e3,P[c>>3]=f,L=p,h|0;A=s+-1|0,s=0,u=+P[h+8>>3],l=+P[h+16>>3],f=0;do s=s+1|0,T=u,u=+P[h+8+(s<<4)>>3],x=+tt(+((u-T)*.5)),g=l,l=+P[h+8+(s<<4)+8>>3],g=+tt(+((l-g)*.5)),g=x*x+g*(+De(+T)*+De(+u)*g),f=f+ +Vt(+ +dt(+g),+ +dt(+(1-g)))*2;while((s|0)!=(A|0));return P[c>>3]=f,h=0,x=f,x=x*6371.007180918475,x=x*1e3,P[c>>3]=x,L=p,h|0}function PT(s){s=s|0;var A=0,c=0,u=0,l=0,f=0,h=0,p=0;if(s)for(f=s+4|0,h=s+8|0,u=1,l=s;;){if(A=n[l>>2]|0,A|0)do{if(c=n[A>>2]|0,c|0)do p=c,c=n[c+16>>2]|0,be(p);while((c|0)!=0);p=A,A=n[A+8>>2]|0,be(p)}while((A|0)!=0);if(A=l,l=n[l+8>>2]|0,u?(n[s>>2]=0,n[f>>2]=0,n[h>>2]=0):be(A),l)u=0;else break}}function NT(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0,H=0;if(n[A>>2]=0,U=A+4|0,n[U>>2]=0,H=A+8|0,n[H>>2]=0,F=n[s>>2]|0,(F|0)<=0)return A=0,A|0;I=s+4|0,s=A,C=0;e:for(;;){if(C){if(c=zt(1,12)|0,!c){c=5;break}n[s+8>>2]=c,s=c}if(g=n[I>>2]|0,T=zt(1,12)|0,!T){s=13,c=37;break}if(v=s+4|0,u=n[v>>2]|0,n[((u|0)==0?s:u+8|0)>>2]=T,n[v>>2]=T,u=n[g+(C<<4)>>2]|0,(u|0)<3){s=1,c=37;break}l=g+(C<<4)+4|0,f=T+4|0,c=0,h=0;do{if(p=h,h=ct(24)|0,!h){s=13,c=37;break e}p0(h|0,(n[l>>2]|0)+(c<<4)|0,16)|0,n[h+16>>2]=0,p?n[p+16>>2]=h:n[T>>2]=h,n[f>>2]=h,c=c+1|0}while((c|0)<(u|0));if(E=n[g+(C<<4)+8>>2]|0,(E|0)>0){x=g+(C<<4)+12|0,g=0;do{if(u=n[x>>2]|0,c=T,T=zt(1,12)|0,!T){s=13,c=37;break e}if(n[c+8>>2]=T,n[v>>2]=T,p=n[u+(g<<3)>>2]|0,(p|0)<3){s=1,c=37;break e}u=u+(g<<3)+4|0,l=T+4|0,c=0,f=0;do{if(h=f,f=ct(24)|0,!f){s=13,c=37;break e}p0(f|0,(n[u>>2]|0)+(c<<4)|0,16)|0,n[f+16>>2]=0,h?n[h+16>>2]=f:n[T>>2]=f,n[l>>2]=f,c=c+1|0}while((c|0)<(p|0));g=g+1|0}while((g|0)<(E|0))}if(C=C+1|0,(C|0)>=(F|0)){s=0,c=50;break}}if((c|0)==5){if(!A)return A=13,A|0;for(u=1,l=A;;){if(s=n[l>>2]|0,s|0)do{if(c=n[s>>2]|0,c|0)do F=c,c=n[c+16>>2]|0,be(F);while((c|0)!=0);F=s,s=n[s+8>>2]|0,be(F)}while((s|0)!=0);if(s=l,l=n[l+8>>2]|0,u?(n[A>>2]=0,n[U>>2]=0,n[H>>2]=0):be(s),l)u=0;else{s=13;break}}return s|0}else if((c|0)==37){if(!A)return A=s,A|0;for(l=1,f=A;;){if(c=n[f>>2]|0,c|0)do{if(u=n[c>>2]|0,u|0)do F=u,u=n[u+16>>2]|0,be(F);while((u|0)!=0);F=c,c=n[c+8>>2]|0,be(F)}while((c|0)!=0);if(c=f,f=n[f+8>>2]|0,l?(n[A>>2]=0,n[U>>2]=0,n[H>>2]=0):be(c),f)l=0;else break}return s|0}else if((c|0)==50)return s|0;return 0}function wo(s,A,c,u,l){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0,H=0,N=0;if(H=L,L=L+16|0,U=H,x=se(s|0,A|0,52)|0,R()|0,x=x&15,C=se(c|0,u|0,52)|0,R()|0,(x|0)!=(C&15|0))return U=12,L=H,U|0;if(g=se(s|0,A|0,45)|0,R()|0,g=g&127,T=se(c|0,u|0,45)|0,R()|0,T=T&127,g>>>0>121|T>>>0>121)return U=5,L=H,U|0;if(C=(g|0)!=(T|0),C){if(h=Qa(g,T)|0,(h|0)==7)return U=1,L=H,U|0;p=Qa(T,g)|0,(p|0)==7?Ve(27291,27315,164,27325):(F=h,f=p)}else F=0,f=0;E=at(g)|0,v=at(T)|0,n[U>>2]=0,n[U+4>>2]=0,n[U+8>>2]=0,n[U+12>>2]=0;do if(F){T=n[4272+(g*28|0)+(F<<2)>>2]|0,h=(T|0)>0;e:do if(v)if(h)for(g=0,p=c,h=u;;){switch(p=bT(p,h)|0,h=R()|0,f|0){case 5:case 1:f=3;break;case 3:f=2;break;case 2:f=6;break;case 6:f=4;break;case 4:f=5;break;default:}if(g=g+1|0,(g|0)==(T|0)){T=f,g=p,p=h;break e}}else T=f,g=c,p=u;else if(h)for(g=0,p=c,h=u;;){switch(p=r0(p,h)|0,h=R()|0,f|0){case 1:f=3;break;case 3:f=2;break;case 2:f=6;break;case 6:f=4;break;case 4:f=5;break;case 5:f=1;break;default:}if(g=g+1|0,(g|0)==(T|0)){T=f,g=p,p=h;break e}}else T=f,g=c,p=u;while(!1);if(i0(g,p,U)|0,C||Ve(27340,27315,194,27325),h=(E|0)!=0,f=(v|0)!=0,h&f&&Ve(27367,27315,195,27325),h){if(f=Zt(s,A)|0,(f|0)==7){f=5;break}if(ne[21968+(f*7|0)+F>>0]|0){f=1;break}v=n[21136+(f*28|0)+(F<<2)>>2]|0,C=v}else if(f){if(f=Zt(g,p)|0,(f|0)==7){f=5;break}if(ne[21968+(f*7|0)+T>>0]|0){f=1;break}C=0,v=n[21136+(T*28|0)+(f<<2)>>2]|0}else C=0,v=0;if((C|v|0)>=0){if((v|0)>0){c=U+4|0,u=U+8|0,E=U+12|0,T=0,p=n[c>>2]|0,h=n[u>>2]|0,f=n[E>>2]|0;do I=h+p|0,A=(I|0)<0,N=A?I:0,h=f+h-N|0,s=(h|0)<0,g=s?h:0,p=f+p-N-g|0,N=(p|0)<0,f=N?0:p,p=N?p:0,h=(s?0:h)-p|0,p=(A?0:I)-g-p|0,g=(h|0)<(p|0)?h:p,g=(f|0)<(g|0)?f:g,(g|0)>0&&(p=p-g|0,h=h-g|0,f=f-g|0),T=T+1|0;while((T|0)!=(v|0));n[c>>2]=p,n[u>>2]=h,n[E>>2]=f}if((F+-1|0)>>>0<6?(f=n[22032+(F*12|0)>>2]|0,p=n[22032+(F*12|0)+4>>2]|0,N=n[22032+(F*12|0)+8>>2]|0,h=(p|0)<(f|0)?p:f,h=(N|0)<(h|0)?N:h,h=(h|0)>0?h:0,f=f-h|0,p=p-h|0,h=N-h|0):(f=0,p=0,h=0),x)for(;;)if(g=f*3|0,T=p*3|0,c=h*3|0,pr(x)|0?(A=g+p|0,s=(A|0)<0,N=T+h-(s?A:0)|0,I=(N|0)<0,p=f+c-(s?A:0)-(I?N:0)|0,h=(p|0)<0,F=h?0:p,g=(I?0:N)-(h?p:0)|0,p=(s?0:A)-(I?N:0)-(h?p:0)|0,h=(g|0)<(p|0)?g:p,h=(F|0)<(h|0)?F:h,N=(h|0)>0,f=N?h:0,g=g-(N?h:0)|0,h=F-(N?h:0)|0):(I=g+h|0,A=(I|0)<0,N=T+f-(A?I:0)|0,f=(N|0)<0,p=c+p-(A?I:0)-(f?N:0)|0,h=(p|0)<0,F=h?0:p,g=(f?0:N)-(h?p:0)|0,p=(A?0:I)-(f?N:0)-(h?p:0)|0,h=(g|0)<(p|0)?g:p,h=(F|0)<(h|0)?F:h,N=(h|0)>0,f=N?h:0,g=g-(N?h:0)|0,h=F-(N?h:0)|0),f=p-f|0,(x|0)>1)x=x+-1|0,p=g;else{p=g;break}if((C|0)>0){g=0;do A=f+p|0,s=(A|0)<0,N=p+h-(s?A:0)|0,I=(N|0)<0,F=f+h-(s?A:0)-(I?N:0)|0,f=(F|0)<0,h=f?0:F,p=(I?0:N)-(f?F:0)|0,F=(s?0:A)-(I?N:0)-(f?F:0)|0,f=(p|0)<(F|0)?p:F,f=(h|0)<(f|0)?h:f,N=(f|0)>0,h=h-(N?f:0)|0,p=p-(N?f:0)|0,f=F-(N?f:0)|0,g=g+1|0;while((g|0)!=(C|0))}c=U+4|0,x=U+8|0,F=n[x>>2]|0,u=U+12|0,N=n[u>>2]|0,g=(n[c>>2]|0)+f|0,n[c>>2]=g,p=F+p|0,n[x>>2]=p,f=N+h|0,n[u>>2]=f,h=p-g|0,(g|0)<0?(f=f-g|0,n[x>>2]=h,n[u>>2]=f,n[c>>2]=0,p=0):(h=p,p=g),(h|0)<0&&(p=p-h|0,n[c>>2]=p,f=f-h|0,n[u>>2]=f,n[x>>2]=0,h=0),T=p-f|0,g=h-f|0,(f|0)<0?(n[c>>2]=T,n[x>>2]=g,n[u>>2]=0,p=T,f=0):g=h,h=(g|0)<(p|0)?g:p,h=(f|0)<(h|0)?f:h,(h|0)>0&&(n[c>>2]=p-h,n[x>>2]=g-h,n[u>>2]=f-h),I=77}else f=5}else if(i0(c,u,U)|0,(E|0)!=0&(v|0)!=0)if((T|0)!=(g|0)&&Ve(27398,27315,264,27325),h=Zt(s,A)|0,f=Zt(c,u)|0,(h|0)==7|(f|0)==7)f=5;else if(ne[21968+(h*7|0)+f>>0]|0)f=1;else if(c=n[21136+(h*28|0)+(f<<2)>>2]|0,(c|0)>0){x=U+4|0,u=U+8|0,E=U+12|0,T=0,p=n[x>>2]|0,h=n[u>>2]|0,f=n[E>>2]|0;do F=h+p|0,I=(F|0)<0,s=I?F:0,h=f+h-s|0,A=(h|0)<0,g=A?h:0,p=f+p-s-g|0,s=(p|0)<0,f=s?0:p,p=s?p:0,h=(A?0:h)-p|0,p=(I?0:F)-g-p|0,g=(h|0)<(p|0)?h:p,g=(f|0)<(g|0)?f:g,(g|0)>0&&(p=p-g|0,h=h-g|0,f=f-g|0),T=T+1|0;while((T|0)!=(c|0));n[x>>2]=p,n[u>>2]=h,n[E>>2]=f,I=77}else I=77;else I=77;while(!1);return(I|0)==77&&(f=U+4|0,n[l>>2]=n[f>>2],n[l+4>>2]=n[f+4>>2],n[l+8>>2]=n[f+8>>2],f=0),N=f,L=H,N|0}function df(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0,H=0,N=0,W=0,j=0,ee=0,oe=0,X=0,q=0;if(f=se(s|0,A|0,52)|0,R()|0,f=f&15,j=se(s|0,A|0,45)|0,R()|0,j=j&127,j>>>0>121)return u=5,u|0;if(U=at(j)|0,he(f|0,0,52)|0,p=R()|134225919,h=u,n[h>>2]=-1,n[h+4>>2]=p,h=n[c>>2]|0,p=n[c+4>>2]|0,c=n[c+8>>2]|0,!f){A=(h|0)<0,H=A?h:0,W=p-H|0,U=(W|0)<0,H=(U?0-W|0:0)+(c-H)|0,c=(H|0)<0,l=c?0:H,H=c?H:0,c=(U?0:W)-H|0,H=(A?0:h)-(U?W:0)-H|0,W=(c|0)<(H|0)?c:H,W=(l|0)<(W|0)?l:W,W=(W|0)>0?W:0,l=l-W|0,c=c-W|0;e:do switch(H-W|0){case 0:switch(c|0){case 0:if(l){l=(l|0)==1?1:7,N=11;break e}else{l=0;break e}case 1:if(l){l=(l|0)==1?3:7,N=11;break e}else{l=2;break e}default:return u=1,u|0}case 1:switch(c|0){case 0:if(l){l=(l|0)==1?5:7,N=11;break e}else{l=4;break e}case 1:if(l)l=1;else{l=6;break e}return l|0;default:return u=1,u|0}default:return u=1,u|0}while(!1);return(N|0)==11&&(l|0)==7||(l=Wa(j,l)|0,(l|0)==127)?(u=1,u|0):(W=he(l|0,0,45)|0,j=R()|0,N=u,j=n[N+4>>2]&-1040385|j,n[u>>2]=n[N>>2]|W,n[u+4>>2]=j,u=0,u|0)}for(;;){if(F=f,f=f+-1|0,I=h-c|0,C=p-c|0,g=I>>>0>715827881|C>>>0>715827881,pr(F)|0){if(g){if(x=(I|0)>0,E=2147483647-I|0,v=-2147483648-I|0,x?(E|0)<(I|0):(v|0)>(I|0)){l=1,N=107;break}if(q=I<<1,x?(2147483647-q|0)<(I|0):(-2147483648-q|0)>(I|0)){l=1,N=107;break}if((C|0)>0?(2147483647-C|0)<(C|0):(-2147483648-C|0)>(C|0)){l=1,N=107;break}if(g=I*3|0,T=C<<1,(x?(E|0)<(T|0):(v|0)>(T|0))||((I|0)>-1?(g|-2147483648)>=(C|0):(g^-2147483648|0)<(C|0))){l=1,N=107;break}}else g=I*3|0,T=C<<1;if(E=jr(+(g-C|0)*.14285714285714285)|0,x=jr(+(T+I|0)*.14285714285714285)|0,T=(x|0)<(E|0),g=T?E:x,T=T?x:E,(T|0)<0){if((T|0)==-2147483648||((g|0)>0?(2147483647-g|0)<(T|0):(-2147483648-g|0)>(T|0))){N=24;break}if((g|0)>-1?(g|-2147483648)>=(T|0):(g^-2147483648|0)<(T|0)){N=24;break}}v=(E|0)<0,C=x-(v?E:0)|0,oe=(C|0)<0,ee=(v?0-E|0:0)-(oe?C:0)|0,I=(ee|0)<0,v=(v?0:E)-(oe?C:0)-(I?ee:0)|0,C=(oe?0:C)-(I?ee:0)|0,ee=I?0:ee,I=(C|0)<(v|0)?C:v,I=(ee|0)<(I|0)?ee:I,oe=(I|0)>0,v=v-(oe?I:0)|0,C=C-(oe?I:0)|0,I=ee-(oe?I:0)|0,oe=(v*3|0)+C|0,ee=(oe|0)<0,q=(C*3|0)+I-(ee?oe:0)|0,g=(q|0)<0,E=(I*3|0)+v-(ee?oe:0)-(g?q:0)|0,x=(E|0)<0,X=x?0:E,T=(g?0:q)-(x?E:0)|0,E=(ee?0:oe)-(g?q:0)-(x?E:0)|0,x=(T|0)<(E|0)?T:E,x=(X|0)<(x|0)?X:x,q=(x|0)>0,g=q?x:0,T=T-(q?x:0)|0,x=X-(q?x:0)|0}else{if(g){if(T=(I|0)>0,T?(2147483647-I|0)<(I|0):(-2147483648-I|0)>(I|0)){l=1,N=107;break}if(g=I<<1,x=(C|0)>0,x?(2147483647-C|0)<(C|0):(-2147483648-C|0)>(C|0)){l=1,N=107;break}if(v=C<<1,x?(2147483647-v|0)<(C|0):(-2147483648-v|0)>(C|0)){l=1,N=107;break}if(T?(2147483647-g|0)<(C|0):(-2147483648-g|0)>(C|0)){l=1,N=107;break}if(T=C*3|0,(C|0)>-1?(T|-2147483648)>=(I|0):(T^-2147483648|0)<(I|0)){l=1,N=107;break}}else g=I<<1,T=C*3|0;if(E=jr(+(g+C|0)*.14285714285714285)|0,x=jr(+(T-I|0)*.14285714285714285)|0,T=(x|0)<(E|0),g=T?E:x,T=T?x:E,(T|0)<0){if((T|0)==-2147483648||((g|0)>0?(2147483647-g|0)<(T|0):(-2147483648-g|0)>(T|0))){N=36;break}if((g|0)>-1?(g|-2147483648)>=(T|0):(g^-2147483648|0)<(T|0)){N=36;break}}v=(E|0)<0,C=x-(v?E:0)|0,X=(C|0)<0,q=(v?0-E|0:0)-(X?C:0)|0,I=(q|0)<0,v=(v?0:E)-(X?C:0)-(I?q:0)|0,C=(X?0:C)-(I?q:0)|0,q=I?0:q,I=(C|0)<(v|0)?C:v,I=(q|0)<(I|0)?q:I,X=(I|0)>0,v=v-(X?I:0)|0,C=C-(X?I:0)|0,I=q-(X?I:0)|0,X=(v*3|0)+I|0,q=(X|0)<0,ee=(C*3|0)+v-(q?X:0)|0,g=(ee|0)<0,E=(I*3|0)+C-(q?X:0)-(g?ee:0)|0,x=(E|0)<0,oe=x?0:E,T=(g?0:ee)-(x?E:0)|0,E=(q?0:X)-(g?ee:0)-(x?E:0)|0,x=(T|0)<(E|0)?T:E,x=(oe|0)<(x|0)?oe:x,ee=(x|0)>0,g=ee?x:0,T=T-(ee?x:0)|0,x=oe-(ee?x:0)|0}g=h+(g-E)|0,X=(g|0)<0,T=p-T-(X?g:0)|0,E=(T|0)<0,ee=c-x+(X?0-g|0:0)+(E?0-T|0:0)|0,h=(ee|0)<0,x=h?0:ee,q=(E?0:T)-(h?ee:0)|0,ee=(X?0:g)-(E?T:0)-(h?ee:0)|0,h=(q|0)<(ee|0)?q:ee,h=(x|0)<(h|0)?x:h,c=(h|0)>0,ee=ee-(c?h:0)|0,T=u,E=n[T>>2]|0,T=n[T+4>>2]|0,p=(15-F|0)*3|0,g=he(7,0,p|0)|0,g=E&~g,T=T&~(R()|0),E=(ee|0)<0,X=E?ee:0,q=q-(c?h:0)-X|0,oe=(q|0)<0,X=(oe?0-q|0:0)+(x-(c?h:0)-X)|0,h=(X|0)<0,c=h?0:X,X=h?X:0,h=(oe?0:q)-X|0,X=(E?0:ee)-(oe?q:0)-X|0,q=(h|0)<(X|0)?h:X,q=(c|0)<(q|0)?c:q,q=(q|0)>0?q:0,c=c-q|0,h=h-q|0;e:do switch(X-q|0){case 0:switch(h|0){case 0:c=(c|0)==0?0:(c|0)==1?1:7;break e;case 1:c=(c|0)==0?2:(c|0)==1?3:7;break e;default:N=45;break e}case 1:switch(h|0){case 0:c=(c|0)==0?4:(c|0)==1?5:7;break e;case 1:if(c){N=45;break e}else{c=6;break e}default:N=45;break e}default:N=45}while(!1);if((N|0)==45&&(N=0,c=7),oe=he(c|0,0,p|0)|0,X=R()|0|T,q=u,n[q>>2]=oe|g,n[q+4>>2]=X,(F|0)<=1){N=47;break}else h=v,p=C,c=I}if((N|0)==24)Ve(27634,27425,416,27447);else if((N|0)==36)Ve(27634,27425,464,27461);else if((N|0)==47){if((v|0)>1|(C|0)>1|(I|0)>1)return q=1,q|0;ee=(v|0)<0,X=ee?v:0,q=C-X|0,oe=(q|0)<0,X=(oe?0-q|0:0)+(I-X)|0,f=(X|0)<0,c=f?0:X,X=f?X:0,f=(oe?0:q)-X|0,X=(ee?0:v)-(oe?q:0)-X|0,q=(f|0)<(X|0)?f:X,q=(c|0)<(q|0)?c:q,q=(q|0)>0?q:0,c=c-q|0,f=f-q|0;e:do switch(X-q|0){case 0:switch(f|0){case 0:f=(c|0)==0?0:(c|0)==1?1:7;break e;case 1:f=(c|0)==0?2:(c|0)==1?3:7;break e;default:N=55;break e}case 1:switch(f|0){case 0:f=(c|0)==0?4:(c|0)==1?5:7;break e;case 1:if(c){N=55;break e}else{f=6;break e}default:N=55;break e}default:N=55}while(!1);(N|0)==55&&(f=7),p=Wa(j,f)|0,(p|0)==127?T=0:T=at(p)|0;e:do if(f){if(U){if(c=Zt(s,A)|0,(c|0)==7)return q=5,q|0;h=n[21344+(c*28|0)+(f<<2)>>2]|0;t:do if((h|0)>0)for(c=f,f=0;;){switch(c|0){case 1:c=5;break;case 5:c=4;break;case 4:c=6;break;case 6:c=2;break;case 2:c=3;break;case 3:c=1;break;default:}if(f=f+1|0,(f|0)==(h|0))break t}else c=f;while(!1);if((c|0)==1)return q=9,q|0;f=Wa(j,c)|0,(f|0)==127&&Ve(27476,27315,415,27506),at(f)|0?Ve(27521,27315,416,27506):(l=f,W=h,H=c)}else l=p,W=0,H=f;if(g=n[4272+(j*28|0)+(H<<2)>>2]|0,(g|0)<=-1&&Ve(27552,27315,423,27506),!T){if((W|0)<0)return q=5,q|0;if(W|0){h=u,c=0,f=n[h>>2]|0,h=n[h+4>>2]|0;do f=On(f,h)|0,h=R()|0,q=u,n[q>>2]=f,n[q+4>>2]=h,c=c+1|0;while((c|0)<(W|0))}if((g|0)<=0){N=104;break}for(h=u,c=0,f=n[h>>2]|0,h=n[h+4>>2]|0;;)if(f=On(f,h)|0,h=R()|0,q=u,n[q>>2]=f,n[q+4>>2]=h,c=c+1|0,(c|0)==(g|0)){N=104;break e}}if(p=Qa(l,j)|0,(p|0)==7&&Ve(27291,27315,432,27506),c=u,f=n[c>>2]|0,c=n[c+4>>2]|0,(g|0)>0){h=0;do f=On(f,c)|0,c=R()|0,q=u,n[q>>2]=f,n[q+4>>2]=c,h=h+1|0;while((h|0)!=(g|0))}if(c=Zt(f,c)|0,(c|0)==7&&Ve(27634,27315,444,27506),f=qa(l)|0,f=n[(f?21760:21552)+(p*28|0)+(c<<2)>>2]|0,(f|0)<0&&Ve(27634,27315,458,27506),!f)N=104;else{p=u,c=0,h=n[p>>2]|0,p=n[p+4>>2]|0;do h=t0(h,p)|0,p=R()|0,q=u,n[q>>2]=h,n[q+4>>2]=p,c=c+1|0;while((c|0)<(f|0));N=104}}else if((U|0)!=0&(T|0)!=0){if(l=Zt(s,A)|0,c=u,c=Zt(n[c>>2]|0,n[c+4>>2]|0)|0,(l|0)==7|(c|0)==7||(c=n[21344+(l*28|0)+(c<<2)>>2]|0,(c|0)<0))return q=5,q|0;if(!c)l=p,N=105;else{h=u,l=0,f=n[h>>2]|0,h=n[h+4>>2]|0;do f=On(f,h)|0,h=R()|0,q=u,n[q>>2]=f,n[q+4>>2]=h,l=l+1|0;while((l|0)<(c|0));l=p,N=104}}else l=p,N=104;while(!1);return(N|0)==104&&T&&(N=105),(N|0)==105&&(q=u,(Zt(n[q>>2]|0,n[q+4>>2]|0)|0)==1)?(q=9,q|0):(X=u,ee=n[X>>2]|0,X=n[X+4>>2]&-1040385,oe=he(l|0,0,45)|0,X=X|(R()|0),q=u,n[q>>2]=ee|oe,n[q+4>>2]=X,q=0,q|0)}else if((N|0)==107)return l|0;return 0}function FT(s,A,c,u,l,f){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0,f=f|0;var h=0,p=0;return p=L,L=L+16|0,h=p,l|0?(h=15,L=p,h|0):(s=wo(s,A,c,u,h)|0,s||(l=n[h+4>>2]|0,s=n[h+8>>2]|0,n[f>>2]=(n[h>>2]|0)-s,n[f+4>>2]=l-s,s=0),h=s,L=p,h|0)}function kT(s,A,c,u,l){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,x=0,E=0;return E=L,L=L+16|0,x=E,u|0?(x=15,L=E,x|0):(p=n[c>>2]|0,h=n[c+4>>2]|0,n[x>>2]=p,g=x+4|0,n[g>>2]=h,T=x+8|0,n[T>>2]=0,c=(h|0)<(p|0),u=c?p:h,c=c?h:p,(c|0)<0?!((c|0)==-2147483648||((u|0)>0?(2147483647-u|0)<(c|0):(-2147483648-u|0)>(c|0)))&&!((u|0)>-1?(u|-2147483648)>=(c|0):(u^-2147483648|0)<(c|0))?f=5:u=1:f=5,(f|0)==5&&(u=h-p|0,f=0-p|0,(p|0)<0?(n[g>>2]=u,n[T>>2]=f,n[x>>2]=0,p=0):(u=h,f=0),h=p-u|0,c=f-u|0,(u|0)<0?(n[x>>2]=h,n[T>>2]=c,n[g>>2]=0,p=h,u=0):c=f,h=p-c|0,f=u-c|0,(c|0)<0?(n[x>>2]=h,n[g>>2]=f,n[T>>2]=0,c=0):(f=u,h=p),u=(f|0)<(h|0)?f:h,u=(c|0)<(u|0)?c:u,(u|0)>0&&(n[x>>2]=h-u,n[g>>2]=f-u,n[T>>2]=c-u),u=df(s,A,x,l)|0),x=u,L=E,x|0)}function a0(s,A,c,u,l){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0;return g=L,L=L+32|0,h=g+12|0,p=g,f=wo(s,A,s,A,h)|0,f|0?(p=f,L=g,p|0):(s=wo(s,A,c,u,p)|0,s|0?(p=s,L=g,p|0):(s=(n[h>>2]|0)-(n[p>>2]|0)|0,T=(s|0)<0,u=T?0-s|0:0,c=u+((n[h+4>>2]|0)-(n[p+4>>2]|0))|0,A=(c|0)<0,u=(n[h+8>>2]|0)-(n[p+8>>2]|0)+u+(A?0-c|0:0)|0,f=(u|0)<0,h=f?0:u,u=f?u:0,f=(A?0:c)-u|0,u=(T?0:s)-(A?c:0)-u|0,p=(f|0)<(u|0)?f:u,p=(h|0)<(p|0)?h:p,p=(p|0)>0?p:0,h=h-p|0,f=f-p|0,p=u-p|0,p=(p|0)>-1?p:0-p|0,f=(f|0)>-1?f:0-f|0,h=(h|0)>-1?h:0-h|0,h=(f|0)>(h|0)?f:h,h=(p|0)>(h|0)?p:h,p=l,n[p>>2]=h,n[p+4>>2]=((h|0)<0)<<31>>31,p=0,L=g,p|0))}function OT(s,A,c,u,l){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0;return h=L,L=L+16|0,f=h,s=a0(s,A,c,u,f)|0,s|0?(f=s,L=h,f|0):(c=f,c=pe(n[c>>2]|0,n[c+4>>2]|0,1,0)|0,u=R()|0,f=l,n[f>>2]=c,n[f+4>>2]=u,f=0,L=h,f|0)}function DT(s,A,c,u,l){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0;return g=L,L=L+16|0,f=g,h=a0(s,A,c,u,f)|0,h|0?(l=h,L=g,l|0):(h=f,f=n[h>>2]|0,h=n[h+4>>2]|0,(f|0)==0&(h|0)==0?(n[l>>2]=s,n[l+4>>2]=A,l=0,L=g,l|0):(p=pf(s,A,c,u,f,h,l,0,0,1,0)|0,p?(l=(pf(c,u,s,A,f,h,l,f,h,-1,-1)|0)==0,l=l?0:p,L=g,l|0):(l=0,L=g,l|0)))}function pf(s,A,c,u,l,f,h,p,g,T,x){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0,f=f|0,h=h|0,p=p|0,g=g|0,T=T|0,x=x|0;var E=0,v=0,C=0,I=0,F=0,U=0,H=0,N=0,W=0,j=0,ee=0,oe=0,X=0,q=0,me=0,ie=0,ye=0,ce=0;if(ye=L,L=L+48|0,E=ye+24|0,v=ye+12|0,ie=ye,n[E>>2]=0,n[E+4>>2]=0,n[E+8>>2]=0,n[v>>2]=0,n[v+4>>2]=0,n[v+8>>2]=0,wo(s,A,s,A,E)|0&&Ve(27634,27315,696,27575),wo(s,A,c,u,v)|0&&Ve(27634,27315,701,27575),F=E+8|0,u=n[F>>2]|0,c=u-(n[E>>2]|0)|0,n[E>>2]=c,me=E+4|0,u=(n[me>>2]|0)-u|0,n[me>>2]=u,me=u+c|0,E=0-me|0,n[F>>2]=E,F=v+8|0,N=n[F>>2]|0,H=N-(n[v>>2]|0)|0,n[v>>2]=H,q=v+4|0,N=(n[q>>2]|0)-N|0,n[q>>2]=N,q=N+H|0,n[F>>2]=0-q,X=1/(+(l>>>0)+4294967296*+(f|0)),ee=X*+(H-c|0),oe=X*+(N-u|0),X=X*+(me-q|0),n[ie>>2]=c,q=ie+4|0,n[q>>2]=u,me=ie+8|0,n[me>>2]=E,(f|0)<0)return T=0,L=ye,T|0;for(j=+(c|0),W=+(u|0),U=+(E|0),H=0,N=0;;){if(I=+(H>>>0)+4294967296*+(N|0),ce=ee*I+j,C=oe*I+W,I=X*I+U,u=~~+Is(+ce),E=~~+Is(+C),c=~~+Is(+I),ce=+Ct(+(+(u|0)-ce)),C=+Ct(+(+(E|0)-C)),I=+Ct(+(+(c|0)-I)),ce>C&ce>I?(v=c+E|0,u=0-v|0):(v=0-u|0,C>I&&(E=v-c|0)),n[q>>2]=E,n[ie>>2]=v,n[me>>2]=0,c=u+E|0,(u|0)>0?(n[q>>2]=c,n[me>>2]=u,n[ie>>2]=0,v=0):(c=E,u=0),(c|0)<0?(E=v-c|0,n[ie>>2]=E,u=u-c|0,n[me>>2]=u,n[q>>2]=0,v=E-u|0,c=0-u|0,(u|0)<0?(n[ie>>2]=v,n[q>>2]=c,n[me>>2]=0,F=c,u=0):(F=0,v=E)):F=c,c=(F|0)<(v|0)?F:v,c=(u|0)<(c|0)?u:c,(c|0)>0&&(n[ie>>2]=v-c,n[q>>2]=F-c,n[me>>2]=u-c),c=lt(H|0,N|0,T|0,x|0)|0,c=pe(c|0,R()|0,p|0,g|0)|0,R()|0,c=df(s,A,ie,h+(c<<3)|0)|0,c|0){u=20;break}if(F=H,H=pe(H|0,N|0,1,0)|0,v=N,N=R()|0,!((v|0)<(f|0)|(v|0)==(f|0)&F>>>0<l>>>0)){c=0,u=20;break}}return(u|0)==20?(L=ye,c|0):0}function hn(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0;if((c|0)==0&(u|0)==0)return l=0,f=1,Re(l|0),f|0;f=s,l=A,s=1,A=0;do h=(c&1|0)==0&!0,s=lt((h?1:f)|0,(h?0:l)|0,s|0,A|0)|0,A=R()|0,c=Mf(c|0,u|0,1)|0,u=R()|0,f=lt(f|0,l|0,f|0,l|0)|0,l=R()|0;while(!((c|0)==0&(u|0)==0));return Re(A|0),s|0}function c0(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,x=0;p=L,L=L+16|0,f=p,h=se(s|0,A|0,52)|0,R()|0,h=h&15;do if(h){if(l=hi(s,A,f)|0,!l){T=+P[f>>3],g=1/+De(+T),x=+P[26032+(h<<3)>>3],P[c>>3]=T+x,P[c+8>>3]=T-x,T=+P[f+8>>3],g=x*g,P[c+16>>3]=g+T,P[c+24>>3]=T-g;break}return h=l,L=p,h|0}else{if(l=se(s|0,A|0,45)|0,R()|0,l=l&127,l>>>0>121)return h=5,L=p,h|0;f=22128+(l<<5)|0,n[c>>2]=n[f>>2],n[c+4>>2]=n[f+4>>2],n[c+8>>2]=n[f+8>>2],n[c+12>>2]=n[f+12>>2],n[c+16>>2]=n[f+16>>2],n[c+20>>2]=n[f+20>>2],n[c+24>>2]=n[f+24>>2],n[c+28>>2]=n[f+28>>2];break}while(!1);return Jb(c,u?1.4:1.1),u=26160+(h<<3)|0,(n[u>>2]|0)==(s|0)&&(n[u+4>>2]|0)==(A|0)&&(P[c>>3]=1.5707963267948966),h=26288+(h<<3)|0,(n[h>>2]|0)==(s|0)&&(n[h+4>>2]|0)==(A|0)&&(P[c+8>>3]=-1.5707963267948966),+P[c>>3]!=1.5707963267948966&&+P[c+8>>3]!=-1.5707963267948966?(h=0,L=p,h|0):(P[c+16>>3]=3.141592653589793,P[c+24>>3]=-3.141592653589793,h=0,L=p,h|0)}function BT(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,x=0;T=L,L=L+48|0,h=T+32|0,f=T+40|0,p=T,$a(h,0,0,0),g=n[h>>2]|0,h=n[h+4>>2]|0;do if(c>>>0<=15){if(l=vo(u)|0,l|0){u=p,n[u>>2]=0,n[u+4>>2]=0,n[p+8>>2]=l,n[p+12>>2]=-1,u=p+16|0,g=p+29|0,n[u>>2]=0,n[u+4>>2]=0,n[u+8>>2]=0,ne[u+12>>0]=0,ne[g>>0]=ne[f>>0]|0,ne[g+1>>0]=ne[f+1>>0]|0,ne[g+2>>0]=ne[f+2>>0]|0;break}if(l=zt((n[A+8>>2]|0)+1|0,32)|0,l){l0(A,l),x=p,n[x>>2]=g,n[x+4>>2]=h,n[p+8>>2]=0,n[p+12>>2]=c,n[p+16>>2]=u,n[p+20>>2]=A,n[p+24>>2]=l,ne[p+28>>0]=0,g=p+29|0,ne[g>>0]=ne[f>>0]|0,ne[g+1>>0]=ne[f+1>>0]|0,ne[g+2>>0]=ne[f+2>>0]|0;break}else{u=p,n[u>>2]=0,n[u+4>>2]=0,n[p+8>>2]=13,n[p+12>>2]=-1,u=p+16|0,g=p+29|0,n[u>>2]=0,n[u+4>>2]=0,n[u+8>>2]=0,ne[u+12>>0]=0,ne[g>>0]=ne[f>>0]|0,ne[g+1>>0]=ne[f+1>>0]|0,ne[g+2>>0]=ne[f+2>>0]|0;break}}else g=p,n[g>>2]=0,n[g+4>>2]=0,n[p+8>>2]=4,n[p+12>>2]=-1,g=p+16|0,x=p+29|0,n[g>>2]=0,n[g+4>>2]=0,n[g+8>>2]=0,ne[g+12>>0]=0,ne[x>>0]=ne[f>>0]|0,ne[x+1>>0]=ne[f+1>>0]|0,ne[x+2>>0]=ne[f+2>>0]|0;while(!1);xs(p),n[s>>2]=n[p>>2],n[s+4>>2]=n[p+4>>2],n[s+8>>2]=n[p+8>>2],n[s+12>>2]=n[p+12>>2],n[s+16>>2]=n[p+16>>2],n[s+20>>2]=n[p+20>>2],n[s+24>>2]=n[p+24>>2],n[s+28>>2]=n[p+28>>2],L=T}function xs(s){s=s|0;var A=0,c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0,H=0,N=0,W=0,j=0;if(j=L,L=L+336|0,C=j+168|0,I=j,u=s,c=n[u>>2]|0,u=n[u+4>>2]|0,(c|0)==0&(u|0)==0){L=j;return}if(A=s+28|0,ne[A>>0]|0?(c=mf(c,u)|0,u=R()|0):ne[A>>0]=1,W=s+20|0,!(n[n[W>>2]>>2]|0)){A=s+24|0,c=n[A>>2]|0,c|0&&be(c),N=s,n[N>>2]=0,n[N+4>>2]=0,n[s+8>>2]=0,n[W>>2]=0,n[s+12>>2]=-1,n[s+16>>2]=0,n[A>>2]=0,L=j;return}N=s+16|0,A=n[N>>2]|0,l=A&15;e:do if((c|0)==0&(u|0)==0)H=s+24|0;else{F=s+12|0,E=(l|0)==3,x=A&255,g=(l|1)==3,v=s+24|0,T=(l+-1|0)>>>0<3,h=(l|2)==3,p=I+8|0;t:for(;;){if(f=se(c|0,u|0,52)|0,R()|0,f=f&15,(f|0)==(n[F>>2]|0)){switch(x&15){case 0:case 2:case 3:if(l=hi(c,u,C)|0,l|0){U=15;break t}if(u0(n[W>>2]|0,n[v>>2]|0,C)|0){U=19;break t}break;default:}if(g&&(l=n[(n[W>>2]|0)+4>>2]|0,n[C>>2]=n[l>>2],n[C+4>>2]=n[l+4>>2],n[C+8>>2]=n[l+8>>2],n[C+12>>2]=n[l+12>>2],$u(26896,C)|0)){if(n0(n[(n[W>>2]|0)+4>>2]|0,f,I)|0){U=25;break}if(l=I,(n[l>>2]|0)==(c|0)&&(n[l+4>>2]|0)==(u|0)){U=29;break}}if(T){if(l=Dn(c,u,C)|0,l|0){U=32;break}if(c0(c,u,I,0)|0){U=36;break}if(h&&bf(n[W>>2]|0,n[v>>2]|0,C,I)|0){U=42;break}if(g&&Tf(n[W>>2]|0,n[v>>2]|0,C,I)|0){U=42;break}}if(E){if(A=c0(c,u,C,1)|0,l=n[v>>2]|0,A|0){U=45;break}if(Ka(l,C)|0){if(tf(I,C),ef(C,n[v>>2]|0)|0){U=53;break}if(u0(n[W>>2]|0,n[v>>2]|0,p)|0){U=53;break}if(Tf(n[W>>2]|0,n[v>>2]|0,I,C)|0){U=53;break}}}}do if((f|0)<(n[F>>2]|0)){if(A=c0(c,u,C,1)|0,l=n[v>>2]|0,A|0){U=58;break t}if(!(Ka(l,C)|0)){U=73;break}if(ef(n[v>>2]|0,C)|0&&(tf(I,C),bf(n[W>>2]|0,n[v>>2]|0,I,C)|0)){U=65;break t}if(c=lf(c,u,f+1|0,I)|0,c|0){U=67;break t}u=I,c=n[u>>2]|0,u=n[u+4>>2]|0}else U=73;while(!1);if((U|0)==73&&(U=0,c=mf(c,u)|0,u=R()|0),(c|0)==0&(u|0)==0){H=v;break e}}switch(U|0){case 15:A=n[v>>2]|0,A|0&&be(A),U=s,n[U>>2]=0,n[U+4>>2]=0,n[W>>2]=0,n[F>>2]=-1,n[N>>2]=0,n[v>>2]=0,n[s+8>>2]=l,U=20;break;case 19:n[s>>2]=c,n[s+4>>2]=u,U=20;break;case 25:Ve(27634,27600,470,27611);break;case 29:n[s>>2]=c,n[s+4>>2]=u,L=j;return;case 32:A=n[v>>2]|0,A|0&&be(A),H=s,n[H>>2]=0,n[H+4>>2]=0,n[W>>2]=0,n[F>>2]=-1,n[N>>2]=0,n[v>>2]=0,n[s+8>>2]=l,L=j;return;case 36:Ve(27634,27600,493,27611);break;case 42:n[s>>2]=c,n[s+4>>2]=u,L=j;return;case 45:l|0&&be(l),U=s,n[U>>2]=0,n[U+4>>2]=0,n[W>>2]=0,n[F>>2]=-1,n[N>>2]=0,n[v>>2]=0,n[s+8>>2]=A,U=55;break;case 53:n[s>>2]=c,n[s+4>>2]=u,U=55;break;case 58:l|0&&be(l),U=s,n[U>>2]=0,n[U+4>>2]=0,n[W>>2]=0,n[F>>2]=-1,n[N>>2]=0,n[v>>2]=0,n[s+8>>2]=A,U=71;break;case 65:n[s>>2]=c,n[s+4>>2]=u,U=71;break;case 67:A=n[v>>2]|0,A|0&&be(A),H=s,n[H>>2]=0,n[H+4>>2]=0,n[W>>2]=0,n[F>>2]=-1,n[N>>2]=0,n[v>>2]=0,n[s+8>>2]=c,L=j;return}if((U|0)==20){L=j;return}else if((U|0)==55){L=j;return}else if((U|0)==71){L=j;return}}while(!1);A=n[H>>2]|0,A|0&&be(A),U=s,n[U>>2]=0,n[U+4>>2]=0,n[s+8>>2]=0,n[W>>2]=0,n[s+12>>2]=-1,n[N>>2]=0,n[H>>2]=0,L=j}function mf(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0;E=L,L=L+16|0,x=E,u=se(s|0,A|0,52)|0,R()|0,u=u&15,c=se(s|0,A|0,45)|0,R()|0;do if(u){for(;c=he(u+4095|0,0,52)|0,l=R()|0|A&-15728641,f=(15-u|0)*3|0,h=he(7,0,f|0)|0,p=R()|0,c=c|s|h,l=l|p,g=se(s|0,A|0,f|0)|0,R()|0,g=g&7,u=u+-1|0,!(g>>>0<6);)if(u)A=l,s=c;else{T=4;break}if((T|0)==4){c=se(c|0,l|0,45)|0,R()|0;break}return x=(g|0)==0&(nt(c,l)|0)!=0,x=he((x?2:1)+g|0,0,f|0)|0,T=R()|0|A&~p,x=x|s&~h,Re(T|0),L=E,x|0}while(!1);return c=c&127,c>>>0>120?(T=0,x=0,Re(T|0),L=E,x|0):($a(x,0,c+1|0,0),T=n[x+4>>2]|0,x=n[x>>2]|0,Re(T|0),L=E,x|0)}function UT(s,A,c,u,l,f){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0,f=f|0;var h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0;U=L,L=L+160|0,E=U+80|0,p=U+64|0,v=U+112|0,F=U,BT(E,s,A,c),T=E,s0(p,n[T>>2]|0,n[T+4>>2]|0,A),T=p,g=n[T>>2]|0,T=n[T+4>>2]|0,h=n[E+8>>2]|0,C=v+4|0,n[C>>2]=n[E>>2],n[C+4>>2]=n[E+4>>2],n[C+8>>2]=n[E+8>>2],n[C+12>>2]=n[E+12>>2],n[C+16>>2]=n[E+16>>2],n[C+20>>2]=n[E+20>>2],n[C+24>>2]=n[E+24>>2],n[C+28>>2]=n[E+28>>2],C=F,n[C>>2]=g,n[C+4>>2]=T,C=F+8|0,n[C>>2]=h,s=F+12|0,A=v,c=s+36|0;do n[s>>2]=n[A>>2],s=s+4|0,A=A+4|0;while((s|0)<(c|0));if(v=F+48|0,n[v>>2]=n[p>>2],n[v+4>>2]=n[p+4>>2],n[v+8>>2]=n[p+8>>2],n[v+12>>2]=n[p+12>>2],(g|0)==0&(T|0)==0)return F=h,L=U,F|0;c=F+16|0,x=F+24|0,E=F+28|0,h=0,p=0,A=g,s=T;do{if(!((h|0)<(l|0)|(h|0)==(l|0)&p>>>0<u>>>0)){I=4;break}if(T=p,p=pe(p|0,h|0,1,0)|0,h=R()|0,T=f+(T<<3)|0,n[T>>2]=A,n[T+4>>2]=s,A0(v),s=v,A=n[s>>2]|0,s=n[s+4>>2]|0,(A|0)==0&(s|0)==0){if(xs(c),A=c,s=n[A>>2]|0,A=n[A+4>>2]|0,(s|0)==0&(A|0)==0){I=10;break}ff(s,A,n[E>>2]|0,v),s=v,A=n[s>>2]|0,s=n[s+4>>2]|0}T=F,n[T>>2]=A,n[T+4>>2]=s}while(!((A|0)==0&(s|0)==0));return(I|0)==4?(s=F+40|0,A=n[s>>2]|0,A|0&&be(A),I=F+16|0,n[I>>2]=0,n[I+4>>2]=0,n[x>>2]=0,n[F+36>>2]=0,n[E>>2]=-1,n[F+32>>2]=0,n[s>>2]=0,ff(0,0,0,v),n[F>>2]=0,n[F+4>>2]=0,n[C>>2]=0,F=14,L=U,F|0):((I|0)==10&&(n[F>>2]=0,n[F+4>>2]=0,n[C>>2]=n[x>>2]),F=n[C>>2]|0,L=U,F|0)}function GT(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0;if(E=L,L=L+48|0,g=E+32|0,p=E+40|0,T=E,!(n[s>>2]|0))return x=u,n[x>>2]=0,n[x+4>>2]=0,x=0,L=E,x|0;$a(g,0,0,0),h=g,l=n[h>>2]|0,h=n[h+4>>2]|0;do if(A>>>0>15)x=T,n[x>>2]=0,n[x+4>>2]=0,n[T+8>>2]=4,n[T+12>>2]=-1,x=T+16|0,c=T+29|0,n[x>>2]=0,n[x+4>>2]=0,n[x+8>>2]=0,ne[x+12>>0]=0,ne[c>>0]=ne[p>>0]|0,ne[c+1>>0]=ne[p+1>>0]|0,ne[c+2>>0]=ne[p+2>>0]|0,c=4,x=9;else{if(c=vo(c)|0,c|0){g=T,n[g>>2]=0,n[g+4>>2]=0,n[T+8>>2]=c,n[T+12>>2]=-1,g=T+16|0,x=T+29|0,n[g>>2]=0,n[g+4>>2]=0,n[g+8>>2]=0,ne[g+12>>0]=0,ne[x>>0]=ne[p>>0]|0,ne[x+1>>0]=ne[p+1>>0]|0,ne[x+2>>0]=ne[p+2>>0]|0,x=9;break}if(c=zt((n[s+8>>2]|0)+1|0,32)|0,!c){x=T,n[x>>2]=0,n[x+4>>2]=0,n[T+8>>2]=13,n[T+12>>2]=-1,x=T+16|0,c=T+29|0,n[x>>2]=0,n[x+4>>2]=0,n[x+8>>2]=0,ne[x+12>>0]=0,ne[c>>0]=ne[p>>0]|0,ne[c+1>>0]=ne[p+1>>0]|0,ne[c+2>>0]=ne[p+2>>0]|0,c=13,x=9;break}l0(s,c),C=T,n[C>>2]=l,n[C+4>>2]=h,h=T+8|0,n[h>>2]=0,n[T+12>>2]=A,n[T+20>>2]=s,n[T+24>>2]=c,ne[T+28>>0]=0,l=T+29|0,ne[l>>0]=ne[p>>0]|0,ne[l+1>>0]=ne[p+1>>0]|0,ne[l+2>>0]=ne[p+2>>0]|0,n[T+16>>2]=3,v=+Kb(c),v=v*+Wb(c),f=+Ct(+ +P[c>>3]),f=v/+De(+ +Cs(+f,+ +Ct(+ +P[c+8>>3])))*6371.007180918475*6371.007180918475,l=T+12|0,c=n[l>>2]|0;e:do if((c|0)>0)do{if(hf(c+-1|0,g)|0,!(f/+P[g>>3]>10))break e;C=n[l>>2]|0,c=C+-1|0,n[l>>2]=c}while((C|0)>1);while(!1);if(xs(T),l=u,n[l>>2]=0,n[l+4>>2]=0,l=T,c=n[l>>2]|0,l=n[l+4>>2]|0,!((c|0)==0&(l|0)==0))do yo(c,l,A,g)|0,p=g,s=u,p=pe(n[s>>2]|0,n[s+4>>2]|0,n[p>>2]|0,n[p+4>>2]|0)|0,s=R()|0,C=u,n[C>>2]=p,n[C+4>>2]=s,xs(T),C=T,c=n[C>>2]|0,l=n[C+4>>2]|0;while(!((c|0)==0&(l|0)==0));c=n[h>>2]|0}while(!1);return C=c,L=E,C|0}function Eo(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0;if(!($u(A,c)|0)||(A=Qb(A)|0,u=+P[c>>3],l=+P[c+8>>3],l=A&l<0?l+6.283185307179586:l,v=n[s>>2]|0,(v|0)<=0))return v=0,v|0;if(E=n[s+4>>2]|0,A){A=0,x=l,c=-1,s=0;e:for(;;){for(T=s;h=+P[E+(T<<4)>>3],l=+P[E+(T<<4)+8>>3],s=(c+2|0)%(v|0)|0,f=+P[E+(s<<4)>>3],p=+P[E+(s<<4)+8>>3],h>f?(g=h,h=p):(g=f,f=h,h=l,l=p),u=u==f|u==g?u+2220446049250313e-31:u,!!(u<f|u>g);)if(c=T+1|0,(c|0)>=(v|0)){c=22;break e}else s=T,T=c,c=s;if(p=h<0?h+6.283185307179586:h,h=l<0?l+6.283185307179586:l,x=p==x|h==x?x+-2220446049250313e-31:x,g=p+(h-p)*((u-f)/(g-f)),(g<0?g+6.283185307179586:g)>x&&(A=A^1),s=T+1|0,(s|0)>=(v|0)){c=22;break}else c=T}if((c|0)==22)return A|0}else{A=0,x=l,c=-1,s=0;e:for(;;){for(T=s;h=+P[E+(T<<4)>>3],l=+P[E+(T<<4)+8>>3],s=(c+2|0)%(v|0)|0,f=+P[E+(s<<4)>>3],p=+P[E+(s<<4)+8>>3],h>f?(g=h,h=p):(g=f,f=h,h=l,l=p),u=u==f|u==g?u+2220446049250313e-31:u,!!(u<f|u>g);)if(c=T+1|0,(c|0)>=(v|0)){c=22;break e}else s=T,T=c,c=s;if(x=h==x|l==x?x+-2220446049250313e-31:x,h+(l-h)*((u-f)/(g-f))>x&&(A=A^1),s=T+1|0,(s|0)>=(v|0)){c=22;break}else c=T}if((c|0)==22)return A|0}return 0}function gf(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0,H=0,N=0;if(I=n[s>>2]|0,!I){n[A>>2]=0,n[A+4>>2]=0,n[A+8>>2]=0,n[A+12>>2]=0,n[A+16>>2]=0,n[A+20>>2]=0,n[A+24>>2]=0,n[A+28>>2]=0;return}if(F=A+8|0,P[F>>3]=17976931348623157e292,U=A+24|0,P[U>>3]=17976931348623157e292,P[A>>3]=-17976931348623157e292,H=A+16|0,P[H>>3]=-17976931348623157e292,!((I|0)<=0)){for(v=n[s+4>>2]|0,T=17976931348623157e292,x=-17976931348623157e292,E=0,s=-1,f=17976931348623157e292,h=17976931348623157e292,g=-17976931348623157e292,u=-17976931348623157e292,C=0;c=+P[v+(C<<4)>>3],p=+P[v+(C<<4)+8>>3],s=s+2|0,l=+P[v+(((s|0)==(I|0)?0:s)<<4)+8>>3],c<f&&(P[F>>3]=c,f=c),p<h&&(P[U>>3]=p,h=p),c>g?P[A>>3]=c:c=g,p>u&&(P[H>>3]=p,u=p),T=p>0&p<T?p:T,x=p<0&p>x?p:x,E=E|+Ct(+(p-l))>3.141592653589793,s=C+1|0,(s|0)!=(I|0);)N=C,g=c,C=s,s=N;E&&(P[H>>3]=x,P[U>>3]=T)}}function vo(s){return s=s|0,(s>>>0<4?0:15)|0}function l0(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0,H=0,N=0,W=0,j=0,ee=0,oe=0,X=0;if(I=n[s>>2]|0,I){if(F=A+8|0,P[F>>3]=17976931348623157e292,U=A+24|0,P[U>>3]=17976931348623157e292,P[A>>3]=-17976931348623157e292,H=A+16|0,P[H>>3]=-17976931348623157e292,(I|0)>0){for(l=n[s+4>>2]|0,v=17976931348623157e292,C=-17976931348623157e292,u=0,c=-1,g=17976931348623157e292,T=17976931348623157e292,E=-17976931348623157e292,h=-17976931348623157e292,N=0;f=+P[l+(N<<4)>>3],x=+P[l+(N<<4)+8>>3],oe=c+2|0,p=+P[l+(((oe|0)==(I|0)?0:oe)<<4)+8>>3],f<g&&(P[F>>3]=f,g=f),x<T&&(P[U>>3]=x,T=x),f>E?P[A>>3]=f:f=E,x>h&&(P[H>>3]=x,h=x),v=x>0&x<v?x:v,C=x<0&x>C?x:C,u=u|+Ct(+(x-p))>3.141592653589793,c=N+1|0,(c|0)!=(I|0);)oe=N,E=f,N=c,c=oe;u&&(P[H>>3]=C,P[U>>3]=v)}}else n[A>>2]=0,n[A+4>>2]=0,n[A+8>>2]=0,n[A+12>>2]=0,n[A+16>>2]=0,n[A+20>>2]=0,n[A+24>>2]=0,n[A+28>>2]=0;if(oe=s+8|0,c=n[oe>>2]|0,!((c|0)<=0)){ee=s+12|0,j=0;do if(l=n[ee>>2]|0,u=j,j=j+1|0,U=A+(j<<5)|0,H=n[l+(u<<3)>>2]|0,H){if(N=A+(j<<5)+8|0,P[N>>3]=17976931348623157e292,s=A+(j<<5)+24|0,P[s>>3]=17976931348623157e292,P[U>>3]=-17976931348623157e292,W=A+(j<<5)+16|0,P[W>>3]=-17976931348623157e292,(H|0)>0){for(I=n[l+(u<<3)+4>>2]|0,v=17976931348623157e292,C=-17976931348623157e292,l=0,u=-1,F=0,g=17976931348623157e292,T=17976931348623157e292,x=-17976931348623157e292,h=-17976931348623157e292;f=+P[I+(F<<4)>>3],E=+P[I+(F<<4)+8>>3],u=u+2|0,p=+P[I+(((u|0)==(H|0)?0:u)<<4)+8>>3],f<g&&(P[N>>3]=f,g=f),E<T&&(P[s>>3]=E,T=E),f>x?P[U>>3]=f:f=x,E>h&&(P[W>>3]=E,h=E),v=E>0&E<v?E:v,C=E<0&E>C?E:C,l=l|+Ct(+(E-p))>3.141592653589793,u=F+1|0,(u|0)!=(H|0);)X=F,F=u,x=f,u=X;l&&(P[W>>3]=C,P[s>>3]=v)}}else n[U>>2]=0,n[U+4>>2]=0,n[U+8>>2]=0,n[U+12>>2]=0,n[U+16>>2]=0,n[U+20>>2]=0,n[U+24>>2]=0,n[U+28>>2]=0,c=n[oe>>2]|0;while((j|0)<(c|0))}}function u0(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0;if(!(Eo(s,A,c)|0))return l=0,l|0;if(l=s+8|0,(n[l>>2]|0)<=0)return l=1,l|0;for(u=s+12|0,s=0;;){if(f=s,s=s+1|0,Eo((n[u>>2]|0)+(f<<3)|0,A+(s<<5)|0,c)|0){s=0,u=6;break}if((s|0)>=(n[l>>2]|0)){s=1,u=6;break}}return(u|0)==6?s|0:0}function bf(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,x=0;if(T=L,L=L+16|0,p=T,h=c+8|0,!(Eo(s,A,h)|0))return g=0,L=T,g|0;g=s+8|0;e:do if((n[g>>2]|0)>0){for(f=s+12|0,l=0;;){if(x=l,l=l+1|0,Eo((n[f>>2]|0)+(x<<3)|0,A+(l<<5)|0,h)|0){l=0;break}if((l|0)>=(n[g>>2]|0))break e}return L=T,l|0}while(!1);if(_s(s,A,c,u)|0)return x=0,L=T,x|0;n[p>>2]=n[c>>2],n[p+4>>2]=h,l=n[g>>2]|0;e:do if((l|0)>0)for(s=s+12|0,h=0,f=l;;){if(l=n[s>>2]|0,(n[l+(h<<3)>>2]|0)>0){if(Eo(p,u,n[l+(h<<3)+4>>2]|0)|0){l=0;break e}if(l=h+1|0,_s((n[s>>2]|0)+(h<<3)|0,A+(l<<5)|0,c,u)|0){l=0;break e}f=n[g>>2]|0}else l=h+1|0;if((l|0)<(f|0))h=l;else{l=1;break}}else l=1;while(!1);return x=l,L=T,x|0}function _s(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0,H=0,N=0,W=0,j=0,ee=0,oe=0,X=0,q=0;if(oe=L,L=L+176|0,N=oe+172|0,l=oe+168|0,W=oe,!(Ka(A,u)|0))return s=0,L=oe,s|0;if(Xb(A,u,N,l),Mr(W|0,c|0,168)|0,(n[c>>2]|0)>0){A=0;do X=W+8+(A<<4)+8|0,H=+sr(+P[X>>3],n[l>>2]|0),P[X>>3]=H,A=A+1|0;while((A|0)<(n[c>>2]|0))}F=+P[u>>3],U=+P[u+8>>3],H=+sr(+P[u+16>>3],n[l>>2]|0),C=+sr(+P[u+24>>3],n[l>>2]|0);e:do if((n[s>>2]|0)>0){if(u=s+4|0,l=n[W>>2]|0,(l|0)<=0){for(A=0;;)if(A=A+1|0,(A|0)>=(n[s>>2]|0)){A=0;break e}}for(c=0;;){if(A=n[u>>2]|0,v=+P[A+(c<<4)>>3],I=+sr(+P[A+(c<<4)+8>>3],n[N>>2]|0),A=n[u>>2]|0,c=c+1|0,X=(c|0)%(n[s>>2]|0)|0,f=+P[A+(X<<4)>>3],h=+sr(+P[A+(X<<4)+8>>3],n[N>>2]|0),!(v>=F)|!(f>=F)&&!(v<=U)|!(f<=U)&&!(I<=C)|!(h<=C)&&!(I>=H)|!(h>=H)){E=f-v,T=h-I,A=0;do if(q=A,A=A+1|0,X=(A|0)==(l|0)?0:A,f=+P[W+8+(q<<4)+8>>3],h=+P[W+8+(X<<4)+8>>3]-f,p=+P[W+8+(q<<4)>>3],g=+P[W+8+(X<<4)>>3]-p,x=E*h-T*g,x!=0&&(j=I-f,ee=v-p,g=(j*g-h*ee)/x,!(g<0|g>1))&&(x=(E*j-T*ee)/x,x>=0&x<=1)){A=1;break e}while((A|0)<(l|0))}if((c|0)>=(n[s>>2]|0)){A=0;break}}}else A=0;while(!1);return q=A,L=oe,q|0}function Tf(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0;if(_s(s,A,c,u)|0)return f=1,f|0;if(f=s+8|0,(n[f>>2]|0)<=0)return f=0,f|0;for(l=s+12|0,s=0;;){if(h=s,s=s+1|0,_s((n[l>>2]|0)+(h<<3)|0,A+(s<<5)|0,c,u)|0){s=1,l=6;break}if((s|0)>=(n[f>>2]|0)){s=0,l=6;break}}return(l|0)==6?s|0:0}function jT(){return 8}function VT(){return 16}function zT(){return 168}function HT(){return 8}function qT(){return 16}function WT(){return 12}function QT(){return 8}function KT(s){return s=s|0,+(+((n[s>>2]|0)>>>0)+4294967296*+(n[s+4>>2]|0))}function XT(s){s=s|0;var A=0,c=0;return c=+P[s>>3],A=+P[s+8>>3],+ +dt(+(c*c+A*A))}function yf(s,A,c,u,l){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0;T=+P[s>>3],g=+P[A>>3]-T,p=+P[s+8>>3],h=+P[A+8>>3]-p,E=+P[c>>3],f=+P[u>>3]-E,v=+P[c+8>>3],x=+P[u+8>>3]-v,f=(f*(p-v)-(T-E)*x)/(g*x-h*f),P[l>>3]=T+g*f,P[l+8>>3]=p+h*f}function xf(s,A){return s=s|0,A=A|0,+Ct(+(+P[s>>3]-+P[A>>3]))<1.1920928955078125e-7?(A=+Ct(+(+P[s+8>>3]-+P[A+8>>3]))<1.1920928955078125e-7,A|0):(A=0,A|0)}function YT(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0;if(f=L,L=L+16|0,l=f,u=nt(s,A)|0,(c+-1|0)>>>0>5||(u=(u|0)!=0,(c|0)==1&u))return l=-1,L=f,l|0;do if(So(s,A,l)|0)u=-1;else if(u){u=((n[26416+(c<<2)>>2]|0)+5-(n[l>>2]|0)|0)%5|0;break}else{u=((n[26448+(c<<2)>>2]|0)+6-(n[l>>2]|0)|0)%6|0;break}while(!1);return l=u,L=f,l|0}function So(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0;if(x=L,L=L+32|0,p=x+16|0,g=x,u=fi(s,A,p)|0,u|0)return c=u,L=x,c|0;f=af(s,A)|0,T=Zt(s,A)|0,Vb(f,g),u=zb(f,n[p>>2]|0)|0;do if(at(f)|0){do switch(f|0){case 4:l=0;break;case 14:l=1;break;case 24:l=2;break;case 38:l=3;break;case 49:l=4;break;case 58:l=5;break;case 63:l=6;break;case 72:l=7;break;case 83:l=8;break;case 97:l=9;break;case 107:l=10;break;case 117:l=11;break;default:Ve(27634,27636,75,27645)}while(!1);if(h=n[26480+(l*24|0)+8>>2]|0,A=n[26480+(l*24|0)+16>>2]|0,s=n[p>>2]|0,(s|0)!=(n[g>>2]|0)&&(g=qa(f)|0,s=n[p>>2]|0,g|(s|0)==(A|0)&&(u=(u+1|0)%6|0)),(T|0)==3&(s|0)==(A|0)){u=(u+5|0)%6|0;break}(T|0)==5&(s|0)==(h|0)&&(u=(u+1|0)%6|0)}while(!1);return n[c>>2]=u,c=0,L=x,c|0}function mr(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0,H=0,N=0,W=0;if(W=L,L=L+32|0,N=W+24|0,U=W+20|0,I=W+8|0,C=W+16|0,v=W,g=(nt(s,A)|0)==0,g=g?6:5,x=se(s|0,A|0,52)|0,R()|0,x=x&15,g>>>0<=c>>>0)return u=2,L=W,u|0;E=(x|0)==0,!E&&(F=he(7,0,(x^15)*3|0)|0,(F&s|0)==0&((R()|0)&A|0)==0)?l=c:f=4;e:do if((f|0)==4){if(l=(nt(s,A)|0)!=0,((l?4:5)|0)<(c|0)||So(s,A,N)|0||(f=(n[N>>2]|0)+c|0,l?l=26768+(((f|0)%5|0)<<2)|0:l=26800+(((f|0)%6|0)<<2)|0,F=n[l>>2]|0,(F|0)==7))return u=1,L=W,u|0;n[U>>2]=0,l=It(s,A,F,U,I)|0;do if(!l){if(p=I,T=n[p>>2]|0,p=n[p+4>>2]|0,h=p>>>0<A>>>0|(p|0)==(A|0)&T>>>0<s>>>0,f=h?T:s,h=h?p:A,!E&&(E=he(7,0,(x^15)*3|0)|0,(T&E|0)==0&(p&(R()|0)|0)==0))l=c;else{if(p=(c+-1+g|0)%(g|0)|0,l=nt(s,A)|0,(p|0)<0&&Ve(27634,27636,248,27661),g=(l|0)!=0,((g?4:5)|0)<(p|0)&&Ve(27634,27636,248,27661),So(s,A,N)|0&&Ve(27634,27636,248,27661),l=(n[N>>2]|0)+p|0,g?l=26768+(((l|0)%5|0)<<2)|0:l=26800+(((l|0)%6|0)<<2)|0,p=n[l>>2]|0,(p|0)==7&&Ve(27634,27636,248,27661),n[C>>2]=0,l=It(s,A,p,C,v)|0,l|0)break;T=v,g=n[T>>2]|0,T=n[T+4>>2]|0;do if(T>>>0<h>>>0|(T|0)==(h|0)&g>>>0<f>>>0){if(nt(g,T)|0?f=gs(g,T,s,A)|0:f=n[26864+((((n[C>>2]|0)+(n[26832+(p<<2)>>2]|0)|0)%6|0)<<2)>>2]|0,l=nt(g,T)|0,(f+-1|0)>>>0>5){l=-1,f=g,h=T;break}if(l=(l|0)!=0,(f|0)==1&l){l=-1,f=g,h=T;break}do if(So(g,T,N)|0)l=-1;else if(l){l=((n[26416+(f<<2)>>2]|0)+5-(n[N>>2]|0)|0)%5|0;break}else{l=((n[26448+(f<<2)>>2]|0)+6-(n[N>>2]|0)|0)%6|0;break}while(!1);f=g,h=T}else l=c;while(!1);p=I,T=n[p>>2]|0,p=n[p+4>>2]|0}if((f|0)==(T|0)&(h|0)==(p|0)){if(g=(nt(T,p)|0)!=0,g?s=gs(T,p,s,A)|0:s=n[26864+((((n[U>>2]|0)+(n[26832+(F<<2)>>2]|0)|0)%6|0)<<2)>>2]|0,l=nt(T,p)|0,(s+-1|0)>>>0<=5&&(H=(l|0)!=0,!((s|0)==1&H)))do if(So(T,p,N)|0)l=-1;else if(H){l=((n[26416+(s<<2)>>2]|0)+5-(n[N>>2]|0)|0)%5|0;break}else{l=((n[26448+(s<<2)>>2]|0)+6-(n[N>>2]|0)|0)%6|0;break}while(!1);else l=-1;l=l+1|0,l=(l|0)==6|g&(l|0)==5?0:l}A=h,s=f;break e}while(!1);return u=l,L=W,u|0}while(!1);return H=he(l|0,0,56)|0,N=R()|0|A&-2130706433|536870912,n[u>>2]=H|s,n[u+4>>2]=N,u=0,L=W,u|0}function JT(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0;return f=(nt(s,A)|0)==0,u=mr(s,A,0,c)|0,l=(u|0)==0,f?!l||(u=mr(s,A,1,c+8|0)|0,u|0)||(u=mr(s,A,2,c+16|0)|0,u|0)||(u=mr(s,A,3,c+24|0)|0,u|0)||(u=mr(s,A,4,c+32|0)|0,u)?(f=u,f|0):mr(s,A,5,c+40|0)|0:!l||(u=mr(s,A,1,c+8|0)|0,u|0)||(u=mr(s,A,2,c+16|0)|0,u|0)||(u=mr(s,A,3,c+24|0)|0,u|0)||(u=mr(s,A,4,c+32|0)|0,u|0)?(f=u,f|0):(f=c+40|0,n[f>>2]=0,n[f+4>>2]=0,f=0,f|0)}function ZT(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0;return g=L,L=L+192|0,l=g,f=g+168|0,h=se(s|0,A|0,56)|0,R()|0,h=h&7,p=A&-2130706433|134217728,u=fi(s,p,f)|0,u|0?(p=u,L=g,p|0):(A=se(s|0,A|0,52)|0,R()|0,A=A&15,nt(s,p)|0?Ya(f,A,h,1,l):Ja(f,A,h,1,l),p=l+8|0,n[c>>2]=n[p>>2],n[c+4>>2]=n[p+4>>2],n[c+8>>2]=n[p+8>>2],n[c+12>>2]=n[p+12>>2],p=0,L=g,p|0)}function _f(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0;return l=L,L=L+16|0,c=l,!(!0&(A&2013265920|0)==536870912)||(u=A&-2130706433|134217728,!(Ts(s,u)|0))?(u=0,L=l,u|0):(f=se(s|0,A|0,56)|0,R()|0,f=(mr(s,u,f&7,c)|0)==0,u=c,u=f&((n[u>>2]|0)==(s|0)?(n[u+4>>2]|0)==(A|0):0)&1,L=l,u|0)}function wf(){return 27680}function ws(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0;E=L,L=L+208|0,g=E,T=E+192|0,h=Jt(c,A)|0,p=T,n[p>>2]=1,n[p+4>>2]=0;e:do if(h|0){for(p=0-c|0,n[g+4>>2]=c,n[g>>2]=c,l=2,A=c,f=c;A=A+c+f|0,n[g+(l<<2)>>2]=A,A>>>0<h>>>0;)v=f,l=l+1|0,f=A,A=v;if(f=s+h+p|0,f>>>0>s>>>0){h=f,l=1,A=1;do{do if((A&3|0)!=3)if(A=l+-1|0,(n[g+(A<<2)>>2]|0)>>>0<(h-s|0)>>>0?f0(s,c,u,l,g):vs(s,c,u,T,l,0,g),(l|0)==1){Ss(T,1),l=0;break}else{Ss(T,A),l=1;break}else f0(s,c,u,l,g),Es(T,2),l=l+2|0;while(!1);A=n[T>>2]|1,n[T>>2]=A,s=s+c|0}while(s>>>0<f>>>0)}else l=1,A=1;for(vs(s,c,u,T,l,0,g),f=T+4|0;;){if((l|0)==1&(A|0)==1)if(n[f>>2]|0)x=19;else break e;else(l|0)<2?x=19:(Ss(T,2),v=l+-2|0,n[T>>2]=n[T>>2]^7,Es(T,1),vs(s+(0-(n[g+(v<<2)>>2]|0))+p|0,c,u,T,l+-1|0,1,g),Ss(T,1),A=n[T>>2]|1,n[T>>2]=A,s=s+p|0,vs(s,c,u,T,v,1,g),l=v);(x|0)==19&&(x=0,A=Ef(T)|0,Es(T,A),s=s+p|0,l=A+l|0,A=n[T>>2]|0)}}while(!1);L=E}function f0(s,A,c,u,l){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,x=0,E=0;E=L,L=L+240|0,x=E,n[x>>2]=s;e:do if((u|0)>1)for(T=0-A|0,p=s,f=u,u=1,h=s;;){if(p=p+T|0,g=f+-2|0,s=p+(0-(n[l+(g<<2)>>2]|0))|0,(bn[c&3](h,s)|0)>-1&&(bn[c&3](h,p)|0)>-1||(h=x+(u<<2)|0,(bn[c&3](s,p)|0)>-1?(n[h>>2]=s,f=f+-1|0):(n[h>>2]=p,s=p,f=g),u=u+1|0,(f|0)<=1))break e;p=s,h=n[x>>2]|0}else u=1;while(!1);Sf(A,x,u),L=E}function Es(s,A){s=s|0,A=A|0;var c=0,u=0,l=0;l=s+4|0,A>>>0>31?(u=n[l>>2]|0,n[s>>2]=u,n[l>>2]=0,A=A+-32|0,c=0):(c=n[l>>2]|0,u=n[s>>2]|0),n[s>>2]=c<<32-A|u>>>A,n[l>>2]=c>>>A}function vs(s,A,c,u,l,f,h){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0,f=f|0,h=h|0;var p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0;C=L,L=L+240|0,E=C+232|0,v=C,I=n[u>>2]|0,n[E>>2]=I,g=n[u+4>>2]|0,T=E+4|0,n[T>>2]=g,n[v>>2]=s;e:do if((I|0)!=1|(g|0)!=0&&(x=0-A|0,p=s+(0-(n[h+(l<<2)>>2]|0))|0,(bn[c&3](p,s)|0)>=1))for(u=1,f=(f|0)==0,g=p;;){if(f&(l|0)>1){if(f=s+x|0,p=n[h+(l+-2<<2)>>2]|0,(bn[c&3](f,g)|0)>-1){p=10;break e}if((bn[c&3](f+(0-p)|0,g)|0)>-1){p=10;break e}}if(f=u+1|0,n[v+(u<<2)>>2]=g,I=Ef(E)|0,Es(E,I),l=I+l|0,!((n[E>>2]|0)!=1|(n[T>>2]|0)!=0)){u=f,s=g,p=10;break e}if(s=g+(0-(n[h+(l<<2)>>2]|0))|0,(bn[c&3](s,n[v>>2]|0)|0)<1){s=g,u=f,f=0,p=9;break}else I=g,u=f,f=1,g=s,s=I}else u=1,p=9;while(!1);(p|0)==9&&!(f|0)&&(p=10),(p|0)==10&&(Sf(A,v,u),f0(s,A,c,l,h)),L=C}function Ss(s,A){s=s|0,A=A|0;var c=0,u=0,l=0;l=s+4|0,A>>>0>31?(u=n[s>>2]|0,n[l>>2]=u,n[s>>2]=0,A=A+-32|0,c=0):(c=n[s>>2]|0,u=n[l>>2]|0),n[l>>2]=c>>>(32-A|0)|u<<A,n[s>>2]=c<<A}function Ef(s){s=s|0;var A=0;return A=vf((n[s>>2]|0)+-1|0)|0,A?A|0:(A=vf(n[s+4>>2]|0)|0,((A|0)==0?0:A+32|0)|0)}function vf(s){s=s|0;var A=0;if(s)if(s&1)s=0;else for(A=s,s=0;s=s+1|0,!(A&2);)A=A>>>1;else s=32;return s|0}function Sf(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0;h=L,L=L+256|0,u=h;e:do if((c|0)>=2&&(f=A+(c<<2)|0,n[f>>2]=u,s|0))for(;;){l=s>>>0<256?s:256,Mr(u|0,n[A>>2]|0,l|0)|0,u=0;do p=A+(u<<2)|0,u=u+1|0,Mr(n[p>>2]|0,n[A+(u<<2)>>2]|0,l|0)|0,n[p>>2]=(n[p>>2]|0)+l;while((u|0)!=(c|0));if(s=s-l|0,!s)break e;u=n[f>>2]|0}while(!1);L=h}function jr(s){return s=+s,~~+Rf(+s)|0}function ct(s){s=s|0;var A=0,c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0,F=0,U=0,H=0,N=0,W=0,j=0,ee=0;ee=L,L=L+16|0,v=ee;do if(s>>>0<245){if(T=s>>>0<11?16:s+11&-8,s=T>>>3,E=n[6921]|0,c=E>>>s,c&3|0)return A=(c&1^1)+s|0,s=27724+(A<<1<<2)|0,c=s+8|0,u=n[c>>2]|0,l=u+8|0,f=n[l>>2]|0,(f|0)==(s|0)?n[6921]=E&~(1<<A):(n[f+12>>2]=s,n[c>>2]=f),j=A<<3,n[u+4>>2]=j|3,j=u+j+4|0,n[j>>2]=n[j>>2]|1,j=l,L=ee,j|0;if(x=n[6923]|0,T>>>0>x>>>0){if(c|0)return A=2<<s,A=c<<s&(A|0-A),A=(A&0-A)+-1|0,p=A>>>12&16,A=A>>>p,c=A>>>5&8,A=A>>>c,f=A>>>2&4,A=A>>>f,s=A>>>1&2,A=A>>>s,u=A>>>1&1,u=(c|p|f|s|u)+(A>>>u)|0,A=27724+(u<<1<<2)|0,s=A+8|0,f=n[s>>2]|0,p=f+8|0,c=n[p>>2]|0,(c|0)==(A|0)?(s=E&~(1<<u),n[6921]=s):(n[c+12>>2]=A,n[s>>2]=c,s=E),j=u<<3,h=j-T|0,n[f+4>>2]=T|3,l=f+T|0,n[l+4>>2]=h|1,n[f+j>>2]=h,x|0&&(u=n[6926]|0,A=x>>>3,c=27724+(A<<1<<2)|0,A=1<<A,s&A?(s=c+8|0,A=n[s>>2]|0):(n[6921]=s|A,A=c,s=c+8|0),n[s>>2]=u,n[A+12>>2]=u,n[u+8>>2]=A,n[u+12>>2]=c),n[6923]=h,n[6926]=l,j=p,L=ee,j|0;if(f=n[6922]|0,f){for(c=(f&0-f)+-1|0,l=c>>>12&16,c=c>>>l,u=c>>>5&8,c=c>>>u,h=c>>>2&4,c=c>>>h,p=c>>>1&2,c=c>>>p,g=c>>>1&1,g=n[27988+((u|l|h|p|g)+(c>>>g)<<2)>>2]|0,c=g,p=g,g=(n[g+4>>2]&-8)-T|0;s=n[c+16>>2]|0,!(!s&&(s=n[c+20>>2]|0,!s));)h=(n[s+4>>2]&-8)-T|0,l=h>>>0<g>>>0,c=s,p=l?s:p,g=l?h:g;if(h=p+T|0,h>>>0>p>>>0){l=n[p+24>>2]|0,A=n[p+12>>2]|0;do if((A|0)==(p|0)){if(s=p+20|0,A=n[s>>2]|0,!A&&(s=p+16|0,A=n[s>>2]|0,!A)){c=0;break}for(;;)if(u=A+20|0,c=n[u>>2]|0,c)A=c,s=u;else if(u=A+16|0,c=n[u>>2]|0,c)A=c,s=u;else break;n[s>>2]=0,c=A}else c=n[p+8>>2]|0,n[c+12>>2]=A,n[A+8>>2]=c,c=A;while(!1);do if(l|0){if(A=n[p+28>>2]|0,s=27988+(A<<2)|0,(p|0)==(n[s>>2]|0)){if(n[s>>2]=c,!c){n[6922]=f&~(1<<A);break}}else if(j=l+16|0,n[((n[j>>2]|0)==(p|0)?j:l+20|0)>>2]=c,!c)break;n[c+24>>2]=l,A=n[p+16>>2]|0,A|0&&(n[c+16>>2]=A,n[A+24>>2]=c),A=n[p+20>>2]|0,A|0&&(n[c+20>>2]=A,n[A+24>>2]=c)}while(!1);return g>>>0<16?(j=g+T|0,n[p+4>>2]=j|3,j=p+j+4|0,n[j>>2]=n[j>>2]|1):(n[p+4>>2]=T|3,n[h+4>>2]=g|1,n[h+g>>2]=g,x|0&&(u=n[6926]|0,A=x>>>3,c=27724+(A<<1<<2)|0,A=1<<A,A&E?(s=c+8|0,A=n[s>>2]|0):(n[6921]=A|E,A=c,s=c+8|0),n[s>>2]=u,n[A+12>>2]=u,n[u+8>>2]=A,n[u+12>>2]=c),n[6923]=g,n[6926]=h),j=p+8|0,L=ee,j|0}else E=T}else E=T}else E=T}else if(s>>>0<=4294967231)if(s=s+11|0,T=s&-8,u=n[6922]|0,u){l=0-T|0,s=s>>>8,s?T>>>0>16777215?g=31:(E=(s+1048320|0)>>>16&8,F=s<<E,p=(F+520192|0)>>>16&4,F=F<<p,g=(F+245760|0)>>>16&2,g=14-(p|E|g)+(F<<g>>>15)|0,g=T>>>(g+7|0)&1|g<<1):g=0,c=n[27988+(g<<2)>>2]|0;e:do if(!c)c=0,s=0,F=61;else for(s=0,p=T<<((g|0)==31?0:25-(g>>>1)|0),f=0;;){if(h=(n[c+4>>2]&-8)-T|0,h>>>0<l>>>0)if(h)s=c,l=h;else{s=c,l=0,F=65;break e}if(F=n[c+20>>2]|0,c=n[c+16+(p>>>31<<2)>>2]|0,f=(F|0)==0|(F|0)==(c|0)?f:F,c)p=p<<1;else{c=f,F=61;break}}while(!1);if((F|0)==61){if((c|0)==0&(s|0)==0){if(s=2<<g,s=(s|0-s)&u,!s){E=T;break}E=(s&0-s)+-1|0,h=E>>>12&16,E=E>>>h,f=E>>>5&8,E=E>>>f,p=E>>>2&4,E=E>>>p,g=E>>>1&2,E=E>>>g,c=E>>>1&1,s=0,c=n[27988+((f|h|p|g|c)+(E>>>c)<<2)>>2]|0}c?F=65:(p=s,h=l)}if((F|0)==65)for(f=c;;)if(E=(n[f+4>>2]&-8)-T|0,c=E>>>0<l>>>0,l=c?E:l,s=c?f:s,c=n[f+16>>2]|0,c||(c=n[f+20>>2]|0),c)f=c;else{p=s,h=l;break}if((p|0)!=0&&h>>>0<((n[6923]|0)-T|0)>>>0&&(x=p+T|0,x>>>0>p>>>0)){f=n[p+24>>2]|0,A=n[p+12>>2]|0;do if((A|0)==(p|0)){if(s=p+20|0,A=n[s>>2]|0,!A&&(s=p+16|0,A=n[s>>2]|0,!A)){A=0;break}for(;;)if(l=A+20|0,c=n[l>>2]|0,c)A=c,s=l;else if(l=A+16|0,c=n[l>>2]|0,c)A=c,s=l;else break;n[s>>2]=0}else j=n[p+8>>2]|0,n[j+12>>2]=A,n[A+8>>2]=j;while(!1);do if(f){if(s=n[p+28>>2]|0,c=27988+(s<<2)|0,(p|0)==(n[c>>2]|0)){if(n[c>>2]=A,!A){u=u&~(1<<s),n[6922]=u;break}}else if(j=f+16|0,n[((n[j>>2]|0)==(p|0)?j:f+20|0)>>2]=A,!A)break;n[A+24>>2]=f,s=n[p+16>>2]|0,s|0&&(n[A+16>>2]=s,n[s+24>>2]=A),s=n[p+20>>2]|0,s&&(n[A+20>>2]=s,n[s+24>>2]=A)}while(!1);e:do if(h>>>0<16)j=h+T|0,n[p+4>>2]=j|3,j=p+j+4|0,n[j>>2]=n[j>>2]|1;else{if(n[p+4>>2]=T|3,n[x+4>>2]=h|1,n[x+h>>2]=h,A=h>>>3,h>>>0<256){c=27724+(A<<1<<2)|0,s=n[6921]|0,A=1<<A,s&A?(s=c+8|0,A=n[s>>2]|0):(n[6921]=s|A,A=c,s=c+8|0),n[s>>2]=x,n[A+12>>2]=x,n[x+8>>2]=A,n[x+12>>2]=c;break}if(A=h>>>8,A?h>>>0>16777215?c=31:(W=(A+1048320|0)>>>16&8,j=A<<W,N=(j+520192|0)>>>16&4,j=j<<N,c=(j+245760|0)>>>16&2,c=14-(N|W|c)+(j<<c>>>15)|0,c=h>>>(c+7|0)&1|c<<1):c=0,A=27988+(c<<2)|0,n[x+28>>2]=c,s=x+16|0,n[s+4>>2]=0,n[s>>2]=0,s=1<<c,!(u&s)){n[6922]=u|s,n[A>>2]=x,n[x+24>>2]=A,n[x+12>>2]=x,n[x+8>>2]=x;break}A=n[A>>2]|0;t:do if((n[A+4>>2]&-8|0)!=(h|0)){for(u=h<<((c|0)==31?0:25-(c>>>1)|0);c=A+16+(u>>>31<<2)|0,s=n[c>>2]|0,!!s;)if((n[s+4>>2]&-8|0)==(h|0)){A=s;break t}else u=u<<1,A=s;n[c>>2]=x,n[x+24>>2]=A,n[x+12>>2]=x,n[x+8>>2]=x;break e}while(!1);W=A+8|0,j=n[W>>2]|0,n[j+12>>2]=x,n[W>>2]=x,n[x+8>>2]=j,n[x+12>>2]=A,n[x+24>>2]=0}while(!1);return j=p+8|0,L=ee,j|0}else E=T}else E=T;else E=-1;while(!1);if(c=n[6923]|0,c>>>0>=E>>>0)return A=c-E|0,s=n[6926]|0,A>>>0>15?(j=s+E|0,n[6926]=j,n[6923]=A,n[j+4>>2]=A|1,n[s+c>>2]=A,n[s+4>>2]=E|3):(n[6923]=0,n[6926]=0,n[s+4>>2]=c|3,j=s+c+4|0,n[j>>2]=n[j>>2]|1),j=s+8|0,L=ee,j|0;if(h=n[6924]|0,h>>>0>E>>>0)return N=h-E|0,n[6924]=N,j=n[6927]|0,W=j+E|0,n[6927]=W,n[W+4>>2]=N|1,n[j+4>>2]=E|3,j=j+8|0,L=ee,j|0;if(n[7039]|0?s=n[7041]|0:(n[7041]=4096,n[7040]=4096,n[7042]=-1,n[7043]=-1,n[7044]=0,n[7032]=0,n[7039]=v&-16^1431655768,s=4096),p=E+48|0,g=E+47|0,f=s+g|0,l=0-s|0,T=f&l,T>>>0<=E>>>0||(s=n[7031]|0,s|0&&(x=n[7029]|0,v=x+T|0,v>>>0<=x>>>0|v>>>0>s>>>0)))return j=0,L=ee,j|0;e:do if(n[7032]&4)A=0,F=143;else{c=n[6927]|0;t:do if(c){for(u=28132;v=n[u>>2]|0,!(v>>>0<=c>>>0&&(v+(n[u+4>>2]|0)|0)>>>0>c>>>0);)if(s=n[u+8>>2]|0,s)u=s;else{F=128;break t}if(A=f-h&l,A>>>0<2147483647)if(s=gn(A|0)|0,(s|0)==((n[u>>2]|0)+(n[u+4>>2]|0)|0)){if((s|0)!=-1){h=A,f=s,F=145;break e}}else u=s,F=136;else A=0}else F=128;while(!1);do if((F|0)==128)if(c=gn(0)|0,(c|0)!=-1&&(A=c,C=n[7040]|0,I=C+-1|0,A=((I&A|0)==0?0:(I+A&0-C)-A|0)+T|0,C=n[7029]|0,I=A+C|0,A>>>0>E>>>0&A>>>0<2147483647)){if(v=n[7031]|0,v|0&&I>>>0<=C>>>0|I>>>0>v>>>0){A=0;break}if(s=gn(A|0)|0,(s|0)==(c|0)){h=A,f=c,F=145;break e}else u=s,F=136}else A=0;while(!1);do if((F|0)==136){if(c=0-A|0,!(p>>>0>A>>>0&(A>>>0<2147483647&(u|0)!=-1)))if((u|0)==-1){A=0;break}else{h=A,f=u,F=145;break e}if(s=n[7041]|0,s=g-A+s&0-s,s>>>0>=2147483647){h=A,f=u,F=145;break e}if((gn(s|0)|0)==-1){gn(c|0)|0,A=0;break}else{h=s+A|0,f=u,F=145;break e}}while(!1);n[7032]=n[7032]|4,F=143}while(!1);if((F|0)==143&&T>>>0<2147483647&&(N=gn(T|0)|0,I=gn(0)|0,U=I-N|0,H=U>>>0>(E+40|0)>>>0,!((N|0)==-1|H^1|N>>>0<I>>>0&((N|0)!=-1&(I|0)!=-1)^1))&&(h=H?U:A,f=N,F=145),(F|0)==145){A=(n[7029]|0)+h|0,n[7029]=A,A>>>0>(n[7030]|0)>>>0&&(n[7030]=A),g=n[6927]|0;e:do if(g){for(A=28132;;){if(s=n[A>>2]|0,c=n[A+4>>2]|0,(f|0)==(s+c|0)){F=154;break}if(u=n[A+8>>2]|0,u)A=u;else break}if((F|0)==154&&(W=A+4|0,(n[A+12>>2]&8|0)==0)&&f>>>0>g>>>0&s>>>0<=g>>>0){n[W>>2]=c+h,j=(n[6924]|0)+h|0,N=g+8|0,N=(N&7|0)==0?0:0-N&7,W=g+N|0,N=j-N|0,n[6927]=W,n[6924]=N,n[W+4>>2]=N|1,n[g+j+4>>2]=40,n[6928]=n[7043];break}for(f>>>0<(n[6925]|0)>>>0&&(n[6925]=f),c=f+h|0,A=28132;;){if((n[A>>2]|0)==(c|0)){F=162;break}if(s=n[A+8>>2]|0,s)A=s;else break}if((F|0)==162&&(n[A+12>>2]&8|0)==0){n[A>>2]=f,x=A+4|0,n[x>>2]=(n[x>>2]|0)+h,x=f+8|0,x=f+((x&7|0)==0?0:0-x&7)|0,A=c+8|0,A=c+((A&7|0)==0?0:0-A&7)|0,T=x+E|0,p=A-x-E|0,n[x+4>>2]=E|3;t:do if((g|0)==(A|0))j=(n[6924]|0)+p|0,n[6924]=j,n[6927]=T,n[T+4>>2]=j|1;else{if((n[6926]|0)==(A|0)){j=(n[6923]|0)+p|0,n[6923]=j,n[6926]=T,n[T+4>>2]=j|1,n[T+j>>2]=j;break}if(s=n[A+4>>2]|0,(s&3|0)==1){h=s&-8,u=s>>>3;r:do if(s>>>0<256)if(s=n[A+8>>2]|0,c=n[A+12>>2]|0,(c|0)==(s|0)){n[6921]=n[6921]&~(1<<u);break}else{n[s+12>>2]=c,n[c+8>>2]=s;break}else{f=n[A+24>>2]|0,s=n[A+12>>2]|0;do if((s|0)==(A|0)){if(c=A+16|0,u=c+4|0,s=n[u>>2]|0,s)c=u;else if(s=n[c>>2]|0,!s){s=0;break}for(;;)if(l=s+20|0,u=n[l>>2]|0,u)s=u,c=l;else if(l=s+16|0,u=n[l>>2]|0,u)s=u,c=l;else break;n[c>>2]=0}else j=n[A+8>>2]|0,n[j+12>>2]=s,n[s+8>>2]=j;while(!1);if(!f)break;c=n[A+28>>2]|0,u=27988+(c<<2)|0;do if((n[u>>2]|0)!=(A|0)){if(j=f+16|0,n[((n[j>>2]|0)==(A|0)?j:f+20|0)>>2]=s,!s)break r}else{if(n[u>>2]=s,s|0)break;n[6922]=n[6922]&~(1<<c);break r}while(!1);if(n[s+24>>2]=f,c=A+16|0,u=n[c>>2]|0,u|0&&(n[s+16>>2]=u,n[u+24>>2]=s),c=n[c+4>>2]|0,!c)break;n[s+20>>2]=c,n[c+24>>2]=s}while(!1);A=A+h|0,l=h+p|0}else l=p;if(A=A+4|0,n[A>>2]=n[A>>2]&-2,n[T+4>>2]=l|1,n[T+l>>2]=l,A=l>>>3,l>>>0<256){c=27724+(A<<1<<2)|0,s=n[6921]|0,A=1<<A,s&A?(s=c+8|0,A=n[s>>2]|0):(n[6921]=s|A,A=c,s=c+8|0),n[s>>2]=T,n[A+12>>2]=T,n[T+8>>2]=A,n[T+12>>2]=c;break}A=l>>>8;do if(!A)u=0;else{if(l>>>0>16777215){u=31;break}W=(A+1048320|0)>>>16&8,j=A<<W,N=(j+520192|0)>>>16&4,j=j<<N,u=(j+245760|0)>>>16&2,u=14-(N|W|u)+(j<<u>>>15)|0,u=l>>>(u+7|0)&1|u<<1}while(!1);if(A=27988+(u<<2)|0,n[T+28>>2]=u,s=T+16|0,n[s+4>>2]=0,n[s>>2]=0,s=n[6922]|0,c=1<<u,!(s&c)){n[6922]=s|c,n[A>>2]=T,n[T+24>>2]=A,n[T+12>>2]=T,n[T+8>>2]=T;break}A=n[A>>2]|0;r:do if((n[A+4>>2]&-8|0)!=(l|0)){for(u=l<<((u|0)==31?0:25-(u>>>1)|0);c=A+16+(u>>>31<<2)|0,s=n[c>>2]|0,!!s;)if((n[s+4>>2]&-8|0)==(l|0)){A=s;break r}else u=u<<1,A=s;n[c>>2]=T,n[T+24>>2]=A,n[T+12>>2]=T,n[T+8>>2]=T;break t}while(!1);W=A+8|0,j=n[W>>2]|0,n[j+12>>2]=T,n[W>>2]=T,n[T+8>>2]=j,n[T+12>>2]=A,n[T+24>>2]=0}while(!1);return j=x+8|0,L=ee,j|0}for(A=28132;s=n[A>>2]|0,!(s>>>0<=g>>>0&&(j=s+(n[A+4>>2]|0)|0,j>>>0>g>>>0));)A=n[A+8>>2]|0;l=j+-47|0,s=l+8|0,s=l+((s&7|0)==0?0:0-s&7)|0,l=g+16|0,s=s>>>0<l>>>0?g:s,A=s+8|0,c=h+-40|0,N=f+8|0,N=(N&7|0)==0?0:0-N&7,W=f+N|0,N=c-N|0,n[6927]=W,n[6924]=N,n[W+4>>2]=N|1,n[f+c+4>>2]=40,n[6928]=n[7043],c=s+4|0,n[c>>2]=27,n[A>>2]=n[7033],n[A+4>>2]=n[7034],n[A+8>>2]=n[7035],n[A+12>>2]=n[7036],n[7033]=f,n[7034]=h,n[7036]=0,n[7035]=A,A=s+24|0;do W=A,A=A+4|0,n[A>>2]=7;while((W+8|0)>>>0<j>>>0);if((s|0)!=(g|0)){if(f=s-g|0,n[c>>2]=n[c>>2]&-2,n[g+4>>2]=f|1,n[s>>2]=f,A=f>>>3,f>>>0<256){c=27724+(A<<1<<2)|0,s=n[6921]|0,A=1<<A,s&A?(s=c+8|0,A=n[s>>2]|0):(n[6921]=s|A,A=c,s=c+8|0),n[s>>2]=g,n[A+12>>2]=g,n[g+8>>2]=A,n[g+12>>2]=c;break}if(A=f>>>8,A?f>>>0>16777215?u=31:(W=(A+1048320|0)>>>16&8,j=A<<W,N=(j+520192|0)>>>16&4,j=j<<N,u=(j+245760|0)>>>16&2,u=14-(N|W|u)+(j<<u>>>15)|0,u=f>>>(u+7|0)&1|u<<1):u=0,c=27988+(u<<2)|0,n[g+28>>2]=u,n[g+20>>2]=0,n[l>>2]=0,A=n[6922]|0,s=1<<u,!(A&s)){n[6922]=A|s,n[c>>2]=g,n[g+24>>2]=c,n[g+12>>2]=g,n[g+8>>2]=g;break}A=n[c>>2]|0;t:do if((n[A+4>>2]&-8|0)!=(f|0)){for(u=f<<((u|0)==31?0:25-(u>>>1)|0);c=A+16+(u>>>31<<2)|0,s=n[c>>2]|0,!!s;)if((n[s+4>>2]&-8|0)==(f|0)){A=s;break t}else u=u<<1,A=s;n[c>>2]=g,n[g+24>>2]=A,n[g+12>>2]=g,n[g+8>>2]=g;break e}while(!1);W=A+8|0,j=n[W>>2]|0,n[j+12>>2]=g,n[W>>2]=g,n[g+8>>2]=j,n[g+12>>2]=A,n[g+24>>2]=0}}else j=n[6925]|0,(j|0)==0|f>>>0<j>>>0&&(n[6925]=f),n[7033]=f,n[7034]=h,n[7036]=0,n[6930]=n[7039],n[6929]=-1,n[6934]=27724,n[6933]=27724,n[6936]=27732,n[6935]=27732,n[6938]=27740,n[6937]=27740,n[6940]=27748,n[6939]=27748,n[6942]=27756,n[6941]=27756,n[6944]=27764,n[6943]=27764,n[6946]=27772,n[6945]=27772,n[6948]=27780,n[6947]=27780,n[6950]=27788,n[6949]=27788,n[6952]=27796,n[6951]=27796,n[6954]=27804,n[6953]=27804,n[6956]=27812,n[6955]=27812,n[6958]=27820,n[6957]=27820,n[6960]=27828,n[6959]=27828,n[6962]=27836,n[6961]=27836,n[6964]=27844,n[6963]=27844,n[6966]=27852,n[6965]=27852,n[6968]=27860,n[6967]=27860,n[6970]=27868,n[6969]=27868,n[6972]=27876,n[6971]=27876,n[6974]=27884,n[6973]=27884,n[6976]=27892,n[6975]=27892,n[6978]=27900,n[6977]=27900,n[6980]=27908,n[6979]=27908,n[6982]=27916,n[6981]=27916,n[6984]=27924,n[6983]=27924,n[6986]=27932,n[6985]=27932,n[6988]=27940,n[6987]=27940,n[6990]=27948,n[6989]=27948,n[6992]=27956,n[6991]=27956,n[6994]=27964,n[6993]=27964,n[6996]=27972,n[6995]=27972,j=h+-40|0,N=f+8|0,N=(N&7|0)==0?0:0-N&7,W=f+N|0,N=j-N|0,n[6927]=W,n[6924]=N,n[W+4>>2]=N|1,n[f+j+4>>2]=40,n[6928]=n[7043];while(!1);if(A=n[6924]|0,A>>>0>E>>>0)return N=A-E|0,n[6924]=N,j=n[6927]|0,W=j+E|0,n[6927]=W,n[W+4>>2]=N|1,n[j+4>>2]=E|3,j=j+8|0,L=ee,j|0}return j=wf()|0,n[j>>2]=12,j=0,L=ee,j|0}function be(s){s=s|0;var A=0,c=0,u=0,l=0,f=0,h=0,p=0,g=0;if(s){c=s+-8|0,l=n[6925]|0,s=n[s+-4>>2]|0,A=s&-8,g=c+A|0;do if(s&1)p=c,h=c;else{if(u=n[c>>2]|0,!(s&3)||(h=c+(0-u)|0,f=u+A|0,h>>>0<l>>>0))return;if((n[6926]|0)==(h|0)){if(s=g+4|0,A=n[s>>2]|0,(A&3|0)!=3){p=h,A=f;break}n[6923]=f,n[s>>2]=A&-2,n[h+4>>2]=f|1,n[h+f>>2]=f;return}if(c=u>>>3,u>>>0<256)if(s=n[h+8>>2]|0,A=n[h+12>>2]|0,(A|0)==(s|0)){n[6921]=n[6921]&~(1<<c),p=h,A=f;break}else{n[s+12>>2]=A,n[A+8>>2]=s,p=h,A=f;break}l=n[h+24>>2]|0,s=n[h+12>>2]|0;do if((s|0)==(h|0)){if(A=h+16|0,c=A+4|0,s=n[c>>2]|0,s)A=c;else if(s=n[A>>2]|0,!s){s=0;break}for(;;)if(u=s+20|0,c=n[u>>2]|0,c)s=c,A=u;else if(u=s+16|0,c=n[u>>2]|0,c)s=c,A=u;else break;n[A>>2]=0}else p=n[h+8>>2]|0,n[p+12>>2]=s,n[s+8>>2]=p;while(!1);if(l){if(A=n[h+28>>2]|0,c=27988+(A<<2)|0,(n[c>>2]|0)==(h|0)){if(n[c>>2]=s,!s){n[6922]=n[6922]&~(1<<A),p=h,A=f;break}}else if(p=l+16|0,n[((n[p>>2]|0)==(h|0)?p:l+20|0)>>2]=s,!s){p=h,A=f;break}n[s+24>>2]=l,A=h+16|0,c=n[A>>2]|0,c|0&&(n[s+16>>2]=c,n[c+24>>2]=s),A=n[A+4>>2]|0,A?(n[s+20>>2]=A,n[A+24>>2]=s,p=h,A=f):(p=h,A=f)}else p=h,A=f}while(!1);if(!(h>>>0>=g>>>0)&&(s=g+4|0,u=n[s>>2]|0,!!(u&1))){if(u&2)n[s>>2]=u&-2,n[p+4>>2]=A|1,n[h+A>>2]=A,l=A;else{if((n[6927]|0)==(g|0)){if(g=(n[6924]|0)+A|0,n[6924]=g,n[6927]=p,n[p+4>>2]=g|1,(p|0)!=(n[6926]|0))return;n[6926]=0,n[6923]=0;return}if((n[6926]|0)==(g|0)){g=(n[6923]|0)+A|0,n[6923]=g,n[6926]=h,n[p+4>>2]=g|1,n[h+g>>2]=g;return}l=(u&-8)+A|0,c=u>>>3;do if(u>>>0<256)if(A=n[g+8>>2]|0,s=n[g+12>>2]|0,(s|0)==(A|0)){n[6921]=n[6921]&~(1<<c);break}else{n[A+12>>2]=s,n[s+8>>2]=A;break}else{f=n[g+24>>2]|0,s=n[g+12>>2]|0;do if((s|0)==(g|0)){if(A=g+16|0,c=A+4|0,s=n[c>>2]|0,s)A=c;else if(s=n[A>>2]|0,!s){c=0;break}for(;;)if(u=s+20|0,c=n[u>>2]|0,c)s=c,A=u;else if(u=s+16|0,c=n[u>>2]|0,c)s=c,A=u;else break;n[A>>2]=0,c=s}else c=n[g+8>>2]|0,n[c+12>>2]=s,n[s+8>>2]=c,c=s;while(!1);if(f|0){if(s=n[g+28>>2]|0,A=27988+(s<<2)|0,(n[A>>2]|0)==(g|0)){if(n[A>>2]=c,!c){n[6922]=n[6922]&~(1<<s);break}}else if(u=f+16|0,n[((n[u>>2]|0)==(g|0)?u:f+20|0)>>2]=c,!c)break;n[c+24>>2]=f,s=g+16|0,A=n[s>>2]|0,A|0&&(n[c+16>>2]=A,n[A+24>>2]=c),s=n[s+4>>2]|0,s|0&&(n[c+20>>2]=s,n[s+24>>2]=c)}}while(!1);if(n[p+4>>2]=l|1,n[h+l>>2]=l,(p|0)==(n[6926]|0)){n[6923]=l;return}}if(s=l>>>3,l>>>0<256){c=27724+(s<<1<<2)|0,A=n[6921]|0,s=1<<s,A&s?(A=c+8|0,s=n[A>>2]|0):(n[6921]=A|s,s=c,A=c+8|0),n[A>>2]=p,n[s+12>>2]=p,n[p+8>>2]=s,n[p+12>>2]=c;return}s=l>>>8,s?l>>>0>16777215?u=31:(h=(s+1048320|0)>>>16&8,g=s<<h,f=(g+520192|0)>>>16&4,g=g<<f,u=(g+245760|0)>>>16&2,u=14-(f|h|u)+(g<<u>>>15)|0,u=l>>>(u+7|0)&1|u<<1):u=0,s=27988+(u<<2)|0,n[p+28>>2]=u,n[p+20>>2]=0,n[p+16>>2]=0,A=n[6922]|0,c=1<<u;e:do if(!(A&c))n[6922]=A|c,n[s>>2]=p,n[p+24>>2]=s,n[p+12>>2]=p,n[p+8>>2]=p;else{s=n[s>>2]|0;t:do if((n[s+4>>2]&-8|0)!=(l|0)){for(u=l<<((u|0)==31?0:25-(u>>>1)|0);c=s+16+(u>>>31<<2)|0,A=n[c>>2]|0,!!A;)if((n[A+4>>2]&-8|0)==(l|0)){s=A;break t}else u=u<<1,s=A;n[c>>2]=p,n[p+24>>2]=s,n[p+12>>2]=p,n[p+8>>2]=p;break e}while(!1);h=s+8|0,g=n[h>>2]|0,n[g+12>>2]=p,n[h>>2]=p,n[p+8>>2]=g,n[p+12>>2]=s,n[p+24>>2]=0}while(!1);if(g=(n[6929]|0)+-1|0,n[6929]=g,!(g|0)){for(s=28140;s=n[s>>2]|0,s;)s=s+8|0;n[6929]=-1}}}}function zt(s,A){s=s|0,A=A|0;var c=0;return s?(c=Jt(A,s)|0,(A|s)>>>0>65535&&(c=((c>>>0)/(s>>>0)|0)==(A|0)?c:-1)):c=0,s=ct(c)|0,!s||!(n[s+-4>>2]&3)||mn(s|0,0,c|0)|0,s|0}function $T(s,A){s=s|0,A=A|0;var c=0,u=0;return s?A>>>0>4294967231?(A=wf()|0,n[A>>2]=12,A=0,A|0):(c=ey(s+-8|0,A>>>0<11?16:A+11&-8)|0,c|0?(A=c+8|0,A|0):(c=ct(A)|0,c?(u=n[s+-4>>2]|0,u=(u&-8)-((u&3|0)==0?8:4)|0,Mr(c|0,s|0,(u>>>0<A>>>0?u:A)|0)|0,be(s),A=c,A|0):(A=0,A|0))):(A=ct(A)|0,A|0)}function ey(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,x=0,E=0;if(x=s+4|0,E=n[x>>2]|0,c=E&-8,p=s+c|0,!(E&3))return A>>>0<256?(s=0,s|0):(c>>>0>=(A+4|0)>>>0&&(c-A|0)>>>0<=n[7041]<<1>>>0||(s=0),s|0);if(c>>>0>=A>>>0)return c=c-A|0,c>>>0<=15||(T=s+A|0,n[x>>2]=E&1|A|2,n[T+4>>2]=c|3,E=p+4|0,n[E>>2]=n[E>>2]|1,Cf(T,c)),s|0;if((n[6927]|0)==(p|0))return T=(n[6924]|0)+c|0,c=T-A|0,u=s+A|0,T>>>0<=A>>>0?(s=0,s|0):(n[x>>2]=E&1|A|2,n[u+4>>2]=c|1,n[6927]=u,n[6924]=c,s|0);if((n[6926]|0)==(p|0))return u=(n[6923]|0)+c|0,u>>>0<A>>>0?(s=0,s|0):(c=u-A|0,c>>>0>15?(T=s+A|0,u=s+u|0,n[x>>2]=E&1|A|2,n[T+4>>2]=c|1,n[u>>2]=c,u=u+4|0,n[u>>2]=n[u>>2]&-2,u=T):(n[x>>2]=E&1|u|2,u=s+u+4|0,n[u>>2]=n[u>>2]|1,u=0,c=0),n[6923]=c,n[6926]=u,s|0);if(u=n[p+4>>2]|0,u&2|0||(g=(u&-8)+c|0,g>>>0<A>>>0))return s=0,s|0;T=g-A|0,l=u>>>3;do if(u>>>0<256)if(u=n[p+8>>2]|0,c=n[p+12>>2]|0,(c|0)==(u|0)){n[6921]=n[6921]&~(1<<l);break}else{n[u+12>>2]=c,n[c+8>>2]=u;break}else{h=n[p+24>>2]|0,c=n[p+12>>2]|0;do if((c|0)==(p|0)){if(u=p+16|0,l=u+4|0,c=n[l>>2]|0,c)u=l;else if(c=n[u>>2]|0,!c){l=0;break}for(;;)if(f=c+20|0,l=n[f>>2]|0,l)c=l,u=f;else if(f=c+16|0,l=n[f>>2]|0,l)c=l,u=f;else break;n[u>>2]=0,l=c}else l=n[p+8>>2]|0,n[l+12>>2]=c,n[c+8>>2]=l,l=c;while(!1);if(h|0){if(c=n[p+28>>2]|0,u=27988+(c<<2)|0,(n[u>>2]|0)==(p|0)){if(n[u>>2]=l,!l){n[6922]=n[6922]&~(1<<c);break}}else if(f=h+16|0,n[((n[f>>2]|0)==(p|0)?f:h+20|0)>>2]=l,!l)break;n[l+24>>2]=h,c=p+16|0,u=n[c>>2]|0,u|0&&(n[l+16>>2]=u,n[u+24>>2]=l),c=n[c+4>>2]|0,c|0&&(n[l+20>>2]=c,n[c+24>>2]=l)}}while(!1);return T>>>0<16?(n[x>>2]=E&1|g|2,E=s+g+4|0,n[E>>2]=n[E>>2]|1,s|0):(p=s+A|0,n[x>>2]=E&1|A|2,n[p+4>>2]=T|3,E=s+g+4|0,n[E>>2]=n[E>>2]|1,Cf(p,T),s|0)}function Cf(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0;p=s+A|0,c=n[s+4>>2]|0;do if(c&1)h=s;else{if(l=n[s>>2]|0,!(c&3))return;if(h=s+(0-l)|0,A=l+A|0,(n[6926]|0)==(h|0)){if(s=p+4|0,c=n[s>>2]|0,(c&3|0)!=3)break;n[6923]=A,n[s>>2]=c&-2,n[h+4>>2]=A|1,n[p>>2]=A;return}if(u=l>>>3,l>>>0<256)if(s=n[h+8>>2]|0,c=n[h+12>>2]|0,(c|0)==(s|0)){n[6921]=n[6921]&~(1<<u);break}else{n[s+12>>2]=c,n[c+8>>2]=s;break}f=n[h+24>>2]|0,s=n[h+12>>2]|0;do if((s|0)==(h|0)){if(c=h+16|0,u=c+4|0,s=n[u>>2]|0,s)c=u;else if(s=n[c>>2]|0,!s){s=0;break}for(;;)if(l=s+20|0,u=n[l>>2]|0,u)s=u,c=l;else if(l=s+16|0,u=n[l>>2]|0,u)s=u,c=l;else break;n[c>>2]=0}else l=n[h+8>>2]|0,n[l+12>>2]=s,n[s+8>>2]=l;while(!1);if(f){if(c=n[h+28>>2]|0,u=27988+(c<<2)|0,(n[u>>2]|0)==(h|0)){if(n[u>>2]=s,!s){n[6922]=n[6922]&~(1<<c);break}}else if(l=f+16|0,n[((n[l>>2]|0)==(h|0)?l:f+20|0)>>2]=s,!s)break;n[s+24>>2]=f,c=h+16|0,u=n[c>>2]|0,u|0&&(n[s+16>>2]=u,n[u+24>>2]=s),c=n[c+4>>2]|0,c&&(n[s+20>>2]=c,n[c+24>>2]=s)}}while(!1);if(s=p+4|0,u=n[s>>2]|0,u&2)n[s>>2]=u&-2,n[h+4>>2]=A|1,n[h+A>>2]=A,l=A;else{if((n[6927]|0)==(p|0)){if(p=(n[6924]|0)+A|0,n[6924]=p,n[6927]=h,n[h+4>>2]=p|1,(h|0)!=(n[6926]|0))return;n[6926]=0,n[6923]=0;return}if((n[6926]|0)==(p|0)){p=(n[6923]|0)+A|0,n[6923]=p,n[6926]=h,n[h+4>>2]=p|1,n[h+p>>2]=p;return}l=(u&-8)+A|0,c=u>>>3;do if(u>>>0<256)if(s=n[p+8>>2]|0,A=n[p+12>>2]|0,(A|0)==(s|0)){n[6921]=n[6921]&~(1<<c);break}else{n[s+12>>2]=A,n[A+8>>2]=s;break}else{f=n[p+24>>2]|0,A=n[p+12>>2]|0;do if((A|0)==(p|0)){if(s=p+16|0,c=s+4|0,A=n[c>>2]|0,A)s=c;else if(A=n[s>>2]|0,!A){c=0;break}for(;;)if(u=A+20|0,c=n[u>>2]|0,c)A=c,s=u;else if(u=A+16|0,c=n[u>>2]|0,c)A=c,s=u;else break;n[s>>2]=0,c=A}else c=n[p+8>>2]|0,n[c+12>>2]=A,n[A+8>>2]=c,c=A;while(!1);if(f|0){if(A=n[p+28>>2]|0,s=27988+(A<<2)|0,(n[s>>2]|0)==(p|0)){if(n[s>>2]=c,!c){n[6922]=n[6922]&~(1<<A);break}}else if(u=f+16|0,n[((n[u>>2]|0)==(p|0)?u:f+20|0)>>2]=c,!c)break;n[c+24>>2]=f,A=p+16|0,s=n[A>>2]|0,s|0&&(n[c+16>>2]=s,n[s+24>>2]=c),A=n[A+4>>2]|0,A|0&&(n[c+20>>2]=A,n[A+24>>2]=c)}}while(!1);if(n[h+4>>2]=l|1,n[h+l>>2]=l,(h|0)==(n[6926]|0)){n[6923]=l;return}}if(A=l>>>3,l>>>0<256){c=27724+(A<<1<<2)|0,s=n[6921]|0,A=1<<A,s&A?(s=c+8|0,A=n[s>>2]|0):(n[6921]=s|A,A=c,s=c+8|0),n[s>>2]=h,n[A+12>>2]=h,n[h+8>>2]=A,n[h+12>>2]=c;return}if(A=l>>>8,A?l>>>0>16777215?u=31:(f=(A+1048320|0)>>>16&8,p=A<<f,c=(p+520192|0)>>>16&4,p=p<<c,u=(p+245760|0)>>>16&2,u=14-(c|f|u)+(p<<u>>>15)|0,u=l>>>(u+7|0)&1|u<<1):u=0,A=27988+(u<<2)|0,n[h+28>>2]=u,n[h+20>>2]=0,n[h+16>>2]=0,s=n[6922]|0,c=1<<u,!(s&c)){n[6922]=s|c,n[A>>2]=h,n[h+24>>2]=A,n[h+12>>2]=h,n[h+8>>2]=h;return}A=n[A>>2]|0;e:do if((n[A+4>>2]&-8|0)!=(l|0)){for(u=l<<((u|0)==31?0:25-(u>>>1)|0);c=A+16+(u>>>31<<2)|0,s=n[c>>2]|0,!!s;)if((n[s+4>>2]&-8|0)==(l|0)){A=s;break e}else u=u<<1,A=s;n[c>>2]=h,n[h+24>>2]=A,n[h+12>>2]=h,n[h+8>>2]=h;return}while(!1);f=A+8|0,p=n[f>>2]|0,n[p+12>>2]=h,n[f>>2]=h,n[h+8>>2]=p,n[h+12>>2]=A,n[h+24>>2]=0}function pe(s,A,c,u){return s=s|0,A=A|0,c=c|0,u=u|0,c=s+c>>>0,Re(A+u+(c>>>0<s>>>0|0)>>>0|0),c|0}function Mt(s,A,c,u){return s=s|0,A=A|0,c=c|0,u=u|0,u=A-u-(c>>>0>s>>>0|0)>>>0,Re(u|0),s-c>>>0|0}function If(s){return s=s|0,(s?31-(Zr(s^s-1)|0)|0:32)|0}function h0(s,A,c,u,l){s=s|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,x=0,E=0,v=0,C=0,I=0;if(x=s,g=A,T=g,h=c,v=u,p=v,!T)return f=(l|0)!=0,p?f?(n[l>>2]=s|0,n[l+4>>2]=A&0,v=0,l=0,Re(v|0),l|0):(v=0,l=0,Re(v|0),l|0):(f&&(n[l>>2]=(x>>>0)%(h>>>0),n[l+4>>2]=0),v=0,l=(x>>>0)/(h>>>0)>>>0,Re(v|0),l|0);f=(p|0)==0;do if(h){if(!f){if(f=(Zr(p|0)|0)-(Zr(T|0)|0)|0,f>>>0<=31){E=f+1|0,p=31-f|0,A=f-31>>31,h=E,s=x>>>(E>>>0)&A|T<<p,A=T>>>(E>>>0)&A,f=0,p=x<<p;break}return l?(n[l>>2]=s|0,n[l+4>>2]=g|A&0,v=0,l=0,Re(v|0),l|0):(v=0,l=0,Re(v|0),l|0)}if(f=h-1|0,f&h|0){p=(Zr(h|0)|0)+33-(Zr(T|0)|0)|0,I=64-p|0,E=32-p|0,g=E>>31,C=p-32|0,A=C>>31,h=p,s=E-1>>31&T>>>(C>>>0)|(T<<E|x>>>(p>>>0))&A,A=A&T>>>(p>>>0),f=x<<I&g,p=(T<<I|x>>>(C>>>0))&g|x<<E&p-33>>31;break}return l|0&&(n[l>>2]=f&x,n[l+4>>2]=0),(h|0)==1?(C=g|A&0,I=s|0,Re(C|0),I|0):(I=If(h|0)|0,C=T>>>(I>>>0)|0,I=T<<32-I|x>>>(I>>>0)|0,Re(C|0),I|0)}else{if(f)return l|0&&(n[l>>2]=(T>>>0)%(h>>>0),n[l+4>>2]=0),C=0,I=(T>>>0)/(h>>>0)>>>0,Re(C|0),I|0;if(!x)return l|0&&(n[l>>2]=0,n[l+4>>2]=(T>>>0)%(p>>>0)),C=0,I=(T>>>0)/(p>>>0)>>>0,Re(C|0),I|0;if(f=p-1|0,!(f&p))return l|0&&(n[l>>2]=s|0,n[l+4>>2]=f&T|A&0),C=0,I=T>>>((If(p|0)|0)>>>0),Re(C|0),I|0;if(f=(Zr(p|0)|0)-(Zr(T|0)|0)|0,f>>>0<=30){A=f+1|0,p=31-f|0,h=A,s=T<<p|x>>>(A>>>0),A=T>>>(A>>>0),f=0,p=x<<p;break}return l?(n[l>>2]=s|0,n[l+4>>2]=g|A&0,C=0,I=0,Re(C|0),I|0):(C=0,I=0,Re(C|0),I|0)}while(!1);if(!h)T=p,g=0,p=0;else{E=c|0,x=v|u&0,T=pe(E|0,x|0,-1,-1)|0,c=R()|0,g=p,p=0;do u=g,g=f>>>31|g<<1,f=p|f<<1,u=s<<1|u>>>31|0,v=s>>>31|A<<1|0,Mt(T|0,c|0,u|0,v|0)|0,I=R()|0,C=I>>31|((I|0)<0?-1:0)<<1,p=C&1,s=Mt(u|0,v|0,C&E|0,(((I|0)<0?-1:0)>>31|((I|0)<0?-1:0)<<1)&x|0)|0,A=R()|0,h=h-1|0;while((h|0)!=0);T=g,g=0}return h=0,l|0&&(n[l>>2]=s,n[l+4>>2]=A),C=(f|0)>>>31|(T|h)<<1|(h<<1|f>>>31)&0|g,I=(f<<1|0)&-2|p,Re(C|0),I|0}function dn(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0;return T=A>>31|((A|0)<0?-1:0)<<1,g=((A|0)<0?-1:0)>>31|((A|0)<0?-1:0)<<1,f=u>>31|((u|0)<0?-1:0)<<1,l=((u|0)<0?-1:0)>>31|((u|0)<0?-1:0)<<1,p=Mt(T^s|0,g^A|0,T|0,g|0)|0,h=R()|0,s=f^T,A=l^g,Mt((h0(p,h,Mt(f^c|0,l^u|0,f|0,l|0)|0,R()|0,0)|0)^s|0,(R()|0)^A|0,s|0,A|0)|0}function ty(s,A){s=s|0,A=A|0;var c=0,u=0,l=0,f=0;return f=s&65535,l=A&65535,c=Jt(l,f)|0,u=s>>>16,s=(c>>>16)+(Jt(l,u)|0)|0,l=A>>>16,A=Jt(l,f)|0,Re((s>>>16)+(Jt(l,u)|0)+(((s&65535)+A|0)>>>16)|0),s+A<<16|c&65535|0}function lt(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0;return l=s,f=c,c=ty(l,f)|0,s=R()|0,Re((Jt(A,f)|0)+(Jt(u,l)|0)+s|s&0|0),c|0}function pn(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0;return l=L,L=L+16|0,p=l|0,h=A>>31|((A|0)<0?-1:0)<<1,f=((A|0)<0?-1:0)>>31|((A|0)<0?-1:0)<<1,T=u>>31|((u|0)<0?-1:0)<<1,g=((u|0)<0?-1:0)>>31|((u|0)<0?-1:0)<<1,s=Mt(h^s|0,f^A|0,h|0,f|0)|0,A=R()|0,h0(s,A,Mt(T^c|0,g^u|0,T|0,g|0)|0,R()|0,p)|0,u=Mt(n[p>>2]^h|0,n[p+4>>2]^f|0,h|0,f|0)|0,c=R()|0,L=l,Re(c|0),u|0}function $r(s,A,c,u){s=s|0,A=A|0,c=c|0,u=u|0;var l=0,f=0;return f=L,L=L+16|0,l=f|0,h0(s,A,c,u,l)|0,L=f,Re(n[l+4>>2]|0),n[l>>2]|0}function Mf(s,A,c){return s=s|0,A=A|0,c=c|0,(c|0)<32?(Re(A>>c|0),s>>>c|(A&(1<<c)-1)<<32-c):(Re(((A|0)<0?-1:0)|0),A>>c-32|0)}function se(s,A,c){return s=s|0,A=A|0,c=c|0,(c|0)<32?(Re(A>>>c|0),s>>>c|(A&(1<<c)-1)<<32-c):(Re(0),A>>>c-32|0)}function he(s,A,c){return s=s|0,A=A|0,c=c|0,(c|0)<32?(Re(A<<c|(s&(1<<c)-1<<32-c)>>>32-c|0),s<<c):(Re(s<<c-32|0),0)}function d0(s,A,c){return s=s|0,A=A|0,c=c|0,A=Zr(A)|0,(A|0)==32&&(A=A+(Zr(s)|0)|0),Re(0),A|0}function Lf(s,A){return s=+s,A=+A,s!=s?+A:A!=A?+s:+xb(+s,+A)}function Cs(s,A){return s=+s,A=+A,s!=s?+A:A!=A?+s:+Ha(+s,+A)}function Is(s){return s=+s,s>=0?+Lt(s+.5):+li(s-.5)}function Mr(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0;if((c|0)>=8192)return Eb(s|0,A|0,c|0)|0,s|0;if(f=s|0,l=s+c|0,(s&3)==(A&3)){for(;s&3;){if(!c)return f|0;ne[s>>0]=ne[A>>0]|0,s=s+1|0,A=A+1|0,c=c-1|0}for(c=l&-4|0,u=c-64|0;(s|0)<=(u|0);)n[s>>2]=n[A>>2],n[s+4>>2]=n[A+4>>2],n[s+8>>2]=n[A+8>>2],n[s+12>>2]=n[A+12>>2],n[s+16>>2]=n[A+16>>2],n[s+20>>2]=n[A+20>>2],n[s+24>>2]=n[A+24>>2],n[s+28>>2]=n[A+28>>2],n[s+32>>2]=n[A+32>>2],n[s+36>>2]=n[A+36>>2],n[s+40>>2]=n[A+40>>2],n[s+44>>2]=n[A+44>>2],n[s+48>>2]=n[A+48>>2],n[s+52>>2]=n[A+52>>2],n[s+56>>2]=n[A+56>>2],n[s+60>>2]=n[A+60>>2],s=s+64|0,A=A+64|0;for(;(s|0)<(c|0);)n[s>>2]=n[A>>2],s=s+4|0,A=A+4|0}else for(c=l-4|0;(s|0)<(c|0);)ne[s>>0]=ne[A>>0]|0,ne[s+1>>0]=ne[A+1>>0]|0,ne[s+2>>0]=ne[A+2>>0]|0,ne[s+3>>0]=ne[A+3>>0]|0,s=s+4|0,A=A+4|0;for(;(s|0)<(l|0);)ne[s>>0]=ne[A>>0]|0,s=s+1|0,A=A+1|0;return f|0}function p0(s,A,c){s=s|0,A=A|0,c=c|0;var u=0;if((A|0)<(s|0)&(s|0)<(A+c|0)){for(u=s,A=A+c|0,s=s+c|0;(c|0)>0;)s=s-1|0,A=A-1|0,c=c-1|0,ne[s>>0]=ne[A>>0]|0;s=u}else Mr(s,A,c)|0;return s|0}function mn(s,A,c){s=s|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0;if(f=s+c|0,A=A&255,(c|0)>=67){for(;s&3;)ne[s>>0]=A,s=s+1|0;for(u=f&-4|0,h=A|A<<8|A<<16|A<<24,l=u-64|0;(s|0)<=(l|0);)n[s>>2]=h,n[s+4>>2]=h,n[s+8>>2]=h,n[s+12>>2]=h,n[s+16>>2]=h,n[s+20>>2]=h,n[s+24>>2]=h,n[s+28>>2]=h,n[s+32>>2]=h,n[s+36>>2]=h,n[s+40>>2]=h,n[s+44>>2]=h,n[s+48>>2]=h,n[s+52>>2]=h,n[s+56>>2]=h,n[s+60>>2]=h,s=s+64|0;for(;(s|0)<(u|0);)n[s>>2]=h,s=s+4|0}for(;(s|0)<(f|0);)ne[s>>0]=A,s=s+1|0;return f-c|0}function Rf(s){return s=+s,s>=0?+Lt(s+.5):+li(s-.5)}function gn(s){s=s|0;var A=0,c=0,u=0;return u=wb()|0,c=n[Yt>>2]|0,A=c+s|0,(s|0)>0&(A|0)<(c|0)|(A|0)<0?(Sb(A|0)|0,qu(12),-1):(A|0)>(u|0)&&!(vb(A|0)|0)?(qu(12),-1):(n[Yt>>2]=A,c|0)}function ry(s,A,c){return s=s|0,A=A|0,c=c|0,bn[s&3](A|0,c|0)|0}function ny(s,A){return s=s|0,A=A|0,_b(0),0}var bn=[ny,$b,eT,tT];return{___divdi3:dn,___muldi3:lt,___remdi3:pn,___uremdi3:$r,_areNeighborCells:rT,_bitshift64Ashr:Mf,_bitshift64Lshr:se,_bitshift64Shl:he,_calloc:zt,_cellAreaKm2:Ub,_cellAreaM2:Gb,_cellAreaRads2:Bb,_cellToBoundary:Dn,_cellToCenterChild:lf,_cellToChildPos:_T,_cellToChildren:hT,_cellToChildrenSize:yo,_cellToLatLng:hi,_cellToLocalIj:FT,_cellToParent:e0,_cellToVertex:mr,_cellToVertexes:JT,_cellsToDirectedEdge:nT,_cellsToLinkedMultiPolygon:Db,_childPosToCell:wT,_compactCells:dT,_constructCell:uT,_destroyLinkedMultiPolygon:PT,_directedEdgeToBoundary:bo,_directedEdgeToCells:sT,_edgeLengthKm:LT,_edgeLengthM:RT,_edgeLengthRads:MT,_emscripten_replace_memory:Cb,_free:be,_getBaseCellNumber:af,_getDirectedEdgeDestination:oT,_getDirectedEdgeOrigin:iT,_getHexagonAreaAvgKm2:hf,_getHexagonAreaAvgM2:ST,_getHexagonEdgeLengthAvgKm:CT,_getHexagonEdgeLengthAvgM:IT,_getIcosahedronFaces:uf,_getIndexDigit:lT,_getNumCells:ys,_getPentagons:o0,_getRes0Cells:qb,_getResolution:Za,_greatCircleDistanceKm:_o,_greatCircleDistanceM:vT,_greatCircleDistanceRads:ET,_gridDisk:Wu,_gridDiskDistances:Qu,_gridDistance:a0,_gridPathCells:DT,_gridPathCellsSize:OT,_gridRing:Nb,_gridRingUnsafe:Xu,_i64Add:pe,_i64Subtract:Mt,_isPentagon:nt,_isResClassIII:gT,_isValidCell:Ts,_isValidDirectedEdge:nf,_isValidIndex:fT,_isValidVertex:_f,_latLngToCell:n0,_llvm_ctlz_i64:d0,_llvm_maxnum_f64:Lf,_llvm_minnum_f64:Cs,_llvm_round_f64:Is,_localIjToCell:kT,_malloc:ct,_maxFaceCount:yT,_maxGridDiskSize:Pb,_maxPolygonToCellsSize:kb,_maxPolygonToCellsSizeExperimental:GT,_memcpy:Mr,_memmove:p0,_memset:mn,_originToDirectedEdges:Xa,_pentagonCount:xT,_polygonToCells:Ob,_polygonToCellsExperimental:UT,_readInt64AsDoubleFromPointer:KT,_res0CellCount:Hb,_reverseDirectedEdge:of,_round:Rf,_sbrk:gn,_sizeOfCellBoundary:zT,_sizeOfCoordIJ:QT,_sizeOfGeoLoop:HT,_sizeOfGeoPolygon:qT,_sizeOfH3Index:jT,_sizeOfLatLng:VT,_sizeOfLinkedGeoPolygon:WT,_uncompactCells:pT,_uncompactCellsSize:mT,_vertexToLatLng:ZT,dynCall_iii:ry,establishStackSpace:Rb,stackAlloc:Ib,stackRestore:Lb,stackSave:Mb}})({Math,Int8Array,Int32Array,Uint8Array,Float32Array,Float64Array},{a:kn,b:w,c:S,d:ab,e:lb,f:Bu,g:cb,h:fb,i:ub,j:sb,k:Ou,l:Uu,m:Du,n:Ab,o:ob,p:fo},Ee);e.___divdi3=fe.___divdi3;e.___muldi3=fe.___muldi3;e.___remdi3=fe.___remdi3;e.___uremdi3=fe.___uremdi3;e._areNeighborCells=fe._areNeighborCells;e._bitshift64Ashr=fe._bitshift64Ashr;e._bitshift64Lshr=fe._bitshift64Lshr;e._bitshift64Shl=fe._bitshift64Shl;e._calloc=fe._calloc;e._cellAreaKm2=fe._cellAreaKm2;e._cellAreaM2=fe._cellAreaM2;e._cellAreaRads2=fe._cellAreaRads2;e._cellToBoundary=fe._cellToBoundary;e._cellToCenterChild=fe._cellToCenterChild;e._cellToChildPos=fe._cellToChildPos;e._cellToChildren=fe._cellToChildren;e._cellToChildrenSize=fe._cellToChildrenSize;e._cellToLatLng=fe._cellToLatLng;e._cellToLocalIj=fe._cellToLocalIj;e._cellToParent=fe._cellToParent;e._cellToVertex=fe._cellToVertex;e._cellToVertexes=fe._cellToVertexes;e._cellsToDirectedEdge=fe._cellsToDirectedEdge;e._cellsToLinkedMultiPolygon=fe._cellsToLinkedMultiPolygon;e._childPosToCell=fe._childPosToCell;e._compactCells=fe._compactCells;e._constructCell=fe._constructCell;e._destroyLinkedMultiPolygon=fe._destroyLinkedMultiPolygon;e._directedEdgeToBoundary=fe._directedEdgeToBoundary;e._directedEdgeToCells=fe._directedEdgeToCells;e._edgeLengthKm=fe._edgeLengthKm;e._edgeLengthM=fe._edgeLengthM;e._edgeLengthRads=fe._edgeLengthRads;var gb=e._emscripten_replace_memory=fe._emscripten_replace_memory;e._free=fe._free;e._getBaseCellNumber=fe._getBaseCellNumber;e._getDirectedEdgeDestination=fe._getDirectedEdgeDestination;e._getDirectedEdgeOrigin=fe._getDirectedEdgeOrigin;e._getHexagonAreaAvgKm2=fe._getHexagonAreaAvgKm2;e._getHexagonAreaAvgM2=fe._getHexagonAreaAvgM2;e._getHexagonEdgeLengthAvgKm=fe._getHexagonEdgeLengthAvgKm;e._getHexagonEdgeLengthAvgM=fe._getHexagonEdgeLengthAvgM;e._getIcosahedronFaces=fe._getIcosahedronFaces;e._getIndexDigit=fe._getIndexDigit;e._getNumCells=fe._getNumCells;e._getPentagons=fe._getPentagons;e._getRes0Cells=fe._getRes0Cells;e._getResolution=fe._getResolution;e._greatCircleDistanceKm=fe._greatCircleDistanceKm;e._greatCircleDistanceM=fe._greatCircleDistanceM;e._greatCircleDistanceRads=fe._greatCircleDistanceRads;e._gridDisk=fe._gridDisk;e._gridDiskDistances=fe._gridDiskDistances;e._gridDistance=fe._gridDistance;e._gridPathCells=fe._gridPathCells;e._gridPathCellsSize=fe._gridPathCellsSize;e._gridRing=fe._gridRing;e._gridRingUnsafe=fe._gridRingUnsafe;e._i64Add=fe._i64Add;e._i64Subtract=fe._i64Subtract;e._isPentagon=fe._isPentagon;e._isResClassIII=fe._isResClassIII;e._isValidCell=fe._isValidCell;e._isValidDirectedEdge=fe._isValidDirectedEdge;e._isValidIndex=fe._isValidIndex;e._isValidVertex=fe._isValidVertex;e._latLngToCell=fe._latLngToCell;e._llvm_ctlz_i64=fe._llvm_ctlz_i64;e._llvm_maxnum_f64=fe._llvm_maxnum_f64;e._llvm_minnum_f64=fe._llvm_minnum_f64;e._llvm_round_f64=fe._llvm_round_f64;e._localIjToCell=fe._localIjToCell;e._malloc=fe._malloc;e._maxFaceCount=fe._maxFaceCount;e._maxGridDiskSize=fe._maxGridDiskSize;e._maxPolygonToCellsSize=fe._maxPolygonToCellsSize;e._maxPolygonToCellsSizeExperimental=fe._maxPolygonToCellsSizeExperimental;e._memcpy=fe._memcpy;e._memmove=fe._memmove;e._memset=fe._memset;e._originToDirectedEdges=fe._originToDirectedEdges;e._pentagonCount=fe._pentagonCount;e._polygonToCells=fe._polygonToCells;e._polygonToCellsExperimental=fe._polygonToCellsExperimental;e._readInt64AsDoubleFromPointer=fe._readInt64AsDoubleFromPointer;e._res0CellCount=fe._res0CellCount;e._reverseDirectedEdge=fe._reverseDirectedEdge;e._round=fe._round;e._sbrk=fe._sbrk;e._sizeOfCellBoundary=fe._sizeOfCellBoundary;e._sizeOfCoordIJ=fe._sizeOfCoordIJ;e._sizeOfGeoLoop=fe._sizeOfGeoLoop;e._sizeOfGeoPolygon=fe._sizeOfGeoPolygon;e._sizeOfH3Index=fe._sizeOfH3Index;e._sizeOfLatLng=fe._sizeOfLatLng;e._sizeOfLinkedGeoPolygon=fe._sizeOfLinkedGeoPolygon;e._uncompactCells=fe._uncompactCells;e._uncompactCellsSize=fe._uncompactCellsSize;e._vertexToLatLng=fe._vertexToLatLng;e.establishStackSpace=fe.establishStackSpace;var Gu=e.stackAlloc=fe.stackAlloc,bb=e.stackRestore=fe.stackRestore,Tb=e.stackSave=fe.stackSave;e.dynCall_iii=fe.dynCall_iii;if(e.asm=fe,e.cwrap=$,e.setValue=k,e.getValue=O,Jr){ku(Jr)||(Jr=d(Jr));nb(`memory initializer`);var Va=function(Z){Z.byteLength&&(Z=new Uint8Array(Z)),Ne.set(Z,M),e.memoryInitializerRequest&&delete e.memoryInitializerRequest.response,ib(`memory initializer`)},ju=function(){m(Jr,Va,function(){throw`could not load memory initializer `+Jr})},Vu=ja(Jr);if(Vu)Va(Vu.buffer);else if(e.memoryInitializerRequest){var zu=function(){var Z=e.memoryInitializerRequest,ae=Z.response;if(Z.status!==200&&Z.status!==0){var Te=ja(e.memoryInitializerRequestURL);if(Te)ae=Te.buffer;else{console.warn(`a problem seems to have happened with Module.memoryInitializerRequest, status: `+Z.status+`, retrying `+Jr),ju();return}}Va(ae)};e.memoryInitializerRequest.response?setTimeout(zu,0):e.memoryInitializerRequest.addEventListener(`load`,zu)}else ju()}var ps;mo=function Z(){ps||za(),ps||(mo=Z)};function za(Z){if(Z=Z||o,Fn>0||(fn(),Fn>0))return;function ae(){ps||(ps=!0,!Q&&(ai(),ho(),e.onRuntimeInitialized&&e.onRuntimeInitialized(),po()))}e.setStatus?(e.setStatus(`Running...`),setTimeout(function(){setTimeout(function(){e.setStatus(``)},1),ae()},1)):ae()}e.run=za;function kn(Z){throw e.onAbort&&e.onAbort(Z),Z+=``,b(Z),y(Z),Q=!0,`abort(`+Z+`). Build with -s ASSERTIONS=1 for more info.`}if(e.abort=kn,e.preInit)for(typeof e.preInit==`function`&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();return za(),r})(typeof Je==`object`?Je:{});var Ce=`number`;var Se=Ce;var vi=Ce;var Me=Ce;var Le=Ce;var Nt=Ce;var xe=Ce;var Ix=[[`sizeOfH3Index`,Ce],[`sizeOfLatLng`,Ce],[`sizeOfCellBoundary`,Ce],[`sizeOfGeoLoop`,Ce],[`sizeOfGeoPolygon`,Ce],[`sizeOfLinkedGeoPolygon`,Ce],[`sizeOfCoordIJ`,Ce],[`readInt64AsDoubleFromPointer`,Ce],[`isValidCell`,vi,[Me,Le]],[`isValidIndex`,vi,[Me,Le]],[`latLngToCell`,Se,[Ce,Ce,Nt,xe]],[`cellToLatLng`,Se,[Me,Le,xe]],[`cellToBoundary`,Se,[Me,Le,xe]],[`maxGridDiskSize`,Se,[Ce,xe]],[`gridDisk`,Se,[Me,Le,Ce,xe]],[`gridDiskDistances`,Se,[Me,Le,Ce,xe,xe]],[`gridRing`,Se,[Me,Le,Ce,xe]],[`gridRingUnsafe`,Se,[Me,Le,Ce,xe]],[`maxPolygonToCellsSize`,Se,[xe,Nt,Ce,xe]],[`polygonToCells`,Se,[xe,Nt,Ce,xe]],[`maxPolygonToCellsSizeExperimental`,Se,[xe,Nt,Ce,xe]],[`polygonToCellsExperimental`,Se,[xe,Nt,Ce,Ce,Ce,xe]],[`cellsToLinkedMultiPolygon`,Se,[xe,Ce,xe]],[`destroyLinkedMultiPolygon`,null,[xe]],[`compactCells`,Se,[xe,xe,Ce,Ce]],[`uncompactCells`,Se,[xe,Ce,Ce,xe,Ce,Nt]],[`uncompactCellsSize`,Se,[xe,Ce,Ce,Nt,xe]],[`isPentagon`,vi,[Me,Le]],[`isResClassIII`,vi,[Me,Le]],[`getBaseCellNumber`,Ce,[Me,Le]],[`getResolution`,Ce,[Me,Le]],[`getIndexDigit`,Ce,[Me,Le,Ce]],[`constructCell`,Se,[Ce,Ce,xe,xe]],[`maxFaceCount`,Se,[Me,Le,xe]],[`getIcosahedronFaces`,Se,[Me,Le,xe]],[`cellToParent`,Se,[Me,Le,Nt,xe]],[`cellToChildren`,Se,[Me,Le,Nt,xe]],[`cellToCenterChild`,Se,[Me,Le,Nt,xe]],[`cellToChildrenSize`,Se,[Me,Le,Nt,xe]],[`cellToChildPos`,Se,[Me,Le,Nt,xe]],[`childPosToCell`,Se,[Ce,Ce,Me,Le,Nt,xe]],[`areNeighborCells`,Se,[Me,Le,Me,Le,xe]],[`cellsToDirectedEdge`,Se,[Me,Le,Me,Le,xe]],[`getDirectedEdgeOrigin`,Se,[Me,Le,xe]],[`getDirectedEdgeDestination`,Se,[Me,Le,xe]],[`isValidDirectedEdge`,vi,[Me,Le]],[`directedEdgeToCells`,Se,[Me,Le,xe]],[`originToDirectedEdges`,Se,[Me,Le,xe]],[`directedEdgeToBoundary`,Se,[Me,Le,xe]],[`reverseDirectedEdge`,Se,[Me,Le,xe]],[`gridDistance`,Se,[Me,Le,Me,Le,xe]],[`gridPathCells`,Se,[Me,Le,Me,Le,xe]],[`gridPathCellsSize`,Se,[Me,Le,Me,Le,xe]],[`cellToLocalIj`,Se,[Me,Le,Me,Le,Ce,xe]],[`localIjToCell`,Se,[Me,Le,xe,Ce,xe]],[`getHexagonAreaAvgM2`,Se,[Nt,xe]],[`getHexagonAreaAvgKm2`,Se,[Nt,xe]],[`getHexagonEdgeLengthAvgM`,Se,[Nt,xe]],[`getHexagonEdgeLengthAvgKm`,Se,[Nt,xe]],[`greatCircleDistanceM`,Ce,[xe,xe]],[`greatCircleDistanceKm`,Ce,[xe,xe]],[`greatCircleDistanceRads`,Ce,[xe,xe]],[`cellAreaM2`,Se,[Me,Le,xe]],[`cellAreaKm2`,Se,[Me,Le,xe]],[`cellAreaRads2`,Se,[Me,Le,xe]],[`edgeLengthM`,Se,[Me,Le,xe]],[`edgeLengthKm`,Se,[Me,Le,xe]],[`edgeLengthRads`,Se,[Me,Le,xe]],[`getNumCells`,Se,[Nt,xe]],[`getRes0Cells`,Se,[xe]],[`res0CellCount`,Ce],[`getPentagons`,Se,[Ce,xe]],[`pentagonCount`,Ce],[`cellToVertex`,Se,[Me,Le,Ce,xe]],[`cellToVertexes`,Se,[Me,Le,xe]],[`vertexToLatLng`,Se,[Me,Le,xe]],[`isValidVertex`,vi,[Me,Le]]];var Mx=0;var Lx=1;var Rx=2;var Px=3;var Od=4;var Nx=5;var Fx=6;var kx=7;var Ox=8;var Dx=9;var Bx=10;var Ux=11;var Gx=12;var jx=13;var Vx=14;var zx=15;var Hx=16;var qx=17;var Wx=18;var Qx=19;var mt={};mt[Mx]=`Success`;mt[Lx]=`The operation failed but a more specific error is not available`;mt[Rx]=`Argument was outside of acceptable range`;mt[Px]=`Latitude or longitude arguments were outside of acceptable range`;mt[Od]=`Resolution argument was outside of acceptable range`;mt[Nx]=`Cell argument was not valid`;mt[Fx]=`Directed edge argument was not valid`;mt[kx]=`Undirected edge argument was not valid`;mt[Ox]=`Vertex argument was not valid`;mt[Dx]=`Pentagon distortion was encountered`;mt[Bx]=`Duplicate input`;mt[Ux]=`Cell arguments were not neighbors`;mt[Gx]=`Cell arguments had incompatible resolutions`;mt[jx]=`Memory allocation failed`;mt[Vx]=`Bounds of provided memory were insufficient`;mt[zx]=`Mode or flags argument was not valid`;mt[Hx]=`Index argument was not valid`;mt[qx]=`Base cell number was outside of acceptable range`;mt[Wx]=`Child indexing digits invalid`;mt[Qx]=`Child indexing digits refer to a deleted subsequence`;var Dd=1e3;var Kx=1001;var Bd=1002;var tA={};tA[Dd]=`Unknown unit`;tA[Kx]=`Array length out of bounds`;tA[Bd]=`Got unexpected null value for H3 index`;var Xx=`Unknown error`;function Ud(r,e,t){var i=t&&`value`in t,o=new Error((r[e]||Xx)+` (code: `+e+(i?`, value: `+t.value:``)+`)`);return o.code=e,o}function Gd(r,e){return Ud(mt,r,arguments.length===2?{value:e}:{})}function jd(r,e){return Ud(tA,r,arguments.length===2?{value:e}:{})}function Hn(r){if(r!==0)throw Gd(r)}var Et={};Ix.forEach(function(e){Et[e[0]]=Je.cwrap.apply(Je,e)});var Si=16;var Vd=4;var Nd=4;var wn=8;var Yx=8;var $s=Et.sizeOfH3Index();var zd=Et.sizeOfLatLng();var Jx=Et.sizeOfCellBoundary();Et.sizeOfGeoPolygon();Et.sizeOfGeoLoop();var Zx=Et.sizeOfLinkedGeoPolygon();Et.sizeOfCoordIJ();var Fd={m:`m`,m2:`m2`,km:`km`,km2:`km2`,rads:`rads`,rads2:`rads2`};function $x(r){if(typeof r!=`number`||r<0||r>15||Math.floor(r)!==r)throw Gd(Od,r);return r}function e_(r){if(!r)throw jd(Bd);return r}Math.pow(2,32)-1;Math.pow(2,31)-1;var t_=/[^0-9a-fA-F]/;function qn(r){if(Array.isArray(r)&&r.length===2&&Number.isInteger(r[0])&&Number.isInteger(r[1]))return r;if(typeof r!=`string`||t_.test(r))return[0,0];var e=parseInt(r.substring(0,r.length-8),Si);return[parseInt(r.substring(r.length-8),Si),e]}function kd(r){if(r>=0)return r.toString(Si);r=r&2147483647;var e=Hd(8,r.toString(Si));return e=(parseInt(e[0],Si)+8).toString(Si)+e.substring(1),e}function r_(r,e){return kd(e)+Hd(8,kd(r))}function Hd(r,e){for(var t=r-e.length,i=``,o=0;o<t;o++)i+=`0`;return i=i+e,i}function n_(r,e){e===void 0&&(e=0);var t=Je.getValue(r+$s*e,`i32`),i=Je.getValue(r+$s*e+Vd,`i32`);return i?r_(t,i):null}function i_(r,e){return e===void 0&&(e=0),Je.getValue(r+wn*e,`double`)}function o_(r){return Et.readInt64AsDoubleFromPointer(r)}function s_(r,e,t){Je.HEAPU32.set(qn(r),e/Vd+2*t)}function A_(r,e){for(var t=e.length,i=0;i<t;i++)s_(e[i],r,i)}function eA(r){return u_(Je.getValue(r,`double`))}function Q0(r){return[eA(r),eA(r+wn)]}function qd(r){return[eA(r+wn),eA(r)]}function a_(r,e,t){for(var i=Je.getValue(r,`i32`),o=r+wn,a=[],d=e?qd:Q0,m=0;m<i*2;m+=2)a.push(d(o+wn*m));return t&&a.push(a[0]),a}function c_(r,e){for(var t=[],i=e?qd:Q0,o,a,d,m;r;){for(t.push(o=[]),a=Je.getValue(r,`i8*`);a;){for(o.push(d=[]),m=Je.getValue(a,`i8*`);m;)d.push(i(m)),m=Je.getValue(m+wn*2,`i8*`);e&&d.push(d[0]),a=Je.getValue(a+Nd*2,`i8*`)}r=Je.getValue(r+Nd*2,`i8*`)}return t}function Wd(r){var e=qn(r),t=e[0],i=e[1];return!!Et.isPentagon(t,i)}function Qd(r){var e=qn(r),t=e[0],i=e[1];return Et.isValidCell(t,i)?Et.getResolution(t,i):-1}function Kd(r,e,t){var i=Je._malloc(zd);Je.HEAPF64.set([r,e].map(l_),i/wn);var o=Je._malloc($s);try{return Hn(Et.latLngToCell(i,t,o)),e_(n_(o))}finally{Je._free(o),Je._free(i)}}function ko(r){var e=Je._malloc(zd),t=qn(r),i=t[0],o=t[1];try{return Hn(Et.cellToLatLng(i,o,e)),Q0(e)}finally{Je._free(e)}}function Xd(r,e){var t=Je._malloc(Jx),i=qn(r),o=i[0],a=i[1];try{return Hn(Et.cellToBoundary(o,a,t)),a_(t,e,e)}finally{Je._free(t)}}function Yd(r,e){if(!r||!r.length)return[];var t=r.length,i=Je._calloc(t,$s);A_(i,r);var o=Je._calloc(Zx);try{return Hn(Et.cellsToLinkedMultiPolygon(i,t,o)),c_(o,e)}finally{Et.destroyLinkedMultiPolygon(o),Je._free(o),Je._free(i)}}function Jd(r,e){var t=qn(r),i=t[0],o=t[1],a=qn(e),d=a[0],m=a[1],b=Je._malloc(Yx);try{return Hn(Et.gridDistance(i,o,d,m,b)),o_(b)}finally{Je._free(b)}}function Zd(r,e){$x(r);var t=Je._malloc(wn);try{switch(e){case Fd.m:Hn(Et.getHexagonEdgeLengthAvgM(r,t));break;case Fd.km:Hn(Et.getHexagonEdgeLengthAvgKm(r,t));break;default:throw jd(Dd,e)}return i_(t)}finally{Je._free(t)}}function l_(r){return r*Math.PI/180}function u_(r){return r*180/Math.PI}function rA(r,e){e=e===void 0?r[0][0]:e;for(let t of r){let i=t[0]-e;i>180?t[0]-=360:i<-180&&(t[0]+=360)}}function f_(r,e,t){let[i,o]=ko(r),a=e.length;rA(e,o);let d=e[0]===e[a-1]?a-1:a;for(let m=0;m<d;m++)e[m][0]=Ni$1(o,e[m][0],t),e[m][1]=Ni$1(i,e[m][1],t)}function $d(r,e,t){let[o,a]=ko(r(e,t));return[a,o]}function K0(r,e=1){let t=Xd(r,!0);return e!==1?f_(r,t,e):rA(t),t}function nA(r){let e=new Float64Array(r.length*2),t=0;for(let i of r)e[t++]=i[0],e[t++]=i[1];return e}var h_={getPentagon:{type:`accessor`,value:r=>r.pentagon}};var p_=(()=>{class r extends Pr{indexToBounds(){let{data:t,getPentagon:i}=this.props;return{data:t,_normalize:!1,_windingOrder:`CCW`,positionFormat:`XY`,getPolygon:(o,a)=>{let d=i(o,a);return nA(Md(typeof d==`string`?Ld(d):d,{closedRing:!0,segments:`auto`}))}}}}return r.layerName=`A5Layer`,r.defaultProps=h_,r})();function m_(r){return typeof r==`string`?r.charAt(0).toLowerCase()+r.slice(1):r}function iA(r){if(Array.isArray(r))return r.map(e=>iA(e));if(r&&typeof r==`object`){let e={};for(let[t,i]of Object.entries(r))e[m_(t)]=iA(i);return e}return r}var ep=`:A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD`;var g_=ep+`\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040`;var b_=`[`+ep+`][`+g_+`]*`;var T_=new RegExp(`^`+b_+`$`);function tp(r,e){let t=[],i=e.exec(r);for(;i;){let o=[];o.startIndex=e.lastIndex-i[0].length;let a=i.length;for(let d=0;d<a;d++)o.push(i[d]);t.push(o),i=e.exec(r)}return t}var X0=function(r){let e=T_.exec(r);return!(e===null||typeof e>`u`)};function rp(r){return typeof r<`u`}var Oo=[`hasOwnProperty`,`toString`,`valueOf`,`__defineGetter__`,`__defineSetter__`,`__lookupGetter__`,`__lookupSetter__`];var oA=[`__proto__`,`constructor`,`prototype`];var y_={allowBooleanAttributes:!1,unpairedTags:[]};function sp(r,e){e=Object.assign({},y_,e);let t=[],i=!1,o=!1;r[0]===``&&(r=r.substr(1));for(let a=0;a<r.length;a++)if(r[a]===`<`&&r[a+1]===`?`){if(a+=2,a=np(r,a),a.err)return a}else if(r[a]===`<`){let d=a;if(a++,r[a]===`!`){a=ip(r,a);continue}else{let m=!1;r[a]===`/`&&(m=!0,a++);let b=``;for(;a<r.length&&r[a]!==`>`&&r[a]!==` `&&r[a]!==` `&&r[a]!==`
|
|
3
|
+
`&&r[a]!==`\r`;a++)b+=r[a];if(b=b.trim(),b[b.length-1]===`/`&&(b=b.substring(0,b.length-1),a--),!I_(b)){let w;return b.trim().length===0?w=`Invalid space after '<'.`:w=`Tag '`+b+`' is an invalid name.`,gt(`InvalidTag`,w,Qt(r,a))}let y=w_(r,a);if(y===!1)return gt(`InvalidAttr`,`Attributes for '`+b+`' have open quote.`,Qt(r,a));let _=y.value;if(a=y.index,_[_.length-1]===`/`){let w=a-_.length;_=_.substring(0,_.length-1);let S=op(_,e);if(S===!0)i=!0;else return gt(S.err.code,S.err.msg,Qt(r,w+S.err.line))}else if(m)if(y.tagClosed){if(_.trim().length>0)return gt(`InvalidTag`,`Closing tag '`+b+`' can't have attributes or invalid starting.`,Qt(r,d));if(t.length===0)return gt(`InvalidTag`,`Closing tag '`+b+`' has not been opened.`,Qt(r,d));{let w=t.pop();if(b!==w.tagName){let S=Qt(r,w.tagStartPos);return gt(`InvalidTag`,`Expected closing tag '`+w.tagName+`' (opened in line `+S.line+`, col `+S.col+`) instead of closing tag '`+b+`'.`,Qt(r,d))}t.length==0&&(o=!0)}}else return gt(`InvalidTag`,`Closing tag '`+b+`' doesn't have proper closing.`,Qt(r,a));else{let w=op(_,e);if(w!==!0)return gt(w.err.code,w.err.msg,Qt(r,a-_.length+w.err.line));if(o===!0)return gt(`InvalidXml`,`Multiple possible root nodes found.`,Qt(r,a));e.unpairedTags.indexOf(b)!==-1||t.push({tagName:b,tagStartPos:d}),i=!0}for(a++;a<r.length;a++)if(r[a]===`<`)if(r[a+1]===`!`){a++,a=ip(r,a);continue}else if(r[a+1]===`?`){if(a=np(r,++a),a.err)return a}else break;else if(r[a]===`&`){let w=S_(r,a);if(w==-1)return gt(`InvalidChar`,`char '&' is not expected.`,Qt(r,a));a=w}else if(o===!0&&!Ci(r[a]))return gt(`InvalidXml`,`Extra text at the end`,Qt(r,a));r[a]===`<`&&a--}}else{if(Ci(r[a]))continue;return gt(`InvalidChar`,`char '`+r[a]+`' is not expected.`,Qt(r,a))}if(i){if(t.length==1)return gt(`InvalidTag`,`Unclosed tag '`+t[0].tagName+`'.`,Qt(r,t[0].tagStartPos));if(t.length>0)return gt(`InvalidXml`,`Invalid '`+JSON.stringify(t.map(a=>a.tagName),null,4).replace(/\r?\n/g,``)+`' found.`,{line:1,col:1})}else return gt(`InvalidXml`,`Start tag expected.`,1);return!0}function Ci(r){return r===` `||r===` `||r===`
|
|
4
|
+
`||r===`\r`}function np(r,e){let t=e;for(;e<r.length;e++)if(r[e]==`?`||r[e]==` `){let i=r.substr(t,e-t);if(e>5&&i===`xml`)return gt(`InvalidXml`,`XML declaration allowed only at the start of the document.`,Qt(r,e));if(r[e]==`?`&&r[e+1]==`>`){e++;break}else continue}return e}function ip(r,e){if(r.length>e+5&&r[e+1]===`-`&&r[e+2]===`-`){for(e+=3;e<r.length;e++)if(r[e]===`-`&&r[e+1]===`-`&&r[e+2]===`>`){e+=2;break}}else if(r.length>e+8&&r[e+1]===`D`&&r[e+2]===`O`&&r[e+3]===`C`&&r[e+4]===`T`&&r[e+5]===`Y`&&r[e+6]===`P`&&r[e+7]===`E`){let t=1;for(e+=8;e<r.length;e++)if(r[e]===`<`)t++;else if(r[e]===`>`&&(t--,t===0))break}else if(r.length>e+9&&r[e+1]===`[`&&r[e+2]===`C`&&r[e+3]===`D`&&r[e+4]===`A`&&r[e+5]===`T`&&r[e+6]===`A`&&r[e+7]===`[`){for(e+=8;e<r.length;e++)if(r[e]===`]`&&r[e+1]===`]`&&r[e+2]===`>`){e+=2;break}}return e}var x_=`"`;var __=`'`;function w_(r,e){let t=``,i=``,o=!1;for(;e<r.length;e++){if(r[e]===x_||r[e]===__)i===``?i=r[e]:i!==r[e]||(i=``);else if(r[e]===`>`&&i===``){o=!0;break}t+=r[e]}return i!==``?!1:{value:t,index:e,tagClosed:o}}function E_(r){let e=[],t=r.length,i=0;for(;i<t;){let o=i;for(;i<t&&Ci(r[i]);)i++;if(i>=t)break;if(r[i]===`=`){i=o+1;continue}let a=r.slice(o,i),d=i;for(;i<t&&!Ci(r[i])&&r[i]!==`=`;)i++;let m=r.slice(d,i),b,y=i;for(;y<t&&Ci(r[y]);)y++;y<t&&r[y]===`=`&&(b=r.slice(i,y+1),i=y+1);let _,w,S=i;for(;S<t&&Ci(r[S]);)S++;if(S<t&&(r[S]===`"`||r[S]===`'`)){let k=S+1,O=r.indexOf(r[S],k);O!==-1&&(_=r[S],w=r.slice(k,O),i=O+1)}let M={startIndex:o};M[1]=a,M[2]=m,M[3]=b,M[4]=_!==void 0?!0:void 0,M[5]=_,M[6]=w,e.push(M)}return e}function op(r,e){let t=E_(r),i={};for(let o=0;o<t.length;o++){if(t[o][1].length===0)return gt(`InvalidAttr`,`Attribute '`+t[o][2]+`' has no space in starting.`,Do(t[o]));if(t[o][3]!==void 0&&t[o][4]===void 0)return gt(`InvalidAttr`,`Attribute '`+t[o][2]+`' is without value.`,Do(t[o]));if(t[o][3]===void 0&&!e.allowBooleanAttributes)return gt(`InvalidAttr`,`boolean attribute '`+t[o][2]+`' is not allowed.`,Do(t[o]));let a=t[o][2];if(!C_(a))return gt(`InvalidAttr`,`Attribute '`+a+`' is an invalid name.`,Do(t[o]));if(!Object.prototype.hasOwnProperty.call(i,a))i[a]=1;else return gt(`InvalidAttr`,`Attribute '`+a+`' is repeated.`,Do(t[o]))}return!0}function v_(r,e){let t=/\d/;for(r[e]===`x`&&(e++,t=/[\da-fA-F]/);e<r.length;e++){if(r[e]===`;`)return e;if(!r[e].match(t))break}return-1}function S_(r,e){if(e++,r[e]===`;`)return-1;if(r[e]===`#`)return e++,v_(r,e);let t=0;for(;e<r.length;e++,t++)if(!(r[e].match(/\w/)&&t<20)){if(r[e]===`;`)break;return-1}return e}function gt(r,e,t){return{err:{code:r,msg:e,line:t.line||t,col:t.col}}}function C_(r){return X0(r)}function I_(r){return X0(r)}function Qt(r,e){let t=r.substring(0,e).split(/\r?\n/);return{line:t.length,col:t[t.length-1].length+1}}function Do(r){return r.startIndex+r[1].length}var Y0={cent:`¢`,pound:`£`,curren:`¤`,yen:`¥`,euro:`€`,dollar:`$`,fnof:`ƒ`,inr:`₹`,af:`؋`,birr:`ብር`,peso:`₱`,rub:`₽`,won:`₩`,yuan:`¥`,cedil:`¸`};var Bo={amp:`&`,apos:`'`,gt:`>`,lt:`<`,quot:`"`};var J0={nbsp:`\xA0`,copy:`©`,reg:`®`,trade:`™`,mdash:`—`,ndash:`–`,hellip:`…`,laquo:`«`,raquo:`»`,lsquo:`‘`,rsquo:`’`,ldquo:`“`,rdquo:`”`,bull:`•`,para:`¶`,sect:`§`,deg:`°`,frac12:`½`,frac14:`¼`,frac34:`¾`};var Ii=Object.freeze({ALLOW:`allow`,BLOCK:`block`,THROW:`throw`});var M_=new Set(`!?\\\\/[]$%{}^&*()<>|+`);function Ap(r){if(r[0]===`#`)throw new Error(`[EntityReplacer] Invalid character '#' in entity name: "${r}"`);for(let e of r)if(M_.has(e))throw new Error(`[EntityReplacer] Invalid character '${e}' in entity name: "${r}"`);return r}function Uo(...r){let e=Object.create(null);for(let t of r)if(t)for(let i of Object.keys(t)){let o=t[i];if(typeof o==`string`)e[i]=o;else if(o&&typeof o==`object`&&o.val!==void 0){let a=o.val;typeof a==`string`&&(e[i]=a)}}return e}var Wn=`external`;var sA=`base`;var Z0=`all`;function L_(r){return!r||r===Wn?new Set([Wn]):r===Z0?new Set([Z0]):r===sA?new Set([sA]):Array.isArray(r)?new Set(r):new Set([Wn])}var tr=Object.freeze({allow:0,leave:1,remove:2,throw:3});var R_=new Set([9,10,13]);function P_(r){if(!r)return{xmlVersion:1,onLevel:tr.allow,nullLevel:tr.remove};let e=r.xmlVersion===1.1?1.1:1,t=tr[r.onNCR]??tr.allow,i=tr[r.nullNCR]??tr.remove;return{xmlVersion:e,onLevel:t,nullLevel:Math.max(i,tr.remove)}}var Go=class{constructor(e={}){this._limit=e.limit||{},this._maxTotalExpansions=this._limit.maxTotalExpansions||0,this._maxExpandedLength=this._limit.maxExpandedLength||0,this._postCheck=typeof e.postCheck==`function`?e.postCheck:i=>i,this._limitTiers=L_(this._limit.applyLimitsTo??Wn),this._numericAllowed=e.numericAllowed??!0,this._baseMap=Uo(Bo,e.namedEntities||null),this._externalMap=Object.create(null),this._inputMap=Object.create(null),this._totalExpansions=0,this._expandedLength=0,this._removeSet=new Set(e.remove&&Array.isArray(e.remove)?e.remove:[]),this._leaveSet=new Set(e.leave&&Array.isArray(e.leave)?e.leave:[]);let t=P_(e.ncr);this._ncrXmlVersion=t.xmlVersion,this._ncrOnLevel=t.onLevel,this._ncrNullLevel=t.nullLevel,this._onExternalEntity=typeof e.onExternalEntity==`function`?e.onExternalEntity:null,this._onInputEntity=typeof e.onInputEntity==`function`?e.onInputEntity:null}_applyRegistrationHook(e,t,i,o){if(!e)return!0;let a=e(t,i);if(a===Ii.BLOCK)return!1;if(a===Ii.THROW)throw new Error(`[EntityDecoder] Registration of ${o} entity "&${t};" was rejected by hook`);return!0}setExternalEntities(e){if(e)for(let o of Object.keys(e))Ap(o);if(!this._onExternalEntity){this._externalMap=Uo(e);return}let t=Uo(e),i=Object.create(null);for(let[o,a]of Object.entries(t))this._applyRegistrationHook(this._onExternalEntity,o,a,`external`)&&(i[o]=a);this._externalMap=i}addExternalEntity(e,t){Ap(e),typeof t==`string`&&t.indexOf(`&`)===-1&&this._applyRegistrationHook(this._onExternalEntity,e,t,`external`)&&(this._externalMap[e]=t)}addInputEntities(e){if(this._totalExpansions=0,this._expandedLength=0,!this._onInputEntity){this._inputMap=Uo(e);return}let t=Uo(e),i=Object.create(null);for(let[o,a]of Object.entries(t))this._applyRegistrationHook(this._onInputEntity,o,a,`input`)&&(i[o]=a);this._inputMap=i}reset(){return this._inputMap=Object.create(null),this._totalExpansions=0,this._expandedLength=0,this}setXmlVersion(e){this._ncrXmlVersion=e===1.1?1.1:1}decode(e){if(typeof e!=`string`||e.length===0||e.indexOf(`&`)===-1)return e;let t=e,i=[],o=e.length,a=0,d=0,m=this._maxTotalExpansions>0,b=this._maxExpandedLength>0,y=m||b;for(;d<o;){if(e.charCodeAt(d)!==38){d++;continue}let w=d+1;for(;w<o&&e.charCodeAt(w)!==59&&w-d<=32;)w++;if(w>=o||e.charCodeAt(w)!==59){d++;continue}let S=e.slice(d+1,w);if(S.length===0){d++;continue}let M,k;if(this._removeSet.has(S))M=``,k===void 0&&(k=Wn);else if(this._leaveSet.has(S)){d++;continue}else if(S.charCodeAt(0)===35){let O=this._resolveNCR(S);if(O===void 0){d++;continue}M=O,k=sA}else{let O=this._resolveName(S);M=O?.value,k=O?.tier}if(M===void 0){d++;continue}if(d>a&&i.push(e.slice(a,d)),i.push(M),a=w+1,d=a,y&&this._tierCounts(k)){if(m&&(this._totalExpansions++,this._totalExpansions>this._maxTotalExpansions))throw new Error(`[EntityReplacer] Entity expansion count limit exceeded: ${this._totalExpansions} > ${this._maxTotalExpansions}`);if(b){let O=M.length-(S.length+2);if(O>0&&(this._expandedLength+=O,this._expandedLength>this._maxExpandedLength))throw new Error(`[EntityReplacer] Expanded content length limit exceeded: ${this._expandedLength} > ${this._maxExpandedLength}`)}}}a<o&&i.push(e.slice(a));let _=i.length===0?e:i.join(``);return this._postCheck(_,t)}_tierCounts(e){return this._limitTiers.has(Z0)?!0:this._limitTiers.has(e)}_resolveName(e){if(e in this._inputMap)return{value:this._inputMap[e],tier:Wn};if(e in this._externalMap)return{value:this._externalMap[e],tier:Wn};if(e in this._baseMap)return{value:this._baseMap[e],tier:sA}}_classifyNCR(e){return e===0?this._ncrNullLevel:e>=55296&&e<=57343||this._ncrXmlVersion===1&&e>=1&&e<=31&&!R_.has(e)?tr.remove:-1}_applyNCRAction(e,t,i){switch(e){case tr.allow:return String.fromCodePoint(i);case tr.remove:return``;case tr.leave:return;case tr.throw:throw new Error(`[EntityDecoder] Prohibited numeric character reference &${t}; (U+${i.toString(16).toUpperCase().padStart(4,`0`)})`);default:return String.fromCodePoint(i)}}_resolveNCR(e){let t=e.charCodeAt(1),i;if(t===120||t===88?i=parseInt(e.slice(2),16):i=parseInt(e.slice(1),10),Number.isNaN(i)||i<0||i>1114111)return;let o=this._classifyNCR(i);if(!this._numericAllowed&&o<tr.remove)return;let a=o===-1?this._ncrOnLevel:Math.max(this._ncrOnLevel,o);return this._applyNCRAction(a,e,i)}};var ap=r=>Oo.includes(r)?`__`+r:r;var N_={preserveOrder:!1,attributeNamePrefix:`@_`,attributesGroupName:!1,textNodeName:`#text`,ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0,unicode:!1},tagValueProcessor:function(r,e){return e},attributeValueProcessor:function(r,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,entityDecoder:null,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(r,e,t){return r},captureMetaData:!1,maxNestedTags:100,strictReservedNames:!0,jPath:!0,onDangerousProperty:ap};function F_(r,e){if(typeof r!=`string`)return;let t=r.toLowerCase();if(Oo.some(i=>t===i.toLowerCase()))throw new Error(`[SECURITY] Invalid ${e}: "${r}" is a reserved JavaScript keyword that could cause prototype pollution`);if(oA.some(i=>t===i.toLowerCase()))throw new Error(`[SECURITY] Invalid ${e}: "${r}" is a reserved JavaScript keyword that could cause prototype pollution`)}function cp(r,e){return typeof r==`boolean`?{enabled:r,maxEntitySize:1e4,maxExpansionDepth:1e4,maxTotalExpansions:Infinity,maxExpandedLength:1e5,maxEntityCount:1e3,allowedTags:null,tagFilter:null,appliesTo:`all`}:typeof r==`object`&&r!==null?{enabled:r.enabled!==!1,maxEntitySize:Math.max(1,r.maxEntitySize??1e4),maxExpansionDepth:Math.max(1,r.maxExpansionDepth??1e4),maxTotalExpansions:Math.max(1,r.maxTotalExpansions??Infinity),maxExpandedLength:Math.max(1,r.maxExpandedLength??1e5),maxEntityCount:Math.max(1,r.maxEntityCount??1e3),allowedTags:r.allowedTags??null,tagFilter:r.tagFilter??null,appliesTo:r.appliesTo??`all`}:cp(!0)}var lp=function(r){let e=Object.assign({},N_,r),t=[{value:e.attributeNamePrefix,name:`attributeNamePrefix`},{value:e.attributesGroupName,name:`attributesGroupName`},{value:e.textNodeName,name:`textNodeName`},{value:e.cdataPropName,name:`cdataPropName`},{value:e.commentPropName,name:`commentPropName`}];for(let{value:i,name:o}of t)i&&F_(i,o);return e.onDangerousProperty===null&&(e.onDangerousProperty=ap),e.processEntities=cp(e.processEntities,e.htmlEntities),e.unpairedTagsSet=new Set(e.unpairedTags),e.stopNodes&&Array.isArray(e.stopNodes)&&(e.stopNodes=e.stopNodes.map(i=>typeof i==`string`&&i.startsWith(`*.`)?`..`+i.substring(2):i)),e};var Qn;typeof Symbol!=`function`?Qn=`@@xmlMetadata`:Qn=Symbol(`XML Node Metadata`);var lr=class{constructor(e){this.tagname=e,this.child=[],this[`:@`]=Object.create(null)}add(e,t){e===`__proto__`&&(e=`#__proto__`),this.child.push({[e]:t})}addChild(e,t){e.tagname===`__proto__`&&(e.tagname=`#__proto__`),e[`:@`]&&Object.keys(e[`:@`]).length>0?this.child.push({[e.tagname]:e.child,":@":e[`:@`]}):this.child.push({[e.tagname]:e.child}),this.addStartIndex(t)}addStartIndex(e){e!==void 0&&(this.child[this.child.length-1][Qn]={startIndex:e})}addEndIndex(e){let t=this.child[this.child.length-1];t!==void 0&&t[Qn]!==void 0&&t[Qn].endIndex===void 0&&(t[Qn].endIndex=e)}static getMetaDataSymbol(){return Qn}};var up=`:A-Za-z_À-ÖØ-öø-˿Ͱ-ͽͿ-҆҈--⁰-Ⰰ-、-豈-﷏ﷰ-�`;var k_=up+`\\-\\.\\d·̀-ͯ‿-⁀`;var fp=`:A-Za-z_À-˿Ͱ-ͽͿ-҆҈--⁰-Ⰰ-、-豈-﷏ﷰ-�𐀀-`;var O_=fp+`\\-\\.\\d·̀-ͯ҇‿-⁀`;var $0=(r,e,t=``)=>{let a=`[${r.replace(`:`,``)}][${e.replace(`:`,``)}]*`;return{name:new RegExp(`^[${r}][${e}]*$`,t),ncName:new RegExp(`^${a}$`,t),qName:new RegExp(`^${a}(?::${a})?$`,t),nmToken:new RegExp(`^[${e}]+$`,t),nmTokens:new RegExp(`^[${e}]+(?:\\s+[${e}]+)*$`,t)}};var D_=$0(up,k_);var B_=$0(fp,O_,`u`);var hp=`:A-Za-z_`;var G_=$0(hp,hp+`\\-\\.\\d`);var j_=(r=`1.0`,e=!1)=>e?G_:r===`1.1`?B_:D_;var ec=(r,{xmlVersion:e=`1.0`,asciiOnly:t=!1}={})=>j_(e,t).qName.test(r);var AA=class{constructor(e,t){this.suppressValidationErr=!e,this.options=e,this.xmlVersion=t||1}setXmlVersion(e=1){this.xmlVersion=e}readDocType(e,t){let i=Object.create(null),o=0;if(e[t+3]===`O`&&e[t+4]===`C`&&e[t+5]===`T`&&e[t+6]===`Y`&&e[t+7]===`P`&&e[t+8]===`E`){t=t+9;let a=1,d=!1,m=!1,b=null,y=``;for(;t<e.length;t++){if(b!==null){e[t]===b&&(b=null),y+=e[t];continue}if(!d&&!m&&(e[t]===`"`||e[t]===`'`)){b=e[t],y+=e[t];continue}if(e[t]===`<`&&!m){if(d&&Kn(e,`!ENTITY`,t)){t+=7;let _,w;if([_,w,t]=this.readEntityExp(e,t+1,this.suppressValidationErr),w.indexOf(`&`)===-1){if(this.options.enabled!==!1&&this.options.maxEntityCount!=null&&o>=this.options.maxEntityCount)throw new Error(`Entity count (${o+1}) exceeds maximum allowed (${this.options.maxEntityCount})`);i[_]=w,o++}}else if(d&&Kn(e,`!ELEMENT`,t)){t+=8;let{index:_}=this.readElementExp(e,t+1);t=_}else if(d&&Kn(e,`!ATTLIST`,t))t+=8;else if(d&&Kn(e,`!NOTATION`,t)){t+=9;let{index:_}=this.readNotationExp(e,t+1,this.suppressValidationErr);t=_}else if(Kn(e,`!--`,t))m=!0;else throw new Error(`Invalid DOCTYPE`);a++,y=``}else if(e[t]===`>`){if(m?e[t-1]===`-`&&e[t-2]===`-`&&(m=!1,a--):a--,a===0)break}else e[t]===`[`?d=!0:y+=e[t]}if(b!==null||a!==0)throw new Error(`Unclosed DOCTYPE`)}else throw new Error(`Invalid Tag instead of DOCTYPE`);return{entities:i,i:t}}readEntityExp(e,t){t=rr(e,t);let i=t;for(;t<e.length&&!/\s/.test(e[t])&&e[t]!==`"`&&e[t]!==`'`;)t++;let o=e.substring(i,t);if(jo(o,{xmlVersion:this.xmlVersion}),t=rr(e,t),!this.suppressValidationErr){if(e.substring(t,t+6).toUpperCase()===`SYSTEM`)throw new Error(`External entities are not supported`);if(e[t]===`%`)throw new Error(`Parameter entities are not supported`)}let a=``;if([t,a]=this.readIdentifierVal(e,t,`entity`),this.options.enabled!==!1&&this.options.maxEntitySize!=null&&a.length>this.options.maxEntitySize)throw new Error(`Entity "${o}" size (${a.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`);return t--,[o,a,t]}readNotationExp(e,t){t=rr(e,t);let i=t;for(;t<e.length&&!/\s/.test(e[t]);)t++;let o=e.substring(i,t);!this.suppressValidationErr&&jo(o,{xmlVersion:this.xmlVersion}),t=rr(e,t);let a=e.substring(t,t+6).toUpperCase();if(!this.suppressValidationErr&&a!==`SYSTEM`&&a!==`PUBLIC`)throw new Error(`Expected SYSTEM or PUBLIC, found "${a}"`);t+=a.length,t=rr(e,t);let d=null,m=null;if(a===`PUBLIC`)[t,d]=this.readIdentifierVal(e,t,`publicIdentifier`),t=rr(e,t),(e[t]===`"`||e[t]===`'`)&&([t,m]=this.readIdentifierVal(e,t,`systemIdentifier`));else if(a===`SYSTEM`&&([t,m]=this.readIdentifierVal(e,t,`systemIdentifier`),!this.suppressValidationErr&&!m))throw new Error(`Missing mandatory system identifier for SYSTEM notation`);return{notationName:o,publicIdentifier:d,systemIdentifier:m,index:--t}}readIdentifierVal(e,t,i){let o=``,a=e[t];if(a!==`"`&&a!==`'`)throw new Error(`Expected quoted string, found "${a}"`);t++;let d=t;for(;t<e.length&&e[t]!==a;)t++;if(o=e.substring(d,t),e[t]!==a)throw new Error(`Unterminated ${i} value`);return t++,[t,o]}readElementExp(e,t){t=rr(e,t);let i=t;for(;t<e.length&&!/\s/.test(e[t]);)t++;let o=e.substring(i,t);if(!this.suppressValidationErr&&!ec(o,{xmlVersion:this.xmlVersion}))throw new Error(`Invalid element name: "${o}"`);t=rr(e,t);let a=``;if(e[t]===`E`&&Kn(e,`MPTY`,t))t+=4;else if(e[t]===`A`&&Kn(e,`NY`,t))t+=2;else if(e[t]===`(`){t++;let d=t;for(;t<e.length&&e[t]!==`)`;)t++;if(a=e.substring(d,t),e[t]!==`)`)throw new Error(`Unterminated content model`)}else if(!this.suppressValidationErr)throw new Error(`Invalid Element Expression, found "${e[t]}"`);return{elementName:o,contentModel:a.trim(),index:t}}readAttlistExp(e,t){t=rr(e,t);let i=t;for(;t<e.length&&!/\s/.test(e[t]);)t++;let o=e.substring(i,t);for(jo(o,{xmlVersion:this.xmlVersion}),t=rr(e,t),i=t;t<e.length&&!/\s/.test(e[t]);)t++;let a=e.substring(i,t);if(!jo(a,{xmlVersion:this.xmlVersion}))throw new Error(`Invalid attribute name: "${a}"`);t=rr(e,t);let d=``;if(e.substring(t,t+8).toUpperCase()===`NOTATION`){if(d=`NOTATION`,t+=8,t=rr(e,t),e[t]!==`(`)throw new Error(`Expected '(', found "${e[t]}"`);t++;let b=[];for(;t<e.length&&e[t]!==`)`;){let y=t;for(;t<e.length&&e[t]!==`|`&&e[t]!==`)`;)t++;let _=e.substring(y,t);if(_=_.trim(),!jo(_,{xmlVersion:this.xmlVersion}))throw new Error(`Invalid notation name: "${_}"`);b.push(_),e[t]===`|`&&(t++,t=rr(e,t))}if(e[t]!==`)`)throw new Error(`Unterminated list of notations`);t++,d+=` (`+b.join(`|`)+`)`}else{let b=t;for(;t<e.length&&!/\s/.test(e[t]);)t++;d+=e.substring(b,t);if(!this.suppressValidationErr&&![`CDATA`,`ID`,`IDREF`,`IDREFS`,`ENTITY`,`ENTITIES`,`NMTOKEN`,`NMTOKENS`].includes(d.toUpperCase()))throw new Error(`Invalid attribute type: "${d}"`)}t=rr(e,t);let m=``;return e.substring(t,t+8).toUpperCase()===`#REQUIRED`?(m=`#REQUIRED`,t+=8):e.substring(t,t+7).toUpperCase()===`#IMPLIED`?(m=`#IMPLIED`,t+=7):[t,m]=this.readIdentifierVal(e,t,`ATTLIST`),{elementName:o,attributeName:a,attributeType:d,defaultValue:m,index:t}}};var rr=(r,e)=>{for(;e<r.length&&/\s/.test(r[e]);)e++;return e};function Kn(r,e,t){for(let i=0;i<e.length;i++)if(e[i]!==r[t+i+1])return!1;return!0}function jo(r,e){if(ec(r,{xmlVersion:e}))return r;throw new Error(`Invalid entity name ${r}`)}var V_=[48,1632,1776,2406,2534,2662,2790,2918,3046,3174,3302,3430,3558,3664,3792,3872,4160,4240,6112,6160,6470,6608,6784,6800,6992,7088,7232,7248,65296,120782,120792,120802,120812,120822,66720,68912,69734,69872,69942,70096,70384,70736,70864,71248,71360,71472,71904,72016,72688,72784,73040,73120,73552,92768,92864,93008,123200,123632,124144,125264,130032];var aA=255;var cA=new Map;var dp=65535;var pp=1632;var Mi=pp;var z_=dp-pp+1;var lA=new Uint8Array(z_).fill(aA);for(let r of V_)for(let e=0;e<10;e++){let t=r+e;t<=dp?lA[t-Mi]=e:cA.set(t,e)}var mp=48;var gp=57;var bp=45;var uA=new Set([8722,65293,65123]);function H_(r){if(typeof r!=`string`)return r;let e=r.length;if(e===0)return r;let t=-1;for(let o=0;o<e;o++){let a=r.charCodeAt(o);if(!(a>=mp&&a<=gp||a===bp)){if(a<Mi){if(uA.has(a)){t=o;break}continue}if(a>=55296&&a<=56319){if(o+1<e){let d=r.charCodeAt(o+1);if(d>=56320&&d<=57343){let m=65536+(a-55296<<10)+(d-56320);if(cA.has(m)){t=o;break}}}continue}if(lA[a-Mi]!==aA||uA.has(a)){t=o;break}}}if(t===-1)return r;let i=[];t>0&&i.push(r.slice(0,t));for(let o=t;o<e;o++){let a=r.charCodeAt(o);if(a>=mp&&a<=gp||a===bp){i.push(r[o]);continue}if(a<Mi){i.push(uA.has(a)?`-`:r[o]);continue}if(a>=55296&&a<=56319){if(o+1<e){let m=r.charCodeAt(o+1);if(m>=56320&&m<=57343){let b=65536+(a-55296<<10)+(m-56320),y=cA.get(b);if(y!==void 0){i.push(String.fromCharCode(y+48)),o++;continue}}}i.push(r[o]);continue}if(uA.has(a)){i.push(`-`);continue}let d=lA[a-Mi];i.push(d!==aA?String.fromCharCode(d+48):r[o])}return i.join(``)}var Tp=H_;var q_=/^[-+]?0x[a-fA-F0-9]+$/;var W_=/^0b[01]+$/;var Q_=/^0o[0-7]+$/;var K_=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/;var X_={hex:!0,binary:!1,octal:!1,leadingZeros:!0,decimalPoint:`.`,eNotation:!0,infinity:`original`,unicode:!1};function rc(r,e={}){if(e=Object.assign({},X_,e),!r||typeof r!=`string`)return r;let t=r.trim();if(t.length===0)return r;if(e.skipLike!==void 0&&e.skipLike.test(t))return r;if(t===`0`||e.unicode&&(t=Tp(t),t===`0`))return 0;if(e.hex&&q_.test(t))return tc(t,16);if(e.binary&&W_.test(t))return tc(t,2);if(e.octal&&Q_.test(t))return tc(t,8);if(isFinite(t)){if(t.includes(`e`)||t.includes(`E`))return J_(r,t,e);{let i=K_.exec(t);if(i){let o=i[1]||``,a=i[2],d=Z_(i[3]),m=o?r[a.length+1]===`.`:r[a.length]===`.`;if(!e.leadingZeros&&(a.length>1||a.length===1&&!m))return r;{let b=Number(t),y=String(b);if(b===0)return b;if(y.search(/[eE]/)!==-1)return e.eNotation?b:r;if(t.indexOf(`.`)!==-1)return y===`0`||y===d||y===`${o}${d}`?b:r;let _=a?d:t;return a?_===y||o+_===y?b:r:_===y||_===o+y?b:r}}else return r}}else return $_(r,Number(t),e)}var Y_=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/;function J_(r,e,t){if(!t.eNotation)return r;let i=e.match(Y_);if(i){let o=i[1]||``,a=i[3].indexOf(`e`)===-1?`E`:`e`,d=i[2],m=o?r[d.length+1]===a:r[d.length]===a;return d.length>1&&m?r:d.length===1&&(i[3].startsWith(`.${a}`)||i[3][0]===a)?Number(e):d.length>0?t.leadingZeros&&!m?(e=(i[1]||``)+i[3],Number(e)):r:Number(e)}else return r}function Z_(r){if(r&&r.indexOf(`.`)!==-1){let e=r.length;for(;e>0&&r.charCodeAt(e-1)===48;)e--;return r=r.slice(0,e),r===`.`?r=`0`:r[0]===`.`?r=`0`+r:r[r.length-1]===`.`&&(r=r.substring(0,r.length-1)),r}return r}function tc(r,e){let t=r.trim();if((e===2||e===8)&&(r=t.substring(2)),parseInt)return parseInt(r,e);if(Number.parseInt)return Number.parseInt(r,e);if(window&&window.parseInt)return window.parseInt(r,e);throw new Error(`parseInt, Number.parseInt, window.parseInt are not supported`)}function $_(r,e,t){let i=e===Infinity;switch(t.infinity.toLowerCase()){case`null`:return null;case`infinity`:return e;case`string`:return i?`Infinity`:`-Infinity`;default:return r}}function nc(r){return typeof r==`function`?r:Array.isArray(r)?e=>{for(let t of r)if(typeof t==`string`&&e===t||t instanceof RegExp&&t.test(e))return!0}:()=>!1}var Li=class{constructor(e,t={},i){this.pattern=e,this.separator=t.separator||`.`,this.segments=this._parse(e),this.data=i,this._hasDeepWildcard=this.segments.some(o=>o.type===`deep-wildcard`),this._hasAttributeCondition=this.segments.some(o=>o.attrName!==void 0),this._hasPositionSelector=this.segments.some(o=>o.position!==void 0)}_parse(e){let t=[],i=0,o=``;for(;i<e.length;)e[i]===this.separator?i+1<e.length&&e[i+1]===this.separator?(o.trim()&&(t.push(this._parseSegment(o.trim())),o=``),t.push({type:`deep-wildcard`}),i+=2):(o.trim()&&t.push(this._parseSegment(o.trim())),o=``,i++):(o+=e[i],i++);return o.trim()&&t.push(this._parseSegment(o.trim())),t}_parseSegment(e){let t={type:`tag`},i=null,o=e,a=e.match(/^([^\[]+)(\[[^\]]*\])(.*)$/);if(a&&(o=a[1]+a[3],a[2])){let _=a[2].slice(1,-1);_&&(i=_)}let d,m=o;if(o.includes(`::`)){let _=o.indexOf(`::`);if(d=o.substring(0,_).trim(),m=o.substring(_+2).trim(),!d)throw new Error(`Invalid namespace in pattern: ${e}`)}let b,y=null;if(m.includes(`:`)){let _=m.lastIndexOf(`:`),w=m.substring(0,_).trim(),S=m.substring(_+1).trim();[`first`,`last`,`odd`,`even`].includes(S)||/^nth\(\d+\)$/.test(S)?(b=w,y=S):b=m}else b=m;if(!b)throw new Error(`Invalid segment pattern: ${e}`);if(t.tag=b,d&&(t.namespace=d),i)if(i.includes(`=`)){let _=i.indexOf(`=`);t.attrName=i.substring(0,_).trim(),t.attrValue=i.substring(_+1).trim()}else t.attrName=i.trim();if(y){let _=y.match(/^nth\((\d+)\)$/);_?(t.position=`nth`,t.positionValue=parseInt(_[1],10)):t.position=y}return t}get length(){return this.segments.length}hasDeepWildcard(){return this._hasDeepWildcard}hasAttributeCondition(){return this._hasAttributeCondition}hasPositionSelector(){return this._hasPositionSelector}toString(){return this.pattern}};var Vo=class{constructor(){this._byDepthAndTag=new Map,this._wildcardByDepth=new Map,this._deepWildcards=[],this._deepByTerminalTag=new Map,this._patterns=new Set,this._sealed=!1}add(e){if(this._sealed)throw new TypeError(`ExpressionSet is sealed. Create a new ExpressionSet to add more expressions.`);if(this._patterns.has(e.pattern))return this;if(this._patterns.add(e.pattern),e.hasDeepWildcard()){let a=e.segments[e.segments.length-1];if(a&&a.type!==`deep-wildcard`&&a.tag!==`*`){let d=a.tag;this._deepByTerminalTag.has(d)||this._deepByTerminalTag.set(d,[]),this._deepByTerminalTag.get(d).push(e)}else this._deepWildcards.push(e);return this}let t=e.length,o=e.segments[e.segments.length-1]?.tag;if(!o||o===`*`)this._wildcardByDepth.has(t)||this._wildcardByDepth.set(t,[]),this._wildcardByDepth.get(t).push(e);else{let a=`${t}:${o}`;this._byDepthAndTag.has(a)||this._byDepthAndTag.set(a,[]),this._byDepthAndTag.get(a).push(e)}return this}addAll(e){for(let t of e)this.add(t);return this}has(e){return this._patterns.has(e.pattern)}get size(){return this._patterns.size}seal(){return this._sealed=!0,this}get isSealed(){return this._sealed}matchesAny(e){return this.findMatch(e)!==null}findMatch(e){let t=e.getDepth(),i=e.getCurrentTag(),o=`${t}:${i}`,a=this._byDepthAndTag.get(o);if(a){for(let b=0;b<a.length;b++)if(e.matches(a[b]))return a[b]}let d=this._wildcardByDepth.get(t);if(d){for(let b=0;b<d.length;b++)if(e.matches(d[b]))return d[b]}let m=this._deepByTerminalTag.get(i);if(m){for(let b=0;b<m.length;b++)if(e.matches(m[b]))return m[b]}for(let b=0;b<this._deepWildcards.length;b++)if(e.matches(this._deepWildcards[b]))return this._deepWildcards[b];return null}};var ic=class{constructor(e){this._matcher=e}get separator(){return this._matcher.separator}getCurrentTag(){let e=this._matcher.path;return e.length>0?e[e.length-1].tag:void 0}getCurrentNamespace(){let e=this._matcher.path;return e.length>0?e[e.length-1].namespace:void 0}getAttrValue(e){let t=this._matcher.path;if(t.length!==0)return t[t.length-1].values?.[e]}hasAttr(e){let t=this._matcher.path;if(t.length===0)return!1;let i=t[t.length-1];return i.values!==void 0&&e in i.values}getAnyParentAttr(e){return this._matcher.getAnyParentAttr(e)}hasAnyParentAttr(e){return this._matcher.hasAnyParentAttr(e)}getPosition(){let e=this._matcher.path;return e.length===0?-1:e[e.length-1].position??0}getCounter(){let e=this._matcher.path;return e.length===0?-1:e[e.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this._matcher.path.length}toString(e,t=!0){return this._matcher.toString(e,t)}toArray(){return this._matcher.path.map(e=>e.tag)}matches(e){return this._matcher.matches(e)}matchesAny(e){return e.matchesAny(this._matcher)}};var zo=class{constructor(e={}){this.separator=e.separator||`.`,this.path=[],this.siblingStacks=[],this._pathStringCache=null,this._view=new ic(this),this._keptAttrs=[]}push(e,t=null,i=null,o=null){this._pathStringCache=null,this.path.length>0&&(this.path[this.path.length-1].values=void 0);let a=this.path.length,d=this.siblingStacks[a];d||(d={counts:new Map,total:0},this.siblingStacks[a]=d);let m=i?`${i}:${e}`:e,b=d.counts.get(m)||0,y=d.total;d.counts.set(m,b+1),d.total++;let _={tag:e,position:y,counter:b};i!=null&&(_.namespace=i),t!=null&&(_.values=t),this.path.push(_);let w=this.path.length,S=o!==null?o.keep:null;if(S!=null&&S.length>0&&t)for(let M=0;M<S.length;M++){let k=S[M];t[k]!==void 0&&this._keptAttrs.push({depth:w,name:k,value:t[k]})}}pop(){if(this.path.length===0)return;this._pathStringCache=null;let e=this.path.pop();this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1);let t=this.path.length+1;for(;this._keptAttrs.length>0&&this._keptAttrs[this._keptAttrs.length-1].depth>=t;)this._keptAttrs.pop();return e}updateCurrent(e){if(this.path.length>0){let t=this.path[this.path.length-1];e!=null&&(t.values=e)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(e){if(this.path.length!==0)return this.path[this.path.length-1].values?.[e]}hasAttr(e){if(this.path.length===0)return!1;let t=this.path[this.path.length-1];return t.values!==void 0&&e in t.values}getAnyParentAttr(e){let t=this._keptAttrs;for(let i=t.length-1;i>=0;i--)if(t[i].name===e)return t[i].value}hasAnyParentAttr(e){let t=this._keptAttrs;for(let i=t.length-1;i>=0;i--)if(t[i].name===e)return!0;return!1}getPosition(){return this.path.length===0?-1:this.path[this.path.length-1].position??0}getCounter(){return this.path.length===0?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(e,t=!0){let i=e||this.separator;if(i===this.separator&&t===!0){if(this._pathStringCache!==null)return this._pathStringCache;let a=this.path.map(d=>d.namespace?`${d.namespace}:${d.tag}`:d.tag).join(i);return this._pathStringCache=a,a}return this.path.map(a=>t&&a.namespace?`${a.namespace}:${a.tag}`:a.tag).join(i)}toArray(){return this.path.map(e=>e.tag)}reset(){this._pathStringCache=null,this.path=[],this.siblingStacks=[],this._keptAttrs=[]}matches(e){let t=e.segments;return t.length===0?!1:e.hasDeepWildcard()?this._matchWithDeepWildcard(t):this._matchSimple(t)}_matchSimple(e){if(this.path.length!==e.length)return!1;for(let t=0;t<e.length;t++)if(!this._matchSegment(e[t],this.path[t],t===this.path.length-1))return!1;return!0}_matchWithDeepWildcard(e){let t=this.path.length-1,i=e.length-1;for(;i>=0&&t>=0;){let o=e[i];if(o.type===`deep-wildcard`){if(i--,i<0)return!0;let a=e[i],d=!1;for(let m=t;m>=0;m--)if(this._matchSegment(a,this.path[m],m===this.path.length-1)){t=m-1,i--,d=!0;break}if(!d)return!1}else{if(!this._matchSegment(o,this.path[t],t===this.path.length-1))return!1;t--,i--}}return i<0}_matchSegment(e,t,i){if(e.tag!==`*`&&e.tag!==t.tag||e.namespace!==void 0&&e.namespace!==`*`&&e.namespace!==t.namespace||e.attrName!==void 0&&(!i||!t.values||!(e.attrName in t.values)||e.attrValue!==void 0&&String(t.values[e.attrName])!==String(e.attrValue)))return!1;if(e.position!==void 0){if(!i)return!1;let o=t.counter??0;if(e.position===`first`&&o!==0)return!1;if(e.position===`odd`&&o%2!==1)return!1;if(e.position===`even`&&o%2!==0)return!1;if(e.position===`nth`&&o!==e.positionValue)return!1}return!0}matchesAny(e){return e.matchesAny(this)}snapshot(){return{path:this.path.map(e=>r({},e)),siblingStacks:this.siblingStacks.map(e=>e&&{counts:new Map(e.counts),total:e.total}),keptAttrs:this._keptAttrs.map(e=>r({},e))}}restore(e){this._pathStringCache=null,this.path=e.path.map(t=>r({},t)),this.siblingStacks=e.siblingStacks.map(t=>t&&{counts:new Map(t.counts),total:t.total}),this._keptAttrs=(e.keptAttrs||[]).map(t=>r({},t))}readOnly(){return this._view}};var Ri=[{id:`html-script-open`,description:`<script opening tag`,pattern:/<script[\s>/]/i},{id:`html-script-close`,description:`<\/script closing tag`,pattern:/<\/script[\s>]/i},{id:`html-javascript-protocol`,description:`javascript: URI scheme (with optional whitespace/encoding)`,pattern:/j[\t\n\r ]*a[\t\n\r ]*v[\t\n\r ]*a[\t\n\r ]*s[\t\n\r ]*c[\t\n\r ]*r[\t\n\r ]*i[\t\n\r ]*p[\t\n\r ]*t[\t\n\r ]*:/i},{id:`html-vbscript-protocol`,description:`vbscript: URI scheme`,pattern:/vbscript[\t\n\r ]*:/i},{id:`html-data-html`,description:`data:text/html URI — can execute scripts in browsers`,pattern:/data[\t\n\r ]*:[\t\n\r ]*text\/html/i},{id:`html-data-xhtml`,description:`data:application/xhtml+xml URI`,pattern:/data[\t\n\r ]*:[\t\n\r ]*application\/xhtml/i},{id:`html-data-svg`,description:`data:image/svg+xml URI — can execute scripts`,pattern:/data[\t\n\r ]*:[\t\n\r ]*image\/svg\+xml/i},{id:`html-inline-event-handler`,description:`Inline event handler attributes: onclick=, onerror=, onload=, etc.`,pattern:/\bon\w{1,30}\s*=/i},{id:`html-entity-obfuscated-script`,description:`HTML-entity-encoded <script (e.g. <script or <script)`,pattern:/(?:�*3[Cc];?|�*60;?|<)\s*script/i},{id:`html-entity-obfuscated-javascript`,description:`HTML-entity-encoded javascript: (partial — catches common j or j for "j")`,pattern:/(?:�*6[Aa];?|�*106;?)\s*(?:�*61;?|a)[\s\S]{0,80}script\s*:/i},{id:`html-style-expression`,description:`CSS expression() — IE-era code execution in style attributes`,pattern:/style[\s\S]{0,20}expression\s*\(/i},{id:`html-object-embed`,description:`<object or <embed tags that can load active content`,pattern:/<(?:object|embed)[\s>/]/i},{id:`html-base-tag`,description:`<base href= — can hijack all relative URLs on a page`,pattern:/<base[\s>]/i},{id:`html-meta-refresh`,description:`<meta http-equiv="refresh" — can redirect users`,pattern:/<meta[\s\S]{0,40}http-equiv[\s\S]{0,20}refresh/i},{id:`html-srcdoc`,description:`srcdoc= attribute on iframes — embeds HTML that can run scripts`,pattern:/srcdoc\s*=/i},{id:`html-iframe`,description:`<iframe tag`,pattern:/<iframe[\s>/]/i},{id:`html-form`,description:`<form tag — can be used for phishing / credential harvesting injection`,pattern:/<form[\s>/]/i}];var Pi=[{id:`xml-cdata-injection`,description:`CDATA section injection: <![CDATA[ breaks out of text node context`,pattern:/<!\[CDATA\[/i},{id:`xml-cdata-close`,description:`CDATA close sequence: ]]> can terminate an enclosing CDATA section`,pattern:/\]\]>/},{id:`xml-processing-instruction`,description:`XML processing instruction: <?xml-stylesheet or <?php etc.`,pattern:/<\?(?:xml[\- ]|php|asp)/i},{id:`xml-doctype-injection`,description:`DOCTYPE declaration embedded in content — can define entities`,pattern:/<!DOCTYPE(?:[\s[]|$)/i},{id:`xml-entity-system`,description:`SYSTEM keyword — used in external entity declarations (XXE)`,pattern:/\bSYSTEM\s+["']/i},{id:`xml-entity-public`,description:`PUBLIC keyword — used in external entity declarations (XXE)`,pattern:/\bPUBLIC\s+["']/i},{id:`xml-entity-declaration`,description:`<!ENTITY declaration — defines entities, potential XXE or entity expansion`,pattern:/<!ENTITY[\s%]/i},{id:`xml-billion-laughs`,description:`Entity reference chaining / billion laughs: repeated &eX; style references`,pattern:/(?:&\w{1,20};){3,}/},{id:`xml-namespace-confusion`,description:`xmlns: attribute injection — can redefine namespaces to confuse parsers`,pattern:/\bxmlns(?::\w{1,40})?\s*=/i},{id:`xml-comment-injection`,description:`<!-- comment injection — can hide content from some parsers`,pattern:/<!--/},{id:`xml-comment-close`,description:`--> closes an enclosing XML comment`,pattern:/-->/},{id:`xml-pi-close`,description:`?> closes an enclosing processing instruction`,pattern:/\?>/}];var oc=[{id:`svg-script-element`,description:`<script element inside SVG executes JavaScript`,pattern:/<script[\s>/]/i},{id:`svg-xlink-href-javascript`,description:`xlink:href with javascript: — classic SVG XSS via <a> or <use>`,pattern:/xlink\s*:\s*href\s*=\s*["']?\s*javascript\s*:/i},{id:`svg-href-javascript`,description:`href= with javascript: in SVG context (<a>, <animate>, etc.)`,pattern:/href\s*=\s*["']?\s*javascript\s*:/i},{id:`svg-foreignobject`,description:`<foreignObject embeds HTML inside SVG — can execute scripts`,pattern:/<foreignObject[\s>/]/i},{id:`svg-use-external`,description:`<use xlink:href or href pointing to external resource (non-fragment URL)`,pattern:/<use[\s\S]{0,60}(?:xlink\s*:\s*)?href\s*=\s*(?:["'][^#]|[^"'#\s>])/i},{id:`svg-animate-href`,description:`<animate attributeName="href" — can dynamically change href to javascript:`,pattern:/<animate[\s\S]{0,80}attributeName\s*=\s*["'][\s]*href["']/i},{id:`svg-animate-xlinkhref`,description:`<animate attributeName="xlink:href"`,pattern:/<animate[\s\S]{0,80}attributeName\s*=\s*["'][\s]*xlink\s*:\s*href["']/i},{id:`svg-set-javascript`,description:`<set to="javascript:..." — sets an attribute to a javascript: URI`,pattern:/<set[\s\S]{0,80}to\s*=\s*["']?\s*javascript\s*:/i},{id:`svg-event-handler`,description:`SVG-specific event handler attributes: onload=, onerror=, onactivate=, etc.`,pattern:/\bon(?:load|error|activate|begin|end|repeat|focus|blur|click|mouse\w{1,20}|key\w{1,20})\s*=/i},{id:`svg-handler-generic`,description:`Generic on* handler catch-all for SVG attributes`,pattern:/\bon\w{1,30}\s*=/i},{id:`svg-filter-feimage`,description:`<feImage href= — filter primitive that can load external resources`,pattern:/<feImage[\s\S]{0,80}(?:xlink\s*:\s*)?href\s*=/i},{id:`svg-image-external`,description:`<image xlink:href with http/https or javascript protocol`,pattern:/<image[\s\S]{0,80}(?:xlink\s*:\s*)?href\s*=\s*["']?\s*(?:https?|javascript)\s*:/i},{id:`svg-style-javascript`,description:`style= attribute containing javascript: (e.g. background:url(javascript:...))`,pattern:/style\s*=[\s\S]{0,60}javascript\s*:/i}];var Ho=[{id:`sql-block-comment-open`,description:`SQL block comment open: /* ... */ — unusual in legitimate user text`,pattern:/\/\*/},{id:`sql-union-select`,description:`UNION SELECT — most common SQL injection aggregation attack`,pattern:/\bUNION\s{1,20}(?:ALL\s{1,20})?SELECT\b/i},{id:`sql-drop-table`,description:`DROP TABLE — destructive DDL injection`,pattern:/\bDROP\s{1,20}TABLE\b/i},{id:`sql-drop-database`,description:`DROP DATABASE — destructive DDL injection`,pattern:/\bDROP\s{1,20}DATABASE\b/i},{id:`sql-insert-into`,description:`INSERT INTO — data injection`,pattern:/\bINSERT\s{1,20}INTO\b/i},{id:`sql-delete-from`,description:`DELETE FROM — data deletion injection`,pattern:/\bDELETE\s{1,20}FROM\b/i},{id:`sql-update-set`,description:`UPDATE ... SET — data modification injection`,pattern:/\bUPDATE\b[\s\S]{1,60}\bSET\b/i},{id:`sql-exec-xp`,description:`EXEC xp_ — MSSQL extended stored procedure execution`,pattern:/\bEXEC(?:UTE)?\s{1,20}xp_/i},{id:`sql-tautology-string`,description:`Classic string tautology: ' OR '1'='1 or " OR "1"="1"`,pattern:/'\s{0,10}OR\s{0,10}'[^']{0,20}'\s*=\s*'[^']{0,20}/i},{id:`sql-tautology-numeric`,description:`Numeric tautology: OR 1=1`,pattern:/\bOR\s{1,10}1\s*=\s*1\b/i},{id:`sql-always-true-zero`,description:`Numeric tautology: OR 0=0`,pattern:/\bOR\s{1,10}0\s*=\s*0\b/i},{id:`sql-sleep-benchmark`,description:`Time-based blind injection: SLEEP() or BENCHMARK()`,pattern:/\b(?:SLEEP|BENCHMARK)\s*\(/i},{id:`sql-waitfor-delay`,description:`MSSQL time-based blind injection: WAITFOR DELAY`,pattern:/\bWAITFOR\s{1,20}DELAY\b/i},{id:`sql-char-function`,description:`CHAR() function — used to obfuscate injected strings`,pattern:/\bCHAR\s*\(\s*\d{1,3}/i},{id:`sql-information-schema`,description:`INFORMATION_SCHEMA — reconnaissance query for table/column enumeration`,pattern:/\bINFORMATION_SCHEMA\b/i}];var sc=[{id:`shell-path-traversal-unix`,description:`Unix path traversal: ../ — climbing the directory tree`,pattern:/\.\.\//},{id:`shell-path-traversal-windows`,description:`Windows path traversal: ..\\ — climbing the directory tree`,pattern:/\.\.\\/},{id:`shell-path-traversal-encoded`,description:`URL-encoded path traversal: %2e%2e or %2f variants`,pattern:/%2e%2e|%2f\.\.|\.\.%2f/i},{id:`shell-null-byte`,description:`Null byte injection: \\x00 or %00 — truncates strings in C-backed functions`,pattern:/\x00|%00/},{id:`shell-semicolon`,description:`Semicolon command separator: cmd1; cmd2`,pattern:/;/},{id:`shell-pipe`,description:`Pipe operator: cmd1 | cmd2`,pattern:/\|/},{id:`shell-and-operator`,description:`AND operator: cmd1 && cmd2`,pattern:/&&/},{id:`shell-or-operator`,description:`OR operator: cmd1 || cmd2`,pattern:/\|\|/},{id:`shell-backtick`,description:"Backtick command substitution: `cmd`",pattern:/`/},{id:`shell-dollar-paren`,description:`Dollar-paren command substitution: $(cmd)`,pattern:/\$\(/},{id:`shell-dollar-brace`,description:"Dollar-brace variable expansion: ${var} — can be abused for injection",pattern:/\$\{/},{id:`shell-redirect-out`,description:`Output redirection: cmd > file or cmd >> file`,pattern:/>{1,2}/},{id:`shell-redirect-in`,description:`Input redirection: cmd < file`,pattern:/</},{id:`shell-newline-injection`,description:`Newline injection: \\n or \\r — can inject new shell commands`,pattern:/[\n\r]/},{id:`shell-glob-star`,description:`Glob expansion: * or ? — can expand to unintended files`,pattern:/[/\\][*?]/},{id:`shell-absolute-root`,description:`Absolute root path injection: string starting with / or \\ (Windows UNC)`,pattern:/^(?:\/|\\\\)/},{id:`shell-windows-drive`,description:`Windows drive letter path injection: C:\\ or D:/`,pattern:/^[a-zA-Z]:[/\\]/},{id:`shell-curl-wget`,description:`curl/wget with URL or flags — can exfiltrate data or download payloads`,pattern:/\b(?:curl|wget)\s+(?:https?:\/\/|ftp:\/\/|-)/i}];var Ac=[{id:`redos-nested-quantifier-plus`,description:`Nested + quantifier inside a group with outer quantifier: (a+)+, (.+b)*, etc.`,pattern:/\([^)]*\+[^)]*\)[+*]/},{id:`redos-nested-quantifier-star`,description:`Nested * quantifier: (a*)* or (a*)+ — catastrophic backtracking`,pattern:/\([^)]*\*[^)]*\)[*+]/},{id:`redos-nested-groups`,description:`Doubly nested quantified groups: ((a+)+) — guaranteed catastrophic`,pattern:/\(\([^)]{0,40}\)[+*]\)[+*]/},{id:`redos-alternation-overlap`,description:`Overlapping alternation under quantifier: (a|a)+ — ambiguous NFA paths`,pattern:/\(([^|()]{1,20})\|(?:\1)(?:\|[^|()]{1,20}){0,5}\)[+*?]{1,2}/},{id:`redos-star-plus-concat`,description:`(x*x)+ pattern — triggers super-linear backtracking`,pattern:/\([^)]{0,10}\*[^)]{0,10}\)[+*]/},{id:`redos-dot-star-greedy`,description:`(.*){n,} or (.+){n,} — repeated greedy dot quantifiers`,pattern:/\(\.[*+]\)\{?\d/},{id:`redos-large-repetition`,description:`Very large fixed or range repetition count {1000,} or {1000,n} — denial of service via backtracking`,pattern:/\{\d{4,}(?:,\d*)?\}/},{id:`redos-catastrophic-alternation`,description:`Long alternation with many similar branches — polynomial backtracking risk`,pattern:/\([^)]{0,200}(?:\|[^|)]{0,50}){9,}\)/}];var ur=`["'\\s]*:`;var ac=[{id:`nosql-where-operator`,description:`$where — executes arbitrary JavaScript server-side in MongoDB`,pattern:new RegExp(`\\$where${ur}`,`i`)},{id:`nosql-ne-operator`,description:`$ne — "not equal" operator used to bypass equality checks`,pattern:new RegExp(`\\$ne${ur}`,`i`)},{id:`nosql-gt-operator`,description:`$gt — "greater than" used to bypass password/value checks`,pattern:new RegExp(`\\$gte?${ur}`,`i`)},{id:`nosql-lt-operator`,description:`$lt / $lte — "less than" bypass variants`,pattern:new RegExp(`\\$lte?${ur}`,`i`)},{id:`nosql-regex-operator`,description:`$regex — can be used to extract data character by character (blind injection)`,pattern:new RegExp(`\\$regex${ur}`,`i`)},{id:`nosql-or-operator`,description:`$or — logical OR; used to create always-true conditions`,pattern:new RegExp(`\\$or${ur}\\s*\\[`,`i`)},{id:`nosql-and-operator`,description:`$and — logical AND operator injection`,pattern:new RegExp(`\\$and${ur}\\s*\\[`,`i`)},{id:`nosql-nor-operator`,description:`$nor — logical NOR operator injection`,pattern:new RegExp(`\\$nor${ur}\\s*\\[`,`i`)},{id:`nosql-exists-operator`,description:`$exists — can enumerate fields to determine schema`,pattern:new RegExp(`\\$exists${ur}`,`i`)},{id:`nosql-in-operator`,description:`$in — matches any value in a list; can enumerate values`,pattern:new RegExp(`\\$in${ur}\\s*\\[`,`i`)},{id:`nosql-expr-operator`,description:`$expr — allows aggregation expressions in queries (MongoDB 3.6+)`,pattern:new RegExp(`\\$expr${ur}`,`i`)},{id:`nosql-function-operator`,description:`$function — executes arbitrary JavaScript in MongoDB 4.4+`,pattern:new RegExp(`\\$function${ur}`,`i`)},{id:`nosql-accumulator-operator`,description:`$accumulator — custom aggregation with arbitrary JS execution`,pattern:new RegExp(`\\$accumulator${ur}`,`i`)},{id:`nosql-proto-pollution`,description:`__proto__ — prototype pollution via object key injection`,pattern:/__proto__/},{id:`nosql-constructor-prototype`,description:`constructor.prototype — alternative prototype pollution vector (dot notation or JSON key)`,pattern:/constructor[\s"':.,{\[]*prototype/i},{id:`nosql-proto-bracket`,description:`["__proto__"] — bracket-notation prototype pollution`,pattern:/\[["']__proto__["']\]/}];var cc=[{id:`log-crlf-injection`,description:`CRLF injection: literal \\r or \\n embeds fake log lines`,pattern:/[\r\n]/},{id:`log-url-encoded-crlf`,description:`URL-encoded CRLF: %0d, %0a, %0D, %0A — decoded by some log parsers`,pattern:/%0[dDaA]/},{id:`log-unicode-newline`,description:`Unicode newline variants: U+2028 (line separator), U+2029 (paragraph separator)`,pattern:/[\u2028\u2029]/},{id:`log-log4shell-jndi`,description:"Log4Shell: ${jndi:...} triggers remote code execution in Apache Log4j",pattern:/\$\{jndi\s*:/i},{id:`log-log4shell-obfuscated`,description:"Obfuscated Log4Shell: ${::-j}... lookup-bypass prefix used to evade WAF detection",pattern:/\$\{::-/},{id:`log-log4j-lookup`,description:"Log4j lookup syntax: ${env:...}, ${sys:...}, ${ctx:...} — data exfiltration",pattern:/\$\{(?:env|sys|ctx|main|map|sd|web|docker|k8s|spring)\s*:/i},{id:`log-ssti-double-brace`,description:`SSTI double-brace: {{expression}} — Jinja2, Twig, Handlebars, etc.`,pattern:/\{\{[\s\S]{0,80}\}\}/},{id:`log-ssti-hash-brace`,description:`SSTI hash-brace: #{expression} — Thymeleaf, Velocity, Ruby ERB`,pattern:/#\{[\s\S]{0,80}\}/},{id:`log-ssti-dollar-brace`,description:"SSTI/EL injection: ${expression with operators or method calls} — JSP EL, Freemarker, SpEL",pattern:/\$\{[^}]*(?:\.|\(|\*|\+|\bclass\b|\bruntime\b|\bprocess\b|\bexec\b)[^}]{0,80}\}/i},{id:`log-ssti-percent-tag`,description:`SSTI ERB/ASP tag: <%= expression %> — Ruby ERB, ASP`,pattern:/<%=[\s\S]{0,80}%>/},{id:`log-null-byte`,description:`Null byte: \\x00 or %00 — can truncate log entries in C-backed loggers`,pattern:/\x00|%00/},{id:`log-ansi-escape`,description:`ANSI escape sequence: ESC[ — can manipulate terminal output when logs are tailed`,pattern:/\x1b\[/}];var aw=[{id:`sql-line-comment`,description:`SQL line comment: -- followed by whitespace or end of string`,pattern:/--(?:\s|$)/},{id:`sql-stacked-query`,description:`Stacked queries: semicolon immediately followed by a SQL keyword`,pattern:/;\s{0,10}(?:SELECT|INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|EXEC)\b/i},{id:`sql-hex-encoding`,description:`Hex-encoded string injection: 0x41414141 style (MySQL)`,pattern:/\b0x[0-9a-f]{4,}/i}];var lc=[...Ho,...aw];Ri.label=`HTML`;Pi.label=`XML`;oc.label=`SVG`;Ho.label=`SQL`;lc.label=`SQL-STRICT`;sc.label=`SHELL`;Ac.label=`REDOS`;ac.label=`NOSQL`;cc.label=`LOG`;Object.freeze({HTML:Ri,XML:Pi,SVG:oc,SQL:Ho,"SQL-STRICT":lc,SHELL:sc,REDOS:Ac,NOSQL:ac,LOG:cc});function lw(r){if(typeof r!=`string`)throw new TypeError(`is-unsafe: first argument must be a string, got ${typeof r}`)}function uw(r){if(!(r instanceof RegExp)){if(Array.isArray(r)){if(r.length===0)throw new TypeError(`is-unsafe: context must not be an empty array`);if(Array.isArray(r[0])){for(let e of r)if(!Array.isArray(e)||e.length===0)throw new TypeError(`is-unsafe: each context in the array must be a non-empty pattern array (PatternList)`)}return}throw new TypeError(`is-unsafe: second argument must be a PatternList (e.g. HTML), an array of PatternLists (e.g. [HTML, XML]), or a RegExp. Got: ${typeof r}`)}}function fw(r){return r instanceof RegExp?{lists:null,regex:r}:Array.isArray(r[0])?{lists:r,regex:null}:{lists:[r],regex:null}}function hw(r,e){let t=e.label??`CUSTOM`;for(let i of e)if(i.pattern.test(r))return{context:t,id:i.id,description:i.description,pattern:i.pattern};return null}function yp(r,e){lw(r),uw(e);let{lists:t,regex:i}=fw(e);if(i)return i.test(r);for(let o of t)if(hw(r,o)!==null)return!0;return!1}function dw(r,e){if(!r)return{};let t=e.attributesGroupName?r[e.attributesGroupName]:r;if(!t)return{};let i={};for(let o in t)if(o.startsWith(e.attributeNamePrefix)){let a=o.substring(e.attributeNamePrefix.length);i[a]=t[o]}else i[o]=t[o];return i}function pw(r){if(!r||typeof r!=`string`)return;let e=r.indexOf(`:`);if(e!==-1&&e>0){let t=r.substring(0,e);if(t!==`xmlns`)return t}}var fA=class{constructor(e,t){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.parseXml=yw,this.parseTextData=mw,this.resolveNameSpace=gw,this.buildAttributesMap=Tw,this.isItStopNode=Ew,this.replaceEntitiesValue=_w,this.readStopNodeData=Cw,this.saveTextToParentTag=ww,this.addChild=xw,this.ignoreAttributesFn=nc(this.options.ignoreAttributes),this.entityExpansionCount=0,this.currentExpandedLength=0,this.doctypefound=!1;let i=r({},Bo);this.options.entityDecoder?this.entityDecoder=this.options.entityDecoder:(typeof this.options.htmlEntities==`object`?i=this.options.htmlEntities:this.options.htmlEntities===!0&&(i=r(r({},J0),Y0)),this.entityDecoder=new Go({namedEntities:r(r({},i),t),numericAllowed:this.options.htmlEntities,limit:{maxTotalExpansions:this.options.processEntities.maxTotalExpansions,maxExpandedLength:this.options.processEntities.maxExpandedLength,applyLimitsTo:this.options.processEntities.appliesTo},onInputEntity:(a,d)=>yp(d,[Ri,Pi])?Ii.BLOCK:Ii.ALLOW})),this.matcher=new zo,this.readonlyMatcher=this.matcher.readOnly(),this.isCurrentNodeStopNode=!1,this.stopNodeExpressionsSet=new Vo;let o=this.options.stopNodes;if(o&&o.length>0){for(let a=0;a<o.length;a++){let d=o[a];typeof d==`string`?this.stopNodeExpressionsSet.add(new Li(d)):d instanceof Li&&this.stopNodeExpressionsSet.add(d)}this.stopNodeExpressionsSet.seal()}}};function mw(r,e,t,i,o,a,d){let m=this.options;if(r!==void 0&&(m.trimValues&&!i&&(r=r.trim()),r.length>0)){d||(r=this.replaceEntitiesValue(r,e,t));let b=m.jPath?t.toString():t,y=m.tagValueProcessor(e,r,b,o,a);return y==null?r:typeof y!=typeof r||y!==r?y:m.trimValues||r.trim()===r?hc(r,m.parseTagValue,m.numberParseOptions):r}}function gw(r){if(this.options.removeNSPrefix){let e=r.split(`:`),t=r.charAt(0)===`/`?`/`:``;if(e[0]===`xmlns`)return``;e.length===2&&(r=t+e[1])}return r}var bw=new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])([\\s\\S]*?)\\3)?`,`gm`);function Tw(r,e,t,i=!1){let o=this.options;if(i===!0||o.ignoreAttributes!==!0&&typeof r==`string`){let a=tp(r,bw),d=a.length,m={},b=new Array(d),y=!1,_={};for(let M=0;M<d;M++){let k=this.resolveNameSpace(a[M][1]),O=a[M][4];if(k.length&&O!==void 0){let Q=O;o.trimValues&&(Q=Q.trim()),Q=this.replaceEntitiesValue(Q,t,this.readonlyMatcher),b[M]=Q,_[k]=Q,y=!0}}y&&typeof e==`object`&&e.updateCurrent&&e.updateCurrent(_);let w=o.jPath?e.toString():this.readonlyMatcher,S=!1;for(let M=0;M<d;M++){let k=this.resolveNameSpace(a[M][1]);if(this.ignoreAttributesFn(k,w))continue;let O=o.attributeNamePrefix+k;if(k.length)if(o.transformAttributeName&&(O=o.transformAttributeName(O)),O=xp(O,o),a[M][4]!==void 0){let Q=b[M],V=o.attributeValueProcessor(k,Q,w);V==null?m[O]=Q:typeof V!=typeof Q||V!==Q?m[O]=V:m[O]=hc(Q,o.parseAttributeValue,o.numberParseOptions),S=!0}else o.allowBooleanAttributes&&(m[O]=!0,S=!0)}if(!S)return;if(o.attributesGroupName&&!o.preserveOrder){let M={};return M[o.attributesGroupName]=m,M}return m}}var yw=function(r){r=r.replace(/\r\n?/g,`
|
|
5
|
+
`);let e=new lr(`!xml`),t=e,i=``;this.matcher.reset(),this.entityDecoder.reset(),this.entityExpansionCount=0,this.currentExpandedLength=0,this.doctypefound=!1;let o=this.options,a=new AA(o.processEntities),d=r.length;for(let m=0;m<d;m++)if(r[m]===`<`){let y=r.charCodeAt(m+1);if(y===47){let _=Ni(r,`>`,m,`Closing Tag is not closed.`),w=r.substring(m+2,_).trim();if(o.removeNSPrefix){let M=w.indexOf(`:`);M!==-1&&(w=w.substr(M+1))}w=uc(o.transformTagName,w,``,o).tagName,t&&(i=this.saveTextToParentTag(i,t,this.readonlyMatcher));let S=this.matcher.getCurrentTag();if(w&&o.unpairedTagsSet.has(w))throw new Error(`Unpaired tag can not be used as closing tag: </${w}>`);S&&o.unpairedTagsSet.has(S)&&(this.matcher.pop(),this.tagsNodeStack.pop()),this.matcher.pop(),this.isCurrentNodeStopNode=!1,t=this.tagsNodeStack.pop()||e,o.captureMetaData&&t&&t.addEndIndex(_+1),i=``,m=_}else if(y===63){let _=fc(r,m,!1,`?>`);if(!_)throw new Error(`Pi Tag is not closed.`);i=this.saveTextToParentTag(i,t,this.readonlyMatcher);let w=this.buildAttributesMap(_.tagExp,this.matcher,_.tagName,!0);if(w){let S=w[this.options.attributeNamePrefix+`version`];this.entityDecoder.setXmlVersion(Number(S)||1),a.setXmlVersion(Number(S)||1)}if(!(o.ignoreDeclaration&&_.tagName===`?xml`||o.ignorePiTags)){let S=new lr(_.tagName);S.add(o.textNodeName,``),_.tagName!==_.tagExp&&_.attrExpPresent&&o.ignoreAttributes!==!0&&(S[`:@`]=w),this.addChild(t,S,this.readonlyMatcher,m),o.captureMetaData&&t.addEndIndex(_.closeIndex+2)}m=_.closeIndex+1}else if(y===33&&r.charCodeAt(m+2)===45&&r.charCodeAt(m+3)===45){let _=Ni(r,`-->`,m+4,`Comment is not closed.`);if(o.commentPropName){let w=r.substring(m+4,_-2);i=this.saveTextToParentTag(i,t,this.readonlyMatcher),t.add(o.commentPropName,[{[o.textNodeName]:w}])}m=_}else if(y===33&&r.charCodeAt(m+2)===68){if(this.doctypefound)throw new Error(`Multiple DOCTYPE declarations found.`);this.doctypefound=!0;let _=a.readDocType(r,m);this.entityDecoder.addInputEntities(_.entities),m=_.i}else if(y===33&&r.charCodeAt(m+2)===91){let _=Ni(r,`]]>`,m,`CDATA is not closed.`)-2,w=r.substring(m+9,_);i=this.saveTextToParentTag(i,t,this.readonlyMatcher);let S=this.parseTextData(w,t.tagname,this.readonlyMatcher,!0,!1,!0,!0);S??=``,o.cdataPropName?t.add(o.cdataPropName,[{[o.textNodeName]:w}]):t.add(o.textNodeName,S),m=_+2}else{let _=fc(r,m,o.removeNSPrefix);if(!_){let re=r.substring(Math.max(0,m-50),Math.min(d,m+50));throw new Error(`readTagExp returned undefined at position ${m}. Context: "${re}"`)}let w=_.tagName,S=_.rawTagName,M=_.tagExp,k=_.attrExpPresent,O=_.closeIndex;if({tagName:w,tagExp:M}=uc(o.transformTagName,w,M,o),o.strictReservedNames&&(w===o.commentPropName||w===o.cdataPropName||w===o.textNodeName||w===o.attributesGroupName))throw new Error(`Invalid tag name: ${w}`);t&&i&&t.tagname!==`!xml`&&(i=this.saveTextToParentTag(i,t,this.readonlyMatcher,!1));let Q=t;Q&&o.unpairedTagsSet.has(Q.tagname)&&(t=this.tagsNodeStack.pop(),this.matcher.pop());let V=!1;M.length>0&&M.lastIndexOf(`/`)===M.length-1&&(V=!0,w[w.length-1]===`/`?(w=w.substr(0,w.length-1),M=w):M=M.substr(0,M.length-1),k=w!==M);let G=null,$;$=pw(S),w!==e.tagname&&this.matcher.push(w,{},$),w!==M&&k&&(G=this.buildAttributesMap(M,this.matcher,w),G&&dw(G,o)),w!==e.tagname&&(this.isCurrentNodeStopNode=this.isItStopNode());let te=m;if(this.isCurrentNodeStopNode){let re=``;if(V)m=_.closeIndex;else if(o.unpairedTagsSet.has(w))m=_.closeIndex;else{let Y=this.readStopNodeData(r,S,O+1);if(!Y)throw new Error(`Unexpected end of ${S}`);m=Y.i,re=Y.tagContent}let le=new lr(w);G&&(le[`:@`]=G),le.add(o.textNodeName,re),this.matcher.pop(),this.isCurrentNodeStopNode=!1,this.addChild(t,le,this.readonlyMatcher,te),o.captureMetaData&&t.addEndIndex(m+1)}else{if(V){({tagName:w,tagExp:M}=uc(o.transformTagName,w,M,o));let re=new lr(w);G&&(re[`:@`]=G),this.addChild(t,re,this.readonlyMatcher,te),o.captureMetaData&&t.addEndIndex(O+1),this.matcher.pop(),this.isCurrentNodeStopNode=!1}else if(o.unpairedTagsSet.has(w)){let re=new lr(w);G&&(re[`:@`]=G),this.addChild(t,re,this.readonlyMatcher,te),o.captureMetaData&&t.addEndIndex(_.closeIndex+1),this.matcher.pop(),this.isCurrentNodeStopNode=!1,m=_.closeIndex;continue}else{let re=new lr(w);if(this.tagsNodeStack.length>o.maxNestedTags)throw new Error(`Maximum nested tags exceeded`);this.tagsNodeStack.push(t),G&&(re[`:@`]=G),this.addChild(t,re,this.readonlyMatcher,te),t=re}i=``,m=O}}}else i+=r[m];return e.child};function xw(r,e,t,i){this.options.captureMetaData||(i=void 0);let o=this.options.jPath?t.toString():t,a=this.options.updateTag(e.tagname,o,e[`:@`]);a===!1||(typeof a==`string`&&(e.tagname=a),r.addChild(e,i))}function _w(r,e,t){let i=this.options.processEntities;if(!i||!i.enabled)return r;if(i.allowedTags){let o=this.options.jPath?t.toString():t;if(!(Array.isArray(i.allowedTags)?i.allowedTags.includes(e):i.allowedTags(e,o)))return r}if(i.tagFilter){let o=this.options.jPath?t.toString():t;if(!i.tagFilter(e,o))return r}return this.entityDecoder.decode(r)}function ww(r,e,t,i){return r&&(i===void 0&&(i=e.child.length===0),r=this.parseTextData(r,e.tagname,t,!1,e[`:@`]?Object.keys(e[`:@`]).length!==0:!1,i),r!==void 0&&r!==``&&e.add(this.options.textNodeName,r),r=``),r}function Ew(){return this.stopNodeExpressionsSet.size===0?!1:this.matcher.matchesAny(this.stopNodeExpressionsSet)}function vw(r,e,t=`>`){let i=0,o=r.length,a=t.charCodeAt(0),d=t.length>1?t.charCodeAt(1):-1,m=``,b=e;for(let y=e;y<o;y++){let _=r.charCodeAt(y);if(i)_===i&&(i=0);else if(_===34||_===39)i=_;else if(_===a)if(d!==-1){if(r.charCodeAt(y+1)===d)return m+=r.substring(b,y),{data:m,index:y}}else return m+=r.substring(b,y),{data:m,index:y};else _===9&&!i&&(m+=r.substring(b,y)+` `,b=y+1)}}function Ni(r,e,t,i){let o=r.indexOf(e,t);if(o===-1)throw new Error(i);return o+e.length-1}function Sw(r,e,t,i){let o=r.indexOf(e,t);if(o===-1)throw new Error(i);return o}function fc(r,e,t,i=`>`){let o=vw(r,e+1,i);if(!o)return;let a=o.data,d=o.index,m=a.search(/\s/),b=a,y=!0;m!==-1&&(b=a.substring(0,m),a=a.substring(m+1).trimStart());let _=b;if(t){let w=b.indexOf(`:`);w!==-1&&(b=b.substr(w+1),y=b!==o.data.substr(w+1))}return{tagName:b,tagExp:a,closeIndex:d,attrExpPresent:y,rawTagName:_}}function Cw(r,e,t){let i=t,o=1,a=r.length;for(;t<a;t++)if(r[t]===`<`){let d=r.charCodeAt(t+1);if(d===47){let m=Sw(r,`>`,t,`${e} is not closed`);if(r.substring(t+2,m).trim()===e&&(o--,o===0))return{tagContent:r.substring(i,t),i:m};t=m}else if(d===63)t=Ni(r,`?>`,t+1,`StopNode is not closed.`);else if(d===33&&r.charCodeAt(t+2)===45&&r.charCodeAt(t+3)===45)t=Ni(r,`-->`,t+3,`StopNode is not closed.`);else if(d===33&&r.charCodeAt(t+2)===91)t=Ni(r,`]]>`,t,`StopNode is not closed.`)-2;else{let m=fc(r,t,!1);m&&((m&&m.tagName)===e&&m.tagExp[m.tagExp.length-1]!==`/`&&o++,t=m.closeIndex)}}}function hc(r,e,t){if(e&&typeof r==`string`){let i=r.trim();return i===`true`?!0:i===`false`?!1:rc(r,t)}else return rp(r)?r:``}function uc(r,e,t,i){if(r){let o=r(e);t===e&&(t=o),e=o}return e=xp(e,i),{tagName:e,tagExp:t}}function xp(r,e){if(oA.includes(r))throw new Error(`[SECURITY] Invalid name: "${r}" is a reserved JavaScript keyword that could cause prototype pollution`);return Oo.includes(r)?e.onDangerousProperty(r):r}var dc=lr.getMetaDataSymbol();function Iw(r,e){if(!r||typeof r!=`object`)return{};if(!e)return r;let t={};for(let i in r)if(i.startsWith(e)){let o=i.substring(e.length);t[o]=r[i]}else t[i]=r[i];return t}function pc(r,e,t,i){return _p(r,e,t,i)}function _p(r,e,t,i){let o,a={};for(let d=0;d<r.length;d++){let m=r[d],b=Mw(m);if(b!==void 0&&b!==e.textNodeName){let y=Iw(m[`:@`]||{},e.attributeNamePrefix);t.push(b,y)}if(b===e.textNodeName)o===void 0?o=m[b]:o+=``+m[b];else{if(b===void 0)continue;if(m[b]){let y=_p(m[b],e,t,i),_=Rw(y,e);if(Object.keys(y).length===0&&e.alwaysCreateTextNode&&(y[e.textNodeName]=``),m[`:@`]?Lw(y,m[`:@`],i,e):Object.keys(y).length===1&&y[e.textNodeName]!==void 0&&!e.alwaysCreateTextNode?y=y[e.textNodeName]:Object.keys(y).length===0&&(e.alwaysCreateTextNode?y[e.textNodeName]=``:y=``),m[dc]!==void 0&&typeof y==`object`&&y!==null&&(y[dc]=m[dc]),a[b]!==void 0&&Object.prototype.hasOwnProperty.call(a,b))Array.isArray(a[b])||(a[b]=[a[b]]),a[b].push(y);else{let w=e.jPath?i.toString():i;e.isArray(b,w,_)?a[b]=[y]:a[b]=y}b!==void 0&&b!==e.textNodeName&&t.pop()}}}return typeof o==`string`?o.length>0&&(a[e.textNodeName]=o):o!==void 0&&(a[e.textNodeName]=o),a}function Mw(r){let e=Object.keys(r);for(let t=0;t<e.length;t++){let i=e[t];if(i!==`:@`)return i}}function Lw(r,e,t,i){if(e){let o=Object.keys(e),a=o.length;for(let d=0;d<a;d++){let m=o[d],b=m.startsWith(i.attributeNamePrefix)?m.substring(i.attributeNamePrefix.length):m,y=i.jPath?t.toString()+`.`+b:t;i.isArray(m,y,!0,!0)?r[m]=[e[m]]:r[m]=e[m]}}}function Rw(r,e){let{textNodeName:t}=e,i=Object.keys(r).length;return!!(i===0||i===1&&(r[t]||typeof r[t]==`boolean`||r[t]===0))}var qo=class{constructor(e){this.externalEntities={},this.options=lp(e)}parse(e,t){if(typeof e!=`string`&&e.toString)e=e.toString();else if(typeof e!=`string`)throw new Error(`XML data is accepted in String or Bytes[] form.`);if(t){t===!0&&(t={});let a=sp(e,t);if(a!==!0)throw Error(`${a.err.msg}:${a.err.line}:${a.err.col}`)}let i=new fA(this.options,this.externalEntities),o=i.parseXml(e);return this.options.preserveOrder||o===void 0?o:pc(o,this.options,i.matcher,i.readonlyMatcher)}addEntity(e,t){if(t.indexOf(`&`)!==-1)throw new Error(`Entity value can't have '&'`);if(e.indexOf(`&`)!==-1||e.indexOf(`;`)!==-1)throw new Error(`An entity must be set without '&' and ';'. Eg. use '#xD' for '
'`);if(t===`&`)throw new Error(`An entity with value '&' is not permitted`);this.externalEntities[e]=t}static getMetaDataSymbol(){return lr.getMetaDataSymbol()}};function mc(r$5,e){if(e?._parser&&e._parser!==`fast-xml-parser`)throw new Error(e?._parser);let i=Pw(r$5,r({allowBooleanAttributes:!0,ignoreDeclaration:!0,removeNSPrefix:e?.removeNSPrefix,textNodeName:e?.textNodeName,isArray:(o,a,d,m)=>!!e?.arrayPaths?.some(y=>a===y)},e?._fastXML));return e?.uncapitalizeKeys?iA(i):i}function Pw(r$6,e){return new qo(r({ignoreAttributes:!1,attributeNamePrefix:``},e)).parse(r$6)}var Fr={dataType:null,batchType:null,name:`XML`,id:`xml`,module:`xml`,version:`4.5.1`,worker:!1,extensions:[`xml`],mimeTypes:[`application/xml`,`text/xml`],testText:Fw,options:{xml:{_parser:`fast-xml-parser`,uncapitalizeKeys:!1,removeNSPrefix:!1,textNodeName:`value`,arrayPaths:[]}},parse:async(r$7,e)=>mc(new TextDecoder().decode(r$7),r(r({},Fr.options.xml),e?.xml)),parseTextSync:(r$8,e)=>mc(r$8,r(r({},Fr.options.xml),e?.xml))};function Fw(r){return r.startsWith(`<?xml`)}function wp(r,e){let t=Fr.parseTextSync?.(r,e),i=t?.ServiceExceptionReport?.ServiceException||t?.[`ogc:ServiceExceptionReport`]?.[`ogc:ServiceException`];return typeof i==`string`?i:i.value||i.code||`Unknown error`}var Wo={dataType:null,batchType:null,id:`wms-error`,name:`WMS Error`,module:`wms`,version:`4.5.1`,worker:!1,extensions:[`xml`],mimeTypes:[`application/vnd.ogc.se_xml`,`application/xml`,`text/xml`],testText:Ow,options:{wms:{throwOnError:!1}},parse:async(r,e)=>gc(new TextDecoder().decode(r),e),parseSync:(r,e)=>gc(new TextDecoder().decode(r),e),parseTextSync:(r,e)=>gc(r,e)};function Ow(r){return r.startsWith(`<?xml`)}function gc(r$9,e){let t=r(r({},Wo.options.wms),e?.wms),i=wp(r$9,t),o=t.minimalErrors?i:`WMS Service error: ${i}`;if(t.throwOnError)throw new Error(o);return o}function Xn(r){return Array.isArray(r)?r:r?[r]:[]}function Qo(r){let e=Xn(r);return e.length>0&&e.every(t=>typeof t==`string`)?e:[]}function Ko(r,e=void 0){switch(typeof r){case`number`:return r;case`string`:return parseFloat(r);default:return}}function hA(r,e=void 0){switch(typeof r){case`number`:return r;case`string`:return parseInt(r,10);default:return}}function Yn(r){switch(r){case`true`:return!0;case`false`:return!1;case`1`:return!0;case`0`:return!1;default:return!1}}function bc(r,e){let t=Fr.parseTextSync?.(r,e),i=t.WMT_MS_Capabilities||t.WMS_Capabilities||t,o=Dw(i);if(e?.inheritedLayerProps)for(let a of o.layers)vp(a,null);return e?.includeRawJSON&&(o.json=i),e?.includeXMLText&&(o.xml=r),o}function Dw(r){let e={version:String(r.version||``),name:String(r.Service?.Name||`unnamed`),title:r.Service?.Title?String(r.Service?.Title):void 0,abstract:r.Service?.Abstract?String(r.Service?.Abstract):void 0,keywords:Qo(r.Service?.KeywordList?.Keyword),fees:r.Service?.Fees?JSON.stringify(r.Service?.Fees):void 0,accessConstraints:r.Service?.AccessConstraints?JSON.stringify(r.Service?.AccessConstraints):void 0,layerLimit:hA(r.Service?.LayerLimit),maxWidth:hA(r.Service?.maxWidth),maxHeight:hA(r.Service?.maxHeight),layers:[],requests:Bw(r.Capability?.Request),exceptions:Uw(r.Exception)},t=Xn(r.Capability?.Layer);for(let i of t)e.layers.push(Ep(i));for(let[i,o]of Object.entries(e))o===void 0&&delete e[i];return e}function Bw(r){let e={};for(let[t,i]of Object.entries(r||{}))e[t]={mimeTypes:Qo(i?.Format)};return e}function Uw(r){if(Xn(r?.Format).length>0)return{mimeTypes:Qo(r)}}function Ep(r){let e={title:String(r?.Title||``),name:r?.Name&&String(r?.Name),abstract:r?.Name&&String(r?.Abstract),keywords:Qo(r.KeywordList?.Keyword)},t=r?.CRS||r?.SRS;t&&Array.isArray(t)&&t.every(y=>typeof y==`string`)&&(e.crs=t);let i=r?.EX_GeographicBoundingBox&&Gw(r?.EX_GeographicBoundingBox);i&&(e.geographicBoundingBox=i),i=r?.LatLonBoundingBox&&jw(r?.LatLonBoundingBox),i&&(e.geographicBoundingBox=i);let o=r?.BoundingBox&&Vw(r?.BoundingBox);o&&o.length>0&&(e.boundingBoxes=o);let d=Xn(r?.Dimension).map(y=>Hw(y));d.length&&(e.dimensions=d),r?.opaque&&(e.opaque=Yn(r?.opaque)),r?.cascaded&&(e.cascaded=Yn(r?.cascaded)),r?.queryable&&(e.queryable=Yn(r?.queryable));let m=Xn(r?.Layer),b=[];for(let y of m)b.push(Ep(y));b.length>0&&(e.layers=b);for(let[y,_]of Object.entries(e))_===void 0&&delete e[y];return e}function Gw(r){let{westBoundLongitude:e,northBoundLatitude:t,eastBoundLongitude:i,southBoundLatitude:o}=r;return[[e,o],[i,t]]}function jw(r){let{minx:e,miny:t,maxx:i,maxy:o}=r;return[[e,t],[i,o]]}function Vw(r){return Xn(r).map(t=>zw(t))}function zw(r){let{CRS:e,SRS:t,minx:i,miny:o,maxx:a,maxy:d,resx:m,resy:b}=r,y={crs:e||t,boundingBox:[[Ko(i),Ko(o)],[Ko(a),Ko(d)]]};return m&&(y.xResolution=m),b&&(y.yResolution=b),y}function Hw(r){let{name:e,units:t,value:i}=r,o={name:e,units:t,extent:i};return r.unitSymbol&&(o.unitSymbol=r.unitSymbol),r.default&&(o.defaultValue=r.default),r.multipleValues&&(o.multipleValues=Yn(r.multipleValues)),r.nearestValue&&(o.nearestValue=Yn(r.nearestValue)),r.current&&(o.current=Yn(r.current)),o}function vp(r,e){e?.geographicBoundingBox&&!r.geographicBoundingBox&&(r.geographicBoundingBox=[...e.geographicBoundingBox]),e?.crs&&!r.crs&&(r.crs=[...e.crs]),e?.boundingBoxes&&!r.boundingBoxes&&(r.boundingBoxes=[...e.boundingBoxes]),e?.dimensions&&!r.dimensions&&(r.dimensions=[...e.dimensions]);for(let t of r.layers||[])vp(t,r)}var Fi={dataType:null,batchType:null,id:`wms-capabilities`,name:`WMS Capabilities`,module:`wms`,version:`4.5.1`,worker:!1,extensions:[`xml`],mimeTypes:[`application/vnd.ogc.wms_xml`,`application/xml`,`text/xml`],testText:Ww,options:{wms:{}},parse:async(r,e)=>bc(new TextDecoder().decode(r),e?.wms),parseTextSync:(r,e)=>bc(r,e?.wms)};function Ww(r){return r.startsWith(`<?xml`)}function Tc(r,e){let i=(Fr.parseTextSync?.(r,e)).FeatureInfoResponse?.FIELDS||[];return{features:(Array.isArray(i)?i:[i]).map(a=>Qw(a))}}function Qw(r){return{attributes:r||{},type:``,bounds:{bottom:0,top:0,left:0,right:0}}}var Sp=s(r({},Fi),{dataType:null,id:`wms-feature-info`,name:`WMS FeatureInfo`,parse:async(r,e)=>Tc(new TextDecoder().decode(r),e),parseTextSync:(r,e)=>Tc(r,e)});function yc(r,e){return Fr.parseTextSync?.(r,e)}var Cp=s(r({},Fi),{dataType:null,id:`wms-layer-description`,name:`WMS DescribeLayer`,parse:async(r,e)=>yc(new TextDecoder().decode(r),e),parseTextSync:(r,e)=>yc(r,e)});var pA={name:`Web Map Service (OGC WMS)`,id:`wms`,module:`wms`,version:`0.0.0`,extensions:[],mimeTypes:[],type:`wms`,fromUrl:!0,fromBlob:!1,defaultOptions:{wms:{}},testURL:r=>r.toLowerCase().includes(`wms`),createDataSource:(r,e)=>new dA(r,e)};var dA=class extends cf{substituteCRS84;flipCRS;wmsParameters;vendorParameters;capabilities=null;constructor(e,t){super(e,t,pA.defaultOptions),this.substituteCRS84=t.wms?.substituteCRS84??!1,this.flipCRS=[`EPSG:4326`],this.wmsParameters=r(r({layers:void 0,query_layers:void 0,styles:void 0,version:`1.3.0`,crs:`EPSG:4326`,format:`image/png`,info_format:`text/plain`,transparent:void 0,time:void 0,elevation:void 0},t.wmsParameters),t.wms?.wmsParameters),this.vendorParameters=t.wms?.vendorParameters||t.vendorParameters||{}}async getMetadata(){let e=await this.getCapabilities();return this.normalizeMetadata(e)}async getImage(e){let d=e,{boundingBox:t,bbox:i}=d,o=u(d,[`boundingBox`,`bbox`]),a=r({bbox:t?[...t[0],...t[1]]:i},o);return await this.getMap(a)}normalizeMetadata(e){return e}async getCapabilities(e,t){let i=this.getCapabilitiesURL(e,t),o=await this.fetch(i),a=await o.arrayBuffer();this._checkResponse(o,a);let d=await Fi.parse(a,this.loadOptions);return this.capabilities=d,d}async getMap(e,t){let i=this.getMapURL(e,t),o=await this.fetch(i),a=await o.arrayBuffer();this._checkResponse(o,a);try{return await Os.parse(a,this.loadOptions)}catch{throw this._parseError(a)}}async getFeatureInfo(e,t){let i=this.getFeatureInfoURL(e,t),o=await this.fetch(i),a=await o.arrayBuffer();return this._checkResponse(o,a),await Sp.parse(a,this.loadOptions)}async getFeatureInfoText(e,t){let i=this.getFeatureInfoURL(e,t),o=await this.fetch(i),a=await o.arrayBuffer();return this._checkResponse(o,a),new TextDecoder().decode(a)}async describeLayer(e,t){let i=this.describeLayerURL(e,t),o=await this.fetch(i),a=await o.arrayBuffer();return this._checkResponse(o,a),await Cp.parse(a,this.loadOptions)}async getLegendGraphic(e,t){let i=this.getLegendGraphicURL(e,t),o=await this.fetch(i),a=await o.arrayBuffer();this._checkResponse(o,a);try{return await Os.parse(a,this.loadOptions)}catch{throw this._parseError(a)}}getCapabilitiesURL(e,t){let i=r({version:this.wmsParameters.version},e);return this._getWMSUrl(`GetCapabilities`,i,t)}getMapURL(e,t){e=this._getWMS130Parameters(e);let i=r({version:this.wmsParameters.version,format:this.wmsParameters.format,transparent:this.wmsParameters.transparent,time:this.wmsParameters.time,elevation:this.wmsParameters.elevation,layers:this.wmsParameters.layers,styles:this.wmsParameters.styles,crs:this.wmsParameters.crs},e);return this._getWMSUrl(`GetMap`,i,t)}getFeatureInfoURL(e,t){e=this._getWMS130Parameters(e);let{boundingBox:i,bbox:o}=e;e.bbox=i?[...i[0],...i[1]]:o;let a=r({version:this.wmsParameters.version,info_format:this.wmsParameters.info_format,layers:this.wmsParameters.layers,query_layers:this.wmsParameters.query_layers,styles:this.wmsParameters.styles,crs:this.wmsParameters.crs},e);return this._getWMSUrl(`GetFeatureInfo`,a,t)}describeLayerURL(e,t){let i=r({version:this.wmsParameters.version},e);return this._getWMSUrl(`DescribeLayer`,i,t)}getLegendGraphicURL(e,t){let i=r({version:this.wmsParameters.version},e);return this._getWMSUrl(`GetLegendGraphic`,i,t)}_parseWMSUrl(e){let[t,i]=e.split(`?`),o=i.split(`&`),a={};for(let d of o){let[m,b]=d.split(`=`);a[m]=b}return{url:t,parameters:a}}_getWMSUrl(e,t,i){let o=this.url,a=!0,d=r(r(r({service:`WMS`,version:t.version,request:e},t),this.vendorParameters),i),m=[`transparent`,`time`,`elevation`];for(let[b,y]of Object.entries(d))(!m.includes(b)||y)&&(o+=a?`?`:`&`,a=!1,o+=this._getURLParameter(b,y,t));return encodeURI(o)}_getWMS130Parameters(e){let t=r({},e);return t.srs&&(t.crs=t.crs||t.srs,delete t.srs),t}_getURLParameter(e,t,i){switch(e){case`crs`:i.version!==`1.3.0`?e=`srs`:this.substituteCRS84&&t===`EPSG:4326`&&(t=`CRS:84`);break;case`srs`:i.version===`1.3.0`&&(e=`crs`);break;case`bbox`:let o=this._flipBoundingBox(t,i);o&&(t=o);break;case`x`:i.version===`1.3.0`&&(e=`i`);break;case`y`:i.version===`1.3.0`&&(e=`j`);break;default:}return e=e.toUpperCase(),Array.isArray(t)?`${e}=${t.join(`,`)}`:`${e}=${t?String(t):``}`}_flipBoundingBox(e,t){if(!Array.isArray(e)||e.length!==4)return null;let i=t.version===`1.3.0`&&this.flipCRS.includes(t.crs||``)&&!(this.substituteCRS84&&t.crs===`EPSG:4326`),o=e;return i?[o[1],o[0],o[3],o[2]]:o}async _fetchArrayBuffer(e){let t=await this.fetch(e),i=await t.arrayBuffer();return this._checkResponse(t,i),i}_checkResponse(e,t){let i=e.headers[`content-type`];if(!e.ok||Wo.mimeTypes.includes(i)){let o=qi$1(this.loadOptions,{wms:{throwOnError:!0}}),a=Wo.parseSync?.(t,o);throw new Error(a)}}_parseError(e){let t=Wo.parseSync?.(e,this.options.core?.loadOptions);return new Error(t)}};var Ip=6378137*Math.PI;function xc(r){let e=st(r);return e[0]=(e[0]/256-1)*Ip,e[1]=(e[1]/256-1)*Ip,e}var Kw={id:`imagery-layer`,data:``,serviceType:`auto`,srs:`auto`,layers:{type:`array`,compare:!0,value:[]},onMetadataLoad:{type:`function`,value:()=>{}},onMetadataLoadError:{type:`function`,value:console.error},onImageLoadStart:{type:`function`,value:()=>{}},onImageLoad:{type:`function`,value:()=>{}},onImageLoadError:{type:`function`,compare:!1,value:(r,e)=>console.error(e,r)}};var Xw=(()=>{class r$10 extends Dm$1{get isLoaded(){return this.state?.loadCounter===0&&super.isLoaded}shouldUpdateState(){return!0}initializeState(){this.state._nextRequestId=0,this.state.lastRequestId=-1,this.state.loadCounter=0}updateState({changeFlags:t,props:i,oldProps:o}){let{viewport:a}=this.context;t.dataChanged||i.serviceType!==o.serviceType?(this.state.imageSource=this._createImageSource(i),this._loadMetadata(),this.debounce(()=>this.loadImage(a,`image source changed`),0)):B(i.layers,o.layers,1)?t.viewportChanged&&this.debounce(()=>this.loadImage(a,`viewport changed`)):this.debounce(()=>this.loadImage(a,`layers changed`),0)}finalizeState(){}renderLayers(){let{bounds:t,image:i,lastRequestParameters:o}=this.state;return i&&new fn(s(r({},this.getSubLayerProps({id:`bitmap`})),{_imageCoordinateSystem:o.srs===`EPSG:4326`?ns$1.LNGLAT:ns$1.CARTESIAN,bounds:t,image:i}))}async getFeatureInfoText(t,i){let{lastRequestParameters:o}=this.state;return o?await this.state.imageSource.getFeatureInfoText?.(s(r({},o),{query_layers:o.layers,x:t,y:i,info_format:`application/vnd.ogc.gml`})):``}_createImageSource(t){if(t.data instanceof $i$1)return t.data;if(typeof t.data==`string`)return Iu$1(t.data,[pA],{core:{type:t.serviceType,loadOptions:t.loadOptions}});throw new Error(`invalid image source in props.data`)}async _loadMetadata(){let{imageSource:t}=this.state;try{this.state.loadCounter++;let i=await t.getMetadata();this.state.imageSource===t&&this.getCurrentLayer()?.props.onMetadataLoad(i)}catch(i){this.getCurrentLayer()?.props.onMetadataLoadError(i)}finally{this.state.loadCounter--}}async loadImage(t,i){let{layers:o,serviceType:a}=this.props;if(a===`wms`&&o.length===0)return;let d=t.getBounds(),{width:m,height:b}=t,y=this.getRequestId(),{srs:_}=this.props;_===`auto`&&(_=t.resolution?`EPSG:4326`:`EPSG:3857`);let w={width:m,height:b,boundingBox:[[d[0],d[1]],[d[2],d[3]]],layers:o,crs:_};if(_===`EPSG:3857`)w.boundingBox=[xc([d[0],d[1]]),xc([d[2],d[3]])];try{this.state.loadCounter++,this.props.onImageLoadStart(y);let S=await this.state.imageSource.getImage(w);this.state.lastRequestId<y&&(this.getCurrentLayer()?.props.onImageLoad(y),this.setState({image:S,bounds:d,lastRequestParameters:w,lastRequestId:y}))}catch(S){this.raiseError(S,`Load image`),this.getCurrentLayer()?.props.onImageLoadError(y,S)}finally{this.state.loadCounter--}}getRequestId(){return this.state._nextRequestId++}debounce(t,i=500){clearTimeout(this.state._timeoutId),this.state._timeoutId=setTimeout(()=>t(),i)}}return r$10.layerName=`WMSLayer`,r$10.defaultProps=Kw,r$10})();var Yw={getHeight:{type:`accessor`,value:0},greatCircle:!0};var Zw=(()=>{class r extends en$1{}return r.layerName=`GreatCircleLayer`,r.defaultProps=Yw,r})();var mA=x(_c(),1);var $w=3;var tE=61;var Lp=180/Math.PI;function Pp(r,e,t){let i=1<<e;return[(r[0]+t[0])/i,(r[1]+t[1])/i]}function Rp(r){return r>=.5?1/3*(4*r*r-1):1/3*(1-4*(1-r)*(1-r))}function Np(r){return[Rp(r[0]),Rp(r[1])]}function Fp(r,[e,t]){switch(r){case 0:return[1,e,t];case 1:return[-e,1,t];case 2:return[-e,-t,1];case 3:return[-1,-t,-e];case 4:return[t,-1,-e];case 5:return[t,e,-1];default:throw new Error(`Invalid face`)}}function kp([r,e,t]){let i=Math.atan2(t,Math.sqrt(r*r+e*e));return[Math.atan2(e,r)*Lp,i*Lp]}function Op(r){let e=mA.default.fromString(r,!0,10).toString(2);for(;e.length<$w+tE;)e=`0`+e;let t=e.lastIndexOf(`1`),i=e.substring(0,3),o=e.substring(3,t),a=o.length/2,d=mA.default.fromString(i,!0,2).toString(10),m=mA.default.fromString(o,!0,2).toString(4);for(;m.length<a;)m=`0`+m;return`${d}/${m}`}function rE(r,e,t,i){if(i===0){t===1&&(e[0]=r-1-e[0],e[1]=r-1-e[1]);let o=e[0];e[0]=e[1],e[1]=o}}function Dp(r){let e=r.split(`/`),t=parseInt(e[0],10),i=e[1],o=i.length,a=[0,0],d;for(let m=o-1;m>=0;m--){d=o-m;let b=i[m],y=0,_=0;b===`1`?_=1:b===`2`?(y=1,_=1):b===`3`&&(y=1);let w=Math.pow(2,d-1);rE(w,a,y,_),a[0]+=w*y,a[1]+=w*_}if(t%2===1){let m=a[0];a[0]=a[1],a[1]=m}return{face:t,ij:a,level:d}}var Bp=x(_c(),1);function nE(r){let e=r.padEnd(16,`0`);return Bp.default.fromString(e,16)}var iE=100;function oE({face:r,ij:e,level:t}){let i=[[0,0],[0,1],[1,1],[1,0],[0,0]],o=Math.max(1,Math.ceil(iE*Math.pow(2,-t))),a=new Float64Array(4*o*2+2),d=0,m=0;for(let b=0;b<4;b++){let y=i[b].slice(0),_=i[b+1],w=(_[0]-y[0])/o,S=(_[1]-y[1])/o;for(let M=0;M<o;M++){y[0]+=w,y[1]+=S;let V=kp(Fp(r,Np(Pp(e,t,y))));Math.abs(V[1])>89.999&&(V[0]=m);let G=V[0]-m;V[0]+=G>180?-360:G<-180?360:0,a[d++]=V[0],a[d++]=V[1],m=V[0]}}return a[d++]=a[0],a[d++]=a[1],a}function sE(r){if(typeof r==`string`){if(r.indexOf(`/`)>0)return r;r=nE(r)}return Op(r.toString())}function Up(r){return oE(Dp(sE(r)))}var AE={getS2Token:{type:`accessor`,value:r=>r.token}};var cE=(()=>{class r extends Pr{indexToBounds(){let{data:t,getS2Token:i}=this.props;return{data:t,_normalize:!1,positionFormat:`XY`,getPolygon:(o,a)=>Up(i(o,a))}}}return r.layerName=`S2Layer`,r.defaultProps=AE,r})();var wc=512;function lE(r,e){let t=0,i=0,o=1<<r.length,a=o/wc;for(let d=0;d<r.length;d++){o>>=1;let m=parseInt(r[d]);m%2&&(t|=o),m>1&&(i|=o)}return[[t/a,wc-i/a],[(t+e)/a,wc-(i+e)/a]]}function Gp(r,e=1){let[t,i]=lE(r,e),[o,a]=et(t),[d,m]=et(i);return[d,a,d,m,o,m,o,a,d,a]}var uE={getQuadkey:{type:`accessor`,value:r=>r.quadkey}};var hE=(()=>{class r extends Pr{indexToBounds(){let{data:t,extruded:i,getQuadkey:o}=this.props,a=i?.99:1;return{data:t,_normalize:!1,positionFormat:`XY`,getPolygon:(d,m)=>Gp(o(d,m),a),updateTriggers:{getPolygon:a}}}}return r.layerName=`QuadkeyLayer`,r.defaultProps=uE,r})();var ki=class{constructor(e){this.index=e,this.isVisible=!1,this.isSelected=!1,this.parent=null,this.children=[],this.content=null,this._loader=void 0,this._abortController=null,this._loaderId=0,this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1}get bbox(){return this._bbox}set bbox(e){this._bbox||(this._bbox=e,`west`in e?this.boundingBox=[[e.west,e.south],[e.east,e.north]]:this.boundingBox=[[e.left,e.top],[e.right,e.bottom]])}get data(){return this.isLoading&&this._loader?this._loader.then(()=>this.data):this.content}get isLoaded(){return this._isLoaded&&!this._needsReload}get isLoading(){return!!this._loader&&!this._isCancelled}get needsReload(){return this._needsReload||this._isCancelled}get byteLength(){let e=this.content?this.content.byteLength:0;return Number.isFinite(e)||console.error(`byteLength not defined in tile data`),e}async _loadData({getData:e,getRequestPriority:t,requestScheduler:i,onLoad:o,onError:a}){let{index:d,id:m,bbox:b,userData:y,zoom:_}=this,w=this._loaderId;this._abortController=new AbortController;let{signal:S}=this._abortController,M=await i.scheduleRequest(this,t);if(!M){this._isCancelled=!0;return}if(this._isCancelled){M.done();return}let k=null,O;try{k=await e({index:d,id:m,bbox:b,userData:y,zoom:_,signal:S})}catch(Q){O=Q||!0}finally{M.done()}if(w===this._loaderId){if(this._loader=void 0,this.content=k,this._isCancelled&&!k){this._isLoaded=!1;return}this._isLoaded=!0,this._isCancelled=!1,O?a(O,this):o(this)}}loadData(e){return this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1,this._loaderId++,this._loader=this._loadData(e),this._loader}setNeedsReload(){this.isLoading&&(this.abort(),this._loader=void 0),this._needsReload=!0}abort(){this.isLoaded||(this._isCancelled=!0,this._abortController?.abort())}};var bt={OUTSIDE:-1,INTERSECTING:0,INSIDE:1};var jp=new Z;var dE=new Z;var Oi=class r{constructor(e=[0,0,0],t=[0,0,0],i){i=i||jp.copy(e).add(t).scale(.5),this.center=new Z(i),this.halfDiagonal=new Z(t).subtract(this.center),this.minimum=new Z(e),this.maximum=new Z(t)}clone(){return new r(this.minimum,this.maximum,this.center)}equals(e){return this===e||!!e&&this.minimum.equals(e.minimum)&&this.maximum.equals(e.maximum)}transform(e){return this.center.transformAsPoint(e),this.halfDiagonal.transform(e),this.minimum.transform(e),this.maximum.transform(e),this}intersectPlane(e){let{halfDiagonal:t}=this,i=dE.from(e.normal),o=t.x*Math.abs(i.x)+t.y*Math.abs(i.y)+t.z*Math.abs(i.z),a=this.center.dot(i)+e.distance;return a-o>0?bt.INSIDE:a+o<0?bt.OUTSIDE:bt.INTERSECTING}distanceTo(e){return Math.sqrt(this.distanceSquaredTo(e))}distanceSquaredTo(e){let t=jp.from(e).subtract(this.center),{halfDiagonal:i}=this,o=0,a;return a=Math.abs(t.x)-i.x,a>0&&(o+=a*a),a=Math.abs(t.y)-i.y,a>0&&(o+=a*a),a=Math.abs(t.z)-i.z,a>0&&(o+=a*a),o}};var Yo=new Z;var Vp=new Z;var Wr=class r{constructor(e=[0,0,0],t=0){this.radius=-0,this.center=new Z,this.fromCenterRadius(e,t)}fromCenterRadius(e,t){return this.center.from(e),this.radius=t,this}fromCornerPoints(e,t){return t=Yo.from(t),this.center=new Z().from(e).add(t).scale(.5),this.radius=this.center.distance(t),this}equals(e){return this===e||!!e&&this.center.equals(e.center)&&this.radius===e.radius}clone(){return new r(this.center,this.radius)}union(e){let t=this.center,i=this.radius,o=e.center,a=e.radius,d=Yo.copy(o).subtract(t),m=d.magnitude();if(i>=m+a)return this.clone();if(a>=m+i)return e.clone();let b=(i+m+a)*.5;return Vp.copy(d).scale((-i+b)/m).add(t),this.center.copy(Vp),this.radius=b,this}expand(e){let i=Yo.from(e).subtract(this.center).magnitude();return i>this.radius&&(this.radius=i),this}transform(e){this.center.transform(e);let t=zi$1.getScaling(Yo,e);return this.radius=Math.max(t[0],Math.max(t[1],t[2]))*this.radius,this}distanceSquaredTo(e){let t=this.distanceTo(e);return t*t}distanceTo(e){let i=Yo.from(e).subtract(this.center);return Math.max(0,i.len()-this.radius)}intersectPlane(e){let t=this.center,i=this.radius,a=e.normal.dot(t)+e.distance;return a<-i?bt.OUTSIDE:a<i?bt.INTERSECTING:bt.INSIDE}};var pE=new Z;var mE=new Z;var gA=new Z;var bA=new Z;var TA=new Z;var gE=new Z;var bE=new Z;var nn={COLUMN0ROW0:0,COLUMN0ROW1:1,COLUMN0ROW2:2,COLUMN1ROW0:3,COLUMN1ROW1:4,COLUMN1ROW2:5,COLUMN2ROW0:6,COLUMN2ROW1:7,COLUMN2ROW2:8};var on=class r{constructor(e=[0,0,0],t=[0,0,0,0,0,0,0,0,0]){this.center=new Z().from(e),this.halfAxes=new tt(t)}get halfSize(){let e=this.halfAxes.getColumn(0),t=this.halfAxes.getColumn(1),i=this.halfAxes.getColumn(2);return[new Z(e).len(),new Z(t).len(),new Z(i).len()]}get quaternion(){let e=this.halfAxes.getColumn(0),t=this.halfAxes.getColumn(1),i=this.halfAxes.getColumn(2),o=new Z(e).normalize(),a=new Z(t).normalize(),d=new Z(i).normalize();return new hr$1().fromMatrix3(new tt([...o,...a,...d]))}fromCenterHalfSizeQuaternion(e,t,i){let o=new hr$1(i),a=new tt().fromQuaternion(o);return a[0]=a[0]*t[0],a[1]=a[1]*t[0],a[2]=a[2]*t[0],a[3]=a[3]*t[1],a[4]=a[4]*t[1],a[5]=a[5]*t[1],a[6]=a[6]*t[2],a[7]=a[7]*t[2],a[8]=a[8]*t[2],this.center=new Z().from(e),this.halfAxes=a,this}clone(){return new r(this.center,this.halfAxes)}equals(e){return this===e||!!e&&this.center.equals(e.center)&&this.halfAxes.equals(e.halfAxes)}getBoundingSphere(e=new Wr){let t=this.halfAxes,i=t.getColumn(0,gA),o=t.getColumn(1,bA),a=t.getColumn(2,TA),d=pE.copy(i).add(o).add(a);return e.center.copy(this.center),e.radius=d.magnitude(),e}intersectPlane(e){let t=this.center,i=e.normal,o=this.halfAxes,a=i.x,d=i.y,m=i.z,b=Math.abs(a*o[nn.COLUMN0ROW0]+d*o[nn.COLUMN0ROW1]+m*o[nn.COLUMN0ROW2])+Math.abs(a*o[nn.COLUMN1ROW0]+d*o[nn.COLUMN1ROW1]+m*o[nn.COLUMN1ROW2])+Math.abs(a*o[nn.COLUMN2ROW0]+d*o[nn.COLUMN2ROW1]+m*o[nn.COLUMN2ROW2]),y=i.dot(t)+e.distance;return y<=-b?bt.OUTSIDE:y>=b?bt.INSIDE:bt.INTERSECTING}distanceTo(e){return Math.sqrt(this.distanceSquaredTo(e))}distanceSquaredTo(e){let t=mE.from(e).subtract(this.center),i=this.halfAxes,o=i.getColumn(0,gA),a=i.getColumn(1,bA),d=i.getColumn(2,TA),m=o.magnitude(),b=a.magnitude(),y=d.magnitude();o.normalize(),a.normalize(),d.normalize();let _=0,w;return w=Math.abs(t.dot(o))-m,w>0&&(_+=w*w),w=Math.abs(t.dot(a))-b,w>0&&(_+=w*w),w=Math.abs(t.dot(d))-y,w>0&&(_+=w*w),_}computePlaneDistances(e,t,i=[-0,-0]){let o=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY,d=this.center,m=this.halfAxes,b=m.getColumn(0,gA),y=m.getColumn(1,bA),_=m.getColumn(2,TA),w=gE.copy(b).add(y).add(_).add(d),S=bE.copy(w).subtract(e),M=t.dot(S);return o=Math.min(M,o),a=Math.max(M,a),w.copy(d).add(b).add(y).subtract(_),S.copy(w).subtract(e),M=t.dot(S),o=Math.min(M,o),a=Math.max(M,a),w.copy(d).add(b).subtract(y).add(_),S.copy(w).subtract(e),M=t.dot(S),o=Math.min(M,o),a=Math.max(M,a),w.copy(d).add(b).subtract(y).subtract(_),S.copy(w).subtract(e),M=t.dot(S),o=Math.min(M,o),a=Math.max(M,a),d.copy(w).subtract(b).add(y).add(_),S.copy(w).subtract(e),M=t.dot(S),o=Math.min(M,o),a=Math.max(M,a),d.copy(w).subtract(b).add(y).subtract(_),S.copy(w).subtract(e),M=t.dot(S),o=Math.min(M,o),a=Math.max(M,a),d.copy(w).subtract(b).subtract(y).add(_),S.copy(w).subtract(e),M=t.dot(S),o=Math.min(M,o),a=Math.max(M,a),d.copy(w).subtract(b).subtract(y).subtract(_),S.copy(w).subtract(e),M=t.dot(S),o=Math.min(M,o),a=Math.max(M,a),i[0]=o,i[1]=a,i}transform(e){this.center.transformAsPoint(e);let t=this.halfAxes.getColumn(0,gA);t.transformAsPoint(e);let i=this.halfAxes.getColumn(1,bA);i.transformAsPoint(e);let o=this.halfAxes.getColumn(2,TA);return o.transformAsPoint(e),this.halfAxes=new tt([...t,...i,...o]),this}getTransform(){throw new Error(`not implemented`)}};var zp=new Z;var Hp=new Z;var Ut=class r{constructor(e=[0,0,1],t=0){this.normal=new Z,this.distance=-0,this.fromNormalDistance(e,t)}fromNormalDistance(e,t){return Nt$1(Number.isFinite(t)),this.normal.from(e).normalize(),this.distance=t,this}fromPointNormal(e,t){e=zp.from(e),this.normal.from(t).normalize();let i=-this.normal.dot(e);return this.distance=i,this}fromCoefficients(e,t,i,o){return this.normal.set(e,t,i),Nt$1(Mt(this.normal.len(),1)),this.distance=o,this}clone(){return new r(this.normal,this.distance)}equals(e){return Mt(this.distance,e.distance)&&Mt(this.normal,e.normal)}getPointDistance(e){return this.normal.dot(e)+this.distance}transform(e){let t=Hp.copy(this.normal).transformAsVector(e).normalize(),i=this.normal.scale(-this.distance).transform(e);return this.fromPointNormal(i,t)}projectPointOntoPlane(e,t=[0,0,0]){let i=zp.from(e),o=this.getPointDistance(i),a=Hp.copy(this.normal).scale(o);return i.subtract(a).to(t)}};var qp=[new Z([1,0,0]),new Z([0,1,0]),new Z([0,0,1])];var Wp=new Z;var TE=new Z;var Qr=(()=>{class r{constructor(t=[]){this.planes=t}fromBoundingSphere(t){this.planes.length=2*qp.length;let i=t.center,o=t.radius,a=0;for(let d of qp){let m=this.planes[a],b=this.planes[a+1];m||(m=this.planes[a]=new Ut),b||(b=this.planes[a+1]=new Ut);let y=Wp.copy(d).scale(-o).add(i);m.fromPointNormal(y,d);let _=Wp.copy(d).scale(o).add(i),w=TE.copy(d).negate();b.fromPointNormal(_,w),a+=2}return this}computeVisibility(t){let i=bt.INSIDE;for(let o of this.planes)switch(t.intersectPlane(o)){case bt.OUTSIDE:return bt.OUTSIDE;case bt.INTERSECTING:i=bt.INTERSECTING;break;default:}return i}computeVisibilityWithPlaneMask(t,i){if(Nt$1(Number.isFinite(i),`parentPlaneMask is required.`),i===r.MASK_OUTSIDE||i===r.MASK_INSIDE)return i;let o=r.MASK_INSIDE,a=this.planes;for(let d=0;d<this.planes.length;++d){let m=d<31?1<<d:0;if(d<31&&(i&m)===0)continue;let b=a[d],y=t.intersectPlane(b);if(y===bt.OUTSIDE)return r.MASK_OUTSIDE;y===bt.INTERSECTING&&(o|=m)}return o}}return r.MASK_OUTSIDE=4294967295,r.MASK_INSIDE=0,r.MASK_INDETERMINATE=2147483647,r})();new Z;new Z;new Z;new Z;new Z;new Z;new Z;new Z;new Z;new Z;new Z;new Z;new Z;new Z;new Z;new Z;new Z;var Kr=new tt;var xE=new tt;var _E=new tt;var yA=new tt;var Qp=new tt;function Sc(r,e={}){let t=Ho$1.EPSILON20,i=10,o=0,a=0,d=xE,m=_E;d.identity(),m.copy(r);let b=t*wE(m);for(;a<i&&EE(m)>b;)vE(m,yA),Qp.copy(yA).transpose(),m.multiplyRight(yA),m.multiplyLeft(Qp),d.multiplyRight(yA),++o>2&&(++a,o=0);return e.unitary=d.toTarget(e.unitary),e.diagonal=m.toTarget(e.diagonal),e}function wE(r){let e=0;for(let t=0;t<9;++t){let i=r[t];e+=i*i}return Math.sqrt(e)}var Ec=[1,0,0];var vc=[2,2,1];function EE(r){let e=0;for(let t=0;t<3;++t){let i=r[Kr.getElementIndex(vc[t],Ec[t])];e+=2*i*i}return Math.sqrt(e)}function vE(r,e){let t=Ho$1.EPSILON15,i=0,o=1;for(let y=0;y<3;++y){let _=Math.abs(r[Kr.getElementIndex(vc[y],Ec[y])]);_>i&&(o=y,i=_)}let a=Ec[o],d=vc[o],m=1,b=0;if(Math.abs(r[Kr.getElementIndex(d,a)])>t){let y=r[Kr.getElementIndex(d,d)],_=r[Kr.getElementIndex(a,a)],w=r[Kr.getElementIndex(d,a)],S=(y-_)/2/w,M;S<0?M=-1/(-S+Math.sqrt(1+S*S)):M=1/(S+Math.sqrt(1+S*S)),m=1/Math.sqrt(1+M*M),b=M*m}return tt.IDENTITY.to(e),e[Kr.getElementIndex(a,a)]=e[Kr.getElementIndex(d,d)]=m,e[Kr.getElementIndex(d,a)]=b,e[Kr.getElementIndex(a,d)]=-b,e}var En=new Z;var SE=new Z;var CE=new Z;var IE=new Z;var ME=new Z;var LE=new tt;var RE={diagonal:new tt,unitary:new tt};function Jo(r,e=new on){if(!r||r.length===0)return e.halfAxes=new tt([0,0,0,0,0,0,0,0,0]),e.center=new Z,e;let t=r.length,i=new Z(0,0,0);for(let z of r)i.add(z);let o=1/t;i.multiplyByScalar(o);let a=0,d=0,m=0,b=0,y=0,_=0;for(let z of r){let B=En.copy(z).subtract(i);a+=B.x*B.x,d+=B.x*B.y,m+=B.x*B.z,b+=B.y*B.y,y+=B.y*B.z,_+=B.z*B.z}a*=o,d*=o,m*=o,b*=o,y*=o,_*=o;let w=LE;w[0]=a,w[1]=d,w[2]=m,w[3]=d,w[4]=b,w[5]=y,w[6]=m,w[7]=y,w[8]=_;let{unitary:S}=Sc(w,RE),M=e.halfAxes.copy(S),k=M.getColumn(0,CE),O=M.getColumn(1,IE),Q=M.getColumn(2,ME),V=-Number.MAX_VALUE,G=-Number.MAX_VALUE,J=-Number.MAX_VALUE,$=Number.MAX_VALUE,te=Number.MAX_VALUE,re=Number.MAX_VALUE;for(let z of r)En.copy(z),V=Math.max(En.dot(k),V),G=Math.max(En.dot(O),G),J=Math.max(En.dot(Q),J),$=Math.min(En.dot(k),$),te=Math.min(En.dot(O),te),re=Math.min(En.dot(Q),re);k=k.multiplyByScalar(.5*($+V)),O=O.multiplyByScalar(.5*(te+G)),Q=Q.multiplyByScalar(.5*(re+J)),e.center.copy(k).add(O).add(Q);let le=SE.set(V-$,G-te,J-re).multiplyByScalar(.5),Y=new tt([le[0],0,0,0,le[1],0,0,0,le[2]]);return e.halfAxes.multiplyRight(Y),e}var Di=512;var Kp=3;var Xp=[[.5,.5],[0,0],[0,1],[1,0],[1,1]];var Yp=Xp.concat([[0,.5],[.5,0],[1,.5],[.5,1]]);var PE=Yp.concat([[.25,.5],[.75,.5]]);var Cc=class r{constructor(e,t,i){this.x=e,this.y=t,this.z=i}get children(){if(!this._children){let e=this.x*2,t=this.y*2,i=this.z+1;this._children=[new r(e,t,i),new r(e,t+1,i),new r(e+1,t,i),new r(e+1,t+1,i)]}return this._children}update(e){let{viewport:t,cullingVolume:i,elevationBounds:o,minZ:a,maxZ:d,bounds:m,offset:b,project:y}=e,_=this.getBoundingVolume(o,b,y);if(m&&!this.insideBounds(m)||i.computeVisibility(_)<0||y&&this.beyondHorizon(t.cameraPosition,y,o[1]))return!1;if(!this.childVisible){let{z:S}=this;if(S<d&&S>=a){let M=_.distanceTo(t.cameraPosition)*t.scale/t.height;S+=Math.floor(Math.log2(M))}if(S>=d)return this.selected=!0,!0}this.selected=!1,this.childVisible=!0;for(let S of this.children)S.update(e);return!0}getSelected(e=[]){if(this.selected&&e.push(this),this._children)for(let t of this._children)t.getSelected(e);return e}beyondHorizon(e,t,i){let o=e[0],a=e[1],d=e[2],m=Math.sqrt(o*o+a*a+d*d),b=Math.atan2(o,-a)*180/Math.PI,y=Math.asin(d/m)*180/Math.PI,[_,w]=Bi(this.x,this.y,this.z),[S,M]=Bi(this.x+1,this.y+1,this.z),k=(_+S)/2,O=k+((b-k+540)%360-180),G=t([Math.max(_,Math.min(O,S)),Math.max(M,Math.min(y,w)),i]);return G[0]*o+G[1]*a+G[2]*d<=G[0]*G[0]+G[1]*G[1]+G[2]*G[2]}insideBounds([e,t,i,o]){let d=Di/Math.pow(2,this.z);return this.x*d<i&&this.y*d<o&&(this.x+1)*d>e&&(this.y+1)*d>t}getBoundingVolume(e,t,i){if(i){let b=this.z<1?PE:this.z<2?Yp:Xp,y=[];for(let _ of b){let w=Bi(this.x+_[0],this.y+_[1],this.z);w[2]=e[0],y.push(i(w)),e[0]!==e[1]&&(w[2]=e[1],y.push(i(w)))}return Jo(y)}let a=Di/Math.pow(2,this.z),d=this.x*a+t*Di,m=Di-(this.y+1)*a;return new Oi([d,m,e[0]],[d+a,m+a,e[1]])}};function Jp(r,e,t,i){let o=r instanceof on$1?r.projectPosition:null,d=new Qr(Object.values(r.getFrustumPlanes()).map(({normal:M,distance:k})=>new Ut(M.clone().negate(),k))),m=r.distanceScales.unitsPerMeter[2],b=t&&t[0]*m||0,y=t&&t[1]*m||0,_=r instanceof se&&r.pitch<=60?e:0;if(i){let[M,k,O,Q]=i,V=st([M,Q]),G=st([O,k]);i=[V[0],Di-V[1],G[0],Di-G[1]]}let w=new Cc(0,0,0),S={viewport:r,project:o,cullingVolume:d,elevationBounds:[b,y],minZ:_,maxZ:e,bounds:i,offset:0};if(w.update(S),r instanceof se&&r.subViewports&&r.subViewports.length>1){for(S.offset=-1;w.update(S)&&!(--S.offset<-Kp););for(S.offset=1;w.update(S)&&!(++S.offset>Kp););}return w.getSelected()}var sn=512;var NE=[-Infinity,-Infinity,Infinity,Infinity];var vn={type:`object`,value:null,validate:(r,e)=>e.optional&&r===null||typeof r==`string`||Array.isArray(r)&&r.every(t=>typeof t==`string`),equal:(r,e)=>{if(r===e)return!0;if(!Array.isArray(r)||!Array.isArray(e))return!1;let t=r.length;if(t!==e.length)return!1;for(let i=0;i<t;i++)if(r[i]!==e[i])return!1;return!0}};function xA(r,e){let t=[e.transformAsPoint([r[0],r[1]]),e.transformAsPoint([r[2],r[1]]),e.transformAsPoint([r[0],r[3]]),e.transformAsPoint([r[2],r[3]])];return[Math.min(...t.map(o=>o[0])),Math.min(...t.map(o=>o[1])),Math.max(...t.map(o=>o[0])),Math.max(...t.map(o=>o[1]))]}function FE(r){return Math.abs(r.split(``).reduce((e,t)=>(e<<5)-e+t.charCodeAt(0)|0,0))}function An(r,e){if(!r||!r.length)return null;let{index:t,id:i}=e;if(Array.isArray(r)){let a=FE(i)%r.length;r=r[a]}let o=r;for(let a of Object.keys(t)){let d=new RegExp(`{${a}}`,`g`);o=o.replace(d,String(t[a]))}return Number.isInteger(t.y)&&Number.isInteger(t.z)&&(o=o.replace(/\{-y\}/g,String(Math.pow(2,t.z)-t.y-1))),o}function kE(r,e,t){let i;if(e&&e.length===2){let[o,a]=e,d=r.getBounds({z:o}),m=r.getBounds({z:a});i=[Math.min(d[0],m[0]),Math.min(d[1],m[1]),Math.max(d[2],m[2]),Math.max(d[3],m[3])]}else i=r.getBounds();return r.isGeospatial?[Math.max(i[0],t[0]),Math.max(i[1],t[1]),Math.min(i[2],t[2]),Math.min(i[3],t[3])]:[Math.max(Math.min(i[0],t[2]),t[0]),Math.max(Math.min(i[1],t[3]),t[1]),Math.min(Math.max(i[2],t[0]),t[2]),Math.min(Math.max(i[3],t[1]),t[3])]}function $p({viewport:r,z:e,cullRect:t}){return(r.subViewports||[r]).map(o=>Ic(o,e||0,t))}function Ic(r,e,t){if(!Array.isArray(e)){let a=t.x-r.x,d=t.y-r.y,{width:m,height:b}=t,y={targetZ:e},_=r.unproject([a,d],y),w=r.unproject([a+m,d],y),S=r.unproject([a,d+b],y),M=r.unproject([a+m,d+b],y);return[Math.min(_[0],w[0],S[0],M[0]),Math.min(_[1],w[1],S[1],M[1]),Math.max(_[0],w[0],S[0],M[0]),Math.max(_[1],w[1],S[1],M[1])]}let i=Ic(r,e[0],t),o=Ic(r,e[1],t);return[Math.min(i[0],o[0]),Math.min(i[1],o[1]),Math.max(i[2],o[2]),Math.max(i[3],o[3])]}function OE(r,e,t){return t?xA(r,t).map(o=>o*e/sn):r.map(i=>i*e/sn)}function Mc(r,e){return Math.pow(2,r)*sn/e}function Bi(r,e,t){let i=Mc(t,sn),o=r/i*360-180,a=Math.PI-2*Math.PI*e/i;return[o,180/Math.PI*Math.atan(.5*(Math.exp(a)-Math.exp(-a)))]}function Zp(r,e,t,i){let o=Mc(t,i);return[r/o*sn,e/o*sn]}function Lc(r,e,t,i,o=sn){if(r.isGeospatial){let[y,_]=Bi(e,t,i),[w,S]=Bi(e+1,t+1,i);return{west:y,north:_,east:w,south:S}}let[a,d]=Zp(e,t,i,o),[m,b]=Zp(e+1,t+1,i,o);return{left:a,top:d,right:m,bottom:b}}function DE(r,e,t,i,o){let[m,b,y,_]=OE(kE(r,null,i),Mc(e,t),o),w=[];for(let S=Math.floor(m);S<y;S++)for(let M=Math.floor(b);M<_;M++)w.push({x:S,y:M,z:e});return w}function Rc({viewport:r,maxZoom:e,minZoom:t,zRange:i,extent:o,tileSize:a=sn,modelMatrix:d,modelMatrixInverse:m,zoomOffset:b=0,visibleMinZoom:y,visibleMaxZoom:_}){let w=r.isGeospatial?Math.round(r.zoom+Math.log2(sn/a)+b):Math.ceil(r.zoom+b);if(typeof t==`number`&&Number.isFinite(t)&&w<t){if(!o)return[];w=t}if(typeof e==`number`&&Number.isFinite(e)&&w>e&&(w=e),y!=null&&r.zoom<y)return[];if(_!=null&&r.zoom>_)return[];let S=o;return d&&m&&o&&!r.isGeospatial&&(S=xA(o,d)),r.isGeospatial?Jp(r,w,i,o):DE(r,w,a,S||NE,m)}function Pc(r){return/(?=.*{z})(?=.*{x})(?=.*({y}|{-y}))/.test(r)}function Nc(r){return Number.isFinite(r.west)&&Number.isFinite(r.north)&&Number.isFinite(r.east)&&Number.isFinite(r.south)}function em(r){let e={},t;return i=>{for(let o in i)if(!BE(i[o],e[o])){t=r(i),e=i;break}return t}}function BE(r,e){if(r===e)return!0;if(Array.isArray(r)){let t=r.length;if(!e||e.length!==t)return!1;for(let i=0;i<t;i++)if(r[i]!==e[i])return!1;return!0}return!1}var tm=1;var _A=2;var UE=`never`;var GE=`no-overlap`;var Zo=`best-available`;var jE=5;var nm=0;var im=1e8;var rm=im-nm-1;var VE={[Zo]:HE,[GE]:qE,[UE]:()=>{}};var zE={extent:null,tileSize:512,maxZoom:null,minZoom:null,maxCacheSize:null,maxCacheByteSize:null,refinementStrategy:`best-available`,zRange:null,maxRequests:6,debounceTime:0,zoomOffset:0,visibleMinZoom:null,visibleMaxZoom:null,onTileLoad:()=>{},onTileUnload:()=>{},onTileError:()=>{}};var Ui=class{constructor(e){this._getCullBounds=em($p),this.opts=r(r({},zE),e),this.setOptions(this.opts),this.onTileLoad=t=>{this.opts.onTileLoad?.(t),this.opts.maxCacheByteSize!==null&&(this._cacheByteSize+=t.byteLength,this._resizeCache())},this._requestScheduler=new Yi$1({throttleRequests:this.opts.maxRequests>0||this.opts.debounceTime>0,maxRequests:this.opts.maxRequests,debounceTime:this.opts.debounceTime}),this._cache=new Map,this._tiles=[],this._dirty=!1,this._cacheByteSize=0,this._viewport=null,this._zRange=null,this._selectedTiles=null,this._frameNumber=0,this._modelMatrix=new U,this._modelMatrixInverse=new U}get tiles(){return this._tiles}get selectedTiles(){return this._selectedTiles}get isLoaded(){return this._selectedTiles!==null&&this._selectedTiles.every(e=>e.isLoaded)}get needsReload(){return this._selectedTiles!==null&&this._selectedTiles.some(e=>e.needsReload)}setOptions(e){Object.assign(this.opts,e),Number.isFinite(e.maxZoom)&&(this._maxZoom=Math.floor(e.maxZoom)),Number.isFinite(e.minZoom)&&(this._minZoom=Math.ceil(e.minZoom)),this._viewport=null}finalize(){for(let e of this._cache.values())e.isLoading&&e.abort();this._cache.clear(),this._tiles=[],this._selectedTiles=null}reloadAll(){for(let e of this._cache.keys()){let t=this._cache.get(e);!this._selectedTiles||!this._selectedTiles.includes(t)?this._cache.delete(e):t.setNeedsReload()}}update(e,{zRange:t,modelMatrix:i}={zRange:null,modelMatrix:null}){let o=i?new U(i):new U,a=!o.equals(this._modelMatrix);if(!this._viewport||!e.equals(this._viewport)||!Mt(this._zRange,t)||a){a&&(this._modelMatrixInverse=o.clone().invert(),this._modelMatrix=o),this._viewport=e,this._zRange=t;let m=this.getTileIndices({viewport:e,maxZoom:this._maxZoom,minZoom:this._minZoom,zRange:t,modelMatrix:this._modelMatrix,modelMatrixInverse:this._modelMatrixInverse});this._selectedTiles=m.map(b=>this._getTile(b,!0)),this._dirty&&this._rebuildTree()}else this.needsReload&&(this._selectedTiles=this._selectedTiles.map(m=>this._getTile(m.index,!0)));let d=this.updateTileStates();return this._pruneRequests(),this._dirty&&this._resizeCache(),d&&this._frameNumber++,this._frameNumber}isTileVisible(e,t,i){if(!e.isVisible)return!1;if(t&&this._viewport){let o=this._getCullBounds({viewport:this._viewport,z:this._zRange,cullRect:t}),{bbox:a}=e;for(let[d,m,b,y]of o){let _;if(`west`in a)_=a.west<b&&a.east>d&&a.south<y&&a.north>m;else{if(i&&!U.IDENTITY.equals(i)){let[M,k,O,Q]=xA([a.left,a.top,a.right,a.bottom],i);a={left:M,top:k,right:O,bottom:Q}}let w=Math.min(a.top,a.bottom),S=Math.max(a.top,a.bottom);_=a.left<b&&a.right>d&&w<y&&S>m}if(_)return!0}return!1}return!0}getTileIndices({viewport:e,maxZoom:t,minZoom:i,zRange:o,modelMatrix:a,modelMatrixInverse:d}){let{tileSize:m,extent:b,zoomOffset:y,visibleMinZoom:_,visibleMaxZoom:w}=this.opts;return Rc({viewport:e,maxZoom:t,minZoom:i,zRange:o,tileSize:m,extent:b,modelMatrix:a,modelMatrixInverse:d,zoomOffset:y,visibleMinZoom:_,visibleMaxZoom:w})}getTileId(e){return`${e.x}-${e.y}-${e.z}`}getTileZoom(e){return e.z}getTileMetadata(e){let{tileSize:t}=this.opts;return{bbox:Lc(this._viewport,e.x,e.y,e.z,t)}}getParentIndex(e){return{x:Math.floor(e.x/2),y:Math.floor(e.y/2),z:e.z-1}}updateTileStates(){let e=this.opts.refinementStrategy||Zo,t=new Array(this._cache.size),i=0;for(let o of this._cache.values())t[i++]=o.isVisible,o.isSelected=!1,o.isVisible=!1;for(let o of this._selectedTiles)o.isSelected=!0,o.isVisible=!0;(typeof e==`function`?e:VE[e])(Array.from(this._cache.values())),i=0;for(let o of this._cache.values())if(t[i++]!==o.isVisible)return!0;return!1}_getRequestPriority(e){if(!e.isSelected&&!e.isVisible)return-1;let t=this._getTileDistancePriority(e);return e.isSelected?nm+t:im+t}_getTileDistancePriority(e){let{width:t,height:i}=this._viewport||{};if(!this._viewport||!t||!i)return 0;try{let o=this._getTileScreenCorners(e.bbox),a=[t/2,i/2];if(o.length===4){if(this._isPointInPolygon(a,o))return 0;let d=o.reduce((m,b,y)=>{let _=o[(y+1)%o.length];return Math.min(m,this._getPointToSegmentDistanceSquared(a,b,_))},Number.MAX_SAFE_INTEGER);return Math.min(d,rm)}}catch{}return rm}_getTileScreenCorners(e){return(`west`in e?[[e.west,e.south],[e.east,e.south],[e.east,e.north],[e.west,e.north]]:[[e.left,e.top],[e.right,e.top],[e.right,e.bottom],[e.left,e.bottom]]).map(i=>this._viewport.project(i)).filter(([i,o])=>Number.isFinite(i)&&Number.isFinite(o))}_isPointInPolygon(e,t){let i=!1,[o,a]=e;for(let d=0,m=t.length-1;d<t.length;m=d++){let[b,y]=t[d],[_,w]=t[m];y>a!=w>a&&o<(_-b)*(a-y)/(w-y)+b&&(i=!i)}return i}_getPointToSegmentDistanceSquared(e,t,i){let[o,a]=e,[d,m]=t,[b,y]=i,_=b-d,w=y-m,S=_*_+w*w,M=S?Math.max(0,Math.min(1,((o-d)*_+(a-m)*w)/S)):0,k=d+M*_,O=m+M*w,Q=o-k,V=a-O;return Q*Q+V*V}_pruneRequests(){let{maxRequests:e=0}=this.opts,t=[],i=0;for(let o of this._cache.values())o.isLoading&&(i++,!o.isSelected&&!o.isVisible&&t.push(o));for(;e>0&&i>e&&t.length>0;)t.shift().abort(),i--}_rebuildTree(){let{_cache:e}=this;for(let t of e.values())t.parent=null,t.children&&(t.children.length=0);for(let t of e.values()){let i=this._getNearestAncestor(t);t.parent=i,i?.children&&i.children.push(t)}}_resizeCache(){let{_cache:e,opts:t}=this,i=t.maxCacheSize??(t.maxCacheByteSize!==null?Infinity:jE*this.selectedTiles.length),o=t.maxCacheByteSize??Infinity;if(e.size>i||this._cacheByteSize>o){for(let[d,m]of e)if(!m.isVisible&&!m.isSelected&&(this._cacheByteSize-=t.maxCacheByteSize!==null?m.byteLength:0,e.delete(d),this.opts.onTileUnload?.(m)),e.size<=i&&this._cacheByteSize<=o)break;this._rebuildTree(),this._dirty=!0}this._dirty&&(this._tiles=Array.from(this._cache.values()).sort((d,m)=>d.zoom-m.zoom),this._dirty=!1)}_getTile(e,t){let i=this.getTileId(e),o=this._cache.get(i),a=!1;return!o&&t?(o=new ki(e),Object.assign(o,this.getTileMetadata(o.index)),Object.assign(o,{id:i,zoom:this.getTileZoom(o.index)}),a=!0,this._cache.set(i,o),this._dirty=!0):o&&o.needsReload&&(a=!0),o&&a&&o.loadData({getData:this.opts.getTileData,getRequestPriority:this._getRequestPriority.bind(this),requestScheduler:this._requestScheduler,onLoad:this.onTileLoad,onError:this.opts.onTileError}),o}_getNearestAncestor(e){let{_minZoom:t=0}=this,i=e.index;for(;this.getTileZoom(i)>t;){i=this.getParentIndex(i);let o=this._getTile(i);if(o)return o}return null}};function HE(r){for(let e of r)e.state=0;for(let e of r)e.isSelected&&!om(e)&&Fc(e);for(let e of r)e.isVisible=!!(e.state&_A)}function qE(r){for(let t of r)t.state=0;for(let t of r)t.isSelected&&om(t);let e=Array.from(r).sort((t,i)=>t.zoom-i.zoom);for(let t of e)if(t.isVisible=!!(t.state&_A),t.children&&(t.isVisible||t.state&tm))for(let i of t.children)i.state=tm;else t.isSelected&&Fc(t)}function om(r){let e=r;for(;e;){if(e.isLoaded||e.content)return e.state|=_A,!0;e=e.parent}return!1}function Fc(r){for(let e of r.children)e.isLoaded||e.content?e.state|=_A:Fc(e)}var WE={TilesetClass:Ui,data:{type:`data`,value:[]},dataComparator:vn.equal,renderSubLayers:{type:`function`,value:r=>new br(r)},getTileData:{type:`function`,optional:!0,value:null},onViewportLoad:{type:`function`,optional:!0,value:null},onTileLoad:{type:`function`,value:r=>{}},onTileUnload:{type:`function`,value:r=>{}},onTileError:{type:`function`,value:r=>console.error(r)},extent:{type:`array`,optional:!0,value:null,compare:!0},tileSize:512,maxZoom:null,minZoom:0,maxCacheSize:null,maxCacheByteSize:null,refinementStrategy:Zo,zRange:null,maxRequests:6,debounceTime:0,zoomOffset:0,visibleMinZoom:null,visibleMaxZoom:null};var Gi=(()=>{class r$11 extends Dm$1{initializeState(){this.state={tileset:null,isLoaded:!1}}finalizeState(){this.state?.tileset?.finalize()}get isLoaded(){return!!this.state?.tileset?.selectedTiles?.every(t=>t.isLoaded&&(!t.content||!t.layers||t.layers.every(i=>i.isLoaded)))}shouldUpdateState({changeFlags:t}){return t.somethingChanged}updateState({changeFlags:t}){let{tileset:i}=this.state,o=t.propsOrDataChanged||t.updateTriggersChanged,a=t.dataChanged||t.updateTriggersChanged&&(t.updateTriggersChanged.all||t.updateTriggersChanged.getTileData);i?o&&(i.setOptions(this._getTilesetOptions()),a?i.reloadAll():i.tiles.forEach(d=>{d.layers=null})):(i=new this.props.TilesetClass(this._getTilesetOptions()),this.setState({tileset:i})),this._updateTileset()}_getTilesetOptions(){let{tileSize:t,maxCacheSize:i,maxCacheByteSize:o,refinementStrategy:a,extent:d,maxZoom:m,minZoom:b,maxRequests:y,debounceTime:_,zoomOffset:w,visibleMinZoom:S,visibleMaxZoom:M}=this.props;return{maxCacheSize:i,maxCacheByteSize:o,maxZoom:m,minZoom:b,tileSize:t,refinementStrategy:a,extent:d,maxRequests:y,debounceTime:_,zoomOffset:w,visibleMinZoom:S,visibleMaxZoom:M,getTileData:this.getTileData.bind(this),onTileLoad:this._onTileLoad.bind(this),onTileError:this._onTileError.bind(this),onTileUnload:this._onTileUnload.bind(this)}}_updateTileset(){let t=this.state.tileset,{zRange:i,modelMatrix:o}=this.props,a=t.update(this.context.viewport,{zRange:i,modelMatrix:o}),{isLoaded:d}=t,m=this.state.isLoaded!==d,b=this.state.frameNumber!==a;d&&(m||b)&&this._onViewportLoad(),b&&this.setState({frameNumber:a}),this.state.isLoaded=d}_onViewportLoad(){let{tileset:t}=this.state,{onViewportLoad:i}=this.props;i&&i(t.selectedTiles)}_onTileLoad(t){this.props.onTileLoad(t),t.layers=null,this.setNeedsUpdate()}_onTileError(t,i){this.props.onTileError(t),i.layers=null,this.setNeedsUpdate()}_onTileUnload(t){this.props.onTileUnload(t)}getTileData(t){let{data:i,getTileData:o,fetch:a}=this.props,{signal:d}=t;return t.url=typeof i==`string`||Array.isArray(i)?An(i,t):null,o?o(t):a&&t.url?a(t.url,{propName:`data`,layer:this,signal:d}):null}renderSubLayers(t){return this.props.renderSubLayers(t)}getSubLayerPropsByTile(t){return null}getPickingInfo(t){let i=t.sourceLayer,o=i.props.tile,a=t.info;return a.picked&&(a.tile=o),a.sourceTile=o,a.sourceTileSubLayer=i,a}_updateAutoHighlight(t){t.sourceTileSubLayer.updateAutoHighlight(t)}renderLayers(){let{visibleMinZoom:t,visibleMaxZoom:i,minZoom:o,extent:a}=this.props,d=this.context.viewport.zoom;if(t!=null&&d<t||i!=null&&d>i||o!=null&&!a&&d<o){for(let b of this.state.tileset.tiles)b.layers=null;return[]}return this.state.tileset.tiles.map(b=>{let y=this.getSubLayerPropsByTile(b);if(!(!b.isLoaded&&!b.content))if(b.layers)y&&b.layers[0]&&Object.keys(y).some(_=>b.layers[0].props[_]!==y[_])&&(b.layers=b.layers.map(_=>_.clone(y)));else b.layers=ne$1(this.renderSubLayers(s(r(r({},this.props),this.getSubLayerProps({id:b.id,updateTriggers:this.props.updateTriggers})),{data:b.content,_offset:0,tile:b})),Boolean).map(w=>w.clone(r({tile:b},y)));return b.layers})}filterSubLayer({layer:t,cullRect:i}){let{tile:o}=t.props,{modelMatrix:a}=this.props;return this.state.tileset.isTileVisible(o,i,a?new U(a):null)}}return r$11.defaultProps=WE,r$11.layerName=`TileLayer`,r$11})();var KE=`struct TripsUniforms {
|
|
6
|
+
fadeTrail: f32,
|
|
7
|
+
trailLength: f32,
|
|
8
|
+
currentTime: f32,
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
@group(0) @binding(auto)
|
|
12
|
+
var<uniform> trips: TripsUniforms;
|
|
13
|
+
`;var sm=`layout(std140) uniform tripsUniforms {
|
|
14
|
+
bool fadeTrail;
|
|
15
|
+
float trailLength;
|
|
16
|
+
float currentTime;
|
|
17
|
+
} trips;
|
|
18
|
+
`;var Am={name:`trips`,source:KE,vs:sm,fs:sm,uniformTypes:{fadeTrail:`f32`,trailLength:`f32`,currentTime:`f32`}};function am(r,e=r.length,t=!1){let i=new Float32Array(e*2);if(r.length===0)return i;let o=e>r.length,a=t?r.length:Math.max(r.length-1,1);for(let d=0;d<e;d++){let m=o?d%a:Math.min(d,r.length-1),b=o?(m+1)%a:Math.min(m+1,r.length-1);i[d*2]=r[m],i[d*2+1]=r[b]}return i}var cm={" @location(12) rowIndexes: u32,":`
|
|
19
|
+
@location(13) instanceTimestamps: vec2<f32>,`," @location(5) vJointType: f32,":`
|
|
20
|
+
@location(6) vTime: f32,`," attributes.instanceColors.a * layer.opacity\n );":`
|
|
21
|
+
|
|
22
|
+
varyings.vTime = mix(
|
|
23
|
+
attributes.instanceTimestamps.x,
|
|
24
|
+
attributes.instanceTimestamps.y,
|
|
25
|
+
varyings.vPathPosition.y / varyings.vPathLength
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
if (trips.fadeTrail > 0.5) {
|
|
29
|
+
varyings.vColor.a *=
|
|
30
|
+
1.0 - (trips.currentTime - varyings.vTime) / trips.trailLength;
|
|
31
|
+
}`," // DECKGL_FILTER_COLOR":`
|
|
32
|
+
if (
|
|
33
|
+
varyings.vTime > trips.currentTime ||
|
|
34
|
+
(trips.fadeTrail > 0.5 && varyings.vTime < trips.currentTime - trips.trailLength)
|
|
35
|
+
) {
|
|
36
|
+
discard;
|
|
37
|
+
}`};var XE={fadeTrail:!0,trailLength:{type:`number`,value:120,min:0},currentTime:{type:`number`,value:0,min:0},getTimestamps:{type:`accessor`,value:r=>r.timestamps}};var YE={"vs:#decl":`in float instanceTimestamps;
|
|
38
|
+
in float instanceNextTimestamps;
|
|
39
|
+
out float vTime;
|
|
40
|
+
`,"vs:#main-end":`vTime = instanceTimestamps + (instanceNextTimestamps - instanceTimestamps) * vPathPosition.y / vPathLength;
|
|
41
|
+
`,"fs:#decl":`in float vTime;
|
|
42
|
+
`,"fs:DECKGL_FILTER_COLOR":`if(vTime > trips.currentTime || (trips.fadeTrail && (vTime < trips.currentTime - trips.trailLength))) {
|
|
43
|
+
discard;
|
|
44
|
+
}
|
|
45
|
+
if(trips.fadeTrail) {
|
|
46
|
+
color.a *= 1.0 - (trips.currentTime - vTime) / trips.trailLength;
|
|
47
|
+
}
|
|
48
|
+
`};var ZE=(()=>{class r$12 extends _e{getShaders(){let t=super.getShaders();return t.inject=this.context.device.type===`webgpu`?cm:YE,t.modules=[...t.modules,Am],t}initializeState(){super.initializeState(),this.getAttributeManager().addInstanced(r({},this.context.device.type===`webgpu`?{instanceTimestamps:{size:2,accessor:`getTimestamps`,update:this.calculateWebGPUTimestamps,bufferGroup:`path-instance-data`}}:{timestamps:{size:1,accessor:`getTimestamps`,shaderAttributes:{instanceTimestamps:{vertexOffset:0},instanceNextTimestamps:{vertexOffset:1}}}}))}calculateWebGPUTimestamps(t,{data:i,props:o}){let{pathTesselator:a}=this.state,{instanceCount:d,vertexStarts:m}=a,b=new Float32Array(d*2),{iterable:y,objectInfo:_}=Ar(i);for(let w of y){_.index++;let S=m[_.index],M=m[_.index+1]??d;if(M<=S)continue;let k=o.getTimestamps?.(w,_)??[];b.set(am(k,M-S,o._pathType===`loop`),S*2)}t.startIndices=m,t.value=b}draw(t){let{fadeTrail:i,trailLength:o,currentTime:a}=this.props,d={fadeTrail:i,trailLength:o,currentTime:a};this.state.model.shaderInputs.setProps({trips:d}),super.draw(t)}}return r$12.layerName=`TripsLayer`,r$12.defaultProps=XE,r$12})();var $E=10;function ev(r$13,e){let t;return r$13==null?t=e:typeof r$13==`object`?t=s(r({},r$13),{coverage:e}):t={getHexagon:r$13,coverage:e},t}var tv=s(r({},Xs$1.defaultProps),{highPrecision:`auto`,coverage:{type:`number`,min:0,max:1,value:1},centerHexagon:null,getHexagon:{type:`accessor`,value:r=>r.hexagon},extruded:!0});var ji=class r extends Dm$1{initializeState(){r._checkH3Lib(),this.state={edgeLengthKM:0,resolution:-1}}shouldUpdateState({changeFlags:e}){return this._shouldUseHighPrecision()?e.propsOrDataChanged:e.somethingChanged}updateState({props:e,changeFlags:t}){if(e.highPrecision!==!0&&(t.dataChanged||t.updateTriggersChanged&&t.updateTriggersChanged.getHexagon)){let i=this._calculateH3DataProps();this.setState(i)}this._updateVertices(this.context.viewport)}_calculateH3DataProps(){let e=-1,t=!1,i=!1,{iterable:o,objectInfo:a}=Ar(this.props.data);for(let d of o){a.index++;let m=this.props.getHexagon(d,a),b=Qd(m);if(e<0){if(e=b,!this.props.highPrecision)break}else if(e!==b){i=!0;break}if(Wd(m)){t=!0;break}}return{resolution:e,edgeLengthKM:e>=0?Zd(e,`km`):0,hasMultipleRes:i,hasPentagon:t}}_shouldUseHighPrecision(){if(this.props.highPrecision===`auto`){let{resolution:e,hasPentagon:t,hasMultipleRes:i}=this.state,{viewport:o}=this.context;return!!o?.resolution||i||t||e>=0&&e<=5}return this.props.highPrecision}_updateVertices(e){if(this._shouldUseHighPrecision())return;let{resolution:t,edgeLengthKM:i,centerHex:o}=this.state;if(t<0)return;let a=this.props.centerHexagon||Kd(e.latitude,e.longitude,t);if(o===a)return;if(o)try{if(Jd(o,a)*i<$E)return}catch{}let{unitsPerMeter:d}=e.distanceScales,m=K0(a),[b,y]=ko(a),[_,w]=e.projectFlat([y,b]);m=m.map(S=>{let M=e.projectFlat(S);return[(M[0]-_)/d[0],(M[1]-w)/d[1]]}),this.setState({centerHex:a,vertices:m})}renderLayers(){return this._shouldUseHighPrecision()?this._renderPolygonLayer():this._renderColumnLayer()}_getForwardProps(){let{elevationScale:e,material:t,coverage:i,extruded:o,wireframe:a,stroked:d,filled:m,lineWidthUnits:b,lineWidthScale:y,lineWidthMinPixels:_,lineWidthMaxPixels:w,getFillColor:S,getElevation:M,getLineColor:k,getLineWidth:O,transitions:Q,updateTriggers:V}=this.props;return{elevationScale:e,extruded:o,coverage:i,wireframe:a,stroked:d,filled:m,lineWidthUnits:b,lineWidthScale:y,lineWidthMinPixels:_,lineWidthMaxPixels:w,material:t,getElevation:M,getFillColor:S,getLineColor:k,getLineWidth:O,transitions:Q,updateTriggers:{getFillColor:V.getFillColor,getElevation:V.getElevation,getLineColor:V.getLineColor,getLineWidth:V.getLineWidth}}}_renderPolygonLayer(){let{data:e,getHexagon:t,updateTriggers:i,coverage:o}=this.props,a=this.getSubLayerClass(`hexagon-cell-hifi`,Xs$1),d=this._getForwardProps();return d.updateTriggers.getPolygon=ev(i.getHexagon,o),new a(d,this.getSubLayerProps({id:`hexagon-cell-hifi`,updateTriggers:d.updateTriggers}),{data:e,_normalize:!1,_windingOrder:`CCW`,positionFormat:`XY`,getPolygon:(m,b)=>{return nA(K0(t(m,b),o))}})}_renderColumnLayer(){let{data:e,getHexagon:t,updateTriggers:i}=this.props,o=this.getSubLayerClass(`hexagon-cell`,xt$1),a=this._getForwardProps();return a.updateTriggers.getPosition=i.getHexagon,new o(a,this.getSubLayerProps({id:`hexagon-cell`,flatShading:!0,updateTriggers:a.updateTriggers}),{data:e,diskResolution:6,radius:1,vertices:this.state.vertices,getPosition:$d.bind(null,t)})}};ji.defaultProps=tv;ji.layerName=`H3HexagonLayer`;ji._checkH3Lib=()=>{};var kc=ji;var rv={getHexagons:{type:`accessor`,value:r=>r.hexagons}};var iv=(()=>{class r extends Pr{initializeState(){kc._checkH3Lib()}updateState({props:t,changeFlags:i}){if(i.dataChanged||i.updateTriggersChanged&&i.updateTriggersChanged.getHexagons){let{data:o,getHexagons:a}=t,d=[],{iterable:m,objectInfo:b}=Ar(o);for(let y of m){b.index++;let w=Yd(a(y,b),!0);for(let S of w){for(let M of S)rA(M);d.push(this.getSubLayerRow({polygon:S},y,b.index))}}this.setState({polygons:d})}}indexToBounds(){let{getElevation:t,getFillColor:i,getLineColor:o,getLineWidth:a}=this.props;return{data:this.state.polygons,getPolygon:d=>d.polygon,getElevation:this.getSubLayerAccessor(t),getFillColor:this.getSubLayerAccessor(i),getLineColor:this.getSubLayerAccessor(o),getLineWidth:this.getSubLayerAccessor(a)}}}return r.layerName=`H3ClusterLayer`,r.defaultProps=rv,r})();var Oc=Math.PI/180;var wA=new Float32Array(16);var lm=new Float32Array(12);function um(r,e,t){let i=e[0]*Oc,o=e[1]*Oc,a=e[2]*Oc,d=Math.sin(a),m=Math.sin(i),b=Math.sin(o),y=Math.cos(a),_=Math.cos(i),w=Math.cos(o),S=t[0],M=t[1],k=t[2];r[0]=S*w*_,r[1]=S*b*_,r[2]=S*-m,r[3]=M*(-b*y+w*m*d),r[4]=M*(w*y+b*m*d),r[5]=M*_*d,r[6]=k*(b*d+w*m*y),r[7]=k*(-w*d+b*m*y),r[8]=k*_*y}function fm(r){return r[0]=r[0],r[1]=r[1],r[2]=r[2],r[3]=r[4],r[4]=r[5],r[5]=r[6],r[6]=r[8],r[7]=r[9],r[8]=r[10],r[9]=r[12],r[10]=r[13],r[11]=r[14],r.subarray(0,12)}var EA={size:12,accessor:[`getOrientation`,`getScale`,`getTranslation`,`getTransformMatrix`],shaderAttributes:{instanceModelMatrixCol0:{size:3,elementOffset:0},instanceModelMatrixCol1:{size:3,elementOffset:3},instanceModelMatrixCol2:{size:3,elementOffset:6},instanceTranslation:{size:3,elementOffset:9}},update(r,{startRow:e,endRow:t}){let{data:i,getOrientation:o,getScale:a,getTranslation:d,getTransformMatrix:m}=this.props,b=Array.isArray(m),y=b&&m.length===16,_=Array.isArray(a),w=Array.isArray(o),S=Array.isArray(d),M=y||!b&&!!m(i[0]);M?r.constant=y:r.constant=w&&_&&S;let k=r.value;if(r.constant){let O;M?(wA.set(m),O=fm(wA)):(O=lm,um(O,o,a),O.set(d,9)),r.value=new Float32Array(O)}else{let O=e*r.size,{iterable:Q,objectInfo:V}=Ar(i,e,t);for(let G of Q){V.index++;let J;if(M)wA.set(y?m:m(G,V)),J=fm(wA);else{J=lm;let $=w?o:o(G,V),te=_?a:a(G,V);um(J,$,te),J.set(S?d:d(G,V),9)}k[O++]=J[0],k[O++]=J[1],k[O++]=J[2],k[O++]=J[3],k[O++]=J[4],k[O++]=J[5],k[O++]=J[6],k[O++]=J[7],k[O++]=J[8],k[O++]=J[9],k[O++]=J[10],k[O++]=J[11]}}}};function vA(r,e){return e===`cartesian`||e===`meter-offsets`||e==="default"&&!r.isGeospatial}var ov=`struct SimpleMeshUniforms {
|
|
49
|
+
sizeScale: f32,
|
|
50
|
+
composeModelMatrix: f32,
|
|
51
|
+
hasTexture: f32,
|
|
52
|
+
flatShading: f32,
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
@group(0) @binding(auto) var<uniform> simpleMesh: SimpleMeshUniforms;
|
|
56
|
+
@group(0) @binding(auto) var simpleMeshTexture: texture_2d<f32>;
|
|
57
|
+
@group(0) @binding(auto) var simpleMeshTextureSampler: sampler;
|
|
58
|
+
`;var hm=`layout(std140) uniform simpleMeshUniforms {
|
|
59
|
+
float sizeScale;
|
|
60
|
+
bool composeModelMatrix;
|
|
61
|
+
bool hasTexture;
|
|
62
|
+
bool flatShading;
|
|
63
|
+
} simpleMesh;
|
|
64
|
+
`;var dm={name:`simpleMesh`,source:ov,vs:hm,fs:hm,uniformTypes:{sizeScale:`f32`,composeModelMatrix:`f32`,hasTexture:`f32`,flatShading:`f32`}};var pm=`#version 300 es
|
|
65
|
+
#define SHADER_NAME simple-mesh-layer-vs
|
|
66
|
+
in vec3 positions;
|
|
67
|
+
in vec3 normals;
|
|
68
|
+
in vec3 colors;
|
|
69
|
+
in vec2 texCoords;
|
|
70
|
+
in vec3 instancePositions;
|
|
71
|
+
in vec3 instancePositions64Low;
|
|
72
|
+
in vec4 instanceColors;
|
|
73
|
+
in vec3 instanceModelMatrixCol0;
|
|
74
|
+
in vec3 instanceModelMatrixCol1;
|
|
75
|
+
in vec3 instanceModelMatrixCol2;
|
|
76
|
+
in vec3 instanceTranslation;
|
|
77
|
+
out vec2 vTexCoord;
|
|
78
|
+
out vec3 cameraPosition;
|
|
79
|
+
out vec3 normals_commonspace;
|
|
80
|
+
out vec4 position_commonspace;
|
|
81
|
+
out vec4 vColor;
|
|
82
|
+
void main(void) {
|
|
83
|
+
geometry.worldPosition = instancePositions;
|
|
84
|
+
geometry.uv = texCoords;
|
|
85
|
+
geometry.pickingColor = picking_getPickingColorFromInstanceID();
|
|
86
|
+
vTexCoord = texCoords;
|
|
87
|
+
cameraPosition = project.cameraPosition;
|
|
88
|
+
vColor = vec4(colors * instanceColors.rgb, instanceColors.a);
|
|
89
|
+
mat3 instanceModelMatrix = mat3(instanceModelMatrixCol0, instanceModelMatrixCol1, instanceModelMatrixCol2);
|
|
90
|
+
vec3 pos = (instanceModelMatrix * positions) * simpleMesh.sizeScale + instanceTranslation;
|
|
91
|
+
if (simpleMesh.composeModelMatrix) {
|
|
92
|
+
DECKGL_FILTER_SIZE(pos, geometry);
|
|
93
|
+
normals_commonspace = project_normal(instanceModelMatrix * normals);
|
|
94
|
+
geometry.worldPosition += pos;
|
|
95
|
+
gl_Position = project_position_to_clipspace(pos + instancePositions, instancePositions64Low, vec3(0.0), position_commonspace);
|
|
96
|
+
geometry.position = position_commonspace;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
pos = project_size(pos);
|
|
100
|
+
DECKGL_FILTER_SIZE(pos, geometry);
|
|
101
|
+
gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, pos, position_commonspace);
|
|
102
|
+
geometry.position = position_commonspace;
|
|
103
|
+
normals_commonspace = project_normal(instanceModelMatrix * normals);
|
|
104
|
+
}
|
|
105
|
+
geometry.normal = normals_commonspace;
|
|
106
|
+
DECKGL_FILTER_GL_POSITION(gl_Position, geometry);
|
|
107
|
+
DECKGL_FILTER_COLOR(vColor, geometry);
|
|
108
|
+
}
|
|
109
|
+
`;var mm=`#version 300 es
|
|
110
|
+
#define SHADER_NAME simple-mesh-layer-fs
|
|
111
|
+
precision highp float;
|
|
112
|
+
uniform sampler2D sampler;
|
|
113
|
+
in vec2 vTexCoord;
|
|
114
|
+
in vec3 cameraPosition;
|
|
115
|
+
in vec3 normals_commonspace;
|
|
116
|
+
in vec4 position_commonspace;
|
|
117
|
+
in vec4 vColor;
|
|
118
|
+
out vec4 fragColor;
|
|
119
|
+
void main(void) {
|
|
120
|
+
geometry.uv = vTexCoord;
|
|
121
|
+
vec3 normal;
|
|
122
|
+
if (simpleMesh.flatShading) {
|
|
123
|
+
normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));
|
|
124
|
+
} else {
|
|
125
|
+
normal = normals_commonspace;
|
|
126
|
+
}
|
|
127
|
+
vec4 color = simpleMesh.hasTexture ? texture(sampler, vTexCoord) : vColor;
|
|
128
|
+
DECKGL_FILTER_COLOR(color, geometry);
|
|
129
|
+
vec3 lightColor = lighting_getLightColor(color.rgb, cameraPosition, position_commonspace.xyz, normal);
|
|
130
|
+
fragColor = vec4(lightColor, color.a * layer.opacity);
|
|
131
|
+
}
|
|
132
|
+
`;var gm=`struct Attributes {
|
|
133
|
+
@builtin(instance_index) instanceIndex: u32,
|
|
134
|
+
@location(0) positions: vec3<f32>,
|
|
135
|
+
@location(1) normals: vec3<f32>,
|
|
136
|
+
@location(2) colors: vec3<f32>,
|
|
137
|
+
@location(3) texCoords: vec2<f32>,
|
|
138
|
+
@location(4) instancePositions: vec3<f32>,
|
|
139
|
+
@location(5) instancePositions64Low: vec3<f32>,
|
|
140
|
+
@location(6) instanceColors: vec4<f32>,
|
|
141
|
+
@location(7) instanceModelMatrixCol0: vec3<f32>,
|
|
142
|
+
@location(8) instanceModelMatrixCol1: vec3<f32>,
|
|
143
|
+
@location(9) instanceModelMatrixCol2: vec3<f32>,
|
|
144
|
+
@location(10) instanceTranslation: vec3<f32>,
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
struct Varyings {
|
|
148
|
+
@builtin(position) position: vec4<f32>,
|
|
149
|
+
@location(0) color: vec4<f32>,
|
|
150
|
+
@location(1) texCoords: vec2<f32>,
|
|
151
|
+
@location(2) normal: vec3<f32>,
|
|
152
|
+
@location(3) positionCommon: vec3<f32>,
|
|
153
|
+
@location(4) pickingColor: vec3<f32>,
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
@vertex
|
|
157
|
+
fn vertexMain(attributes: Attributes) -> Varyings {
|
|
158
|
+
var varyings: Varyings;
|
|
159
|
+
|
|
160
|
+
geometry.worldPosition = attributes.instancePositions;
|
|
161
|
+
geometry.uv = attributes.texCoords;
|
|
162
|
+
geometry.pickingColor = picking_getPickingColorFromIndex(attributes.instanceIndex);
|
|
163
|
+
|
|
164
|
+
let instanceModelMatrix = mat3x3<f32>(
|
|
165
|
+
attributes.instanceModelMatrixCol0,
|
|
166
|
+
attributes.instanceModelMatrixCol1,
|
|
167
|
+
attributes.instanceModelMatrixCol2
|
|
168
|
+
);
|
|
169
|
+
let meshPosition =
|
|
170
|
+
(instanceModelMatrix * attributes.positions) * simpleMesh.sizeScale +
|
|
171
|
+
attributes.instanceTranslation;
|
|
172
|
+
|
|
173
|
+
if (simpleMesh.composeModelMatrix > 0.5) {
|
|
174
|
+
geometry.normal = project_normal(instanceModelMatrix * attributes.normals);
|
|
175
|
+
geometry.worldPosition += meshPosition;
|
|
176
|
+
let projected = project_position_to_clipspace_and_commonspace(
|
|
177
|
+
attributes.instancePositions + meshPosition,
|
|
178
|
+
attributes.instancePositions64Low,
|
|
179
|
+
vec3<f32>(0.0)
|
|
180
|
+
);
|
|
181
|
+
geometry.position = projected.commonPosition;
|
|
182
|
+
varyings.position = projected.clipPosition;
|
|
183
|
+
} else {
|
|
184
|
+
let projected = project_position_to_clipspace_and_commonspace(
|
|
185
|
+
attributes.instancePositions,
|
|
186
|
+
attributes.instancePositions64Low,
|
|
187
|
+
project_size_vec3(meshPosition)
|
|
188
|
+
);
|
|
189
|
+
geometry.position = projected.commonPosition;
|
|
190
|
+
geometry.normal = project_normal(instanceModelMatrix * attributes.normals);
|
|
191
|
+
varyings.position = projected.clipPosition;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
varyings.color = vec4<f32>(
|
|
195
|
+
attributes.colors * attributes.instanceColors.rgb,
|
|
196
|
+
attributes.instanceColors.a
|
|
197
|
+
);
|
|
198
|
+
varyings.texCoords = attributes.texCoords;
|
|
199
|
+
varyings.normal = geometry.normal;
|
|
200
|
+
varyings.positionCommon = geometry.position.xyz;
|
|
201
|
+
varyings.pickingColor = geometry.pickingColor;
|
|
202
|
+
return varyings;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
@fragment
|
|
206
|
+
fn fragmentMain(varyings: Varyings) -> @location(0) vec4<f32> {
|
|
207
|
+
geometry.uv = varyings.texCoords;
|
|
208
|
+
|
|
209
|
+
if (picking.isActive > 0.5) {
|
|
210
|
+
if (!picking_isColorValid(varyings.pickingColor)) {
|
|
211
|
+
discard;
|
|
212
|
+
}
|
|
213
|
+
return vec4<f32>(varyings.pickingColor, 1.0);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
var color = varyings.color;
|
|
217
|
+
if (simpleMesh.hasTexture > 0.5) {
|
|
218
|
+
color = textureSample(simpleMeshTexture, simpleMeshTextureSampler, varyings.texCoords);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
var normal = varyings.normal;
|
|
222
|
+
if (simpleMesh.flatShading > 0.5) {
|
|
223
|
+
// WebGPU's screen-space Y axis reverses the derivative orientation used by GLSL flat shading.
|
|
224
|
+
normal = normalize(cross(dpdy(varyings.positionCommon), dpdx(varyings.positionCommon)));
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
color = vec4<f32>(
|
|
228
|
+
lighting_getLightColor2(color.rgb, project.cameraPosition, varyings.positionCommon, normal),
|
|
229
|
+
color.a * layer.opacity
|
|
230
|
+
);
|
|
231
|
+
|
|
232
|
+
if (picking.isHighlightActive > 0.5) {
|
|
233
|
+
let highlightedColor = picking_normalizeColor(picking.highlightedObjectColor);
|
|
234
|
+
if (picking_isColorZero(abs(varyings.pickingColor - highlightedColor))) {
|
|
235
|
+
let blendedAlpha = picking.highlightColor.a + color.a * (1.0 - picking.highlightColor.a);
|
|
236
|
+
if (blendedAlpha > 0.0) {
|
|
237
|
+
color = vec4<f32>(
|
|
238
|
+
mix(color.rgb, picking.highlightColor.rgb, picking.highlightColor.a / blendedAlpha),
|
|
239
|
+
blendedAlpha
|
|
240
|
+
);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
return deckgl_premultiplied_alpha(color);
|
|
246
|
+
}
|
|
247
|
+
`;function Dc(r){let e=Infinity,t=Infinity,i=Infinity,o=-Infinity,a=-Infinity,d=-Infinity,m=r.POSITION?r.POSITION.value:[],b=m&&m.length;for(let y=0;y<b;y+=3){let _=m[y],w=m[y+1],S=m[y+2];e=_<e?_:e,t=w<t?w:t,i=S<i?S:i,o=_>o?_:o,a=w>a?w:a,d=S>d?S:d}return[[e,t,i],[o,a,d]]}function Bc(r){let e=r.positions||r.POSITION;A.assert(e,`no "postions" or "POSITION" attribute in mesh`);let t=e.value.length/e.size,i=r.COLOR_0||r.colors;i||(i={size:3,value:new Float32Array(t*3).fill(1)});let o=r.NORMAL||r.normals;o||(o={size:3,value:new Float32Array(t*3).fill(0)});let a=r.TEXCOORD_0||r.texCoords;return a||(a={size:2,value:new Float32Array(t*2).fill(0)}),{positions:e,colors:i,normals:o,texCoords:a}}function bm(r$14){return r$14 instanceof ne?(r$14.attributes=Bc(r$14.attributes),r$14):r$14.attributes?new ne(s(r({},r$14),{topology:`triangle-list`,attributes:Bc(r$14.attributes)})):new ne({topology:`triangle-list`,attributes:Bc(r$14)})}var Av={mesh:{type:`object`,value:null,async:!0},texture:{type:`image`,value:null,async:!0},sizeScale:{type:`number`,value:1,min:0},_instanced:!0,wireframe:!1,material:!0,getPosition:{type:`accessor`,value:r=>r.position},getColor:{type:`accessor`,value:[0,0,0,255]},getOrientation:{type:`accessor`,value:[0,0,0]},getScale:{type:`accessor`,value:[1,1,1]},getTranslation:{type:`accessor`,value:[0,0,0]},getTransformMatrix:{type:`accessor`,value:[]},textureParameters:{type:`object`,ignore:!0,value:null}};var Vi=(()=>{class r$15 extends en{getShaders(){return super.getShaders({vs:pm,fs:mm,source:gm,modules:[Wa,ma$1,Ko$1,Ka,dm]})}getBounds(){if(this.props._instanced)return super.getBounds();let t=this.state.positionBounds;if(t)return t;let{mesh:i}=this.props;if(!i)return null;if(t=i.header?.boundingBox,!t){let{attributes:o}=bm(i);o.POSITION=o.POSITION||o.positions,t=Dc(o)}return this.state.positionBounds=t,t}initializeState(){this.getAttributeManager().addInstanced({instancePositions:{transition:!0,type:`float64`,fp64:this.use64bitPositions(),size:3,accessor:`getPosition`},instanceColors:{type:`unorm8`,transition:!0,size:this.props.colorFormat.length,accessor:`getColor`,defaultValue:[0,0,0,255]},instanceModelMatrix:EA}),this.setState({emptyTexture:this.context.device.createTexture({data:new Uint8Array(4),width:1,height:1})})}updateState(t){super.updateState(t);let{props:i,oldProps:o,changeFlags:a}=t;if(i.mesh!==o.mesh||a.extensionsChanged){if(this.state.positionBounds=null,this.state.model?.destroy(),i.mesh){this.state.model=this.getModel(i.mesh);let d=i.mesh.attributes||i.mesh;this.setState({hasNormals:!!(d.NORMAL||d.normals)})}this.getAttributeManager().invalidateAll()}i.texture!==o.texture&&i.texture instanceof v$1&&this.setTexture(i.texture),this.state.model&&this.state.model.setTopology(this.props.wireframe?`line-strip`:`triangle-list`)}finalizeState(t){super.finalizeState(t),this.state.emptyTexture.delete()}draw({uniforms:t}){let{model:i}=this.state;if(!i)return;let{viewport:o,renderPass:a}=this.context,{sizeScale:d,coordinateSystem:m,_instanced:b}=this.props,y={sizeScale:d,composeModelMatrix:!b||vA(o,m),flatShading:!this.state.hasNormals};i.shaderInputs.setProps({simpleMesh:y}),i.draw(a)}get isLoaded(){return!!(this.state?.model&&super.isLoaded)}getModel(t){let i=new De(this.context.device,s(r({},this.getShaders()),{id:this.props.id,bufferLayout:this.getAttributeManager().getBufferLayouts(),geometry:bm(t),isInstanced:!0}));return i.shaderInputs.setProps({simpleMesh:this.getTextureProps(this.props.texture)}),i}setTexture(t){let{model:i}=this.state;i&&i.shaderInputs.setProps({simpleMesh:this.getTextureProps(t)})}getTextureProps(t){let i=t||this.state.emptyTexture;return s(r({},this.context.device.type===`webgpu`?{simpleMeshTexture:i}:{sampler:i}),{hasTexture:!!t})}}return r$15.defaultProps=Av,r$15.layerName=`SimpleMeshLayer`,r$15})();var cv=`
|
|
248
|
+
struct VertexInputs {
|
|
249
|
+
@location(0) positions: vec3f,
|
|
250
|
+
#ifdef HAS_NORMALS
|
|
251
|
+
@location(1) normals: vec3f,
|
|
252
|
+
#endif
|
|
253
|
+
#ifdef HAS_TANGENTS
|
|
254
|
+
@location(2) TANGENT: vec4f,
|
|
255
|
+
#endif
|
|
256
|
+
#ifdef HAS_UV
|
|
257
|
+
@location(3) texCoords: vec2f,
|
|
258
|
+
#endif
|
|
259
|
+
#ifdef HAS_UV_1
|
|
260
|
+
@location(4) texCoords1: vec2f,
|
|
261
|
+
#endif
|
|
262
|
+
#ifdef HAS_SKIN
|
|
263
|
+
@location(5) JOINTS_0: vec4u,
|
|
264
|
+
@location(6) WEIGHTS_0: vec4f,
|
|
265
|
+
#endif
|
|
266
|
+
#ifdef HAS_GLTF_INSTANCING
|
|
267
|
+
@location(8) instanceModelMatrixCol0: vec4f,
|
|
268
|
+
@location(9) instanceModelMatrixCol1: vec4f,
|
|
269
|
+
@location(10) instanceModelMatrixCol2: vec4f,
|
|
270
|
+
@location(11) instanceModelMatrixCol3: vec4f,
|
|
271
|
+
@builtin(instance_index) instanceIndex: u32,
|
|
272
|
+
#endif
|
|
273
|
+
#ifdef HAS_GPU_CROWD_ANIMATION
|
|
274
|
+
@location(12) instanceAnimationFrames: vec4f,
|
|
275
|
+
@location(13) instanceAnimationBlend: vec4f,
|
|
276
|
+
#endif
|
|
277
|
+
#ifdef HAS_INSTANCED_MORPH
|
|
278
|
+
@builtin(vertex_index) vertexIndex: u32,
|
|
279
|
+
#endif
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
struct FragmentInputs {
|
|
283
|
+
@builtin(position) position: vec4f,
|
|
284
|
+
@location(0) pbrPosition: vec3f,
|
|
285
|
+
@location(1) pbrUV0: vec2f,
|
|
286
|
+
@location(2) pbrUV1: vec2f,
|
|
287
|
+
@location(3) pbrNormal: vec3f,
|
|
288
|
+
#ifdef HAS_TANGENTS
|
|
289
|
+
@location(4) pbrTangent: vec4f,
|
|
290
|
+
#endif
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
#ifdef HAS_GLTF_INSTANCING
|
|
294
|
+
fn getGLTFInstanceNormalMatrix(matrix: mat3x3f) -> mat3x3f {
|
|
295
|
+
let firstCofactor = cross(matrix[1], matrix[2]);
|
|
296
|
+
let inverseDeterminant = 1.0 / dot(matrix[0], firstCofactor);
|
|
297
|
+
return mat3x3f(
|
|
298
|
+
firstCofactor,
|
|
299
|
+
cross(matrix[2], matrix[0]),
|
|
300
|
+
cross(matrix[0], matrix[1])
|
|
301
|
+
) * inverseDeterminant;
|
|
302
|
+
}
|
|
303
|
+
#endif
|
|
304
|
+
|
|
305
|
+
@vertex
|
|
306
|
+
fn vertexMain(inputs: VertexInputs) -> FragmentInputs {
|
|
307
|
+
var outputs: FragmentInputs;
|
|
308
|
+
var position = vec4f(inputs.positions, 1.0);
|
|
309
|
+
var normal = vec3f(0.0, 0.0, 1.0);
|
|
310
|
+
var tangent = vec4f(1.0, 0.0, 0.0, 1.0);
|
|
311
|
+
var uv0 = vec2f(0.0, 0.0);
|
|
312
|
+
var uv1 = vec2f(0.0, 0.0);
|
|
313
|
+
|
|
314
|
+
#ifdef HAS_NORMALS
|
|
315
|
+
normal = inputs.normals;
|
|
316
|
+
#endif
|
|
317
|
+
#ifdef HAS_UV
|
|
318
|
+
uv0 = inputs.texCoords;
|
|
319
|
+
#endif
|
|
320
|
+
#ifdef HAS_UV_1
|
|
321
|
+
uv1 = inputs.texCoords1;
|
|
322
|
+
#endif
|
|
323
|
+
#ifdef HAS_TANGENTS
|
|
324
|
+
tangent = inputs.TANGENT;
|
|
325
|
+
#endif
|
|
326
|
+
|
|
327
|
+
#ifdef HAS_INSTANCED_MORPH
|
|
328
|
+
var animationFrames = vec4f(0.0);
|
|
329
|
+
var animationBlend = vec4f(0.0);
|
|
330
|
+
#ifdef HAS_GPU_CROWD_ANIMATION
|
|
331
|
+
animationFrames = inputs.instanceAnimationFrames;
|
|
332
|
+
animationBlend = inputs.instanceAnimationBlend;
|
|
333
|
+
#endif
|
|
334
|
+
position = vec4f(
|
|
335
|
+
position.xyz + getGPUCrowdMorphDelta(
|
|
336
|
+
inputs.instanceIndex,
|
|
337
|
+
inputs.vertexIndex,
|
|
338
|
+
0u,
|
|
339
|
+
u32(CROWD_MORPH_VERTEX_COUNT),
|
|
340
|
+
u32(CROWD_MORPH_TARGET_COUNT),
|
|
341
|
+
u32(CROWD_ANIMATION_JOINT_COUNT),
|
|
342
|
+
animationFrames,
|
|
343
|
+
animationBlend,
|
|
344
|
+
u32(CROWD_ANIMATION_FRAME_STRIDE)
|
|
345
|
+
),
|
|
346
|
+
1.0
|
|
347
|
+
);
|
|
348
|
+
#ifdef HAS_NORMALS
|
|
349
|
+
normal = normalize(normal + getGPUCrowdMorphDelta(
|
|
350
|
+
inputs.instanceIndex,
|
|
351
|
+
inputs.vertexIndex,
|
|
352
|
+
1u,
|
|
353
|
+
u32(CROWD_MORPH_VERTEX_COUNT),
|
|
354
|
+
u32(CROWD_MORPH_TARGET_COUNT),
|
|
355
|
+
u32(CROWD_ANIMATION_JOINT_COUNT),
|
|
356
|
+
animationFrames,
|
|
357
|
+
animationBlend,
|
|
358
|
+
u32(CROWD_ANIMATION_FRAME_STRIDE)
|
|
359
|
+
));
|
|
360
|
+
#endif
|
|
361
|
+
#ifdef HAS_TANGENTS
|
|
362
|
+
tangent = vec4f(normalize(tangent.xyz + getGPUCrowdMorphDelta(
|
|
363
|
+
inputs.instanceIndex,
|
|
364
|
+
inputs.vertexIndex,
|
|
365
|
+
2u,
|
|
366
|
+
u32(CROWD_MORPH_VERTEX_COUNT),
|
|
367
|
+
u32(CROWD_MORPH_TARGET_COUNT),
|
|
368
|
+
u32(CROWD_ANIMATION_JOINT_COUNT),
|
|
369
|
+
animationFrames,
|
|
370
|
+
animationBlend,
|
|
371
|
+
u32(CROWD_ANIMATION_FRAME_STRIDE)
|
|
372
|
+
)), tangent.w);
|
|
373
|
+
#endif
|
|
374
|
+
#endif
|
|
375
|
+
|
|
376
|
+
#ifdef HAS_SKIN
|
|
377
|
+
#ifdef HAS_GPU_CROWD_ANIMATION
|
|
378
|
+
let skinMatrix = getGPUAnimatedSkinMatrix(
|
|
379
|
+
inputs.WEIGHTS_0,
|
|
380
|
+
inputs.JOINTS_0,
|
|
381
|
+
inputs.instanceAnimationFrames,
|
|
382
|
+
inputs.instanceAnimationBlend,
|
|
383
|
+
u32(CROWD_ANIMATION_FRAME_STRIDE)
|
|
384
|
+
);
|
|
385
|
+
#else
|
|
386
|
+
#ifdef HAS_INSTANCED_SKIN
|
|
387
|
+
let skinMatrix = getInstancedSkinMatrix(
|
|
388
|
+
inputs.WEIGHTS_0,
|
|
389
|
+
inputs.JOINTS_0,
|
|
390
|
+
inputs.instanceIndex,
|
|
391
|
+
u32(CROWD_JOINTS_PER_INSTANCE)
|
|
392
|
+
);
|
|
393
|
+
#else
|
|
394
|
+
let skinMatrix = getSkinMatrix(inputs.WEIGHTS_0, inputs.JOINTS_0);
|
|
395
|
+
#endif
|
|
396
|
+
#endif
|
|
397
|
+
position = skinMatrix * position;
|
|
398
|
+
normal = normalize((skinMatrix * vec4f(normal, 0.0)).xyz);
|
|
399
|
+
#ifdef HAS_TANGENTS
|
|
400
|
+
tangent = vec4f(normalize((skinMatrix * vec4f(tangent.xyz, 0.0)).xyz), tangent.w);
|
|
401
|
+
#endif
|
|
402
|
+
#endif
|
|
403
|
+
|
|
404
|
+
#ifdef HAS_GLTF_INSTANCING
|
|
405
|
+
var instanceMatrix = mat4x4f(
|
|
406
|
+
inputs.instanceModelMatrixCol0,
|
|
407
|
+
inputs.instanceModelMatrixCol1,
|
|
408
|
+
inputs.instanceModelMatrixCol2,
|
|
409
|
+
inputs.instanceModelMatrixCol3
|
|
410
|
+
);
|
|
411
|
+
#ifdef HAS_GPU_CROWD_ANIMATION
|
|
412
|
+
instanceMatrix *= sampleGPUAnimationMatrix(
|
|
413
|
+
inputs.instanceAnimationFrames,
|
|
414
|
+
inputs.instanceAnimationBlend,
|
|
415
|
+
0u,
|
|
416
|
+
u32(CROWD_ANIMATION_FRAME_STRIDE)
|
|
417
|
+
);
|
|
418
|
+
#endif
|
|
419
|
+
position = instanceMatrix * position;
|
|
420
|
+
normal = normalize(getGLTFInstanceNormalMatrix(mat3x3f(
|
|
421
|
+
instanceMatrix[0].xyz,
|
|
422
|
+
instanceMatrix[1].xyz,
|
|
423
|
+
instanceMatrix[2].xyz
|
|
424
|
+
)) * normal);
|
|
425
|
+
#ifdef HAS_TANGENTS
|
|
426
|
+
tangent = vec4f(normalize((instanceMatrix * vec4f(tangent.xyz, 0.0)).xyz), tangent.w);
|
|
427
|
+
#endif
|
|
428
|
+
#endif
|
|
429
|
+
|
|
430
|
+
let worldPosition = pbrProjection.modelMatrix * position;
|
|
431
|
+
|
|
432
|
+
#ifdef HAS_NORMALS
|
|
433
|
+
normal = normalize((pbrProjection.normalMatrix * vec4f(normal, 0.0)).xyz);
|
|
434
|
+
#endif
|
|
435
|
+
#ifdef HAS_TANGENTS
|
|
436
|
+
let worldTangent = normalize((pbrProjection.modelMatrix * vec4f(tangent.xyz, 0.0)).xyz);
|
|
437
|
+
outputs.pbrTangent = vec4f(worldTangent, tangent.w);
|
|
438
|
+
#endif
|
|
439
|
+
|
|
440
|
+
outputs.position = pbrProjection.modelViewProjectionMatrix * position;
|
|
441
|
+
outputs.pbrPosition = worldPosition.xyz / worldPosition.w;
|
|
442
|
+
outputs.pbrUV0 = uv0;
|
|
443
|
+
outputs.pbrUV1 = uv1;
|
|
444
|
+
outputs.pbrNormal = normal;
|
|
445
|
+
return outputs;
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
@fragment
|
|
449
|
+
fn fragmentMain(inputs: FragmentInputs) -> @location(0) vec4f {
|
|
450
|
+
fragmentInputs.pbr_vPosition = inputs.pbrPosition;
|
|
451
|
+
fragmentInputs.pbr_vUV0 = inputs.pbrUV0;
|
|
452
|
+
fragmentInputs.pbr_vUV1 = inputs.pbrUV1;
|
|
453
|
+
fragmentInputs.pbr_vNormal = inputs.pbrNormal;
|
|
454
|
+
#ifdef HAS_TANGENTS
|
|
455
|
+
let tangent = normalize(inputs.pbrTangent.xyz);
|
|
456
|
+
let bitangent = normalize(cross(inputs.pbrNormal, tangent)) * inputs.pbrTangent.w;
|
|
457
|
+
fragmentInputs.pbr_vTBN = mat3x3f(tangent, bitangent, inputs.pbrNormal);
|
|
458
|
+
#endif
|
|
459
|
+
return pbr_filterColor(vec4f(1.0));
|
|
460
|
+
}
|
|
461
|
+
`;var lv=`#version 300 es
|
|
462
|
+
|
|
463
|
+
// in vec4 POSITION;
|
|
464
|
+
in vec4 positions;
|
|
465
|
+
|
|
466
|
+
#ifdef HAS_NORMALS
|
|
467
|
+
// in vec4 NORMAL;
|
|
468
|
+
in vec4 normals;
|
|
469
|
+
#endif
|
|
470
|
+
|
|
471
|
+
#ifdef HAS_TANGENTS
|
|
472
|
+
in vec4 TANGENT;
|
|
473
|
+
#endif
|
|
474
|
+
|
|
475
|
+
#ifdef HAS_UV
|
|
476
|
+
// in vec2 TEXCOORD_0;
|
|
477
|
+
in vec2 texCoords;
|
|
478
|
+
#endif
|
|
479
|
+
|
|
480
|
+
#ifdef HAS_UV_1
|
|
481
|
+
in vec2 texCoords1;
|
|
482
|
+
#endif
|
|
483
|
+
|
|
484
|
+
#ifdef HAS_SKIN
|
|
485
|
+
in uvec4 JOINTS_0;
|
|
486
|
+
in vec4 WEIGHTS_0;
|
|
487
|
+
#endif
|
|
488
|
+
|
|
489
|
+
#ifdef HAS_GLTF_INSTANCING
|
|
490
|
+
in vec4 instanceModelMatrixCol0;
|
|
491
|
+
in vec4 instanceModelMatrixCol1;
|
|
492
|
+
in vec4 instanceModelMatrixCol2;
|
|
493
|
+
in vec4 instanceModelMatrixCol3;
|
|
494
|
+
#endif
|
|
495
|
+
|
|
496
|
+
#ifdef HAS_GPU_CROWD_ANIMATION
|
|
497
|
+
in vec4 instanceAnimationFrames;
|
|
498
|
+
in vec4 instanceAnimationBlend;
|
|
499
|
+
#endif
|
|
500
|
+
|
|
501
|
+
void main(void) {
|
|
502
|
+
vec4 _NORMAL = vec4(0.);
|
|
503
|
+
vec4 _TANGENT = vec4(0.);
|
|
504
|
+
vec2 _TEXCOORD_0 = vec2(0.);
|
|
505
|
+
vec2 _TEXCOORD_1 = vec2(0.);
|
|
506
|
+
|
|
507
|
+
#ifdef HAS_NORMALS
|
|
508
|
+
_NORMAL = normals;
|
|
509
|
+
#endif
|
|
510
|
+
|
|
511
|
+
#ifdef HAS_TANGENTS
|
|
512
|
+
_TANGENT = TANGENT;
|
|
513
|
+
#endif
|
|
514
|
+
|
|
515
|
+
#ifdef HAS_UV
|
|
516
|
+
_TEXCOORD_0 = texCoords;
|
|
517
|
+
#endif
|
|
518
|
+
|
|
519
|
+
#ifdef HAS_UV_1
|
|
520
|
+
_TEXCOORD_1 = texCoords1;
|
|
521
|
+
#endif
|
|
522
|
+
|
|
523
|
+
vec4 pos = positions;
|
|
524
|
+
|
|
525
|
+
#ifdef HAS_INSTANCED_MORPH
|
|
526
|
+
vec4 animationFrames = vec4(0.0);
|
|
527
|
+
vec4 animationBlend = vec4(0.0);
|
|
528
|
+
#ifdef HAS_GPU_CROWD_ANIMATION
|
|
529
|
+
animationFrames = instanceAnimationFrames;
|
|
530
|
+
animationBlend = instanceAnimationBlend;
|
|
531
|
+
#endif
|
|
532
|
+
pos.xyz += getGPUCrowdMorphDelta(
|
|
533
|
+
uint(gl_InstanceID),
|
|
534
|
+
uint(gl_VertexID),
|
|
535
|
+
0u,
|
|
536
|
+
uint(CROWD_MORPH_TARGET_COUNT),
|
|
537
|
+
uint(CROWD_ANIMATION_JOINT_COUNT),
|
|
538
|
+
animationFrames,
|
|
539
|
+
animationBlend
|
|
540
|
+
);
|
|
541
|
+
#ifdef HAS_NORMALS
|
|
542
|
+
_NORMAL.xyz = normalize(_NORMAL.xyz + getGPUCrowdMorphDelta(
|
|
543
|
+
uint(gl_InstanceID),
|
|
544
|
+
uint(gl_VertexID),
|
|
545
|
+
1u,
|
|
546
|
+
uint(CROWD_MORPH_TARGET_COUNT),
|
|
547
|
+
uint(CROWD_ANIMATION_JOINT_COUNT),
|
|
548
|
+
animationFrames,
|
|
549
|
+
animationBlend
|
|
550
|
+
));
|
|
551
|
+
#endif
|
|
552
|
+
#ifdef HAS_TANGENTS
|
|
553
|
+
_TANGENT.xyz = normalize(_TANGENT.xyz + getGPUCrowdMorphDelta(
|
|
554
|
+
uint(gl_InstanceID),
|
|
555
|
+
uint(gl_VertexID),
|
|
556
|
+
2u,
|
|
557
|
+
uint(CROWD_MORPH_TARGET_COUNT),
|
|
558
|
+
uint(CROWD_ANIMATION_JOINT_COUNT),
|
|
559
|
+
animationFrames,
|
|
560
|
+
animationBlend
|
|
561
|
+
));
|
|
562
|
+
#endif
|
|
563
|
+
#endif
|
|
564
|
+
|
|
565
|
+
#ifdef HAS_SKIN
|
|
566
|
+
#ifdef HAS_GPU_CROWD_ANIMATION
|
|
567
|
+
mat4 skinMat = getGPUAnimatedSkinMatrix(
|
|
568
|
+
WEIGHTS_0,
|
|
569
|
+
JOINTS_0,
|
|
570
|
+
instanceAnimationFrames,
|
|
571
|
+
instanceAnimationBlend
|
|
572
|
+
);
|
|
573
|
+
#else
|
|
574
|
+
#ifdef HAS_INSTANCED_SKIN
|
|
575
|
+
mat4 skinMat = getInstancedSkinMatrix(
|
|
576
|
+
WEIGHTS_0,
|
|
577
|
+
JOINTS_0,
|
|
578
|
+
uint(gl_InstanceID),
|
|
579
|
+
uint(CROWD_JOINTS_PER_INSTANCE)
|
|
580
|
+
);
|
|
581
|
+
#else
|
|
582
|
+
mat4 skinMat = getSkinMatrix(WEIGHTS_0, JOINTS_0);
|
|
583
|
+
#endif
|
|
584
|
+
#endif
|
|
585
|
+
pos = skinMat * pos;
|
|
586
|
+
_NORMAL = skinMat * _NORMAL;
|
|
587
|
+
_TANGENT = vec4((skinMat * vec4(_TANGENT.xyz, 0.)).xyz, _TANGENT.w);
|
|
588
|
+
#endif
|
|
589
|
+
|
|
590
|
+
#ifdef HAS_GLTF_INSTANCING
|
|
591
|
+
mat4 instanceMatrix = mat4(
|
|
592
|
+
instanceModelMatrixCol0,
|
|
593
|
+
instanceModelMatrixCol1,
|
|
594
|
+
instanceModelMatrixCol2,
|
|
595
|
+
instanceModelMatrixCol3
|
|
596
|
+
);
|
|
597
|
+
#ifdef HAS_GPU_CROWD_ANIMATION
|
|
598
|
+
instanceMatrix *= sampleGPUAnimationMatrix(
|
|
599
|
+
instanceAnimationFrames,
|
|
600
|
+
instanceAnimationBlend,
|
|
601
|
+
0
|
|
602
|
+
);
|
|
603
|
+
#endif
|
|
604
|
+
pos = instanceMatrix * pos;
|
|
605
|
+
_NORMAL = vec4(normalize(transpose(inverse(mat3(instanceMatrix))) * _NORMAL.xyz), 0.0);
|
|
606
|
+
_TANGENT = vec4(normalize(mat3(instanceMatrix) * _TANGENT.xyz), _TANGENT.w);
|
|
607
|
+
#endif
|
|
608
|
+
|
|
609
|
+
pbr_setPositionNormalTangentUV(pos, _NORMAL, _TANGENT, _TEXCOORD_0, _TEXCOORD_1);
|
|
610
|
+
gl_Position = pbrProjection.modelViewProjectionMatrix * pos;
|
|
611
|
+
}
|
|
612
|
+
`;var uv=`#version 300 es
|
|
613
|
+
out vec4 fragmentColor;
|
|
614
|
+
|
|
615
|
+
void main(void) {
|
|
616
|
+
vec3 pos = pbr_vPosition;
|
|
617
|
+
fragmentColor = pbr_filterColor(vec4(1.0));
|
|
618
|
+
}
|
|
619
|
+
`;function Gc(r$16,e){let t=e.materialFactory||new mt$1(r$16,{modules:[rd$1]}),i=r({},e.parsedPPBRMaterial.uniforms);delete i.camera;let o=Object.fromEntries(Object.entries(r(r({},i),e.parsedPPBRMaterial.bindings)).filter(([d,m])=>t.ownsBinding(d)&&fv(m))),a=t.createMaterial({id:e.id,bindings:o});return a.setProps({pbrMaterial:i}),a}function Tm(r$17,e){let{id:t,geometry:i,parsedPPBRMaterial:o,vertexCount:a,modelOptions:d={},instanceMatrices:m,morphTargets:b=[]}=e,y=d.userData?.gltfAnimatedCrowd;if(y&&m)throw new Error(`Nested glTF crowd instancing is unsupported`);f.info(4,`createGLTFModel defines: `,o.defines)();let _=[],w={depthWriteEnabled:!0,depthCompare:`less`,depthFormat:`depth24plus`,cullMode:`back`},S={},M=[],k=[],O=[],Q=!!y?.gpuAnimation;if(m||y)for(let St=0;St<4;St++){let kt=new Float32Array((y?.capacity||m?.length||0)*4);m?.forEach((Ai,Ur)=>{for(let fn=0;fn<4;fn++)kt[Ur*4+fn]=Ai[St*4+fn]});let or=`instanceModelMatrixCol${St}`,Nn=r$17.createBuffer({id:`${t||`gltf`}-${or}`,data:kt,usage:P.VERTEX|P.COPY_DST});S[or]=Nn,M.push({name:or,format:`float32x4`,stepMode:`instance`}),_.push(Nn),k.push(Nn),O.push(kt)}let V,G,J,$;if(y&&Q){V=new Float32Array(y.capacity*4),J=new Float32Array(y.capacity*4);for(let[St,kt]of[[`instanceAnimationFrames`,V],[`instanceAnimationBlend`,J]]){let or=r$17.createBuffer({id:`${t||`gltf`}-${St}`,data:kt,usage:P.VERTEX|P.COPY_DST});S[St]=or,M.push({name:St,format:`float32x4`,stepMode:`instance`}),_.push(or),St===`instanceAnimationFrames`?G=or:$=or}}let te=!!o.defines.HAS_SKIN,re=!!(y&&te&&!Q),le,Y;y&&re&&(Y=new Float32Array(y.capacity*y.jointsPerInstance*16),le=r$17.type===`webgpu`?r$17.createBuffer({id:`${t||`gltf`}-crowd-joint-matrices`,byteLength:Y.byteLength,usage:P.STORAGE|P.COPY_DST}):r$17.createTexture({id:`${t||`gltf`}-crowd-joint-matrices`,format:`rgba32float`,width:y.jointsPerInstance*4,height:y.capacity,usage:v$1.SAMPLE|v$1.COPY_DST,sampler:{minFilter:`nearest`,magFilter:`nearest`,mipmapFilter:`nearest`}}),_.push(le));let z=y?b.length:0,B=Math.floor((i.attributes.POSITION?.value.length||0)/3),ue,we,Ee;if(y&&z>0&&B>0){let St=new Float32Array(z*3*B*4);for(let[kt,or]of b.entries())for(let[Nn,Ai]of[`POSITION`,`NORMAL`,`TANGENT`].entries()){let Ur=or[Ai];if(!Ur)continue;let fn=Ai===`TANGENT`&&Ur.length===B*4?4:3;for(let ai=0;ai<B;ai++){let ho=((kt*3+Nn)*B+ai)*4,po=ai*fn;St[ho]=Ur[po]||0,St[ho+1]=Ur[po+1]||0,St[ho+2]=Ur[po+2]||0}}if(ue=Uc(r$17,`${t||`gltf`}-crowd-morph-targets`,St,B,z*3),_.push(ue),!Q){let kt=Math.ceil(z/4);we=new Float32Array(y.capacity*kt*4),Ee=Uc(r$17,`${t||`gltf`}-crowd-morph-weights`,we,kt,y.capacity),_.push(Ee)}}let _e=te&&y?y.jointsPerInstance:0,Ne=4+_e*4+z,Fe,Oe;y?.gpuAnimation&&(Oe=new Float32Array(y.gpuAnimation.frameCount*Ne*4),Fe=Uc(r$17,`${t||`gltf`}-crowd-animation-frames`,Oe,Ne,y.gpuAnimation.frameCount),_.push(Fe));let Ge=cv;for(let[St,kt]of[[`CROWD_JOINTS_PER_INSTANCE`,y?.jointsPerInstance||0],[`CROWD_MORPH_VERTEX_COUNT`,B],[`CROWD_MORPH_TARGET_COUNT`,z],[`CROWD_ANIMATION_JOINT_COUNT`,_e],[`CROWD_ANIMATION_FRAME_STRIDE`,Ne]])Ge=Ge.replaceAll(`u32(${St})`,`u32(${kt})`);let He=s(r(r({id:t,source:Ge,vs:lv,fs:uv,geometry:i,topology:i.topology,vertexCount:a,modules:[rd$1,Zp$1,...y?[ed$1]:[]]},d),m||y?{attributes:r(r({},d.attributes),S),bufferLayout:[...d.bufferLayout||[],...M],instanceCount:m?.length||0,isInstanced:!0}:{}),{defines:r(r(r(r(r(r(r({},o.defines),d.defines),m||y?{HAS_GLTF_INSTANCING:!0}:{}),re?{HAS_INSTANCED_SKIN:!0,CROWD_JOINTS_PER_INSTANCE:y.jointsPerInstance}:{}),Q?{HAS_GPU_CROWD_ANIMATION:!0,CROWD_ANIMATION_FRAME_STRIDE:Ne}:{}),ue?{HAS_INSTANCED_MORPH:!0,CROWD_MORPH_TARGET_COUNT:z}:{}),y?{CROWD_ANIMATION_JOINT_COUNT:_e}:{}),parameters:r(r(r({},w),o.parameters),d.parameters)}),je=e.material||Gc(r$17,{id:t?`${t}-material`:void 0,parsedPPBRMaterial:o});He.material=je;let qe=new De(r$17,He),vt=r(r(r(r({},o.uniforms),d.uniforms),o.bindings),d.bindings),Da=hv(qe.shaderInputs.getModules(),je,vt);qe.shaderInputs.setProps(Da),le&&qe.shaderInputs.setProps({skin:{jointMatrices:[],skinJointMatrices:le}}),(Fe||ue||Ee)&&qe.shaderInputs.setProps({gpuAnimation:r(r(r({},Fe?{gpuAnimationFrames:Fe}:{}),ue?{gpuMorphTargets:ue}:{}),Ee?{gpuMorphWeights:Ee}:{})});let fo=new hi({managedResources:_,model:qe,bounds:e.bounds,instanceMatrices:m});return y&&(fo.userData.gltfAnimatedCrowd={transformBuffers:k,transformColumns:O,skinJointMatrices:le,jointMatrices:Y,jointsPerInstance:y.jointsPerInstance,morphTargetCount:z,morphTargetData:ue,morphWeights:we,morphWeightData:Ee,animationFrames:Fe,animationFrameValues:Oe,animationFrameStride:Ne,animationJointCount:_e,animationParameters:V,animationParameterBuffer:G,animationBlend:J,animationBlendBuffer:$}),fo}function Uc(r,e,t,i,o){if(r.type===`webgpu`)return r.createBuffer({id:e,data:t,usage:P.STORAGE|P.COPY_DST});let a=r.createTexture({id:e,format:`rgba32float`,width:i,height:o,usage:v$1.SAMPLE|v$1.COPY_DST,sampler:{minFilter:`nearest`,magFilter:`nearest`,mipmapFilter:`nearest`}});return a.writeData(t,{width:i,height:o}),a}function fv(r){return r instanceof P||r instanceof fi||r instanceof Y||r instanceof v$1||r instanceof je}function hv(r,e,t){let i=new Map;for(let a of r){for(let d of Object.keys(a.uniformTypes||{}))i.set(d,a.name);for(let d of a.bindingLayout||[])i.set(d.name,a.name)}let o={};for(let[a,d]of Object.entries(t)){if(d===void 0)continue;let m=i.get(a);!m||e.ownsModule(m)||(o[m]||={},o[m][a]=d)}return o}function ym(r,e){let t=e.extensions?.EXT_mesh_gpu_instancing?.attributes;if(!t||typeof t!=`object`)return null;let i={},o;for(let[d,m]of Object.entries(t)){let b=typeof m==`number`?r.accessors[m]:m;if(!b||!ArrayBuffer.isView(b.value))throw new Error(`Invalid glTF instance accessor for ${d}`);if(o!==void 0&&b.count!==o)throw new Error(`glTF instance attributes must have matching accessor counts`);o=b.count,i[d]={value:b.value,size:b.components||dv(b.type),count:b.count,normalized:!!b.normalized}}let a=[];for(let d=0;d<(o||0);d++){let m=jc(i.TRANSLATION,d,[0,0,0]),b=jc(i.ROTATION,d,[0,0,0,1]),y=jc(i.SCALE,d,[1,1,1]),_=Math.hypot(...b);if(_>0)for(let w=0;w<b.length;w++)b[w]/=_;a.push(new U().translate(m).multiplyRight(new U().fromQuaternion(b)).scale(y))}return{matrices:a,attributes:i}}function jc(r,e,t){if(!r)return[...t];let i=r.value;return t.map((o,a)=>{let d=i[e*r.size+a];return d===void 0?o:r.normalized?r.value instanceof Int8Array?Math.max(d/127,-1):r.value instanceof Int16Array?Math.max(d/32767,-1):r.value instanceof Uint8Array?d/255:r.value instanceof Uint16Array?d/65535:d:d})}function dv(r){switch(r){case`VEC2`:return 2;case`VEC3`:return 3;case`VEC4`:return 4;default:return 1}}function SA(r,e){r.userData.morphWeights=[...e];let t=r.userData.morphMeshes||[];for(let i of t)i.preorderTraversal(o=>{if(!(o instanceof hi))return;let a=o.userData.morphTargets;a&&(Yd$1(o.model,a.geometry,a.targets,e),o.userData.morphWeights=[...e])})}var Be=(function(r){return r[r.POINTS=0]=`POINTS`,r[r.LINES=1]=`LINES`,r[r.LINE_LOOP=2]=`LINE_LOOP`,r[r.LINE_STRIP=3]=`LINE_STRIP`,r[r.TRIANGLES=4]=`TRIANGLES`,r[r.TRIANGLE_STRIP=5]=`TRIANGLE_STRIP`,r[r.TRIANGLE_FAN=6]=`TRIANGLE_FAN`,r[r.ONE=1]=`ONE`,r[r.SRC_ALPHA=770]=`SRC_ALPHA`,r[r.ONE_MINUS_SRC_ALPHA=771]=`ONE_MINUS_SRC_ALPHA`,r[r.FUNC_ADD=32774]=`FUNC_ADD`,r[r.LINEAR=9729]=`LINEAR`,r[r.NEAREST=9728]=`NEAREST`,r[r.NEAREST_MIPMAP_NEAREST=9984]=`NEAREST_MIPMAP_NEAREST`,r[r.LINEAR_MIPMAP_NEAREST=9985]=`LINEAR_MIPMAP_NEAREST`,r[r.NEAREST_MIPMAP_LINEAR=9986]=`NEAREST_MIPMAP_LINEAR`,r[r.LINEAR_MIPMAP_LINEAR=9987]=`LINEAR_MIPMAP_LINEAR`,r[r.TEXTURE_MAG_FILTER=10240]=`TEXTURE_MAG_FILTER`,r[r.TEXTURE_MIN_FILTER=10241]=`TEXTURE_MIN_FILTER`,r[r.TEXTURE_WRAP_S=10242]=`TEXTURE_WRAP_S`,r[r.TEXTURE_WRAP_T=10243]=`TEXTURE_WRAP_T`,r[r.REPEAT=10497]=`REPEAT`,r[r.CLAMP_TO_EDGE=33071]=`CLAMP_TO_EDGE`,r[r.MIRRORED_REPEAT=33648]=`MIRRORED_REPEAT`,r[r.UNPACK_FLIP_Y_WEBGL=37440]=`UNPACK_FLIP_Y_WEBGL`,r})(Be||{});function pv(r){switch(r){case Be.POINTS:return`point-list`;case Be.LINES:return`line-list`;case Be.LINE_STRIP:return`line-strip`;case Be.TRIANGLES:return`triangle-list`;case Be.TRIANGLE_STRIP:return`triangle-strip`;default:throw new Error(String(r))}}function xm(r,e,t){if(r!==Be.LINE_LOOP&&r!==Be.TRIANGLE_FAN)return{topology:pv(r)};let i=e?.length??t,o=r===Be.LINE_LOOP?i>=2?i*2:0:i>=3?(i-2)*3:0,d=new(e instanceof Uint32Array||!e&&t>65536?Uint32Array:Uint16Array)(o),m=b=>e?.[b]??b;if(r===Be.LINE_LOOP){for(let b=0;b<i;b++)d[b*2]=m(b),d[b*2+1]=m((b+1)%i);return{topology:`line-list`,indices:d}}for(let b=0;b<i-2;b++)d[b*3]=m(0),d[b*3+1]=m(b+1),d[b*3+2]=m(b+2);return{topology:`triangle-list`,indices:d}}var Vc=[Tt(`baseColor`,`pbr_baseColorSampler`,`baseColorTexture`,[`pbrMetallicRoughness`,`baseColorTexture`]),Tt(`metallicRoughness`,`pbr_metallicRoughnessSampler`,`metallicRoughnessTexture`,[`pbrMetallicRoughness`,`metallicRoughnessTexture`]),Tt(`normal`,`pbr_normalSampler`,`normalTexture`,[`normalTexture`]),Tt(`occlusion`,`pbr_occlusionSampler`,`occlusionTexture`,[`occlusionTexture`]),Tt(`emissive`,`pbr_emissiveSampler`,`emissiveTexture`,[`emissiveTexture`]),Tt(`specularColor`,`pbr_specularColorSampler`,`KHR_materials_specular.specularColorTexture`,[`extensions`,`KHR_materials_specular`,`specularColorTexture`]),Tt(`specularIntensity`,`pbr_specularIntensitySampler`,`KHR_materials_specular.specularTexture`,[`extensions`,`KHR_materials_specular`,`specularTexture`]),Tt(`transmission`,`pbr_transmissionSampler`,`KHR_materials_transmission.transmissionTexture`,[`extensions`,`KHR_materials_transmission`,`transmissionTexture`]),Tt(`thickness`,`pbr_thicknessSampler`,`KHR_materials_volume.thicknessTexture`,[`extensions`,`KHR_materials_volume`,`thicknessTexture`]),Tt(`clearcoat`,`pbr_clearcoatSampler`,`KHR_materials_clearcoat.clearcoatTexture`,[`extensions`,`KHR_materials_clearcoat`,`clearcoatTexture`]),Tt(`clearcoatRoughness`,`pbr_clearcoatRoughnessSampler`,`KHR_materials_clearcoat.clearcoatRoughnessTexture`,[`extensions`,`KHR_materials_clearcoat`,`clearcoatRoughnessTexture`]),Tt(`clearcoatNormal`,`pbr_clearcoatNormalSampler`,`KHR_materials_clearcoat.clearcoatNormalTexture`,[`extensions`,`KHR_materials_clearcoat`,`clearcoatNormalTexture`]),Tt(`sheenColor`,`pbr_sheenColorSampler`,`KHR_materials_sheen.sheenColorTexture`,[`extensions`,`KHR_materials_sheen`,`sheenColorTexture`]),Tt(`sheenRoughness`,`pbr_sheenRoughnessSampler`,`KHR_materials_sheen.sheenRoughnessTexture`,[`extensions`,`KHR_materials_sheen`,`sheenRoughnessTexture`]),Tt(`iridescence`,`pbr_iridescenceSampler`,`KHR_materials_iridescence.iridescenceTexture`,[`extensions`,`KHR_materials_iridescence`,`iridescenceTexture`]),Tt(`iridescenceThickness`,`pbr_iridescenceThicknessSampler`,`KHR_materials_iridescence.iridescenceThicknessTexture`,[`extensions`,`KHR_materials_iridescence`,`iridescenceThicknessTexture`]),Tt(`anisotropy`,`pbr_anisotropySampler`,`KHR_materials_anisotropy.anisotropyTexture`,[`extensions`,`KHR_materials_anisotropy`,`anisotropyTexture`]),Tt(`bump`,`pbr_bumpSampler`,`EXT_materials_bump.bumpTexture`,[`extensions`,`EXT_materials_bump`,`bumpTexture`]),Tt(`diffuseTransmission`,`pbr_diffuseTransmissionSampler`,`KHR_materials_diffuse_transmission.diffuseTransmissionTexture`,[`extensions`,`KHR_materials_diffuse_transmission`,`diffuseTransmissionTexture`]),Tt(`diffuseTransmissionColor`,`pbr_diffuseTransmissionColorSampler`,`KHR_materials_diffuse_transmission.diffuseTransmissionColorTexture`,[`extensions`,`KHR_materials_diffuse_transmission`,`diffuseTransmissionColorTexture`]),Tt(`multiscatterColor`,`pbr_multiscatterColorSampler`,`KHR_materials_volume_scatter.multiscatterColorTexture`,[`extensions`,`KHR_materials_volume_scatter`,`multiscatterColorTexture`])];var mv=new Map(Vc.map(r=>[r.slot,r]));function Tt(r,e,t,i){return{slot:r,binding:e,displayName:t,pathSegments:i,colorSpace:r===`baseColor`||r===`emissive`||r===`specularColor`||r===`sheenColor`||r===`diffuseTransmissionColor`||r===`multiscatterColor`?`srgb`:`linear`,uvSetUniform:`${r}UVSet`,uvTransformUniform:`${r}UVTransform`}}function _m(){return Vc}function IA(r){let e=mv.get(r);if(!e)throw new Error(`Unknown PBR texture transform slot ${r}`);return e}function MA(r){let e=r?.extensions?.KHR_texture_transform;return{offset:e?.offset?[e.offset[0],e.offset[1]]:[0,0],rotation:e?.rotation??0,scale:e?.scale?[e.scale[0],e.scale[1]]:[1,1]}}function zc(r){return r?.extensions?.KHR_texture_transform?.texCoord??r?.texCoord??0}function wm(r){return Vc.find(e=>e.pathSegments.length===r.length&&e.pathSegments.every((t,i)=>r[i]===t))||null}function CA(r){let e=new tt().set(1,0,0,0,1,0,r.offset[0],r.offset[1],1),t=new tt().set(Math.cos(r.rotation),Math.sin(r.rotation),0,-Math.sin(r.rotation),Math.cos(r.rotation),0,0,0,1),i=new tt().set(r.scale[0],0,0,0,r.scale[1],0,0,0,1);return Array.from(e.multiplyRight(t).multiplyRight(i))}function Em(r,e){let t=new tt(CA(r)),i=new tt(CA(e)),o=new tt(t).invert();return Array.from(i.multiplyRight(o))}function Sm(r$18={}){let e=r$18.wrapS??r$18.parameters?.[Be.TEXTURE_WRAP_S],t=r$18.wrapT??r$18.parameters?.[Be.TEXTURE_WRAP_T],i=r$18.magFilter??r$18.parameters?.[Be.TEXTURE_MAG_FILTER],o=r$18.minFilter??r$18.parameters?.[Be.TEXTURE_MIN_FILTER],a=vm(e),d=vm(t),m=gv(i);return r(r(r(r({},a?{addressModeU:a}:{}),d?{addressModeV:d}:{}),m?{magFilter:m}:{}),bv(o))}function vm(r){switch(r){case Be.CLAMP_TO_EDGE:return`clamp-to-edge`;case Be.REPEAT:return`repeat`;case Be.MIRRORED_REPEAT:return`mirror-repeat`;default:return}}function gv(r){switch(r){case Be.NEAREST:return`nearest`;case Be.LINEAR:return`linear`;default:return}}function bv(r){switch(r){case Be.NEAREST:return{minFilter:`nearest`};case Be.LINEAR:return{minFilter:`linear`};case Be.NEAREST_MIPMAP_NEAREST:return{minFilter:`nearest`,mipmapFilter:`nearest`};case Be.LINEAR_MIPMAP_NEAREST:return{minFilter:`linear`,mipmapFilter:`nearest`};case Be.NEAREST_MIPMAP_LINEAR:return{minFilter:`nearest`,mipmapFilter:`linear`};case Be.LINEAR_MIPMAP_LINEAR:return{minFilter:`linear`,mipmapFilter:`linear`};default:return{}}}var Tv={NORMAL:[`NORMAL`,`normals`],TANGENT:[`TANGENT`],TEXCOORD_0:[`TEXCOORD_0`,`texCoords`],TEXCOORD_1:[`TEXCOORD_1`,`texCoords1`],JOINTS_0:[`JOINTS_0`],WEIGHTS_0:[`WEIGHTS_0`],COLOR_0:[`COLOR_0`,`colors`]};function $o(r,e,t,i){let o={defines:{MANUAL_SRGB:!0},bindings:{},uniforms:{camera:[0,0,0],metallicRoughnessValues:[1,1]},parameters:{},glParameters:{},generatedTextures:[]};o.defines.USE_TEX_LOD=!0;let{imageBasedLightingEnvironment:a}=i;return a&&(o.bindings.pbr_diffuseEnvSampler=a.diffuseEnvSampler.texture,o.bindings.pbr_specularEnvSampler=a.specularEnvSampler.texture,o.bindings.pbr_brdfLUT=a.brdfLutTexture.texture,o.uniforms.IBLenabled=!0,o.uniforms.scaleIBLAmbient=[1,1]),i?.pbrDebug&&(o.defines.PBR_DEBUG=!0,o.uniforms.scaleDiffBaseMR=[0,0,0,0],o.uniforms.scaleFGDSpec=[0,0,0,0]),kr(t,`NORMAL`)&&(o.defines.HAS_NORMALS=!0),kr(t,`TANGENT`)&&i?.useTangents&&(o.defines.HAS_TANGENTS=!0),kr(t,`TEXCOORD_0`)&&(o.defines.HAS_UV=!0),kr(t,`TEXCOORD_1`)&&(o.defines.HAS_UV_1=!0),kr(t,`JOINTS_0`)&&kr(t,`WEIGHTS_0`)&&(o.defines.HAS_SKIN=!0),kr(t,`COLOR_0`)&&(o.defines.HAS_COLORS=!0),i?.imageBasedLightingEnvironment&&(o.defines.USE_IBL=!0),i?.lights&&(o.defines.USE_LIGHTS=!0),e&&(i.validateAttributes!==!1&&yv(e,t),_v(r,e,o,t,i.gltf)),o}function yv(r,e){let t=Cm(r,0);t.length>0&&!kr(e,`TEXCOORD_0`)&&f.warn(`glTF material uses ${t.join(`, `)} but primitive is missing TEXCOORD_0; textured shading will sample the default UV coordinates`)();let i=Cm(r,1);if(i.length>0&&!kr(e,`TEXCOORD_1`)&&f.warn(`glTF material uses ${i.join(`, `)} with TEXCOORD_1 but primitive is missing TEXCOORD_1; those textures will be skipped`)(),!!(r.unlit||r.extensions?.KHR_materials_unlit)||kr(e,`NORMAL`))return;let a=r.normalTexture?`lit PBR shading with normalTexture`:`lit PBR shading`;f.warn(`glTF primitive is missing NORMAL while using ${a}; shading will fall back to geometric normals`)()}function Cm(r,e){let t=[];for(let i of _m()){let o=xv(r,i.pathSegments);o&&zc(o)===e&&t.push(i.displayName)}return t}function kr(r,e){return Tv[e].some(t=>!!r[t])}function xv(r,e){let t=r;for(let i of e)if(t=t?.[i],!t)return null;return t}function _v(r,e,t,i,o){if(t.uniforms.unlit=!!(e.unlit||e.extensions?.KHR_materials_unlit),e.pbrMetallicRoughness&&vv(r,e.pbrMetallicRoughness,t,i,o),e.normalTexture){yt(r,e.normalTexture,`pbr_normalSampler`,t,{featureOptions:{define:`HAS_NORMALMAP`,enabledUniformName:`normalMapEnabled`},gltf:o,attributes:i,textureTransformSlot:`normal`});let{scale:a=1}=e.normalTexture;t.uniforms.normalScale=a}if(e.occlusionTexture){yt(r,e.occlusionTexture,`pbr_occlusionSampler`,t,{featureOptions:{define:`HAS_OCCLUSIONMAP`,enabledUniformName:`occlusionMapEnabled`},gltf:o,attributes:i,textureTransformSlot:`occlusion`});let{strength:a=1}=e.occlusionTexture;t.uniforms.occlusionStrength=a}switch(t.uniforms.emissiveFactor=e.emissiveFactor||[0,0,0],e.emissiveTexture&&yt(r,e.emissiveTexture,`pbr_emissiveSampler`,t,{featureOptions:{define:`HAS_EMISSIVEMAP`,enabledUniformName:`emissiveMapEnabled`},gltf:o,attributes:i,textureTransformSlot:`emissive`}),Sv(r,e.extensions,t,o,i),e.alphaMode||`OPAQUE`){case`OPAQUE`:break;case`MASK`:{let{alphaCutoff:a=.5}=e;t.defines.ALPHA_CUTOFF=!0,t.uniforms.alphaCutoffEnabled=!0,t.uniforms.alphaCutoff=a;break}case`BLEND`:f.warn(`glTF BLEND alphaMode might not work well because it requires mesh sorting`)(),wv(t);break}}function wv(r){r.parameters.blend=!0,r.parameters.blendColorOperation=`add`,r.parameters.blendColorSrcFactor=`src-alpha`,r.parameters.blendColorDstFactor=`one-minus-src-alpha`,r.parameters.blendAlphaOperation=`add`,r.parameters.blendAlphaSrcFactor=`one`,r.parameters.blendAlphaDstFactor=`one-minus-src-alpha`,r.glParameters.blend=!0,r.glParameters.blendEquation=Be.FUNC_ADD,r.glParameters.blendFunc=[Be.SRC_ALPHA,Be.ONE_MINUS_SRC_ALPHA,Be.ONE,Be.ONE_MINUS_SRC_ALPHA]}function Ev(r){r.parameters.blend=!0,r.parameters.depthWriteEnabled=!1,r.parameters.blendColorOperation=`add`,r.parameters.blendColorSrcFactor=`one`,r.parameters.blendColorDstFactor=`one-minus-src-alpha`,r.parameters.blendAlphaOperation=`add`,r.parameters.blendAlphaSrcFactor=`one`,r.parameters.blendAlphaDstFactor=`one-minus-src-alpha`,r.glParameters.blend=!0,r.glParameters.depthMask=!1,r.glParameters.blendEquation=Be.FUNC_ADD,r.glParameters.blendFunc=[Be.ONE,Be.ONE_MINUS_SRC_ALPHA,Be.ONE,Be.ONE_MINUS_SRC_ALPHA]}function vv(r,e,t,i,o){e.baseColorTexture&&yt(r,e.baseColorTexture,`pbr_baseColorSampler`,t,{featureOptions:{define:`HAS_BASECOLORMAP`,enabledUniformName:`baseColorMapEnabled`},gltf:o,attributes:i,textureTransformSlot:`baseColor`}),t.uniforms.baseColorFactor=e.baseColorFactor||[1,1,1,1],e.metallicRoughnessTexture&&yt(r,e.metallicRoughnessTexture,`pbr_metallicRoughnessSampler`,t,{featureOptions:{define:`HAS_METALROUGHNESSMAP`,enabledUniformName:`metallicRoughnessMapEnabled`},gltf:o,attributes:i,textureTransformSlot:`metallicRoughness`});let{metallicFactor:a=1,roughnessFactor:d=1}=e;t.uniforms.metallicRoughnessValues=[a,d]}function Sv(r,e,t,i,o={}){e&&(Cv(e)&&(t.defines.USE_MATERIAL_EXTENSIONS=!0),Iv(r,e.KHR_materials_specular,t,i,o),Mv(e.KHR_materials_ior,t),Rv(r,e.EXT_materials_bump,t,i,o),Lv(r,e.KHR_materials_transmission,t,i,o),Pv(r,e.KHR_materials_diffuse_transmission,t,i,o),Nv(r,e.KHR_materials_volume,t,i,o),Fv(r,e.KHR_materials_volume_scatter,e.KHR_materials_volume,t,i,o),kv(e.KHR_materials_dispersion,t),Ov(r,e.KHR_materials_clearcoat,t,i,o),Dv(r,e.KHR_materials_sheen,t,i,o),Bv(r,e.KHR_materials_iridescence,t,i,o),Uv(r,e.KHR_materials_anisotropy,t,i,o),Gv(e.KHR_materials_emissive_strength,t))}function Cv(r){return!!(r.KHR_materials_specular||r.KHR_materials_ior||r.EXT_materials_bump||r.KHR_materials_transmission||r.KHR_materials_diffuse_transmission||r.KHR_materials_volume||r.KHR_materials_volume_scatter||r.KHR_materials_dispersion||r.KHR_materials_clearcoat||r.KHR_materials_sheen||r.KHR_materials_iridescence||r.KHR_materials_anisotropy)}function Iv(r,e,t,i,o={}){e&&(e.specularColorFactor&&(t.uniforms.specularColorFactor=e.specularColorFactor),e.specularFactor!==void 0&&(t.uniforms.specularIntensityFactor=e.specularFactor),e.specularColorTexture&&yt(r,e.specularColorTexture,`pbr_specularColorSampler`,t,{featureOptions:{define:`HAS_SPECULARCOLORMAP`,enabledUniformName:`specularColorMapEnabled`},gltf:i,attributes:o,textureTransformSlot:`specularColor`}),e.specularTexture&&yt(r,e.specularTexture,`pbr_specularIntensitySampler`,t,{featureOptions:{define:`HAS_SPECULARINTENSITYMAP`,enabledUniformName:`specularIntensityMapEnabled`},gltf:i,attributes:o,textureTransformSlot:`specularIntensity`}))}function Mv(r,e){r?.ior!==void 0&&(e.uniforms.ior=r.ior)}function Lv(r,e,t,i,o={}){e&&(e.transmissionFactor!==void 0&&(t.uniforms.transmissionFactor=e.transmissionFactor),e.transmissionTexture&&yt(r,e.transmissionTexture,`pbr_transmissionSampler`,t,{featureOptions:{define:`HAS_TRANSMISSIONMAP`,enabledUniformName:`transmissionMapEnabled`},gltf:i,attributes:o,textureTransformSlot:`transmission`}),((e.transmissionFactor??0)>0||e.transmissionTexture)&&(f.warn(`KHR_materials_transmission uses a premultiplied-alpha blending approximation and may require mesh sorting`)(),Ev(t)))}function Rv(r,e,t,i,o={}){e&&(t.uniforms.bumpFactor=Math.max(e.bumpFactor??1,0),e.bumpTexture&&yt(r,e.bumpTexture,`pbr_bumpSampler`,t,{featureOptions:{define:`HAS_BUMPMAP`,enabledUniformName:`bumpMapEnabled`},gltf:i,attributes:o,textureTransformSlot:`bump`}))}function Pv(r,e,t,i,o={}){e&&(t.uniforms.diffuseTransmissionFactor=Math.min(Math.max(e.diffuseTransmissionFactor??0,0),1),t.uniforms.diffuseTransmissionColorFactor=e.diffuseTransmissionColorFactor||[1,1,1],e.diffuseTransmissionTexture&&yt(r,e.diffuseTransmissionTexture,`pbr_diffuseTransmissionSampler`,t,{featureOptions:{define:`HAS_DIFFUSETRANSMISSIONMAP`,enabledUniformName:`diffuseTransmissionMapEnabled`},gltf:i,attributes:o,textureTransformSlot:`diffuseTransmission`}),e.diffuseTransmissionColorTexture&&yt(r,e.diffuseTransmissionColorTexture,`pbr_diffuseTransmissionColorSampler`,t,{featureOptions:{define:`HAS_DIFFUSETRANSMISSIONCOLORMAP`,enabledUniformName:`diffuseTransmissionColorMapEnabled`},gltf:i,attributes:o,textureTransformSlot:`diffuseTransmissionColor`}))}function Nv(r,e,t,i,o={}){e&&(e.thicknessFactor!==void 0&&(t.uniforms.thicknessFactor=e.thicknessFactor),e.thicknessTexture&&yt(r,e.thicknessTexture,`pbr_thicknessSampler`,t,{featureOptions:{define:`HAS_THICKNESSMAP`},gltf:i,attributes:o,textureTransformSlot:`thickness`}),e.attenuationDistance!==void 0&&(t.uniforms.attenuationDistance=e.attenuationDistance),e.attenuationColor&&(t.uniforms.attenuationColor=e.attenuationColor))}function Fv(r,e,t,i,o,a={}){!e||!t||(i.uniforms.multiscatterColorFactor=e.multiscatterColorFactor||e.multiscatterColor||[0,0,0],i.uniforms.scatterAnisotropy=Math.min(Math.max(e.scatterAnisotropy??0,-.999),.999),e.multiscatterColorTexture&&yt(r,e.multiscatterColorTexture,`pbr_multiscatterColorSampler`,i,{featureOptions:{define:`HAS_MULTISCATTERCOLORMAP`,enabledUniformName:`multiscatterColorMapEnabled`},gltf:o,attributes:a,textureTransformSlot:`multiscatterColor`}))}function kv(r,e){r?.dispersion!==void 0&&(e.uniforms.dispersion=Math.max(r.dispersion,0))}function Ov(r,e,t,i,o={}){e&&(e.clearcoatFactor!==void 0&&(t.uniforms.clearcoatFactor=e.clearcoatFactor),e.clearcoatRoughnessFactor!==void 0&&(t.uniforms.clearcoatRoughnessFactor=e.clearcoatRoughnessFactor),e.clearcoatTexture&&yt(r,e.clearcoatTexture,`pbr_clearcoatSampler`,t,{featureOptions:{define:`HAS_CLEARCOATMAP`,enabledUniformName:`clearcoatMapEnabled`},gltf:i,attributes:o,textureTransformSlot:`clearcoat`}),e.clearcoatRoughnessTexture&&yt(r,e.clearcoatRoughnessTexture,`pbr_clearcoatRoughnessSampler`,t,{featureOptions:{define:`HAS_CLEARCOATROUGHNESSMAP`,enabledUniformName:`clearcoatRoughnessMapEnabled`},gltf:i,attributes:o,textureTransformSlot:`clearcoatRoughness`}),e.clearcoatNormalTexture&&yt(r,e.clearcoatNormalTexture,`pbr_clearcoatNormalSampler`,t,{featureOptions:{define:`HAS_CLEARCOATNORMALMAP`},gltf:i,attributes:o,textureTransformSlot:`clearcoatNormal`}))}function Dv(r,e,t,i,o={}){e&&(e.sheenColorFactor&&(t.uniforms.sheenColorFactor=e.sheenColorFactor),e.sheenRoughnessFactor!==void 0&&(t.uniforms.sheenRoughnessFactor=e.sheenRoughnessFactor),e.sheenColorTexture&&yt(r,e.sheenColorTexture,`pbr_sheenColorSampler`,t,{featureOptions:{define:`HAS_SHEENCOLORMAP`,enabledUniformName:`sheenColorMapEnabled`},gltf:i,attributes:o,textureTransformSlot:`sheenColor`}),e.sheenRoughnessTexture&&yt(r,e.sheenRoughnessTexture,`pbr_sheenRoughnessSampler`,t,{featureOptions:{define:`HAS_SHEENROUGHNESSMAP`,enabledUniformName:`sheenRoughnessMapEnabled`},gltf:i,attributes:o,textureTransformSlot:`sheenRoughness`}))}function Bv(r,e,t,i,o={}){e&&(e.iridescenceFactor!==void 0&&(t.uniforms.iridescenceFactor=e.iridescenceFactor),e.iridescenceIor!==void 0&&(t.uniforms.iridescenceIor=e.iridescenceIor),(e.iridescenceThicknessMinimum!==void 0||e.iridescenceThicknessMaximum!==void 0)&&(t.uniforms.iridescenceThicknessRange=[e.iridescenceThicknessMinimum??100,e.iridescenceThicknessMaximum??400]),e.iridescenceTexture&&yt(r,e.iridescenceTexture,`pbr_iridescenceSampler`,t,{featureOptions:{define:`HAS_IRIDESCENCEMAP`,enabledUniformName:`iridescenceMapEnabled`},gltf:i,attributes:o,textureTransformSlot:`iridescence`}),e.iridescenceThicknessTexture&&yt(r,e.iridescenceThicknessTexture,`pbr_iridescenceThicknessSampler`,t,{featureOptions:{define:`HAS_IRIDESCENCETHICKNESSMAP`},gltf:i,attributes:o,textureTransformSlot:`iridescenceThickness`}))}function Uv(r,e,t,i,o={}){e&&(e.anisotropyStrength!==void 0&&(t.uniforms.anisotropyStrength=e.anisotropyStrength),e.anisotropyRotation!==void 0&&(t.uniforms.anisotropyRotation=e.anisotropyRotation),e.anisotropyTexture&&yt(r,e.anisotropyTexture,`pbr_anisotropySampler`,t,{featureOptions:{define:`HAS_ANISOTROPYMAP`,enabledUniformName:`anisotropyMapEnabled`},gltf:i,attributes:o,textureTransformSlot:`anisotropy`}))}function Gv(r,e){r?.emissiveStrength!==void 0&&(e.uniforms.emissiveStrength=r.emissiveStrength)}function yt(r$19,e,t,i,o={}){let{featureOptions:a={},gltf:d,attributes:m={},textureTransformSlot:b}=o,{define:y,enabledUniformName:_}=a,w=zc(e);if(w>1){f.warn(`Skipping ${String(t)} because ${w} is not supported; only TEXCOORD_0 and TEXCOORD_1 are currently available`)();return}if(w===1&&!kr(m,`TEXCOORD_1`)){f.warn(`Skipping ${String(t)} because it requires TEXCOORD_1 but the primitive does not provide TEXCOORD_1`)();return}let S=jv(e,d),M=S.texture?.source?.image;if(!M){f.warn(`Skipping unresolved glTF texture for ${String(t)}`)();return}let O=Mm(r$19,M,{id:S.uniformName||S.id,sampler:r({addressModeU:`repeat`,addressModeV:`repeat`,minFilter:`linear`,magFilter:`linear`},Sm(S.texture.sampler))});if(i.bindings[t]=O,y&&(i.defines[y]=!0),_&&(i.uniforms[_]=!0),b){let Q=IA(b);i.uniforms[Q.uvSetUniform]=w,i.uniforms[Q.uvTransformUniform]=CA(MA(e))}i.generatedTextures.push(O)}function Mm(r$20,e,t){if(`compressed`in e)return zv(r$20,e,{id:t.id,sampler:t.sampler});let i=t.width!==void 0&&t.height!==void 0?{width:t.width,height:t.height}:r$20.getExternalImageSize(e),o=t.sampler.mipmapFilter===`nearest`||t.sampler.mipmapFilter===`linear`,a=o?r$20.getMipLevelCount(i.width,i.height):1,d=r$20.createTexture(s(r(r({id:t.id,sampler:t.sampler,width:i.width,height:i.height,mipLevels:a},o?{usage:v$1.SAMPLE|v$1.RENDER|v$1.COPY_DST|v$1.COPY_SRC}:{}),t.colorSpace?{format:t.colorSpace===`srgb`?`rgba8unorm-srgb`:`rgba8unorm`}:{}),{data:e}));return a>1&&(r$20.type===`webgl`?d.generateMipmapsWebGL():r$20.type===`webgpu`&&r$20.generateMipmapsWebGPU(d)),d}function jv(r$21,e){if(r$21.texture||r$21.index===void 0||!e?.textures)return r$21;let t=e.textures[r$21.index];return t?`texture`in t&&t.texture?s(r(r({},t),r$21),{texture:t.texture}):`source`in t?s(r({},r$21),{texture:t}):r$21:r$21}function LA(r$22,e){return r$22.createTexture(s(r({},e),{format:`rgba8unorm`,width:1,height:1,mipLevels:1}))}function Im(r){return r.textureFormat}function Vv(r,e,t){let{blockWidth:i=1,blockHeight:o=1}=x$1.getInfo(t),a=1;for(let d=1;;d++){let m=Math.max(1,r>>d),b=Math.max(1,e>>d);if(m<i||b<o)break;a++}return a}function zv(r$23,e,t){let i;if(Array.isArray(e.data)&&e.data[0]?.data?i=e.data:`mipmaps`in e&&Array.isArray(e.mipmaps)?i=e.mipmaps:i=[],i.length===0||!i[0]?.data)return f.warn(`createCompressedTexture: compressed image has no valid mip levels, creating fallback`)(),LA(r$23,t);let o=i[0],a=o.width??e.width??0,d=o.height??e.height??0;if(a<=0||d<=0)return f.warn(`createCompressedTexture: base level has invalid dimensions, creating fallback`)(),LA(r$23,t);let m=Im(o);if(!m)return f.warn(`createCompressedTexture: compressed image has no textureFormat, creating fallback`)(),LA(r$23,t);if(!r$23.isTextureFormatSupported(m))return f.warn(`createCompressedTexture: ${r$23.type} device does not support '${m}', creating fallback`)(),LA(r$23,t);let b=Vv(a,d,m),y=Math.min(i.length,b),_=1;for(let S=1;S<y;S++){let M=i[S];if(!M.data||M.width<=0||M.height<=0){f.warn(`createCompressedTexture: mip level ${S} has invalid data/dimensions, truncating`)();break}let k=Im(M);if(k&&k!==m){f.warn(`createCompressedTexture: mip level ${S} format '${k}' differs from base '${m}', truncating`)();break}let O=Math.max(1,a>>S),Q=Math.max(1,d>>S);if(M.width!==O||M.height!==Q){f.warn(`createCompressedTexture: mip level ${S} dimensions ${M.width}x${M.height} don't match expected ${O}x${Q}, truncating`)();break}_++}let w=r$23.createTexture(s(r({},t),{format:m,usage:v$1.TEXTURE|v$1.COPY_DST,width:a,height:d,mipLevels:_,data:o.data}));for(let S=1;S<_;S++)w.writeData(i[S].data,{width:i[S].width,height:i[S].height,mipLevel:S});return w}var Hv={modelOptions:{},pbrDebug:!1,imageBasedLightingEnvironment:void 0,lights:!0,useTangents:!1,useByteColors:!0,strictExtensions:!1};function Lm(r$24,e,t={}){let i=new Set,o=s(r(r({},Hv),t),{generatedTextures:i}),a=new mt$1(r$24,{modules:[rd$1]}),d=(e.materials||[]).map((O,Q)=>Gc(r$24,{id:Yv(O,Q),parsedPPBRMaterial:qc(r$24,O,{},s(r({},o),{gltf:e,validateAttributes:!1})),materialFactory:a})),m=new Map;(e.materials||[]).forEach((O,Q)=>{m.set(O.id,d[Q])});let b=new Map;e.meshes.forEach((O,Q)=>{let V=Hc(r$24,O,e,m,o);b.set(O.id,V)});let y=new Map,_=new Map,w=new Set,S=new Set,M=new Set;return e.nodes.forEach((O,Q)=>{let V=qv(r$24,O,o);y.set(Q,V),_.set(O.id,V)}),e.nodes.forEach((O,Q)=>{if(y.get(Q).add((O.children??[]).map(({id:V})=>{let G=_.get(V);if(!G)throw new Error(`Cannot find child ${V} of node ${Q}`);return G})),O.mesh){let V=O.mesh,G=ym(e,O),J=V.primitives.some(z=>!!z.targets?.length),$=G||J&&w.has(V.id)?Hc(r$24,V,e,m,o,G||void 0):b.get(V.id);if(!$)throw new Error(`Cannot find mesh child ${O.mesh.id} of node ${Q}`);let te=y.get(Q),re=b.get(V.id),Y=S.has(V.id)&&(O.skin!==void 0||M.has(V.id))&&$===re?Hc(r$24,V,e,m,o):$;if(te.add(Y),te.userData.gltfMesh=Y,S.add(V.id),O.skin!==void 0&&M.add(V.id),J){w.add(V.id);let z=V.primitives.find(ue=>ue.targets?.length)?.targets?.length||0,B=O.weights||V.weights||new Array(z).fill(0);te.userData.morphMeshes=[Y],o.modelOptions?.userData?.gltfAnimatedCrowd?te.userData.morphWeights=[...B]:SA(te,B)}}}),{scenes:e.scenes.map(O=>{let Q=(O.nodes||[]).map(({id:V})=>{let G=_.get(V);if(!G)throw new Error(`Cannot find child ${V} of scene ${O.name||O.id}`);return G});return new di({id:O.name||O.id,children:Q})}),materials:d,gltfMeshIdToNodeMap:b,gltfNodeIdToNodeMap:_,gltfNodeIndexToNodeMap:y,generatedTextures:i}}function qc(r,e,t,i){let o=$o(r,e,t,i);for(let a of o.generatedTextures)i.generatedTextures.add(a);return o}function qv(r,e,t){return new di({id:e.name||e.id,children:[],matrix:e.matrix,display:e.extensions?.KHR_node_visibility?.visible!==!1,position:e.translation,rotation:e.rotation,scale:e.scale})}function Hc(r,e,t,i,o,a){let m=(e.primitives||[]).map((y,_)=>Wv({device:r,gltfPrimitive:y,primitiveIndex:_,gltfMesh:e,gltf:t,gltfMaterialIdToMaterialMap:i,options:o,instancing:a}));return new di({id:e.name||e.id,children:m})}function Wv({device:r$25,gltfPrimitive:e,primitiveIndex:t,gltfMesh:i,gltf:o,gltfMaterialIdToMaterialMap:a,options:d,instancing:m}){let b=e.name||`${i.name||i.id}-primitive-${t}`,y=Kv(e.attributes),w=Xv(b,e,xm(e.mode??4,e.indices?.value,y)),S=w.vertexCount,M=Qv(e,o,w),k=qc(r$25,e.material,w.attributes,s(r({},d),{gltf:o})),O=Tm(r$25,{id:b,geometry:w,material:e.material&&a.get(e.material.id)||null,parsedPPBRMaterial:k,modelOptions:d.modelOptions,vertexCount:S,bounds:[e.attributes.POSITION.min,e.attributes.POSITION.max],instanceMatrices:m?.matrices,morphTargets:M?.targets});m&&(O.userData.gltfInstancing=m);let Q=e.extensions?.KHR_materials_variants?.mappings||[];if(Q.length){let V=new Map;for(let G of Q){let J=typeof G.material==`number`?o.materials[G.material]:G.material,$=J&&a.get(J.id);if(!$)continue;let te=qc(r$25,J,w.attributes,s(r({},d),{gltf:o}));for(let re of G.variants||[])V.set(re,{material:$,parameters:s(r(r({},O.model.parameters),te.parameters),{depthWriteEnabled:J.alphaMode!==`BLEND`,cullMode:J.doubleSided?`none`:`back`})})}O.userData.gltfMaterialVariants={defaultMaterial:O.model.material,defaultParameters:r({},O.model.parameters),mappings:V}}return M&&(O.userData.morphTargets=M),O}function Qv(r,e,t){if(!r.targets?.length)return;let i={};for(let a of[`POSITION`,`NORMAL`,`TANGENT`]){let d=t.attributes[a]?.value;d instanceof Float32Array&&(i[a]=new Float32Array(d))}return{geometry:t,baseAttributes:i,targets:r.targets.map(a=>{let d={};for(let m of[`POSITION`,`NORMAL`,`TANGENT`]){let b=a[m],y=typeof b==`number`?e.accessors[b]:b;y?.value&&ArrayBuffer.isView(y.value)&&(d[m]=ga$1(y))}return d})}}function Kv(r){let e=Infinity;for(let t of Object.values(r))if(t){let{value:i,size:o,components:a}=t,d=o??a;i?.length!==void 0&&d>=1&&(e=Math.min(e,i.length/d))}if(!Number.isFinite(e))throw new Error(`Could not determine vertex count from attributes`);return e}function Xv(r,e,t){let i={};for(let[o,a]of Object.entries(e.attributes)){let{components:d,size:m,value:b,normalized:y}=a,_=o===`POSITION`||o===`NORMAL`||o===`TANGENT`,w=!!(e.targets?.length&&_);i[o]={size:m??d,value:w?ga$1({value:b,normalized:y}):b,normalized:w?!1:y}}return new ne({id:r,topology:t.topology,indices:t.indices??e.indices?.value,attributes:i})}function Yv(r,e){return r.name||r.id||`material-${e}`}function Wc(r,e={}){let t=e.lightDefinitions||r.lights||r.extensions?.KHR_lights_punctual?.lights;if(!t||!Array.isArray(t)||t.length===0)return[];let i=[],o=r3(r.nodes||[]),a=new Map;for(let d of r.nodes||[]){if(!Jv(d,o,e.nodeVisibility))continue;let m=d.light??d.extensions?.KHR_lights_punctual?.light;if(typeof m!=`number`||e.nodeIdentifiers&&!e.nodeIdentifiers.has(d.id))continue;let b=t[m];if(!b)continue;let y=Zv(b.color||[1,1,1],e.useByteColors??!0),_=b.intensity??1,w=b.range,S=Rm(d,o,a);switch(b.type){case`directional`:i.push(e3(S,y,_));break;case`point`:i.push($v(S,y,_,w));break;case`spot`:i.push(t3(S,y,_,w,b.spot));break;default:break}}return i}function Jv(r,e,t){let i=r;for(;i;){let o=t?.get(i.id);if(o?!o.display:i.extensions?.KHR_node_visibility?.visible===!1)return!1;i=e.get(i.id)}return!0}function Zv(r,e){return e?r.map(t=>t*255):kt(r,!1)}function $v(r,e,t,i){let o=Pm(r),a=[1,0,0];return i!==void 0&&i>0&&(a=[1,0,1/(i*i)]),{type:`point`,position:o,color:e,intensity:t,attenuation:a}}function e3(r,e,t){return{type:`directional`,direction:Nm(r),color:e,intensity:t}}function t3(r,e,t,i,o={}){let a=Pm(r),d=Nm(r),m=[1,0,0];return i!==void 0&&i>0&&(m=[1,0,1/(i*i)]),{type:`spot`,position:a,direction:d,color:e,intensity:t,attenuation:m,innerConeAngle:o.innerConeAngle??0,outerConeAngle:o.outerConeAngle??Math.PI/4}}function r3(r){let e=new Map;for(let t of r)for(let i of t.children||[])e.set(i.id,t);return e}function Rm(r,e,t){let i=t.get(r.id);if(i)return i;let o=n3(r),a=e.get(r.id),d=a?new U(Rm(a,e,t)).multiplyRight(o):o;return t.set(r.id,d),d}function n3(r){if(r.matrix)return new U(r.matrix);let e=new U;return r.translation&&e.translate(r.translation),r.rotation&&e.multiplyRight(new U().fromQuaternion(r.rotation)),r.scale&&e.scale(r.scale),e}function Pm(r){return r.transformAsPoint([0,0,0])}function Nm(r){return r.transformDirection([0,0,-1])}var Qc=class extends Yr$1{animation;gltfNodeIdToNodeMap;onVisibilityChange;cameras;lightDefinitions;onLightChange;materials;clip;mixer;action;materialTextureTransformState=new Map;constructor(e){if(super({name:e.animation.name||`unnamed`}),this.animation=e.animation,this.gltfNodeIdToNodeMap=e.gltfNodeIdToNodeMap,this.onVisibilityChange=e.onVisibilityChange,this.cameras=e.cameras||[],this.lightDefinitions=e.lightDefinitions||[],this.onLightChange=e.onLightChange,this.materials=e.materials||[],this.animation.name||=`unnamed`,this.name=this.animation.name,this.animation.channels.some(t=>t.type===`material`||t.type===`textureTransform`)&&!this.materials.length)throw new Error(`Animation ${this.animation.name} targets materials, but GLTFAnimator was created without a materials array`);this.mixer=e.mixer||new Qr$1,this.clip=new Jr({name:this.name,tracks:this.animation.channels.map(t=>this.createAnimationTrack(t))}),this.action=this.mixer.clipAction(this.clip).play()}applyTime(e){this.action.setTime(e),this.mixer.update(0)}createAnimationTrack(e){let t=i3(e.sampler.interpolation);if(e.type===`node`)return new Kr$1({name:`${e.targetNodeId}.${e.path}`,times:e.sampler.input,values:e.sampler.output,interpolation:t,valueType:e.path===`rotation`?`quaternion`:`vector`,binding:{id:`node:${e.targetNodeId}:${e.path}`,getValue:()=>this.getNodeAnimationValue(e.targetNodeId,e.path),setValue:o=>this.applyNodeAnimationValue(e.targetNodeId,e.path,o)}});if(e.type===`camera`||e.type===`light`)return new Kr$1({name:e.pointer,times:e.sampler.input,values:e.sampler.output,interpolation:t,binding:{id:e.pointer,getValue:()=>this.getSceneAnimationValue(e),setValue:o=>this.applySceneAnimationValue(e,o)}});let i=this.materials[e.targetMaterialIndex];if(!i)throw new Error(`Cannot find animation target material ${e.targetMaterialIndex} for ${e.pointer}`);return new Kr$1({name:e.pointer,times:e.sampler.input,values:e.sampler.output,interpolation:t,binding:{id:e.pointer,getValue:e.type===`material`?()=>o3(i,e):void 0,setValue:o=>{e.type===`material`?s3(i,e,o):c3(i,e,o,this.materialTextureTransformState)}}})}getNodeAnimationValue(e,t){let i=this.getTargetNode(e);switch(t){case`translation`:return Array.from(i.position);case`rotation`:return Array.from(i.rotation);case`scale`:return Array.from(i.scale);case`weights`:return Array.from(i.userData.morphWeights||[]);case`visibility`:return[i.display?1:0];default:return[]}}applyNodeAnimationValue(e,t,i){let o=this.getTargetNode(e);switch(t){case`translation`:o.setPosition(i).updateMatrix();break;case`rotation`:o.setRotation(i).updateMatrix();break;case`scale`:o.setScale(i).updateMatrix();break;case`weights`:SA(o,i);break;case`visibility`:o.setProps({display:i[0]!==0}),this.onVisibilityChange?.();break;default:f.warn(`Bad animation path ${t}`)()}}getTargetNode(e){let t=this.gltfNodeIdToNodeMap.get(e);if(!t)throw new Error(`Cannot find animation target node ${e}`);return t}getSceneAnimationValue(e){if(e.type===`camera`){let a=this.cameras[e.targetCameraIndex]?.[e.projection]?.[e.property];return typeof a==`number`?[a]:[]}let t=this.lightDefinitions[e.targetLightIndex],i=e.property===`innerConeAngle`||e.property===`outerConeAngle`?t?.spot?.[e.property]:t?.[e.property];return Array.isArray(i)?e.component===void 0?[...i]:[i[e.component]]:typeof i==`number`?[i]:[]}applySceneAnimationValue(e,t){if(e.type===`camera`){let o=this.cameras[e.targetCameraIndex];o?.[e.projection]&&(o[e.projection][e.property]=t[0]);return}let i=this.lightDefinitions[e.targetLightIndex];if(i){if(e.property===`innerConeAngle`||e.property===`outerConeAngle`)i.spot||={},i.spot[e.property]=t[0];else if(e.component!==void 0){let o=[...i[e.property]||[1,1,1]];o[e.component]=t[0],i[e.property]=o}else i[e.property]=t.length===1?t[0]:[...t];this.onLightChange?.()}}};var RA=class extends Xr$1{mixer;activeClip;onUpdate;previousTimeSeconds;constructor(e){let t=new Qr$1;super(e.animations.map((i,o)=>{let a=i.name||`Animation-${o}`;return new Qc({gltfNodeIdToNodeMap:e.gltfNodeIdToNodeMap,onVisibilityChange:e.onVisibilityChange,cameras:e.cameras,lightDefinitions:e.lightDefinitions,onLightChange:e.onLightChange,materials:e.materials,mixer:t,animation:{name:a,channels:i.channels}})})),this.mixer=t,this.onUpdate=e.onUpdate,this.activeClip=this.clips[0]?.name,e.autoplay===!1?this.clips.forEach(i=>{i.playing=!1,i.action.stop()}):e.autoplay===`first`&&this.activeClip&&this.selectClip(this.activeClip)}setUpdateHandler(e){return this.onUpdate=e,this}setTime(e){let t=e/1e3,i=this.previousTimeSeconds===void 0?0:t-this.previousTimeSeconds;this.previousTimeSeconds=t;let o=i*this.mixer.timeScale;this.clips.forEach(a=>{if(!a.playing){a.action.stop();return}if(a.action.paused)return;a.action.resume();let d=Math.max(0,t-a.startTime)*a.speed;a.action.setTime(d-o*a.action.timeScale)}),this.mixer.update(i),this.onUpdate?.()}update(e){this.mixer.update(e),this.onUpdate?.()}selectClip(e,t={}){let i=this.clips.find(d=>d.name===e);if(!i)throw new Error(`Unknown animation clip: ${e}`);let o=this.clips.find(d=>d.name===this.activeClip),a=t.crossFadeDuration||0;for(let d of this.clips)d!==i&&!(a>0&&d===o)&&(d.playing=!1,d.action.stop());return i.playing=!0,a>0&&o&&o!==i?(o.playing=!0,o.action.crossFadeTo(i.action,a)):i.action.reset().setEffectiveWeight(1).play(),this.activeClip=e,i}};function i3(r){switch(r){case`STEP`:case`LINEAR`:case`CUBICSPLINE`:return r;default:throw new Error(`Unsupported animation interpolation: ${r}`)}}function o3(r,e){let i=r.shaderInputs.getUniformValues().pbrMaterial?.[e.property];return Array.isArray(i)?e.component===void 0?[...i]:[i[e.component]]:typeof i==`number`?[i]:[]}function s3(r,e,t){let i=e.component!==void 0?{[e.property]:a3(A3(r,e.property),e.component,t[0])}:{[e.property]:t.length===1?t[0]:t};r.setProps({pbrMaterial:i})}function A3(r,e){let i=r.shaderInputs.getUniformValues().pbrMaterial?.[e];return Array.isArray(i)?[...i]:[]}function a3(r,e,t){let i=[...r];return i[e]=t,i}function c3(r,e,t,i){let o=IA(e.textureSlot),a=l3(i,r,e);switch(e.path){case`offset`:e.component!==void 0?a.offset[e.component]=t[0]:a.offset=[t[0],t[1]];break;case`rotation`:a.rotation=t[0];break;case`scale`:e.component!==void 0?a.scale[e.component]=t[0]:a.scale=[t[0],t[1]];break}r.setProps({pbrMaterial:{[o.uvTransformUniform]:Em(e.baseTransform,a)}})}function l3(r,e,t){let i=r.get(e)||{},o=i[t.textureSlot];return o||(o={offset:[...t.baseTransform.offset],rotation:t.baseTransform.rotation,scale:[...t.baseTransform.scale]},i[t.textureSlot]=o,r.set(e,i)),o}var PA=class{bindings;scenes;constructor(e){this.scenes=e.scenes,this.bindings=u3(e),this.update()}update(){if(this.bindings.length===0)return;let e=new Map;for(let t of this.scenes)t.preorderTraversal((i,{worldMatrix:o})=>{i instanceof di&&e.set(i,new U(o))});for(let t of this.bindings){Kd$1({joints:t.joints,meshNode:t.node,worldMatrices:e,inverseBindMatrices:t.inverseBindMatrices,target:t.jointMatrices});for(let i of t.models)i.model.shaderInputs.setProps({skin:{jointMatrices:t.jointMatrices}})}}getBinding(e){return this.bindings.find(t=>typeof e==`number`?t.nodeIndex===e:t.node===e)}};function u3(r$26){let{gltf:e,gltfNodeIndexToNodeMap:t}=r$26,i=[],o=e.skins||[],a=new Set;for(let d of r$26.scenes)d.preorderTraversal(m=>{m instanceof di&&a.add(m)});for(let[d,m]of e.nodes.entries()){let b=m.skin;if(b===void 0||!m.mesh)continue;let y=f3(e,b),_=o[y],w=t.get(d);if(!_||!w||!a.has(w))continue;let S=_.joints.flatMap(G=>{let J=t.get(G);return J?[J]:[]});if(S.length!==_.joints.length)continue;let M=m.mesh,k=w.userData.gltfMesh,O=k instanceof di?k:w.children.find(G=>G instanceof di&&G.id===(M.name||M.id));if(!(O instanceof di))continue;let Q=O.children.flatMap(G=>G instanceof hi?[G]:[]),V=_.inverseBindMatrices?.value;i.push(s(r({nodeIndex:d,skinIndex:y,node:w,joints:S},V instanceof Float32Array?{inverseBindMatrices:V}:{}),{jointMatrices:new Float32Array(S.length*16),models:Q}))}return i}function f3(r,e){return typeof e==`number`?e:(r.skins||[]).findIndex(t=>{if(t===e||e.id&&t.id===e.id)return!0;if(t.joints.length!==e.joints?.length||!t.joints.every((i,o)=>i===e.joints?.[o]))return!1;if(typeof e.inverseBindMatrices==`number`){let i=r.accessors[e.inverseBindMatrices];return!t.inverseBindMatrices||t.inverseBindMatrices===i}return!0})}var h3={supportLevel:`none`,standardStatus:`unknown`,comment:`Not currently listed in the luma.gl glTF extension support registry.`};var Fm={KHR_draco_mesh_compression:{supportLevel:`built-in`,standardStatus:`ratified`,comment:`Decoded by loaders.gl before luma.gl builds the scenegraph.`},EXT_meshopt_compression:{supportLevel:`built-in`,standardStatus:`ratified`,comment:`EXT meshopt-compressed buffer views are decoded by loaders.gl before rendering.`},KHR_meshopt_compression:{supportLevel:`none`,standardStatus:`release-candidate`,comment:`The installed loaders.gl GLTFLoader supports EXT_meshopt_compression, not the KHR release candidate.`},KHR_mesh_quantization:{supportLevel:`built-in`,standardStatus:`ratified`,comment:`Loader-materialized quantized accessors retain their typed values and normalization.`},EXT_mesh_features:{supportLevel:`loader-only`,standardStatus:`ratified`,comment:`Feature identifiers are decoded by loaders.gl; automatic rendering and picking are application-owned.`},EXT_structural_metadata:{supportLevel:`loader-only`,standardStatus:`ratified`,comment:`Structural metadata is decoded by loaders.gl; automatic rendering and querying are application-owned.`},KHR_lights_punctual:{supportLevel:`built-in`,standardStatus:`ratified`,comment:`Parsed into luma.gl Light objects.`},KHR_materials_unlit:{supportLevel:`built-in`,standardStatus:`ratified`,comment:`Unlit materials bypass the default lighting path.`},KHR_materials_emissive_strength:{supportLevel:`built-in`,standardStatus:`ratified`,comment:`Applied by the stock PBR shader.`},KHR_texture_basisu:{supportLevel:`built-in`,standardStatus:`ratified`,comment:`BasisU / KTX2 textures pass through when the device supports them.`},KHR_texture_transform:{supportLevel:`built-in`,standardStatus:`ratified`,comment:`Per-slot UV transforms and animated pointers are applied at runtime; avoid duplicate legacy loader-side baking.`},EXT_texture_webp:{supportLevel:`loader-only`,standardStatus:`ratified`,comment:`Texture source is resolved during load; final support depends on browser and device decode support.`},EXT_texture_avif:{supportLevel:`none`,standardStatus:`ratified`,comment:`The image loader can decode supported AVIF images, but GLTFLoader does not select EXT_texture_avif sources.`},KHR_materials_specular:{supportLevel:`built-in`,standardStatus:`ratified`,comment:`The stock shader now applies specular factors and textures to the dielectric F0 term.`},KHR_materials_ior:{supportLevel:`built-in`,standardStatus:`ratified`,comment:`The stock shader now drives dielectric reflectance from the glTF IOR value.`},KHR_materials_transmission:{supportLevel:`built-in`,standardStatus:`ratified`,comment:`The stock shader now applies transmission to the base layer and exposes transparency through alpha, without a scene-color refraction buffer.`},KHR_materials_volume:{supportLevel:`built-in`,standardStatus:`ratified`,comment:`Thickness and attenuation now tint transmitted light in the stock shader.`},KHR_materials_clearcoat:{supportLevel:`built-in`,standardStatus:`ratified`,comment:`The stock shader now adds a secondary clearcoat specular lobe.`},KHR_materials_sheen:{supportLevel:`built-in`,standardStatus:`ratified`,comment:`The stock shader now adds a sheen lobe for cloth-like materials.`},KHR_materials_iridescence:{supportLevel:`built-in`,standardStatus:`ratified`,comment:`The stock shader now tints specular response with a view-dependent thin-film iridescence approximation.`},KHR_materials_anisotropy:{supportLevel:`built-in`,standardStatus:`ratified`,comment:`The stock shader now shapes highlights and IBL response with an anisotropy-direction approximation.`},KHR_materials_pbrSpecularGlossiness:{supportLevel:`loader-only`,standardStatus:`archived`,comment:`Extension data can be loaded, but it is not translated into the default metallic-roughness material path.`},KHR_materials_variants:{supportLevel:`parsed-and-wired`,standardStatus:`ratified`,comment:`Primitive material variants can be selected and restored on the generated scenegraph.`},EXT_mesh_gpu_instancing:{supportLevel:`built-in`,standardStatus:`ratified`,comment:`Accessor-backed instance transforms use one instanced draw per source primitive.`},KHR_node_visibility:{supportLevel:`parsed-and-wired`,standardStatus:`ratified`,comment:`Recursive node visibility controls rendered geometry, punctual lights, and animation.`},KHR_animation_pointer:{supportLevel:`parsed-and-wired`,standardStatus:`ratified`,comment:`Node transforms, morph weights and visibility, material factors, texture transforms, camera projections, and punctual lights are wired to runtime updates.`},EXT_materials_bump:{supportLevel:`built-in`,standardStatus:`draft`,comment:`The experimental bump-map draft perturbs the canonical surface normal from a linear height texture.`},KHR_materials_diffuse_transmission:{supportLevel:`built-in`,standardStatus:`release-candidate`,comment:`The Khronos release candidate adds energy-conserving back-lit diffuse transmission and independent color/factor textures.`},KHR_materials_dispersion:{supportLevel:`parsed-and-wired`,standardStatus:`ratified`,comment:`The canonical PBR shader separates red, green, and blue transmission using wavelength-dependent refraction.`},KHR_materials_volume_scatter:{supportLevel:`parsed-and-wired`,standardStatus:`draft`,comment:`The unratified volume-scattering draft is approximated per surface; random-walk and screen-space diffusion are not implemented.`},KHR_xmp:{supportLevel:`none`,standardStatus:`archived`,comment:`Metadata payloads remain in the loaded glTF, but luma.gl does not interpret them.`},KHR_xmp_json_ld:{supportLevel:`none`,standardStatus:`ratified`,comment:`Metadata is preserved in the glTF, but luma.gl does not interpret it.`},EXT_lights_image_based:{supportLevel:`none`,standardStatus:`multi-vendor`,comment:`Use loadPBREnvironment() or custom environment setup instead.`},EXT_texture_video:{supportLevel:`none`,standardStatus:`multi-vendor`,comment:`Video textures are not created automatically by the stock pipeline.`},MSFT_lod:{supportLevel:`parsed-and-wired`,standardStatus:`vendor`,comment:`Node levels are parsed and selected by opt-in animated crowds; material LOD and GPU-driven selection are not implemented.`}};function Kc(r,e){let t=Array.from(g3(r)).sort(),i=new Set(r.extensionsRequired||[]),o=t.map(a=>{let d=Fm[a]||h3,m=p3(a,d,r,e);return[a,{extensionName:a,required:i.has(a),supported:b3(m.supportLevel),supportLevel:m.supportLevel,standardStatus:d.standardStatus,comment:m.comment}]});return new Map(o)}function d3(r,e){return Array.from(Kc(r,e).values()).filter(t=>t.required&&!t.supported)}function km(r,e){let t=d3(r,e);if(t.length)throw new Error(`Unsupported required glTF extensions: ${t.map(i=>i.extensionName).join(`, `)}`)}function p3(r,e,t,i){if(r!==`KHR_texture_basisu`||!i)return e;let a=m3(t).find(d=>d===null||!i.isTextureFormatSupported(d));return a===void 0?e:{supportLevel:`none`,comment:a===null?`The ${i.type} device cannot use a BasisU texture whose transcoded GPU format is missing.`:`The ${i.type} device does not support the transcoded BasisU texture format '${a}'.`}}function m3(r){let e=[];for(let t of r.textures||[]){let i=t?.source?.image;if(!i?.compressed)continue;let o=Array.isArray(i.data)?i.data[0]:Array.isArray(i.mipmaps)?i.mipmaps[0]:void 0;e.push(o?.textureFormat??null)}return e}function Xc(r){return Fm[r]||null}function g3(r){let e=r,t=new Set;return NA(t,r.extensionsUsed),NA(t,r.extensionsRequired),NA(t,e.extensionsRemoved),NA(t,Object.keys(r.extensions||{})),(e.lights?.length||(r.nodes||[]).some(i=>`light`in i))&&t.add(`KHR_lights_punctual`),(r.materials||[]).some(i=>{let o=i;return o.unlit||o.extensions?.KHR_materials_unlit})&&t.add(`KHR_materials_unlit`),t}function NA(r,e=[]){for(let t of e)r.add(t)}function b3(r){return r===`built-in`||r===`parsed-and-wired`}function Om(r){let e=r.animations||[],t=new Map,i=new Map;return e.flatMap((o,a)=>{let d=o.name||`Animation-${a}`,m=new Map,b=o.channels.flatMap(({sampler:y,target:_})=>{let w=E3(r,_),S=`${y}:${w??0}`,M=m.get(S);if(!M){let O=o.samplers[y];if(!O)throw new Error(`Cannot find animation sampler ${y}`);let{input:Q,interpolation:V=`LINEAR`,output:G}=O,J=P3(r.accessors[Q],t),$=N3(r.accessors[G],i);M={input:J,interpolation:V,output:w!==void 0?v3($,J.length,V,w):$},m.set(S,M)}let k=T3(r,_,M);return k?[k]:[]});return b.length?[{name:d,channels:b}]:[]})}function T3(r,e,t){if(e.path===`pointer`)return y3(r,e,t);let i=Dm(e.path);if(!i)return null;let o=r.nodes[e.node??0];if(!o)throw new Error(`Cannot find animation target ${e.node}`);return{type:`node`,sampler:t,targetNodeId:o.id,path:i}}function y3(r,e,t){let i=e.extensions?.KHR_animation_pointer?.pointer;if(typeof i!=`string`||!i.startsWith(`/`))return f.warn(`KHR_animation_pointer channel is missing a valid JSON pointer and will be skipped`)(),null;let o=L3(i);switch(o[0]){case`nodes`:return w3(r,o,t,i);case`materials`:return S3(r,o,t,i);case`cameras`:return x3(r,o,t,i);case`extensions`:if(o[1]===`KHR_lights_punctual`)return _3(r,o,t,i);break;default:break}return Sn(i,`top-level target "${o[0]}" has no runtime animation mapping`),null}function x3(r,e,t,i){let o=Number(e[1]),a=r.cameras?.[o],d=e[2],m=e[3];return e.length!==4||!Number.isInteger(o)||!a||d!==`perspective`&&d!==`orthographic`||a.type!==d||!(d===`perspective`?[`aspectRatio`,`yfov`,`znear`,`zfar`]:[`xmag`,`ymag`,`znear`,`zfar`]).includes(m)?(Sn(i,`camera pointers must target a supported projection property`),null):{type:`camera`,sampler:t,pointer:i,targetCameraIndex:o,projection:d,property:m}}function _3(r$27,e,t,i){let o=Number(e[3]),a=r$27.lights||r$27.extensions?.KHR_lights_punctual?.lights,d=e[4]===`spot`,m=d?e[5]:e[4],b=!d&&m===`color`?e[5]:void 0,y=[`color`,`intensity`,`range`,`innerConeAngle`,`outerConeAngle`],_=d||b!==void 0?6:5;return e[2]!==`lights`||e.length!==_||!Number.isInteger(o)||!Array.isArray(a)||!a[o]||!y.includes(m)||d&&m!==`innerConeAngle`&&m!==`outerConeAngle`||b!==void 0&&(!/^[0-2]$/.test(b)||m!==`color`)?(Sn(i,`punctual-light pointers must target supported typed light properties`),null):r({type:`light`,sampler:t,pointer:i,targetLightIndex:o,property:m},b===void 0?{}:{component:Number(b)})}function w3(r,e,t,i){let o=e.length===5&&e[2]===`extensions`&&e[3]===`KHR_node_visibility`&&e[4]===`visible`;if(e.length!==3&&!o)return Sn(i,`node pointers must target transforms, morph weights, or KHR_node_visibility.visible`),null;let a=Number(e[1]),d=r.nodes[a];if(!Number.isInteger(a)||!d)return f.warn(`KHR_animation_pointer target ${i} references a missing node and will be skipped`)(),null;if(o&&t.interpolation!==`STEP`)return Sn(i,`boolean visibility animation requires STEP interpolation`),null;let m=o?`visibility`:Dm(e[2]);return m?{type:`node`,sampler:t,targetNodeId:d.id,path:m}:(Sn(i,`node property "${e[2]}" has no runtime animation mapping`),null)}function E3(r,e){let t;if(e.path===`weights`)t=e.node;else if(e.path===`pointer`){let a=e.extensions?.KHR_animation_pointer?.pointer,d=typeof a==`string`?/^\/nodes\/(\d+)\/weights$/.exec(a):null;if(!d)return;t=Number(d[1])}else return;let i=r.nodes[t??0],o=typeof i?.mesh==`number`?r.meshes[i.mesh]:i?.mesh;return i?.weights?.length||o?.weights?.length||o?.primitives?.[0]?.targets?.length||1}function v3(r,e,t,i){let o=t===`CUBICSPLINE`?3:1,a=r.length/(Math.max(e,1)*o),d=i>1?i:Number.isInteger(a)&&a>1?a:i;if(d<=1)return r;let m=r.flat(),b=[];for(let y=0;y<m.length;y+=d)b.push(m.slice(y,y+d));return b}function S3(r$28,e,t,i){if(e.length<3)return Sn(i,`material pointers must include a material index and target property path`),null;let o=Number(e[1]),a=r$28.materials[o];if(!Number.isInteger(o)||!a)return f.warn(`KHR_animation_pointer target ${i} references a missing material and will be skipped`)(),null;let d=C3(a,e.slice(2));return`reason`in d?(Sn(i,d.reason),null):r({sampler:t,pointer:i,targetMaterialIndex:o},d)}function Dm(r){switch(r){case`translation`:case`rotation`:case`scale`:case`weights`:return r;default:return null}}function C3(r,e){let t=I3(r,e);if(!(`reason`in t)||t.reason!==`not-a-texture-transform-target`)return t;switch(e.join(`/`)){case`pbrMetallicRoughness/baseColorFactor`:return r.pbrMetallicRoughness?{type:`material`,property:`baseColorFactor`}:{reason:rt(e)};case`pbrMetallicRoughness/metallicFactor`:return r.pbrMetallicRoughness?{type:`material`,property:`metallicRoughnessValues`,component:0}:{reason:rt(e)};case`pbrMetallicRoughness/roughnessFactor`:return r.pbrMetallicRoughness?{type:`material`,property:`metallicRoughnessValues`,component:1}:{reason:rt(e)};case`normalTexture/scale`:return r.normalTexture?{type:`material`,property:`normalScale`}:{reason:rt(e)};case`occlusionTexture/strength`:return r.occlusionTexture?{type:`material`,property:`occlusionStrength`}:{reason:rt(e)};case`emissiveFactor`:return{type:`material`,property:`emissiveFactor`};case`alphaCutoff`:return{type:`material`,property:`alphaCutoff`};case`extensions/KHR_materials_specular/specularFactor`:return r.extensions?.KHR_materials_specular?{type:`material`,property:`specularIntensityFactor`}:{reason:rt(e)};case`extensions/KHR_materials_specular/specularColorFactor`:return r.extensions?.KHR_materials_specular?{type:`material`,property:`specularColorFactor`}:{reason:rt(e)};case`extensions/KHR_materials_ior/ior`:return r.extensions?.KHR_materials_ior?{type:`material`,property:`ior`}:{reason:rt(e)};case`extensions/EXT_materials_bump/bumpFactor`:return r.extensions?.EXT_materials_bump?{type:`material`,property:`bumpFactor`}:{reason:rt(e)};case`extensions/KHR_materials_diffuse_transmission/diffuseTransmissionFactor`:return r.extensions?.KHR_materials_diffuse_transmission?{type:`material`,property:`diffuseTransmissionFactor`}:{reason:rt(e)};case`extensions/KHR_materials_diffuse_transmission/diffuseTransmissionColorFactor`:return r.extensions?.KHR_materials_diffuse_transmission?{type:`material`,property:`diffuseTransmissionColorFactor`}:{reason:rt(e)};case`extensions/KHR_materials_volume_scatter/multiscatterColorFactor`:case`extensions/KHR_materials_volume_scatter/multiscatterColor`:return r.extensions?.KHR_materials_volume_scatter?{type:`material`,property:`multiscatterColorFactor`}:{reason:rt(e)};case`extensions/KHR_materials_volume_scatter/scatterAnisotropy`:return r.extensions?.KHR_materials_volume_scatter?{type:`material`,property:`scatterAnisotropy`}:{reason:rt(e)};case`extensions/KHR_materials_dispersion/dispersion`:return r.extensions?.KHR_materials_dispersion?{type:`material`,property:`dispersion`}:{reason:rt(e)};case`extensions/KHR_materials_transmission/transmissionFactor`:return r.extensions?.KHR_materials_transmission?{type:`material`,property:`transmissionFactor`}:{reason:rt(e)};case`extensions/KHR_materials_volume/thicknessFactor`:return r.extensions?.KHR_materials_volume?{type:`material`,property:`thicknessFactor`}:{reason:rt(e)};case`extensions/KHR_materials_volume/attenuationDistance`:return r.extensions?.KHR_materials_volume?{type:`material`,property:`attenuationDistance`}:{reason:rt(e)};case`extensions/KHR_materials_volume/attenuationColor`:return r.extensions?.KHR_materials_volume?{type:`material`,property:`attenuationColor`}:{reason:rt(e)};case`extensions/KHR_materials_clearcoat/clearcoatFactor`:return r.extensions?.KHR_materials_clearcoat?{type:`material`,property:`clearcoatFactor`}:{reason:rt(e)};case`extensions/KHR_materials_clearcoat/clearcoatRoughnessFactor`:return r.extensions?.KHR_materials_clearcoat?{type:`material`,property:`clearcoatRoughnessFactor`}:{reason:rt(e)};case`extensions/KHR_materials_sheen/sheenColorFactor`:return r.extensions?.KHR_materials_sheen?{type:`material`,property:`sheenColorFactor`}:{reason:rt(e)};case`extensions/KHR_materials_sheen/sheenRoughnessFactor`:return r.extensions?.KHR_materials_sheen?{type:`material`,property:`sheenRoughnessFactor`}:{reason:rt(e)};case`extensions/KHR_materials_iridescence/iridescenceFactor`:return r.extensions?.KHR_materials_iridescence?{type:`material`,property:`iridescenceFactor`}:{reason:rt(e)};case`extensions/KHR_materials_iridescence/iridescenceIor`:return r.extensions?.KHR_materials_iridescence?{type:`material`,property:`iridescenceIor`}:{reason:rt(e)};case`extensions/KHR_materials_iridescence/iridescenceThicknessMinimum`:return r.extensions?.KHR_materials_iridescence?{type:`material`,property:`iridescenceThicknessRange`,component:0}:{reason:rt(e)};case`extensions/KHR_materials_iridescence/iridescenceThicknessMaximum`:return r.extensions?.KHR_materials_iridescence?{type:`material`,property:`iridescenceThicknessRange`,component:1}:{reason:rt(e)};case`extensions/KHR_materials_anisotropy/anisotropyStrength`:return r.extensions?.KHR_materials_anisotropy?{type:`material`,property:`anisotropyStrength`}:{reason:rt(e)};case`extensions/KHR_materials_anisotropy/anisotropyRotation`:return r.extensions?.KHR_materials_anisotropy?{type:`material`,property:`anisotropyRotation`}:{reason:rt(e)};case`extensions/KHR_materials_emissive_strength/emissiveStrength`:return r.extensions?.KHR_materials_emissive_strength?{type:`material`,property:`emissiveStrength`}:{reason:rt(e)};default:return{reason:rt(e)}}}function I3(r,e){let t=e.lastIndexOf(`extensions`);if(t<0||e[t+1]!==`KHR_texture_transform`||t<1)return{reason:`not-a-texture-transform-target`};let i=wm(e.slice(0,t));if(!i)return{reason:R3(e.slice(0,t))};let o=M3(r,i.pathSegments);if(!o)return{reason:`texture-transform target "${e.slice(0,t).join(`/`)}" does not exist on the referenced material`};let a=e[t+2];if(a===`texCoord`)return{reason:`animated KHR_texture_transform.texCoord is unsupported because texCoord selection is structural, not a runtime float/vector update`};if(a!==`offset`&&a!==`rotation`&&a!==`scale`)return{reason:`KHR_texture_transform property "${a}" is not animatable; supported properties are offset, rotation, and scale`};let d=e[t+3];if(e.length>t+4)return{reason:`KHR_texture_transform.${a} does not support nested property paths`};let m;if(d!==void 0){if(m=Number(d),a===`rotation`)return{reason:`KHR_texture_transform.rotation does not support component indices`};if(!Number.isInteger(m)||m<0||m>1)return{reason:`KHR_texture_transform.${a} component index "${d}" is invalid; only 0 and 1 are supported`}}return{type:`textureTransform`,textureSlot:i.slot,path:a,component:m,baseTransform:MA(o)}}function M3(r,e){let t=r;for(let i of e)if(t=t?.[i],!t)return null;return t}function L3(r){return r.slice(1).split(`/`).map(e=>e.replace(/~1/g,`/`).replace(/~0/g,`~`))}function rt(r){let e=Bm(r);if(e){let t=Xc(e);if(t?.supportLevel===`none`)return`${e} is referenced by this pointer, but ${t.comment.charAt(0).toLowerCase()}${t.comment.slice(1)}`}return`no runtime target exists for material property "${r.join(`/`)}"`}function R3(r){let e=Bm(r);if(e){let t=Xc(e);if(t?.supportLevel===`none`)return`${e} is referenced by this pointer, but ${t.comment.charAt(0).toLowerCase()}${t.comment.slice(1)}`}return`texture-transform target "${r.join(`/`)}" has no runtime texture-slot mapping`}function Bm(r){let e=r.indexOf(`extensions`),t=r[e+1];return e>=0&&t?t:null}function Sn(r,e){f.warn(`KHR_animation_pointer target ${r} will be skipped because ${e}`)()}function P3(r,e){if(e.has(r))return e.get(r);let{value:t,components:i}=Um(r);FA(i===1,`accessorToJsArray1D must have exactly 1 component`);let o=Array.from(t);return e.set(r,o),o}function N3(r,e){if(e.has(r))return e.get(r);let{value:t,components:i}=Um(r);FA(i>=1,`accessorToJsArray2D must have at least 1 component`);let o=[];for(let a=0;a<t.length;a+=i)o.push(Array.from(t.slice(a,a+i)));return e.set(r,o),o}function Um(r){if(r.value)return{value:r.value,components:r.components};let e=r.bufferView?.data;FA(e!==void 0),FA(r.componentType===5126);let t=r.type===`SCALAR`?1:Number(r.type.slice(3));return{value:new Float32Array(e.buffer,e.byteOffset+(r.byteOffset||0),r.count*t),components:t}}function FA(r,e){if(!r)throw new Error(e)}var kA=class{variants;names;activeVariant=null;modelNodes;constructor(e,t){let i=e.extensions?.KHR_materials_variants?.variants||[];this.variants=i.map((a,d)=>({name:a.name||`Variant-${d}`,index:d})),this.names=this.variants.map(a=>a.name);let o=new Set;for(let a of t)a.preorderTraversal(d=>{d instanceof hi&&d.userData.gltfMaterialVariants&&o.add(d)});this.modelNodes=Array.from(o)}selectVariant(e){let t=this.variants.find(i=>i.name===e);if(!t)throw new Error(`Unknown glTF material variant: ${e}`);for(let i of this.modelNodes){let o=i.userData.gltfMaterialVariants,a=o.mappings.get(t.index);i.model.setMaterial(a?.material||o.defaultMaterial),i.model.setParameters(a?.parameters||o.defaultParameters)}this.activeVariant=e}resetVariant(){for(let e of this.modelNodes){let t=e.userData.gltfMaterialVariants;e.model.setMaterial(t.defaultMaterial),e.model.setParameters(t.defaultParameters)}this.activeVariant=null}};function Yc(r$29,e,t){t?.strictExtensions&&km(e,r$29);let{scenes:i,materials:o,gltfMeshIdToNodeMap:a,gltfNodeIdToNodeMap:d,gltfNodeIndexToNodeMap:m,generatedTextures:b}=Lm(r$29,e,t),y=Om(e),w=(e.lights||e.extensions?.KHR_lights_punctual?.lights||[]).map(Y=>r(r(r({},Y),Array.isArray(Y.color)?{color:[...Y.color]}:{}),Y.spot?{spot:r({},Y.spot)}:{})),S=(e.cameras||[]).map(Y=>{let z=r({},Y);return Y.perspective&&(z.perspective=r({},Y.perspective)),Y.orthographic&&(z.orthographic=r({},Y.orthographic)),z}),M={useByteColors:t?.useByteColors??!0,nodeVisibility:d,lightDefinitions:w},k=Wc(e,M),O=()=>{k.splice(0,k.length,...Wc(e,M))},Q=new RA({onVisibilityChange:O,cameras:S,lightDefinitions:w,onLightChange:O,animations:y,gltfNodeIdToNodeMap:d,materials:o}),V=new kA(e,i),G=Kc(e,r$29),J=i.map(Y=>Gm(Y.getBounds())),$=F3(J),te=new PA({gltf:e,scenes:i,gltfNodeIndexToNodeMap:m});Q.setUpdateHandler(()=>te.update());let re=!1;return{scenes:i,materials:o,variants:V,cameras:S,animator:Q,animations:y,lights:k,extensionSupport:G,sceneBounds:J,modelBounds:$,gltfMeshIdToNodeMap:a,gltfNodeIdToNodeMap:d,gltfNodeIndexToNodeMap:m,skins:te,gltf:e,destroy:()=>{if(re)return;re=!0;let Y=new Set([...i,...a.values(),...d.values()]),z=new Set,B=new Set(o);for(let ue of Y)ue.preorderTraversal(we=>{we instanceof hi&&(z.add(we),we.model?.material&&B.add(we.model.material))});for(let ue of z)ue.destroy();for(let ue of Y)ue.destroy();for(let ue of B)ue.destroy();for(let ue of b)ue.destroy();b.clear()}}}function Gm(r){if(!r)return{bounds:null,center:[0,0,0],size:[0,0,0],radius:.5,recommendedOrbitDistance:1};let e=[[r[0][0],r[0][1],r[0][2]],[r[1][0],r[1][1],r[1][2]]],t=[e[1][0]-e[0][0],e[1][1]-e[0][1],e[1][2]-e[0][2]],i=[e[0][0]+t[0]*.5,e[0][1]+t[1]*.5,e[0][2]+t[2]*.5],o=Math.max(t[0],t[1],t[2])*.5,a=Math.max(.5*Math.hypot(t[0],t[1],t[2]),.001);return{bounds:e,center:i,size:t,radius:a,recommendedOrbitDistance:Math.max(Math.max(o,.001)/Math.tan(Math.PI/6)*1.15,a*1.1)}}function F3(r){let e=null;for(let t of r)if(t.bounds){if(!e){e=[[...t.bounds[0]],[...t.bounds[1]]];continue}for(let i=0;i<3;i++)e[0][i]=Math.min(e[0][i],t.bounds[0][i]),e[1][i]=Math.max(e[1][i],t.bounds[1][i])}return Gm(e)}var Jc=(function(){var r=`b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuixkbeeeddddillviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WboY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbrl79IV9Rbwq1Zkdbk:kYi5ud9:du8Jjjjjbcjq9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz:jjjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCaAcethXaxaDfhiaOaeaoaeao6E9RhQalcl4cifcd4hLazcjdfaAfhKcbhYabaOad2fg8AhEaHh3incbh5dnawTmbaxaYcd4fRbbh5kcbh8Eazcjdfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcjdfa8EaA2fa8FaAz:jjjjb8Aa8FaAfhixdkazcjdfa8EaA2fcbaAz:kjjjb8Aa8FhixekaPa8F9RaL6mva8FaLfhidnaCTmbaPai9RcK6mbaocdtc:q:G:cjbfcj:G:cjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bwar9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfcbaicdfa8J9c8N1:NfghRbbag9cjjjjjw:dg8J9qE86bbarcVfcbaha8J9c8M1:NfghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fcbaha8J9c8N1:NfgiRbbag9cjjjjjw:dg8J9qE86bbarc96fcbaia8J9c8M1:NfgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbw83bwarai8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasaYcd4fRbbgociGPlbedrbkaATmdazaYfh8Fazcjdfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeazaYfhaazcjdfhhcbhoceh8EaKh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaQaocefgofmbka8FaXfh8FcdhoaacdfhaahaXfhha8EceGhlcbh8EalmbxdkkaATmbaocl4h8EazaYfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaKhainazcjdfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E94aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3aYclfgYad6mbkaza8AaAcufad2fadz:jjjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcjqf8Kjjjjbaok:ysezu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:kjjjb8Aav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbavaiaqaDcsGfRbbgscl4gP9RcsGcdtfydbaxcefgOaPEhDavaias9RcsGcdtfydbaOaPTgzfgOascsGgPEhsaPThPdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiazfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaPfhiaOaPfhxxekaxcbalRbbgsEgHaDc;:eSgDfhOascsGhAdndnascl4gCmbaOcefhzxekaOhzavaiaC9RcsGcdtfydbhOkdndnaAmbazcefhxxekazhxavaias9RcsGcdtfydbhzkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhHascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaHhDxekaDcefhDkasce4cbasceG9R7amfgmhHkdndnaCcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhOaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkaOhsxekascefhskaPce4cbaPceG9R7amfgmhOkdndnaAcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhzaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkazhlxekalcefhlkaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabarcetfgDaH87ebaDclfaz87ebaDcdfaO87ebxekabarcdtfgDaHBdbaDcwfazBdbaDclfaOBdbkavc;abfaocitfgDaOBdbaDaHBdlavaicdtfaHBdbavc;abfaocefcsGcitfgDazBdbaDaOBdlavaicefgicsGcdtfaOBdbavc;abfaocdfcsGcitfgDaHBdbaDazBdlavaiaCTaCcsSVfgicsGcdtfazBdbaiaATaAcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk: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:4ioiue99dud99dud99dnaeTmbcbhiabhlindndnal8Uebgv:YgoJ:ji:1Salcof8UebgrciVgw:Y:vgDNJbbbZJbbb:;avcu9kEMgq:lJbbb9p9DTmbaq:Ohkxekcjjjj94hkkalclf8Uebhvalcdf8UebhxalarcefciGcetfak87ebdndnax:YgqaDNJbbbZJbbb:;axcu9kEMgm:lJbbb9p9DTmbam:Ohxxekcjjjj94hxkabaiarciGgkfcd7cetfax87ebdndnav:YgmaDNJbbbZJbbb:;avcu9kEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkalarcufciGcetfav87ebdndnawaw2:ZgPaPMaoaoN:taqaqN:tamamN:tgoJbbbbaoJbbbb9GE:raDNJbbbZMgD:lJbbb9p9DTmbaD:Ohrxekcjjjj94hrkalakcetfar87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk:Tvirud99eudndnadcl9hmbaeTmeindndnabRbbgiabcefgl8Sbbgvabcdfgo8Sbbgrf9R:YJbbuJabcifgwRbbgdce4adVgDcd4aDVgDcl4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax86bbdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao86bbdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai86bbdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad86bbabclfhbaecufgembxdkkaeTmbindndnab8Vebgiabcdfgl8Uebgvabclfgo8Uebgrf9R:YJbFu9habcofgw8Vebgdce4adVgDcd4aDVgDcl4aDVgDcw4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax87ebdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao87ebdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai87ebdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad87ebabcwfhbaecufgembkkk9teiucbcbyd:K:G:cjbgeabcifc98GfgbBd:K:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk83dbcj:Gdk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:K:Gdkl8W:qbb`,e=`b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuixkbbebeeddddilve9Weeeviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WbwY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbDl79IV9Rbqq:59Dklbzik94evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaeai86b:q:W:cjbaecitab8Piw83i:q:G:cjbaecefgecjd9hmbkk:SBlEud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaialfgxar9RhodnadTgmmbavaoad;8qbbkaicefhPcj;abad9Uc;WFbGcjdadca0EhsdndndnadTmbaoadfhzcbhHinaeaH9nmdaxaP9RaD6miabaHad2fgOavcjdfasaeaH9RaHasfae6EgAaAcsfgoc9WGgCSEhXaPaDfhQaocl4cifcd4hLavcj;cbfaCcetfhKavcj;cbfaCci2fhYavcj;cbfaCfh8AcbhEaoc;ab6h3incbh5dnawTmbaPaEcd4fRbbh5kcbh8Eavcj;cbfh8Findndndndna5a8Ecet4ciGgoc9:fPdebdkaxaQ9RaC6mwdnaCTmbavcj;cbfa8EaC2faQaC;8qbbkaQaAfhQxdkaCTmeavcj;cbfa8EaC2fcbaC;8kbxekaxaQ9RaL6moaoclVcbawEhraQaLfhocbhidna3mbaxao9Rc;Gb6mbcbhlina8FalfhidndndndndndnaQalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLgacdp:meaapmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9oghpxiiiiiiiiiiiiiiiip8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaoclffa8JRb:q:W:cjbfhoxikaiaopbbwaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLpxssssssssssssssssp9oghpxssssssssssssssssp8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaocwffa8JRb:q:W:cjbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbggcitpbi:q:G:cjbagRb:q:W:cjbggpsaoRbeg8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbagaocdffa8JRb:q:W:cjbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLgacdp:meaapmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9oghpxiiiiiiiiiiiiiiiip8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaoclffa8JRb:q:W:cjbfhoxikaiczfaopbbwaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLpxssssssssssssssssp9oghpxssssssssssssssssp8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaocwffa8JRb:q:W:cjbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbggcitpbi:q:G:cjbagRb:q:W:cjbggpsaoRbeg8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbagaocdffa8JRb:q:W:cjbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLgacdp:meaapmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9oghpxiiiiiiiiiiiiiiiip8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaoclffa8JRb:q:W:cjbfhoxikaicafaopbbwaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLpxssssssssssssssssp9oghpxssssssssssssssssp8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaocwffa8JRb:q:W:cjbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbggcitpbi:q:G:cjbagRb:q:W:cjbggpsaoRbeg8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbagaocdffa8JRb:q:W:cjbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLgacdp:meaapmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9oghpxiiiiiiiiiiiiiiiip8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsaap5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbaiaoclffaqRb:q:W:cjbfhoxikaic8Wfaopbbwaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLpxssssssssssssssssp9oghpxssssssssssssssssp8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsaap5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbaiaocwffaqRb:q:W:cjbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitpbi:q:G:cjbaiRb:q:W:cjbgipsaoRbegqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqRb:q:W:cjbfhokalc;abfhialcjefaC0meaihlaxao9Rc;Fb0mbkkdnaiaC9pmbaici4hlinaxao9RcK6mwa8FaifhqdndndndndndnaQaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLgacdp:meaapmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9oghpxiiiiiiiiiiiiiiiip8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spkbbagaoclffa8JRb:q:W:cjbfhoxikaqaopbbwaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLpxssssssssssssssssp9oghpxssssssssssssssssp8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spkbbagaocwffa8JRb:q:W:cjbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbggcitpbi:q:G:cjbagRb:q:W:cjbggpsaoRbeg8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpkbbagaocdffa8JRb:q:W:cjbfhokalcdfhlaiczfgiaC6mbkkaohQaoTmoka8FaCfh8Fa8Ecefg8Ecl9hmbkdndndndnawTmbazaEcd4fRbbglciGPlbedwbkaCTmdaXaEfhlavaEfpbdbh8Kcbhoinalavcj;cbfaofpblbg8La8Aaofpblbg8MpmbzeHdOiAlCvXoQrLg8NaKaofpblbgyaYaofpblbg8PpmbzeHdOiAlCvXoQrLgIpmbezHdiOAlvCXorQLgacep9Taapxeeeeeeeeeeeeeeeeghp9op9Hp9rgaa8Kp9Ug8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp9Ug8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp9Ug8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp9Ug8Kp9Abbbaladfgla8Ka8NaIpmwDKYqk8AExm35Ps8E8Fgacep9Taaahp9op9Hp9rgap9Ug8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp9Ug8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp9Ug8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp9Ug8Kp9Abbbaladfgla8Ka8La8MpmwKDYq8AkEx3m5P8Es8Fg8Laya8PpmwKDYq8AkEx3m5P8Es8Fg8MpmbezHdiOAlvCXorQLgacep9Taaahp9op9Hp9rgap9Ug8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp9Ug8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp9Ug8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp9Ug8Kp9Abbbaladfgla8Ka8La8MpmwDKYqk8AExm35Ps8E8Fgacep9Taaahp9op9Hp9rgap9Ughp9Abbbaladfglahaaaapmlvorlvorlvorlvorp9Ughp9AbbbaladfglahaaaapmwDqkwDqkwDqkwDqkp9Ughp9AbbbaladfglahaaaapmxmPsxmPsxmPsxmPsp9Ug8Kp9AbbbaladfhlaoczfgoaC6mbxikkaCTmeaXaEfhlavaEfpbdbh8Kcbhoinalavcj;cbfaofpblbg8La8Aaofpblbg8MpmbzeHdOiAlCvXoQrLg8NaKaofpblbgyaYaofpblbg8PpmbzeHdOiAlCvXoQrLgIpmbezHdiOAlvCXorQLgacep:neaapxebebebebebebebebghp9op:bep9rgaa8Kp:oeg8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp:oeg8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp:oeg8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp:oeg8Kp9Abbbaladfgla8Ka8NaIpmwDKYqk8AExm35Ps8E8Fgacep:neaaahp9op:bep9rgap:oeg8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp:oeg8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp:oeg8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp:oeg8Kp9Abbbaladfgla8Ka8La8MpmwKDYq8AkEx3m5P8Es8Fg8Laya8PpmwKDYq8AkEx3m5P8Es8Fg8MpmbezHdiOAlvCXorQLgacep:neaaahp9op:bep9rgap:oeg8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp:oeg8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp:oeg8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp:oeg8Kp9Abbbaladfgla8Ka8La8MpmwDKYqk8AExm35Ps8E8Fgacep:neaaahp9op:bep9rgap:oeghp9Abbbaladfglahaaaapmlvorlvorlvorlvorp:oeghp9AbbbaladfglahaaaapmwDqkwDqkwDqkwDqkp:oeghp9AbbbaladfglahaaaapmxmPsxmPsxmPsxmPsp:oeg8Kp9AbbbaladfhlaoczfgoaC6mbxdkkaCTmbaXaEfhrcbhocbalcl4gl9Rc8FGhiavaEfpbdbhhinaravcj;cbfaofpblbg8Ka8Aaofpblbg8LpmbzeHdOiAlCvXoQrLg8MaKaofpblbg8NaYaofpblbgypmbzeHdOiAlCvXoQrLg8PpmbezHdiOAlvCXorQLgaaip:Reaaalp:Tep9qgaahp9rghp9Abbbaradfgrahaaaapmlvorlvorlvorlvorp9rghp9AbbbaradfgrahaaaapmwDqkwDqkwDqkwDqkp9rghp9AbbbaradfgrahaaaapmxmPsxmPsxmPsxmPsp9rghp9Abbbaradfgraha8Ma8PpmwDKYqk8AExm35Ps8E8Fgaaip:Reaaalp:Tep9qgap9rghp9Abbbaradfgrahaaaapmlvorlvorlvorlvorp9rghp9AbbbaradfgrahaaaapmwDqkwDqkwDqkwDqkp9rghp9AbbbaradfgrahaaaapmxmPsxmPsxmPsxmPsp9rghp9Abbbaradfgraha8Ka8LpmwKDYq8AkEx3m5P8Es8Fg8Ka8NaypmwKDYq8AkEx3m5P8Es8Fg8LpmbezHdiOAlvCXorQLgaaip:Reaaalp:Tep9qgap9rghp9Abbbaradfgrahaaaapmlvorlvorlvorlvorp9rghp9AbbbaradfgrahaaaapmwDqkwDqkwDqkwDqkp9rghp9AbbbaradfgrahaaaapmxmPsxmPsxmPsxmPsp9rghp9Abbbaradfgraha8Ka8LpmwDKYqk8AExm35Ps8E8Fgaaip:Reaaalp:Tep9qgap9rghp9Abbbaradfgrahaaaapmlvorlvorlvorlvorp9rghp9AbbbaradfgrahaaaapmwDqkwDqkwDqkwDqkp9rghp9AbbbaradfgrahaaaapmxmPsxmPsxmPsxmPsp9rghp9AbbbaradfhraoczfgoaC6mbkkaEclfgEad6mbkdnaXavcjdf9hmbaAad2goTmbaOavcjdfao;8qbbkdnammbavaXaAcufad2fad;8qbbkaAaHfhHc9:hoaQhPaQmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdasaeao9Raoasfae6Eaofgoae6mbkaial9RhPkcbc99axaP9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbkNsezu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbavaiaqaDcsGfRbbgscl4gP9RcsGcdtfydbaxcefgOaPEhDavaias9RcsGcdtfydbaOaPTgzfgOascsGgPEhsaPThPdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiazfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaPfhiaOaPfhxxekaxcbalRbbgsEgHaDc;:eSgDfhOascsGhAdndnascl4gCmbaOcefhzxekaOhzavaiaC9RcsGcdtfydbhOkdndnaAmbazcefhxxekazhxavaias9RcsGcdtfydbhzkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhHascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaHhDxekaDcefhDkasce4cbasceG9R7amfgmhHkdndnaCcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhOaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkaOhsxekascefhskaPce4cbaPceG9R7amfgmhOkdndnaAcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhzaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkazhlxekalcefhlkaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabarcetfgDaH87ebaDclfaz87ebaDcdfaO87ebxekabarcdtfgDaHBdbaDcwfazBdbaDclfaOBdbkavc;abfaocitfgDaOBdbaDaHBdlavaicdtfaHBdbavc;abfaocefcsGcitfgDazBdbaDaOBdlavaicefgicsGcdtfaOBdbavc;abfaocdfcsGcitfgDaHBdbaDazBdlavaiaCTaCcsSVfgicsGcdtfazBdbaiaATaAcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk;Toio97eue97aec98Ghedndnadcl9hmbaeTmecbhdinababpbbbgicKp:RecKp:Sep;6eglaicwp:RecKp:Sep;6ealp;Geaiczp:RecKp:Sep;6egvp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgwp9op9rp;Keglpxbb;:9cbb;:9cbb;:9cbb;:9calalp;Meaoaop;Meavaravawp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFbbbFbbbFbbbFbbbp9oaipxbbbFbbbFbbbFbbbFp9op9qalavp;Mearp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaoavp;Mearp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgDaDpbbbgipxbbbbbbFFbbbbbbFFgwp9oabpbbbgoaipmbediwDqkzHOAKY8AEgvczp:Reczp:Sep;6eglaoaipmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eavczp:Sep;6egvp;Gealp;Gep;Kep;Legipxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgqp9op9rp;Keglpxb;:FSb;:FSb;:FSb;:FSalalp;Meaiaip;Meavaravaqp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbp9oaiavp;Mearp;Keczp:Rep9qgialavp;Mearp;KepxFFbbFFbbFFbbFFbbp9oglpmwDKYqk8AExm35Ps8E8Fp9qpkbbabaoawp9oaialpmbezHdiOAlvCXorQLp9qpkbbabcafhbadclfgdae6mbkkk;2ileue97euo97dnaec98GgiTmbcbheinabcKfpx:ji:1S:ji:1S:ji:1S:ji:1SabpbbbglabczfgvpbbbgopmlvorxmPsCXQL358E8Fgrczp:Segwpxibbbibbbibbbibbbp9qp;6egDp;NegqaDaDp;MegDaDp;KealaopmbediwDqkzHOAKY8AEgDczp:Reczp:Sep;6eglalp;MeaDczp:Sep;6egoaop;Mearczp:Reczp:Sep;6egrarp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jep;Mepxbbn0bbn0bbn0bbn0gDp;KepxFFbbFFbbFFbbFFbbgkp9oaqaop;MeaDp;Keczp:Rep9qgoaqalp;MeaDp;Keakp9oaqarp;MeaDp;Keczp:Rep9qgDpmwDKYqk8AExm35Ps8E8Fglp5eawclp:RegqpEi:T:j83ibavalp5baqpEd:T:j83ibabcwfaoaDpmbezHdiOAlvCXorQLgDp5eaqpEe:T:j83ibabaDp5baqpEb:T:j83ibabcafhbaeclfgeai6mbkkkuee97dnadcd4ae2c98GgeTmbcbhdinababpbbbgicwp:Recwp:Sep;6eaicep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbabczfhbadclfgdae6mbkkk:Sodw97euaec98Ghedndnadcl9hmbaeTmecbhdinabpxbbuJbbuJbbuJbbuJabpbbbgicKp:TeglaicYp:Tep9qgvcdp:Teavp9qgvclp:Teavp9qgop;6ep;Negvaicwp:RecKp:SegraipxFbbbFbbbFbbbFbbbgwp9ogDp:Uep;6ep;Mepxbbn0bbn0bbn0bbn0gqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9oavaDarp:Xeaiczp:RecKp:Segip:Uep;6ep;Meaqp;Keawp9op9qavaDaraip:Uep:Xep;6ep;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qavaoalcep:Rep9oalpxebbbebbbebbbebbbp9op9qp;6ep;Meaqp;KecKp:Rep9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgkpxbFu9hbFu9hbFu9hbFu9habpbbbglakpbbbgrpmlvorxmPsCXQL358E8Fgvczp:TegqavcHp:Tep9qgicdp:Teaip9qgiclp:Teaip9qgicwp:Teaip9qgop;6ep;NegialarpmbediwDqkzHOAKY8AEgDpxFFbbFFbbFFbbFFbbglp9ograDczp:Segwp:Ueavczp:Reczp:SegDp:Xep;6ep;Mepxbbn0bbn0bbn0bbn0gvp;Kealp9oaiarawaDp:Uep:Xep;6ep;Meavp;Keczp:Rep9qgwaiaoaqcep:Rep9oaqpxebbbebbbebbbebbbp9op9qp;6ep;Meavp;Keczp:ReaiaDarp:Uep;6ep;Meavp;Kealp9op9qgipmwDKYqk8AExm35Ps8E8FpkbbabawaipmbezHdiOAlvCXorQLpkbbabcafhbadclfgdae6mbkkk9teiucbcbydj:G:cjbgeabcifc98GfgbBdj:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkxebcj:Gdklz:zbb`,t=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),i=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!=`object`)return{supported:!1};var o=WebAssembly.validate(t)?m(e):m(r),a,d=WebAssembly.instantiate(o,{}).then(function(V){a=V.instance,a.exports.__wasm_call_ctors()});function m(V){for(var G=new Uint8Array(V.length),J=0;J<V.length;++J){var $=V.charCodeAt(J);G[J]=$>96?$-97:$>64?$-39:$+4}for(var te=0,J=0;J<V.length;++J)G[te++]=G[J]<60?i[G[J]]:(G[J]-60)*64+G[++J];return G.buffer.slice(0,te)}function b(V,G,J,$,te,re,le){var Y=V.exports.sbrk,z=$+3&-4,B=Y(z*te),ue=Y(re.length),we=new Uint8Array(V.exports.memory.buffer);we.set(re,ue);var Ee=G(B,$,te,ue,re.length);if(Ee==0&&le&&le(B,z,te),J.set(we.subarray(B,B+$*te)),Y(B-Y(0)),Ee!=0)throw new Error(`Malformed buffer data: `+Ee)}var y={NONE:``,OCTAHEDRAL:`meshopt_decodeFilterOct`,QUATERNION:`meshopt_decodeFilterQuat`,EXPONENTIAL:`meshopt_decodeFilterExp`,COLOR:`meshopt_decodeFilterColor`},_={ATTRIBUTES:`meshopt_decodeVertexBuffer`,TRIANGLES:`meshopt_decodeIndexBuffer`,INDICES:`meshopt_decodeIndexSequence`},w=[],S=0;function M(V){var G={object:new Worker(V),pending:0,requests:{}};return G.object.onmessage=function(J){var $=J.data;G.pending-=$.count,G.requests[$.id][$.action]($.value),delete G.requests[$.id]},G}function k(V){for(var G=`self.ready = WebAssembly.instantiate(new Uint8Array([`+new Uint8Array(o)+`]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = `+Q.name+`;`+b.toString()+Q.toString(),J=new Blob([G],{type:`text/javascript`}),$=URL.createObjectURL(J),te=w.length;te<V;++te)w[te]=M($);for(var te=V;te<w.length;++te)w[te].object.postMessage({});w.length=V,URL.revokeObjectURL($)}function O(V,G,J,$,te){for(var re=w[0],le=1;le<w.length;++le)w[le].pending<re.pending&&(re=w[le]);return new Promise(function(Y,z){var B=new Uint8Array(J),ue=++S;re.pending+=V,re.requests[ue]={resolve:Y,reject:z},re.object.postMessage({id:ue,count:V,size:G,source:B,mode:$,filter:te},[B.buffer])})}function Q(V){var G=V.data;self.ready.then(function(J){if(!G.id)return self.close();try{var $=new Uint8Array(G.count*G.size);b(J,J.exports[G.mode],$,G.count,G.size,G.source,J.exports[G.filter]),self.postMessage({id:G.id,count:G.count,action:`resolve`,value:$},[$.buffer])}catch(te){self.postMessage({id:G.id,count:G.count,action:`reject`,value:te})}})}return{ready:d,supported:!0,useWorkers:function(V){k(V)},decodeVertexBuffer:function(V,G,J,$,te){b(a,a.exports.meshopt_decodeVertexBuffer,V,G,J,$,a.exports[y[te]])},decodeIndexBuffer:function(V,G,J,$){b(a,a.exports.meshopt_decodeIndexBuffer,V,G,J,$)},decodeIndexSequence:function(V,G,J,$){b(a,a.exports.meshopt_decodeIndexSequence,V,G,J,$)},decodeGltfBuffer:function(V,G,J,$,te,re){b(a,a.exports[_[te]],V,G,J,$,a.exports[y[re]])},decodeGltfBufferAsync:function(V,G,J,$,te){return w.length>0?O(V,G,J,_[$],y[te]):d.then(function(){var re=new Uint8Array(V*G);return b(a,a.exports[_[$]],re,V,G,J,a.exports[y[te]]),re})}}})();var Zc={};w(Zc,{createExtMeshFeatures:()=>J3,decode:()=>W3,encode:()=>Q3,name:()=>q3});function ht(r,e){if(!r)throw new Error(e||`assert failed: gltf`)}var OA={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16};var DA={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};var k3=1.33;var jm=[`SCALAR`,`VEC2`,`VEC3`,`VEC4`];var D3=new Map([[Int8Array,5120],[Uint8Array,5121],[Int16Array,5122],[Uint16Array,5123],[Uint32Array,5125],[Float32Array,5126],[Float64Array,5130]]);var B3={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16};var U3={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};var G3={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function BA(r){return jm[r-1]||jm[0]}function Cn(r){let e=D3.get(r.constructor);if(!e)throw new Error(`Illegal typed array`);return e}function Jn(r,e){let t=G3[r.componentType],i=B3[r.type],o=U3[r.componentType],a=r.count*i,d=r.count*i*o;ht(d>=0&&d<=e.byteLength);return{ArrayType:t,length:a,byteLength:d,componentByteSize:DA[r.componentType],numberOfComponentsInElement:OA[r.type]}}function es(r){let{images:e,bufferViews:t}=r;e=e||[],t=t||[];let i=e.map(d=>d.bufferView);t=t.filter(d=>!i.includes(d));let o=t.reduce((d,m)=>d+m.byteLength,0),a=e.reduce((d,m)=>{let{width:b,height:y}=m.image;return d+b*y},0);return o+Math.ceil(4*a*k3)}function Vm(r,e,t){let i=r.bufferViews[t];ht(i);let a=e[i.buffer];ht(a);let d=(i.byteOffset||0)+a.byteOffset;return new Uint8Array(a.arrayBuffer,d,i.byteLength)}function zm(r,e,t){let i=typeof t==`number`?r.accessors?.[t]:t;if(!i)throw new Error(`No gltf accessor ${JSON.stringify(t)}`);let o=r.bufferViews?.[i.bufferView||0];if(!o)throw new Error(`No gltf buffer view for accessor ${o}`);let{arrayBuffer:a,byteOffset:d}=e[o.buffer],m=(d||0)+(i.byteOffset||0)+(o.byteOffset||0),{ArrayType:b,length:y,componentByteSize:_,numberOfComponentsInElement:w}=Jn(i,o),S=_*w,M=o.byteStride||S;if(typeof o.byteStride>`u`||o.byteStride===S)return new b(a,m,y);let k=new b(y);for(let O=0;O<i.count;O++){let Q=new b(a,m+O*M,w);k.set(Q,O*w)}return k}function j3(){return{asset:{version:`2.0`,generator:`loaders.gl`},buffers:[],extensions:{},extensionsRequired:[],extensionsUsed:[]}}var Ke=class{gltf;sourceBuffers;byteLength;constructor(e){this.gltf={json:e?.json||j3(),buffers:e?.buffers||[],images:e?.images||[]},this.sourceBuffers=[],this.byteLength=0,this.gltf.buffers&&this.gltf.buffers[0]&&(this.byteLength=this.gltf.buffers[0].byteLength,this.sourceBuffers=[this.gltf.buffers[0]])}get json(){return this.gltf.json}getApplicationData(e){return this.json[e]}getExtraData(e){return(this.json.extras||{})[e]}hasExtension(e){let t=this.getUsedExtensions().find(o=>o===e),i=this.getRequiredExtensions().find(o=>o===e);return typeof t==`string`||typeof i==`string`}getExtension(e){let t=this.getUsedExtensions().find(o=>o===e),i=this.json.extensions||{};return t?i[e]:null}getRequiredExtension(e){return this.getRequiredExtensions().find(i=>i===e)?this.getExtension(e):null}getRequiredExtensions(){return this.json.extensionsRequired||[]}getUsedExtensions(){return this.json.extensionsUsed||[]}getRemovedExtensions(){return this.json.extensionsRemoved||[]}getObjectExtension(e,t){return(e.extensions||{})[t]}getScene(e){return this.getObject(`scenes`,e)}getNode(e){return this.getObject(`nodes`,e)}getSkin(e){return this.getObject(`skins`,e)}getMesh(e){return this.getObject(`meshes`,e)}getMaterial(e){return this.getObject(`materials`,e)}getAccessor(e){return this.getObject(`accessors`,e)}getTexture(e){return this.getObject(`textures`,e)}getSampler(e){return this.getObject(`samplers`,e)}getImage(e){return this.getObject(`images`,e)}getBufferView(e){return this.getObject(`bufferViews`,e)}getBuffer(e){return this.getObject(`buffers`,e)}getObject(e,t){if(typeof t==`object`)return t;let i=this.json[e]&&this.json[e][t];if(!i)throw new Error(`glTF file error: Could not find ${e}[${t}]`);return i}getTypedArrayForBufferView(e){e=this.getBufferView(e);let t=e.buffer,i=this.gltf.buffers[t];ht(i);let o=(e.byteOffset||0)+i.byteOffset;return new Uint8Array(i.arrayBuffer,o,e.byteLength)}getTypedArrayForAccessor(e){let t=this.getAccessor(e);return zm(this.gltf.json,this.gltf.buffers,t)}getTypedArrayForImageData(e){e=this.getAccessor(e);let t=this.getBufferView(e.bufferView),o=this.getBuffer(t.buffer).data,a=t.byteOffset||0;return new Uint8Array(o,a,t.byteLength)}addApplicationData(e,t){return this.json[e]=t,this}addExtraData(e,t){return this.json.extras=this.json.extras||{},this.json.extras[e]=t,this}addObjectExtension(e,t,i){return e.extensions=e.extensions||{},e.extensions[t]=i,this.registerUsedExtension(t),this}setObjectExtension(e,t,i){let o=e.extensions||{};o[t]=i}removeObjectExtension(e,t){let i=e?.extensions||{};if(i[t]){this.json.extensionsRemoved=this.json.extensionsRemoved||[];let o=this.json.extensionsRemoved;o.includes(t)||o.push(t)}delete i[t]}addExtension(e,t={}){return ht(t),this.json.extensions=this.json.extensions||{},this.json.extensions[e]=t,this.registerUsedExtension(e),t}addRequiredExtension(e,t={}){return ht(t),this.addExtension(e,t),this.registerRequiredExtension(e),t}registerUsedExtension(e){this.json.extensionsUsed=this.json.extensionsUsed||[],this.json.extensionsUsed.find(t=>t===e)||this.json.extensionsUsed.push(e)}registerRequiredExtension(e){this.registerUsedExtension(e),this.json.extensionsRequired=this.json.extensionsRequired||[],this.json.extensionsRequired.find(t=>t===e)||this.json.extensionsRequired.push(e)}removeExtension(e){if(this.json.extensions?.[e]){this.json.extensionsRemoved=this.json.extensionsRemoved||[];let t=this.json.extensionsRemoved;t.includes(e)||t.push(e)}this.json.extensions&&delete this.json.extensions[e],this.json.extensionsRequired&&this._removeStringFromArray(this.json.extensionsRequired,e),this.json.extensionsUsed&&this._removeStringFromArray(this.json.extensionsUsed,e)}setDefaultScene(e){this.json.scene=e}addScene(e){let{nodeIndices:t}=e;return this.json.scenes=this.json.scenes||[],this.json.scenes.push({nodes:t}),this.json.scenes.length-1}addNode(e){let{meshIndex:t,matrix:i}=e;this.json.nodes=this.json.nodes||[];let o={mesh:t};return i&&(o.matrix=i),this.json.nodes.push(o),this.json.nodes.length-1}addMesh(e){let{attributes:t,indices:i,material:o,mode:a=4}=e,m={primitives:[{attributes:this._addAttributes(t),mode:a}]};if(i){let b=this._addIndices(i);m.primitives[0].indices=b}return Number.isFinite(o)&&(m.primitives[0].material=o),this.json.meshes=this.json.meshes||[],this.json.meshes.push(m),this.json.meshes.length-1}addPointCloud(e){let i={primitives:[{attributes:this._addAttributes(e),mode:0}]};return this.json.meshes=this.json.meshes||[],this.json.meshes.push(i),this.json.meshes.length-1}addImage(e,t){let i=Er$1(e),o=t||i?.mimeType,d={bufferView:this.addBufferView(e),mimeType:o};return this.json.images=this.json.images||[],this.json.images.push(d),this.json.images.length-1}addBufferView(e,t=0,i=this.byteLength){let o=e.byteLength;ht(Number.isFinite(o)),this.sourceBuffers=this.sourceBuffers||[],this.sourceBuffers.push(e);let a={buffer:t,byteOffset:i,byteLength:o};return this.byteLength+=ua$1(o,4),this.json.bufferViews=this.json.bufferViews||[],this.json.bufferViews.push(a),this.json.bufferViews.length-1}addAccessor(e,t){let i={bufferView:e,type:BA(t.size),componentType:t.componentType,count:t.count,max:t.max,min:t.min};return this.json.accessors=this.json.accessors||[],this.json.accessors.push(i),this.json.accessors.length-1}addBinaryBuffer(e,t={size:3}){let i=this.addBufferView(e),o={min:t.min,max:t.max};(!o.min||!o.max)&&(o=this._getAccessorMinMax(e,t.size));let a={size:t.size,componentType:Cn(e),count:Math.round(e.length/t.size),min:o.min,max:o.max};return this.addAccessor(i,Object.assign(a,t))}addTexture(e){let{imageIndex:t}=e,i={source:t};return this.json.textures=this.json.textures||[],this.json.textures.push(i),this.json.textures.length-1}addMaterial(e){return this.json.materials=this.json.materials||[],this.json.materials.push(e),this.json.materials.length-1}createBinaryChunk(){let e=this.byteLength,t=new ArrayBuffer(e),i=new Uint8Array(t),o=0;for(let a of this.sourceBuffers||[])o=Qu(a,i,o);this.json?.buffers?.[0]?this.json.buffers[0].byteLength=e:this.json.buffers=[{byteLength:e}],this.gltf.binary=t,this.sourceBuffers=[t],this.gltf.buffers=[{arrayBuffer:t,byteOffset:0,byteLength:t.byteLength}]}_removeStringFromArray(e,t){let i=!0;for(;i;){let o=e.indexOf(t);o>-1?e.splice(o,1):i=!1}}_addAttributes(e={}){let t={};for(let i in e){let o=e[i],a=this._getGltfAttributeName(i);t[a]=this.addBinaryBuffer(o.value,o)}return t}_addIndices(e){return this.addBinaryBuffer(e,{size:1})}_getGltfAttributeName(e){switch(e.toLowerCase()){case`position`:case`positions`:case`vertices`:return`POSITION`;case`normal`:case`normals`:return`NORMAL`;case`color`:case`colors`:return`COLOR_0`;case`texcoord`:case`texcoords`:return`TEXCOORD_0`;default:return e}}_getAccessorMinMax(e,t){let i={min:null,max:null};if(e.length<t)return i;i.min=[],i.max=[];let o=e.subarray(0,t);for(let a of o)i.min.push(a),i.max.push(a);for(let a=t;a<e.length;a+=t)for(let d=0;d<t;d++)i.min[0+d]=Math.min(i.min[0+d],e[a+d]),i.max[0+d]=Math.max(i.max[0+d],e[a+d]);return i}};function Hm(r){return(r%1+1)%1}var qm={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16,BOOLEAN:1,STRING:1,ENUM:1};var V3={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:BigInt64Array,UINT64:BigUint64Array,FLOAT32:Float32Array,FLOAT64:Float64Array};var Wm={INT8:1,UINT8:1,INT16:2,UINT16:2,INT32:4,UINT32:4,INT64:8,UINT64:8,FLOAT32:4,FLOAT64:8};function ts(r,e){return Wm[e]*qm[r]}function zi(r,e,t,i){if(t!==`UINT8`&&t!==`UINT16`&&t!==`UINT32`&&t!==`UINT64`)return null;let a=Hi(r.getTypedArrayForBufferView(e),`SCALAR`,t,i+1);return a instanceof BigInt64Array||a instanceof BigUint64Array?null:a}function Hi(r,e,t,i=1){let o=qm[e],a=V3[t],d=Wm[t],m=i*o,b=m*d,y=r.buffer,_=r.byteOffset;return _%d!==0&&(y=new Uint8Array(y).slice(_,_+b).buffer,_=0),new a(ef(y),_,m)}function qi(r,e,t){let i=`TEXCOORD_${e.texCoord||0}`,o=t.attributes[i],a=r.getTypedArrayForAccessor(o),d=r.gltf.json,m=e.index,b=d.textures?.[m]?.source;if(typeof b<`u`){let y=d.images?.[b]?.mimeType,_=r.gltf.images?.[b];if(_&&typeof _.width<`u`){let w=[];for(let S=0;S<a.length;S+=2){let M=z3(_,y,a,S,e.channels);w.push(M)}return w}}return[]}function UA(r,e,t,i,o){if(!t?.length)return;let a=[];for(let _ of t){let w=i.findIndex(S=>S===_);w===-1&&(w=i.push(_)-1),a.push(w)}let d=new Uint32Array(a),m=r.gltf.buffers.push({arrayBuffer:d.buffer,byteOffset:d.byteOffset,byteLength:d.byteLength})-1,b=r.addBufferView(d,m,0),y=r.addAccessor(b,{size:1,componentType:Cn(d),count:d.length});o.attributes[e]=y}function z3(r,e,t,i,o=[0]){let a={r:{offset:0,shift:0},g:{offset:1,shift:8},b:{offset:2,shift:16},a:{offset:3,shift:24}},d=t[i],m=t[i+1],b=1;e&&(e.indexOf(`image/jpeg`)!==-1||e.indexOf(`image/png`)!==-1)&&(b=4);let y=H3(d,m,r,b),_=0;for(let w of o){let S=typeof w==`number`?Object.values(a)[w]:a[w],M=y+S.offset,k=Ls(r);if(k.data.length<=M)throw new Error(`${k.data.length} <= ${M}`);let O=k.data[M];_|=O<<S.shift}return _}function H3(r,e,t,i=1){let o=t.width,a=Hm(r)*(o-1),d=Math.round(a),m=t.height,b=Hm(e)*(m-1),y=Math.round(b),_=t.components?t.components:i;return(y*o+d)*_}function GA(r,e,t,i,o){let a=[];for(let d=0;d<e;d++){let m=t[d],b=t[d+1]-t[d];if(b+m>i)break;let y=m/o,_=b/o;a.push(r.slice(y,y+_))}return a}function jA(r,e,t){let i=[];for(let o=0;o<e;o++){let a=o*t;i.push(r.slice(a,a+t))}return i}function VA(r,e,t,i){if(t)throw new Error(`Not implemented - arrayOffsets for strings is specified`);if(i){let o=[],a=new TextDecoder(`utf8`),d=0;for(let m=0;m<r;m++){let b=i[m+1]-i[m];if(b+d<=e.length){let y=e.subarray(d,b+d),_=a.decode(y);o.push(_),d+=b}}return o}return[]}var Wi=`EXT_mesh_features`;var q3=Wi;async function W3(r,e){K3(new Ke(r),e)}function Q3(r,e){let t=new Ke(r);return Y3(t,e),t.createBinaryChunk(),t.gltf}function K3(r,e){let t=r.gltf.json;if(t.meshes)for(let i of t.meshes)for(let o of i.primitives)X3(r,o,e)}function X3(r,e,t){if(!t?.gltf?.loadBuffers)return;let o=e.extensions?.[Wi]?.featureIds;if(o)for(let a of o){let d;if(typeof a.attribute<`u`){let m=`_FEATURE_ID_${a.attribute}`,b=e.attributes[m];d=r.getTypedArrayForAccessor(b)}else typeof a.texture<`u`&&t?.gltf?.loadImages?d=qi(r,a.texture,e):d=[];a.data=d}}function Y3(r,e){let t=r.gltf.json.meshes;if(t)for(let i of t)for(let o of i.primitives)Z3(r,o)}function J3(r,e,t,i){e.extensions||(e.extensions={});let o=e.extensions[Wi];o||(o={featureIds:[]},e.extensions[Wi]=o);let{featureIds:a}=o,d={featureCount:t.length,propertyTable:i,data:t};a.push(d),r.addObjectExtension(e,Wi,o)}function Z3(r,e){let t=e.extensions?.[Wi];if(!t)return;let i=t.featureIds;i.forEach((o,a)=>{if(o.data){let{accessorKey:d,index:m}=$3(e.attributes),b=new Uint32Array(o.data);i[a]={featureCount:b.length,propertyTable:o.propertyTable,attribute:m},r.gltf.buffers.push({arrayBuffer:b.buffer,byteOffset:b.byteOffset,byteLength:b.byteLength});let y=r.addBufferView(b),_=r.addAccessor(y,{size:1,componentType:Cn(b),count:b.length});e.attributes[d]=_}})}function $3(r){let e=`_FEATURE_ID_`,t=Object.keys(r).filter(a=>a.indexOf(e)===0),i=-1;for(let a of t){let d=Number(a.substring(12));d>i&&(i=d)}return i++,{accessorKey:`${e}${i}`,index:i}}var tl={};w(tl,{createExtStructuralMetadata:()=>xS,decode:()=>tS,encode:()=>rS,name:()=>eS});var Qi=`EXT_structural_metadata`;var eS=Qi;async function tS(r,e){nS(new Ke(r),e)}function rS(r,e){let t=new Ke(r);return TS(t,e),t.createBinaryChunk(),t.gltf}function nS(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(Qi);t&&(e.gltf?.loadImages&&iS(r,t),oS(r,t))}function iS(r,e){let t=e.propertyTextures,i=r.gltf.json;if(t&&i.meshes)for(let o of i.meshes)for(let a of o.primitives)AS(r,t,a,e)}function oS(r,e){let t=e.schema;if(!t)return;let i=t.classes,o=e.propertyTables;if(i&&o)for(let a in i){let d=sS(o,a);d&&cS(r,t,d)}}function sS(r,e){for(let t of r)if(t.class===e)return t;return null}function AS(r,e,t,i){if(!e)return;let a=t.extensions?.[Qi]?.propertyTextures;if(a)for(let d of a){let m=e[d];aS(r,m,t,i)}}function aS(r,e,t,i){if(!e.properties)return;i.dataAttributeNames||(i.dataAttributeNames=[]);let o=e.class;for(let a in e.properties){let d=`${o}_${a}`,m=e.properties?.[a];if(!m)continue;m.data||(m.data=[]);let b=m.data,y=qi(r,m,t);y!==null&&(UA(r,d,y,b,t),m.data=b,i.dataAttributeNames.push(d))}}function cS(r,e,t){let i=e.classes?.[t.class];if(!i)throw new Error(`Incorrect data in the EXT_structural_metadata extension: no schema class with name ${t.class}`);let o=t.count;for(let a in i.properties){let d=i.properties[a],m=t.properties?.[a];if(m)m.data=lS(r,e,d,o,m)}}function lS(r,e,t,i,o){let a=[],d=o.values,m=r.getTypedArrayForBufferView(d),b=uS(r,t,o,i),y=fS(r,o,i);switch(t.type){case`SCALAR`:case`VEC2`:case`VEC3`:case`VEC4`:case`MAT2`:case`MAT3`:case`MAT4`:a=hS(t,i,m,b);break;case`BOOLEAN`:throw new Error(`Not implemented - classProperty.type=${t.type}`);case`STRING`:a=VA(i,m,b,y);break;case`ENUM`:a=dS(e,t,i,m,b);break;default:throw new Error(`Unknown classProperty type ${t.type}`)}return a}function uS(r,e,t,i){return e.array&&typeof e.count>`u`&&typeof t.arrayOffsets<`u`?zi(r,t.arrayOffsets,t.arrayOffsetType||`UINT32`,i):null}function fS(r,e,t){return typeof e.stringOffsets<`u`?zi(r,e.stringOffsets,e.stringOffsetType||`UINT32`,t):null}function hS(r,e,t,i){let o=r.array,a=r.count,d=ts(r.type,r.componentType),m=t.byteLength/d,b;return r.componentType?b=Hi(t,r.type,r.componentType,m):b=t,o?i?GA(b,e,i,t.length,d):a?jA(b,e,a):[]:b}function dS(r,e,t,i,o){let a=e.enumType;if(!a)throw new Error(`Incorrect data in the EXT_structural_metadata extension: classProperty.enumType is not set for type ENUM`);let d=r.enums?.[a];if(!d)throw new Error(`Incorrect data in the EXT_structural_metadata extension: schema.enums does't contain ${a}`);let m=d.valueType||`UINT16`,b=ts(e.type,m),y=i.byteLength/b,_=Hi(i,e.type,m,y);if(_||(_=i),e.array){if(o)return pS({valuesData:_,numberOfElements:t,arrayOffsets:o,valuesDataBytesLength:i.length,elementSize:b,enumEntry:d});let w=e.count;return w?mS(_,t,w,d):[]}return el(_,0,t,d)}function pS(r){let{valuesData:e,numberOfElements:t,arrayOffsets:i,valuesDataBytesLength:o,elementSize:a,enumEntry:d}=r,m=[];for(let b=0;b<t;b++){let y=i[b],_=i[b+1]-i[b];if(_+y>o)break;let M=el(e,y/a,_/a,d);m.push(M)}return m}function mS(r,e,t,i){let o=[];for(let a=0;a<e;a++){let m=el(r,t*a,t,i);o.push(m)}return o}function el(r,e,t,i){let o=[];for(let a=0;a<t;a++)if(r instanceof BigInt64Array||r instanceof BigUint64Array)o.push(``);else{let d=r[e+a],m=gS(i,d);m?o.push(m.name):o.push(``)}return o}function gS(r,e){for(let t of r.values)if(t.value===e)return t;return null}var bS=`schemaClassId`;function TS(r,e){let t=r.getExtension(Qi);if(t&&t.propertyTables)for(let i of t.propertyTables){let o=i.class,a=t.schema?.classes?.[o];i.properties&&a&&yS(i,a,r)}}function yS(r,e,t){for(let i in r.properties){let o=r.properties[i].data;if(o){let a=e.properties[i];if(a){let d=ES(o,a,t);r.properties[i]=d}}}}function xS(r,e,t=bS){let i=r.getExtension(Qi);i||(i=r.addExtension(Qi)),i.schema=_S(e,t,i.schema);let o=wS(e,t,i.schema);return i.propertyTables||(i.propertyTables=[]),i.propertyTables.push(o)-1}function _S(r,e,t){let i=t??{id:`schema_id`},o={properties:{}};for(let a of r){let d={type:a.elementType,componentType:a.componentType};o.properties[a.name]=d}return i.classes={},i.classes[e]=o,i}function wS(r,e,t){let i={class:e,count:0},o=0,a=t.classes?.[e];for(let d of r){if(o===0&&(o=d.values.length),o!==d.values.length&&d.values.length)throw new Error(`Illegal values in attributes`);a?.properties[d.name]&&(i.properties||(i.properties={}),i.properties[d.name]={values:0,data:d.values})}return i.count=o,i}function ES(r,e,t){let i={values:0};if(e.type===`STRING`){let{stringData:o,stringOffsets:a}=CS(r);i.stringOffsets=$c(a,t),i.values=$c(o,t)}else if(e.type===`SCALAR`&&e.componentType)i.values=$c(SS(r,e.componentType),t);return i}var vS={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:Int32Array,UINT64:Uint32Array,FLOAT32:Float32Array,FLOAT64:Float64Array};function SS(r,e){let t=[];for(let o of r)t.push(Number(o));let i=vS[e];if(!i)throw new Error(`Illegal component type`);return new i(t)}function CS(r){let e=new TextEncoder,t=[],i=0;for(let b of r){let y=e.encode(b);i+=y.length,t.push(y)}let o=new Uint8Array(i),a=[],d=0;for(let b of t)o.set(b,d),a.push(d),d+=b.length;a.push(d);return{stringData:o,stringOffsets:new Uint32Array(a)}}function $c(r,e){return e.gltf.buffers.push({arrayBuffer:ef(r.buffer),byteOffset:r.byteOffset,byteLength:r.byteLength}),e.addBufferView(r)}var rl={};w(rl,{decode:()=>MS,name:()=>IS});var Qm=`EXT_feature_metadata`;var IS=Qm;async function MS(r,e){LS(new Ke(r),e)}function LS(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(Qm);t&&(e.gltf?.loadImages&&RS(r,t),PS(r,t))}function RS(r,e){let t=e.schema;if(!t)return;let i=t.classes,{featureTextures:o}=e;if(i&&o)for(let a in i){let d=i[a],m=FS(o,a);m&&OS(r,m,d)}}function PS(r,e){let t=e.schema;if(!t)return;let i=t.classes,o=e.featureTables;if(i&&o)for(let a in i){let d=NS(o,a);d&&kS(r,t,d)}}function NS(r,e){for(let t in r){let i=r[t];if(i.class===e)return i}return null}function FS(r,e){for(let t in r){let i=r[t];if(i.class===e)return i}return null}function kS(r,e,t){if(!t.class)return;let i=e.classes?.[t.class];if(!i)throw new Error(`Incorrect data in the EXT_structural_metadata extension: no schema class with name ${t.class}`);let o=t.count;for(let a in i.properties){let d=i.properties[a],m=t.properties?.[a];if(m)m.data=DS(r,e,d,o,m)}}function OS(r,e,t){let i=e.class;for(let o in t.properties){let a=e?.properties?.[o];if(a)a.data=VS(r,a,i)}}function DS(r,e,t,i,o){let a=[],d=o.bufferView,m=r.getTypedArrayForBufferView(d),b=BS(r,t,o,i),y=US(r,t,o,i);return t.type===`STRING`||t.componentType===`STRING`?a=VA(i,m,b,y):GS(t)&&(a=jS(t,i,m,b)),a}function BS(r,e,t,i){return e.type===`ARRAY`&&typeof e.componentCount>`u`&&typeof t.arrayOffsetBufferView<`u`?zi(r,t.arrayOffsetBufferView,t.offsetType||`UINT32`,i):null}function US(r,e,t,i){return typeof t.stringOffsetBufferView<`u`?zi(r,t.stringOffsetBufferView,t.offsetType||`UINT32`,i):null}function GS(r){let e=[`UINT8`,`INT16`,`UINT16`,`INT32`,`UINT32`,`INT64`,`UINT64`,`FLOAT32`,`FLOAT64`];return e.includes(r.type)||typeof r.componentType<`u`&&e.includes(r.componentType)}function jS(r,e,t,i){let o=r.type===`ARRAY`,a=r.componentCount,d=`SCALAR`,m=r.componentType||r.type,b=ts(d,m),_=Hi(t,d,m,t.byteLength/b);return o?i?GA(_,e,i,t.length,b):a?jA(_,e,a):[]:_}function VS(r,e,t){let i=r.gltf.json;if(!i.meshes)return[];let o=[];for(let a of i.meshes)for(let d of a.primitives)zS(r,t,e,o,d);return o}function zS(r$30,e,t,i,o){let d=qi(r$30,r({channels:t.channels},t.texture),o);d&&UA(r$30,e,d,i,o)}var Km=`4.5.1`;var Xm=`4.5.1`;var zA={TRANSCODER:`basis_transcoder.js`,TRANSCODER_WASM:`basis_transcoder.wasm`,ENCODER:`basis_encoder.js`,ENCODER_WASM:`basis_encoder.wasm`};var Ym;async function il(r){qu(r.modules);return Zu(`basis`)||(Ym||=HS(r),await Ym)}async function HS(r){let e=null,t=null;return[e,t]=await Promise.all([await wr(zA.TRANSCODER,`textures`,r),await wr(zA.TRANSCODER_WASM,`textures`,r)]),e=e||globalThis.BASIS,await qS(e,t)}function qS(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(i=>{r(t).then(o=>{let{BasisFile:a,initializeBasis:d}=o;d(),i({BasisFile:a})})})}var nl;async function ol(r){let e=r.modules||{};return e.basisEncoder?e.basisEncoder:(nl=nl||WS(r),await nl)}async function WS(r){let e=null,t=null;return[e,t]=await Promise.all([await wr(zA.ENCODER,`textures`,r),await wr(zA.ENCODER_WASM,`textures`,r)]),e=e||globalThis.BASIS,await QS(e,t)}function QS(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(i=>{r(t).then(o=>{let{BasisFile:a,KTX2File:d,initializeBasis:m,BasisEncoder:b}=o;m(),i({BasisFile:a,KTX2File:d,BasisEncoder:b})})})}var KS=[``,`WEBKIT_`,`MOZ_`];var Jm={WEBGL_compressed_texture_s3tc:[`bc1-rgb-unorm-webgl`,`bc1-rgba-unorm`,`bc2-rgba-unorm`,`bc3-rgba-unorm`],WEBGL_compressed_texture_s3tc_srgb:[`bc1-rgb-unorm-srgb-webgl`,`bc1-rgba-unorm-srgb`,`bc2-rgba-unorm-srgb`,`bc3-rgba-unorm-srgb`],EXT_texture_compression_rgtc:[`bc4-r-unorm`,`bc4-r-snorm`,`bc5-rg-unorm`,`bc5-rg-snorm`],EXT_texture_compression_bptc:[`bc6h-rgb-ufloat`,`bc6h-rgb-float`,`bc7-rgba-unorm`,`bc7-rgba-unorm-srgb`],WEBGL_compressed_texture_etc1:[`etc1-rgb-unorm-webgl`],WEBGL_compressed_texture_etc:[`etc2-rgb8unorm`,`etc2-rgb8unorm-srgb`,`etc2-rgb8a1unorm`,`etc2-rgb8a1unorm-srgb`,`etc2-rgba8unorm`,`etc2-rgba8unorm-srgb`,`eac-r11unorm`,`eac-r11snorm`,`eac-rg11unorm`,`eac-rg11snorm`],WEBGL_compressed_texture_pvrtc:[`pvrtc-rgb4unorm-webgl`,`pvrtc-rgba4unorm-webgl`,`pvrtc-rgb2unorm-webgl`,`pvrtc-rgba2unorm-webgl`],WEBGL_compressed_texture_atc:[`atc-rgb-unorm-webgl`,`atc-rgba-unorm-webgl`,`atc-rgbai-unorm-webgl`],WEBGL_compressed_texture_astc:[`astc-4x4-unorm`,`astc-4x4-unorm-srgb`,`astc-5x4-unorm`,`astc-5x4-unorm-srgb`,`astc-5x5-unorm`,`astc-5x5-unorm-srgb`,`astc-6x5-unorm`,`astc-6x5-unorm-srgb`,`astc-6x6-unorm`,`astc-6x6-unorm-srgb`,`astc-8x5-unorm`,`astc-8x5-unorm-srgb`,`astc-8x6-unorm`,`astc-8x6-unorm-srgb`,`astc-8x8-unorm`,`astc-8x8-unorm-srgb`,`astc-10x5-unorm`,`astc-10x5-unorm-srgb`,`astc-10x6-unorm`,`astc-10x6-unorm-srgb`,`astc-10x8-unorm`,`astc-10x8-unorm-srgb`,`astc-10x10-unorm`,`astc-10x10-unorm-srgb`,`astc-12x10-unorm`,`astc-12x10-unorm-srgb`,`astc-12x12-unorm`,`astc-12x12-unorm-srgb`]};var HA=null;function Zm(r){if(!HA){r=r||XS()||void 0,HA=new Set;for(let e of KS)for(let t in Jm)if(r&&r.getExtension(`${e}${t}`))for(let i of Jm[t])HA.add(i)}return HA}function XS(){try{return document.createElement(`canvas`).getContext(`webgl`)}catch{return null}}var fr=[171,75,84,88,32,50,48,187,13,10,26,10];function $m(r){let e=new Uint8Array(r);return!(e.byteLength<fr.length||e[0]!==fr[0]||e[1]!==fr[1]||e[2]!==fr[2]||e[3]!==fr[3]||e[4]!==fr[4]||e[5]!==fr[5]||e[6]!==fr[6]||e[7]!==fr[7]||e[8]!==fr[8]||e[9]!==fr[9]||e[10]!==fr[10]||e[11]!==fr[11])}var eg=Promise.resolve();var rg={etc1:{basisFormat:0,compressed:!0,format:36196,textureFormat:`etc1-rgb-unorm-webgl`},etc2:{basisFormat:1,compressed:!0,format:37493,textureFormat:`etc2-rgba8unorm`},bc1:{basisFormat:2,compressed:!0,format:33776,textureFormat:`bc1-rgb-unorm-webgl`},bc3:{basisFormat:3,compressed:!0,format:33779,textureFormat:`bc3-rgba-unorm`},bc4:{basisFormat:4,compressed:!0,format:36283,textureFormat:`bc4-r-unorm`},bc5:{basisFormat:5,compressed:!0,format:36285,textureFormat:`bc5-rg-unorm`},"bc7-m6-opaque-only":{basisFormat:6,compressed:!0,format:36492,textureFormat:`bc7-rgba-unorm`},"bc7-m5":{basisFormat:7,compressed:!0,format:36492,textureFormat:`bc7-rgba-unorm`},"pvrtc1-4-rgb":{basisFormat:8,compressed:!0,format:35840,textureFormat:`pvrtc-rgb4unorm-webgl`},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:35842,textureFormat:`pvrtc-rgba4unorm-webgl`},"astc-4x4":{basisFormat:10,compressed:!0,format:37808,textureFormat:`astc-4x4-unorm`},"atc-rgb":{basisFormat:11,compressed:!0,format:35986,textureFormat:`atc-rgb-unorm-webgl`},"atc-rgba-interpolated-alpha":{basisFormat:12,compressed:!0,format:34798,textureFormat:`atc-rgbai-unorm-webgl`},rgba32:{basisFormat:13,compressed:!1,format:32856,textureFormat:`rgba8unorm`},rgb565:{basisFormat:14,compressed:!1,format:36194,textureFormat:`rgb565unorm-webgl`},bgr565:{basisFormat:15,compressed:!1,format:36194,textureFormat:`rgb565unorm-webgl`},rgba4444:{basisFormat:16,compressed:!1,format:32854,textureFormat:`rgba4unorm-webgl`}};Object.freeze(Object.keys(rg));async function ZS(r){let e=eg,t;eg=new Promise(i=>{t=i}),await e;try{return await r()}finally{t()}}async function ng(r,e={}){let t=No(e);return await ZS(async()=>{if(!e.basis?.containerFormat||e.basis.containerFormat===`auto`){if($m(r))return tg((await ol(t)).KTX2File,r,e);let{BasisFile:i}=await il(t);return sl(i,r,e)}if(e.basis.module===`encoder`){let i=await ol(t);return e.basis.containerFormat===`ktx2`?tg(i.KTX2File,r,e):sl(i.BasisFile,r,e)}else{let{BasisFile:o}=await il(t);return sl(o,r,e)}})}function sl(r,e,t){let i=new r(new Uint8Array(e));try{if(!i.startTranscoding())throw new Error(`Failed to start basis transcoding`);let o=i.getNumImages(),a=[];for(let d=0;d<o;d++){let m=i.getNumLevels(d),b=[];for(let y=0;y<m;y++)b.push($S(i,d,y,t));a.push(b)}return a}finally{i.close(),i.delete()}}function $S(r$31,e,t,i){let o=r$31.getImageWidth(e,t),a=r$31.getImageHeight(e,t),d=r$31.getHasAlpha(),{compressed:m,format:b,basisFormat:y,textureFormat:_}=ig(i,d),w=r$31.getImageTranscodedSizeInBytes(e,t,y),S=new Uint8Array(w);if(!r$31.transcodeImage(S,e,t,y,0,0))throw new Error(`failed to start Basis transcoding`);return s(r(r({shape:`texture-level`,width:o,height:a,data:S,compressed:m},b!==void 0?{format:b}:{}),_!==void 0?{textureFormat:_}:{}),{hasAlpha:d})}function tg(r,e,t){let i=new r(new Uint8Array(e));try{if(!i.startTranscoding())throw new Error(`failed to start KTX2 transcoding`);let o=i.getLevels(),a=[];for(let d=0;d<o;d++)a.push(e4(i,d,t));return[a]}finally{i.close(),i.delete()}}function e4(r$32,e,t){let{alphaFlag:i,height:o,width:a}=r$32.getImageLevelInfo(e,0,0),{compressed:d,format:m,basisFormat:b,textureFormat:y}=ig(t,i),_=r$32.getImageTranscodedSizeInBytes(e,0,0,b),w=new Uint8Array(_);if(!r$32.transcodeImage(w,e,0,0,b,0,-1,-1))throw new Error(`Failed to transcode KTX2 image`);return s(r(r({shape:`texture-level`,width:a,height:o,data:w,compressed:d},m!==void 0?{format:m}:{}),y!==void 0?{textureFormat:y}:{}),{levelSize:_,hasAlpha:i})}function ig(r,e){let t=r.basis?.format||`auto`;t===`auto`&&(t=r.basis?.supportedTextureFormats?rs(r.basis.supportedTextureFormats):rs()),typeof t==`object`&&(t=e?t.alpha:t.noAlpha);let o=rg[t.toLowerCase()];if(!o)throw new Error(`Unknown Basis format ${t}`);return o}function rs(r=Zm()){let e=new Set(r);return Ki(e,[`astc-4x4-unorm`,`astc-4x4-unorm-srgb`])?`astc-4x4`:Ki(e,[`bc7-rgba-unorm`,`bc7-rgba-unorm-srgb`])?{alpha:`bc7-m5`,noAlpha:`bc7-m6-opaque-only`}:Ki(e,[`bc1-rgb-unorm-webgl`,`bc1-rgb-unorm-srgb-webgl`,`bc1-rgba-unorm`,`bc1-rgba-unorm-srgb`,`bc2-rgba-unorm`,`bc2-rgba-unorm-srgb`,`bc3-rgba-unorm`,`bc3-rgba-unorm-srgb`])?{alpha:`bc3`,noAlpha:`bc1`}:Ki(e,[`pvrtc-rgb4unorm-webgl`,`pvrtc-rgba4unorm-webgl`,`pvrtc-rgb2unorm-webgl`,`pvrtc-rgba2unorm-webgl`])?{alpha:`pvrtc1-4-rgba`,noAlpha:`pvrtc1-4-rgb`}:Ki(e,[`etc2-rgb8unorm`,`etc2-rgb8unorm-srgb`,`etc2-rgb8a1unorm`,`etc2-rgb8a1unorm-srgb`,`etc2-rgba8unorm`,`etc2-rgba8unorm-srgb`,`eac-r11unorm`,`eac-r11snorm`,`eac-rg11unorm`,`eac-rg11snorm`])?`etc2`:e.has(`etc1-rgb-unorm-webgl`)?`etc1`:Ki(e,[`atc-rgb-unorm-webgl`,`atc-rgba-unorm-webgl`,`atc-rgbai-unorm-webgl`])?{alpha:`atc-rgba-interpolated-alpha`,noAlpha:`atc-rgb`}:`rgb565`}function Ki(r,e){return e.some(t=>r.has(t))}var Al=s(r({},{dataType:null,batchType:null,name:`Basis`,id:`basis`,module:`textures`,version:Xm,worker:!0,extensions:[`basis`,`ktx2`],mimeTypes:[`application/octet-stream`,`image/ktx2`],tests:[`sB`],binary:!0,options:{basis:{format:`auto`,containerFormat:`auto`,module:`transcoder`}}}),{parse:ng});var Xi=!0;var sg=1735152710;var ll=12;var qA=8;var t4=1313821514;var r4=5130562;var n4=0;var i4=0;var o4=1;function s4(r,e=0){return`${String.fromCharCode(r.getUint8(e+0))}${String.fromCharCode(r.getUint8(e+1))}${String.fromCharCode(r.getUint8(e+2))}${String.fromCharCode(r.getUint8(e+3))}`}function Ag(r,e=0,t={}){let i=new DataView(r),{magic:o=sg}=t,a=i.getUint32(e,!1);return a===o||a===sg}function ag(r,e,t=0,i={}){let o=new DataView(e),a=s4(o,t+0),d=o.getUint32(t+4,Xi),m=o.getUint32(t+8,Xi);switch(Object.assign(r,{header:{byteOffset:t,byteLength:m,hasBinChunk:!1},type:a,version:d,json:{},binChunks:[]}),t+=ll,r.version){case 1:return A4(r,o,t);case 2:return a4(r,o,t,i={});default:throw new Error(`Invalid GLB version ${r.version}. Only supports version 1 and 2.`)}}function A4(r,e,t){jt$1(r.header.byteLength>ll+qA);let i=e.getUint32(t+0,Xi),o=e.getUint32(t+4,Xi);return t+=qA,jt$1(o===n4),al(r,e,t,i),t+=i,t+=cl(r,e,t,r.header.byteLength),t}function a4(r,e,t,i){return jt$1(r.header.byteLength>ll+qA),c4(r,e,t,i),t+r.header.byteLength}function c4(r,e,t,i){for(;t+8<=r.header.byteLength;){let o=e.getUint32(t+0,Xi),a=e.getUint32(t+4,Xi);switch(t+=qA,a){case t4:al(r,e,t,o);break;case r4:cl(r,e,t,o);break;case i4:i.strict||al(r,e,t,o);break;case o4:i.strict||cl(r,e,t,o);break;default:break}t+=ua$1(o,4)}return t}function al(r,e,t,i){let o=new Uint8Array(e.buffer,t,i),d=new TextDecoder(`utf8`).decode(o);return r.json=JSON.parse(d),ua$1(i,4)}function cl(r,e,t,i){return r.header.hasBinChunk=!0,r.binChunks.push({byteOffset:t,byteLength:i,arrayBuffer:e.buffer}),ua$1(i,4)}function ul(r,e,t){if(r.startsWith(`data:`)||r.startsWith(`http:`)||r.startsWith(`https:`))return r;let o=t?.baseUrl||l4(e?.core?.baseUrl);if(!o)throw new Error(`'baseUrl' must be provided to resolve relative url ${r}`);return o.endsWith(`/`)?`${o}${r}`:`${o}/${r}`}function l4(r){if(!r)return;if(r.endsWith(`/`))return r;let e=r.lastIndexOf(`/`);return e>=0?r.slice(0,e+1):``}var fl={};w(fl,{decode:()=>d4,name:()=>lg});function u4(r){return typeof r==`string`?r:[`NONE`,`OCTAHEDRAL`,`QUATERNION`,`EXPONENTIAL`,`COLOR`][r]}async function cg(r,e,t,i,o,a=`NONE`){await Jc.ready,Jc.decodeGltfBuffer(r,e,t,i,o,u4(a))}async function WA(r,e,t){if(!e.gltf?.decompressMeshes||!e.gltf.loadBuffers)return;f4(r.json);let i=new Ke(r),o=r.json.bufferViews||[],a=o.map(d=>h4(i,d,t));await Promise.all(a);for(let d of o)i.removeObjectExtension(d,t);for(let d of r.json.buffers||[])i.removeObjectExtension(d,t);i.removeExtension(t)}function f4(r){let e=r.bufferViews||[];for(let i=0;i<e.length;i++){let o=e[i].extensions;if(o?.KHR_meshopt_compression&&o.EXT_meshopt_compression)throw new Error(`glTF bufferView ${i} cannot use both KHR_meshopt_compression and EXT_meshopt_compression.`)}let t=r.buffers||[];for(let i=0;i<t.length;i++){let o=t[i].extensions;if(o?.KHR_meshopt_compression&&o.EXT_meshopt_compression)throw new Error(`glTF buffer ${i} cannot use both KHR_meshopt_compression and EXT_meshopt_compression.`)}}async function h4(r,e,t){let i=r.getObjectExtension(e,t);if(!i)return;let{byteOffset:o=0,byteLength:a,byteStride:d,count:m,mode:b,filter:y=`NONE`,buffer:_}=i,w=r.gltf.buffers[_],S=r.gltf.buffers[e.buffer],M=new Uint8Array(w.arrayBuffer,w.byteOffset+o,a);await cg(new Uint8Array(S.arrayBuffer,S.byteOffset+(e.byteOffset||0),e.byteLength),m,d,M,b,y)}var lg=`EXT_meshopt_compression`;async function d4(r,e){await WA(r,e,lg)}var hl={};w(hl,{decode:()=>p4,name:()=>ug});var ug=`KHR_meshopt_compression`;async function p4(r,e){await WA(r,e,ug)}var dl={};w(dl,{name:()=>m4,preprocess:()=>g4});var Yi=`EXT_texture_webp`;var m4=Yi;function g4(r,e){let t=new Ke(r);if(!ap$1(`image/webp`)){if(t.getRequiredExtensions().includes(Yi))throw new Error(`gltf: Required extension ${Yi} not supported by browser`);return}let{json:i}=t;for(let o of i.textures||[]){let a=t.getObjectExtension(o,Yi);a&&(o.source=a.source),t.removeObjectExtension(o,Yi)}t.removeExtension(Yi)}var pl={};w(pl,{name:()=>b4,preprocess:()=>T4});var Ji=`EXT_texture_avif`;var b4=Ji;async function T4(r,e){let t=new Ke(r);if(!(await sp$1()).has(`image/avif`)){if(t.getRequiredExtensions().includes(Ji))throw new Error(`gltf: Required extension ${Ji} not supported by browser`);return}let{json:o}=t;for(let a of o.textures||[]){let d=t.getObjectExtension(a,Ji);d&&(a.source=d.source),t.removeObjectExtension(a,Ji)}t.removeExtension(Ji)}var ml={};w(ml,{name:()=>y4,preprocess:()=>x4});var QA=`KHR_texture_basisu`;var y4=QA;function x4(r,e){let t=new Ke(r),{json:i}=t;for(let o of i.textures||[]){let a=t.getObjectExtension(o,QA);a&&(o.source=a.source,t.removeObjectExtension(o,QA))}t.removeExtension(QA)}var _l={};w(_l,{decode:()=>D4,encode:()=>B4,name:()=>k4,preprocess:()=>O4});var _4=`1.5.6`;var w4=`1.4.1`;var gl=`https://www.gstatic.com/draco/versioned/decoders/${_4}`;var Ft={DECODER:`draco_wasm_wrapper.js`,DECODER_WASM:`draco_decoder.wasm`,FALLBACK_DECODER:`draco_decoder.js`,ENCODER:`draco_encoder.js`};var ns={[Ft.DECODER]:`${gl}/${Ft.DECODER}`,[Ft.DECODER_WASM]:`${gl}/${Ft.DECODER_WASM}`,[Ft.FALLBACK_DECODER]:`${gl}/${Ft.FALLBACK_DECODER}`,[Ft.ENCODER]:`https://raw.githubusercontent.com/google/draco/${w4}/javascript/${Ft.ENCODER}`};var bl;async function hg(r={},e){let t=r.modules||{};return t.draco3d?bl||=t.draco3d.createDecoderModule({}).then(i=>({draco:i})):bl||=E4(r,e),await bl}function fg(r,e){if(r&&typeof r==`object`){if(r.default)return r.default;if(r[e])return r[e]}return r}async function E4(r$33,e){let t,i;switch(e){case`js`:t=await wr(ns[Ft.FALLBACK_DECODER],`draco`,r$33,Ft.FALLBACK_DECODER);break;default:try{[t,i]=await Promise.all([await wr(ns[Ft.DECODER],`draco`,r$33,Ft.DECODER),await wr(ns[Ft.DECODER_WASM],`draco`,r$33,Ft.DECODER_WASM)])}catch{t=null,i=null}}return t=fg(t,`DracoDecoderModule`),t=t||globalThis.DracoDecoderModule,!t&&!tn&&([t,i]=await Promise.all([await wr(ns[Ft.DECODER],`draco`,s(r({},r$33),{useLocalLibraries:!0}),Ft.DECODER),await wr(ns[Ft.DECODER_WASM],`draco`,s(r({},r$33),{useLocalLibraries:!0}),Ft.DECODER_WASM)]),t=fg(t,`DracoDecoderModule`),t=t||globalThis.DracoDecoderModule),await v4(t,i)}function v4(r$34,e){if(typeof r$34!=`function`)throw new Error(`DracoDecoderModule could not be loaded`);let t={};return e&&(t.wasmBinary=e),new Promise(i=>{r$34(s(r({},t),{onModuleLoaded:o=>i({draco:o})}))})}var dg=`4.5.1`;function pg(r){switch(r.constructor){case Int8Array:return`int8`;case Uint8Array:case Uint8ClampedArray:return`uint8`;case Int16Array:return`int16`;case Uint16Array:return`uint16`;case Int32Array:return`int32`;case Uint32Array:return`uint32`;case Float32Array:return`float32`;case Float64Array:return`float64`;default:return`null`}}function Tl(r){let e=Infinity,t=Infinity,i=Infinity,o=-Infinity,a=-Infinity,d=-Infinity,m=r.POSITION?r.POSITION.value:[],b=m&&m.length;for(let y=0;y<b;y+=3){let _=m[y],w=m[y+1],S=m[y+2];e=_<e?_:e,t=w<t?w:t,i=S<i?S:i,o=_>o?_:o,a=w>a?w:a,d=S>d?S:d}return[[e,t,i],[o,a,d]]}function yl(r,e,t){let i=pg(e.value),o=t||mg(e);return{name:r,type:{type:`fixed-size-list`,listSize:e.size,children:[{name:`value`,type:i}]},nullable:!1,metadata:o}}function mg(r){let e={};return`byteOffset`in r&&(e.byteOffset=r.byteOffset.toString(10)),`byteStride`in r&&(e.byteStride=r.byteStride.toString(10)),`normalized`in r&&(e.normalized=r.normalized.toString()),e}function bg(r,e,t){let i=Tg(e.metadata),o=[],a=S4(e.attributes);for(let d in r){let m=r[d],b=gg(d,m,a[d]);o.push(b)}if(t){let d=gg(`indices`,t);o.push(d)}return{fields:o,metadata:i}}function S4(r){let e={};for(let t in r){let i=r[t];e[i.name||`undefined`]=i}return e}function gg(r,e,t){return yl(r,e,t?Tg(t.metadata):void 0)}function Tg(r){Object.entries(r);let e={};for(let t in r)e[`${t}.string`]=JSON.stringify(r[t]);return e}var yg={POSITION:`POSITION`,NORMAL:`NORMAL`,COLOR:`COLOR_0`,TEX_COORD:`TEXCOORD_0`};var C4={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array};var I4=4;var KA=class{draco;decoder;metadataQuerier;constructor(e){this.draco=e,this.decoder=new this.draco.Decoder,this.metadataQuerier=new this.draco.MetadataQuerier}destroy(){this.draco.destroy(this.decoder),this.draco.destroy(this.metadataQuerier)}parseSync(e,t={}){let i=new this.draco.DecoderBuffer;i.Init(new Int8Array(e),e.byteLength),this._disableAttributeTransforms(t);let o=this.decoder.GetEncodedGeometryType(i),a=o===this.draco.TRIANGULAR_MESH?new this.draco.Mesh:new this.draco.PointCloud;try{let d;switch(o){case this.draco.TRIANGULAR_MESH:d=this.decoder.DecodeBufferToMesh(i,a);break;case this.draco.POINT_CLOUD:d=this.decoder.DecodeBufferToPointCloud(i,a);break;default:throw new Error(`DRACO: Unknown geometry type.`)}if(!d.ok()||!a.ptr){let S=`DRACO decompression failed: ${d.error_msg()}`;throw new Error(S)}let m=this._getDracoLoaderData(a,o,t),b=this._getMeshData(a,m,t),y=Tl(b.attributes),_=bg(b.attributes,m,b.indices);return s(r({loader:`draco`,loaderData:m,header:{vertexCount:a.num_points(),boundingBox:y}},b),{schema:_})}finally{this.draco.destroy(i),a&&this.draco.destroy(a)}}_getDracoLoaderData(e,t,i){let o=this._getTopLevelMetadata(e),a=this._getDracoAttributes(e,i);return{geometry_type:t,num_attributes:e.num_attributes(),num_points:e.num_points(),num_faces:e instanceof this.draco.Mesh?e.num_faces():0,metadata:o,attributes:a}}_getDracoAttributes(e,t){let i={};for(let o=0;o<e.num_attributes();o++){let a=this.decoder.GetAttribute(e,o),d=this._getAttributeMetadata(e,o);i[a.unique_id()]={unique_id:a.unique_id(),attribute_type:a.attribute_type(),data_type:a.data_type(),num_components:a.num_components(),byte_offset:a.byte_offset(),byte_stride:a.byte_stride(),normalized:a.normalized(),attribute_index:o,metadata:d};let m=this._getQuantizationTransform(a,t);m&&(i[a.unique_id()].quantization_transform=m);let b=this._getOctahedronTransform(a,t);b&&(i[a.unique_id()].octahedron_transform=b)}return i}_getMeshData(e,t,i){let o=this._getMeshAttributes(t,e,i);if(!o.POSITION)throw new Error(`DRACO: No position attribute found.`);return e instanceof this.draco.Mesh?i.topology===`triangle-strip`?{topology:`triangle-strip`,mode:4,attributes:o,indices:{value:this._getTriangleStripIndices(e),size:1}}:{topology:`triangle-list`,mode:5,attributes:o,indices:{value:this._getTriangleListIndices(e),size:1}}:{topology:`point-list`,mode:0,attributes:o}}_getMeshAttributes(e,t,i){let o={};for(let a of Object.values(e.attributes)){let d=this._deduceAttributeName(a,i);a.name=d;let m=this._getAttributeValues(t,a);if(m){let{value:b,size:y}=m;o[d]={value:b,size:y,byteOffset:a.byte_offset,byteStride:a.byte_stride,normalized:a.normalized}}}return o}_getTriangleListIndices(e){let i=e.num_faces()*3,o=i*I4,a=this.draco._malloc(o);try{return this.decoder.GetTrianglesUInt32Array(e,o,a),new Uint32Array(this.draco.HEAPF32.buffer,a,i).slice()}finally{this.draco._free(a)}}_getTriangleStripIndices(e){let t=new this.draco.DracoInt32Array;try{return this.decoder.GetTriangleStripsFromMesh(e,t),R4(t)}finally{this.draco.destroy(t)}}_getAttributeValues(e,t){let i=C4[t.data_type];if(!i)return console.warn(`DRACO: Unsupported attribute type ${t.data_type}`),null;let o=t.num_components,d=e.num_points()*o,m=d*i.BYTES_PER_ELEMENT,b=M4(this.draco,i),y,_=this.draco._malloc(m);try{let w=this.decoder.GetAttribute(e,t.attribute_index);this.decoder.GetAttributeDataArrayForAllPoints(e,w,b,m,_),y=new i(this.draco.HEAPF32.buffer,_,d).slice()}finally{this.draco._free(_)}return{value:y,size:o}}_deduceAttributeName(e,t){let i=e.unique_id;for(let[d,m]of Object.entries(t.extraAttributes||{}))if(m===i)return d;let o=e.attribute_type;for(let d in yg)if(this.draco[d]===o)return yg[d];let a=t.attributeNameEntry||`name`;return e.metadata[a]?e.metadata[a].string:`CUSTOM_ATTRIBUTE_${i}`}_getTopLevelMetadata(e){let t=this.decoder.GetMetadata(e);return this._getDracoMetadata(t)}_getAttributeMetadata(e,t){let i=this.decoder.GetAttributeMetadata(e,t);return this._getDracoMetadata(i)}_getDracoMetadata(e){if(!e||!e.ptr)return{};let t={},i=this.metadataQuerier.NumEntries(e);for(let o=0;o<i;o++){let a=this.metadataQuerier.GetEntryName(e,o);t[a]=this._getDracoMetadataField(e,a)}return t}_getDracoMetadataField(e,t){let i=new this.draco.DracoInt32Array;try{this.metadataQuerier.GetIntEntryArray(e,t,i);let o=L4(i);return{int:this.metadataQuerier.GetIntEntry(e,t),string:this.metadataQuerier.GetStringEntry(e,t),double:this.metadataQuerier.GetDoubleEntry(e,t),intArray:o}}finally{this.draco.destroy(i)}}_disableAttributeTransforms(e){let{quantizedAttributes:t=[],octahedronAttributes:i=[]}=e,o=[...t,...i];for(let a of o)this.decoder.SkipAttributeTransform(this.draco[a])}_getQuantizationTransform(e,t){let{quantizedAttributes:i=[]}=t,o=e.attribute_type();if(i.map(d=>this.decoder[d]).includes(o)){let d=new this.draco.AttributeQuantizationTransform;try{if(d.InitFromAttribute(e))return{quantization_bits:d.quantization_bits(),range:d.range(),min_values:new Float32Array([1,2,3]).map(m=>d.min_value(m))}}finally{this.draco.destroy(d)}}return null}_getOctahedronTransform(e,t){let{octahedronAttributes:i=[]}=t,o=e.attribute_type();if(i.map(d=>this.decoder[d]).includes(o)){let d=new this.draco.AttributeQuantizationTransform;try{if(d.InitFromAttribute(e))return{quantization_bits:d.quantization_bits()}}finally{this.draco.destroy(d)}}return null}};function M4(r,e){switch(e){case Float32Array:return r.DT_FLOAT32;case Int8Array:return r.DT_INT8;case Int16Array:return r.DT_INT16;case Int32Array:return r.DT_INT32;case Uint8Array:return r.DT_UINT8;case Uint16Array:return r.DT_UINT16;case Uint32Array:return r.DT_UINT32;default:return r.DT_INVALID}}function L4(r){let e=r.size(),t=new Int32Array(e);for(let i=0;i<e;i++)t[i]=r.GetValue(i);return t}function R4(r){let e=r.size(),t=new Int32Array(e);for(let i=0;i<e;i++)t[i]=r.GetValue(i);return t}var is=s(r({},{dataType:null,batchType:null,name:`Draco`,id:`draco`,module:`draco`,version:dg,worker:!0,extensions:[`drc`],mimeTypes:[`application/octet-stream`],binary:!0,tests:[`DRACO`],options:{draco:{decoderType:typeof WebAssembly==`object`?`wasm`:`js`,extraAttributes:{},attributeNameEntry:void 0}}}),{parse:P4});async function P4(r,e){let{draco:t}=await hg(No(e),e?.draco?.decoderType||`wasm`),i=new KA(t);try{return i.parseSync(r,e?.draco)}finally{i.destroy()}}function _g(r){let e={};for(let t in r){let i=r[t];if(t!==`indices`)e[t]=xl(i)}return e}function xl(r){let{buffer:e,size:t,count:i}=N4(r);return{value:e,size:t,byteOffset:0,count:i,type:BA(t),componentType:Cn(e)}}function N4(r){let e=r,t=1,i=0;return r&&r.value&&(e=r.value,t=r.size||1),e&&(ArrayBuffer.isView(e)||(e=F4(e,Float32Array)),i=e.length/t),{buffer:e,size:t,count:i}}function F4(r,e,t=!1){return r?Array.isArray(r)?new e(r):t&&!(r instanceof e)?new e(r):r:null}var In=`KHR_draco_mesh_compression`;var k4=In;function O4(r,e,t){let i=new Ke(r);for(let o of wg(i))i.getObjectExtension(o,In)}async function D4(r,e,t){if(!e?.gltf?.decompressMeshes)return;let i=new Ke(r),o=[];for(let a of wg(i))i.getObjectExtension(a,In)&&o.push(U4(i,a,e,t));await Promise.all(o),i.removeExtension(In)}function B4(r,e={}){let t=new Ke(r);for(let i of t.json.meshes||[])G4(i,e),t.addRequiredExtension(In)}async function U4(r$35,e,t,i){let o=r$35.getObjectExtension(e,In);if(!o)return;let a=r$35.getTypedArrayForBufferView(o.bufferView),d=Ju(a.buffer,a.byteOffset),m=r({},t);delete m[`3d-tiles`];let b=await Nu$1(d,is,m,i),y=_g(b.attributes);for(let[_,w]of Object.entries(y))if(_ in e.attributes){let S=e.attributes[_],M=r$35.getAccessor(S);M?.min&&M?.max&&(w.min=M.min,w.max=M.max)}e.attributes=y,b.indices&&(e.indices=xl(b.indices)),r$35.removeObjectExtension(e,In),j4(e)}function G4(r,e,t=4,i,o){if(!i.DracoWriter)throw new Error(`options.gltf.DracoWriter not provided`);let a=i.DracoWriter.encodeSync({attributes:r}),d=o?.parseSync?.({attributes:r}),m=i._addFauxAttributes(d.attributes),b=i.addBufferView(a);return{primitives:[{attributes:m,mode:t,extensions:{[In]:{bufferView:b,attributes:m}}}]}}function j4(r){if(!r.attributes&&Object.keys(r.attributes).length>0)throw new Error(`glTF: Empty primitive detected: Draco decompression failure?`)}function*wg(r){for(let e of r.json.meshes||[])for(let t of e.primitives)yield t}var El={};w(El,{decode:()=>q4,name:()=>V4});var Zi=`KHR_texture_transform`;var V4=Zi;var XA=new Z;var z4=new tt;var H4=new tt;async function q4(r,e){let t=new Ke(r);if(!t.hasExtension(Zi)||!e.gltf?.loadBuffers)return;let o=r.json.materials||[];for(let a=0;a<o.length;a++)W4(a,r,t);o.some(a=>wl(a).length>0)||t.removeExtension(Zi)}function W4(r,e,t){let i=e.json.materials?.[r],o=wl(i),a=new Map,d=Q4(e);for(let m of o){let b=m.extensions?.[Zi];if(b){let y=b.texCoord??m.texCoord??0,_=K4(y,b),w=a.get(_);if(!w){if(w={sourceTexCoord:y,texCoord:d,matrix:$4(b)},!X4(e,r,w))continue;d++,a.set(_,w)}m.texCoord=w.texCoord,t.removeObjectExtension(m,Zi),m.extensions&&Object.keys(m.extensions).length===0&&delete m.extensions}}}function wl(r){if(!r||typeof r!=`object`)return[];let e=r,t=[],i=e.extensions;Number.isFinite(e.index)&&i?.[Zi]&&t.push(e);for(let[o,a]of Object.entries(e))o!==`extras`&&t.push(...wl(a));return t}function Q4(r){let e=-1;for(let t of r.json.meshes||[])for(let i of t.primitives)for(let o of Object.keys(i.attributes)){let a=/^TEXCOORD_(\d+)$/.exec(o);a&&(e=Math.max(e,Number(a[1])))}return e+1}function K4(r,e){let{offset:t=[0,0],rotation:i=0,scale:o=[1,1]}=e;return JSON.stringify([r,t,i,o])}function X4(r,e,t){let i=[],o=r.json.meshes||[];for(let a of o)for(let d of a.primitives){let m=d.material;Number.isFinite(m)&&e===m&&i.push(d)}if(i.length===0||i.some(a=>!Y4(r,a,t.sourceTexCoord)))return!1;for(let a of i)J4(r,a,t);return!0}function Y4(r,e,t){let i=e.attributes[`TEXCOORD_${t}`];if(!Number.isFinite(i))return!1;let o=r.json.accessors?.[i];if(!o||o.bufferView===void 0||o.sparse)return!1;let a=r.json.bufferViews?.[o.bufferView];return!!(a&&r.buffers[a.buffer])}function J4(r,e,t){let{sourceTexCoord:i,texCoord:o,matrix:a}=t,d=e.attributes[`TEXCOORD_${i}`];if(Number.isFinite(d)){let m=r.json.accessors?.[d];if(m&&m.bufferView!==void 0){let b=r.json.bufferViews?.[m.bufferView];if(b){let{arrayBuffer:y,byteOffset:_}=r.buffers[b.buffer],w=(_||0)+(m.byteOffset||0)+(b.byteOffset||0),{ArrayType:S,length:M}=Jn(m,b),k=DA[m.componentType],O=OA[m.type],Q=b.byteStride||k*O,V=new Float32Array(M);for(let G=0;G<m.count;G++){let J=new S(y,w+G*Q,2);XA.set(J[0],J[1],1),XA.transformByMatrix3(a),V.set([XA[0],XA[1]],G*O)}Z4(o,m,e,r,V)}}}}function Z4(r,e,t,i,o){i.buffers.push({arrayBuffer:ef(o.buffer),byteOffset:0,byteLength:o.buffer.byteLength}),i.json.bufferViews=i.json.bufferViews||[];let a=i.json.bufferViews;a.push({buffer:i.buffers.length-1,byteLength:o.buffer.byteLength,byteOffset:0});let d=i.json.accessors;d&&(d.push({bufferView:a?.length-1,byteOffset:0,componentType:5126,count:e.count,type:`VEC2`}),t.attributes[`TEXCOORD_${r}`]=d.length-1)}function $4(r){let{offset:e=[0,0],rotation:t=0,scale:i=[1,1]}=r,o=new tt().set(1,0,0,0,1,0,e[0],e[1],1),a=z4.set(Math.cos(t),Math.sin(t),0,-Math.sin(t),Math.cos(t),0,0,0,1),d=H4.set(i[0],0,0,0,i[1],0,0,0,1);return o.multiplyRight(a).multiplyRight(d)}var vl={};w(vl,{decode:()=>tC,encode:()=>rC,name:()=>eC});var Zn=`KHR_lights_punctual`;var eC=Zn;async function tC(r){let e=new Ke(r),{json:t}=e,i=e.getExtension(Zn);i&&(e.json.lights=i.lights,e.removeExtension(Zn));for(let o of t.nodes||[]){let a=e.getObjectExtension(o,Zn);a&&(o.light=a.light),e.removeObjectExtension(o,Zn)}}async function rC(r){let e=new Ke(r),{json:t}=e;if(t.lights){let i=e.addExtension(Zn);ht(!i.lights),i.lights=t.lights,delete t.lights}if(e.json.lights){for(let i of e.json.lights){let o=i.node;e.addObjectExtension(o,Zn,i)}delete e.json.lights}}var Sl={};w(Sl,{decode:()=>iC,encode:()=>oC,name:()=>nC});var os=`KHR_materials_unlit`;var nC=os;async function iC(r){let e=new Ke(r),{json:t}=e;for(let i of t.materials||[])i.extensions&&i.extensions.KHR_materials_unlit&&(i.unlit=!0),e.removeObjectExtension(i,os);e.removeExtension(os)}function oC(r){let e=new Ke(r),{json:t}=e;if(e.materials)for(let i of t.materials||[])i.unlit&&(delete i.unlit,e.addObjectExtension(i,os,{}),e.addExtension(os))}var Cl={};w(Cl,{decode:()=>AC,encode:()=>aC,name:()=>sC});var ss=`KHR_techniques_webgl`;var sC=ss;async function AC(r){let e=new Ke(r),{json:t}=e,i=e.getExtension(ss);if(i){let o=cC(i,e);for(let a of t.materials||[]){let d=e.getObjectExtension(a,ss);d&&(a.technique=Object.assign({},d,o[d.technique]),a.technique.values=lC(a.technique,e)),e.removeObjectExtension(a,ss)}e.removeExtension(ss)}}async function aC(r,e){}function cC(r,e){let{programs:t=[],shaders:i=[],techniques:o=[]}=r,a=new TextDecoder;return i.forEach(d=>{if(Number.isFinite(d.bufferView))d.code=a.decode(e.getTypedArrayForBufferView(d.bufferView));else throw new Error(`KHR_techniques_webgl: no shader code`)}),t.forEach(d=>{d.fragmentShader=i[d.fragmentShader],d.vertexShader=i[d.vertexShader]}),o.forEach(d=>{d.program=t[d.program]}),o}function lC(r,e){let t=Object.assign({},r.values);return Object.keys(r.uniforms||{}).forEach(i=>{r.uniforms[i].value&&!(i in t)&&(t[i]=r.uniforms[i].value)}),Object.keys(t).forEach(i=>{typeof t[i]==`object`&&t[i].index!==void 0&&(t[i].texture=e.getTexture(t[i].index))}),t}var Eg=[tl,Zc,hl,fl,pl,dl,ml,_l,vl,Sl,Cl,El,rl];async function vg(r,e={},t){let i=Eg.filter(o=>Cg(o.name,e));for(let o of i)await o.preprocess?.(r,e,t)}async function Sg(r,e={},t){let i=Eg.filter(o=>Cg(o.name,e));for(let o of i)await o.decode?.(r,e,t)}function Cg(r,e){let t=e?.gltf?.excludeExtensions||{};return!(r in t&&!t[r])}var Il=`KHR_binary_glTF`;function Ig(r){let e=new Ke(r),{json:t}=e;for(let i of t.images||[]){let o=e.getObjectExtension(i,Il);o&&Object.assign(i,o),e.removeObjectExtension(i,Il)}t.buffers&&t.buffers[0]&&delete t.buffers[0].uri,e.removeExtension(Il)}var Mg={accessors:`accessor`,animations:`animation`,buffers:`buffer`,bufferViews:`bufferView`,images:`image`,materials:`material`,meshes:`mesh`,nodes:`node`,samplers:`sampler`,scenes:`scene`,skins:`skin`,textures:`texture`};var fC={accessor:`accessors`,animations:`animation`,buffer:`buffers`,bufferView:`bufferViews`,image:`images`,material:`materials`,mesh:`meshes`,node:`nodes`,sampler:`samplers`,scene:`scenes`,skin:`skins`,texture:`textures`};var Ml=class{idToIndexMap={animations:{},accessors:{},buffers:{},bufferViews:{},images:{},materials:{},meshes:{},nodes:{},samplers:{},scenes:{},skins:{},textures:{}};json;normalize(e,t){this.json=e.json;let i=e.json;switch(i.asset&&i.asset.version){case`2.0`:return;case void 0:case`1.0`:break;default:console.warn(`glTF: Unknown version ${i.asset.version}`);return}if(!t.normalize)throw new Error(`glTF v1 is not supported.`);console.warn(`Converting glTF v1 to glTF v2 format. This is experimental and may fail.`),this._addAsset(i),this._convertTopLevelObjectsToArrays(i),Ig(e),this._convertObjectIdsToArrayIndices(i),this._updateObjects(i),this._updateMaterial(i)}_addAsset(e){e.asset=e.asset||{},e.asset.version=`2.0`,e.asset.generator=e.asset.generator||`Normalized to glTF 2.0 by loaders.gl`}_convertTopLevelObjectsToArrays(e){for(let t in Mg)this._convertTopLevelObjectToArray(e,t)}_convertTopLevelObjectToArray(e,t){let i=e[t];if(!(!i||Array.isArray(i))){e[t]=[];for(let o in i){let a=i[o];a.id=a.id||o;let d=e[t].length;e[t].push(a),this.idToIndexMap[t][o]=d}}}_convertObjectIdsToArrayIndices(e){for(let t in Mg)this._convertIdsToIndices(e,t);`scene`in e&&(e.scene=this._convertIdToIndex(e.scene,`scene`));for(let t of e.textures)this._convertTextureIds(t);for(let t of e.meshes)this._convertMeshIds(t);for(let t of e.nodes)this._convertNodeIds(t);for(let t of e.scenes)this._convertSceneIds(t)}_convertTextureIds(e){e.source&&(e.source=this._convertIdToIndex(e.source,`image`))}_convertMeshIds(e){for(let t of e.primitives){let{attributes:i,indices:o,material:a}=t;for(let d in i)i[d]=this._convertIdToIndex(i[d],`accessor`);o&&(t.indices=this._convertIdToIndex(o,`accessor`)),a&&(t.material=this._convertIdToIndex(a,`material`))}}_convertNodeIds(e){e.children&&(e.children=e.children.map(t=>this._convertIdToIndex(t,`node`))),e.meshes&&(e.meshes=e.meshes.map(t=>this._convertIdToIndex(t,`mesh`)))}_convertSceneIds(e){e.nodes&&(e.nodes=e.nodes.map(t=>this._convertIdToIndex(t,`node`)))}_convertIdsToIndices(e,t){e[t]||(console.warn(`gltf v1: json doesn't contain attribute ${t}`),e[t]=[]);for(let i of e[t])for(let o in i){let a=i[o];i[o]=this._convertIdToIndex(a,o)}}_convertIdToIndex(e,t){let i=fC[t];if(i in this.idToIndexMap){let o=this.idToIndexMap[i][e];if(!Number.isFinite(o))throw new Error(`gltf v1: failed to resolve ${t} with id ${e}`);return o}return e}_updateObjects(e){for(let t of this.json.buffers)delete t.type}_updateMaterial(e){for(let t of e.materials){t.pbrMetallicRoughness={baseColorFactor:[1,1,1,1],metallicFactor:1,roughnessFactor:1};let i=t.values?.tex||t.values?.texture2d_0||t.values?.diffuseTex,o=e.textures.findIndex(a=>a.id===i);o!==-1&&(t.pbrMetallicRoughness.baseColorTexture={index:o})}}};function Lg(r,e={}){return new Ml().normalize(r,e)}function hC(r$36,e){let t=r$36.basis,i=t?.format;return s(r({},r$36),{core:s(r({},r$36.core),{mimeType:e}),basis:s(r({},t),{format:i&&i!==`auto`?i:rs(t?.supportedTextureFormats)})})}async function Rg(r,e,t=0,i,o){return dC(r,e,t,i),Lg(r,{normalize:i?.gltf?.normalize}),await vg(r,i,o),i?.gltf?.loadBuffers&&r.json.buffers&&await pC(r,i,o),i?.gltf?.loadImages&&await mC(r,i,o),await Sg(r,i,o),r}function dC(r,e,t,i){if(i.core?.baseUrl&&(r.baseUri=i.core?.baseUrl),e instanceof ArrayBuffer&&!Ag(e,t,i.glb)&&(e=new TextDecoder().decode(e)),typeof e==`string`)r.json=Xu(e);else if(e instanceof ArrayBuffer){let d={};t=ag(d,e,t,i.glb),ht(d.type===`glTF`,`Invalid GLB magic string ${d.type}`),r._glb=d,r.json=d.json}else ht(!1,`GLTF: must be ArrayBuffer or string`);let o=r.json.buffers||[];if(r.buffers=new Array(o.length).fill(null),r._glb&&r._glb.header.hasBinChunk){let{binChunks:d}=r._glb;r.buffers[0]={arrayBuffer:d[0].arrayBuffer,byteOffset:d[0].byteOffset,byteLength:d[0].byteLength}}let a=r.json.images||[];r.images=new Array(a.length).fill({})}async function pC(r,e,t){let i=r.json.buffers||[];for(let o=0;o<i.length;++o){let a=i[o];if(a.uri){let{fetch:d}=t;ht(d);let m=ul(a.uri,e,t),y=await(await t?.fetch?.(m))?.arrayBuffer?.();r.buffers[o]={arrayBuffer:y,byteOffset:0,byteLength:y.byteLength},delete a.uri}else r.buffers[o]===null&&(r.buffers[o]={arrayBuffer:new ArrayBuffer(a.byteLength),byteOffset:0,byteLength:a.byteLength})}}async function mC(r,e,t){let i=gC(r),o=r.json.images||[],a=[];for(let d of i)a.push(bC(r,o[d],d,e,t));return await Promise.all(a)}function gC(r){let e=new Set,t=r.json.textures||[];for(let i of t)i.source!==void 0&&e.add(i.source);return Array.from(e).sort()}async function bC(r,e,t,i,o){let a;if(e.uri&&!e.hasOwnProperty(`bufferView`)){let b=ul(e.uri,i,o),{fetch:y}=o;a=await(await y(b)).arrayBuffer(),e.bufferView={data:a}}if(Number.isFinite(e.bufferView)){let b=Vm(r.json,r.buffers,e.bufferView);a=Ju(b.buffer,b.byteOffset,b.byteLength)}ht(a,`glTF image has no data`);let d=hC(i,e.mimeType),m=await Nu$1(a,[Os,Al],d,o);m&&m[0]&&(m={compressed:!0,mipmaps:!1,width:m[0].width,height:m[0].height,data:m[0]}),r.images=r.images||[],r.images[t]=m}var an={dataType:null,batchType:null,name:`glTF`,id:`gltf`,module:`gltf`,version:Km,extensions:[`gltf`,`glb`],mimeTypes:[`model/gltf+json`,`model/gltf-binary`],text:!0,binary:!0,tests:[`glTF`],parse:TC,options:{gltf:{normalize:!0,loadBuffers:!0,loadImages:!0,decompressMeshes:!0}}};async function TC(r$37,e={},t){let i=r(r({},an.options),e);i.gltf=r(r({},an.options.gltf),i.gltf);return await Rg({},r$37,e?.glb?.byteOffset||0,i,t)}var yC={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16};var xC={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};var vr={TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,REPEAT:10497,LINEAR:9729,NEAREST_MIPMAP_LINEAR:9986};var _C={magFilter:vr.TEXTURE_MAG_FILTER,minFilter:vr.TEXTURE_MIN_FILTER,wrapS:vr.TEXTURE_WRAP_S,wrapT:vr.TEXTURE_WRAP_T};var wC={[vr.TEXTURE_MAG_FILTER]:vr.LINEAR,[vr.TEXTURE_MIN_FILTER]:vr.NEAREST_MIPMAP_LINEAR,[vr.TEXTURE_WRAP_S]:vr.REPEAT,[vr.TEXTURE_WRAP_T]:vr.REPEAT};function EC(){return{id:`default-sampler`,parameters:wC}}function vC(r){return xC[r]}function SC(r){return yC[r]}var Ll=class{baseUri=``;jsonUnprocessed;json;buffers=[];images=[];postProcess(e,t={}){let{json:i,buffers:o=[],images:a=[]}=e,{baseUri:d=``}=e;return ht(i),this.baseUri=d,this.buffers=o,this.images=a,this.jsonUnprocessed=i,this.json=this._resolveTree(e.json,t),this.json}_resolveTree(e,t={}){let i=r({},e);return this.json=i,e.bufferViews&&(i.bufferViews=e.bufferViews.map((o,a)=>this._resolveBufferView(o,a))),e.images&&(i.images=e.images.map((o,a)=>this._resolveImage(o,a))),e.samplers&&(i.samplers=e.samplers.map((o,a)=>this._resolveSampler(o,a))),e.textures&&(i.textures=e.textures.map((o,a)=>this._resolveTexture(o,a))),e.accessors&&(i.accessors=e.accessors.map((o,a)=>this._resolveAccessor(o,a))),e.materials&&(i.materials=e.materials.map((o,a)=>this._resolveMaterial(o,a))),e.meshes&&(i.meshes=e.meshes.map((o,a)=>this._resolveMesh(o,a))),e.nodes&&(i.nodes=e.nodes.map((o,a)=>this._resolveNode(o,a)),i.nodes=i.nodes.map((o,a)=>this._resolveNodeChildren(o))),e.skins&&(i.skins=e.skins.map((o,a)=>this._resolveSkin(o,a))),e.scenes&&(i.scenes=e.scenes.map((o,a)=>this._resolveScene(o,a))),typeof this.json.scene==`number`&&i.scenes&&(i.scene=i.scenes[this.json.scene]),i}getScene(e){return this._get(this.json.scenes,e)}getNode(e){return this._get(this.json.nodes,e)}getSkin(e){return this._get(this.json.skins,e)}getMesh(e){return this._get(this.json.meshes,e)}getMaterial(e){return this._get(this.json.materials,e)}getAccessor(e){return this._get(this.json.accessors,e)}getCamera(e){return this._get(this.json.cameras,e)}getTexture(e){return this._get(this.json.textures,e)}getSampler(e){return this._get(this.json.samplers,e)}getImage(e){return this._get(this.json.images,e)}getBufferView(e){return this._get(this.json.bufferViews,e)}getBuffer(e){return this._get(this.json.buffers,e)}_get(e,t){if(typeof t==`object`)return t;let i=e&&e[t];return i||console.warn(`glTF file error: Could not find ${e}[${t}]`),i}_resolveScene(e,t){return s(r({},e),{id:e.id||`scene-${t}`,nodes:(e.nodes||[]).map(i=>this.getNode(i))})}_resolveNode(e,t){let i=s(r({},e),{id:e?.id||`node-${t}`});return e.mesh!==void 0&&(i.mesh=this.getMesh(e.mesh)),e.camera!==void 0&&(i.camera=this.getCamera(e.camera)),e.skin!==void 0&&(i.skin=this.getSkin(e.skin)),e.meshes!==void 0&&e.meshes.length&&(i.mesh=e.meshes.reduce((o,a)=>{let d=this.getMesh(a);return o.id=d.id,o.primitives=o.primitives.concat(d.primitives),o},{primitives:[]})),i}_resolveNodeChildren(e){return e.children&&(e.children=e.children.map(t=>this.getNode(t))),e}_resolveSkin(e,t){let i=typeof e.inverseBindMatrices==`number`?this.getAccessor(e.inverseBindMatrices):void 0;return s(r({},e),{id:e.id||`skin-${t}`,inverseBindMatrices:i})}_resolveMesh(e,t){let i=s(r({},e),{id:e.id||`mesh-${t}`,primitives:[]});return e.primitives&&(i.primitives=e.primitives.map((o,a)=>{let d=s(r({},o),{attributes:{},indices:void 0,material:void 0}),m=o.attributes;for(let b in m)d.attributes[b]=this.getAccessor(m[b]);return o.indices!==void 0&&(d.indices=this.getAccessor(o.indices)),o.material!==void 0&&(d.material=this.getMaterial(o.material)),CC(d,i.id,a)})),i}_resolveMaterial(e,t){let i=s(r({},e),{id:e.id||`material-${t}`});if(i.normalTexture&&(i.normalTexture=r({},i.normalTexture),i.normalTexture.texture=this.getTexture(i.normalTexture.index)),i.occlusionTexture&&(i.occlusionTexture=r({},i.occlusionTexture),i.occlusionTexture.texture=this.getTexture(i.occlusionTexture.index)),i.emissiveTexture&&(i.emissiveTexture=r({},i.emissiveTexture),i.emissiveTexture.texture=this.getTexture(i.emissiveTexture.index)),i.emissiveFactor||(i.emissiveFactor=i.emissiveTexture?[1,1,1]:[0,0,0]),i.pbrMetallicRoughness){i.pbrMetallicRoughness=r({},i.pbrMetallicRoughness);let o=i.pbrMetallicRoughness;o.baseColorTexture&&(o.baseColorTexture=r({},o.baseColorTexture),o.baseColorTexture.texture=this.getTexture(o.baseColorTexture.index)),o.metallicRoughnessTexture&&(o.metallicRoughnessTexture=r({},o.metallicRoughnessTexture),o.metallicRoughnessTexture.texture=this.getTexture(o.metallicRoughnessTexture.index))}return i}_resolveAccessor(e,t){let i=vC(e.componentType),o=SC(e.type),a=i*o,d=s(r({},e),{id:e.id||`accessor-${t}`,bytesPerComponent:i,components:o,bytesPerElement:a,value:void 0,bufferView:void 0,sparse:void 0});if(e.bufferView!==void 0&&(d.bufferView=this.getBufferView(e.bufferView)),d.bufferView){let m=d.bufferView.buffer,{ArrayType:b,byteLength:y}=Jn(d,d.bufferView),_=(d.bufferView.byteOffset||0)+(d.byteOffset||0)+m.byteOffset,w=Zi$1(m.arrayBuffer,_,y);d.bufferView.byteStride&&(w=this._getValueFromInterleavedBuffer(m,_,d.bufferView.byteStride,d.bytesPerElement,d.count)),d.value=new b(w)}else{let{ArrayType:m}=Jn(d,{byteLength:d.count*d.bytesPerElement});d.value=new m(d.count*d.components)}return e.sparse&&this._applySparseAccessor(d,e.sparse),d}_applySparseAccessor(e,t){let i=IC(t.indices.componentType),o=this._getTypedArrayFromBufferView(i,this.getBufferView(t.indices.bufferView),t.indices.byteOffset||0,t.count),a=e.value.constructor,d=this._getTypedArrayFromBufferView(a,this.getBufferView(t.values.bufferView),t.values.byteOffset||0,t.count*e.components);for(let m=0;m<t.count;m++){let b=Number(o[m]);ht(Number.isInteger(b)&&b>=0&&b<e.count,`glTF sparse accessor index is out of bounds`);for(let y=0;y<e.components;y++){let _=b*e.components+y,w=m*e.components+y;Reflect.set(e.value,_,d[w])}}}_getTypedArrayFromBufferView(e,t,i,o){let a=o*e.BYTES_PER_ELEMENT;ht(i+a<=t.byteLength,`glTF sparse accessor data exceeds its buffer view`);let d=t.buffer,m=d.byteOffset+(t.byteOffset||0)+i;return new e(Zi$1(d.arrayBuffer,m,a))}_getValueFromInterleavedBuffer(e,t,i,o,a){let d=new Uint8Array(a*o);for(let m=0;m<a;m++){let b=t+m*i;d.set(new Uint8Array(e.arrayBuffer.slice(b,b+o)),m*o)}return d.buffer}_resolveTexture(e,t){return s(r({},e),{id:e.id||`texture-${t}`,sampler:typeof e.sampler==`number`?this.getSampler(e.sampler):EC(),source:typeof e.source==`number`?this.getImage(e.source):void 0})}_resolveSampler(e,t){let i=s(r({id:e.id||`sampler-${t}`},e),{parameters:{}});for(let o in i){let a=this._enumSamplerParameter(o);a!==void 0&&(i.parameters[a]=i[o])}return i}_enumSamplerParameter(e){return _C[e]}_resolveImage(e,t){let i=s(r({},e),{id:e.id||`image-${t}`,image:null,bufferView:e.bufferView!==void 0?this.getBufferView(e.bufferView):void 0}),o=this.images[t];return o&&(i.image=o),i}_resolveBufferView(e,t){let i=e.buffer,o=this.buffers[i].arrayBuffer,a=this.buffers[i].byteOffset||0;return e.byteOffset&&(a+=e.byteOffset),s(r({id:`bufferView-${t}`},e),{buffer:this.buffers[i],data:new Uint8Array(o,a,e.byteLength)})}_resolveCamera(e,t){let i=s(r({},e),{id:e.id||`camera-${t}`});return i.perspective,i.orthographic,i}};function CC(r,e,t){if(r.mode!==2&&r.mode!==6)return r;let i=r.indices?.value,o=r.indices?.count??MC(r),a=LC(i,o),d=a<=65535?Uint16Array:Uint32Array,m=r.mode===2?PC(i,o,d):NC(i,o,d);return r.mode=r.mode===2?1:4,r.indices={id:`${e}-primitive-${t}-portable-indices`,components:1,bytesPerComponent:d.BYTES_PER_ELEMENT,bytesPerElement:d.BYTES_PER_ELEMENT,componentType:d===Uint16Array?5123:5125,normalized:!1,count:m.length,type:`SCALAR`,min:m.length?[RC(m)]:void 0,max:m.length?[a]:void 0,value:m},r}function IC(r){switch(r){case 5121:return Uint8Array;case 5123:return Uint16Array;case 5125:return Uint32Array;default:throw new Error(`Invalid glTF sparse index component type ${r}`)}}function MC(r){let e=Object.values(r.attributes)[0];return ht(e,`glTF primitive must define at least one attribute`),e.count}function LC(r,e){if(!r)return Math.max(0,e-1);let t=0;for(let i=0;i<e;i++)t=Math.max(t,Number(r[i]));return t}function RC(r){let e=Infinity;for(let t of r)e=Math.min(e,t);return e}function As(r,e){return r?Number(r[e]):e}function PC(r,e,t){if(e<2)return new t(0);let i=new t(e*2);for(let o=0;o<e;o++)i[o*2]=As(r,o),i[o*2+1]=As(r,(o+1)%e);return i}function NC(r,e,t){let i=Math.max(0,e-2),o=new t(i*3);for(let a=0;a<i;a++)o[a*3]=As(r,0),o[a*3+1]=As(r,a+1),o[a*3+2]=As(r,a+2);return o}function $n(r,e){return new Ll().postProcess(r,e)}async function Pg(r){let e=[];return r.scenes.forEach(t=>{t.traverse(i=>{})}),await FC(()=>e.some(t=>!t.loaded))}async function FC(r){for(;r();)await new Promise(e=>requestAnimationFrame(e))}var kC=`struct ScenegraphUniforms {
|
|
620
|
+
sizeScale: f32,
|
|
621
|
+
sizeMinPixels: f32,
|
|
622
|
+
sizeMaxPixels: f32,
|
|
623
|
+
sceneModelMatrix: mat4x4<f32>,
|
|
624
|
+
composeModelMatrix: f32,
|
|
625
|
+
};
|
|
626
|
+
|
|
627
|
+
@group(0) @binding(auto)
|
|
628
|
+
var<uniform> scenegraph: ScenegraphUniforms;
|
|
629
|
+
`;var Ng=`layout(std140) uniform scenegraphUniforms {
|
|
630
|
+
float sizeScale;
|
|
631
|
+
float sizeMinPixels;
|
|
632
|
+
float sizeMaxPixels;
|
|
633
|
+
mat4 sceneModelMatrix;
|
|
634
|
+
float composeModelMatrix;
|
|
635
|
+
} scenegraph;
|
|
636
|
+
`;var Fg={name:`scenegraph`,source:kC,vs:Ng,fs:Ng,uniformTypes:{sizeScale:`f32`,sizeMinPixels:`f32`,sizeMaxPixels:`f32`,sceneModelMatrix:`mat4x4<f32>`,composeModelMatrix:`f32`}};var kg=`#version 300 es
|
|
637
|
+
#define SHADER_NAME scenegraph-layer-vertex-shader
|
|
638
|
+
in vec3 instancePositions;
|
|
639
|
+
in vec3 instancePositions64Low;
|
|
640
|
+
in vec4 instanceColors;
|
|
641
|
+
in vec3 instanceModelMatrixCol0;
|
|
642
|
+
in vec3 instanceModelMatrixCol1;
|
|
643
|
+
in vec3 instanceModelMatrixCol2;
|
|
644
|
+
in vec3 instanceTranslation;
|
|
645
|
+
in vec3 positions;
|
|
646
|
+
#ifdef HAS_UV
|
|
647
|
+
in vec2 texCoords;
|
|
648
|
+
#endif
|
|
649
|
+
#ifdef LIGHTING_PBR
|
|
650
|
+
#ifdef HAS_NORMALS
|
|
651
|
+
in vec3 normals;
|
|
652
|
+
#endif
|
|
653
|
+
#endif
|
|
654
|
+
out vec4 vColor;
|
|
655
|
+
#ifndef LIGHTING_PBR
|
|
656
|
+
#ifdef HAS_UV
|
|
657
|
+
out vec2 vTEXCOORD_0;
|
|
658
|
+
#endif
|
|
659
|
+
#endif
|
|
660
|
+
void main(void) {
|
|
661
|
+
#if defined(HAS_UV) && !defined(LIGHTING_PBR)
|
|
662
|
+
vTEXCOORD_0 = texCoords;
|
|
663
|
+
geometry.uv = texCoords;
|
|
664
|
+
#endif
|
|
665
|
+
geometry.worldPosition = instancePositions;
|
|
666
|
+
geometry.pickingColor = picking_getPickingColorFromInstanceID();
|
|
667
|
+
mat3 instanceModelMatrix = mat3(instanceModelMatrixCol0, instanceModelMatrixCol1, instanceModelMatrixCol2);
|
|
668
|
+
vec3 normal = vec3(0.0, 0.0, 1.0);
|
|
669
|
+
#ifdef LIGHTING_PBR
|
|
670
|
+
#ifdef HAS_NORMALS
|
|
671
|
+
normal = instanceModelMatrix * (scenegraph.sceneModelMatrix * vec4(normals, 0.0)).xyz;
|
|
672
|
+
#endif
|
|
673
|
+
#endif
|
|
674
|
+
float originalSize = project_size_to_pixel(scenegraph.sizeScale);
|
|
675
|
+
float clampedSize = clamp(originalSize, scenegraph.sizeMinPixels, scenegraph.sizeMaxPixels);
|
|
676
|
+
float sizeRatio = originalSize == 0.0 ? 0.0 : clampedSize / originalSize;
|
|
677
|
+
vec3 pos = (instanceModelMatrix * (scenegraph.sceneModelMatrix * vec4(positions, 1.0)).xyz) * scenegraph.sizeScale * sizeRatio + instanceTranslation;
|
|
678
|
+
if(scenegraph.composeModelMatrix > 0.5) {
|
|
679
|
+
DECKGL_FILTER_SIZE(pos, geometry);
|
|
680
|
+
geometry.normal = project_normal(normal);
|
|
681
|
+
geometry.worldPosition += pos;
|
|
682
|
+
gl_Position = project_position_to_clipspace(pos + instancePositions, instancePositions64Low, vec3(0.0), geometry.position);
|
|
683
|
+
}
|
|
684
|
+
else {
|
|
685
|
+
pos = project_size(pos);
|
|
686
|
+
DECKGL_FILTER_SIZE(pos, geometry);
|
|
687
|
+
gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, pos, geometry.position);
|
|
688
|
+
geometry.normal = project_normal(normal);
|
|
689
|
+
}
|
|
690
|
+
DECKGL_FILTER_GL_POSITION(gl_Position, geometry);
|
|
691
|
+
#ifdef LIGHTING_PBR
|
|
692
|
+
pbr_vPosition = geometry.position.xyz;
|
|
693
|
+
#ifdef HAS_NORMALS
|
|
694
|
+
pbr_vNormal = geometry.normal;
|
|
695
|
+
#endif
|
|
696
|
+
#ifdef HAS_UV
|
|
697
|
+
pbr_vUV0 = texCoords;
|
|
698
|
+
#else
|
|
699
|
+
pbr_vUV0 = vec2(0., 0.);
|
|
700
|
+
#endif
|
|
701
|
+
pbr_vUV1 = vec2(0., 0.);
|
|
702
|
+
geometry.uv = pbr_vUV0;
|
|
703
|
+
#endif
|
|
704
|
+
vColor = instanceColors;
|
|
705
|
+
DECKGL_FILTER_COLOR(vColor, geometry);
|
|
706
|
+
}
|
|
707
|
+
`;var Og=`#version 300 es
|
|
708
|
+
#define SHADER_NAME scenegraph-layer-fragment-shader
|
|
709
|
+
in vec4 vColor;
|
|
710
|
+
out vec4 fragColor;
|
|
711
|
+
#ifndef LIGHTING_PBR
|
|
712
|
+
#if defined(HAS_UV) && defined(HAS_BASECOLORMAP)
|
|
713
|
+
in vec2 vTEXCOORD_0;
|
|
714
|
+
uniform sampler2D pbr_baseColorSampler;
|
|
715
|
+
#endif
|
|
716
|
+
#endif
|
|
717
|
+
void main(void) {
|
|
718
|
+
#ifdef LIGHTING_PBR
|
|
719
|
+
fragColor = pbr_filterColor(vColor);
|
|
720
|
+
geometry.uv = pbr_vUV0;
|
|
721
|
+
#else
|
|
722
|
+
#if defined(HAS_UV) && defined(HAS_BASECOLORMAP)
|
|
723
|
+
fragColor = vColor * texture(pbr_baseColorSampler, vTEXCOORD_0);
|
|
724
|
+
geometry.uv = vTEXCOORD_0;
|
|
725
|
+
#else
|
|
726
|
+
fragColor = vColor;
|
|
727
|
+
#endif
|
|
728
|
+
#endif
|
|
729
|
+
fragColor.a *= layer.opacity;
|
|
730
|
+
DECKGL_FILTER_COLOR(fragColor, geometry);
|
|
731
|
+
}
|
|
732
|
+
`;var Dg=`struct VertexInputs {
|
|
733
|
+
@location(0) positions: vec3<f32>,
|
|
734
|
+
#ifdef HAS_NORMALS
|
|
735
|
+
@location(1) normals: vec3<f32>,
|
|
736
|
+
#endif
|
|
737
|
+
#ifdef HAS_UV
|
|
738
|
+
@location(3) texCoords: vec2<f32>,
|
|
739
|
+
#endif
|
|
740
|
+
@location(6) instancePositions: vec3<f32>,
|
|
741
|
+
@location(7) instancePositions64Low: vec3<f32>,
|
|
742
|
+
@location(8) instanceColors: vec4<f32>,
|
|
743
|
+
@location(10) instanceModelMatrixCol0: vec3<f32>,
|
|
744
|
+
@location(11) instanceModelMatrixCol1: vec3<f32>,
|
|
745
|
+
@location(12) instanceModelMatrixCol2: vec3<f32>,
|
|
746
|
+
@location(13) instanceTranslation: vec3<f32>,
|
|
747
|
+
};
|
|
748
|
+
|
|
749
|
+
struct FragmentInputs {
|
|
750
|
+
@builtin(position) position: vec4<f32>,
|
|
751
|
+
@location(0) vColor: vec4<f32>,
|
|
752
|
+
@location(1) vTexCoord: vec2<f32>,
|
|
753
|
+
@location(2) pbrPosition: vec3<f32>,
|
|
754
|
+
@location(3) pbrUV: vec2<f32>,
|
|
755
|
+
@location(4) pbrNormal: vec3<f32>,
|
|
756
|
+
@location(5) pickingColor: vec3<f32>,
|
|
757
|
+
};
|
|
758
|
+
|
|
759
|
+
@vertex
|
|
760
|
+
fn vertexMain(
|
|
761
|
+
inputs: VertexInputs,
|
|
762
|
+
@builtin(instance_index) instanceIndex: u32
|
|
763
|
+
) -> FragmentInputs {
|
|
764
|
+
var outputs: FragmentInputs;
|
|
765
|
+
|
|
766
|
+
geometry.worldPosition = inputs.instancePositions;
|
|
767
|
+
geometry.pickingColor = picking_getPickingColorFromIndex(instanceIndex);
|
|
768
|
+
|
|
769
|
+
var vertexPosition = inputs.positions;
|
|
770
|
+
var texCoord = vec2<f32>(0.0, 0.0);
|
|
771
|
+
var normal = vec3<f32>(0.0, 0.0, 1.0);
|
|
772
|
+
|
|
773
|
+
#ifdef HAS_UV
|
|
774
|
+
texCoord = inputs.texCoords;
|
|
775
|
+
#endif
|
|
776
|
+
#ifdef HAS_NORMALS
|
|
777
|
+
normal = inputs.normals;
|
|
778
|
+
#endif
|
|
779
|
+
|
|
780
|
+
geometry.uv = texCoord;
|
|
781
|
+
|
|
782
|
+
let instanceModelMatrix = mat3x3<f32>(
|
|
783
|
+
inputs.instanceModelMatrixCol0,
|
|
784
|
+
inputs.instanceModelMatrixCol1,
|
|
785
|
+
inputs.instanceModelMatrixCol2
|
|
786
|
+
);
|
|
787
|
+
|
|
788
|
+
let scenePosition = (scenegraph.sceneModelMatrix * vec4<f32>(vertexPosition, 1.0)).xyz;
|
|
789
|
+
let worldNormal = instanceModelMatrix * (scenegraph.sceneModelMatrix * vec4<f32>(normal, 0.0)).xyz;
|
|
790
|
+
|
|
791
|
+
let originalSize = project_meter_size_to_pixel(scenegraph.sizeScale);
|
|
792
|
+
let clampedSize = clamp(originalSize, scenegraph.sizeMinPixels, scenegraph.sizeMaxPixels);
|
|
793
|
+
let sizeRatio = select(0.0, clampedSize / originalSize, originalSize > 0.0);
|
|
794
|
+
|
|
795
|
+
let pos =
|
|
796
|
+
(instanceModelMatrix * scenePosition) * scenegraph.sizeScale * sizeRatio +
|
|
797
|
+
inputs.instanceTranslation;
|
|
798
|
+
|
|
799
|
+
if (scenegraph.composeModelMatrix > 0.5) {
|
|
800
|
+
geometry.normal = project_normal(worldNormal);
|
|
801
|
+
geometry.worldPosition = inputs.instancePositions + pos;
|
|
802
|
+
geometry.position = vec4<f32>(
|
|
803
|
+
project_position_vec3_f64(inputs.instancePositions + pos, inputs.instancePositions64Low),
|
|
804
|
+
1.0
|
|
805
|
+
);
|
|
806
|
+
} else {
|
|
807
|
+
let sizeAdjustedPos = project_size_vec3(pos);
|
|
808
|
+
// Scenegraph offsets are east/north/up in globe mode. Use project32's helper so it can
|
|
809
|
+
// rotate the offset onto the local tangent plane before producing the common position.
|
|
810
|
+
let projectResult = project_position_to_clipspace_and_commonspace(
|
|
811
|
+
inputs.instancePositions,
|
|
812
|
+
inputs.instancePositions64Low,
|
|
813
|
+
sizeAdjustedPos
|
|
814
|
+
);
|
|
815
|
+
geometry.position = projectResult.commonPosition;
|
|
816
|
+
geometry.normal = project_normal(worldNormal);
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
outputs.position = project_common_position_to_clipspace(geometry.position);
|
|
820
|
+
outputs.vColor = inputs.instanceColors;
|
|
821
|
+
outputs.vTexCoord = texCoord;
|
|
822
|
+
outputs.pbrPosition = geometry.position.xyz;
|
|
823
|
+
outputs.pbrUV = texCoord;
|
|
824
|
+
outputs.pbrNormal = geometry.normal;
|
|
825
|
+
outputs.pickingColor = geometry.pickingColor;
|
|
826
|
+
return outputs;
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
@fragment
|
|
830
|
+
fn fragmentMain(inputs: FragmentInputs) -> @location(0) vec4<f32> {
|
|
831
|
+
fragmentGeometry.uv = inputs.vTexCoord;
|
|
832
|
+
|
|
833
|
+
if (picking.isActive > 0.5) {
|
|
834
|
+
if (!picking_isColorValid(inputs.pickingColor)) {
|
|
835
|
+
discard;
|
|
836
|
+
}
|
|
837
|
+
return vec4<f32>(inputs.pickingColor, 1.0);
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
var fragColor = inputs.vColor;
|
|
841
|
+
|
|
842
|
+
#ifdef LIGHTING_PBR
|
|
843
|
+
fragmentInputs.pbr_vPosition = inputs.pbrPosition;
|
|
844
|
+
// scenegraphPbrMaterial uses the indexed UV fields from the current PBR module.
|
|
845
|
+
fragmentInputs.pbr_vUV0 = inputs.pbrUV;
|
|
846
|
+
fragmentInputs.pbr_vUV1 = vec2<f32>(0.0);
|
|
847
|
+
fragmentInputs.pbr_vNormal = inputs.pbrNormal;
|
|
848
|
+
// Vertex color is part of the material base color and must be applied before lighting.
|
|
849
|
+
fragColor = pbr_filterColor(fragColor);
|
|
850
|
+
#else
|
|
851
|
+
#ifdef HAS_BASECOLORMAP
|
|
852
|
+
fragColor =
|
|
853
|
+
fragColor *
|
|
854
|
+
textureSample(pbr_baseColorSampler, pbr_baseColorSamplerSampler, inputs.vTexCoord);
|
|
855
|
+
#endif
|
|
856
|
+
#endif
|
|
857
|
+
|
|
858
|
+
fragColor.a *= layer.opacity;
|
|
859
|
+
|
|
860
|
+
if (picking.isHighlightActive > 0.5) {
|
|
861
|
+
let highlightedObjectColor = picking_normalizeColor(picking.highlightedObjectColor);
|
|
862
|
+
if (picking_isColorZero(abs(inputs.pickingColor - highlightedObjectColor))) {
|
|
863
|
+
let highlightAlpha = picking.highlightColor.a;
|
|
864
|
+
let blendedAlpha = highlightAlpha + fragColor.a * (1.0 - highlightAlpha);
|
|
865
|
+
if (blendedAlpha > 0.0) {
|
|
866
|
+
let highlightRatio = highlightAlpha / blendedAlpha;
|
|
867
|
+
fragColor = vec4<f32>(
|
|
868
|
+
mix(fragColor.rgb, picking.highlightColor.rgb, highlightRatio),
|
|
869
|
+
blendedAlpha
|
|
870
|
+
);
|
|
871
|
+
}
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
return deckgl_premultiplied_alpha(fragColor);
|
|
876
|
+
}
|
|
877
|
+
`;var OC=rd$1.source.replace(/fn pbr_setPositionNormalTangentUV\([\s\S]*?\n}\n/,`fn pbr_setPositionNormalTangentUV(position: vec4f, normal: vec4f, tangent: vec4f, uv: vec2f)
|
|
878
|
+
{
|
|
879
|
+
fragmentInputs.pbr_vPosition = position.xyz;
|
|
880
|
+
fragmentInputs.pbr_vNormal = normal.xyz;
|
|
881
|
+
fragmentInputs.pbr_vTBN = mat3x3f(
|
|
882
|
+
vec3f(1.0, 0.0, 0.0),
|
|
883
|
+
vec3f(0.0, 1.0, 0.0),
|
|
884
|
+
vec3f(0.0, 0.0, 1.0)
|
|
885
|
+
);
|
|
886
|
+
fragmentInputs.pbr_vUV0 = uv;
|
|
887
|
+
fragmentInputs.pbr_vUV1 = uv;
|
|
888
|
+
}
|
|
889
|
+
`).replace(/pbrProjection\.camera/g,`project.cameraPosition`);var Rl=s(r({},rd$1),{dependencies:[ge$1],source:OC});var Bg=[255,255,255,255];var DC={scenegraph:{type:`object`,value:null,async:!0},getScene:r=>r&&r.scenes?typeof r.scene==`object`?r.scene:r.scenes[r.scene||0]:r,getAnimator:r=>r&&r.animator,_animations:null,onFirstDraw:{type:`function`,value:()=>{}},sizeScale:{type:`number`,value:1,min:0},sizeMinPixels:{type:`number`,min:0,value:0},sizeMaxPixels:{type:`number`,min:0,value:Number.MAX_SAFE_INTEGER},getPosition:{type:`accessor`,value:r=>r.position},getColor:{type:`accessor`,value:Bg},_lighting:`flat`,_imageBasedLightingEnvironment:void 0,getOrientation:{type:`accessor`,value:[0,0,0]},getScale:{type:`accessor`,value:[1,1,1]},getTranslation:{type:`accessor`,value:[0,0,0]},getTransformMatrix:{type:`accessor`,value:[]},loaders:[an]};var Pl=(()=>{class r$38 extends en{getShaders(){let t={},i,o=this.context.device?.type===`webgpu`;this.props._lighting===`pbr`?(i=o?Rl:rd$1,t.LIGHTING_PBR=1):o?i=Rl:i={name:`pbrMaterial`};let a=[Wa,ma$1,Ka,Fg,i];return super.getShaders({defines:t,vs:kg,fs:Og,source:Dg,modules:a})}initializeState(){let t=this.getAttributeManager(),i=this.context.device.type!==`webgpu`;t.addInstanced({instancePositions:{size:3,type:`float64`,fp64:this.use64bitPositions(),accessor:`getPosition`,transition:i},instanceColors:{type:`unorm8`,size:this.props.colorFormat.length,accessor:`getColor`,defaultValue:Bg,transition:i},instanceModelMatrix:EA})}updateState(t){super.updateState(t);let{props:i,oldProps:o}=t;i.scenegraph!==o.scenegraph?this._updateScenegraph():i._animations!==o._animations&&this._applyAnimationsProp(this.state.animator,i._animations)}finalizeState(t){super.finalizeState(t),this._destroyScenegraphAssets()}get isLoaded(){return!!(this.state?.scenegraph&&super.isLoaded)}_updateScenegraph(){let t=this.props,{device:i}=this.context,o=null;if(t.scenegraph instanceof ue)o={scenes:[t.scenegraph]};else if(t.scenegraph&&typeof t.scenegraph==`object`){let b=t.scenegraph,_=Yc(i,b.json?$n(b):b,this._getModelOptions());o=_,Pg(_).then(()=>this.setNeedsRedraw()).catch(w=>{this.raiseError(w,`loading glTF`)})}let a={layer:this,device:this.context.device},d=t.getScene(o,a),m=t.getAnimator(o,a);if(d instanceof di){this._destroyScenegraphAssets(),this._applyAnimationsProp(m,t._animations);let b=[];d.traverse(y=>{y instanceof hi&&b.push(y.model)}),this.setState({scenegraph:d,animator:m,materials:o?.materials||null,models:b,firstDrawSignaled:!1}),this.getAttributeManager().invalidateAll()}else d!==null&&A.warn(`invalid scenegraph:`,d)()}_destroyScenegraphAssets(){this.state.scenegraph?.destroy(),this.state.materials?.forEach(t=>t.destroy()),this.state.scenegraph=null,this.state.animator=null,this.state.materials=null,this.state.models=[]}_applyAnimationsProp(t,i){if(!t||!i)return;let o=t.getAnimations();Object.keys(i).sort().forEach(a=>{let d=i[a];if(a===`*`)o.forEach(m=>{Object.assign(m,d)});else if(Number.isFinite(Number(a))){let m=Number(a);m>=0&&m<o.length?Object.assign(o[m],d):A.warn(`animation ${a} not found`)()}else{let m=o.find(({animation:b})=>b.name===a);m?Object.assign(m,d):A.warn(`animation ${a} not found`)()}})}_getModelOptions(){let{_imageBasedLightingEnvironment:t}=this.props,i;t&&(typeof t==`function`?i=t({device:this.context.device,gl:this.context.gl,layer:this}):i=t);let o=this.context.device.type===`webgpu`?{depthWriteEnabled:!0,depthCompare:`less-equal`}:void 0;return{imageBasedLightingEnvironment:i,modelOptions:r({id:this.props.id,isInstanced:!0,bufferLayout:this.getAttributeManager().getBufferLayouts(),parameters:o},this.getShaders()),useTangents:!1}}draw({context:t}){if(!this.state.scenegraph)return;this.props._animations&&this.state.animator&&(this.state.animator.setTime(t.timeline.getTime()),this.setNeedsRedraw());let{viewport:i,renderPass:o}=this.context,{sizeScale:a,sizeMinPixels:d,sizeMaxPixels:m,coordinateSystem:b}=this.props,y={camera:i.cameraPosition},_=this.getNumInstances();this.state.scenegraph.traverse((w,{worldMatrix:S})=>{if(w instanceof hi){let{model:M}=w;M.setInstanceCount(_);let k={sizeScale:a,sizeMinPixels:d,sizeMaxPixels:m,composeModelMatrix:vA(i,b)?1:0,sceneModelMatrix:S};M.shaderInputs.setProps({pbrProjection:y,scenegraph:k}),M.draw(o)}}),this.state.firstDrawSignaled||(this.state.firstDrawSignaled=!0,this.props.onFirstDraw?.())}}return r$38.defaultProps=DC,r$38.layerName=`ScenegraphLayer`,r$38})();var Ug=`layout(std140) uniform meshUniforms {
|
|
890
|
+
bool pickFeatureIds;
|
|
891
|
+
} mesh;
|
|
892
|
+
`;var Gg={name:`mesh`,vs:Ug,fs:Ug,source:`struct MeshUniforms {
|
|
893
|
+
pickFeatureIds: f32,
|
|
894
|
+
};
|
|
895
|
+
|
|
896
|
+
@group(0) @binding(auto) var<uniform> mesh: MeshUniforms;
|
|
897
|
+
`,uniformTypes:{pickFeatureIds:`f32`}};var GC=rd$1.source.replace(/fn pbr_setPositionNormalTangentUV\([\s\S]*?\n}\n/,`fn pbr_setPositionNormalTangentUV(position: vec4f, normal: vec4f, tangent: vec4f, uv: vec2f)
|
|
898
|
+
{
|
|
899
|
+
fragmentInputs.pbr_vPosition = position.xyz;
|
|
900
|
+
fragmentInputs.pbr_vNormal = normal.xyz;
|
|
901
|
+
fragmentInputs.pbr_vTBN = mat3x3f(
|
|
902
|
+
vec3f(1.0, 0.0, 0.0),
|
|
903
|
+
vec3f(0.0, 1.0, 0.0),
|
|
904
|
+
vec3f(0.0, 0.0, 1.0)
|
|
905
|
+
);
|
|
906
|
+
fragmentInputs.pbr_vUV0 = uv;
|
|
907
|
+
fragmentInputs.pbr_vUV1 = uv;
|
|
908
|
+
}
|
|
909
|
+
`).replace(/pbrProjection\.camera/g,`project.cameraPosition`);var jg=s(r({},rd$1),{source:GC});var Vg=`#version 300 es
|
|
910
|
+
#define SHADER_NAME simple-mesh-layer-vs
|
|
911
|
+
in vec3 positions;
|
|
912
|
+
in vec3 normals;
|
|
913
|
+
in vec3 colors;
|
|
914
|
+
in vec2 texCoords;
|
|
915
|
+
in vec4 uvRegions;
|
|
916
|
+
in float rowIndexes;
|
|
917
|
+
in vec4 instanceColors;
|
|
918
|
+
in vec3 instanceModelMatrixCol0;
|
|
919
|
+
in vec3 instanceModelMatrixCol1;
|
|
920
|
+
in vec3 instanceModelMatrixCol2;
|
|
921
|
+
out vec2 vTexCoord;
|
|
922
|
+
out vec3 cameraPosition;
|
|
923
|
+
out vec3 normals_commonspace;
|
|
924
|
+
out vec4 position_commonspace;
|
|
925
|
+
out vec4 vColor;
|
|
926
|
+
vec2 applyUVRegion(vec2 uv) {
|
|
927
|
+
#ifdef HAS_UV_REGIONS
|
|
928
|
+
return fract(uv) * (uvRegions.zw - uvRegions.xy) + uvRegions.xy;
|
|
929
|
+
#else
|
|
930
|
+
return uv;
|
|
931
|
+
#endif
|
|
932
|
+
}
|
|
933
|
+
void main(void) {
|
|
934
|
+
vec2 uv = applyUVRegion(texCoords);
|
|
935
|
+
geometry.uv = uv;
|
|
936
|
+
if (mesh.pickFeatureIds) {
|
|
937
|
+
geometry.pickingColor = picking_getPickingColorFromIndex(rowIndexes);
|
|
938
|
+
} else {
|
|
939
|
+
geometry.pickingColor = picking_getPickingColorFromInstanceID();
|
|
940
|
+
}
|
|
941
|
+
mat3 instanceModelMatrix = mat3(instanceModelMatrixCol0, instanceModelMatrixCol1, instanceModelMatrixCol2);
|
|
942
|
+
vTexCoord = uv;
|
|
943
|
+
cameraPosition = project.cameraPosition;
|
|
944
|
+
vColor = vec4(colors * instanceColors.rgb, instanceColors.a);
|
|
945
|
+
vec3 pos = (instanceModelMatrix * positions) * simpleMesh.sizeScale;
|
|
946
|
+
vec3 projectedPosition = project_position(positions);
|
|
947
|
+
position_commonspace = vec4(projectedPosition, 1.0);
|
|
948
|
+
gl_Position = project_common_position_to_clipspace(position_commonspace);
|
|
949
|
+
geometry.position = position_commonspace;
|
|
950
|
+
normals_commonspace = project_normal(instanceModelMatrix * normals);
|
|
951
|
+
geometry.normal = normals_commonspace;
|
|
952
|
+
DECKGL_FILTER_GL_POSITION(gl_Position, geometry);
|
|
953
|
+
#ifdef MODULE_PBRMATERIAL
|
|
954
|
+
pbr_vPosition = geometry.position.xyz;
|
|
955
|
+
#ifdef HAS_NORMALS
|
|
956
|
+
pbr_vNormal = geometry.normal;
|
|
957
|
+
#endif
|
|
958
|
+
#ifdef HAS_UV
|
|
959
|
+
pbr_vUV0 = uv;
|
|
960
|
+
#else
|
|
961
|
+
pbr_vUV0 = vec2(0., 0.);
|
|
962
|
+
#endif
|
|
963
|
+
pbr_vUV1 = vec2(0., 0.);
|
|
964
|
+
geometry.uv = pbr_vUV0;
|
|
965
|
+
#endif
|
|
966
|
+
DECKGL_FILTER_COLOR(vColor, geometry);
|
|
967
|
+
}
|
|
968
|
+
`;var zg=`#version 300 es
|
|
969
|
+
#define SHADER_NAME simple-mesh-layer-fs
|
|
970
|
+
precision highp float;
|
|
971
|
+
uniform sampler2D sampler;
|
|
972
|
+
in vec2 vTexCoord;
|
|
973
|
+
in vec3 cameraPosition;
|
|
974
|
+
in vec3 normals_commonspace;
|
|
975
|
+
in vec4 position_commonspace;
|
|
976
|
+
in vec4 vColor;
|
|
977
|
+
out vec4 fragColor;
|
|
978
|
+
void main(void) {
|
|
979
|
+
#ifdef MODULE_PBRMATERIAL
|
|
980
|
+
fragColor = vColor * pbr_filterColor(vec4(0));
|
|
981
|
+
geometry.uv = pbr_vUV0;
|
|
982
|
+
fragColor.a *= layer.opacity;
|
|
983
|
+
#else
|
|
984
|
+
geometry.uv = vTexCoord;
|
|
985
|
+
vec3 normal;
|
|
986
|
+
if (simpleMesh.flatShading) {
|
|
987
|
+
normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));
|
|
988
|
+
} else {
|
|
989
|
+
normal = normals_commonspace;
|
|
990
|
+
}
|
|
991
|
+
vec4 color = simpleMesh.hasTexture ? texture(sampler, vTexCoord) : vColor;
|
|
992
|
+
vec3 lightColor = lighting_getLightColor(color.rgb, cameraPosition, position_commonspace.xyz, normal);
|
|
993
|
+
fragColor = vec4(lightColor, color.a * layer.opacity);
|
|
994
|
+
#endif
|
|
995
|
+
DECKGL_FILTER_COLOR(fragColor, geometry);
|
|
996
|
+
}
|
|
997
|
+
`;var Hg=`struct VertexInputs {
|
|
998
|
+
@location(0) positions: vec3<f32>,
|
|
999
|
+
#ifdef HAS_NORMALS
|
|
1000
|
+
@location(1) normals: vec3<f32>,
|
|
1001
|
+
#endif
|
|
1002
|
+
@location(2) colors: vec4<f32>,
|
|
1003
|
+
#ifdef HAS_UV
|
|
1004
|
+
@location(3) texCoords: vec2<f32>,
|
|
1005
|
+
#endif
|
|
1006
|
+
#ifdef HAS_UV_REGIONS
|
|
1007
|
+
@location(4) uvRegions: vec4<f32>,
|
|
1008
|
+
#endif
|
|
1009
|
+
#ifdef HAS_FEATURE_IDS
|
|
1010
|
+
@location(5) rowIndexes: u32,
|
|
1011
|
+
#endif
|
|
1012
|
+
@location(6) instanceColors: vec4<f32>,
|
|
1013
|
+
@location(7) instanceModelMatrixCol0: vec3<f32>,
|
|
1014
|
+
@location(8) instanceModelMatrixCol1: vec3<f32>,
|
|
1015
|
+
@location(9) instanceModelMatrixCol2: vec3<f32>,
|
|
1016
|
+
};
|
|
1017
|
+
|
|
1018
|
+
struct FragmentInputs {
|
|
1019
|
+
@builtin(position) position: vec4<f32>,
|
|
1020
|
+
@location(0) color: vec4<f32>,
|
|
1021
|
+
@location(1) texCoord: vec2<f32>,
|
|
1022
|
+
@location(2) pbrPosition: vec3<f32>,
|
|
1023
|
+
@location(3) pbrNormal: vec3<f32>,
|
|
1024
|
+
@location(4) pickingColor: vec3<f32>,
|
|
1025
|
+
};
|
|
1026
|
+
|
|
1027
|
+
fn applyUVRegion(uv: vec2<f32>, uvRegion: vec4<f32>) -> vec2<f32> {
|
|
1028
|
+
#ifdef HAS_UV_REGIONS
|
|
1029
|
+
// https://github.com/Esri/i3s-spec/blob/master/docs/1.7/geometryUVRegion.cmn.md
|
|
1030
|
+
return fract(uv) * (uvRegion.zw - uvRegion.xy) + uvRegion.xy;
|
|
1031
|
+
#else
|
|
1032
|
+
return uv;
|
|
1033
|
+
#endif
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
@vertex
|
|
1037
|
+
fn vertexMain(
|
|
1038
|
+
inputs: VertexInputs,
|
|
1039
|
+
@builtin(instance_index) instanceIndex: u32
|
|
1040
|
+
) -> FragmentInputs {
|
|
1041
|
+
var outputs: FragmentInputs;
|
|
1042
|
+
var texCoord = vec2<f32>(0.0);
|
|
1043
|
+
var normal = vec3<f32>(0.0, 0.0, 1.0);
|
|
1044
|
+
var uvRegion = vec4<f32>(0.0);
|
|
1045
|
+
|
|
1046
|
+
#ifdef HAS_UV
|
|
1047
|
+
texCoord = inputs.texCoords;
|
|
1048
|
+
#endif
|
|
1049
|
+
#ifdef HAS_NORMALS
|
|
1050
|
+
normal = inputs.normals;
|
|
1051
|
+
#endif
|
|
1052
|
+
#ifdef HAS_UV_REGIONS
|
|
1053
|
+
uvRegion = inputs.uvRegions;
|
|
1054
|
+
#endif
|
|
1055
|
+
|
|
1056
|
+
texCoord = applyUVRegion(texCoord, uvRegion);
|
|
1057
|
+
geometry.uv = texCoord;
|
|
1058
|
+
#ifdef HAS_FEATURE_IDS
|
|
1059
|
+
geometry.pickingColor = picking_getPickingColorFromIndex(inputs.rowIndexes);
|
|
1060
|
+
#else
|
|
1061
|
+
geometry.pickingColor = picking_getPickingColorFromIndex(instanceIndex);
|
|
1062
|
+
#endif
|
|
1063
|
+
|
|
1064
|
+
let instanceModelMatrix = mat3x3<f32>(
|
|
1065
|
+
inputs.instanceModelMatrixCol0,
|
|
1066
|
+
inputs.instanceModelMatrixCol1,
|
|
1067
|
+
inputs.instanceModelMatrixCol2
|
|
1068
|
+
);
|
|
1069
|
+
let commonPosition = vec4<f32>(project_position_vec3_f32(inputs.positions), 1.0);
|
|
1070
|
+
|
|
1071
|
+
geometry.position = commonPosition;
|
|
1072
|
+
geometry.normal = project_normal(instanceModelMatrix * normal);
|
|
1073
|
+
|
|
1074
|
+
outputs.position = project_common_position_to_clipspace(commonPosition);
|
|
1075
|
+
outputs.color = vec4<f32>(
|
|
1076
|
+
inputs.colors.rgb * inputs.instanceColors.rgb,
|
|
1077
|
+
inputs.instanceColors.a
|
|
1078
|
+
);
|
|
1079
|
+
outputs.texCoord = texCoord;
|
|
1080
|
+
outputs.pbrPosition = commonPosition.xyz;
|
|
1081
|
+
outputs.pbrNormal = geometry.normal;
|
|
1082
|
+
outputs.pickingColor = geometry.pickingColor;
|
|
1083
|
+
return outputs;
|
|
1084
|
+
}
|
|
1085
|
+
|
|
1086
|
+
@fragment
|
|
1087
|
+
fn fragmentMain(inputs: FragmentInputs) -> @location(0) vec4<f32> {
|
|
1088
|
+
fragmentGeometry.uv = inputs.texCoord;
|
|
1089
|
+
|
|
1090
|
+
if (picking.isActive > 0.5) {
|
|
1091
|
+
if (!picking_isColorValid(inputs.pickingColor)) {
|
|
1092
|
+
discard;
|
|
1093
|
+
}
|
|
1094
|
+
return vec4<f32>(inputs.pickingColor, 1.0);
|
|
1095
|
+
}
|
|
1096
|
+
|
|
1097
|
+
fragmentInputs.pbr_vPosition = inputs.pbrPosition;
|
|
1098
|
+
fragmentInputs.pbr_vUV0 = inputs.texCoord;
|
|
1099
|
+
fragmentInputs.pbr_vUV1 = vec2<f32>(0.0);
|
|
1100
|
+
fragmentInputs.pbr_vNormal = inputs.pbrNormal;
|
|
1101
|
+
|
|
1102
|
+
var color = inputs.color * pbr_filterColor(vec4<f32>(0.0));
|
|
1103
|
+
color.a *= layer.opacity;
|
|
1104
|
+
|
|
1105
|
+
if (picking.isHighlightActive > 0.5) {
|
|
1106
|
+
let highlightedObjectColor = picking_normalizeColor(picking.highlightedObjectColor);
|
|
1107
|
+
if (picking_isColorZero(abs(inputs.pickingColor - highlightedObjectColor))) {
|
|
1108
|
+
let highlightAlpha = picking.highlightColor.a;
|
|
1109
|
+
let blendedAlpha = highlightAlpha + color.a * (1.0 - highlightAlpha);
|
|
1110
|
+
if (blendedAlpha > 0.0) {
|
|
1111
|
+
color = vec4<f32>(
|
|
1112
|
+
mix(color.rgb, picking.highlightColor.rgb, highlightAlpha / blendedAlpha),
|
|
1113
|
+
blendedAlpha
|
|
1114
|
+
);
|
|
1115
|
+
}
|
|
1116
|
+
}
|
|
1117
|
+
}
|
|
1118
|
+
|
|
1119
|
+
return deckgl_premultiplied_alpha(color);
|
|
1120
|
+
}
|
|
1121
|
+
`;function jC(r){let e=r.positions||r.POSITION,t=e.value.length/e.size;r.COLOR_0||r.colors||(r.colors={size:4,value:new Uint8Array(t*4).fill(255),normalized:!0})}var VC={pbrMaterial:{type:`object`,value:null},featureIds:{type:`array`,value:null,optional:!0}};var qg=(()=>{class r$39 extends Vi{getShaders(){let t=super.getShaders();return s(r({},t),{vs:Vg,fs:zg,source:Hg,modules:[...t.modules,jg,Gg]})}initializeState(){let{featureIds:t}=this.props;super.initializeState();let i=this.getAttributeManager();t&&i.add({rowIndexes:{type:`uint32`,size:1,noAlloc:!0,update:this.calculateFeatureIdsPickingIndexes}})}updateState(t){super.updateState(t);let{props:i,oldProps:o}=t;i.pbrMaterial!==o.pbrMaterial&&this.updatePbrMaterialUniforms(i.pbrMaterial)}draw(t){let{featureIds:i}=this.props,{model:o}=this.state;if(!o)return;let a={pickFeatureIds:!!i},d={camera:this.context.viewport.cameraPosition};o.shaderInputs.setProps({pbrProjection:d,mesh:a}),super.draw(t)}getModel(t){let{id:i}=this.props,o=this.parseMaterial(this.props.pbrMaterial,t);this.setState({parsedPBRMaterial:o});let a=this.getShaders();return jC(t.attributes),new De(this.context.device,s(r({},this.getShaders()),{id:i,geometry:t,bufferLayout:this.getAttributeManager().getBufferLayouts(),defines:s(r(r({},a.defines),o?.defines),{HAS_UV_REGIONS:t.attributes.uvRegions?1:0,HAS_FEATURE_IDS:this.props.featureIds?1:0}),parameters:o?.parameters,isInstanced:!0}))}updatePbrMaterialUniforms(t){let{model:i}=this.state;if(i){let{mesh:a}=this.props,d=this.parseMaterial(t,a);this.setState({parsedPBRMaterial:d});let{pbr_baseColorSampler:m}=d.bindings,{emptyTexture:b}=this.state,y=m||b,_=s(r({},this.context.device.type===`webgpu`?{simpleMeshTexture:y}:{sampler:y}),{hasTexture:!!m}),o=r(r({},d.bindings),d.uniforms),{camera:w}=o,S=u(o,[`camera`]);i.shaderInputs.setProps({simpleMesh:_,pbrMaterial:S})}}parseMaterial(t,i){let o=!!(t.pbrMetallicRoughness&&t.pbrMetallicRoughness.baseColorTexture);return $o(this.context.device,r({unlit:o},t),{NORMAL:i.attributes.normals,TEXCOORD_0:i.attributes.texCoords},{pbrDebug:!1,lights:!0,useTangents:!1})}calculateFeatureIdsPickingIndexes(t){let i=this.props.featureIds;t.value=new Uint32Array(i)}finalizeState(t){super.finalizeState(t),this.state.parsedPBRMaterial?.generatedTextures.forEach(i=>i.destroy()),this.setState({parsedPBRMaterial:null})}}return r$39.layerName=`MeshLayer`,r$39.defaultProps=VC,r$39})();var cn=6356752.314245179;cn*cn,1/cn,1/(cn*cn);function YA(r){return r}new Z;function qC(r,e=[],t=YA){return`longitude`in r?(e[0]=t(r.longitude),e[1]=t(r.latitude),e[2]=r.height):`x`in r?(e[0]=t(r.x),e[1]=t(r.y),e[2]=r.z):(e[0]=t(r[0]),e[1]=t(r[1]),e[2]=r[2]),e}function Wg(r,e=[]){return qC(r,e,V._cartographicRadians?YA:ka$1)}function WC(r,e,t=YA){return`longitude`in e?(e.longitude=t(r[0]),e.latitude=t(r[1]),e.height=r[2]):`x`in e?(e.x=t(r[0]),e.y=t(r[1]),e.z=r[2]):(e[0]=t(r[0]),e[1]=t(r[1]),e[2]=r[2]),e}function Qg(r,e){return WC(r,e,V._cartographicRadians?YA:Ga)}var Kg=1e-14;var QC=new Z;var Xg={up:{south:`east`,north:`west`,west:`south`,east:`north`},down:{south:`west`,north:`east`,west:`north`,east:`south`},south:{up:`west`,down:`east`,west:`down`,east:`up`},north:{up:`east`,down:`west`,west:`up`,east:`down`},west:{up:`north`,down:`south`,north:`down`,south:`up`},east:{up:`south`,down:`north`,north:`up`,south:`down`}};var Nl={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]};var as={east:new Z,north:new Z,up:new Z,west:new Z,south:new Z,down:new Z};var KC=new Z;var XC=new Z;var YC=new Z;function Fl(r,e,t,i,o,a){let d=Xg[e]&&Xg[e][t];Nt$1(d&&(!i||i===d));let m,b,y,_=QC.copy(o);if(Mt(_.x,0,Kg)&&Mt(_.y,0,Kg)){let S=Math.sign(_.z);m=KC.fromArray(Nl[e]),e!==`east`&&e!==`west`&&m.scale(S),b=XC.fromArray(Nl[t]),t!==`east`&&t!==`west`&&b.scale(S),y=YC.fromArray(Nl[i]),i!==`east`&&i!==`west`&&y.scale(S)}else{let{up:S,east:M,north:k}=as;M.set(-_.y,_.x,0).normalize(),r.geodeticSurfaceNormal(_,S),k.copy(S).cross(M);let{down:O,west:Q,south:V}=as;O.copy(S).scale(-1),Q.copy(M).scale(-1),V.copy(k).scale(-1),m=as[e],b=as[t],y=as[i]}return a[0]=m.x,a[1]=m.y,a[2]=m.z,a[3]=0,a[4]=b.x,a[5]=b.y,a[6]=b.z,a[7]=0,a[8]=y.x,a[9]=y.y,a[10]=y.z,a[11]=0,a[12]=_.x,a[13]=_.y,a[14]=_.z,a[15]=1,a}var $i=new Z;var JC=new Z;var ZC=new Z;function Yg(r,e,t=[]){let{oneOverRadii:i,oneOverRadiiSquared:o,centerToleranceSquared:a}=e;$i.from(r);let d=$i.x,m=$i.y,b=$i.z,y=i.x,_=i.y,w=i.z,S=d*d*y*y,M=m*m*_*_,k=b*b*w*w,O=S+M+k,Q=Math.sqrt(1/O);if(!Number.isFinite(Q))return;let V=JC;if(V.copy(r).scale(Q),O<a)return V.to(t);let G=o.x,J=o.y,$=o.z,te=ZC;te.set(V.x*G*2,V.y*J*2,V.z*$*2);let re=(1-Q)*$i.len()/(.5*te.len()),le=0,Y,z,B,ue;do{re-=le,Y=1/(1+re*G),z=1/(1+re*J),B=1/(1+re*$);let we=Y*Y,Ee=z*z,_e=B*B,Ne=we*Y,Fe=Ee*z,Oe=_e*B;ue=S*we+M*Ee+k*_e-1;let He=-2*(S*Ne*G+M*Fe*J+k*Oe*$);le=ue/He}while(Math.abs(ue)>Ho$1.EPSILON12);return $i.scale([Y,z,B]).to(t)}var JA=new Z;var Jg=new Z;var tI=new Z;var Or=new Z;var rI=new Z;var ZA=new Z;var Ue=class{constructor(e=0,t=0,i=0){this.centerToleranceSquared=Ho$1.EPSILON1,Nt$1(e>=0),Nt$1(t>=0),Nt$1(i>=0),this.radii=new Z(e,t,i),this.radiiSquared=new Z(e*e,t*t,i*i),this.radiiToTheFourth=new Z(e*e*e*e,t*t*t*t,i*i*i*i),this.oneOverRadii=new Z(e===0?0:1/e,t===0?0:1/t,i===0?0:1/i),this.oneOverRadiiSquared=new Z(e===0?0:1/(e*e),t===0?0:1/(t*t),i===0?0:1/(i*i)),this.minimumRadius=Math.min(e,t,i),this.maximumRadius=Math.max(e,t,i),this.radiiSquared.z!==0&&(this.squaredXOverSquaredZ=this.radiiSquared.x/this.radiiSquared.z),Object.freeze(this)}equals(e){return this===e||!!(e&&this.radii.equals(e.radii))}toString(){return this.radii.toString()}cartographicToCartesian(e,t=[0,0,0]){let i=Jg,o=tI,[,,a]=e;this.geodeticSurfaceNormalCartographic(e,i),o.copy(this.radiiSquared).scale(i);let d=Math.sqrt(i.dot(o));return o.scale(1/d),i.scale(a),o.add(i),o.to(t)}cartesianToCartographic(e,t=[0,0,0]){ZA.from(e);let i=this.scaleToGeodeticSurface(ZA,Or);if(!i)return;let o=this.geodeticSurfaceNormal(i,Jg),a=rI;a.copy(ZA).subtract(i);return Qg([Math.atan2(o.y,o.x),Math.asin(o.z),Math.sign(Zn$1.dot(a,ZA))*Zn$1.length(a)],t)}eastNorthUpToFixedFrame(e,t=new U){return Fl(this,`east`,`north`,`up`,e,t)}localFrameToFixedFrame(e,t,i,o,a=new U){return Fl(this,e,t,i,o,a)}geocentricSurfaceNormal(e,t=[0,0,0]){return JA.from(e).normalize().to(t)}geodeticSurfaceNormalCartographic(e,t=[0,0,0]){let i=Wg(e),o=i[0],a=i[1],d=Math.cos(a);return JA.set(d*Math.cos(o),d*Math.sin(o),Math.sin(a)).normalize(),JA.to(t)}geodeticSurfaceNormal(e,t=[0,0,0]){return JA.from(e).scale(this.oneOverRadiiSquared).normalize().to(t)}scaleToGeodeticSurface(e,t){return Yg(e,this,t)}scaleToGeocentricSurface(e,t=[0,0,0]){Or.from(e);let i=Or.x,o=Or.y,a=Or.z,d=this.oneOverRadiiSquared,m=1/Math.sqrt(i*i*d.x+o*o*d.y+a*a*d.z);return Or.multiplyScalar(m).to(t)}transformPositionToScaledSpace(e,t=[0,0,0]){return Or.from(e).scale(this.oneOverRadii).to(t)}transformPositionFromScaledSpace(e,t=[0,0,0]){return Or.from(e).scale(this.radii).to(t)}getSurfaceNormalIntersectionWithZAxis(e,t=0,i=[0,0,0]){Nt$1(Mt(this.radii.x,this.radii.y,Ho$1.EPSILON15)),Nt$1(this.radii.z>0),Or.from(e);let o=Or.z*(1-this.squaredXOverSquaredZ);if(!(Math.abs(o)>=this.radii.z-t))return Or.set(0,0,o).to(i)}};Ue.WGS84=new Ue(6378137,6378137,cn);var $A=class{item;previous;next;constructor(e,t,i){this.item=e,this.previous=t,this.next=i}};var ea=class{head=null;tail=null;_length=0;get length(){return this._length}add(e){let t=new $A(e,this.tail,null);return this.tail?(this.tail.next=t,this.tail=t):(this.head=t,this.tail=t),++this._length,t}remove(e){e&&(e.previous&&e.next?(e.previous.next=e.next,e.next.previous=e.previous):e.previous?(e.previous.next=null,this.tail=e.previous):e.next?(e.next.previous=null,this.head=e.next):(this.head=null,this.tail=null),e.next=null,e.previous=null,--this._length)}splice(e,t){e!==t&&(this.remove(t),this._insert(e,t))}_insert(e,t){let i=e.next;e.next=t,this.tail===e?this.tail=t:i.previous=t,t.next=i,t.previous=e,++this._length}};var ta=class{_list;_sentinel;_trimTiles;constructor(){this._list=new ea,this._sentinel=this._list.add(`sentinel`),this._trimTiles=!1}reset(){this._list.splice(this._list.tail,this._sentinel)}touch(e){let t=e._cacheNode;t&&this._list.splice(this._sentinel,t)}add(e,t,i){t._cacheNode||(t._cacheNode=this._list.add(t),i&&i(e,t))}unloadTile(e,t,i){let o=t._cacheNode;o&&(this._list.remove(o),t._cacheNode=null,i&&i(e,t))}unloadTiles(e,t){let i=this._trimTiles;this._trimTiles=!1;let o=this._list,a=e.maximumMemoryUsage*1024*1024,d=this._sentinel,m=o.head;for(;m!==d&&(e.gpuMemoryUsageInBytes>a||i);){let b=m.item;m=m.next,this.unloadTile(e,b,t)}}trim(){this._trimTiles=!0}};function Zg(r,e){jt$1(r),jt$1(e);let{rtcCenter:t,gltfUpAxis:i}=e,{computedTransform:o,boundingVolume:{center:a}}=r,d=new U(o);switch(t&&d.translate(t),i){case`Z`:break;case`Y`:let S=new U().rotateX(Math.PI/2);d=d.multiplyRight(S);break;case`X`:let M=new U().rotateY(-Math.PI/2);d=d.multiplyRight(M);break;default:break}e.isQuantized&&d.translate(e.quantizedVolumeOffset).scale(e.quantizedVolumeScale);let m=new Z(a);e.cartesianModelMatrix=d,e.cartesianOrigin=m;let b=Ue.WGS84.cartesianToCartographic(m,new Z);e.cartographicModelMatrix=Ue.WGS84.eastNorthUpToFixedFrame(m).invert().multiplyRight(d),e.cartographicOrigin=b;let w=iI(e);w&&(e.cartesianModelMatrix=new U(d).multiplyRight(w.matrix),e.cartographicModelMatrix.multiplyRight(w.matrix),w.matrix=U.IDENTITY),e.coordinateSystem||(e.modelMatrix=e.cartographicModelMatrix)}var nI=1e6**2;function iI(r){let e=r.gltf;if(!e)return null;let t=typeof e.scene==`number`?e.scene:0,o=e.scenes?.[t]?.nodes?.[0];if(!o?.matrix)return null;let a=o.matrix;return a[12]*a[12]+a[13]*a[13]+a[14]*a[14]<=nI?null:o}var $g=new Z;var kl=new Z;var Ol=new Qr([new Ut,new Ut,new Ut,new Ut,new Ut,new Ut]);function t2(r,e){let{cameraDirection:t,cameraUp:i,height:o}=r,{metersPerUnit:a}=r.distanceScales,d=ra(r,r.center),m=Ue.WGS84.eastNorthUpToFixedFrame(d),b=r.unprojectPosition(r.cameraPosition),y=Ue.WGS84.cartographicToCartesian(b,new Z),_=new Z(m.transformAsVector(new Z(t).scale(a))).normalize(),w=new Z(m.transformAsVector(new Z(i).scale(a))).normalize();oI(r);let S=r.constructor,{longitude:M,latitude:k,width:O,bearing:Q,zoom:V}=r,G=new S({longitude:M,latitude:k,height:o,width:O,bearing:Q,zoom:V,pitch:0});return{camera:{position:y,direction:_,up:w},viewport:r,topDownViewport:G,height:o,cullingVolume:Ol,frameNumber:e,sseDenominator:1.15}}function r2(r,e,t){if(t===0||r.length<=t)return[r,[]];let i=[],{longitude:o,latitude:a}=e.viewport;for(let[y,_]of r.entries()){let[w,S]=_.header.mbs,M=Math.abs(o-w),k=Math.abs(a-S),O=Math.sqrt(k*k+M*M);i.push([y,O])}let d=i.sort((y,_)=>y[1]-_[1]),m=[];for(let y=0;y<t;y++)m.push(r[d[y][0]]);let b=[];for(let y=t;y<d.length;y++)b.push(r[d[y][0]]);return[m,b]}function oI(r){let e=r.getFrustumPlanes(),t=e2(e.near,r.cameraPosition),i=ra(r,t),o=ra(r,r.cameraPosition,kl),a=0;Ol.planes[a++].fromPointNormal(i,$g.copy(i).subtract(o));for(let d in e){if(d===`near`)continue;let m=e[d],y=ra(r,e2(m,t,kl),kl);Ol.planes[a++].fromPointNormal(y,$g.copy(i).subtract(y))}}function e2(r,e,t=new Z){let i=r.normal.dot(e);return t.copy(r.normal).scale(r.distance-i).add(e),t}function ra(r,e,t=new Z){let i=r.unprojectPosition(e);return Ue.WGS84.cartographicToCartesian(i,t)}var sI=6378137;var AI=6378137;var Dl=6356752.314245179;var eo=new Z;function n2(r,e){if(r instanceof on){let{halfAxes:t}=r,i=aI(t);return Math.log2(Dl/(i+e[2]))}else if(r instanceof Wr){let{radius:t}=r;return Math.log2(Dl/(t+e[2]))}else if(r.width&&r.height){let{width:t,height:i}=r;return(Math.log2(sI/t)+Math.log2(AI/i))/2}return 1}function Bl(r,e,t){Ue.WGS84.cartographicToCartesian([r.xmax,r.ymax,r.zmax],eo);let i=Math.sqrt(Math.pow(eo[0]-t[0],2)+Math.pow(eo[1]-t[1],2)+Math.pow(eo[2]-t[2],2));return Math.log2(Dl/(i+e[2]))}function i2(r,e,t){let[i,o,a,d]=r;return Bl({xmin:i,xmax:a,ymin:o,ymax:d,zmin:0,zmax:0},e,t)}function aI(r){r.getColumn(0,eo);let e=r.getColumn(1),t=r.getColumn(2);return eo.add(e).add(t).len()}var Kt={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,EXPIRED:4,FAILED:5};var Xt=(function(r){return r[r.ADD=1]=`ADD`,r[r.REPLACE=2]=`REPLACE`,r})(Xt||{});var Dr=(function(r){return r.EMPTY=`empty`,r.SCENEGRAPH=`scenegraph`,r.POINTCLOUD=`pointcloud`,r.MESH=`mesh`,r})(Dr||{});var Bt=(function(r){return r.I3S=`I3S`,r.TILES3D=`TILES3D`,r})(Bt||{});var Mn=(function(r){return r.GEOMETRIC_ERROR=`geometricError`,r.MAX_SCREEN_THRESHOLD=`maxScreenThreshold`,r})(Mn||{});var o2={NOT_COMPUTED:-1,USE_OPTIMIZATION:1,SKIP_OPTIMIZATION:0};function c2(r){return r!=null}var Gt=new Z;var na=new Z;var cI=new Z;var lI=new Z;var ei=new Z;var s2=new Z;var A2=new Z;var a2=new Z;function ia(r,e,t){if(jt$1(r,`3D Tile: boundingVolume must be defined`),r.box)return u2(r.box,e,t);if(r.region)return fI(r.region);if(r.sphere)return uI(r.sphere,e,t);throw new Error(`3D Tile: boundingVolume must contain a sphere, region, or box`)}function l2(r,e){if(r.box)return hI(e);if(r.region){let[t,i,o,a,d,m]=r.region;return[[Pi$1(t),Pi$1(i),d],[Pi$1(o),Pi$1(a),m]]}if(r.sphere)return dI(e);throw new Error(`Unkown boundingVolume type`)}function u2(r,e,t){let i=new Z(r[0],r[1],r[2]);e.transform(i,i);let o=[];if(r.length===10){let y=r.slice(3,6),_=new hr$1;_.fromArray(r,6);let w=new Z([1,0,0]),S=new Z([0,1,0]),M=new Z([0,0,1]);w.transformByQuaternion(_),w.scale(y[0]),S.transformByQuaternion(_),S.scale(y[1]),M.transformByQuaternion(_),M.scale(y[2]),o=[...w.toArray(),...S.toArray(),...M.toArray()]}else o=[...r.slice(3,6),...r.slice(6,9),...r.slice(9,12)];let a=e.transformAsVector(o.slice(0,3)),d=e.transformAsVector(o.slice(3,6)),m=e.transformAsVector(o.slice(6,9)),b=new tt([a[0],a[1],a[2],d[0],d[1],d[2],m[0],m[1],m[2]]);return c2(t)?(t.center=i,t.halfAxes=b,t):new on(i,b)}function uI(r,e,t){let i=new Z(r[0],r[1],r[2]);e.transform(i,i);let o=e.getScale(na),a=Math.max(Math.max(o[0],o[1]),o[2]),d=r[3]*a;return c2(t)?(t.center=i,t.radius=d,t):new Wr(i,d)}function fI(r){let[e,t,i,o,a,d]=r,m=Ue.WGS84.cartographicToCartesian([Pi$1(e),Pi$1(o),a],cI),b=Ue.WGS84.cartographicToCartesian([Pi$1(i),Pi$1(t),d],lI),y=new Z().addVectors(m,b).multiplyByScalar(.5);return Ue.WGS84.cartesianToCartographic(y,ei),Ue.WGS84.cartographicToCartesian([Pi$1(i),ei[1],ei[2]],s2),Ue.WGS84.cartographicToCartesian([ei[0],Pi$1(o),ei[2]],A2),Ue.WGS84.cartographicToCartesian([ei[0],ei[1],d],a2),u2([...y,...s2.subtract(y),...A2.subtract(y),...a2.subtract(y)],new U)}function hI(r){let e=f2(),{halfAxes:t}=r,i=new Z(t.getColumn(0)),o=new Z(t.getColumn(1)),a=new Z(t.getColumn(2));for(let d=0;d<2;d++){for(let m=0;m<2;m++){for(let b=0;b<2;b++)Gt.copy(r.center),Gt.add(i),Gt.add(o),Gt.add(a),h2(e,Gt),a.negate();o.negate()}i.negate()}return e}function dI(r){let e=f2(),{center:t,radius:i}=r,o=Ue.WGS84.scaleToGeodeticSurface(t,Gt),a;o?a=Ue.WGS84.geodeticSurfaceNormal(o):a=new Z(0,0,1);let d=new Z(a[2],-a[1],0);d.len()>0?d.normalize():d=new Z(0,1,0);let m=d.clone().cross(a);for(let b of[d,m,a]){na.copy(b).scale(i);for(let y=0;y<2;y++)Gt.copy(t),Gt.add(na),h2(e,Gt),na.negate()}return e}function f2(){return[[Infinity,Infinity,Infinity],[-Infinity,-Infinity,-Infinity]]}function h2(r,e){Ue.WGS84.cartesianToCartographic(e,Gt),r[0][0]=Math.min(r[0][0],Gt[0]),r[0][1]=Math.min(r[0][1],Gt[1]),r[0][2]=Math.min(r[0][2],Gt[2]),r[1][0]=Math.max(r[1][0],Gt[0]),r[1][1]=Math.max(r[1][1],Gt[1]),r[1][2]=Math.max(r[1][2],Gt[2])}new Z;new Z;new U;new Z;new Z;new Z;function pI(r,e){let t=r*e;return 1-Math.exp(-(t*t))}function mI(r,e){if(r.dynamicScreenSpaceError&&r.dynamicScreenSpaceErrorComputedDensity){let t=r.dynamicScreenSpaceErrorComputedDensity,i=r.dynamicScreenSpaceErrorFactor;return pI(e,t)*i}return 0}function d2(r,e,t){let i=r.tileset,o=r.parent&&r.parent.lodMetricValue||r.lodMetricValue,a=t?o:r.lodMetricValue;if(a===0)return 0;let d=Math.max(r._distanceToCamera,1e-7),{height:m,sseDenominator:b}=e,{viewDistanceScale:y}=i.options,_=a*m*(y||1)/(d*b);return _-=mI(i,d),_}var Ul=new Z;var p2=new Z;var Ln=new Z;var m2=new Z;var gI=new Z;var Gl=new U;var g2=new U;function b2(r,e){if(r.lodMetricValue===0||isNaN(r.lodMetricValue))return`DIG`;let t=2*jl(r,e);return t<2?`OUT`:!r.header.children||t<=r.lodMetricValue?`DRAW`:r.header.children?`DIG`:`OUT`}function jl(r,e){let{topDownViewport:t}=e,i=r.header.mbs[1],o=r.header.mbs[0],a=r.header.mbs[2],d=r.header.mbs[3],m=[...r.boundingVolume.center],b=t.unprojectPosition(t.cameraPosition);Ue.WGS84.cartographicToCartesian(b,Ul),p2.copy(Ul).subtract(m).normalize(),Ue.WGS84.eastNorthUpToFixedFrame(m,Gl),g2.copy(Gl).invert(),Ln.copy(Ul).transform(g2);let y=Math.sqrt(Ln[0]*Ln[0]+Ln[1]*Ln[1]),_=y*y/Ln[2];m2.copy([Ln[0],Ln[1],_]);let S=m2.transform(Gl).subtract(m).normalize(),k=p2.cross(S).normalize().scale(d).add(m),O=Ue.WGS84.cartesianToCartographic(k),Q=t.project([o,i,a]),V=t.project(O);return gI.copy(Q).subtract(V).magnitude()}function T2(r){return{assetGltfUpAxis:r.asset&&r.asset.gltfUpAxis||`Y`}}var cs=class{_map=new Map;_array;_length;constructor(e=0){this._array=new Array(e),this._length=e}get length(){return this._length}set length(e){this._length=e,e>this._array.length&&(this._array.length=e)}get values(){return this._array}get(e){return jt$1(e<this._array.length),this._array[e]}set(e,t){jt$1(e>=0),e>=this.length&&(this.length=e+1),this._map.has(this._array[e])&&this._map.delete(this._array[e]),this._array[e]=t,this._map.set(t,e)}delete(e){let t=this._map.get(e);t>=0&&(this._array.splice(t,1),this._map.delete(e),this.length--)}peek(){return this._array[this._length-1]}push(e){if(!this._map.has(e)){let t=this.length++;this._array[t]=e,this._map.set(e,t)}}pop(){let e=this._array[--this.length];return this._map.delete(e),e}reserve(e){jt$1(e>=0),e>this._array.length&&(this._array.length=e)}resize(e){jt$1(e>=0),this.length=e}trim(e){e??=this.length,this._array.length=e}reset(){this._array=[],this._map=new Map,this._length=0}find(e){return this._map.has(e)}};var bI={loadSiblings:!1,skipLevelOfDetail:!1,updateTransforms:!0,onTraversalEnd:()=>{},viewportTraversersMap:{},basePath:``};var Xr=class{options;root=null;selectedTiles={};requestedTiles={};emptyTiles={};lastUpdate=new Date().getTime();updateDebounceTime=1e3;_traversalStack=new cs;_emptyTraversalStack=new cs;_frameNumber=null;traversalFinished(e){return!0}constructor(e){this.options=r(r({},bI),e)}traverse(e,t,i){this.root=e,this.options=r(r({},this.options),i),this.reset(),this.updateTile(e,t),this._frameNumber=t.frameNumber,this.executeTraversal(e,t)}reset(){this.requestedTiles={},this.selectedTiles={},this.emptyTiles={},this._traversalStack.reset(),this._emptyTraversalStack.reset()}executeTraversal(e,t){let i=this._traversalStack;for(e._selectionDepth=1,i.push(e);i.length>0;){let a=i.pop(),d=!1;this.canTraverse(a,t)&&(this.updateChildTiles(a,t),d=this.updateAndPushChildren(a,t,i,a.hasRenderContent?a._selectionDepth+1:a._selectionDepth));let m=a.parent,b=!!(!m||m._shouldRefine),y=!d;a.hasRenderContent?a.refine===Xt.ADD?(this.loadTile(a,t),this.selectTile(a,t)):a.refine===Xt.REPLACE&&(this.loadTile(a,t),y&&this.selectTile(a,t)):(this.emptyTiles[a.id]=a,this.loadTile(a,t),y&&this.selectTile(a,t)),this.touchTile(a,t),a._shouldRefine=d&&b}let o=new Date().getTime();(this.traversalFinished(t)||o-this.lastUpdate>this.updateDebounceTime)&&(this.lastUpdate=o,this.options.onTraversalEnd(t))}updateChildTiles(e,t){let i=e.children;for(let o of i)this.updateTile(o,t)}updateAndPushChildren(e,t,i,o){let{loadSiblings:a,skipLevelOfDetail:d}=this.options,m=e.children;m.sort(this.compareDistanceToCamera.bind(this));let b=e.refine===Xt.REPLACE&&e.hasRenderContent&&!d,y=!1,_=!0;for(let w of m)if(w._selectionDepth=o,w.isVisibleAndInRequestVolume?(i.find(w)&&i.delete(w),i.push(w),y=!0):(b||a)&&(this.loadTile(w,t),this.touchTile(w,t)),b){let S;if(w._inRequestVolume?w.hasRenderContent?S=w.contentAvailable:S=this.executeEmptyTraversal(w,t):S=!1,_=_&&S,!_)return!1}return y||(_=!1),_}updateTile(e,t){this.updateTileVisibility(e,t)}selectTile(e,t){this.shouldSelectTile(e)&&(e._selectedFrame=t.frameNumber,this.selectedTiles[e.id]=e)}loadTile(e,t){this.shouldLoadTile(e)&&(e._requestedFrame=t.frameNumber,e._priority=e._getPriority(),this.requestedTiles[e.id]=e)}touchTile(e,t){e.tileset._cache.touch(e),e._touchedFrame=t.frameNumber}canTraverse(e,t){return e.hasChildren?e.hasTilesetContent?!e.contentExpired:this.shouldRefine(e,t):!1}shouldLoadTile(e){return e.hasUnloadedContent||e.contentExpired}shouldSelectTile(e){return e.contentAvailable&&!this.options.skipLevelOfDetail}shouldRefine(e,t,i=!1){let o=e._screenSpaceError;return i&&(o=e.getScreenSpaceError(t,!0)),o>e.tileset.memoryAdjustedScreenSpaceError}updateTileVisibility(e,t){let i=[];if(this.options.viewportTraversersMap)for(let o in this.options.viewportTraversersMap)this.options.viewportTraversersMap[o]===t.viewport.id&&i.push(o);else i.push(t.viewport.id);e.updateVisibility(t,i)}compareDistanceToCamera(e,t){return e._distanceToCamera-t._distanceToCamera}anyChildrenVisible(e,t){let i=!1;for(let o of e.children)o.updateVisibility(t),i=i||o.isVisibleAndInRequestVolume;return i}executeEmptyTraversal(e,t){let i=!0,o=this._emptyTraversalStack;for(o.push(e);o.length>0;){let a=o.pop(),d=!a.hasRenderContent&&this.canTraverse(a,t),m=!a.hasRenderContent&&a.children.length===0;if(!d&&!a.contentAvailable&&!m&&(i=!1),this.updateTile(a,t),a.isVisibleAndInRequestVolume||(this.loadTile(a,t),this.touchTile(a,t)),d){let b=a.children;for(let y of b)o.push(y)}}return e.hasEmptyContent||i}};var y2=new Z;function TI(r){return r!=null}var ti=class{tileset;header;id;url;parent;refine;type;contentUrl;lodMetricType=`geometricError`;lodMetricValue=0;boundingVolume=null;content=null;contentState=Kt.UNLOADED;gpuMemoryUsageInBytes=0;children=[];depth=0;viewportIds=[];transform=new U;extensions=null;implicitTiling=null;userData={};computedTransform;hasEmptyContent=!1;hasTilesetContent=!1;traverser=new Xr({});_cacheNode=null;_frameNumber=null;_expireDate=null;_expiredContent=null;_boundingBox=void 0;_distanceToCamera=0;_screenSpaceError=0;_visibilityPlaneMask;_visible=void 0;_contentBoundingVolume;_viewerRequestVolume;_initialTransform=new U;_priority=0;_selectedFrame=0;_requestedFrame=0;_selectionDepth=0;_touchedFrame=0;_centerZDepth=0;_shouldRefine=!1;_stackLength=0;_visitedFrame=0;_inRequestVolume=!1;_lodJudge=null;tileDrawn=!0;constructor(e,t,i,o=``){this.header=t,this.tileset=e,this.id=o||t.id,this.url=t.url,this.parent=i,this.refine=this._getRefine(t.refine),this.type=t.type,this.contentUrl=t.contentUrl,this._initializeLodMetric(t),this._initializeTransforms(t),this._initializeBoundingVolumes(t),this._initializeContent(t),this._initializeRenderingState(t),Object.seal(this)}destroy(){this.header=null}isDestroyed(){return this.header===null}get selected(){return this._selectedFrame===this.tileset._frameNumber}get isVisible(){return this._visible}get isVisibleAndInRequestVolume(){return this._visible&&this._inRequestVolume}get hasRenderContent(){return!this.hasEmptyContent&&!this.hasTilesetContent}get hasChildren(){return this.children.length>0||this.header.children&&this.header.children.length>0}get contentReady(){return this.contentState===Kt.READY||this.hasEmptyContent}get contentAvailable(){return!!(this.contentReady&&this.hasRenderContent||this._expiredContent&&!this.contentFailed)}get hasUnloadedContent(){return this.hasRenderContent&&this.contentUnloaded}get contentUnloaded(){return this.contentState===Kt.UNLOADED}get contentExpired(){return this.contentState===Kt.EXPIRED}get contentFailed(){return this.contentState===Kt.FAILED}get distanceToCamera(){return this._distanceToCamera}get screenSpaceError(){return this._screenSpaceError}get boundingBox(){return this._boundingBox||(this._boundingBox=l2(this.header.boundingVolume,this.boundingVolume)),this._boundingBox}getScreenSpaceError(e,t){switch(this.tileset.type){case Bt.I3S:return jl(this,e);case Bt.TILES3D:return d2(this,e,t);default:throw new Error(`Unsupported tileset type`)}}unselect(){this._selectedFrame=0}_getGpuMemoryUsageInBytes(){return this.content.gpuMemoryUsageInBytes||this.content.byteLength||0}_getPriority(){let e=this.tileset._traverser,{skipLevelOfDetail:t}=e.options,i=this.refine===Xt.ADD||t;if(i&&!this.isVisible&&this._visible!==void 0||this.tileset._frameNumber-this._touchedFrame>=1||this.contentState===Kt.UNLOADED)return-1;let o=this.parent,d=o&&(!i||this._screenSpaceError===0||o.hasTilesetContent)?o._screenSpaceError:this._screenSpaceError,m=e.root?e.root._screenSpaceError:0;return Math.max(m-d,0)}async loadContent(){if(this.hasEmptyContent)return!1;if(this.content)return!0;this.contentExpired&&(this._expireDate=null),this.contentState=Kt.LOADING;let t=await this.tileset._requestScheduler.scheduleRequest(this.id,this._getPriority.bind(this));if(!t)return this.contentState=Kt.UNLOADED,!1;try{let i=this.tileset.getTileUrl(this.contentUrl),o=this.tileset.loader,a=this.tileset.loadOptions[o.id]||{},d=s(r({},this.tileset.loadOptions),{[o.id]:r(s(r({},a),{isTileset:this.type===`json`}),this._getLoaderSpecificOptions(o.id))});return this.content=await ge$2(i,o,d),this.tileset.options.contentLoader&&await this.tileset.options.contentLoader(this),this._isTileset()&&this.tileset._initializeTileHeaders(this.content,this),this.contentState=Kt.READY,this._onContentLoaded(),!0}catch(i){throw this.contentState=Kt.FAILED,i}finally{t.done()}}unloadContent(){return this.content&&this.content.destroy&&this.content.destroy(),this.content=null,this.header.content&&this.header.content.destroy&&this.header.content.destroy(),this.header.content=null,this.contentState=Kt.UNLOADED,this.tileDrawn=!0,!0}updateVisibility(e,t){if(this._frameNumber===e.frameNumber)return;let i=this.parent,o=i?i._visibilityPlaneMask:Qr.MASK_INDETERMINATE;if(this.tileset._traverser.options.updateTransforms){let a=i?i.computedTransform:this.tileset.modelMatrix;this._updateTransform(a)}this._distanceToCamera=this.distanceToTile(e),this._screenSpaceError=this.getScreenSpaceError(e,!1),this._visibilityPlaneMask=this.visibility(e,o),this._visible=this._visibilityPlaneMask!==Qr.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(e),this._frameNumber=e.frameNumber,this.viewportIds=t}visibility(e,t){let{cullingVolume:i}=e,{boundingVolume:o}=this;return i.computeVisibilityWithPlaneMask(o,t)}contentVisibility(){return!0}distanceToTile(e){let t=this.boundingVolume;return Math.sqrt(Math.max(t.distanceSquaredTo(e.camera.position),0))}cameraSpaceZDepth({camera:e}){let t=this.boundingVolume;return y2.subVectors(t.center,e.position),e.direction.dot(y2)}insideViewerRequestVolume(e){let t=this._viewerRequestVolume;return!t||t.distanceSquaredTo(e.camera.position)<=0}updateExpiration(){if(TI(this._expireDate)&&this.contentReady&&!this.hasEmptyContent){let e=Date.now();Date.lessThan(this._expireDate,e)&&(this.contentState=Kt.EXPIRED,this._expiredContent=this.content)}}get extras(){return this.header.extras}_initializeLodMetric(e){`lodMetricType`in e?this.lodMetricType=e.lodMetricType:(this.lodMetricType=this.parent&&this.parent.lodMetricType||this.tileset.lodMetricType,console.warn(`3D Tile: Required prop lodMetricType is undefined. Using parent lodMetricType`)),`lodMetricValue`in e?this.lodMetricValue=e.lodMetricValue:(this.lodMetricValue=this.parent&&this.parent.lodMetricValue||this.tileset.lodMetricValue,console.warn(`3D Tile: Required prop lodMetricValue is undefined. Using parent lodMetricValue`))}_initializeTransforms(e){this.transform=e.transform?new U(e.transform):new U;let t=this.parent,i=this.tileset,o=t&&t.computedTransform?t.computedTransform.clone():i.modelMatrix.clone();this.computedTransform=new U(o).multiplyRight(this.transform);let a=t&&t._initialTransform?t._initialTransform.clone():new U;this._initialTransform=new U(a).multiplyRight(this.transform)}_initializeBoundingVolumes(e){this._contentBoundingVolume=null,this._viewerRequestVolume=null,this._updateBoundingVolume(e)}_initializeContent(e){this.content={_tileset:this.tileset,_tile:this},this.hasEmptyContent=!0,this.contentState=Kt.UNLOADED,this.hasTilesetContent=!1,e.contentUrl&&(this.content=null,this.hasEmptyContent=!1)}_initializeRenderingState(e){this.depth=e.level||(this.parent?this.parent.depth+1:0),this._shouldRefine=!1,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._visibilityPlaneMask=Qr.MASK_INDETERMINATE,this._visible=void 0,this._inRequestVolume=!1,this._stackLength=0,this._selectionDepth=0,this._frameNumber=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._requestedFrame=0,this._priority=0}_getRefine(e){return e||this.parent&&this.parent.refine||Xt.REPLACE}_isTileset(){return this.contentUrl.indexOf(`.json`)!==-1}_onContentLoaded(){switch(this.content&&this.content.type){case`vctr`:case`geom`:this.tileset._traverser.disableSkipLevelOfDetail=!0;break;default:}this._isTileset()?this.hasTilesetContent=!0:this.gpuMemoryUsageInBytes=this._getGpuMemoryUsageInBytes()}_updateBoundingVolume(e){this.boundingVolume=ia(e.boundingVolume,this.computedTransform,this.boundingVolume);let t=e.content;t&&(t.boundingVolume&&(this._contentBoundingVolume=ia(t.boundingVolume,this.computedTransform,this._contentBoundingVolume)),e.viewerRequestVolume&&(this._viewerRequestVolume=ia(e.viewerRequestVolume,this.computedTransform,this._viewerRequestVolume)))}_updateTransform(e=new U){let t=e.clone().multiplyRight(this.transform);t.equals(this.computedTransform)||(this.computedTransform=t,this._updateBoundingVolume(this.header))}_getLoaderSpecificOptions(e){return e===`i3s`?s(r({},this.tileset.options.i3s),{_tileOptions:{attributeUrls:this.header.attributeUrls,textureUrl:this.header.textureUrl,textureFormat:this.header.textureFormat,textureLoaderOptions:this.header.textureLoaderOptions,materialDefinition:this.header.materialDefinition,isDracoGeometry:this.header.isDracoGeometry,mbs:this.header.mbs},_tilesetOptions:{store:this.tileset.tileset.store,attributeStorageInfo:this.tileset.tileset.attributeStorageInfo,fields:this.tileset.tileset.fields},isTileHeader:!1}):T2(this.tileset.tileset)}};var oa=class extends Xr{compareDistanceToCamera(e,t){return t._distanceToCamera===0&&e._distanceToCamera===0?t._centerZDepth-e._centerZDepth:t._distanceToCamera-e._distanceToCamera}updateTileVisibility(e,t){if(super.updateTileVisibility(e,t),!e.isVisibleAndInRequestVolume)return;let i=e.children.length>0;if(e.hasTilesetContent&&i){let d=e.children[0];this.updateTileVisibility(d,t),e._visible=d._visible;return}if(this.meetsScreenSpaceErrorEarly(e,t)){e._visible=!1;return}let o=e.refine===Xt.REPLACE,a=e._optimChildrenWithinParent===o2.USE_OPTIMIZATION;if(o&&a&&i&&!this.anyChildrenVisible(e,t)){e._visible=!1;return}}meetsScreenSpaceErrorEarly(e,t){let{parent:i}=e;return!i||i.hasTilesetContent||i.refine!==Xt.ADD?!1:!this.shouldRefine(e,t,!0)}};var sa=class{frameNumberMap=new Map;register(e,t){let i=this.frameNumberMap.get(e)||new Map,o=i.get(t)||0;i.set(t,o+1),this.frameNumberMap.set(e,i)}deregister(e,t){let i=this.frameNumberMap.get(e);if(!i)return;let o=i.get(t)||1;i.set(t,o-1)}isZero(e,t){return(this.frameNumberMap.get(e)?.get(t)||0)===0}};var Vl={REQUESTED:`REQUESTED`,COMPLETED:`COMPLETED`,ERROR:`ERROR`};var Aa=class{_statusMap;pendingTilesRegister=new sa;constructor(){this._statusMap={}}add(e,t,i,o){if(!this._statusMap[t]){let{frameNumber:a,viewport:{id:d}}=o;this._statusMap[t]={request:e,callback:i,key:t,frameState:o,status:Vl.REQUESTED},this.pendingTilesRegister.register(d,a),e().then(m=>{this._statusMap[t].status=Vl.COMPLETED;let{frameNumber:b,viewport:{id:y}}=this._statusMap[t].frameState;this.pendingTilesRegister.deregister(y,b),this._statusMap[t].callback(m,o)}).catch(m=>{this._statusMap[t].status=Vl.ERROR;let{frameNumber:b,viewport:{id:y}}=this._statusMap[t].frameState;this.pendingTilesRegister.deregister(y,b),i(m)})}}update(e,t){if(this._statusMap[e]){let{frameNumber:i,viewport:{id:o}}=this._statusMap[e].frameState;this.pendingTilesRegister.deregister(o,i);let{frameNumber:a,viewport:{id:d}}=t;this.pendingTilesRegister.register(d,a),this._statusMap[e].frameState=t}}find(e){return this._statusMap[e]}hasPendingTiles(e,t){return!this.pendingTilesRegister.isZero(e,t)}};var aa=class extends Xr{_tileManager;constructor(e){super(e),this._tileManager=new Aa}traversalFinished(e){return!this._tileManager.hasPendingTiles(e.viewport.id,this._frameNumber||0)}shouldRefine(e,t){return e._lodJudge=b2(e,t),e._lodJudge===`DIG`}updateChildTiles(e,t){let i=e.header.children||[],o=e.children,a=e.tileset;for(let d of i){let m=`${d.id}-${t.viewport.id}`,b=o&&o.find(y=>y.id===m);if(b)b&&this.updateTile(b,t);else{let y=()=>this._loadTile(d.id,a);this._tileManager.find(m)?this._tileManager.update(m,t):(a.tileset.nodePages&&(y=()=>a.tileset.nodePagesTile.formTileFromNodePages(d.id)),this._tileManager.add(y,m,w=>this._onTileLoad(w,e,m),t))}}return!1}async _loadTile(e,t){let{loader:i}=t;return await ge$2(t.getTileUrl(`${t.url}/nodes/${e}`),i,s(r({},t.loadOptions),{i3s:s(r({},t.loadOptions.i3s),{isTileHeader:!0})}))}_onTileLoad(e,t,i){let o=new ti(t.tileset,e,t,i);t.children.push(o);let a=this._tileManager.find(o.id).frameState;this.updateTile(o,a),this._frameNumber===a.frameNumber&&(this.traversalFinished(a)||new Date().getTime()-this.lastUpdate>this.updateDebounceTime)&&this.executeTraversal(o,a)}};var yI={description:``,ellipsoid:Ue.WGS84,modelMatrix:new U,throttleRequests:!0,maxRequests:64,maximumMemoryUsage:32,memoryCacheOverflow:1,maximumTilesSelected:0,debounceTime:0,onTileLoad:()=>{},onTileUnload:()=>{},onTileError:()=>{},onTraversalComplete:r=>r,onUpdate:()=>{},contentLoader:void 0,viewDistanceScale:1,maximumScreenSpaceError:8,memoryAdjustedScreenSpaceError:!1,loadTiles:!0,updateTransforms:!0,viewportTraversersMap:null,loadOptions:{fetch:{}},attributions:[],basePath:``,i3s:{}};var ca=`Tiles In Tileset(s)`;var zl=`Tiles In Memory`;var x2=`Tiles In View`;var _2=`Tiles To Render`;var w2=`Tiles Loaded`;var Hl=`Tiles Loading`;var E2=`Tiles Unloaded`;var v2=`Failed Tile Loads`;var S2=`Points/Vertices`;var ql=`Tile Memory Use`;var C2=`Maximum Screen Space Error`;var ls=class{options;loadOptions;type;tileset;loader;url;basePath;modelMatrix;ellipsoid;lodMetricType;lodMetricValue;refine;root=null;roots={};asset={};description=``;properties;extras=null;attributions={};credits={};stats;contentFormats={draco:!1,meshopt:!1,dds:!1,ktx2:!1};cartographicCenter=null;cartesianCenter=null;zoom=1;boundingVolume=null;dynamicScreenSpaceErrorComputedDensity=0;maximumMemoryUsage=32;gpuMemoryUsageInBytes=0;memoryAdjustedScreenSpaceError=0;_cacheBytes=0;_cacheOverflowBytes=0;_frameNumber=0;_queryParams={};_extensionsUsed=[];_tiles={};_pendingCount=0;selectedTiles=[];traverseCounter=0;geometricError=0;lastUpdatedVieports=null;_requestedTiles=[];_emptyTiles=[];frameStateData={};_traverser;_cache=new ta;_requestScheduler;_heldTiles=new Set;updatePromise=null;tilesetInitializationPromise;constructor(e,t){this.options=r(r({},yI),t),this.tileset=e,this.loader=e.loader,this.type=e.type,this.url=e.url,this.basePath=e.basePath||pa$1.dirname(this.url),this.modelMatrix=this.options.modelMatrix,this.ellipsoid=this.options.ellipsoid,this.lodMetricType=e.lodMetricType,this.lodMetricValue=e.lodMetricValue,this.refine=e.root.refine,this.loadOptions=this.options.loadOptions||{},this._traverser=this._initializeTraverser(),this._requestScheduler=new Yi$1({throttleRequests:this.options.throttleRequests,maxRequests:this.options.maxRequests}),this.memoryAdjustedScreenSpaceError=this.options.maximumScreenSpaceError,this._cacheBytes=this.options.maximumMemoryUsage*1024*1024,this._cacheOverflowBytes=this.options.memoryCacheOverflow*1024*1024,this.stats=new j({id:this.url}),this._initializeStats(),this.tilesetInitializationPromise=this._initializeTileSet(e)}destroy(){this._destroy()}isLoaded(){return this._pendingCount===0&&this._frameNumber!==0&&this._requestedTiles.length===0}get tiles(){return Object.values(this._tiles)}get frameNumber(){return this._frameNumber}get queryParams(){return new URLSearchParams(this._queryParams).toString()}setProps(e){this.options=r(r({},this.options),e)}getTileUrl(e){if(e.startsWith(`data:`))return e;let i=e;return this.queryParams.length&&(i=`${e}${e.includes(`?`)?`&`:`?`}${this.queryParams}`),i}hasExtension(e){return this._extensionsUsed.indexOf(e)>-1}update(e=null){this.tilesetInitializationPromise.then(()=>{!e&&this.lastUpdatedVieports?e=this.lastUpdatedVieports:this.lastUpdatedVieports=e,e&&this.doUpdate(e)})}async selectTiles(e=null){return await this.tilesetInitializationPromise,e&&(this.lastUpdatedVieports=e),this.updatePromise||(this.updatePromise=new Promise(t=>{setTimeout(()=>{this.lastUpdatedVieports&&this.doUpdate(this.lastUpdatedVieports),t(this._frameNumber),this.updatePromise=null},this.options.debounceTime)})),this.updatePromise}adjustScreenSpaceError(){this.gpuMemoryUsageInBytes<this._cacheBytes?this.memoryAdjustedScreenSpaceError=Math.max(this.memoryAdjustedScreenSpaceError/1.02,this.options.maximumScreenSpaceError):this.gpuMemoryUsageInBytes>this._cacheBytes+this._cacheOverflowBytes&&(this.memoryAdjustedScreenSpaceError*=1.02)}doUpdate(e){if(`loadTiles`in this.options&&!this.options.loadTiles||this.traverseCounter>0)return;let t=e instanceof Array?e:[e];this._cache.reset(),this._frameNumber++,this.traverseCounter=t.length;let i=[];for(let o of t){let a=o.id;this._needTraverse(a)?i.push(a):this.traverseCounter--}for(let o of t){let a=o.id;if(this.roots[a]||(this.roots[a]=this._initializeTileHeaders(this.tileset,null)),!i.includes(a))continue;let d=t2(o,this._frameNumber);this._traverser.traverse(this.roots[a],d,this.options)}}_needTraverse(e){let t=e;return this.options.viewportTraversersMap&&(t=this.options.viewportTraversersMap[e]),t===e}_onTraversalEnd(e){let t=e.viewport.id;this.frameStateData[t]||(this.frameStateData[t]={selectedTiles:[],_requestedTiles:[],_emptyTiles:[]});let i=this.frameStateData[t],[a,d]=r2(Object.values(this._traverser.selectedTiles),e,this.options.maximumTilesSelected);i.selectedTiles=a;for(let m of d)m.unselect();i._requestedTiles=Object.values(this._traverser.requestedTiles),i._emptyTiles=Object.values(this._traverser.emptyTiles),this.traverseCounter--,!(this.traverseCounter>0)&&this._updateTiles()}_updateTiles(){let e=this.selectedTiles;this.selectedTiles=[],this._requestedTiles=[],this._emptyTiles=[];for(let a in this.frameStateData){let d=this.frameStateData[a];this.selectedTiles=this.selectedTiles.concat(d.selectedTiles),this._requestedTiles=this._requestedTiles.concat(d._requestedTiles),this._emptyTiles=this._emptyTiles.concat(d._emptyTiles)}this.selectedTiles=this.options.onTraversalComplete(this.selectedTiles);let t=new Set(this.selectedTiles.map(a=>a.id)),i=this.selectedTiles.some(a=>!a.tileDrawn),o=0;if(i){for(let a of t)this._heldTiles.add(a);for(let a of this._heldTiles){if(t.has(a))continue;let d=this._tiles[a];d&&d.contentAvailable?(d._selectedFrame=this._frameNumber,this.selectedTiles.push(d),o++):this._heldTiles.delete(a)}}else this._heldTiles=t;o>0&&setTimeout(()=>{this.selectTiles()},0);for(let a of this.selectedTiles)this._tiles[a.id]=a;this._loadTiles(),this._unloadTiles(),this._updateStats(),this._tilesChanged(e,this.selectedTiles)&&this.options.onUpdate()}_tilesChanged(e,t){if(e.length!==t.length)return!0;let i=new Set(e.map(d=>d.id)),o=new Set(t.map(d=>d.id)),a=e.filter(d=>!o.has(d.id)).length>0;return a=a||t.filter(d=>!i.has(d.id)).length>0,a}_loadTiles(){this._requestedTiles.sort((e,t)=>e._priority-t._priority);for(let e of this._requestedTiles)e.contentUnloaded&&this._loadTile(e)}_unloadTiles(){this._cache.unloadTiles(this,(e,t)=>e._unloadTile(t))}_updateStats(){let e=0,t=0;for(let i of this.selectedTiles)i.contentAvailable&&i.content&&(e++,i.content.pointCount?t+=i.content.pointCount:t+=i.content.vertexCount);this.stats.get(x2).count=this.selectedTiles.length,this.stats.get(_2).count=e,this.stats.get(S2).count=t,this.stats.get(C2).count=this.memoryAdjustedScreenSpaceError}async _initializeTileSet(e){this.type===Bt.I3S&&(this.calculateViewPropsI3S(),e.root=await e.root),this.root=this._initializeTileHeaders(e,null),this.type===Bt.TILES3D&&(this._initializeTiles3DTileset(e),this.calculateViewPropsTiles3D()),this.type===Bt.I3S&&this._initializeI3STileset()}calculateViewPropsI3S(){let e=this.tileset.fullExtent;if(e){let{xmin:i,xmax:o,ymin:a,ymax:d,zmin:m,zmax:b}=e;this.cartographicCenter=new Z(i+(o-i)/2,a+(d-a)/2,m+(b-m)/2),this.cartesianCenter=new Z,Ue.WGS84.cartographicToCartesian(this.cartographicCenter,this.cartesianCenter),this.zoom=Bl(e,this.cartographicCenter,this.cartesianCenter);return}let t=this.tileset.store?.extent;if(t){let[i,o,a,d]=t;this.cartographicCenter=new Z(i+(a-i)/2,o+(d-o)/2,0),this.cartesianCenter=new Z,Ue.WGS84.cartographicToCartesian(this.cartographicCenter,this.cartesianCenter),this.zoom=i2(t,this.cartographicCenter,this.cartesianCenter);return}console.warn(`Extent is not defined in the tileset header`),this.cartographicCenter=new Z,this.zoom=1}calculateViewPropsTiles3D(){let e=this.root,{center:t}=e.boundingVolume;if(!t){console.warn(`center was not pre-calculated for the root tile`),this.cartographicCenter=new Z,this.zoom=1;return}t[0]!==0||t[1]!==0||t[2]!==0?(this.cartographicCenter=new Z,Ue.WGS84.cartesianToCartographic(t,this.cartographicCenter)):this.cartographicCenter=new Z(0,0,-Ue.WGS84.radii[0]),this.cartesianCenter=t,this.zoom=n2(e.boundingVolume,this.cartographicCenter)}_initializeStats(){this.stats.get(ca),this.stats.get(Hl),this.stats.get(zl),this.stats.get(x2),this.stats.get(_2),this.stats.get(w2),this.stats.get(E2),this.stats.get(v2),this.stats.get(S2),this.stats.get(ql,`memory`),this.stats.get(C2)}_initializeTileHeaders(e,t){let i=new ti(this,e.root,t);if(t&&(t.children.push(i),i.depth=t.depth+1),this.type===Bt.TILES3D){let o=[];for(o.push(i);o.length>0;){let a=o.pop();this.stats.get(ca).incrementCount();let d=a.header.children||[];for(let m of d){let b=new ti(this,m,a);if(b.contentUrl?.includes(`?session=`)){let _=new URL(b.contentUrl).searchParams.get(`session`);_&&(this._queryParams.session=_)}a.children.push(b),b.depth=a.depth+1,o.push(b)}}}return i}_initializeTraverser(){let e;switch(this.type){case Bt.TILES3D:e=oa;break;case Bt.I3S:e=aa;break;default:e=Xr}return new e({basePath:this.basePath,onTraversalEnd:this._onTraversalEnd.bind(this)})}_destroyTileHeaders(e){this._destroySubtree(e)}async _loadTile(e){let t;try{this._onStartTileLoading(),t=await e.loadContent()}catch(i){this._onTileLoadError(e,i instanceof Error?i:new Error(`load failed`))}finally{this._onEndTileLoading(),this._onTileLoad(e,t)}}_onTileLoadError(e,t){this.stats.get(v2).incrementCount();let i=t.message||t.toString(),o=e.url;console.error(`A 3D tile failed to load: ${e.url} ${i}`),this.options.onTileError(e,i,o)}_onTileLoad(e,t){if(t){if(this.type===Bt.I3S){let i=this.tileset?.nodePagesTile?.nodesInNodePages||0;this.stats.get(ca).reset(),this.stats.get(ca).addCount(i)}e&&e.content&&Zg(e,e.content),this.updateContentTypes(e),this._addTileToCache(e),this.options.onTileLoad(e)}}updateContentTypes(e){if(this.type===Bt.I3S)switch(e.header.isDracoGeometry&&(this.contentFormats.draco=!0),e.header.textureFormat){case`dds`:this.contentFormats.dds=!0;break;case`ktx2`:this.contentFormats.ktx2=!0;break;default:}else if(this.type===Bt.TILES3D){let{extensionsRemoved:t=[]}=e.content?.gltf||{};t.includes(`KHR_draco_mesh_compression`)&&(this.contentFormats.draco=!0),t.includes(`EXT_meshopt_compression`)&&(this.contentFormats.meshopt=!0),t.includes(`KHR_texture_basisu`)&&(this.contentFormats.ktx2=!0)}}_onStartTileLoading(){this._pendingCount++,this.stats.get(Hl).incrementCount()}_onEndTileLoading(){this._pendingCount--,this.stats.get(Hl).decrementCount()}_addTileToCache(e){this._cache.add(this,e,t=>t._updateCacheStats(e))}_updateCacheStats(e){this.stats.get(w2).incrementCount(),this.stats.get(zl).incrementCount(),this.gpuMemoryUsageInBytes+=e.gpuMemoryUsageInBytes||0,this.stats.get(ql).count=this.gpuMemoryUsageInBytes,this.options.memoryAdjustedScreenSpaceError&&this.adjustScreenSpaceError()}_unloadTile(e){this.gpuMemoryUsageInBytes-=e.gpuMemoryUsageInBytes||0,this.stats.get(zl).decrementCount(),this.stats.get(E2).incrementCount(),this.stats.get(ql).count=this.gpuMemoryUsageInBytes,this.options.onTileUnload(e),e.unloadContent()}_destroy(){let e=[];for(this.root&&e.push(this.root);e.length>0;){let t=e.pop();for(let i of t.children)e.push(i);this._destroyTile(t)}this.root=null}_destroySubtree(e){let t=e,i=[];for(i.push(t);i.length>0;){e=i.pop();for(let o of e.children)i.push(o);e!==t&&this._destroyTile(e)}t.children=[]}_destroyTile(e){this._cache.unloadTile(this,e),this._unloadTile(e),e.destroy()}_initializeTiles3DTileset(e){if(e.queryString){let t=new URLSearchParams(e.queryString),i=Object.fromEntries(t.entries());this._queryParams=r(r({},this._queryParams),i)}if(this.asset=e.asset,!this.asset)throw new Error(`Tileset must have an asset property.`);if(this.asset.version!==`0.0`&&this.asset.version!==`1.0`&&this.asset.version!==`1.1`)throw new Error(`The tileset must be 3D Tiles version either 0.0 or 1.0 or 1.1.`);`tilesetVersion`in this.asset&&(this._queryParams.v=this.asset.tilesetVersion),this.credits={attributions:this.options.attributions||[]},this.description=this.options.description||``,this.properties=e.properties,this.geometricError=e.geometricError,this._extensionsUsed=e.extensionsUsed||[],this.extras=e.extras}_initializeI3STileset(){let e=this.loadOptions.i3s;e&&typeof e==`object`&&`token`in e&&(this._queryParams.token=e.token)}};var la=`4.5.1`;var ri={COMPOSITE:`cmpt`,POINT_CLOUD:`pnts`,BATCHED_3D_MODEL:`b3dm`,INSTANCED_3D_MODEL:`i3dm`,GEOMETRY:`geom`,VECTOR:`vect`,GLTF:`glTF`};Object.keys(ri);function Wl(r,e,t){jt$1(r instanceof ArrayBuffer);let i=new TextDecoder(`utf8`),o=new Uint8Array(r,e,t);return i.decode(o)}function I2(r,e=0){let t=new DataView(r);return`${String.fromCharCode(t.getUint8(e+0))}${String.fromCharCode(t.getUint8(e+1))}${String.fromCharCode(t.getUint8(e+2))}${String.fromCharCode(t.getUint8(e+3))}`}var xI={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6};var xt={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DOUBLE:5130};var ke=r(r({},xI),xt);var Ql={[xt.DOUBLE]:Float64Array,[xt.FLOAT]:Float32Array,[xt.UNSIGNED_SHORT]:Uint16Array,[xt.UNSIGNED_INT]:Uint32Array,[xt.UNSIGNED_BYTE]:Uint8Array,[xt.BYTE]:Int8Array,[xt.SHORT]:Int16Array,[xt.INT]:Int32Array};var _I={DOUBLE:xt.DOUBLE,FLOAT:xt.FLOAT,UNSIGNED_SHORT:xt.UNSIGNED_SHORT,UNSIGNED_INT:xt.UNSIGNED_INT,UNSIGNED_BYTE:xt.UNSIGNED_BYTE,BYTE:xt.BYTE,SHORT:xt.SHORT,INT:xt.INT};var Kl=`Failed to convert GL type`;var hr=class r{static fromTypedArray(e){e=ArrayBuffer.isView(e)?e.constructor:e;for(let t in Ql)if(Ql[t]===e)return t;throw new Error(Kl)}static fromName(e){let t=_I[e];if(!t)throw new Error(Kl);return t}static getArrayType(e){switch(e){case xt.UNSIGNED_SHORT_5_6_5:case xt.UNSIGNED_SHORT_4_4_4_4:case xt.UNSIGNED_SHORT_5_5_5_1:return Uint16Array;default:let t=Ql[e];if(!t)throw new Error(Kl);return t}}static getByteSize(e){return r.getArrayType(e).BYTES_PER_ELEMENT}static validate(e){return!!r.getArrayType(e)}static createTypedArray(e,t,i=0,o){o===void 0&&(o=(t.byteLength-i)/r.getByteSize(e));let a=ArrayBuffer.isView(t)?t.buffer:t;return new(r.getArrayType(e))(a,i,o)}};function M2(r,e){if(!r)throw new Error(`math.gl assertion failed. ${e}`)}function Xl(r,e=[0,0,0]){let t=r>>11&31,i=r>>5&63,o=r&31;return e[0]=t<<3,e[1]=i<<2,e[2]=o<<3,e}new ar;new Z;new ar;new ar;function L2(r,e=255){return za(r,0,e)/e*2-1}function R2(r){return r<0?-1:1}function P2(r,e,t,i){if(M2(i),r<0||r>t||e<0||e>t)throw new Error(`x and y must be unsigned normalized integers between 0 and ${t}`);if(i.x=L2(r,t),i.y=L2(e,t),i.z=1-(Math.abs(i.x)+Math.abs(i.y)),i.z<0){let o=i.x;i.x=(1-Math.abs(i.y))*R2(o),i.y=(1-Math.abs(o))*R2(i.y)}return i.normalize()}function Yl(r,e,t){return P2(r,e,255,t)}var Rn=class{json;buffer;featuresLength=0;_cachedTypedArrays={};constructor(e,t){this.json=e,this.buffer=t}getExtension(e){return this.json.extensions&&this.json.extensions[e]}hasProperty(e){return!!this.json[e]}getGlobalProperty(e,t=ke.UNSIGNED_INT,i=1){let o=this.json[e];return o&&Number.isFinite(o.byteOffset)?this._getTypedArrayFromBinary(e,t,i,1,o.byteOffset):o}getPropertyArray(e,t,i){let o=this.json[e];return o&&Number.isFinite(o.byteOffset)?(`componentType`in o&&(t=hr.fromName(o.componentType)),this._getTypedArrayFromBinary(e,t,i,this.featuresLength,o.byteOffset)):this._getTypedArrayFromArray(e,t,o)}getProperty(e,t,i,o,a){let d=this.json[e];if(!d)return d;let m=this.getPropertyArray(e,t,i);if(i===1)return m[o];for(let b=0;b<i;++b)a[b]=m[i*o+b];return a}_getTypedArrayFromBinary(e,t,i,o,a){let d=this._cachedTypedArrays,m=d[e];return m||(m=hr.createTypedArray(t,this.buffer.buffer,this.buffer.byteOffset+a,o*i),d[e]=m),m}_getTypedArrayFromArray(e,t,i){let o=this._cachedTypedArrays,a=o[e];if(!a){if(ArrayBuffer.isView(i)){let d=i.byteOffset,b=i.byteLength/hr.getByteSize(t);a=hr.createTypedArray(t,i.buffer,d,b)}else if(i instanceof ArrayBuffer)a=hr.createTypedArray(t,i);else a=new(hr.getArrayType(t))(i);o[e]=a}return a}};var wI={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16};var EI={SCALAR:(r,e)=>r[e],VEC2:(r,e)=>[r[2*e+0],r[2*e+1]],VEC3:(r,e)=>[r[3*e+0],r[3*e+1],r[3*e+2]],VEC4:(r,e)=>[r[4*e+0],r[4*e+1],r[4*e+2],r[4*e+3]],MAT2:(r,e)=>[r[4*e+0],r[4*e+1],r[4*e+2],r[4*e+3]],MAT3:(r,e)=>[r[9*e+0],r[9*e+1],r[9*e+2],r[9*e+3],r[9*e+4],r[9*e+5],r[9*e+6],r[9*e+7],r[9*e+8]],MAT4:(r,e)=>[r[16*e+0],r[16*e+1],r[16*e+2],r[16*e+3],r[16*e+4],r[16*e+5],r[16*e+6],r[16*e+7],r[16*e+8],r[16*e+9],r[16*e+10],r[16*e+11],r[16*e+12],r[16*e+13],r[16*e+14],r[16*e+15]]};var vI={SCALAR:(r,e,t)=>{e[t]=r},VEC2:(r,e,t)=>{e[2*t+0]=r[0],e[2*t+1]=r[1]},VEC3:(r,e,t)=>{e[3*t+0]=r[0],e[3*t+1]=r[1],e[3*t+2]=r[2]},VEC4:(r,e,t)=>{e[4*t+0]=r[0],e[4*t+1]=r[1],e[4*t+2]=r[2],e[4*t+3]=r[3]},MAT2:(r,e,t)=>{e[4*t+0]=r[0],e[4*t+1]=r[1],e[4*t+2]=r[2],e[4*t+3]=r[3]},MAT3:(r,e,t)=>{e[9*t+0]=r[0],e[9*t+1]=r[1],e[9*t+2]=r[2],e[9*t+3]=r[3],e[9*t+4]=r[4],e[9*t+5]=r[5],e[9*t+6]=r[6],e[9*t+7]=r[7],e[9*t+8]=r[8],e[9*t+9]=r[9]},MAT4:(r,e,t)=>{e[16*t+0]=r[0],e[16*t+1]=r[1],e[16*t+2]=r[2],e[16*t+3]=r[3],e[16*t+4]=r[4],e[16*t+5]=r[5],e[16*t+6]=r[6],e[16*t+7]=r[7],e[16*t+8]=r[8],e[16*t+9]=r[9],e[16*t+10]=r[10],e[16*t+11]=r[11],e[16*t+12]=r[12],e[16*t+13]=r[13],e[16*t+14]=r[14],e[16*t+15]=r[15]}};function N2(r,e,t,i){let{componentType:o}=r;jt$1(r.componentType);let a=typeof o==`string`?hr.fromName(o):o,d=wI[r.type],m=EI[r.type],b=vI[r.type];return t+=r.byteOffset,{values:hr.createTypedArray(a,e,t,d*i),type:a,size:d,unpacker:m,packer:b}}var Yr=r=>r!==void 0;function F2(r,e,t){if(!e)return null;let i=r.getExtension(`3DTILES_batch_table_hierarchy`),o=e.HIERARCHY;return o&&(console.warn(`3D Tile Parser: HIERARCHY is deprecated. Use 3DTILES_batch_table_hierarchy.`),e.extensions=e.extensions||{},e.extensions[`3DTILES_batch_table_hierarchy`]=o,i=o),i?SI(i,t):null}function SI(r,e){let t,i,o,a=r.instancesLength,d=r.classes,m=r.classIds,b=r.parentCounts,y=r.parentIds,_=a;Yr(m.byteOffset)&&(m.componentType=defaultValue(m.componentType,GL.UNSIGNED_SHORT),m.type=AttributeType.SCALAR,o=getBinaryAccessor(m),m=o.createArrayBufferView(e.buffer,e.byteOffset+m.byteOffset,a));let w;if(Yr(b))for(Yr(b.byteOffset)&&(b.componentType=defaultValue(b.componentType,GL.UNSIGNED_SHORT),b.type=AttributeType.SCALAR,o=getBinaryAccessor(b),b=o.createArrayBufferView(e.buffer,e.byteOffset+b.byteOffset,a)),w=new Uint16Array(a),_=0,t=0;t<a;++t)w[t]=_,_+=b[t];Yr(y)&&Yr(y.byteOffset)&&(y.componentType=defaultValue(y.componentType,GL.UNSIGNED_SHORT),y.type=AttributeType.SCALAR,o=getBinaryAccessor(y),y=o.createArrayBufferView(e.buffer,e.byteOffset+y.byteOffset,_));let S=d.length;for(t=0;t<S;++t){let Q=d[t].length,V=d[t].instances,G=getBinaryProperties(Q,V,e);d[t].instances=combine(G,V)}let M=new Array(S).fill(0),k=new Uint16Array(a);for(t=0;t<a;++t)i=m[t],k[t]=M[i],++M[i];let O={classes:d,classIds:m,classIndexes:k,parentCounts:b,parentIndexes:w,parentIds:y};return MI(O),O}function to(r,e,t){if(!r)return;let i=r.parentCounts;return r.parentIds?t(r,e):i>0?CI(r,e,t):II(r,e,t)}function CI(r,e,t){let i=r.classIds,o=r.parentCounts,a=r.parentIds,d=r.parentIndexes,m=i.length,b=scratchVisited;b.length=Math.max(b.length,m);let y=++marker,_=scratchStack;for(_.length=0,_.push(e);_.length>0;){if(e=_.pop(),b[e]===y)continue;b[e]=y;let w=t(r,e);if(Yr(w))return w;let S=o[e],M=d[e];for(let k=0;k<S;++k){let O=a[M+k];O!==e&&_.push(O)}}return null}function II(r,e,t){let i=!0;for(;i;){let o=t(r,e);if(Yr(o))return o;let a=r.parentIds[e];i=a!==e,e=a}throw new Error(`traverseHierarchySingleParent`)}function MI(r){let i=r.classIds.length;for(let o=0;o<i;++o)k2(r,o,stack)}function k2(r,e,t){let i=r.parentCounts,o=r.parentIds,a=r.parentIndexes,m=r.classIds.length;if(!Yr(o))return;assert(e<m,`Parent index ${e} exceeds the total number of instances: ${m}`),assert(t.indexOf(e)===-1,`Circular dependency detected in the batch table hierarchy.`),t.push(e);let b=Yr(i)?i[e]:1,y=Yr(i)?a[e]:e;for(let _=0;_<b;++_){let w=o[y+_];w!==e&&k2(r,w,t)}t.pop(e)}function nr(r){return r!=null}var ua=(r,e)=>r;var LI={HIERARCHY:!0,extensions:!0,extras:!0};var ro=class{json;binary;featureCount;_extensions;_properties;_binaryProperties;_hierarchy;constructor(e,t,i,o={}){jt$1(i>=0),this.json=e||{},this.binary=t,this.featureCount=i,this._extensions=this.json?.extensions||{},this._properties={};for(let a in this.json)LI[a]||(this._properties[a]=this.json[a]);this._binaryProperties=this._initializeBinaryProperties(),o[`3DTILES_batch_table_hierarchy`]&&(this._hierarchy=F2(this,this.json,this.binary))}getExtension(e){return this.json&&this.json.extensions&&this.json.extensions[e]}memorySizeInBytes(){return 0}isClass(e,t){if(this._checkBatchId(e),jt$1(typeof t==`string`,t),this._hierarchy)return nr(to(this._hierarchy,e,(o,a)=>{let d=o.classIds[a];return o.classes[d].name===t}));return!1}isExactClass(e,t){return jt$1(typeof t==`string`,t),this.getExactClassName(e)===t}getExactClassName(e){if(this._checkBatchId(e),this._hierarchy){let t=this._hierarchy.classIds[e];return this._hierarchy.classes[t].name}}hasProperty(e,t){return this._checkBatchId(e),jt$1(typeof t==`string`,t),nr(this._properties[t])||this._hasPropertyInHierarchy(e,t)}getPropertyNames(e,t){this._checkBatchId(e),t=nr(t)?t:[],t.length=0;let i=Object.keys(this._properties);return t.push(...i),this._hierarchy&&this._getPropertyNamesInHierarchy(e,t),t}getProperty(e,t){if(this._checkBatchId(e),jt$1(typeof t==`string`,t),this._binaryProperties){let o=this._binaryProperties[t];if(nr(o))return this._getBinaryProperty(o,e)}let i=this._properties[t];if(nr(i))return ua(i[e],!0);if(this._hierarchy){let o=this._getHierarchyProperty(e,t);if(nr(o))return o}}setProperty(e,t,i){let o=this.featureCount;if(this._checkBatchId(e),jt$1(typeof t==`string`,t),this._binaryProperties){let d=this._binaryProperties[t];if(d){this._setBinaryProperty(d,e,i);return}}if(this._hierarchy&&this._setHierarchyProperty(this,e,t,i))return;let a=this._properties[t];nr(a)||(this._properties[t]=new Array(o),a=this._properties[t]),a[e]=ua(i,!0)}_checkBatchId(e){if(!(e>=0&&e<this.featureCount))throw new Error(`batchId not in range [0, featureCount - 1].`)}_getBinaryProperty(e,t){return e.unpack(e.typedArray,t)}_setBinaryProperty(e,t,i){e.pack(i,e.typedArray,t)}_initializeBinaryProperties(){let e=null;for(let t in this._properties){let i=this._properties[t],o=this._initializeBinaryProperty(t,i);o&&(e=e||{},e[t]=o)}return e}_initializeBinaryProperty(e,t){if(`byteOffset`in t){let i=t;jt$1(this.binary,`Property ${e} requires a batch table binary.`),jt$1(i.type,`Property ${e} requires a type.`);let o=N2(i,this.binary.buffer,this.binary.byteOffset|0,this.featureCount);return{typedArray:o.values,componentCount:o.size,unpack:o.unpacker,pack:o.packer}}return null}_hasPropertyInHierarchy(e,t){if(!this._hierarchy)return!1;return nr(to(this._hierarchy,e,(o,a)=>{let d=o.classIds[a],m=o.classes[d].instances;return nr(m[t])}))}_getPropertyNamesInHierarchy(e,t){to(this._hierarchy,e,(i,o)=>{let a=i.classIds[o],d=i.classes[a].instances;for(let m in d)d.hasOwnProperty(m)&&t.indexOf(m)===-1&&t.push(m)})}_getHierarchyProperty(e,t){return to(this._hierarchy,e,(i,o)=>{let a=i.classIds[o],d=i.classes[a],m=i.classIndexes[o],b=d.instances[t];return nr(b)?nr(b.typedArray)?this._getBinaryProperty(b,m):ua(b[m],!0):null})}_setHierarchyProperty(e,t,i,o){return nr(to(this._hierarchy,t,(d,m)=>{let b=d.classIds[m],y=d.classes[b],_=d.classIndexes[m],w=y.instances[i];return nr(w)?(jt$1(m===t,`Inherited property "${i}" is read-only.`),nr(w.typedArray)?this._setBinaryProperty(w,_,o):w[_]=ua(o,!0),!0):!1}))}};function Pn(r,e,t=0){let i=new DataView(e);if(r.magic=i.getUint32(t,!0),t+=4,r.version=i.getUint32(t,!0),t+=4,r.byteLength=i.getUint32(t,!0),t+=4,r.version!==1)throw new Error(`3D Tile Version ${r.version} not supported`);return t}var no=4;var O2=`b3dm tile in legacy format.`;function io(r,e,t){let i=new DataView(e),o;r.header=r.header||{};let a=i.getUint32(t,!0);t+=no;let d=i.getUint32(t,!0);t+=no;let m=i.getUint32(t,!0);t+=no;let b=i.getUint32(t,!0);return t+=no,m>=570425344?(t-=no*2,o=a,m=d,b=0,a=0,d=0,console.warn(O2)):b>=570425344&&(t-=no,o=m,m=a,b=d,a=0,d=0,console.warn(O2)),r.header.featureTableJsonByteLength=a,r.header.featureTableBinaryByteLength=d,r.header.batchTableJsonByteLength=m,r.header.batchTableBinaryByteLength=b,r.header.batchLength=o,t}function oo(r,e,t,i){return t=RI(r,e,t,i),t=PI(r,e,t,i),t}function RI(r,e,t,i){let{featureTableJsonByteLength:o,featureTableBinaryByteLength:a,batchLength:d}=r.header||{};if(r.featureTableJson={BATCH_LENGTH:d||0},o&&o>0){let m=Wl(e,t,o);r.featureTableJson=JSON.parse(m)}return t+=o||0,r.featureTableBinary=new Uint8Array(e,t,a),t+=a||0,t}function PI(r,e,t,i){let{batchTableJsonByteLength:o,batchTableBinaryByteLength:a}=r.header||{};if(o&&o>0){let d=Wl(e,t,o);r.batchTableJson=JSON.parse(d),t+=o,a&&a>0&&(r.batchTableBinary=new Uint8Array(e,t,a),r.batchTableBinary=new Uint8Array(r.batchTableBinary),t+=a)}return t}function Jl(r,e,t){if(!e&&(!r||!r.batchIds||!t))return null;let{batchIds:i,isRGB565:o,pointCount:a=0}=r;if(i&&t){let d=new Uint8ClampedArray(a*3);for(let m=0;m<a;m++){let b=i[m],_=t.getProperty(b,`dimensions`).map(w=>w*255);d[m*3]=_[0],d[m*3+1]=_[1],d[m*3+2]=_[2]}return{type:ke.UNSIGNED_BYTE,value:d,size:3,normalized:!0}}if(e&&o){let d=new Uint8ClampedArray(a*3);for(let m=0;m<a;m++){let b=Xl(e[m]);d[m*3]=b[0],d[m*3+1]=b[1],d[m*3+2]=b[2]}return{type:ke.UNSIGNED_BYTE,value:d,size:3,normalized:!0}}return e&&e.length===a*3?{type:ke.UNSIGNED_BYTE,value:e,size:3,normalized:!0}:{type:ke.UNSIGNED_BYTE,value:e||new Uint8ClampedArray,size:4,normalized:!0}}var D2=new Z;function B2(r,e){if(!e)return null;if(r.isOctEncoded16P){let t=new Float32Array((r.pointsLength||0)*3);for(let i=0;i<(r.pointsLength||0);i++)Yl(e[i*2],e[i*2+1],D2),D2.toArray(t,i*3);return{type:ke.FLOAT,size:2,value:t}}return{type:ke.FLOAT,size:2,value:e}}function U2(r,e,t){return r.isQuantized?t[`3d-tiles`]&&t[`3d-tiles`].decodeQuantizedPositions?(r.isQuantized=!1,NI(r,e)):{type:ke.UNSIGNED_SHORT,value:e,size:3,normalized:!0}:e}function NI(r,e){let t=new Z,i=new Float32Array(r.pointCount*3);for(let o=0;o<r.pointCount;o++)t.set(e[o*3],e[o*3+1],e[o*3+2]).scale(1/r.quantizedRange).multiply(r.quantizedVolumeScale).add(r.quantizedVolumeOffset).toArray(i,o*3);return i}async function G2(r,e,t,i,o){t=Pn(r,e,t),t=io(r,e,t),t=oo(r,e,t,i),FI(r);let{featureTable:a,batchTable:d}=kI(r);return await GI(r,a,d,i,o),OI(r,a,i),DI(r,a,d),BI(r,a),t}function FI(r){r.attributes={positions:null,colors:null,normals:null,batchIds:null},r.isQuantized=!1,r.isTranslucent=!1,r.isRGB565=!1,r.isOctEncoded16P=!1}function kI(r){let e=new Rn(r.featureTableJson,r.featureTableBinary),t=e.getGlobalProperty(`POINTS_LENGTH`);if(!Number.isFinite(t))throw new Error(`POINTS_LENGTH must be defined`);e.featuresLength=t,r.featuresLength=t,r.pointsLength=t,r.pointCount=t,r.rtcCenter=e.getGlobalProperty(`RTC_CENTER`,ke.FLOAT,3);return{featureTable:e,batchTable:UI(r,e)}}function OI(r,e,t){if(r.attributes=r.attributes||{positions:null,colors:null,normals:null,batchIds:null},!r.attributes.positions){if(e.hasProperty(`POSITION`))r.attributes.positions=e.getPropertyArray(`POSITION`,ke.FLOAT,3);else if(e.hasProperty(`POSITION_QUANTIZED`)){let i=e.getPropertyArray(`POSITION_QUANTIZED`,ke.UNSIGNED_SHORT,3);if(r.isQuantized=!0,r.quantizedRange=65535,r.quantizedVolumeScale=e.getGlobalProperty(`QUANTIZED_VOLUME_SCALE`,ke.FLOAT,3),!r.quantizedVolumeScale)throw new Error(`QUANTIZED_VOLUME_SCALE must be defined for quantized positions.`);if(r.quantizedVolumeOffset=e.getGlobalProperty(`QUANTIZED_VOLUME_OFFSET`,ke.FLOAT,3),!r.quantizedVolumeOffset)throw new Error(`QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.`);r.attributes.positions=U2(r,i,t)}}if(!r.attributes.positions)throw new Error(`Either POSITION or POSITION_QUANTIZED must be defined.`)}function DI(r,e,t){if(r.attributes=r.attributes||{positions:null,colors:null,normals:null,batchIds:null},!r.attributes.colors){let i=null;e.hasProperty(`RGBA`)?(i=e.getPropertyArray(`RGBA`,ke.UNSIGNED_BYTE,4),r.isTranslucent=!0):e.hasProperty(`RGB`)?i=e.getPropertyArray(`RGB`,ke.UNSIGNED_BYTE,3):e.hasProperty(`RGB565`)&&(i=e.getPropertyArray(`RGB565`,ke.UNSIGNED_SHORT,1),r.isRGB565=!0),r.attributes.colors=Jl(r,i,t)}e.hasProperty(`CONSTANT_RGBA`)&&(r.constantRGBA=e.getGlobalProperty(`CONSTANT_RGBA`,ke.UNSIGNED_BYTE,4))}function BI(r,e){if(r.attributes=r.attributes||{positions:null,colors:null,normals:null,batchIds:null},!r.attributes.normals){let t=null;e.hasProperty(`NORMAL`)?t=e.getPropertyArray(`NORMAL`,ke.FLOAT,3):e.hasProperty(`NORMAL_OCT16P`)&&(t=e.getPropertyArray(`NORMAL_OCT16P`,ke.UNSIGNED_BYTE,2),r.isOctEncoded16P=!0),r.attributes.normals=B2(r,t)}}function UI(r,e){let t=null;if(!r.batchIds&&e.hasProperty(`BATCH_ID`)&&(r.batchIds=e.getPropertyArray(`BATCH_ID`,ke.UNSIGNED_SHORT,1),r.batchIds)){let i=e.getGlobalProperty(`BATCH_LENGTH`);if(!i)throw new Error(`Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.`);let{batchTableJson:o,batchTableBinary:a}=r;t=new ro(o,a,i)}return t}async function GI(r$40,e,t,i,o){let a,d,m,b=r$40.batchTableJson&&r$40.batchTableJson.extensions&&r$40.batchTableJson.extensions[`3DTILES_draco_point_compression`];b&&(m=b.properties);let y=e.getExtension(`3DTILES_draco_point_compression`);if(y){d=y.properties;let w=y.byteOffset,S=y.byteLength;if(!d||!Number.isFinite(w)||!S)throw new Error(`Draco properties, byteOffset, and byteLength must be defined`);a=(r$40.featureTableBinary||[]).slice(w,w+S),r$40.hasPositions=Number.isFinite(d.POSITION),r$40.hasColors=Number.isFinite(d.RGB)||Number.isFinite(d.RGBA),r$40.hasNormals=Number.isFinite(d.NORMAL),r$40.hasBatchIds=Number.isFinite(d.BATCH_ID),r$40.isTranslucent=Number.isFinite(d.RGBA)}if(!a)return!0;return await jI(r$40,{buffer:a,properties:r(r({},d),m),featureTableProperties:d,batchTableProperties:m,dequantizeInShader:!1},i,o)}async function jI(r$41,e,t,i){if(!i)return;let o=s(r({},t),{draco:s(r({},t?.draco),{extraAttributes:e.batchTableProperties||{}})});delete o[`3d-tiles`];let a=await Nu$1(e.buffer,is,o,i),d=a.attributes.POSITION&&a.attributes.POSITION.value,m=a.attributes.COLOR_0&&a.attributes.COLOR_0.value,b=a.attributes.NORMAL&&a.attributes.NORMAL.value,y=a.attributes.BATCH_ID&&a.attributes.BATCH_ID.value,_=d&&a.attributes.POSITION.value.quantization,w=b&&a.attributes.NORMAL.value.quantization;if(_){let M=a.POSITION.data.quantization,k=M.range;r$41.quantizedVolumeScale=new Z(k,k,k),r$41.quantizedVolumeOffset=new Z(M.minValues),r$41.quantizedRange=(1<<M.quantizationBits)-1,r$41.isQuantizedDraco=!0}w&&(r$41.octEncodedRange=(1<<a.NORMAL.data.quantization.quantizationBits)-1,r$41.isOctEncodedDraco=!0);let S={};if(e.batchTableProperties)for(let M of Object.keys(e.batchTableProperties))a.attributes[M]&&a.attributes[M].value&&(S[M.toLowerCase()]=a.attributes[M].value);r$41.attributes=r({positions:d,colors:Jl(r$41,m,void 0),normals:b,batchIds:y},S)}var fa={URI:0,EMBEDDED:1};function ha(r,e,t,i){r.rotateYtoZ=!0;let o=(r.byteOffset||0)+(r.byteLength||0)-t;if(o===0)throw new Error(`glTF byte length must be greater than 0.`);return r.gltfUpAxis=i?.[`3d-tiles`]&&i[`3d-tiles`].assetGltfUpAxis?i[`3d-tiles`].assetGltfUpAxis:`Y`,r.gltfArrayBuffer=Ju(e,t,o),r.gltfByteOffset=0,r.gltfByteLength=o,t%4===0||console.warn(`${r.type}: embedded glb is not aligned to a 4-byte boundary.`),(r.byteOffset||0)+(r.byteLength||0)}async function da(r,e,t,i){let o=t?.[`3d-tiles`]||{};if(VI(r,e,t),o.loadGLTF){if(!i)return;if(r.gltfUrl){let{fetch:a}=i;r.gltfArrayBuffer=await(await a(r.gltfUrl,t?.core)).arrayBuffer(),r.gltfByteOffset=0}if(r.gltfArrayBuffer)r.gltf=$n(await Nu$1(r.gltfArrayBuffer,an,t,i)),r.gpuMemoryUsageInBytes=es(r.gltf),delete r.gltfArrayBuffer,delete r.gltfByteOffset,delete r.gltfByteLength}}function VI(r,e,t){switch(e){case fa.URI:if(r.gltfArrayBuffer){let i=new Uint8Array(r.gltfArrayBuffer,r.gltfByteOffset);r.gltfUrl=new TextDecoder().decode(i).replace(/[\s\0]+$/,``)}delete r.gltfArrayBuffer,delete r.gltfByteOffset,delete r.gltfByteLength;break;case fa.EMBEDDED:break;default:throw new Error(`b3dm: Illegal glTF format field`)}}async function j2(r,e,t,i,o){t=zI(r,e,t,i,o),await da(r,fa.EMBEDDED,i,o);let a=r?.gltf?.extensions;return a&&a.CESIUM_RTC&&(r.rtcCenter=a.CESIUM_RTC.center),t}function zI(r,e,t,i,o){t=Pn(r,e,t),t=io(r,e,t),t=oo(r,e,t,i),t=ha(r,e,t,i);return r.rtcCenter=new Rn(r.featureTableJson,r.featureTableBinary).getGlobalProperty(`RTC_CENTER`,ke.FLOAT,3),t}async function V2(r,e,t,i,o){return t=HI(r,e,t,i,o),await da(r,r.gltfFormat||0,i,o),t}function HI(r,e,t,i,o){if(t=Pn(r,e,t),r.version!==1)throw new Error(`Instanced 3D Model version ${r.version} is not supported`);t=io(r,e,t);if(r.gltfFormat=new DataView(e).getUint32(t,!0),t+=4,t=oo(r,e,t,i),t=ha(r,e,t,i),!r?.header?.featureTableJsonByteLength||r.header.featureTableJsonByteLength===0)throw new Error(`i3dm parser: featureTableJsonByteLength is zero.`);let d=new Rn(r.featureTableJson,r.featureTableBinary),m=d.getGlobalProperty(`INSTANCES_LENGTH`);if(d.featuresLength=m,!Number.isFinite(m))throw new Error(`i3dm parser: INSTANCES_LENGTH must be defined`);r.eastNorthUp=d.getGlobalProperty(`EAST_NORTH_UP`),r.rtcCenter=d.getGlobalProperty(`RTC_CENTER`,ke.FLOAT,3);return qI(r,d,new ro(r.batchTableJson,r.batchTableBinary,m),m),t}function qI(r,e,t,i){let o=new Array(i),a=new Z;new Z;new Z;new Z;let y=new tt,_=new hr$1,w=new Z,S={},M=new U,k=[],O=[],Q=[],V=[];for(let G=0;G<i;G++){let J;if(e.hasProperty(`POSITION`))J=e.getProperty(`POSITION`,ke.FLOAT,3,G,a);else if(e.hasProperty(`POSITION_QUANTIZED`)){J=e.getProperty(`POSITION_QUANTIZED`,ke.UNSIGNED_SHORT,3,G,a);let B=e.getGlobalProperty(`QUANTIZED_VOLUME_OFFSET`,ke.FLOAT,3);if(!B)throw new Error(`i3dm parser: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.`);let ue=e.getGlobalProperty(`QUANTIZED_VOLUME_SCALE`,ke.FLOAT,3);if(!ue)throw new Error(`i3dm parser: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.`);let we=65535;for(let Ee=0;Ee<3;Ee++)J[Ee]=J[Ee]/we*ue[Ee]+B[Ee]}if(!J)throw new Error(`i3dm: POSITION or POSITION_QUANTIZED must be defined for each instance.`);a.copy(J),S.translation=a,r.normalUp=e.getProperty(`NORMAL_UP`,ke.FLOAT,3,G,k),r.normalRight=e.getProperty(`NORMAL_RIGHT`,ke.FLOAT,3,G,O);if(r.normalUp){if(!r.normalRight)throw new Error(`i3dm: Custom orientation requires both NORMAL_UP and NORMAL_RIGHT.`);r.hasCustomOrientation=!0}else{if(r.octNormalUp=e.getProperty(`NORMAL_UP_OCT32P`,ke.UNSIGNED_SHORT,2,G,k),r.octNormalRight=e.getProperty(`NORMAL_RIGHT_OCT32P`,ke.UNSIGNED_SHORT,2,G,O),r.octNormalUp)throw r.octNormalRight?new Error(`i3dm: oct-encoded orientation not implemented`):new Error(`i3dm: oct-encoded orientation requires NORMAL_UP_OCT32P and NORMAL_RIGHT_OCT32P`);r.eastNorthUp?(Ue.WGS84.eastNorthUpToFixedFrame(a,M),M.getRotationMatrix3(y)):y.identity()}_.fromMatrix3(y),S.rotation=_,w.set(1,1,1);let te=e.getProperty(`SCALE`,ke.FLOAT,1,G,Q);Number.isFinite(te)&&w.multiplyByScalar(te);let re=e.getProperty(`SCALE_NON_UNIFORM`,ke.FLOAT,3,G,k);re&&w.scale(re),S.scale=w;let le=e.getProperty(`BATCH_ID`,ke.UNSIGNED_SHORT,1,G,V);le===void 0&&(le=G);let Y=new U().fromQuaternion(S.rotation);M.identity(),M.translate(S.translation),M.multiplyRight(Y),M.scale(S.scale);o[G]={modelMatrix:M.clone(),batchId:le}}r.instances=o}async function z2(r,e,t,i,o,a){t=Pn(r,e,t);for(r.tilesLength=new DataView(e).getUint32(t,!0),t+=4,r.tiles=[];r.tiles.length<r.tilesLength&&(r.byteLength||0)-t>12;){let m={shape:`tile3d`};r.tiles.push(m),t=await a(e,t,i,o,m)}return t}async function H2(r,e,t,i){if(r.rotateYtoZ=!0,r.gltfUpAxis=t?.[`3d-tiles`]?.assetGltfUpAxis?t[`3d-tiles`].assetGltfUpAxis:`Y`,t?.[`3d-tiles`]?.loadGLTF){if(!i)return e.byteLength;r.gltf=$n(await Nu$1(e,an,t,i)),r.gpuMemoryUsageInBytes=es(r.gltf)}else r.gltfArrayBuffer=e;return e.byteLength}async function Zl(r,e=0,t,i,o={shape:`tile3d`}){switch(o.byteOffset=e,o.type=I2(r,e),o.type){case ri.COMPOSITE:return await z2(o,r,e,t,i,Zl);case ri.BATCHED_3D_MODEL:return await j2(o,r,e,t,i);case ri.GLTF:return await H2(o,r,t,i);case ri.INSTANCED_3D_MODEL:return await V2(o,r,e,t,i);case ri.POINT_CLOUD:return await G2(o,r,e,t,i);default:throw new Error(`3DTileLoader: unknown type ${o.type}`)}}async function $l(r,e,t){if(new Uint32Array(r.slice(0,4))[0]!==1952609651)throw new Error(`Wrong subtree file magic number`);if(new Uint32Array(r.slice(4,8))[0]!==1)throw new Error(`Wrong subtree file verson, must be 1`);let a=q2(r.slice(8,16)),d=new Uint8Array(r,24,a),b=new TextDecoder(`utf8`).decode(d),y=JSON.parse(b),_=q2(r.slice(16,24)),w=new ArrayBuffer(0);if(_&&(w=r.slice(24+a)),await pa(y,y.tileAvailability,w,t),Array.isArray(y.contentAvailability))for(let S of y.contentAvailability)await pa(y,S,w,t);else await pa(y,y.contentAvailability,w,t);return await pa(y,y.childSubtreeAvailability,w,t),y}async function pa(r,e,t,i){let o=Number.isFinite(e.bitstream)?e.bitstream:e.bufferView;if(typeof o!=`number`)return;let a=r.bufferViews[o],d=r.buffers[a.buffer];if(!i?.baseUrl)throw new Error(`Url is not provided`);if(!i.fetch)throw new Error(`fetch is not provided`);if(d.uri){let b=`${i?.baseUrl||``}/${d.uri}`,_=await(await i.fetch(b)).arrayBuffer();e.explicitBitstream=new Uint8Array(_,a.byteOffset,a.byteLength);return}let m=r.buffers.slice(0,a.buffer).reduce((b,y)=>b+y.byteLength,0);e.explicitBitstream=new Uint8Array(t.slice(m,m+d.byteLength),a.byteOffset,a.byteLength)}function q2(r){let e=new DataView(r);return e.getUint32(0,!0)+2**32*e.getUint32(4,!0)}var ma={dataType:null,batchType:null,id:`3d-tiles-subtree`,name:`3D Tiles Subtree`,module:`3d-tiles`,version:la,extensions:[`subtree`],mimeTypes:[`application/octet-stream`],tests:[`subtree`],parse:$l,options:{}};var Sr=null;try{Sr=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch{}function it(r,e,t){this.low=r|0,this.high=e|0,this.unsigned=!!t}it.prototype.__isLong__;Object.defineProperty(it.prototype,"__isLong__",{value:!0});function jt(r){return(r&&r.__isLong__)===!0}function W2(r){var e=Math.clz32(r&-r);return r?31-e:e}it.isLong=jt;var Q2={};var K2={};function ni(r,e){var t,i,o;return e?(r>>>=0,(o=0<=r&&r<256)&&(i=K2[r],i)?i:(t=Ye(r,0,!0),o&&(K2[r]=t),t)):(r|=0,(o=-128<=r&&r<128)&&(i=Q2[r],i)?i:(t=Ye(r,r<0?-1:0,!1),o&&(Q2[r]=t),t))}it.fromInt=ni;function Cr(r,e){if(isNaN(r))return e?ln:Br;if(e){if(r<0)return ln;if(r>=Z2)return t1}else{if(r<=-Y2)return ir;if(r+1>=Y2)return e1}return r<0?Cr(-r,e).neg():Ye(r%Ao|0,r/Ao|0,e)}it.fromNumber=Cr;function Ye(r,e,t){return new it(r,e,t)}it.fromBits=Ye;var ga=Math.pow;function tu(r,e,t){if(r.length===0)throw Error(`empty string`);if(typeof e==`number`?(t=e,e=!1):e=!!e,r===`NaN`||r===`Infinity`||r===`+Infinity`||r===`-Infinity`)return e?ln:Br;if(t=t||10,t<2||36<t)throw RangeError(`radix`);var i;if((i=r.indexOf(`-`))>0)throw Error(`interior hyphen`);if(i===0)return tu(r.substring(1),e,t).neg();for(var o=Cr(ga(t,8)),a=Br,d=0;d<r.length;d+=8){var m=Math.min(8,r.length-d),b=parseInt(r.substring(d,d+m),t);if(m<8){var y=Cr(ga(t,m));a=a.mul(y).add(Cr(b))}else a=a.mul(o),a=a.add(Cr(b))}return a.unsigned=e,a}it.fromString=tu;function Ir(r,e){return typeof r==`number`?Cr(r,e):typeof r==`string`?tu(r,e):Ye(r.low,r.high,typeof e==`boolean`?e:r.unsigned)}it.fromValue=Ir;var X2=65536;var WI=1<<24;var Ao=X2*X2;var Z2=Ao*Ao;var Y2=Z2/2;var J2=ni(WI);var Br=ni(0);it.ZERO=Br;var ln=ni(0,!0);it.UZERO=ln;var so=ni(1);it.ONE=so;var $2=ni(1,!0);it.UONE=$2;var eu=ni(-1);it.NEG_ONE=eu;var e1=Ye(-1,2147483647,!1);it.MAX_VALUE=e1;var t1=Ye(-1,-1,!0);it.MAX_UNSIGNED_VALUE=t1;var ir=Ye(0,-2147483648,!1);it.MIN_VALUE=ir;var ge=it.prototype;ge.toInt=function(){return this.unsigned?this.low>>>0:this.low};ge.toNumber=function(){return this.unsigned?(this.high>>>0)*Ao+(this.low>>>0):this.high*Ao+(this.low>>>0)};ge.toString=function(e){if(e=e||10,e<2||36<e)throw RangeError(`radix`);if(this.isZero())return`0`;if(this.isNegative())if(this.eq(ir)){var t=Cr(e),i=this.div(t),o=i.mul(t).sub(this);return i.toString(e)+o.toInt().toString(e)}else return`-`+this.neg().toString(e);for(var a=Cr(ga(e,6),this.unsigned),d=this,m=``;;){var b=d.div(a),_=(d.sub(b.mul(a)).toInt()>>>0).toString(e);if(d=b,d.isZero())return _+m;for(;_.length<6;)_=`0`+_;m=``+_+m}};ge.getHighBits=function(){return this.high};ge.getHighBitsUnsigned=function(){return this.high>>>0};ge.getLowBits=function(){return this.low};ge.getLowBitsUnsigned=function(){return this.low>>>0};ge.getNumBitsAbs=function(){if(this.isNegative())return this.eq(ir)?64:this.neg().getNumBitsAbs();for(var e=this.high!=0?this.high:this.low,t=31;t>0&&(e&1<<t)==0;t--);return this.high!=0?t+33:t+1};ge.isSafeInteger=function(){var e=this.high>>21;return e?this.unsigned?!1:e===-1&&!(this.low===0&&this.high===-2097152):!0};ge.isZero=function(){return this.high===0&&this.low===0};ge.eqz=ge.isZero;ge.isNegative=function(){return!this.unsigned&&this.high<0};ge.isPositive=function(){return this.unsigned||this.high>=0};ge.isOdd=function(){return(this.low&1)===1};ge.isEven=function(){return(this.low&1)===0};ge.equals=function(e){return jt(e)||(e=Ir(e)),this.unsigned!==e.unsigned&&this.high>>>31===1&&e.high>>>31===1?!1:this.high===e.high&&this.low===e.low};ge.eq=ge.equals;ge.notEquals=function(e){return!this.eq(e)};ge.neq=ge.notEquals;ge.ne=ge.notEquals;ge.lessThan=function(e){return this.comp(e)<0};ge.lt=ge.lessThan;ge.lessThanOrEqual=function(e){return this.comp(e)<=0};ge.lte=ge.lessThanOrEqual;ge.le=ge.lessThanOrEqual;ge.greaterThan=function(e){return this.comp(e)>0};ge.gt=ge.greaterThan;ge.greaterThanOrEqual=function(e){return this.comp(e)>=0};ge.gte=ge.greaterThanOrEqual;ge.ge=ge.greaterThanOrEqual;ge.compare=function(e){if(jt(e)||(e=Ir(e)),this.eq(e))return 0;var t=this.isNegative(),i=e.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1};ge.comp=ge.compare;ge.negate=function(){return!this.unsigned&&this.eq(ir)?ir:this.not().add(so)};ge.neg=ge.negate;ge.add=function(e){jt(e)||(e=Ir(e));var t=this.high>>>16,i=this.high&65535,o=this.low>>>16,a=this.low&65535,d=e.high>>>16,m=e.high&65535,b=e.low>>>16,y=e.low&65535,_=0,w=0,S=0,M=0;return M+=a+y,S+=M>>>16,M&=65535,S+=o+b,w+=S>>>16,S&=65535,w+=i+m,_+=w>>>16,w&=65535,_+=t+d,_&=65535,Ye(S<<16|M,_<<16|w,this.unsigned)};ge.subtract=function(e){return jt(e)||(e=Ir(e)),this.add(e.neg())};ge.sub=ge.subtract;ge.multiply=function(e){if(this.isZero())return this;if(jt(e)||(e=Ir(e)),Sr)return Ye(Sr.mul(this.low,this.high,e.low,e.high),Sr.get_high(),this.unsigned);if(e.isZero())return this.unsigned?ln:Br;if(this.eq(ir))return e.isOdd()?ir:Br;if(e.eq(ir))return this.isOdd()?ir:Br;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(J2)&&e.lt(J2))return Cr(this.toNumber()*e.toNumber(),this.unsigned);var i=this.high>>>16,o=this.high&65535,a=this.low>>>16,d=this.low&65535,m=e.high>>>16,b=e.high&65535,y=e.low>>>16,_=e.low&65535,w=0,S=0,M=0,k=0;return k+=d*_,M+=k>>>16,k&=65535,M+=a*_,S+=M>>>16,M&=65535,M+=d*y,S+=M>>>16,M&=65535,S+=o*_,w+=S>>>16,S&=65535,S+=a*y,w+=S>>>16,S&=65535,S+=d*b,w+=S>>>16,S&=65535,w+=i*_+o*y+a*b+d*m,w&=65535,Ye(M<<16|k,w<<16|S,this.unsigned)};ge.mul=ge.multiply;ge.divide=function(e){if(jt(e)||(e=Ir(e)),e.isZero())throw Error(`division by zero`);if(Sr){if(!this.unsigned&&this.high===-2147483648&&e.low===-1&&e.high===-1)return this;return Ye((this.unsigned?Sr.div_u:Sr.div_s)(this.low,this.high,e.low,e.high),Sr.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?ln:Br;var i,o,a;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return ln;if(e.gt(this.shru(1)))return $2;a=ln}else{if(this.eq(ir)){if(e.eq(so)||e.eq(eu))return ir;if(e.eq(ir))return so;return i=this.shr(1).div(e).shl(1),i.eq(Br)?e.isNegative()?so:eu:(o=this.sub(e.mul(i)),a=i.add(o.div(e)),a)}else if(e.eq(ir))return this.unsigned?ln:Br;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();a=Br}for(o=this;o.gte(e);){i=Math.max(1,Math.floor(o.toNumber()/e.toNumber()));for(var m=Math.ceil(Math.log(i)/Math.LN2),b=m<=48?1:ga(2,m-48),y=Cr(i),_=y.mul(e);_.isNegative()||_.gt(o);)i-=b,y=Cr(i,this.unsigned),_=y.mul(e);y.isZero()&&(y=so),a=a.add(y),o=o.sub(_)}return a};ge.div=ge.divide;ge.modulo=function(e){if(jt(e)||(e=Ir(e)),Sr)return Ye((this.unsigned?Sr.rem_u:Sr.rem_s)(this.low,this.high,e.low,e.high),Sr.get_high(),this.unsigned);return this.sub(this.div(e).mul(e))};ge.mod=ge.modulo;ge.rem=ge.modulo;ge.not=function(){return Ye(~this.low,~this.high,this.unsigned)};ge.countLeadingZeros=function(){return this.high?Math.clz32(this.high):Math.clz32(this.low)+32};ge.clz=ge.countLeadingZeros;ge.countTrailingZeros=function(){return this.low?W2(this.low):W2(this.high)+32};ge.ctz=ge.countTrailingZeros;ge.and=function(e){return jt(e)||(e=Ir(e)),Ye(this.low&e.low,this.high&e.high,this.unsigned)};ge.or=function(e){return jt(e)||(e=Ir(e)),Ye(this.low|e.low,this.high|e.high,this.unsigned)};ge.xor=function(e){return jt(e)||(e=Ir(e)),Ye(this.low^e.low,this.high^e.high,this.unsigned)};ge.shiftLeft=function(e){return jt(e)&&(e=e.toInt()),(e&=63)===0?this:e<32?Ye(this.low<<e,this.high<<e|this.low>>>32-e,this.unsigned):Ye(0,this.low<<e-32,this.unsigned)};ge.shl=ge.shiftLeft;ge.shiftRight=function(e){return jt(e)&&(e=e.toInt()),(e&=63)===0?this:e<32?Ye(this.low>>>e|this.high<<32-e,this.high>>e,this.unsigned):Ye(this.high>>e-32,this.high>=0?0:-1,this.unsigned)};ge.shr=ge.shiftRight;ge.shiftRightUnsigned=function(e){return jt(e)&&(e=e.toInt()),(e&=63)===0?this:e<32?Ye(this.low>>>e|this.high<<32-e,this.high>>>e,this.unsigned):e===32?Ye(this.high,0,this.unsigned):Ye(this.high>>>e-32,0,this.unsigned)};ge.shru=ge.shiftRightUnsigned;ge.shr_u=ge.shiftRightUnsigned;ge.rotateLeft=function(e){var t;return jt(e)&&(e=e.toInt()),(e&=63)===0?this:e===32?Ye(this.high,this.low,this.unsigned):e<32?(t=32-e,Ye(this.low<<e|this.high>>>t,this.high<<e|this.low>>>t,this.unsigned)):(e-=32,t=32-e,Ye(this.high<<e|this.low>>>t,this.low<<e|this.high>>>t,this.unsigned))};ge.rotl=ge.rotateLeft;ge.rotateRight=function(e){var t;return jt(e)&&(e=e.toInt()),(e&=63)===0?this:e===32?Ye(this.high,this.low,this.unsigned):e<32?(t=32-e,Ye(this.high<<t|this.low>>>e,this.low<<t|this.high>>>e,this.unsigned)):(e-=32,t=32-e,Ye(this.low<<t|this.high>>>e,this.high<<t|this.low>>>e,this.unsigned))};ge.rotr=ge.rotateRight;ge.toSigned=function(){return this.unsigned?Ye(this.low,this.high,!1):this};ge.toUnsigned=function(){return this.unsigned?this:Ye(this.low,this.high,!0)};ge.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()};ge.toBytesLE=function(){var e=this.high,t=this.low;return[t&255,t>>>8&255,t>>>16&255,t>>>24,e&255,e>>>8&255,e>>>16&255,e>>>24]};ge.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,e&255,t>>>24,t>>>16&255,t>>>8&255,t&255]};it.fromBytes=function(e,t,i){return i?it.fromBytesLE(e,t):it.fromBytesBE(e,t)};it.fromBytesLE=function(e,t){return new it(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)};it.fromBytesBE=function(e,t){return new it(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)};typeof BigInt==`function`&&(it.fromBigInt=function(e,t){return Ye(Number(BigInt.asIntN(32,e)),Number(BigInt.asIntN(32,e>>BigInt(32))),t)},it.fromValue=function(e,t){return typeof e==`bigint`?it.fromBigInt(e,t):Ir(e,t)},ge.toBigInt=function(){var e=BigInt(this.low>>>0);return BigInt(this.unsigned?this.high>>>0:this.high)<<BigInt(32)|e});var ao=it;var QI=16;function us(r){r===`X`&&(r=``);let e=r.padEnd(QI,`0`);return ao.fromString(e,!0,16)}function ru(r){if(r.isZero())return`X`;let e=r.countTrailingZeros(),t=e%4;e=(e-t)/4;let i=e;e*=4;let a=r.shiftRightUnsigned(e).toString(16).replace(/0+$/,``);return Array(17-i-a.length).join(`0`)+a}function nu(r,e){let t=KI(r).shiftRightUnsigned(2);return r.add(ao.fromNumber(2*e+1-4).multiply(t))}function KI(r){return r.and(r.not().add(1))}var XI=3;var JI=61;var r1=180/Math.PI;function i1(r){if(r.length===0)throw new Error(`Invalid Hilbert quad key ${r}`);let e=r.split(`/`),t=parseInt(e[0],10),i=e[1],o=i.length,a=0,d=[0,0];for(let m=o-1;m>=0;m--){a=o-m;let b=i[m],y=0,_=0;b===`1`?_=1:b===`2`?(y=1,_=1):b===`3`&&(y=1);let w=Math.pow(2,a-1);ZI(w,d,y,_),d[0]+=w*y,d[1]+=w*_}if(t%2===1){let m=d[0];d[0]=d[1],d[1]=m}return{face:t,ij:d,level:a}}function o1(r){if(r.isZero())return``;let e=r.toString(2);for(;e.length<XI+JI;)e=`0`+e;let t=e.lastIndexOf(`1`),i=e.substring(0,3),o=e.substring(3,t),a=o.length/2,d=ao.fromString(i,!0,2).toString(10),m=``;if(a!==0)for(m=ao.fromString(o,!0,2).toString(4);m.length<a;)m=`0`+m;return`${d}/${m}`}function iu(r,e,t){let i=1<<e;return[(r[0]+t[0])/i,(r[1]+t[1])/i]}function n1(r){return r>=.5?1/3*(4*r*r-1):1/3*(1-4*(1-r)*(1-r))}function ou(r){return[n1(r[0]),n1(r[1])]}function su(r,[e,t]){switch(r){case 0:return[1,e,t];case 1:return[-e,1,t];case 2:return[-e,-t,1];case 3:return[-1,-t,-e];case 4:return[t,-1,-e];case 5:return[t,e,-1];default:throw new Error(`Invalid face`)}}function Au([r,e,t]){let i=Math.atan2(t,Math.sqrt(r*r+e*e));return[Math.atan2(e,r)*r1,i*r1]}function ZI(r,e,t,i){if(i===0){t===1&&(e[0]=r-1-e[0],e[1]=r-1-e[1]);let o=e[0];e[0]=e[1],e[1]=o}}function s1(r){let t=ou(iu(r.ij,r.level,[.5,.5]));return Au(su(r.face,t))}var $I=100;function au(r){let{face:e,ij:t,level:i}=r,o=[[0,0],[0,1],[1,1],[1,0],[0,0]],a=Math.max(1,Math.ceil($I*Math.pow(2,-i))),d=new Float64Array(4*a*2+2),m=0,b=0;for(let y=0;y<4;y++){let _=o[y].slice(0),w=o[y+1],S=(w[0]-_[0])/a,M=(w[1]-_[1])/a;for(let k=0;k<a;k++){_[0]+=S,_[1]+=M;let G=Au(su(e,ou(iu(t,i,_))));Math.abs(G[1])>89.999&&(G[0]=b);let J=G[0]-b;G[0]+=J>180?-360:J<-180?360:0,d[m++]=G[0],d[m++]=G[1],b=G[0]}}return d[m++]=d[0],d[m++]=d[1],d}function co(r){return i1(eM(r))}function eM(r){if(r.indexOf(`/`)>0)return r;return o1(us(r))}function cu(r){return s1(co(r))}function a1(r){let e;if(r.face===2||r.face===5){let t=null,i=0;for(let o=0;o<4;o++){let m=au(co(`${r.face}/${o}`));(typeof t>`u`||t===null)&&(t=new Float64Array(4*m.length)),t.set(m,i),i+=m.length}e=A1(t)}else e=A1(au(r));return e}function A1(r){if(r.length%2!==0)throw new Error(`Invalid corners`);let e=[],t=[];for(let i=0;i<r.length;i+=2)e.push(r[i]),t.push(r[i+1]);return e.sort((i,o)=>i-o),t.sort((i,o)=>i-o),{west:e[0],east:e[e.length-1],north:t[t.length-1],south:t[0]}}function lu(r,e){let t=e?.minimumHeight||0,i=e?.maximumHeight||0,a=a1(co(r)),d=a.west,m=a.south,b=a.east,y=a.north,_=[];return _.push(new Z(d,y,t)),_.push(new Z(b,y,t)),_.push(new Z(b,m,t)),_.push(new Z(d,m,t)),_.push(new Z(d,y,i)),_.push(new Z(b,y,i)),_.push(new Z(b,m,i)),_.push(new Z(d,m,i)),_}function ba(r){let e=r.token,t={minimumHeight:r.minimumHeight,maximumHeight:r.maximumHeight},i=lu(e,t),o=cu(e),a=o[0],d=o[1],m=Ue.WGS84.cartographicToCartesian([a,d,t.maximumHeight]),b=new Z(m[0],m[1],m[2]);i.push(b);let y=Jo(i);return[...y.center,...y.halfAxes]}var nM={QUADTREE:4,OCTREE:8};function iM(r$42,e,t){if(r$42?.box){let a=ru(nu(us(r$42.s2VolumeInfo.token),e)),d=r({},r$42.s2VolumeInfo);if(d.token=a,t===`OCTREE`){let y=r$42.s2VolumeInfo,_=y.maximumHeight-y.minimumHeight,w=_/2,S=y.minimumHeight+_/2;y.minimumHeight=S-w,y.maximumHeight=S+w}return{box:ba(d),s2VolumeInfo:d}}}async function fu(r){let{subtree:e,subtreeData:t={level:0,x:0,y:0,z:0},parentData:i={mortonIndex:0,localLevel:-1,localX:0,localY:0,localZ:0},childIndex:o=0,implicitOptions:a,loaderOptions:d,s2VolumeBox:m}=r,{subdivisionScheme:b,subtreeLevels:y,maximumLevel:_,contentUrlTemplate:w,subtreesUriTemplate:S,basePath:M}=a,k={children:[],lodMetricValue:0,contentUrl:``};if(typeof _!=`number`||!Number.isFinite(_))return ys.once(`Missing 'maximumLevel' or 'availableLevels' property. The subtree ${w} won't be loaded...`),k;let O=i.localLevel+1,Q=t.level+O;if(Q>_)return k;let V=nM[b],G=Math.log2(V),J=o&1,$=o>>1&1,te=o>>2&1,re=ii(i.localX,J,1),le=ii(i.localY,$,1),Y=ii(i.localZ,te,1),z=ii(t.x,re,O),B=ii(t.y,le,O),ue=ii(t.z,Y,O),we=ii(i.mortonIndex,o,G),Ee=O===y&&uu(e.childSubtreeAvailability,we),_e,Ne,Fe,Oe;if(Ee)_e=await ge$2(Ta(`${M}/${S}`,Q,z,B,ue),ma,d),Oe=0,Ne={level:Q,x:z,y:B,z:ue},Fe={mortonIndex:0,localLevel:0,localX:0,localY:0,localZ:0};else _e=e,Oe=(V**O-1)/(V-1)+we,Ne=t,Fe={mortonIndex:we,localLevel:O,localX:re,localY:le,localZ:Y};if(!uu(_e.tileAvailability,Oe))return k;uu(_e.contentAvailability,Oe)&&(k.contentUrl=Ta(w,Q,z,B,ue));for(let je=0;je<V;je++){let qe=iM(m,je,b),vt=await fu({subtree:_e,subtreeData:Ne,parentData:Fe,childIndex:je,implicitOptions:a,loaderOptions:d,s2VolumeBox:qe});(vt.contentUrl||vt.children.length)&&k.children.push(vt)}return k.contentUrl||k.children.length?oM(k,{level:Q,x:z,y:B,z:ue},a,m):k}function uu(r,e){let t;return Array.isArray(r)?(t=r[0],r.length>1&&ys.once(`Not supported extension "3DTILES_multiple_contents" has been detected`)):t=r,`constant`in t?!!t.constant:t.explicitBitstream?aM(e,t.explicitBitstream):!1}function oM(r,e,t,i){let{basePath:o,refine:a,getRefine:d,lodMetricType:m,getTileType:b,rootLodMetricValue:y,rootBoundingVolume:_}=t,w=r.contentUrl&&r.contentUrl.replace(`${o}/`,``),S=y/2**e.level,k=sM(i?.box?{box:i.box}:_,e,t.subdivisionScheme);return{children:r.children,contentUrl:r.contentUrl,content:{uri:w},id:r.contentUrl,refine:d(a),type:b(r),lodMetricType:m,lodMetricValue:S,geometricError:S,transform:r.transform,boundingVolume:k}}function sM(r,e,t){if(r.region){let{level:i,x:o,y:a,z:d}=e,[m,b,y,_,w,S]=r.region,M=2**i,k=(y-m)/M,[O,Q]=[m+k*o,m+k*(o+1)],V=(_-b)/M,[G,J]=[b+V*a,b+V*(a+1)],$,te;if(t===`OCTREE`){let re=(S-w)/M;[$,te]=[w+re*d,w+re*(d+1)]}else[$,te]=[w,S];return{region:[O,G,Q,J,$,te]}}if(r.box)return r;throw new Error(`Unsupported bounding volume type ${JSON.stringify(r)}`)}function ii(r,e,t){return(r<<t)+e}function Ta(r,e,t,i,o){let a=AM({level:e,x:t,y:i,z:o});return r.replace(/{level}|{x}|{y}|{z}/gi,d=>a[d])}function AM(r){let e={};for(let t in r)e[`{${t}}`]=r[t];return e}function aM(r,e){let t=Math.floor(r/8),i=r%8;return(e[t]>>i&1)===1}function du(r,e=``){if(!e)return Dr.EMPTY;let i=e.split(`?`)[0].split(`.`).pop();switch(i){case`pnts`:return Dr.POINTCLOUD;case`i3dm`:case`b3dm`:case`glb`:case`gltf`:return Dr.SCENEGRAPH;default:return i||Dr.EMPTY}}function pu(r){switch(r){case`REPLACE`:case`replace`:return Xt.REPLACE;case`ADD`:case`add`:return Xt.ADD;default:return r}}function hu(r,e){if(/^[a-z][0-9a-z+.-]*:/i.test(e)){let i=new URL(r,`${e}/`);return decodeURI(i.toString())}else if(r.startsWith(`/`))return r;return pa$1.resolve(e,r)}function c1(r$43,e){if(!r$43)return null;let t;if(r$43.content){let o=r$43.content.uri||r$43.content?.url;typeof o<`u`&&(t=hu(o,e))}return s(r({},r$43),{id:t,contentUrl:t,lodMetricType:Mn.GEOMETRIC_ERROR,lodMetricValue:r$43.geometricError,transformMatrix:r$43.transform,type:du(r$43,t),refine:pu(r$43.refine)})}async function f1(r,e,t){let i=null,o=u1(r.root);o&&r.root?i=await l1(r.root,r,e,o,t):i=c1(r.root,e);let a=[];for(a.push(i);a.length>0;){let d=a.pop()||{},m=d.children||[],b=[];for(let y of m){let _=u1(y),w;_?w=await l1(y,r,e,_,t):w=c1(y,e),w&&(b.push(w),a.push(w))}d.children=b}return i}async function l1(r,e,t,i,o){let{subdivisionScheme:a,maximumLevel:d,availableLevels:m,subtreeLevels:b,subtrees:{uri:y}}=i,S=await ge$2(hu(Ta(y,0,0,0,0),t),ma,o),M=r.content?.uri,k=M?hu(M,t):``,O=e?.root?.refine,Q=r.geometricError,V=r.boundingVolume.extensions?.[`3DTILES_bounding_volume_S2`];if(V)r.boundingVolume={box:ba(V),s2VolumeInfo:V};let G=r.boundingVolume;return await cM(r,t,S,{contentUrlTemplate:k,subtreesUriTemplate:y,subdivisionScheme:a,subtreeLevels:b,maximumLevel:Number.isFinite(m)?m-1:d,refine:O,basePath:t,lodMetricType:Mn.GEOMETRIC_ERROR,rootLodMetricValue:Q,rootBoundingVolume:G,getTileType:du,getRefine:pu},o)}async function cM(r$44,e,t,i,o){if(!r$44)return null;let{children:a,contentUrl:d}=await fu({subtree:t,implicitOptions:i,loaderOptions:o}),m,b=null;return d&&(m=d,b={uri:d.replace(`${e}/`,``)}),s(r({},r$44),{id:m,contentUrl:m,lodMetricType:Mn.GEOMETRIC_ERROR,lodMetricValue:r$44.geometricError,transformMatrix:r$44.transform,type:du(r$44,m),refine:pu(r$44.refine),content:b||r$44.content,children:a})}function u1(r){return r?.extensions?.[`3DTILES_implicit_tiling`]||r?.implicitTiling}var ya={dataType:null,batchType:null,id:`3d-tiles`,name:`3D Tiles`,module:`3d-tiles`,version:la,extensions:[`cmpt`,`pnts`,`b3dm`,`i3dm`],mimeTypes:[`application/octet-stream`],tests:[`cmpt`,`pnts`,`b3dm`,`i3dm`],parse:lM,options:{"3d-tiles":{loadGLTF:!0,decodeQuantizedPositions:!1,isTileset:`auto`,assetGltfUpAxis:null}}};async function lM(r,e={},t){let i=e[`3d-tiles`]||{},o;return i.isTileset===`auto`?o=t?.url&&t.url.indexOf(`.json`)!==-1:o=i.isTileset,o?uM(r,e,t):fM(r,e,t)}async function uM(r$45,e,t){let i=JSON.parse(new TextDecoder().decode(r$45)),o=t?.url||``,a=hM(o),d=await f1(i,a,e||{});return s(r({},i),{shape:`tileset3d`,loader:ya,url:o,queryString:t?.queryString||``,basePath:a,root:d||i.root,type:Bt.TILES3D,lodMetricType:Mn.GEOMETRIC_ERROR,lodMetricValue:i.root?.geometricError||0})}async function fM(r,e,t){let i={content:{shape:`tile3d`,featureIds:null}};return await Zl(r,0,e,t,i.content),i.content}function hM(r){return pa$1.dirname(r)}var h1=[0];var dM={getPointColor:{type:`accessor`,value:[0,0,0,255]},pointSize:1,data:``,loader:ya,onTilesetLoad:{type:`function`,value:r=>{}},onTileLoad:{type:`function`,value:r=>{}},onTileUnload:{type:`function`,value:r=>{}},onTileError:{type:`function`,value:(r,e,t)=>{}},_getMeshColor:{type:`function`,value:r=>[255,255,255]}};var mM=(()=>{class r$46 extends Dm$1{initializeState(){`onTileLoadFail`in this.props&&A.removed(`onTileLoadFail`,`onTileError`)(),this.state={layerMap:{},tileset3d:null,activeViewports:{},lastUpdatedViewports:null}}get isLoaded(){return!!(this.state?.tileset3d?.isLoaded()&&super.isLoaded)}shouldUpdateState({changeFlags:t}){return t.somethingChanged}updateState({props:t,oldProps:i,changeFlags:o}){if(t.data&&t.data!==i.data&&this._loadTileset(t.data),o.viewportChanged){let{activeViewports:a}=this.state;Object.keys(a).length&&(this._updateTileset(a),this.state.lastUpdatedViewports=a,this.state.activeViewports={})}if(o.propsChanged){let{layerMap:a}=this.state;for(let d in a)a[d].needsUpdate=!0}}finalizeState(t){this.state.tileset3d?.destroy(),this.state.tileset3d=null,this.state.layerMap={},this.state.activeViewports={},this.state.lastUpdatedViewports=null,super.finalizeState(t)}activateViewport(t){let{activeViewports:i,lastUpdatedViewports:o}=this.state;this.internalState.viewport=t,i[t.id]=t;let a=o?.[t.id];(!a||!t.equals(a))&&(this.setChangeFlags({viewportChanged:!0}),this.setNeedsUpdate())}getPickingInfo({info:t,sourceLayer:i}){let o=i&&i.props.tile;return t.picked&&(t.object=o),t.sourceTile=o,t}filterSubLayer({layer:t,viewport:i,cullRect:o,isPicking:a}){let{tile:d}=t.props,{id:m}=i;if(!d.selected||!d.viewportIds.includes(m))return!1;if(a&&o&&d.content?.cartographicOrigin){let[b,y]=i.project(d.content.cartographicOrigin),_=o.x+o.width/2,w=o.y+o.height/2,S=Math.max(i.width,i.height)/4,M=b-_,k=y-w;if(M*M+k*k>S*S)return!1}return!0}_updateAutoHighlight(t){let i=t.sourceTile,o=this.state.layerMap[i?.id];o&&o.layer&&o.layer.updateAutoHighlight(t)}async _loadTileset(t){let i=this.props.loadOptions||{},o=this.props.loaders?.length?this.props.loaders:this.props.loader,a=Array.isArray(o)?o[0]:o,S=i,{tileset:d}=S,b=r({loadOptions:r({},u(S,[`tileset`]))},d),y=t;if(`preload`in a&&typeof a.preload==`function`){let M=await a.preload(t,i);M.url&&(y=M.url),M.headers&&(b.loadOptions.core=s(r({},b.loadOptions.core),{fetch:s(r({},b.loadOptions.core?.fetch),{headers:M.headers})})),Object.assign(b,M)}let w=new ls(await ge$2(y,a,b.loadOptions),r({onTileLoad:this._onTileLoad.bind(this),onTileUnload:this._onTileUnload.bind(this),onTileError:this.props.onTileError,onUpdate:()=>this.setNeedsUpdate()},b));this.setState({tileset3d:w,layerMap:{}}),this._updateTileset(this.state.activeViewports),this.props.onTilesetLoad(w)}_onTileLoad(t){let{lastUpdatedViewports:i}=this.state;t.tileDrawn=!1,this.props.onTileLoad(t),this._updateTileset(i),this.setNeedsUpdate()}_onTileUnload(t){delete this.state.layerMap[t.id],this.props.onTileUnload(t)}_updateTileset(t){if(!t)return;let{tileset3d:i}=this.state,{timeline:o}=this.context,a=Object.keys(t).length;!o||!a||!i||i.selectTiles(Object.values(t)).then(d=>{this.state.frameNumber!==d&&this.setState({frameNumber:d})})}_getSubLayer(t,i){if(!t.content)return null;switch(t.type){case Dr.POINTCLOUD:return this._makePointCloudLayer(t,i);case Dr.SCENEGRAPH:return this._make3DModelLayer(t);case Dr.MESH:return this._makeSimpleMeshLayer(t,i);default:throw new Error(`Tile3DLayer: Failed to render layer of type ${t.content.type}`)}}_makePointCloudLayer(t,i){let{attributes:o,pointCount:a,constantRGBA:d,cartographicOrigin:m,modelMatrix:b}=t.content,{positions:y,normals:_,colors:w}=o;if(!y)return null;let S=i&&i.props.data||{header:{vertexCount:a},attributes:{POSITION:y,NORMAL:_,COLOR_0:w}},{pointSize:M,getPointColor:k}=this.props;return new(this.getSubLayerClass(`pointcloud`,Tn))({pointSize:M},this.getSubLayerProps({id:`pointcloud`}),{id:`${this.id}-pointcloud-${t.id}`,tile:t,data:S,coordinateSystem:ns$1.METER_OFFSETS,coordinateOrigin:m,modelMatrix:b,getColor:d||k,_offset:0})}_make3DModelLayer(t){let{gltf:i,instances:o,cartographicOrigin:a,modelMatrix:d}=t.content;return new(this.getSubLayerClass(`scenegraph`,Pl))({_lighting:`pbr`},this.getSubLayerProps({id:`scenegraph`}),{id:`${this.id}-scenegraph-${t.id}`,tile:t,data:o||h1,scenegraph:i,coordinateSystem:ns$1.METER_OFFSETS,coordinateOrigin:a,modelMatrix:d,getTransformMatrix:b=>b.modelMatrix,getPosition:[0,0,0],_offset:0,onFirstDraw:()=>{t.tileDrawn=!0}})}_makeSimpleMeshLayer(t,i){let{attributes:a,indices:d,modelMatrix:m,cartographicOrigin:b,coordinateSystem:y=ns$1.METER_OFFSETS,material:_,featureIds:w}=t.content,{_getMeshColor:S}=this.props,M=i&&i.props.mesh||new ne({topology:`triangle-list`,attributes:gM(a),indices:d});return new(this.getSubLayerClass(`mesh`,qg))(this.getSubLayerProps({id:`mesh`}),{id:`${this.id}-mesh-${t.id}`,tile:t,mesh:M,data:h1,getColor:S(t),pbrMaterial:_,modelMatrix:m,coordinateOrigin:b,coordinateSystem:y,featureIds:w,_offset:0})}renderLayers(){let{tileset3d:t,layerMap:i}=this.state;return t?t.tiles.map(o=>{let a=i[o.id]=i[o.id]||{tile:o},{layer:d}=a;return o.selected&&(d?a.needsUpdate&&(d=this._getSubLayer(o,d),a.needsUpdate=!1):d=this._getSubLayer(o)),a.layer=d,d}).filter(Boolean):null}}return r$46.defaultProps=dM,r$46.layerName=`Tile3DLayer`,r$46})();function gM(r$47){let e={};return e.positions=s(r({},r$47.positions),{value:new Float32Array(r$47.positions.value)}),r$47.normals&&(e.normals=r$47.normals),r$47.texCoords&&(e.texCoords=r$47.texCoords),r$47.colors&&(e.colors=r$47.colors),r$47.uvRegions&&(e.uvRegions=r$47.uvRegions),e}var bM=new Map([[`centerX`,Float64Array.BYTES_PER_ELEMENT],[`centerY`,Float64Array.BYTES_PER_ELEMENT],[`centerZ`,Float64Array.BYTES_PER_ELEMENT],[`minHeight`,Float32Array.BYTES_PER_ELEMENT],[`maxHeight`,Float32Array.BYTES_PER_ELEMENT],[`boundingSphereCenterX`,Float64Array.BYTES_PER_ELEMENT],[`boundingSphereCenterY`,Float64Array.BYTES_PER_ELEMENT],[`boundingSphereCenterZ`,Float64Array.BYTES_PER_ELEMENT],[`boundingSphereRadius`,Float64Array.BYTES_PER_ELEMENT],[`horizonOcclusionPointX`,Float64Array.BYTES_PER_ELEMENT],[`horizonOcclusionPointY`,Float64Array.BYTES_PER_ELEMENT],[`horizonOcclusionPointZ`,Float64Array.BYTES_PER_ELEMENT]]);function mu(r){return r>>1^-(r&1)}function TM(r){let e=0,t={};for(let[i,o]of bM)t[i]=(o===8?r.getFloat64:r.getFloat32).call(r,e,!0),e+=o;return{header:t,headerEndPosition:e}}function yM(r,e){let t=e,i=3,o=r.getUint32(t,!0),a=new Uint16Array(o*i);t+=Uint32Array.BYTES_PER_ELEMENT;let d=Uint16Array.BYTES_PER_ELEMENT,m=o*d,b=t,y=b+m,_=y+m,w=0,S=0,M=0;for(let k=0;k<o;k++)w+=mu(r.getUint16(b+d*k,!0)),S+=mu(r.getUint16(y+d*k,!0)),M+=mu(r.getUint16(_+d*k,!0)),a[k]=w,a[k+o]=S,a[k+o*2]=M;return t+=m*3,{vertexData:a,vertexDataEndPosition:t}}function fs(r,e,t,i,o=!0){let a;if(i===2?a=new Uint16Array(r,e,t):a=new Uint32Array(r,e,t),!o)return a;let d=0;for(let m=0;m<a.length;++m){let b=a[m];a[m]=d-b,b===0&&++d}return a}function xM(r,e,t){let i=t,d=e.length/3>65536?Uint32Array.BYTES_PER_ELEMENT:Uint16Array.BYTES_PER_ELEMENT;i%d!==0&&(i+=d-i%d);let m=r.getUint32(i,!0);i+=Uint32Array.BYTES_PER_ELEMENT;let b=m*3,y=fs(r.buffer,i,b,d);return i+=b*d,{triangleIndicesEndPosition:i,triangleIndices:y}}function _M(r,e,t){let i=t,d=e.length/3>65536?Uint32Array.BYTES_PER_ELEMENT:Uint16Array.BYTES_PER_ELEMENT,m=r.getUint32(i,!0);i+=Uint32Array.BYTES_PER_ELEMENT;let b=fs(r.buffer,i,m,d,!1);i+=m*d;let y=r.getUint32(i,!0);i+=Uint32Array.BYTES_PER_ELEMENT;let _=fs(r.buffer,i,y,d,!1);i+=y*d;let w=r.getUint32(i,!0);i+=Uint32Array.BYTES_PER_ELEMENT;let S=fs(r.buffer,i,w,d,!1);i+=w*d;let M=r.getUint32(i,!0);i+=Uint32Array.BYTES_PER_ELEMENT;let k=fs(r.buffer,i,M,d,!1);return i+=M*d,{edgeIndicesEndPosition:i,westIndices:b,southIndices:_,eastIndices:S,northIndices:k}}function wM(r){return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}function EM(r){return r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength)}function vM(r,e){let t={};if(r.byteLength<=e)return{extensions:t,extensionsEndPosition:e};let i=e;for(;i<r.byteLength;){let o=r.getUint8(i,!0);i+=Uint8Array.BYTES_PER_ELEMENT;let a=r.getUint32(i,!0);i+=Uint32Array.BYTES_PER_ELEMENT;let d=new DataView(r.buffer,i,a);switch(o){case 1:t.vertexNormals=wM(d);break;case 2:t.waterMask=EM(d);break;default:}i+=a}return{extensions:t,extensionsEndPosition:i}}var oi={header:0,vertices:1,triangleIndices:2,edgeIndices:3,extensions:4};var SM={maxDecodingStep:oi.extensions};function gu(r,e){let t=Object.assign({},SM,e),i=new DataView(r),{header:o,headerEndPosition:a}=TM(i);if(t.maxDecodingStep<oi.vertices)return{header:o};let{vertexData:d,vertexDataEndPosition:m}=yM(i,a);if(t.maxDecodingStep<oi.triangleIndices)return{header:o,vertexData:d};let{triangleIndices:b,triangleIndicesEndPosition:y}=xM(i,d,m);if(t.maxDecodingStep<oi.edgeIndices)return{header:o,vertexData:d,triangleIndices:b};let{westIndices:_,southIndices:w,eastIndices:S,northIndices:M,edgeIndicesEndPosition:k}=_M(i,d,y);if(t.maxDecodingStep<oi.extensions)return{header:o,vertexData:d,triangleIndices:b,westIndices:_,northIndices:M,eastIndices:S,southIndices:w};let{extensions:O}=vM(i,k);return{header:o,vertexData:d,triangleIndices:b,westIndices:_,northIndices:M,eastIndices:S,southIndices:w,extensions:O}}function xa(r,e,t,i){let o=i?IM(i,r.POSITION.value):CM(e),a=new r.POSITION.value.constructor(o.length*6),d=new r.TEXCOORD_0.value.constructor(o.length*4),m=new e.constructor(o.length*6);for(let y=0;y<o.length;y++){let _=o[y];MM({edge:_,edgeIndex:y,attributes:r,skirtHeight:t,newPosition:a,newTexcoord0:d,newTriangles:m})}r.POSITION.value=Ku(r.POSITION.value,a),r.TEXCOORD_0.value=Ku(r.TEXCOORD_0.value,d);return{attributes:r,triangles:e instanceof Array?e.concat(m):Ku(e,m)}}function CM(r){let e=[];for(let o=0;o<r.length;o+=3)e.push([r[o],r[o+1]]),e.push([r[o+1],r[o+2]]),e.push([r[o+2],r[o]]);e.sort((o,a)=>Math.min(...o)-Math.min(...a)||Math.max(...o)-Math.max(...a));let t=[],i=0;for(;i<e.length;)e[i][0]===e[i+1]?.[1]&&e[i][1]===e[i+1]?.[0]?i+=2:(t.push(e[i]),i++);return t}function IM(r,e){r.westIndices.sort((i,o)=>e[3*i+1]-e[3*o+1]),r.eastIndices.sort((i,o)=>e[3*o+1]-e[3*i+1]),r.southIndices.sort((i,o)=>e[3*o]-e[3*i]),r.northIndices.sort((i,o)=>e[3*i]-e[3*o]);let t=[];for(let i in r){let o=r[i];for(let a=0;a<o.length-1;a++)t.push([o[a],o[a+1]])}return t}function MM({edge:r,edgeIndex:e,attributes:t,skirtHeight:i,newPosition:o,newTexcoord0:a,newTriangles:d}){let m=t.POSITION.value.length,b=e*2,y=e*2+1;o.set(t.POSITION.value.subarray(r[0]*3,r[0]*3+3),b*3),o[b*3+2]=o[b*3+2]-i,o.set(t.POSITION.value.subarray(r[1]*3,r[1]*3+3),y*3),o[y*3+2]=o[y*3+2]-i,a.set(t.TEXCOORD_0.value.subarray(r[0]*2,r[0]*2+2),b*2),a.set(t.TEXCOORD_0.value.subarray(r[1]*2,r[1]*2+2),y*2);let _=e*2*3;d[_]=r[0],d[_+1]=m/3+y,d[_+2]=r[1],d[_+3]=m/3+y,d[_+4]=r[0],d[_+5]=m/3+b}function bu(r,e={}){let{bounds:t}=e,{header:i,vertexData:o,triangleIndices:a,westIndices:d,northIndices:m,eastIndices:b,southIndices:y}=gu(r,oi.triangleIndices),_=a,w=LM(o,i,t),S=Ro(w);if(e?.skirtHeight){let{attributes:M,triangles:k}=xa(w,_,e.skirtHeight,{westIndices:d,northIndices:m,eastIndices:b,southIndices:y});w=M,_=k}return{loaderData:{header:{}},header:{vertexCount:_.length,boundingBox:S},schema:void 0,topology:`triangle-list`,mode:4,indices:{value:_,size:1},attributes:w}}function LM(r,e,t){let{minHeight:i,maxHeight:o}=e,[a,d,m,b]=t||[0,0,1,1],y=m-a,_=b-d,w=o-i,S=r.length/3,M=new Float32Array(S*3),k=new Float32Array(S*2);for(let O=0;O<S;O++){let Q=r[O]/32767,V=r[O+S]/32767,G=r[O+S*2]/32767;M[3*O+0]=Q*y+a,M[3*O+1]=V*_+d,M[3*O+2]=G*w+i,k[2*O+0]=Q,k[2*O+1]=V}return{POSITION:{value:M,size:3},TEXCOORD_0:{value:k,size:2}}}var _a=class{constructor(e=257){this.gridSize=e;let t=e-1;if(t&t-1)throw new Error(`Expected grid size to be 2^n+1, got ${e}.`);this.numTriangles=t*t*2-2,this.numParentTriangles=this.numTriangles-t*t,this.indices=new Uint32Array(this.gridSize*this.gridSize),this.coords=new Uint16Array(this.numTriangles*4);for(let i=0;i<this.numTriangles;i++){let o=i+2,a=0,d=0,m=0,b=0,y=0,_=0;for(o&1?m=b=y=t:a=d=_=t;(o>>=1)>1;){let S=a+m>>1,M=d+b>>1;o&1?(m=a,b=d,a=y,d=_):(a=m,d=b,m=y,b=_),y=S,_=M}let w=i*4;this.coords[w+0]=a,this.coords[w+1]=d,this.coords[w+2]=m,this.coords[w+3]=b}}createTile(e){return new Tu(e,this)}};var Tu=class{constructor(e,t){let i=t.gridSize;if(e.length!==i*i)throw new Error(`Expected terrain data of length ${i*i} (${i} x ${i}), got ${e.length}.`);this.terrain=e,this.martini=t,this.errors=new Float32Array(e.length),this.update()}update(){let{numTriangles:e,numParentTriangles:t,coords:i,gridSize:o}=this.martini,{terrain:a,errors:d}=this;for(let m=e-1;m>=0;m--){let b=m*4,y=i[b+0],_=i[b+1],w=i[b+2],S=i[b+3],M=y+w>>1,k=_+S>>1,O=M+k-_,Q=k+y-M,V=(a[_*o+y]+a[S*o+w])/2,G=k*o+M,J=Math.abs(V-a[G]);if(d[G]=Math.max(d[G],J),m<t){let $=(_+Q>>1)*o+(y+O>>1),te=(S+Q>>1)*o+(w+O>>1);d[G]=Math.max(d[G],d[$],d[te])}}}getMesh(e=0){let{gridSize:t,indices:i}=this.martini,{errors:o}=this,a=0,d=0,m=t-1;i.fill(0);function b(M,k,O,Q,V,G){let J=M+O>>1,$=k+Q>>1;Math.abs(M-V)+Math.abs(k-G)>1&&o[$*t+J]>e?(b(V,G,M,k,J,$),b(O,Q,V,G,J,$)):(i[k*t+M]=i[k*t+M]||++a,i[Q*t+O]=i[Q*t+O]||++a,i[G*t+V]=i[G*t+V]||++a,d++)}b(0,0,m,m,m,0),b(m,m,0,0,0,m);let y=new Uint16Array(a*2),_=new Uint32Array(d*3),w=0;function S(M,k,O,Q,V,G){let J=M+O>>1,$=k+Q>>1;if(Math.abs(M-V)+Math.abs(k-G)>1&&o[$*t+J]>e)S(V,G,M,k,J,$),S(O,Q,V,G,J,$);else{let te=i[k*t+M]-1,re=i[Q*t+O]-1,le=i[G*t+V]-1;y[2*te]=M,y[2*te+1]=k,y[2*re]=O,y[2*re+1]=Q,y[2*le]=V,y[2*le+1]=G,_[w++]=te,_[w++]=re,_[w++]=le}}return S(0,0,m,m,m,0),S(m,m,0,0,0,m),{vertices:y,triangles:_}}};var wa=class{constructor(e,t,i=t){this.data=e,this.width=t,this.height=i,this.coords=[],this.triangles=[],this._halfedges=[],this._candidates=[],this._queueIndices=[],this._queue=[],this._errors=[],this._rms=[],this._pending=[],this._pendingLen=0,this._rmsSum=0;let o=t-1,a=i-1,d=this._addPoint(0,0),m=this._addPoint(o,0),b=this._addPoint(0,a),y=this._addPoint(o,a),_=this._addTriangle(y,d,b,-1,-1,-1);this._addTriangle(d,y,m,_,-1,-1),this._flush()}run(e=1){for(;this.getMaxError()>e;)this.refine()}refine(){this._step(),this._flush()}getMaxError(){return this._errors[0]}getRMSD(){return this._rmsSum>0?Math.sqrt(this._rmsSum/(this.width*this.height)):0}heightAt(e,t){return this.data[this.width*t+e]}_flush(){let e=this.coords;for(let t=0;t<this._pendingLen;t++){let i=this._pending[t],o=2*this.triangles[i*3+0],a=2*this.triangles[i*3+1],d=2*this.triangles[i*3+2];this._findCandidate(e[o],e[o+1],e[a],e[a+1],e[d],e[d+1],i)}this._pendingLen=0}_findCandidate(e,t,i,o,a,d,m){let b=Math.min(e,i,a),y=Math.min(t,o,d),_=Math.max(e,i,a),w=Math.max(t,o,d),S=si(i,o,a,d,b,y),M=si(a,d,e,t,b,y),k=si(e,t,i,o,b,y),O=o-t,Q=e-i,V=d-o,G=i-a,J=t-d,$=a-e,te=si(e,t,i,o,a,d),re=this.heightAt(e,t)/te,le=this.heightAt(i,o)/te,Y=this.heightAt(a,d)/te,z=0,B=0,ue=0,we=0;for(let Ee=y;Ee<=w;Ee++){let _e=0;S<0&&V!==0&&(_e=Math.max(_e,Math.floor(-S/V))),M<0&&J!==0&&(_e=Math.max(_e,Math.floor(-M/J))),k<0&&O!==0&&(_e=Math.max(_e,Math.floor(-k/O)));let Ne=S+V*_e,Fe=M+J*_e,Oe=k+O*_e,Ge=!1;for(let He=b+_e;He<=_;He++){if(Ne>=0&&Fe>=0&&Oe>=0){Ge=!0;let je=re*Ne+le*Fe+Y*Oe,qe=Math.abs(je-this.heightAt(He,Ee));we+=qe*qe,qe>z&&(z=qe,B=He,ue=Ee)}else if(Ge)break;Ne+=V,Fe+=J,Oe+=O}S+=G,M+=$,k+=Q}(B===e&&ue===t||B===i&&ue===o||B===a&&ue===d)&&(z=0),this._candidates[2*m]=B,this._candidates[2*m+1]=ue,this._rms[m]=we,this._queuePush(m,z,we)}_step(){let e=this._queuePop(),t=e*3+0,i=e*3+1,o=e*3+2,a=this.triangles[t],d=this.triangles[i],m=this.triangles[o],b=this.coords[2*a],y=this.coords[2*a+1],_=this.coords[2*d],w=this.coords[2*d+1],S=this.coords[2*m],M=this.coords[2*m+1],k=this._candidates[2*e],O=this._candidates[2*e+1],Q=this._addPoint(k,O);if(si(b,y,_,w,k,O)===0)this._handleCollinear(Q,t);else if(si(_,w,S,M,k,O)===0)this._handleCollinear(Q,i);else if(si(S,M,b,y,k,O)===0)this._handleCollinear(Q,o);else{let V=this._halfedges[t],G=this._halfedges[i],J=this._halfedges[o],$=this._addTriangle(a,d,Q,V,-1,-1,t),te=this._addTriangle(d,m,Q,G,-1,$+1),re=this._addTriangle(m,a,Q,J,$+2,te+1);this._legalize($),this._legalize(te),this._legalize(re)}}_addPoint(e,t){let i=this.coords.length>>1;return this.coords.push(e,t),i}_addTriangle(e,t,i,o,a,d,m=this.triangles.length){let b=m/3;return this.triangles[m+0]=e,this.triangles[m+1]=t,this.triangles[m+2]=i,this._halfedges[m+0]=o,this._halfedges[m+1]=a,this._halfedges[m+2]=d,o>=0&&(this._halfedges[o]=m+0),a>=0&&(this._halfedges[a]=m+1),d>=0&&(this._halfedges[d]=m+2),this._candidates[2*b+0]=0,this._candidates[2*b+1]=0,this._queueIndices[b]=-1,this._rms[b]=0,this._pending[this._pendingLen++]=b,m}_legalize(e){let t=this._halfedges[e];if(t<0)return;let i=e-e%3,o=t-t%3,a=i+(e+1)%3,d=i+(e+2)%3,m=o+(t+2)%3,b=o+(t+1)%3,y=this.triangles[d],_=this.triangles[e],w=this.triangles[a],S=this.triangles[m],M=this.coords;if(!RM(M[2*y],M[2*y+1],M[2*_],M[2*_+1],M[2*w],M[2*w+1],M[2*S],M[2*S+1]))return;let k=this._halfedges[a],O=this._halfedges[d],Q=this._halfedges[m],V=this._halfedges[b];this._queueRemove(i/3),this._queueRemove(o/3);let G=this._addTriangle(y,S,w,-1,Q,k,i),J=this._addTriangle(S,y,_,G,O,V,o);this._legalize(G+1),this._legalize(J+2)}_handleCollinear(e,t){let i=t-t%3,o=i+(t+1)%3,a=i+(t+2)%3,d=this.triangles[a],m=this.triangles[t],b=this.triangles[o],y=this._halfedges[o],_=this._halfedges[a],w=this._halfedges[t];if(w<0){let re=this._addTriangle(e,d,m,-1,_,-1,i),le=this._addTriangle(d,e,b,re,-1,y);this._legalize(re+1),this._legalize(le+2);return}let S=w-w%3,M=S+(w+2)%3,k=S+(w+1)%3,O=this.triangles[M],Q=this._halfedges[M],V=this._halfedges[k];this._queueRemove(S/3);let G=this._addTriangle(d,m,e,_,-1,-1,i),J=this._addTriangle(m,O,e,V,-1,G+1,S),$=this._addTriangle(O,b,e,Q,-1,J+1),te=this._addTriangle(b,d,e,y,G+2,$+1);this._legalize(G),this._legalize(J),this._legalize($),this._legalize(te)}_queuePush(e,t,i){let o=this._queue.length;this._queueIndices[e]=o,this._queue.push(e),this._errors.push(t),this._rmsSum+=i,this._queueUp(o)}_queuePop(){let e=this._queue.length-1;return this._queueSwap(0,e),this._queueDown(0,e),this._queuePopBack()}_queuePopBack(){let e=this._queue.pop();return this._errors.pop(),this._rmsSum-=this._rms[e],this._queueIndices[e]=-1,e}_queueRemove(e){let t=this._queueIndices[e];if(t<0){let o=this._pending.indexOf(e);if(o!==-1)this._pending[o]=this._pending[--this._pendingLen];else throw new Error(`Broken triangulation (something went wrong).`);return}let i=this._queue.length-1;i!==t&&(this._queueSwap(t,i),this._queueDown(t,i)||this._queueUp(t)),this._queuePopBack()}_queueLess(e,t){return this._errors[e]>this._errors[t]}_queueSwap(e,t){let i=this._queue[e],o=this._queue[t];this._queue[e]=o,this._queue[t]=i,this._queueIndices[i]=t,this._queueIndices[o]=e;let a=this._errors[e];this._errors[e]=this._errors[t],this._errors[t]=a}_queueUp(e){let t=e;for(;;){let i=t-1>>1;if(i===t||!this._queueLess(t,i))break;this._queueSwap(i,t),t=i}}_queueDown(e,t){let i=e;for(;;){let o=2*i+1;if(o>=t||o<0)break;let a=o+1,d=o;if(a<t&&this._queueLess(a,o)&&(d=a),!this._queueLess(d,i))break;this._queueSwap(i,d),i=d}return i>e}};function si(r,e,t,i,o,a){return(t-o)*(e-a)-(i-a)*(r-o)}function RM(r,e,t,i,o,a,d,m){let b=r-d,y=e-m,_=t-d,w=i-m,S=o-d,M=a-m,k=b*b+y*y,O=_*_+w*w,Q=S*S+M*M;return b*(w*Q-O*M)-y*(_*Q-O*S)+k*(_*M-w*S)<0}function m1(r,e){let{meshMaxError:t,bounds:i,elevationDecoder:o}=e,{data:a,width:d,height:m}=r,b,y;switch(e.tesselator){case`martini`:b=Ea(a,d,m,o,e.tesselator),y=d1(t,d,b);break;case`delatin`:b=Ea(a,d,m,o,e.tesselator),y=p1(t,d,m,b);break;default:d===m&&!(m&d-1)?(b=Ea(a,d,m,o,`martini`),y=d1(t,d,b)):(b=Ea(a,d,m,o,`delatin`),y=p1(t,d,m,b));break}let{vertices:_}=y,{triangles:w}=y,S=PM(_,b,d,m,i),M=Ro(S);if(e.skirtHeight){let{attributes:k,triangles:O}=xa(S,w,e.skirtHeight);S=k,w=O}return{loaderData:{header:{}},header:{vertexCount:w.length,boundingBox:M},mode:4,indices:{value:Uint32Array.from(w),size:1},attributes:S}}function d1(r,e,t){let{vertices:d,triangles:m}=new _a(e+1).createTile(t).getMesh(r);return{vertices:d,triangles:m}}function p1(r,e,t,i){let o=new wa(i,e+1,t+1);o.run(r);let{coords:a,triangles:d}=o;return{vertices:a,triangles:d}}function Ea(r,e,t,i,o){let{rScaler:a,bScaler:d,gScaler:m,offset:b}=i,y=new Float32Array((e+1)*(t+1));for(let _=0,w=0;w<t;w++)for(let S=0;S<e;S++,_++){let M=_*4,k=r[M+0],O=r[M+1],Q=r[M+2];y[_+w]=k*a+O*m+Q*d+b}if(o===`martini`){for(let _=(e+1)*e,w=0;w<e;w++,_++)y[_]=y[_-e-1];for(let _=t,w=0;w<t+1;w++,_+=t+1)y[_]=y[_-1]}return y}function PM(r,e,t,i,o){let a=t+1,d=r.length/2,m=new Float32Array(d*3),b=new Float32Array(d*2),[y,_,w,S]=o||[0,0,t,i],M=(w-y)/t,k=(S-_)/i;for(let O=0;O<d;O++){let Q=r[O*2],V=r[O*2+1],G=V*a+Q;m[3*O+0]=Q*M+y,m[3*O+1]=-V*k+S,m[3*O+2]=e[G],b[2*O+0]=Q/t,b[2*O+1]=V/i}return{POSITION:{value:m,size:3},TEXCOORD_0:{value:b,size:2}}}var va=`4.5.1`;var Sa={dataType:null,batchType:null,name:`Terrain`,id:`terrain`,module:`terrain`,version:va,worker:!0,extensions:[`png`,`pngraw`,`jpg`,`jpeg`,`gif`,`webp`,`bmp`],mimeTypes:[`image/png`,`image/jpeg`,`image/gif`,`image/webp`,`image/bmp`],options:{terrain:{tesselator:`auto`,bounds:void 0,meshMaxError:10,elevationDecoder:{rScaler:1,gScaler:0,bScaler:0,offset:0},skirtHeight:void 0}}};var g1={dataType:null,batchType:null,name:`Quantized Mesh`,id:`quantized-mesh`,module:`terrain`,version:va,worker:!0,extensions:[`terrain`],mimeTypes:[`application/vnd.quantized-mesh`],options:{"quantized-mesh":{bounds:[0,0,1,1],skirtHeight:null}}};var NM=s(r({},Sa),{parse:FM});async function FM(r$48,e,t){return m1(await Nu$1(r$48,[],s(r({},e),{core:s(r({},e?.core),{mimeType:`application/x.image`}),image:s(r({},e?.image),{type:`data`})}),t),r(r({},NM.options.terrain),e?.terrain))}s(r({},g1),{parseSync:(r,e)=>bu(r,e?.[`quantized-mesh`]),parse:async(r,e)=>bu(r,e?.[`quantized-mesh`])});var b1=[1];var T1=1;var y1=1;var Ca=90;var Ia=180;var kM=s(r({},Gi.defaultProps),{elevationData:vn,texture:s(r({},vn),{optional:!0}),meshMaxError:{type:`number`,value:4},bounds:{type:`array`,value:null,optional:!0,compare:!0},color:{type:`color`,value:[255,255,255]},elevationDecoder:{type:`object`,value:{rScaler:1,gScaler:0,bScaler:0,offset:0}},workerUrl:``,wireframe:!1,material:!0,loaders:[Sa]});function x1(r){return Array.isArray(r)?r.join(`;`):r||``}function OM(r,e,t){let i=(r[2]-r[0])/e*T1,o=(r[3]-r[1])/e*T1,a=[r[0]-i,r[1]-o,r[2]+i,r[3]+o];return t?[Math.max(a[0],-Ia),Math.max(a[1],-Ca),Math.min(a[2],Ia),Math.min(a[3],Ca)]:a}function DM(r){return!Number.isFinite(r)||r<=0?y1:Math.max(r,y1)}var UM=(()=>{class r$49 extends Dm$1{updateState({props:t,oldProps:i}){let o=t.elevationData!==i.elevationData;if(o){let{elevationData:d}=t,m=d&&(Array.isArray(d)||GM(d));this.setState({isTiled:m})}let a=o||t.meshMaxError!==i.meshMaxError||t.elevationDecoder!==i.elevationDecoder||t.bounds!==i.bounds;if(!this.state.isTiled&&a){let d=this.loadTerrain(t);this.setState({terrain:d})}t.workerUrl&&A.removed(`workerUrl`,`loadOptions.terrain.workerUrl`)()}loadTerrain({elevationData:t,bounds:i,elevationDecoder:o,meshMaxError:a,signal:d}){if(!t)return null;let m=DM(a),b=this.getLoadOptions();b=s(r({},b),{terrain:s(r({skirtHeight:this.state.isTiled?m*2:0},b?.terrain),{bounds:i,meshMaxError:m,elevationDecoder:o})});let{fetch:y}=this.props;return y(t,{propName:`elevationData`,layer:this,loadOptions:b,signal:d})}getTiledTerrainData(t){let{elevationData:i,fetch:o,texture:a,elevationDecoder:d,meshMaxError:m}=this.props,{viewport:b}=this.context,y=An(i,t),_=a&&An(a,t),{signal:w}=t,S=[0,0],M=[0,0];if(b.isGeospatial){let G=t.bbox;S=b.projectFlat([G.west,G.south]),M=b.projectFlat([G.east,G.north])}else{let G=t.bbox;S=[G.left,G.bottom],M=[G.right,G.top]}let O=OM([S[0],S[1],M[0],M[1]],this.props.tileSize,b instanceof on$1),Q=this.loadTerrain({elevationData:y,bounds:O,elevationDecoder:d,meshMaxError:m,signal:w}),V=_?o(_,{propName:`texture`,layer:this,loaders:[],signal:w}).catch(G=>null):Promise.resolve(null);return Promise.all([Q,V])}renderSubLayers(t){let i=this.getSubLayerClass(`mesh`,Vi),{color:o,wireframe:a,material:d}=this.props,{data:m}=t;if(!m)return null;let[b,y]=m,{viewport:_}=this.context,w=_ instanceof on$1,S=b?.header?.boundingBox,M=S&&S.every(([O,Q])=>O>=-Ia&&O<=Ia&&Q>=-Ca&&Q<=Ca);return new i(t,{data:b1,mesh:b,texture:y,_instanced:!1,coordinateSystem:w&&M?ns$1.LNGLAT:ns$1.CARTESIAN,getPosition:O=>[0,0,0],getColor:o,wireframe:a,material:d})}onViewportLoad(t){if(!t)return;let{zRange:i}=this.state,o=t.map(m=>m.content).filter(Boolean).map(m=>m[0].header.boundingBox.map(y=>y[2]));if(o.length===0)return;let a=Math.min(...o.map(m=>m[0])),d=Math.max(...o.map(m=>m[1]));(!i||a<i[0]||d>i[1])&&this.setState({zRange:[a,d]})}renderLayers(){let{color:t,material:i,elevationData:o,texture:a,wireframe:d,meshMaxError:m,elevationDecoder:b,tileSize:y,maxZoom:_,minZoom:w,extent:S,maxRequests:M,onTileLoad:k,onTileUnload:O,onTileError:Q,maxCacheSize:V,maxCacheByteSize:G,refinementStrategy:J,zoomOffset:$}=this.props;if(this.state.isTiled)return new Gi(this.getSubLayerProps({id:`tiles`}),{getTileData:this.getTiledTerrainData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),updateTriggers:{getTileData:{elevationData:x1(o),texture:x1(a),meshMaxError:m,elevationDecoder:b,projectionMode:this.context.viewport.projectionMode,zoomOffset:$}},onViewportLoad:this.onViewportLoad.bind(this),zRange:this.state.zRange||null,tileSize:y,maxZoom:_,minZoom:w,extent:S,maxRequests:M,onTileLoad:k,onTileUnload:O,onTileError:Q,maxCacheSize:V,maxCacheByteSize:G,refinementStrategy:J,zoomOffset:$});if(!o)return null;return new(this.getSubLayerClass(`mesh`,Vi))(this.getSubLayerProps({id:`mesh`}),{data:b1,mesh:this.state.terrain,texture:a,_instanced:!1,getPosition:re=>[0,0,0],getColor:t,material:i,wireframe:d})}}return r$49.defaultProps=kM,r$49.layerName=`TerrainLayer`,r$49})();var GM=r=>r.includes(`{x}`)&&(r.includes(`{y}`)||r.includes(`{-y}`));var jM={clipBounds:[0,0,1,1],clipByInstance:void 0};var _1=`
|
|
1122
|
+
layout(std140) uniform clipUniforms {
|
|
1123
|
+
vec4 bounds;
|
|
1124
|
+
} clip;
|
|
1125
|
+
|
|
1126
|
+
bool clip_isInBounds(vec2 position) {
|
|
1127
|
+
return position.x >= clip.bounds[0] && position.y >= clip.bounds[1] && position.x < clip.bounds[2] && position.y < clip.bounds[3];
|
|
1128
|
+
}
|
|
1129
|
+
`;var VM={name:`clip`,vs:_1,uniformTypes:{bounds:`vec4<f32>`}};var zM={"vs:#decl":`
|
|
1130
|
+
out float clip_isVisible;
|
|
1131
|
+
`,"vs:DECKGL_FILTER_GL_POSITION":`
|
|
1132
|
+
clip_isVisible = float(clip_isInBounds(geometry.worldPosition.xy));
|
|
1133
|
+
`,"fs:#decl":`
|
|
1134
|
+
in float clip_isVisible;
|
|
1135
|
+
`,"fs:DECKGL_FILTER_COLOR":`
|
|
1136
|
+
if (clip_isVisible < 0.5) discard;
|
|
1137
|
+
`};var HM={name:`clip`,fs:_1,uniformTypes:{bounds:`vec4<f32>`}};var qM={"vs:#decl":`
|
|
1138
|
+
out vec2 clip_commonPosition;
|
|
1139
|
+
`,"vs:DECKGL_FILTER_GL_POSITION":`
|
|
1140
|
+
clip_commonPosition = geometry.position.xy;
|
|
1141
|
+
`,"fs:#decl":`
|
|
1142
|
+
in vec2 clip_commonPosition;
|
|
1143
|
+
`,"fs:DECKGL_FILTER_COLOR":`
|
|
1144
|
+
if (!clip_isInBounds(clip_commonPosition)) discard;
|
|
1145
|
+
`};var yu=(()=>{class r extends Ym$1{getShaders(){let t=`instancePositions`in this.getAttributeManager().attributes;return this.props.clipByInstance!==void 0&&(t=!!this.props.clipByInstance),this.state.clipByInstance=t,this.context.device.type===`webgpu`?{}:t?{modules:[VM],inject:zM}:{modules:[HM],inject:qM}}draw(){let{clipBounds:t}=this.props,i={};if(this.state.clipByInstance)i.bounds=t;else{let o=this.projectPosition([t[0],t[1],0]),a=this.projectPosition([t[2],t[3],0]);i.bounds=[Math.min(o[0],a[0]),Math.min(o[1],a[1]),Math.max(o[0],a[0]),Math.max(o[1],a[1])]}this.context.device.type===`webgpu`&&(i.enabled=!0,i.mode=this.state.clipByInstance?`instance`:`geometry`),this.setShaderModuleProps({clip:i})}}return r.defaultProps=jM,r.extensionName=`ClipExtension`,r})();function w1(r,e,t){switch(r.type){case`Point`:return KM(r,e,t);case`LineString`:return QM(r,e,t);case`Polygon`:return E1(r,e,t);default:throw new Error(`Unsupported geometry type: ${r?.type}`)}}function E1(r,e=-Infinity,t=Infinity){let{positions:i}=r,o=r.polygonIndices.value.filter(b=>b>=e&&b<=t),a=r.primitivePolygonIndices.value.filter(b=>b>=e&&b<=t);if(!(o.length>2)){let b=[];for(let y=0;y<a.length-1;y++){let _=a[y],w=a[y+1],S=Ma(i,_,w);b.push(S)}return{type:`Polygon`,coordinates:b}}let m=[];for(let b=0;b<o.length-1;b++){let y=o[b],_=o[b+1],w=E1(r,y,_).coordinates;m.push(w)}return{type:`MultiPolygon`,coordinates:m}}function QM(r,e=-Infinity,t=Infinity){let{positions:i}=r,o=r.pathIndices.value.filter(m=>m>=e&&m<=t);if(!(o.length>2))return{type:`LineString`,coordinates:Ma(i,o[0],o[1])};let d=[];for(let m=0;m<o.length-1;m++){let b=Ma(i,o[m],o[m+1]);d.push(b)}return{type:`MultiLineString`,coordinates:d}}function KM(r,e,t){let{positions:i}=r,o=Ma(i,e,t);return o.length>1?{type:`MultiPoint`,coordinates:o}:{type:`Point`,coordinates:o[0]}}function Ma(r,e,t){e=e||0,t=t||r.value.length/r.size;let i=[];for(let o=e;o<t;o++){let a=Array();for(let d=o*r.size;d<(o+1)*r.size;d++)a.push(Number(r.value[d]));i.push(a)}return i}function La(r$50,e,t){let i=XM(r$50),o=Object.keys(i).filter(a=>i[a]!==Array);return YM(r$50,r({propArrayTypes:i},e),{numericPropKeys:t&&t.numericPropKeys||o,PositionDataType:t?t.PositionDataType:Float32Array,triangulate:t?t.triangulate:!0})}function XM(r){let e={};for(let t of r)if(t.properties)for(let i in t.properties){let o=t.properties[i];e[i]=r8(o,e[i])}return e}function YM(r,e,t){let{pointPositionsCount:i,pointFeaturesCount:o,linePositionsCount:a,linePathsCount:d,lineFeaturesCount:m,polygonPositionsCount:b,polygonObjectsCount:y,polygonRingsCount:_,polygonFeaturesCount:w,propArrayTypes:S,coordLength:M}=e,{numericPropKeys:k=[],PositionDataType:O=Float32Array,triangulate:Q=!0}=t,V=r[0]&&`id`in r[0],G=r.length>65535?Uint32Array:Uint16Array,J={type:`Point`,positions:new O(i*M),globalFeatureIds:new G(i),featureIds:o>65535?new Uint32Array(i):new Uint16Array(i),numericProps:{},properties:[],fields:[]},$={type:`LineString`,pathIndices:a>65535?new Uint32Array(d+1):new Uint16Array(d+1),positions:new O(a*M),globalFeatureIds:new G(a),featureIds:m>65535?new Uint32Array(a):new Uint16Array(a),numericProps:{},properties:[],fields:[]},te={type:`Polygon`,polygonIndices:b>65535?new Uint32Array(y+1):new Uint16Array(y+1),primitivePolygonIndices:b>65535?new Uint32Array(_+1):new Uint16Array(_+1),positions:new O(b*M),globalFeatureIds:new G(b),featureIds:w>65535?new Uint32Array(b):new Uint16Array(b),numericProps:{},properties:[],fields:[]};Q&&(te.triangles=[]);for(let le of[J,$,te])for(let Y of k){let z=S[Y];le.numericProps[Y]=new z(le.positions.length/M)}$.pathIndices[d]=a,te.polygonIndices[y]=b,te.primitivePolygonIndices[_]=b;let re={pointPosition:0,pointFeature:0,linePosition:0,linePath:0,lineFeature:0,polygonPosition:0,polygonObject:0,polygonRing:0,polygonFeature:0,feature:0};for(let le of r){let Y=le.geometry,z=le.properties||{};switch(Y.type){case`Point`:JM(Y,J,re,M,z),J.properties.push(_u(z,k)),V&&J.fields.push({id:le.id}),re.pointFeature++;break;case`LineString`:ZM(Y,$,re,M,z),$.properties.push(_u(z,k)),V&&$.fields.push({id:le.id}),re.lineFeature++;break;case`Polygon`:$M(Y,te,re,M,z),te.properties.push(_u(z,k)),V&&te.fields.push({id:le.id}),re.polygonFeature++;break;default:throw new Error(`Invalid geometry type`)}re.feature++}return t8(J,$,te,M)}function JM(r,e,t,i,o){e.positions.set(r.data,t.pointPosition*i);let a=r.data.length/i;wu(e,o,t.pointPosition,a),e.globalFeatureIds.fill(t.feature,t.pointPosition,t.pointPosition+a),e.featureIds.fill(t.pointFeature,t.pointPosition,t.pointPosition+a),t.pointPosition+=a}function ZM(r,e,t,i,o){e.positions.set(r.data,t.linePosition*i);let a=r.data.length/i;wu(e,o,t.linePosition,a),e.globalFeatureIds.fill(t.feature,t.linePosition,t.linePosition+a),e.featureIds.fill(t.lineFeature,t.linePosition,t.linePosition+a);for(let d=0,m=r.indices.length;d<m;++d){let b=r.indices[d],y=d===m-1?r.data.length:r.indices[d+1];e.pathIndices[t.linePath++]=t.linePosition,t.linePosition+=(y-b)/i}}function $M(r,e,t,i,o){e.positions.set(r.data,t.polygonPosition*i);let a=r.data.length/i;wu(e,o,t.polygonPosition,a),e.globalFeatureIds.fill(t.feature,t.polygonPosition,t.polygonPosition+a),e.featureIds.fill(t.polygonFeature,t.polygonPosition,t.polygonPosition+a);for(let d=0,m=r.indices.length;d<m;++d){let b=t.polygonPosition;e.polygonIndices[t.polygonObject++]=b;let y=r.areas[d],_=r.indices[d],w=r.indices[d+1];for(let M=0,k=_.length;M<k;++M){let O=_[M],Q=M===k-1?w===void 0?r.data.length:w[0]:_[M+1];e.primitivePolygonIndices[t.polygonRing++]=t.polygonPosition,t.polygonPosition+=(Q-O)/i}let S=t.polygonPosition;e8(e,y,_,{startPosition:b,endPosition:S,coordLength:i})}}function e8(r,e,t,{startPosition:i,endPosition:o,coordLength:a}){if(!r.triangles)return;let d=i*a,m=o*a,b=r.positions.subarray(d,m),y=t[0],w=Nn(b,t.slice(1).map(S=>(S-y)/a),a,e);for(let S=0,M=w.length;S<M;++S)r.triangles.push(i+w[S])}function xu(r,e){let t={};for(let i in r)t[i]={value:r[i],size:e};return t}function t8(r$51,e,t,i){let o={shape:`binary-feature-collection`,points:s(r({},r$51),{positions:{value:r$51.positions,size:i},globalFeatureIds:{value:r$51.globalFeatureIds,size:1},featureIds:{value:r$51.featureIds,size:1},numericProps:xu(r$51.numericProps,1)}),lines:s(r({},e),{positions:{value:e.positions,size:i},pathIndices:{value:e.pathIndices,size:1},globalFeatureIds:{value:e.globalFeatureIds,size:1},featureIds:{value:e.featureIds,size:1},numericProps:xu(e.numericProps,1)}),polygons:s(r({},t),{positions:{value:t.positions,size:i},polygonIndices:{value:t.polygonIndices,size:1},primitivePolygonIndices:{value:t.primitivePolygonIndices,size:1},globalFeatureIds:{value:t.globalFeatureIds,size:1},featureIds:{value:t.featureIds,size:1},numericProps:xu(t.numericProps,1)})};return o.polygons&&t.triangles&&(o.polygons.triangles={value:new Uint32Array(t.triangles),size:1}),o}function wu(r,e,t,i){for(let o in r.numericProps)if(o in e){let a=e[o];r.numericProps[o].fill(a,t,t+i)}}function _u(r,e){let t={};for(let i in r)e.includes(i)||(t[i]=r[i]);return t}function r8(r,e){return e===Array||!Number.isFinite(r)?Array:e===Float64Array||Math.fround(r)!==r?Float64Array:Float32Array}function hs(r,e){let t=e?.globalFeatureId;return t!==void 0?n8(r,t):i8(r,e?.type)}function n8(r,e){let t=v1(r);for(let i of t){let o=0,a=i.featureIds.value[0];for(let d=0;d<i.featureIds.value.length;d++){let m=i.featureIds.value[d];if(m!==a){if(e===i.globalFeatureIds.value[o])return Ra(i,o,d);o=d,a=m}}if(e===i.globalFeatureIds.value[o])return Ra(i,o,i.featureIds.value.length)}throw new Error(`featureId:${e} not found`)}function i8(r,e){return o8(v1(r,e))}function v1(r,e){let t=[];return r.points&&(r.points.type=`Point`,t.push(r.points)),r.lines&&(r.lines.type=`LineString`,t.push(r.lines)),r.polygons&&(r.polygons.type=`Polygon`,t.push(r.polygons)),t}function o8(r){let e=[];for(let t of r){if(t.featureIds.value.length===0)continue;let i=0,o=t.featureIds.value[0];for(let a=0;a<t.featureIds.value.length;a++){let d=t.featureIds.value[a];d!==o&&(e.push(Ra(t,i,a)),i=a,o=d)}e.push(Ra(t,i,t.featureIds.value.length))}return e}function Ra(r$52,e,t){let i=w1(r$52,e,t),o=A8(r$52,e,t),a=s8(r$52,e,t);return r({type:`Feature`,geometry:i,properties:o},a)}function s8(r,e=0,t){return r.fields&&r.fields[r.featureIds.value[e]]}function A8(r,e=0,t){let i=Object.assign({},r.properties[r.featureIds.value[e]]);for(let o in r.numericProps)i[o]=r.numericProps[o].value[e];return i}var Mu=x(P1(),1);function v8(r){let e=0;for(let t=0,i=r.length-1,o,a;t<r.length;i=t++)o=r[t],a=r[i],e+=(a[0]-o[0])*(o[1]+a[1]);return e}function Su(r,e){if(Array.isArray(r[0])){for(let i of r)Su(i,e);return}let t=r;t[0]/=e,t[1]/=e}function N1(r,e){for(let t=0;t<r.length;++t)r[t]/=e}function Cu(r,e,t){if(typeof r[0][0]!=`number`){for(let d of r)Cu(d,e,t);return}let i=t*Math.pow(2,e.z),o=t*e.x,a=t*e.y;for(let d=0;d<r.length;d++){let m=r[d];m[0]=(m[0]+o)*360/i-180;let b=180-(m[1]+a)*360/i;m[1]=360/Math.PI*Math.atan(Math.exp(b*Math.PI/180))-90}}function F1(r,e,t){let{x:i,y:o,z:a}=e,d=t*Math.pow(2,a),m=t*i,b=t*o;for(let y=0,_=r.length;y<_;y+=2){r[y]=(r[y]+m)*360/d-180;let w=180-(r[y+1]+b)*360/d;r[y+1]=360/Math.PI*Math.atan(Math.exp(w*Math.PI/180))-90}}function k1(r){let e=r.length;if(e<=1)return[r];let t=[],i,o;for(let a=0;a<e;a++){let d=v8(r[a]);d!==0&&(o===void 0&&(o=d<0),o===d<0?(i&&t.push(i),i=[r[a]]):i&&i.push(r[a]))}return i&&t.push(i),t}function O1(r){let e=r.indices.length,t=`Polygon`;if(e<=1)return{type:t,data:r.data,areas:[[de(r.data)]],indices:[r.indices]};let i=[],o=[],a=[],d=[],m,b=0;for(let y,_=0,w;_<e;_++){w=r.indices[_]-b,y=r.indices[_+1]-b||r.data.length;let M=de(r.data.slice(w,y));if(M===0){let k=r.data.slice(0,w),O=r.data.slice(y);r.data=k.concat(O),b+=y-w;continue}m===void 0&&(m=M<0),m===M<0?(d.length&&(i.push(a),o.push(d)),d=[w],a=[M]):(a.push(M),d.push(w))}return a&&i.push(a),d.length&&o.push(d),{type:t,areas:i,indices:o,data:r.data}}var Fa=(()=>{class r$53{properties;extent;type;id;_pbf;_geometry;_keys;_values;_geometryInfo;static types=[`Unknown`,`Point`,`LineString`,`Polygon`];constructor(t,i,o,a,d,m){this.properties={},this.extent=o,this.type=0,this.id=null,this._pbf=t,this._geometry=-1,this._keys=a,this._values=d,this._geometryInfo=m,t.readFields(S8,this,i)}toGeoJSONFeature(t,i){let o=this.loadGeometry();return t===`wgs84`?D1(this,o,a=>Cu(a,i,this.extent)):D1(this,o,Su)}toBinaryFeature(t,i){let o=this.loadFlatGeometry();return t===`wgs84`?this._toBinaryCoordinates(o,a=>F1(a,i,this.extent)):this._toBinaryCoordinates(o,N1)}bbox(){let t=this._pbf;t.pos=this._geometry;let i=t.readVarint()+t.pos,o=1,a=0,d=0,m=0,b=Infinity,y=-Infinity,_=Infinity,w=-Infinity;for(;t.pos<i;){if(a<=0){let S=t.readVarint();o=S&7,a=S>>3}if(a--,o===1||o===2)d+=t.readSVarint(),m+=t.readSVarint(),d<b&&(b=d),d>y&&(y=d),m<_&&(_=m),m>w&&(w=m);else if(o!==7)throw new Error(`unknown command ${o}`)}return[b,_,y,w]}_toBinaryCoordinates(t,i){let o;i(t.data,this.extent);let a=2;switch(this.type){case 1:this._geometryInfo.pointFeaturesCount++,this._geometryInfo.pointPositionsCount+=t.indices.length,o=r({type:`Point`},t);break;case 2:this._geometryInfo.lineFeaturesCount++,this._geometryInfo.linePathsCount+=t.indices.length,this._geometryInfo.linePositionsCount+=t.data.length/a,o=r({type:`LineString`},t);break;case 3:o=O1(t),this._geometryInfo.polygonFeaturesCount++,this._geometryInfo.polygonObjectsCount+=o.indices.length;for(let m of o.indices)this._geometryInfo.polygonRingsCount+=m.length;this._geometryInfo.polygonPositionsCount+=o.data.length/a;break;default:throw new Error(`Invalid geometry type: ${this.type}`)}let d={type:`Feature`,geometry:o,properties:this.properties};return this.id!==null&&(d.id=this.id),d}loadGeometry(){let t=this._pbf;t.pos=this._geometry;let i=t.readVarint()+t.pos,o=1,a=0,d=0,m=0,b=[],y;for(;t.pos<i;){if(a<=0){let _=t.readVarint();o=_&7,a=_>>3}switch(a--,o){case 1:case 2:d+=t.readSVarint(),m+=t.readSVarint(),o===1&&(y&&b.push(y),y=[]),y&&y.push([d,m]);break;case 7:y&&y.push(y[0].slice());break;default:throw new Error(`unknown command ${o}`)}}return y&&b.push(y),b}loadFlatGeometry(){let t=this._pbf;t.pos=this._geometry;let i=t.readVarint()+t.pos,o=1,a,d=0,m=0,b=0,y=0,_=[],w=[];for(;t.pos<i;)if(d<=0&&(a=t.readVarint(),o=a&7,d=a>>3),d--,o===1||o===2)m+=t.readSVarint(),b+=t.readSVarint(),o===1&&_.push(y),w.push(m,b),y+=2;else if(o===7){if(y>0){let S=_[_.length-1];w.push(w[S],w[S+1]),y+=2}}else throw new Error(`unknown command ${o}`);return{data:w,indices:_}}}return r$53})();function D1(r,e,t){let i=Fa.types[r.type],o,a,d;switch(r.type){case 1:let b=[];for(o=0;o<e.length;o++)b[o]=e[o][0];d=b,t(d,r.extent);break;case 2:for(d=e,o=0;o<d.length;o++)t(d[o],r.extent);break;case 3:for(d=k1(e),o=0;o<d.length;o++)for(a=0;a<d[o].length;a++)t(d[o][a],r.extent);break;default:throw new Error(`illegal vector tile type`)}d.length===1?d=d[0]:i=`Multi${i}`;let m={type:`Feature`,geometry:{type:i,coordinates:d},properties:r.properties};return r.id!==null&&(m.id=r.id),m}function S8(r,e,t){e&&t&&(r===1?e.id=t.readVarint():r===2?C8(t,e):r===3?e.type=t.readVarint():r===4&&(e._geometry=t.pos))}function C8(r,e){let t=r.readVarint()+r.pos;for(;r.pos<t;){let i=e._keys[r.readVarint()],o=e._values[r.readVarint()];e.properties[i]=o}}var ka=class{version;name;extent;length;_pbf;_keys;_values;_features;constructor(e,t){this.version=1,this.name=``,this.extent=4096,this.length=0,this._pbf=e,this._keys=[],this._values=[],this._features=[],e.readFields(I8,this,t),this.length=this._features.length}getGeoJSONFeature(e){if(e<0||e>=this._features.length)throw new Error(`feature index out of bounds`);this._pbf.pos=this._features[e];let t=this._pbf.readVarint()+this._pbf.pos;return new Fa(this._pbf,t,this.extent,this._keys,this._values)}getBinaryFeature(e,t){if(e<0||e>=this._features.length)throw new Error(`feature index out of bounds`);this._pbf.pos=this._features[e];let i=this._pbf.readVarint()+this._pbf.pos;return new Fa(this._pbf,i,this.extent,this._keys,this._values,t)}};function I8(r,e,t){e&&t&&(r===15?e.version=t.readVarint():r===1?e.name=t.readString():r===5?e.extent=t.readVarint():r===2?e._features.push(t.pos):r===3?e._keys.push(t.readString()):r===4&&e._values.push(M8(t)))}function M8(r){let e=null,t=r.readVarint()+r.pos;for(;r.pos<t;){let i=r.readVarint()>>3;e=i===1?r.readString():i===2?r.readFloat():i===3?r.readDouble():i===4?r.readVarint64():i===5?r.readVarint():i===6?r.readSVarint():i===7?r.readBoolean():null}return e}var ds=class{layers;constructor(e,t){this.layers=e.readFields(L8,{},t)}};function L8(r,e,t){if(r===3&&t){let i=new ka(t,t.readVarint()+t.pos);i.length&&e&&(e[i.name]=i)}}function Lu(r,e){let t=P8(e),i=e?.gis?.format||e?.mvt?.shape||e?.shape;switch(i){case`columnar-table`:return{shape:`columnar-table`,data:Iu(r,t)};case`geojson-table`:return{shape:`geojson-table`,type:`FeatureCollection`,features:B1(r,t)};case`geojson`:return B1(r,t);case`binary-geometry`:return Iu(r,t);case`binary`:return Iu(r,t);default:throw new Error(i||`undefined shape`)}}function Iu(r,e){let[t,i]=R8(r,e),o=La(t,i);return o.byteLength=r.byteLength,o}function R8(r,e){let t=[],i={coordLength:2,pointPositionsCount:0,pointFeaturesCount:0,linePositionsCount:0,linePathsCount:0,lineFeaturesCount:0,polygonPositionsCount:0,polygonObjectsCount:0,polygonRingsCount:0,polygonFeaturesCount:0};if(r.byteLength<=0)return[t,i];let o=new ds(new Mu.default(r));return(e&&Array.isArray(e.layers)?e.layers:Object.keys(o.layers)).forEach(d=>{let m=o.layers[d];if(m)for(let b=0;b<m.length;b++){let _=F8(m.getBinaryFeature(b,i),e,d);t.push(_)}}),[t,i]}function B1(r,e){if(r.byteLength<=0)return[];let t=[],i=new ds(new Mu.default(r));return(Array.isArray(e.layers)?e.layers:Object.keys(i.layers)).forEach(a=>{let d=i.layers[a];if(d)for(let m=0;m<d.length;m++){let y=N8(d.getGeoJSONFeature(m),e,a);t.push(y)}}),t}function P8(r){if(!r?.mvt)throw new Error(`mvt options required`);if(r.mvt?.coordinates===`wgs84`&&!r.mvt.tileIndex)throw new Error(`MVT Loader: WGS84 coordinates need tileIndex property`);return r.gis&&Hu.warn(`MVTLoader: "options.gis" is deprecated, use "options.mvt.shape" instead`)(),r.mvt}function N8(r,e,t){let i=r.toGeoJSONFeature(e.coordinates||`local`,e.tileIndex);return e.layerProperty&&(i.properties||={},i.properties[e.layerProperty]=t),i}function F8(r,e,t){let i=r.toBinaryFeature(e.coordinates||`local`,e.tileIndex);return e.layerProperty&&i.properties&&(i.properties[e.layerProperty]=t),i}var Oa=s(r({},{name:`Mapbox Vector Tile`,id:`mvt`,module:`mvt`,extensions:[`mvt`,`pbf`],mimeTypes:[`application/vnd.mapbox-vector-tile`,`application/x-protobuf`],category:`geometry`}),{dataType:null,batchType:null,version:`4.5.1`,worker:!0,options:{mvt:{shape:`geojson`,coordinates:`local`,layerProperty:`layerName`,layers:void 0,tileIndex:void 0}}});s(r({},Oa),{parse:async(r,e)=>Lu(r,e),parseSync:Lu,binary:!0});var D8={Point:G1,MultiPoint:B8,LineString:j1,MultiLineString:U8,Polygon:V1,MultiPolygon:G8};function G1([r,e],[t,i],o){let a=Ni$1(t[0],i[0],r),d=Ni$1(t[1],i[1],e);return o.unprojectFlat([a,d])}function Ru(r,e,t){return r.map(i=>G1(i,e,t))}function B8(r,e,t){return Ru(r,e,t)}function j1(r,e,t){return Ru(r,e,t)}function U8(r,e,t){return r.map(i=>j1(i,e,t))}function V1(r,e,t){return r.map(i=>Ru(i,e,t))}function G8(r,e,t){return r.map(i=>V1(i,e,t))}function z1(r$54,e,t){let a=[t.projectFlat([e.west,e.north]),t.projectFlat([e.east,e.south])];return s(r({},r$54),{coordinates:D8[r$54.type](r$54.coordinates,a,t)})}var j8=[`points`,`lines`,`polygons`];function Pu(r,e,t,i){for(let o of j8){let a=r[o]&&V8(r[o],e,t,i);if(a>=0)return a}return-1}function V8(r,e,t,i){let o=r.featureIds.value;if(!o.length)return-1;let a=0,d=o[o.length-1]+1;if(i){let b=z8(r,i);if(b)a=b[0],d=b[1]+1;else return-1}let m=-1;if(e in r.numericProps){let b=r.numericProps[e].value.findIndex((y,_)=>y===t&&o[_]>=a&&o[_]<d);return b>=0?r.globalFeatureIds.value[b]:-1}else e?m=H1(r.properties,b=>b[e]===t,a,d):r.fields&&(m=H1(r.fields,b=>b.id===t,a,d));return m>=0?H8(r,m):-1}function z8(r,e){if(!r.__layers){let t={},{properties:i}=r;for(let o=0;o<i.length;o++){let{layerName:a}=i[o];a&&(t[a]?t[a][1]=o:t[a]=[o,o])}r.__layers=t}return r.__layers[e]}function H8(r,e){if(!r.__ids){let t=[],i=r.featureIds.value,o=r.globalFeatureIds.value;for(let a=0;a<i.length;a++)t[i[a]]=o[a];r.__ids=t}return r.__ids[e]}function H1(r,e,t,i){for(let o=t;o<i;o++)if(e(r[o],o))return o;return-1}var Nu=512;var q8=s(r({},br.defaultProps),{data:vn,onDataLoad:{type:`function`,value:null,optional:!0,compare:!1},uniqueIdProperty:``,highlightedFeatureId:null,loaders:[Oa],binary:!0});var Q8=(()=>{class r$55 extends Gi{initializeState(){super.initializeState();let t=this.context.viewport.resolution!==void 0?!1:this.props.binary;this.setState({binary:t,data:null,tileJSON:null,hoveredFeatureId:null,hoveredFeatureLayerName:null})}get isLoaded(){return!!(this.state?.data&&super.isLoaded)}updateState({props:t,oldProps:i,context:o,changeFlags:a}){a.dataChanged&&this._updateTileData(),this.state?.data&&(super.updateState({props:t,oldProps:i,context:o,changeFlags:a}),this._setWGS84PropertyForTiles());let{highlightColor:d}=t;d!==i.highlightColor&&Array.isArray(d)&&this.setState({highlightColor:d})}async _updateTileData(){let t=this.props.data,i=null;if(typeof t==`string`&&!Pc(t)){let{onDataLoad:o,fetch:a}=this.props;this.setState({data:null,tileJSON:null});try{i=await a(t,{propName:`data`,layer:this,loaders:[]})}catch(d){this.raiseError(d,`loading TileJSON`),t=null}o&&o(i,{propName:`data`,layer:this})}else t&&typeof t==`object`&&`tilejson`in t&&(i=t);i&&(t=i.tiles),this.setState({data:t,tileJSON:i})}_getTilesetOptions(){let t=super._getTilesetOptions(),i=this.state.tileJSON,{minZoom:o,maxZoom:a}=this.props;return i&&(Number.isFinite(i.minzoom)&&i.minzoom>o&&(t.minZoom=i.minzoom),Number.isFinite(i.maxzoom)&&(!Number.isFinite(a)||i.maxzoom<a)&&(t.maxZoom=i.maxzoom)),t}renderLayers(){return this.state?.data?super.renderLayers():null}getTileData(t){let{data:i,binary:o}=this.state,{index:a,signal:d}=t,m=An(i,t);if(!m)return Promise.reject(`Invalid URL`);let b=this.getLoadOptions(),{fetch:y}=this.props;return b=s(r({},b),{core:s(r({},b?.core),{mimeType:`application/x-protobuf`}),mvt:s(r({},b?.mvt),{shape:o?`binary`:`geojson`,coordinates:this.context.viewport.resolution?`wgs84`:`local`,tileIndex:a})}),y(m,{propName:`data`,layer:this,loadOptions:b,signal:d})}renderSubLayers(t){let{x:i,y:o,z:a}=t.tile.index,d=Math.pow(2,a),m=Nu/d,b=-m,y=Nu*i/d,_=Nu*(1-o/d),w=new U().scale([m,b,1]);t.autoHighlight=!1,this.context.viewport.resolution||(t.modelMatrix=w,t.coordinateOrigin=[y,_,0],t.coordinateSystem=ns$1.CARTESIAN,t.extensions=[...t.extensions||[],new yu]);let S=super.renderSubLayers(t);return this.state.binary&&!(S instanceof br)&&A.warn(`renderSubLayers() must return GeoJsonLayer when using binary:true`)(),S}_updateAutoHighlight(t){let{uniqueIdProperty:i}=this.props,{hoveredFeatureId:o,hoveredFeatureLayerName:a}=this.state,d=t.object,m=null,b=null;d&&(m=Fu(d,i),b=q1(d));let{highlightColor:y}=this.props;typeof y==`function`&&(y=y(t)),(o!==m||a!==b)&&this.setState({highlightColor:y,hoveredFeatureId:m,hoveredFeatureLayerName:b})}_isWGS84(){return!!this.context.viewport.resolution}getPickingInfo(t){let i=super.getPickingInfo(t);if(this.state.binary&&i.index!==-1){let{data:o}=t.sourceLayer.props;i.object=hs(o,{globalFeatureId:i.index})}return i.object&&!this._isWGS84()&&(i.object=Q1(i.object,i.tile.bbox,this.context.viewport)),i}getSubLayerPropsByTile(t){return{highlightedObjectIndex:this.getHighlightedObjectIndex(t),highlightColor:this.state.highlightColor}}getHighlightedObjectIndex(t){let{hoveredFeatureId:i,hoveredFeatureLayerName:o,binary:a}=this.state,{uniqueIdProperty:d,highlightedFeatureId:m}=this.props,b=t.content,y=W1(m);if(!(W1(i)||y))return-1;let w=y?m:i;return Array.isArray(b)?b.findIndex(S=>{let M=Fu(S,d)===w,k=y||q1(S)===o;return M&&k}):b&&a?Pu(b,d,w,y?``:o):-1}_pickObjects(t){let{deck:i,viewport:o}=this.context,a=o.width,d=o.height,m=o.x,b=o.y,y=[this.id];return i.pickObjects({x:m,y:b,width:a,height:d,layerIds:y,maxObjects:t})}getRenderedFeatures(t=null){let i=this._pickObjects(t),o=new Set,a=[];for(let d of i){let m=Fu(d.object,this.props.uniqueIdProperty);m===void 0?a.push(d.object):o.has(m)||(o.add(m),a.push(d.object))}return a}_setWGS84PropertyForTiles(){let t=`dataInWGS84`;this.state.tileset.selectedTiles.forEach(o=>{o.hasOwnProperty(t)||Object.defineProperty(o,t,{get:()=>{if(!o.content)return null;if(this.state.binary&&Array.isArray(o.content)&&!o.content.length)return[];let{bbox:a}=o;if(o._contentWGS84===void 0&&Nc(a))o._contentWGS84=(this.state.binary?hs(o.content):o.content).map(m=>Q1(m,a,this.context.viewport));return o._contentWGS84}})})}}return r$55.layerName=`MVTLayer`,r$55.defaultProps=q8,r$55})();function Fu(r,e){if(r.properties&&e)return r.properties[e];if(`id`in r)return r.id}function q1(r){return r.properties?.layerName||null}function W1(r){return r!=null&&r!==``}function Q1(r$56,e,t){let i=s(r({},r$56),{geometry:{type:r$56.geometry.type}});return Object.defineProperty(i.geometry,"coordinates",{get:()=>z1(r$56.geometry,e,t).coordinates}),i}var K1=`0123456789bcdefghjkmnpqrstuvwxyz`;var X1={};for(let r=0;r<K1.length;r++)X1[K1.charAt(r)]=r;var K8=-90;var X8=90;var Y8=-180;var J8=180;function Z8(r){let e=!0,t=X8,i=K8,o=J8,a=Y8,d,m=0;for(let b=0,y=r.length;b<y;b++){m=X1[r[b].toLowerCase()];for(let w=4;w>=0;w--){let S=m>>w&1;e?(d=(o+a)/2,S===1?a=d:o=d):(d=(t+i)/2,S===1?i=d:t=d),e=!e}}return[i,a,t,o]}function Y1(r){let[e,t,i,o]=Z8(r);return[o,i,o,e,t,e,t,i,o,i]}var $8={getGeohash:{type:`accessor`,value:r=>r.geohash}};var tL=(()=>{class r extends Pr{indexToBounds(){let{data:t,getGeohash:i}=this.props;return{data:t,_normalize:!1,positionFormat:`XY`,getPolygon:(o,a)=>Y1(i(o,a))}}}return r.layerName=`GeohashLayer`,r.defaultProps=$8,r})();
|
|
1146
|
+
/*! Bundled license information:
|
|
1147
|
+
|
|
1148
|
+
long/dist/long.js:
|
|
1149
|
+
(**
|
|
1150
|
+
* @license long.js (c) 2013 Daniel Wirtz <dcode@dcode.io>
|
|
1151
|
+
* Released under the Apache License, Version 2.0
|
|
1152
|
+
* see: https://github.com/dcodeIO/long.js for details
|
|
1153
|
+
*)
|
|
1154
|
+
|
|
1155
|
+
ieee754/index.js:
|
|
1156
|
+
(*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> *)
|
|
1157
|
+
|
|
1158
|
+
long/index.js:
|
|
1159
|
+
(**
|
|
1160
|
+
* @license
|
|
1161
|
+
* Copyright 2009 The Closure Library Authors
|
|
1162
|
+
* Copyright 2020 Daniel Wirtz / The long.js Authors.
|
|
1163
|
+
*
|
|
1164
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
1165
|
+
* you may not use this file except in compliance with the License.
|
|
1166
|
+
* You may obtain a copy of the License at
|
|
1167
|
+
*
|
|
1168
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
1169
|
+
*
|
|
1170
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1171
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
1172
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1173
|
+
* See the License for the specific language governing permissions and
|
|
1174
|
+
* limitations under the License.
|
|
1175
|
+
*
|
|
1176
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1177
|
+
*)
|
|
1178
|
+
*/
|
|
1179
|
+
export{p_ as A5Layer,tL as GeohashLayer,Zw as GreatCircleLayer,iv as H3ClusterLayer,kc as H3HexagonLayer,Q8 as MVTLayer,hE as QuadkeyLayer,cE as S2Layer,UM as TerrainLayer,mM as Tile3DLayer,Gi as TileLayer,ZE as TripsLayer,Pr as _GeoCellLayer,ki as _Tile2DHeader,Ui as _Tileset2D,Xw as _WMSLayer,An as _getURLFromTemplate};
|
|
1180
|
+
//# debugId=8c828dfd-51a2-5a15-9b70-426f5705fb1f
|