@mapvx/web-components-ssr 1.6.1 → 1.7.0-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -17
- package/dist/browser/chunk-BcTPI0Ei.js +4336 -0
- package/dist/browser/chunk-BxefRtM9.js +3 -0
- package/dist/browser/chunk-C64ZrtDH.js +348 -0
- package/dist/browser/chunk-C7x5ioh5.js +6148 -0
- package/dist/browser/chunk-C8XJWaI5.js +2 -0
- package/dist/browser/chunk-CHv413eO.js +13 -0
- package/dist/browser/chunk-CRCKWzfw.js +3 -0
- package/dist/browser/chunk-CYtO4qrL.js +3 -0
- package/dist/browser/chunk-CgRco1rJ.js +2 -0
- package/dist/browser/chunk-CwafJShv.js +3 -0
- package/dist/browser/chunk-D6zG2upO.js +1180 -0
- package/dist/browser/chunk-DIEcQ4a-.js +1318 -0
- package/dist/browser/chunk-DtPiRK4g.js +3 -0
- package/dist/browser/chunk-FjUzkN6v.js +2 -0
- package/dist/browser/chunk-KW-jIWmp.js +3 -0
- package/dist/browser/chunk-sqKVpUVP.js +4116 -0
- package/dist/browser/main.js +552 -533
- package/dist/browser/styles.css +1 -1
- package/dist/types/public-api.d.ts +90 -24
- package/package.json +40 -33
- package/dist/browser/chunk-Bjk3HkK2.js +0 -2
- package/dist/browser/chunk-CCaUxYwr.js +0 -2
- package/dist/browser/chunk-CP_etSVX.js +0 -4343
- package/dist/browser/chunk-CTFjnL_B.js +0 -1
- 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-DsKCGfdq.js +0 -1
- package/dist/browser/chunk-LltjhLJU.js +0 -4115
- 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$1,D as Y,I as f,Q as x$1,_ as P,h as N,i as C,v as Qe}from"./chunk-CHv413eO.js";import{$ as re,A as Zr,D as Zn$1,E as Z,F as ge$1,G as mt$1,H as kt$1,I as gi,L as gr,M as ed$1,N as ei$1,P as ga$1,Q as rd$1,T as Yd$1,V as ka$1,W as mi,Y as pi,a as Hi$1,c as Kd$1,f as Mt,h as Oi$1,it as za$1,j as cr,k as Zp$1,l as Ko$1,n as De,nt as tt,o as Ho$1,p as Nt$1,r as Ga$1,rt as ue,t as Bi$1,tt as ti$1,u as Kr$1,v as Qr$1,x as V,y as U}from"./chunk-C7x5ioh5.js";import{A as fu$1,B as oe,C as Yr,D as dn,E as cu$1,F as lo$1,G as uu$1,H as rt$1,I as lu$1,K as vu$1,L as ma$1,P as ir$1,R as ne,S as Xl$1,T as ao$1,U as ru$1,V as qd$1,W as ut,Y as xe,Z as zl$1,a as B,b as Vn$1,c as F,d as Je$1,f as Ka,g as No,h as Nn,i as As$1,j as gi$1,k as eu$1,l as Fr$1,m as Mt$1,n as $s,o as Cs$1,p as Ku,q as wi$1,r as Ao$1,t as $d$1,v as S,w as _m$1,x as Wa$1,y as Tm$1,z as nt}from"./chunk-DIEcQ4a-.js";import{_ as ze,a as Gn$1,c as Tt$1,d as er,g as ye$1,n as Cn$1,o as Lr,p as gn,u as Zn$2}from"./chunk-BcTPI0Ei.js";var Bc=v((jp,$o)=>{"use strict";(function(r,e){typeof define==`function`&&define.amd?define([],e):typeof t==`function`&&typeof $o==`object`&&$o&&$o.exports?$o.exports=e():(r.dcodeIO=r.dcodeIO||{}).Long=e()})(jp,function(){"use strict";function r(z,O,ue){this.low=z|0,this.high=O|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 s(z,O){var ue,we,Ee;return O?(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=s;function a(z,O){if(isNaN(z)||!isFinite(z))return O?j:W;if(O){if(z<0)return j;if(z>=R)return ne}else{if(z<=-D)return le;if(z+1>=D)return te}return z<0?a(-z,O).neg():d(z%C|0,z/C|0,O)}r.fromNumber=a;function d(z,O,ue){return new r(z,O,ue)}r.fromBits=d;var m=Math.pow;function b(z,O,ue){if(z.length===0)throw Error(`empty string`);if(z===`NaN`||z===`Infinity`||z===`+Infinity`||z===`-Infinity`)return W;if(typeof O==`number`?(ue=O,O=!1):O=!!O,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),O,ue).neg();for(var Ee=a(m(ue,8)),xe=W,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));xe=xe.mul(Ge).add(a(Oe))}else xe=xe.mul(Ee),xe=xe.add(a(Oe))}return xe.unsigned=O,xe}r.fromString=b;function _(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=_;var x=65536,w=1<<24,C=x*x,R=C*C,D=R/2,k=s(w),W=s(0);r.ZERO=W;var j=s(0,!0);r.UZERO=j;var V=s(1);r.ONE=V;var J=s(1,!0);r.UONE=J;var $=s(-1);r.NEG_ONE=$;var te=d(-1,2147483647,!1);r.MAX_VALUE=te;var ne=d(-1,-1,!0);r.MAX_UNSIGNED_VALUE=ne;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)*C+(this.low>>>0):this.high*C+(this.low>>>0)},Y.toString=function(O){if(O=O||10,O<2||36<O)throw RangeError(`radix`);if(this.isZero())return`0`;if(this.isNegative())if(this.eq(le)){var ue=a(O),we=this.div(ue),Ee=we.mul(ue).sub(this);return we.toString(O)+Ee.toInt().toString(O)}else return`-`+this.neg().toString(O);for(var xe=a(m(O,6),this.unsigned),Ne=this,Fe=``;;){var Oe=Ne.div(xe),qe=(Ne.sub(Oe.mul(xe)).toInt()>>>0).toString(O);if(Ne=Oe,Ne.isZero())return qe+Fe;for(;qe.length<6;)qe=`0`+qe;Fe=``+qe+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 O=this.high!=0?this.high:this.low,ue=31;ue>0&&(O&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(O){return e(O)||(O=_(O)),this.unsigned!==O.unsigned&&this.high>>>31===1&&O.high>>>31===1?!1:this.high===O.high&&this.low===O.low},Y.eq=Y.equals,Y.notEquals=function(O){return!this.eq(O)},Y.neq=Y.notEquals,Y.lessThan=function(O){return this.comp(O)<0},Y.lt=Y.lessThan,Y.lessThanOrEqual=function(O){return this.comp(O)<=0},Y.lte=Y.lessThanOrEqual,Y.greaterThan=function(O){return this.comp(O)>0},Y.gt=Y.greaterThan,Y.greaterThanOrEqual=function(O){return this.comp(O)>=0},Y.gte=Y.greaterThanOrEqual,Y.compare=function(O){if(e(O)||(O=_(O)),this.eq(O))return 0;var ue=this.isNegative(),we=O.isNegative();return ue&&!we?-1:!ue&&we?1:this.unsigned?O.high>>>0>this.high>>>0||O.high===this.high&&O.low>>>0>this.low>>>0?-1:1:this.sub(O).isNegative()?-1:1},Y.comp=Y.compare,Y.negate=function(){return!this.unsigned&&this.eq(le)?le:this.not().add(V)},Y.neg=Y.negate,Y.add=function(O){e(O)||(O=_(O));var ue=this.high>>>16,we=this.high&65535,Ee=this.low>>>16,xe=this.low&65535,Ne=O.high>>>16,Fe=O.high&65535,Oe=O.low>>>16,Ge=O.low&65535,qe=0,je=0,He=0,vt=0;return vt+=xe+Ge,He+=vt>>>16,vt&=65535,He+=Ee+Oe,je+=He>>>16,He&=65535,je+=we+Fe,qe+=je>>>16,je&=65535,qe+=ue+Ne,qe&=65535,d(He<<16|vt,qe<<16|je,this.unsigned)},Y.subtract=function(O){return e(O)||(O=_(O)),this.add(O.neg())},Y.sub=Y.subtract,Y.multiply=function(O){if(this.isZero()||(e(O)||(O=_(O)),O.isZero()))return W;if(this.eq(le))return O.isOdd()?le:W;if(O.eq(le))return this.isOdd()?le:W;if(this.isNegative())return O.isNegative()?this.neg().mul(O.neg()):this.neg().mul(O).neg();if(O.isNegative())return this.mul(O.neg()).neg();if(this.lt(k)&&O.lt(k))return a(this.toNumber()*O.toNumber(),this.unsigned);var ue=this.high>>>16,we=this.high&65535,Ee=this.low>>>16,xe=this.low&65535,Ne=O.high>>>16,Fe=O.high&65535,Oe=O.low>>>16,Ge=O.low&65535,qe=0,je=0,He=0,vt=0;return vt+=xe*Ge,He+=vt>>>16,vt&=65535,He+=Ee*Ge,je+=He>>>16,He&=65535,He+=xe*Oe,je+=He>>>16,He&=65535,je+=we*Ge,qe+=je>>>16,je&=65535,je+=Ee*Oe,qe+=je>>>16,je&=65535,je+=xe*Fe,qe+=je>>>16,je&=65535,qe+=ue*Ge+we*Oe+Ee*Fe+xe*Ne,qe&=65535,d(He<<16|vt,qe<<16|je,this.unsigned)},Y.mul=Y.multiply,Y.divide=function(O){if(e(O)||(O=_(O)),O.isZero())throw Error(`division by zero`);if(this.isZero())return this.unsigned?j:W;var ue,we,Ee;if(this.unsigned){if(O.unsigned||(O=O.toUnsigned()),O.gt(this))return j;if(O.gt(this.shru(1)))return J;Ee=j}else{if(this.eq(le)){if(O.eq(V)||O.eq($))return le;if(O.eq(le))return V;return ue=this.shr(1).div(O).shl(1),ue.eq(W)?O.isNegative()?V:$:(we=this.sub(O.mul(ue)),Ee=ue.add(we.div(O)),Ee)}else if(O.eq(le))return this.unsigned?j:W;if(this.isNegative())return O.isNegative()?this.neg().div(O.neg()):this.neg().div(O).neg();if(O.isNegative())return this.div(O.neg()).neg();Ee=W}for(we=this;we.gte(O);){ue=Math.max(1,Math.floor(we.toNumber()/O.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(O);Ge.isNegative()||Ge.gt(we);)ue-=Fe,Oe=a(ue,this.unsigned),Ge=Oe.mul(O);Oe.isZero()&&(Oe=V),Ee=Ee.add(Oe),we=we.sub(Ge)}return Ee},Y.div=Y.divide,Y.modulo=function(O){return e(O)||(O=_(O)),this.sub(this.div(O).mul(O))},Y.mod=Y.modulo,Y.not=function(){return d(~this.low,~this.high,this.unsigned)},Y.and=function(O){return e(O)||(O=_(O)),d(this.low&O.low,this.high&O.high,this.unsigned)},Y.or=function(O){return e(O)||(O=_(O)),d(this.low|O.low,this.high|O.high,this.unsigned)},Y.xor=function(O){return e(O)||(O=_(O)),d(this.low^O.low,this.high^O.high,this.unsigned)},Y.shiftLeft=function(O){return e(O)&&(O=O.toInt()),(O&=63)===0?this:O<32?d(this.low<<O,this.high<<O|this.low>>>32-O,this.unsigned):d(0,this.low<<O-32,this.unsigned)},Y.shl=Y.shiftLeft,Y.shiftRight=function(O){return e(O)&&(O=O.toInt()),(O&=63)===0?this:O<32?d(this.low>>>O|this.high<<32-O,this.high>>O,this.unsigned):d(this.high>>O-32,this.high>=0?0:-1,this.unsigned)},Y.shr=Y.shiftRight,Y.shiftRightUnsigned=function(O){if(e(O)&&(O=O.toInt()),O&=63,O===0)return this;var ue=this.high;if(O<32){var we=this.low;return d(we>>>O|ue<<32-O,ue>>>O,this.unsigned)}else return O===32?d(ue,0,this.unsigned):d(ue>>>O-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,O=this.low;return[O&255,O>>>8&255,O>>>16&255,O>>>24&255,z&255,z>>>8&255,z>>>16&255,z>>>24&255]},Y.toBytesBE=function(){var z=this.high,O=this.low;return[z>>>24&255,z>>>16&255,z>>>8&255,z&255,O>>>24&255,O>>>16&255,O>>>8&255,O&255]},r})});var O1=v(Bu=>{"use strict";Bu.read=function(r,e,t,i,s){var a,d,m=s*8-i-1,b=(1<<m)-1,_=b>>1,x=-7,w=t?s-1:0,C=t?-1:1,R=r[e+w];for(w+=C,a=R&(1<<-x)-1,R>>=-x,x+=m;x>0;a=a*256+r[e+w],w+=C,x-=8);for(d=a&(1<<-x)-1,a>>=-x,x+=i;x>0;d=d*256+r[e+w],w+=C,x-=8);if(a===0)a=1-_;else{if(a===b)return d?NaN:(R?-1:1)*(1/0);d=d+Math.pow(2,i),a=a-_}return(R?-1:1)*d*Math.pow(2,a-i)};Bu.write=function(r,e,t,i,s,a){var d,m,b,_=a*8-s-1,x=(1<<_)-1,w=x>>1,C=s===23?Math.pow(2,-24)-Math.pow(2,-77):0,R=i?0:a-1,D=i?1:-1,k=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(m=isNaN(e)?1:0,d=x):(d=Math.floor(Math.log(e)/Math.LN2),e*(b=Math.pow(2,-d))<1&&(d--,b*=2),d+w>=1?e+=C/b:e+=C*Math.pow(2,1-w),e*b>=2&&(d++,b/=2),d+w>=x?(m=0,d=x):d+w>=1?(m=(e*b-1)*Math.pow(2,s),d=d+w):(m=e*Math.pow(2,w-1)*Math.pow(2,s),d=0));s>=8;r[t+R]=m&255,R+=D,m/=256,s-=8);for(d=d<<s|m,_+=s;_>0;r[t+R]=d&255,R+=D,d/=256,_-=8);r[t+R-D]|=k*128}});var V1=v((Pq,j1)=>{"use strict";j1.exports=et;var Ka=O1();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 Du=4294967296,B1=1/Du,Z8=12,G1=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(),s=i>>3,a=this.pos;this.type=i&7,r(s,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=Xa(this.buf,this.pos);return this.pos+=4,r},readSFixed32:function(){var r=U1(this.buf,this.pos);return this.pos+=4,r},readFixed64:function(){var r=Xa(this.buf,this.pos)+Xa(this.buf,this.pos+4)*Du;return this.pos+=8,r},readSFixed64:function(){var r=Xa(this.buf,this.pos)+U1(this.buf,this.pos+4)*Du;return this.pos+=8,r},readFloat:function(){var r=Ka.read(this.buf,this.pos,!0,23,4);return this.pos+=4,r},readDouble:function(){var r=Ka.read(this.buf,this.pos,!0,52,8);return this.pos+=8,r},readVarint:function(r){var e=this.buf,t,i=e[this.pos++];return 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,$8(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>=Z8&&G1?hM(this.buf,e,r):fM(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),mo(this.buf,r,this.pos),this.pos+=4},writeSFixed32:function(r){this.realloc(4),mo(this.buf,r,this.pos),this.pos+=4},writeFixed64:function(r){this.realloc(8),mo(this.buf,r&-1,this.pos),mo(this.buf,Math.floor(r*B1),this.pos+4),this.pos+=8},writeSFixed64:function(r){this.realloc(8),mo(this.buf,r&-1,this.pos),mo(this.buf,Math.floor(r*B1),this.pos+4),this.pos+=8},writeVarint:function(r){if(r=+r||0,r>268435455||r<0){eM(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=dM(this.buf,r,this.pos);var t=this.pos-e;t>=128&&D1(e,t,this),this.pos=e-1,this.writeVarint(t),this.pos+=t},writeFloat:function(r){this.realloc(4),Ka.write(this.buf,r,this.pos,!0,23,4),this.pos+=4},writeDouble:function(r){this.realloc(8),Ka.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&&D1(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,nM,e)},writePackedSVarint:function(r,e){e.length&&this.writeMessage(r,iM,e)},writePackedBoolean:function(r,e){e.length&&this.writeMessage(r,AM,e)},writePackedFloat:function(r,e){e.length&&this.writeMessage(r,oM,e)},writePackedDouble:function(r,e){e.length&&this.writeMessage(r,sM,e)},writePackedFixed32:function(r,e){e.length&&this.writeMessage(r,aM,e)},writePackedSFixed32:function(r,e){e.length&&this.writeMessage(r,cM,e)},writePackedFixed64:function(r,e){e.length&&this.writeMessage(r,lM,e)},writePackedSFixed64:function(r,e){e.length&&this.writeMessage(r,uM,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 $8(r,e,t){var i=t.buf,s,a=i[t.pos++];if(s=(a&112)>>4,a<128||(a=i[t.pos++],s|=(a&127)<<3,a<128)||(a=i[t.pos++],s|=(a&127)<<10,a<128)||(a=i[t.pos++],s|=(a&127)<<17,a<128)||(a=i[t.pos++],s|=(a&127)<<24,a<128)||(a=i[t.pos++],s|=(a&1)<<31,a<128))return po(r,s,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 po(r,e,t){return t?e*4294967296+(r>>>0):(e>>>0)*4294967296+(r>>>0)}function eM(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),tM(t,i,e),rM(i,e)}function tM(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 rM(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 D1(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 s=t.pos-1;s>=r;s--)t.buf[s+i]=t.buf[s]}function nM(r,e){for(var t=0;t<r.length;t++)e.writeVarint(r[t])}function iM(r,e){for(var t=0;t<r.length;t++)e.writeSVarint(r[t])}function oM(r,e){for(var t=0;t<r.length;t++)e.writeFloat(r[t])}function sM(r,e){for(var t=0;t<r.length;t++)e.writeDouble(r[t])}function AM(r,e){for(var t=0;t<r.length;t++)e.writeBoolean(r[t])}function aM(r,e){for(var t=0;t<r.length;t++)e.writeFixed32(r[t])}function cM(r,e){for(var t=0;t<r.length;t++)e.writeSFixed32(r[t])}function lM(r,e){for(var t=0;t<r.length;t++)e.writeFixed64(r[t])}function uM(r,e){for(var t=0;t<r.length;t++)e.writeSFixed64(r[t])}function Xa(r,e){return(r[e]|r[e+1]<<8|r[e+2]<<16)+r[e+3]*16777216}function mo(r,e,t){r[t]=e,r[t+1]=e>>>8,r[t+2]=e>>>16,r[t+3]=e>>>24}function U1(r,e){return(r[e]|r[e+1]<<8|r[e+2]<<16)+(r[e+3]<<24)}function fM(r,e,t){for(var i=``,s=e;s<t;){var a=r[s],d=null,m=a>239?4:a>223?3:a>191?2:1;if(s+m>t)break;var b,_,x;m===1?a<128&&(d=a):m===2?(b=r[s+1],(b&192)===128&&(d=(a&31)<<6|b&63,d<=127&&(d=null))):m===3?(b=r[s+1],_=r[s+2],(b&192)===128&&(_&192)===128&&(d=(a&15)<<12|(b&63)<<6|_&63,(d<=2047||d>=55296&&d<=57343)&&(d=null))):m===4&&(b=r[s+1],_=r[s+2],x=r[s+3],(b&192)===128&&(_&192)===128&&(x&192)===128&&(d=(a&15)<<18|(b&63)<<12|(_&63)<<6|x&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),s+=m}return i}function hM(r,e,t){return G1.decode(r.subarray(e,t))}function dM(r,e,t){for(var i=0,s,a;i<e.length;i++){if(s=e.charCodeAt(i),s>55295&&s<57344)if(a)if(s<56320){r[t++]=239,r[t++]=191,r[t++]=189,a=s;continue}else s=a-55296<<10|s-56320|65536,a=null;else{s>56319||i+1===e.length?(r[t++]=239,r[t++]=191,r[t++]=189):a=s;continue}else a&&(r[t++]=239,r[t++]=191,r[t++]=189,a=null);s<128?r[t++]=s:(s<2048?r[t++]=s>>6|192:(s<65536?r[t++]=s>>12|224:(r[t++]=s>>18|240,r[t++]=s>>12&63|128),r[t++]=s>>6&63|128),r[t++]=s&63|128)}return t}});function Nh(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 Dn(r){let e=1/0,t=1/0,i=1/0,s=-1/0,a=-1/0,d=-1/0,m=r.POSITION?r.POSITION.value:[],b=m&&m.length;for(let _=0;_<b;_+=3){let x=m[_],w=m[_+1],C=m[_+2];e=x<e?x:e,t=w<t?w:t,i=C<i?C:i,s=x>s?x:s,a=w>a?w:a,d=C>d?C:d}return[[e,t,i],[s,a,d]]}function q0(r,e,t){let i=Nh(e.value),s=t||Fh(e);return{name:r,type:{type:`fixed-size-list`,listSize:e.size,children:[{name:`value`,type:i}]},nullable:!1,metadata:s}}function Fh(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}var d_=r({},er.defaultProps);var Oo=class extends _m$1{indexToBounds(){return null}renderLayers(){let{elevationScale:e,extruded:t,wireframe:i,filled:s$1,stroked:a,lineWidthUnits:d,lineWidthScale:m,lineWidthMinPixels:b,lineWidthMaxPixels:_,lineAntialiasing:x,lineJointRounded:w,lineMiterLimit:C,lineDashJustified:R,getElevation:D,getFillColor:k,getLineColor:W,getLineWidth:j}=this.props,{updateTriggers:V,material:J,transitions:$}=this.props,te=this.getSubLayerClass(`cell`,er),Y=this.indexToBounds()||{},{updateTriggers:ne}=Y,le=u(Y,[`updateTriggers`]);return new te({filled:s$1,wireframe:i,extruded:t,elevationScale:e,stroked:a,lineWidthUnits:d,lineWidthScale:m,lineWidthMinPixels:b,lineWidthMaxPixels:_,lineAntialiasing:x,lineJointRounded:w,lineMiterLimit:C,lineDashJustified:R,material:J,transitions:$,getElevation:D,getFillColor:k,getLineColor:W,getLineWidth:j},this.getSubLayerProps({id:`cell`,updateTriggers:V&&s(r({},ne),{getElevation:V.getElevation,getFillColor:V.getFillColor,getLineColor:V.getLineColor,getLineWidth:V.getLineWidth})}),le)}};Oo.layerName=`GeoCellLayer`;Oo.defaultProps=d_;var Fr=Oo;function Ad(){let r=new Float64Array(4);return r[0]=1,r[3]=1,r}function p_(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 Vn(){return new Float64Array(2)}function X0(r){let e=new Float64Array(2);return e[0]=r[0],e[1]=r[1],e}function m_(r,e,t){return r[0]=e,r[1]=t,r}function g_(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r}function ad(r,e,t){return r[0]=e[0]*t,r[1]=e[1]*t,r}function b_(r,e,t,i){return r[0]=e[0]+t[0]*i,r[1]=e[1]+t[1]*i,r}function cd(r,e){return r[0]=-e[0],r[1]=-e[1],r}function ld(r){return Math.hypot(r[0],r[1])}function ud(r,e,t,i){let s=e[0],a=e[1];return r[0]=s+i*(t[0]-s),r[1]=a+i*(t[1]-a),r}function T_(r,e,t,i){let s=e[0]-t[0],a=e[1]-t[1],d=Math.sin(i),m=Math.cos(i);return r[0]=s*m-a*d+t[0],r[1]=s*d+a*m+t[1],r}function ic(r,e,t){let i=e[0],s=e[1];return r[0]=t[0]*i+t[2]*s,r[1]=t[1]*i+t[3]*s,r}function fd(r,e,t){let i=e[0],s=e[1];return r[0]=t[0]*i+t[2]*s+t[4],r[1]=t[1]*i+t[3]*s+t[5],r}function Er(){return new Float64Array(3)}function Si(r,e,t){let i=new Float64Array(3);return i[0]=r,i[1]=e,i[2]=t,i}function __(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r}function oA(r,e,t){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r}function H0(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 y_(r){return Math.hypot(r[0],r[1],r[2])}function kh(r,e){return Math.hypot(e[0]-r[0],e[1]-r[1],e[2]-r[2])}function oc(r,e){let t=e[0],i=e[1],s=e[2],a=t*t+i*i+s*s;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 en(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]}function Oh(r,e,t){let i=e[0],s=e[1],a=e[2],d=t[0],m=t[1],b=t[2];return r[0]=s*b-a*m,r[1]=a*d-i*b,r[2]=i*m-s*d,r}function uA(r,e,t){let i=t[0],s=t[1],a=t[2],d=t[3],m=e[0],b=e[1],_=e[2],x=s*_-a*b,w=a*m-i*_,C=i*b-s*m,R=s*C-a*w,D=a*x-i*C,k=i*w-s*x,W=d*2;return x*=W,w*=W,C*=W,R*=2,D*=2,k*=2,r[0]=m+x+R,r[1]=b+w+D,r[2]=_+C+k,r}var mA=(1+Math.sqrt(5))/2;2*Math.PI;var fA=2*Math.PI/5;var Hr=Math.PI/5;var Bh=Math.PI/10;var x_=2*Math.atan(mA);var Y0=Math.PI-x_;-.5*Math.PI+Math.acos(-1/Math.sqrt(3-mA));var gA=(Math.sqrt(5)-1)/2;var w_=3-Math.sqrt(5);var E_=Math.sqrt(3-mA);Math.sqrt(3)*E_/mA;var hA=6371007.2;4*Math.PI*hA*hA;function v_(r,e,t,i){let s=e[0]-r[0],a=e[1]-r[1],d=i[0]-t[0],m=i[1]-t[1],b=s*m-a*d;if(Math.abs(b)<1e-12)return!1;let _=t[0]-r[0],x=t[1]-r[1],w=(_*m-x*d)/b,C=(_*a-x*s)/b;return w>=0&&w<=1&&C>=0&&C<=1}var sc=class J0{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 s=(i+1)%t;e+=(this.vertices[s][0]-this.vertices[i][0])*(this.vertices[s][1]+this.vertices[i][1])}return e}isWindingCorrect(){return this.getArea()>=0}getVertices(){return this.vertices}scale(e){for(let t of this.vertices)ad(t,t,e);return this}rotate180(){for(let e of this.vertices)cd(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)g_(t,t,e);return this}transform(e){for(let t of this.vertices)ic(t,t,e);return this}transform2d(e){for(let t of this.vertices)fd(t,t,e);return this}clone(){return new J0(this.vertices.map(t=>X0(t)))}getCenter(){let e=this.vertices.length;return this.vertices.reduce((i,s)=>[i[0]+s[0]/e,i[1]+s[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 s=0;s<t;s++){let a=this.vertices[s],d=this.vertices[(s+1)%t],m=a[0]-d[0],b=a[1]-d[1],_=e[0]-a[0],x=e[1]-a[1],w=m*x-b*_;if(w<0){let C=Math.sqrt(_*_+x*x);i=Math.min(i,w/C)}}return i}intersectsSegment(e,t){if(this.containsPoint(e)>0||this.containsPoint(t)>0)return!0;let i=this.vertices.length;for(let s=0;s<i;s++){let a=this.vertices[s],d=this.vertices[(s+1)%i];if(v_(e,t,a,d))return!0}return!1}splitEdges(e){if(e<=1)return this;let t=[],i=this.vertices.length;for(let s=0;s<i;s++){let a=this.vertices[s],d=this.vertices[(s+1)%i];t.push(X0(a));for(let m=1;m<e;m++){let b=m/e,_=Vn();ud(_,a,d,b),t.push(_)}}return new J0(t)}};var hd=[0,0];var dd=[0,1];var Gn=[.7885966681787006,1.6149108024237764];var pd=[1.6171013659387945,1.054928690397459];var md=[Math.cos(Bh),Math.sin(Bh)];var S_=2*ld(Gn)*Math.cos(Hr);var C_=Hr-Math.atan2(Gn[1],Gn[0]);var I_=2*gA/S_;[hd,dd,Gn,pd,md].forEach(r=>{ad(r,r,I_),T_(r,r,[0,0],C_)});var gd=new sc([hd,dd,Gn,pd,md]);var bd=Math.atan2(Gn[1],Gn[0])-Hr;var M_=[0,0];var dA=gA/Math.cos(Hr);var Dh=bd+Hr;var xn=[dA*Math.cos(Dh),dA*Math.sin(Dh)];var Uh=bd-Hr;var jn=[dA*Math.cos(Uh),dA*Math.sin(Uh)];var Td=new sc([M_,xn,jn]);var L_=[xn[0],xn[1],jn[0],jn[1]];var sA=1/(xn[0]*jn[1]-jn[0]*xn[1]);jn[1]*sA,-xn[1]*sA,-jn[0]*sA,xn[0]*sA;var R_=new Float64Array([-.0022392098386786394,21308606513250217e-22,-2.559257686421274e-9,33701965267802837e-28,-4667545312611249e-30,667492870384816e-32]);var P_=new Float64Array([.0022392089963541657,28831978048607556e-22,5.08622073997266e-9,102018123778161e-25,21912872306767718e-30,49284235482523806e-33]);var N_=class{applyCoefficients(r,e){let t=Math.sin(r),i=Math.cos(r),s=2*(i-t)*(i+t),a,d;return a=s*e[5]+e[4],d=s*a+e[3],a=s*d-a+e[2],d=s*a-d+e[1],a=s*d-a+e[0],r+2*t*i*a}forward(r){return this.applyCoefficients(r,R_)}inverse(r){return this.applyCoefficients(r,P_)}};var _d=new N_;function Gh(r){return r*(Math.PI/180)}function jh(r){return r*(180/Math.PI)}function Vh(r){return[ld(r),Math.atan2(r[1],r[0])]}function F_([r,e]){return[r*Math.cos(e),r*Math.sin(e)]}function k_(r,[e,t,i]){let s=[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]*s[1]-a[1]*s[0],b=(a[0]*d[1]-a[1]*d[0])/m,_=(s[0]*d[1]-s[1]*d[0])/m;return[b,_,1-(b+_)]}function O_(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 Z0(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 Un([r,e]){let t=Math.sin(e);return[t*Math.cos(r),t*Math.sin(r),Math.cos(e)]}var yd=93;function B_([r,e]){let t=Gh(r+yd),i=Gh(e),s=_d.forward(i);return[t,Math.PI/2-s]}function xd(r){return((r+180)%360+360)%360-180}function wd([r,e]){let t=xd(jh(r)-yd),i=Math.PI/2-e;return[t,jh(_d.inverse(i))]}function D_(r){let e=Er();for(let a=0;a<r.length;a++)__(e,e,Un(B_(r[a])));oc(e,e);let[t,i]=wd(Z0(e));(i>89.99||i<-89.99)&&(t=r[0][0]),t=xd(t);let s=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;s[a]=[d,m]}return s}function U_(){let r=new Float64Array(4);return r[3]=1,r}function G_(r,e){return r[0]=-e[0],r[1]=-e[1],r[2]=-e[2],r[3]=e[3],r}Si(1,0,0);Si(0,1,0);var bA=Math.sqrt(5);var TA=Math.sqrt(.2);var Ed=Math.sqrt((1-TA)/2);var vd=Math.sqrt((1+TA)/2);var AA=.5;var zh=Math.sqrt((2.5-bA)/10);var qh=Math.sqrt((2.5+bA)/10);var Hh=Math.sqrt((1+TA)/8);var Qh=Math.sqrt((1-TA)/8);var Wh=Math.sqrt((3-bA)/8);var Kh=Math.sqrt((3+bA)/8);var aA=[[0,0],[Ed,0],[zh,AA],[-Hh,Wh],[-Hh,-Wh],[zh,-AA],[-vd,0],[-Qh,-Kh],[qh,-AA],[qh,AA],[-Qh,Kh],[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?vd:Ed]);var Sd=[`vu`,`uw`,`vw`,`vw`,`vw`];var Bo=[`wu`,`uw`,`vw`,`vu`,`uw`];var Q0=[`wu`,`uv`,`wv`,`wu`,`uw`];var cA=[`vu`,`uv`,`wv`,`wu`,`uw`];var z_=[Sd,cA,Q0,Bo,Q0,cA,Q0,Bo,Bo,Bo,cA,cA];var q_=[4,2,3,2,0,4,3,2,2,0,3,0];var Xh=[0,1,2,4,3,5,7,8,6,11,10,9];var kr=[];function H_(){lA([0,0],0,aA[0]);for(let r=0;r<5;r++){let e=r*fA,t=e+Hr;lA([e,Y0],Hr,aA[r+1]),lA([t,Math.PI-Y0],Hr,aA[(r+3)%5+6])}lA([0,Math.PI],0,aA[11])}var wi=0;function lA(r,e,t){if(wi>11)throw new Error(`Too many origins: ${wi}`);let i=U_();G_(i,t);let s={id:wi,axis:r,axisCartesian:Un(r),quat:t,inverseQuat:i,angle:e,orientation:z_[wi],firstQuintant:q_[wi]};kr.push(s),wi++}H_();kr.sort((r,e)=>Xh.indexOf(r.id)-Xh.indexOf(e.id));kr.forEach((r,e)=>r.id=e);function Q_(r,e){let t=e.orientation,i=t===Sd||t===Bo?-1:1,s=(r-e.firstQuintant+5)%5,a=t[s];return{quintant:(e.firstQuintant+i*s+5)%5,orientation:a}}var W_=class{forward([r,e]){return[Math.tan(e),r]}inverse([r,e]){return[e,Math.atan(r)]}};function K_(r,e,t,i,s,a){let d=new Float64Array(6);return d[0]=r,d[1]=e,d[2]=t,d[3]=i,d[4]=s,d[5]=a,d}function X_(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 Yh(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(X_(r,e,t),i)}var Jh=Er();var Wt=Er();var W0=Vn();var K0=Vn();var Y_=class Cd{constructor(e){this.constants=Cd.computeConstants(e)}static computeConstants(e){let[t,i,s]=e,a=Er();Oh(a,i,s);let d=en(t,i),m=en(t,s),b=en(i,s),_=en(t,a),x=m+b,w=d+1,C=d*b-m,R=x*x-w*w,D=2*w*C,k=K_(_*_-R,-D,-2*_*x,2*_*w,_*_+R,D);return{volumeABC:_,areaABC:Yh(t,i,s),AdotB:d,AdotC:m,alphaTransform:k}}forward(e,t,i){let[s,a,d]=t,{areaABC:m,volumeABC:b}=this.constants;Oh(Jh,a,d);let _=en(e,Jh);oA(Wt,e,b),H0(Wt,Wt,s,-_);let x=y_(Wt);oA(Wt,Wt,x>0?1/x:1);let R=Math.max(0,Yh(s,a,Wt))/m,D=x/b*Math.sqrt((1+en(s,Wt))/(1+en(s,e)));return O_([1-D,D*(1-R),D*R],i)}inverse(e,t,i){let[s,a,d]=i,m=k_(e,t),b=1-1e-14;if(m[0]>b)return s;if(m[1]>b)return a;if(m[2]>b)return d;let{AdotB:_,AdotC:x,alphaTransform:w,areaABC:C}=this.constants,R=en(s,a),D=Math.abs(R-_)>Math.abs(R-x),k=D?d:a,W=D?a:d,j=D?m[1]:m[2],V=1-m[0],J=j/V*C;W0[0]=Math.cos(J),W0[1]=Math.sin(J),fd(K0,W0,w),oA(Wt,k,K0[0]),H0(Wt,Wt,W,K0[1]),oc(Wt,Wt);let $=en(s,Wt),te=1+V*V*($-1),ne=V*Math.sqrt((1+te)/(1+$)),le=te-$*ne,Y=Er();return oA(Y,s,le),H0(Y,Y,Wt,ne),Y}};var J_=!1;var Ac=[0,1,2,3,4].map(r=>{let e=Ad();return p_(e,fA*r),e});var Zh=Vn();var $h=Vn();[0,1,2,3].map(r=>{let e=gd.clone();return r&1&&e.rotate180(),r&2&&e.reflectY(),e.getCenter()});function Z_(r,e,t,i,s=J_){let a=(s?Td:gd).clone();return i&1&&a.rotate180(),i&2&&a.reflectY(),m_($h,t.x+t.y,-t.x+(i&1)),ic(Zh,$h,L_),a.translate(Zh),a.scale(1/2**r),a.transform(Ac[e]),a}function Id(r){let e=Td.clone();return e.transform(Ac[r]),e}function $_(){let r=[];for(let e of Ac)r.push(ic(Vn(),xn,e));return r.reverse(),new sc(r)}var ey=class{constructor(){if(this.vertices=[],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){for(let e of this.vertices)if(kh(r,e)<1e-5)return e;throw new Error(`Failed to find vertex in CRS`)}addFaceCenters(){kr.forEach(r=>this.add(Un(r.axis)))}addVertices(){let r=Math.atan(w_);for(let e of kr)for(let t=0;t<5;t++){let s=Un([(2*t+1)*Math.PI/5+e.angle,r]);uA(s,s,e.quat),this.add(s)}}addMidpoints(){let r=Math.atan(gA);for(let e of kr)for(let t=0;t<5;t++){let s=Un([2*t*Math.PI/5+e.angle,r]);uA(s,s,e.quat),this.add(s)}}add(r){let e=oc(Er(),r);return this.vertices.find(i=>kh(e,i)<1e-5)?!1:(this.vertices.push(e),!0)}};var ed=new ey;var ty=class{constructor(){this.faceTriangles=[],this.sphericalTriangles=[],this.equalArea=new Y_(ed.getCanonicalTriangle()),this.gnomonic=new W_}forward(r,e){return this.forwardCartesian(Un(r),e)}forwardCartesian(r,e){let t=kr[e],i=Er();uA(i,r,t.inverseQuat);let s=Z0(i),a=this.gnomonic.forward(s);a[1]=a[1]-t.angle;let d=this.getFaceTriangleIndex(a),m=this.shouldReflect(a),b=this.getFaceTriangle(d,m,!1),_=this.getSphericalTriangle(d,e,m);return this.equalArea.forward(r,_,b)}inverse(r,e){let t=Vh(r),i=this.getFaceTriangleIndex(t),s=this.shouldReflect(t),a=this.getFaceTriangle(i,s,!1),d=this.getSphericalTriangle(i,e,s);return Z0(this.equalArea.inverse(r,a,d))}shouldReflect(r){let[e,t]=r;return F_([e,this.normalizeGamma(t)])[0]>gA}getFaceTriangleIndex([r,e]){return(Math.floor(e/Hr)+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,s]=Id(Math.floor((r+1)/2)%5).getVertices(),a=Vn();return ud(a,i,s,.5),r%2===0?[t,a,i]:[t,s,a]}_getReflectedFaceTriangle(r,e=!1){let[t,i,s]=this._getFaceTriangle(r).map(m=>X0(m)),a=r%2===0;return cd(t,t),b_(t,t,a?i:s,e?1+1/Math.cos(Y0):2),[t,s,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=kr[e];return this.getFaceTriangle(r,t,!0).map(d=>{let[m,b]=Vh(d),_=[m,b+i.angle],x=Un(this.gnomonic.inverse(_));return uA(x,x,i.quat),ed.getVertex(x)})}normalizeGamma(r){let e=r/fA;return(e-Math.round(e))*fA}};var Md={A:`PQAB`,B:`B+++PQ---A`,C:`P---RMb+++`,M:`qQ+++C---b`,P:`PpB---B+++`,Q:`PQ---Cb+++`,R:`b+++a---qQ`};var ry={A:`E`,B:`+e-`,C:`-e+`,M:`T`,P:`S`,Q:`D`,R:`+++D---`};var td=Object.keys(Md);[...td,...td.map(r=>r.toLowerCase())];var ny=r=>r>=`a`&&r<=`z`?r.toUpperCase():r.toLowerCase();var Ld=r=>[...r].reverse().map(e=>e===`+`?`-`:e===`-`?`+`:ny(e)).join(``);function rd(r,e){let t=``;for(let i of r){let s=i.toUpperCase();e[i]!==void 0?t+=e[i]:i!==s&&e[s]!==void 0?t+=Ld(e[s]):t+=i}return t}var Rd=(r,e)=>({a:r.a+e.a,b:r.b+e.b});var iy=r=>({a:-r.b,b:r.a+r.b});var Pd=(r,e)=>{let t=r,i=(e%6+6)%6;for(let s=0;s<i;s++)t=iy(t);return t};var Nd={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 oy=new Set(Object.keys(Nd));var sy={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 $0(r,e,t){return sy[r].map(i=>Rd(e,Pd(i,t)))}function Ay(r,e,t){let[i,s,a]=$0(r,e,t);return{a:i.a+s.a+a.a,b:i.b+s.b+a.b}}function ec(r$1,e,t,i){let s=r({},e),a=(t%6+6)%6;for(let d of r$1){if(d===`+`){a=(a+1)%6;continue}if(d===`-`){a=(a+5)%6;continue}oy.has(d)&&(i?.(d,s,a),s=Rd(s,Pd(Nd[d],a)))}return{pos:s,heading:a}}function ay(r){let e=ec(r,{a:0,b:0},0);return{disp:e.pos,dHeading:e.heading}}var nd=1e-6;function cy(r,e,t){let i=t?-1:1,s=[];for(let a=0;a<4;a++){let d=e*4+a,m=r.childToken[d],b=r.childFlip[d],_=r.childOffA[d],x=r.childOffB[d],w=r.fpEdges[m*2+(t^b)],C=[];for(let R=0;R<w.length;R+=4)C.push([3*_*i+w[R],3*x*i+w[R+1]]);s.push([a,C])}return s}function tc(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[s,a]=e[i],[d,m]=e[(i+1)%t],b=m-a,_=-(d-s),x=-(b*s+_*a),w=[],C=[],R=!0;for(let[D,k]of r){let W=1/0,j=-1/0;for(let[V,J]of k){let $=b*V+_*J+x;$<W&&(W=$),$>j&&(j=$)}if(W>=-nd)w.push([D,k]);else if(j<=nd)C.push([D,k]);else{R=!1;break}}if(R&&w.length&&C.length)return{nx:b,ny:_,c:x,pos:tc(w),neg:tc(C)}}}throw new Error(`lsystem: no clean BSP split for child set`)}function rc(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),rc(r.pos,e),rc(r.neg,e)}function Fd(r,e,t){if(`leaf`in r)return r.leaf;return Fd(e>>t.findIndex(s=>s[0]===r.nx&&s[1]===r.ny&&s[2]===r.c)&1?r.pos:r.neg,e,t)}var id={S:0,D:1,E:2,T:3};function kd(r$2,e){let t=Object.keys(r$2),i=[...t,...t.map($=>$.toLowerCase())],s=i.length,a={};i.forEach(($,te)=>a[$]=te);function d($,te){let ne=$;for(let le=0;le<te;le++)ne=rd(ne,r$2);return rd(ne,e)}let m=$=>ay(d($,1)).disp;function b($){let te={a:0,b:0},ne=0,le=[];for(let Y of $){if(Y===`+`){ne=(ne+1)%6;continue}if(Y===`-`){ne=(ne+5)%6;continue}if(r$2[Y.toUpperCase()]===void 0)continue;if(ne!==0&&ne!==3)throw new Error(`lsystem: non-180\xB0 turn (${60*ne}\xB0) before a child in rule "${$}"`);let z=ne===3;le.push({token:Y,offUnit:r({},te),flip:z});let O=m(Y);te=z?{a:te.a-O.a,b:te.b-O.b}:{a:te.a+O.a,b:te.b+O.b}}if(le.length!==4)throw new Error(`lsystem: rule "${$}" must have 4 children`);return le}let _={};for(let $ of t)_[$]=b(r$2[$]);for(let $ of t)_[$.toLowerCase()]=b(Ld(r$2[$]));let x=new Int32Array(s*4),w=new Uint8Array(s*4),C=new Float64Array(s*4),R=new Float64Array(s*4);for(let $ of i){let te=_[$];for(let ne=0;ne<4;ne++){let le=a[$]*4+ne;x[le]=a[te[ne].token],w[le]=te[ne].flip?1:0,C[le]=te[ne].offUnit.a,R[le]=te[ne].offUnit.b}}function D($){let te=[...new Map($.map(z=>[`${z.a},${z.b}`,z])).values()].sort((z,O)=>z.a-O.a||z.b-O.b);if(te.length<3)return te;let ne=(z,O,ue)=>(O.a-z.a)*(ue.b-z.b)-(O.b-z.b)*(ue.a-z.a),le=[];for(let z of te){for(;le.length>=2&&ne(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 O=te[z];for(;Y.length>=2&&ne(Y[Y.length-2],Y[Y.length-1],O)<=0;)Y.pop();Y.push(O)}return le.slice(0,-1).concat(Y.slice(0,-1))}let k=new Array(s*2);for(let $ of i){let te=[];ec(d($,1),{a:0,b:0},0,(le,Y,z)=>te.push(...$0(le,Y,z)));let ne=D(te);for(let le=0;le<2;le++){let Y=le?-1:1,z=new Float64Array(ne.length*4);for(let O=0;O<ne.length;O++){let ue=ne[O],we=ne[(O+1)%ne.length];z[O*4]=3*Y*ue.a,z[O*4+1]=3*Y*ue.b,z[O*4+2]=Y*(we.a-ue.a),z[O*4+3]=Y*(we.b-ue.b)}k[a[$]*2+le]=z}}let W=new Float64Array(s*2*8),j=new Float64Array(s*2*48),V=new Uint8Array(s*2*4);for(let $ of i){let te=d($,1);for(let ne=0;ne<2;ne++){let le=a[$]*2+ne,Y=0;ec(te,{a:0,b:0},ne?3:0,(z,O,ue)=>{let we=Ay(z,O,ue);W[le*8+Y*2]=we.a,W[le*8+Y*2+1]=we.b;let Ee=z.toUpperCase();if(id[Ee]===void 0)throw new Error(`lsystem: no pentagon flavor for draw symbol ${z}`);V[le*4+Y]=id[Ee]^(z===Ee?0:1)^ue&1;let xe=$0(z,O,ue);(xe[1].a-xe[0].a)*(xe[2].b-xe[0].b)-(xe[1].b-xe[0].b)*(xe[2].a-xe[0].a)<0&&(xe=[xe[0],xe[2],xe[1]]);for(let Fe=0;Fe<3;Fe++){let Oe=xe[Fe],Ge=xe[(Fe+1)%3],qe=le*48+Y*12+Fe*4;j[qe]=3*Oe.a,j[qe+1]=3*Oe.b,j[qe+2]=Ge.a-Oe.a,j[qe+3]=Ge.b-Oe.b}Y++})}}let J={motifIdx:a,childToken:x,childFlip:w,childOffA:C,childOffB:R,fpEdges:k,leafSum:W,leafTri:j,leafFlavor:V,classSep:new Float64Array(s*2*9),classLut:new Uint8Array(s*2*8)};for(let $=0;$<s;$++)for(let te=0;te<2;te++){let ne=$*2+te,le=tc(cy(J,$,te)),Y=[];rc(le,Y);for(let z=0;z<Y.length;z++)J.classSep[ne*9+z*3]=Y[z][0],J.classSep[ne*9+z*3+1]=Y[z][1],J.classSep[ne*9+z*3+2]=Y[z][2];for(let z=0;z<8;z++)J.classLut[ne*8+z]=Fd(le,z,Y)}return J}var pA=new Float64Array(32);for(let r=0;r<32;r++)pA[r]=2**r;var Od=new Float64Array(20);for(let r=0;r<20;r++)Od[r]=4**r;var Ei=kd(Md,ry);var od=13;var ly=26n;var uy=67108863n;function fy(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 s of[0,1]){if((i+s)%3!==0)continue;let a=(i+s)/3,d=s-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 hy(r,e,t,i){let{childToken:s,childFlip:a,childOffA:d,childOffB:m,leafSum:b,leafFlavor:_}=r,x=Number(e&uy),w=Number(e>>ly),C=i,R=0,D=0,k=0;for(let V=t;V>=2;V--){let J=V-1,$=J<od?x>>>(J<<1)&3:Math.floor(w/Od[J-od])%4,te=C*4+$,ne=R?-pA[V-2]:pA[V-2];D+=d[te]*ne,k+=m[te]*ne,R^=a[te],C=s[te]}let W=t>=1?x&3:0,j=C*2+R;return{a:3*D+b[j*8+W*2],b:3*k+b[j*8+W*2+1],flavor:_[j*4+W]}}Ei.motifIdx.A,Ei.motifIdx.A,Ei.motifIdx.C,Ei.motifIdx.C,Ei.motifIdx.B,Ei.motifIdx.B;var Bd=kd({W:`W+++Z---WZ`,Z:`Z+++W---ZW`},{W:`E`,Z:`+e-`});var dy=Bd.motifIdx.W;function Dd(r){return Array.from({length:r.length},(e,t)=>r.indexOf(t))}var Ud=[0,1,3,4,5,6,7,2];var Gd=[0,1,2,7,3,4,5,6];Dd(Ud);Dd(Gd);function py(r,e,t,i,s){if(e<=0)return;let a=r[e]||0,d=r[e-1],m=t[0]+t[1],b=!0,_=!0;if(i!==(m===0)?(b=a===1||a===2,_=a===1):(b=a<2,_=a===0),!b)return;let x=_?d:d+4,w=s[x];r[e-1]=w%4,r[e]=(a+4+Math.floor(w/4)-Math.floor(x/4))%4}function my(r,e){e===1?r[1]=-r[1]:e===3&&(r[0]=-r[0])}function gy(r,e,t){let i=t?Gd:Ud,s=[1,1];for(let a=r.length-1;a>=0;a--)py(r,a,s,e,i),my(s,r[a]);return s}function by(r,e){let t=[],i=r;for(;i>0n||t.length<e;)t.push(Number(i&3n)),i>>=2n;return t}function Ty(r){let e=0n;for(let t=r.length-1;t>=0;t--)e=e<<2n|BigInt(r[t]);return e}var _y={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 yy(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 xy(r,e,t){let i=1n<<BigInt(2*e),a=by(t.reverse?i-1n-r:r,e),d=gy(a,t.invertJ,t.flipIJ),m=hy(Bd,Ty(a),e,dy),b=fy(m.a,m.b);if(t.flipIJ&&(b={x:b.z,y:b.y,z:b.x}),t.invertJ){let _=pA[e]-1;b={x:b.y-_,y:b.x+_,z:b.z}}return{triple:b,flips:d,q:a.length>0?a[0]:0}}function wy(r,e,t=`uv`){let i=_y[t],{triple:s,flips:a,q:d}=xy(r,e,i);return i.invertJ&&(a[0]=-a[0]),{triple:s,flavor:yy(a,d)}}var vi=2;var nc=30;var sd=58n;var Ey=0n;function vy(r){if(r===0n)return-1;if(r&1n||(r&7n)===4n||(r&31n)===16n)return nc;let e=nc-1,t=r>>1n;if(t===0n)return-1;let i=Number(t&4294967295n),s;for(i===0?(t>>=32n,e-=16,s=Number(t)):s=i,!(s&65535)&&(s>>=16,e-=8),e>=6&&!(s&255)&&(s>>=8,e-=4),e>=4&&!(s&15)&&(s>>=4,e-=2);e>-1&&(s&1)===0;)e-=1,s=s>>(e<vi?1:2);return e}function Sy(r){let e=vy(r);if(e===-1)return{origin:kr[0],segment:0,S:0n,resolution:e};let t=sd,i=0;if(e===nc){let w=r&1n?1n:r&4n?3n:5n;t=sd+w,i=w===1n?0:w===3n?32:40}let s=Number(r>>t)+i,a,d;if(e===0)a=kr[s],d=0;else a=kr[Math.floor(s/5)],d=(s+a.firstQuintant)%5;if(!a)throw new Error(`Could not parse origin: ${s}`);if(e<vi)return{origin:a,segment:d,S:0n,resolution:e};let m=e-vi+1,b=BigInt(2*m),x=(r&(1n<<t)-1n)>>t-b;return{origin:a,segment:d,S:x,resolution:e}}var Cy=24;var Iy=1.4;Si(0,0,1);(()=>{let r=[];for(let e=0;e<Cy;e++){let t=(e+1)*Iy;r.push(Si(Math.cos(t),Math.sin(t),0))}return r})();Ad();var My=new ty;70*Math.PI/180;function Ly({S:r,segment:e,origin:t,resolution:i}){let{quintant:s,orientation:a}=Q_(e,t);if(i===vi-1)return Id(s);if(i===vi-2)return $_();let d=i-vi+1,{triple:m,flavor:b}=wy(r,d,a);return Z_(d,s,m,b)}function jd(r,{closedRing:e=!0,segments:t=`auto`}={closedRing:!0,segments:`auto`}){if(r===Ey)return[];let{S:i,segment:s,origin:a,resolution:d}=Sy(r);t===`auto`&&(t=Math.max(1,Math.pow(2,6-d)));let _=Ly({S:i,segment:s,origin:a,resolution:d}).splitEdges(t).getVertices(),x=new Array(_.length);for(let C=0;C<_.length;C++)x[C]=wd(My.inverse(_[C],a.id));let w=D_(x);return e&&w.push(w[0]),w.reverse(),w}function Vd(r){return BigInt(`0x${r}`)}var zd=2;var Ry=zd*hA/Math.sqrt(15);var qd=new Array(31);qd[0]=zd*hA/Math.sqrt(3);for(let r=1;r<=30;r++)qd[r]=Ry/(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})();Si(0,0,1);Si(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 s=[],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,re){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=r0(ae);if(Ze){Te(Ze.buffer);return}re()},n.onerror=re,n.send(null)};var b=e.print||console.log.bind(console),_=e.printErr||console.warn.bind(console);for(i in t)t.hasOwnProperty(i)&&(e[i]=t[i]);t=null,e.arguments&&(s=e.arguments);var x=0,w=function(Z){x=Z},C=function(){return x},R=8;function D(Z,ae,Te,re){switch(Te=Te||`i8`,Te.charAt(Te.length-1)===`*`&&(Te=`i32`),Te){case`i1`:xe[Z>>0]=ae;break;case`i8`:xe[Z>>0]=ae;break;case`i16`:Fe[Z>>1]=ae;break;case`i32`:Ge[Z>>2]=ae;break;case`i64`:t0=[ae>>>0,(li=ae,+cb(li)>=1?li>0?(fb(+ub(li/4294967296),4294967295)|0)>>>0:~~+lb((li-+(~~li>>>0))/4294967296)>>>0:0)],Ge[Z>>2]=t0[0],Ge[Z+4>>2]=t0[1];break;case`float`:je[Z>>2]=ae;break;case`double`:He[Z>>3]=ae;break;default:Nn(`invalid type for setValue: `+Te)}}function k(Z,ae,Te){switch(ae=ae||`i8`,ae.charAt(ae.length-1)===`*`&&(ae=`i32`),ae){case`i1`:return xe[Z>>0];case`i8`:return xe[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 He[Z>>3];default:Nn(`invalid type for getValue: `+ae)}return null}var W=!1;function j(Z,ae){Z||Nn(`Assertion failed: `+ae)}function V(Z){var ae=e[`_`+Z];return j(ae,`Cannot call unknown function `+Z+`, make sure it is exported`),ae}function J(Z,ae,Te,re,n){var ot={string:function(De){var tt=0;if(De!=null&&De!==0){var Os=(De.length<<2)+1;tt=$u(Os),z(De,tt,Os)}return tt},array:function(De){var tt=$u(De.length);return ue(De,tt),tt}};function Ze(De){return ae===`string`?le(De):ae===`boolean`?!!De:De}var P=V(Z),st=[],Jt=0;if(re)for(var Lt=0;Lt<re.length;Lt++){var Ct=ot[Te[Lt]];Ct?(Jt===0&&(Jt=Mb()),st[Lt]=Ct(re[Lt])):st[Lt]=re[Lt]}var dt=P.apply(null,st);return dt=Ze(dt),Jt!==0&&Ib(Jt),dt}function $(Z,ae,Te,re){Te=Te||[];var n=Te.every(function(Ze){return Ze===`number`});return ae!==`string`&&n&&!re?V(Z):function(){return J(Z,ae,Te,arguments,re)}}var te=typeof TextDecoder<`u`?new TextDecoder(`utf8`):void 0;function ne(Z,ae,Te){for(var re=ae+Te,n=ae;Z[n]&&!(n>=re);)++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 Jt=Ze-65536;ot+=String.fromCharCode(55296|Jt>>10,56320|Jt&1023)}}return ot}function le(Z,ae){return Z?ne(Ne,Z,ae):``}function Y(Z,ae,Te,re){if(!(re>0))return 0;for(var n=Te,ot=Te+re-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){xe.set(Z,ae)}function we(Z,ae){return Z%ae>0&&(Z+=ae-Z%ae),Z}var Ee,xe,Ne,Fe,Ge,je,He;function vt(Z){Ee=Z,e.HEAP8=xe=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=He=new Float64Array(Z)}var Za=5271296,bo=28384,St=e.TOTAL_MEMORY||33554432;e.buffer?Ee=e.buffer:Ee=new ArrayBuffer(St),St=Ee.byteLength,vt(Ee),Ge[bo>>2]=Za;function Ot(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 ar=[],Rn=[],ai=[],Gr=[];function fn(){if(e.preRun)for(typeof e.preRun==`function`&&(e.preRun=[e.preRun]);e.preRun.length;)Ab(e.preRun.shift());Ot(ar)}function ci(){Ot(Rn)}function To(){Ot(ai)}function _o(){if(e.postRun)for(typeof e.postRun==`function`&&(e.postRun=[e.postRun]);e.postRun.length;)ab(e.postRun.shift());Ot(Gr)}function Ab(Z){ar.unshift(Z)}function ab(Z){Gr.unshift(Z)}var cb=Math.abs,lb=Math.ceil,ub=Math.floor,fb=Math.min,Pn=0,$a=null,yo=null;function hb(Z){Pn++,e.monitorRunDependencies&&e.monitorRunDependencies(Pn)}function db(Z){if(Pn--,e.monitorRunDependencies&&e.monitorRunDependencies(Pn),Pn==0&&($a!==null&&(clearInterval($a),$a=null),yo)){var ae=yo;yo=null,ae()}}e.preloadedImages={},e.preloadedAudios={};var Yr=null,e0=`data:application/octet-stream;base64,`;function Ku(Z){return String.prototype.startsWith?Z.startsWith(e0):Z.indexOf(e0)===0}var li,t0;Yr=`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 pb=28400;function mb(Z){return Z}function Xu(Z){return Z.replace(/\b__Z[\w\d_]+/g,function(Te){var re=Te;return Te===re?Te:re+` [`+Te+`]`})}function Yu(){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 gb(){var Z=Yu();return e.extraStackTrace&&(Z+=`
|
|
2
|
+
`+e.extraStackTrace()),Xu(Z)}function bb(Z,ae,Te,re){Nn(`Assertion failed: `+le(Z)+`, at: `+[ae?le(ae):`unknown filename`,Te,re?le(re):`unknown function`])}function Ju(){return xe.length}function Tb(Z,ae,Te){Ne.set(Ne.subarray(ae,ae+Te),Z)}function _b(Z){return e.___errno_location&&(Ge[e.___errno_location()>>2]=Z),Z}function yb(Z){Nn(`OOM`)}function Zu(Z){try{var ae=new ArrayBuffer(Z);return ae.byteLength!=Z?void 0:(new Int8Array(ae).set(xe),Cb(ae),vt(ae),1)}catch{}}function xb(Z){var ae=Ju(),Te=16777216,re=2147483648-Te;if(Z>re)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),re);return!!Zu(ot)}var wb=typeof atob==`function`?atob:function(Z){var ae=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=`,Te=``,re,n,ot,Ze,P,st,Jt,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++)),Jt=ae.indexOf(Z.charAt(Lt++)),re=Ze<<2|P>>4,n=(P&15)<<4|st>>2,ot=(st&3)<<6|Jt,Te=Te+String.fromCharCode(re),st!==64&&(Te=Te+String.fromCharCode(n)),Jt!==64&&(Te=Te+String.fromCharCode(ot));while(Lt<Z.length);return Te};function Eb(Z){try{for(var ae=wb(Z),Te=new Uint8Array(ae.length),re=0;re<ae.length;++re)Te[re]=ae.charCodeAt(re);return Te}catch{throw new Error(`Converting base64 string to bytes failed.`)}}function r0(Z){if(Ku(Z))return Eb(Z.slice(e0.length))}var fe=(function(Z,ae,Te){"almost asm";var re=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,Jt=ae.p|0,Lt=Z.Math.floor,Ct=Z.Math.abs,dt=Z.Math.sqrt,De=Z.Math.cos,tt=Z.Math.sin,Os=Z.Math.tan,Lb=Z.Math.acos,xo=Z.Math.asin,nf=Z.Math.atan,zt=Z.Math.atan2,ui=Z.Math.ceil,Zt=Z.Math.imul,o0=Z.Math.min,Rb=Z.Math.max,Jr=Z.Math.clz32,Pb=ae.a,Re=ae.b,L=ae.c,Ve=ae.d,of=ae.e,Nb=ae.f,Fb=ae.g,kb=ae.h,Ob=ae.i,M=28416;function Bb(o){return re=new Int8Array(o),new Uint8Array(o),n=new Int32Array(o),new Float32Array(o),P=new Float64Array(o),Te=o,!0}function Db(o){o=o|0;var A=0;return A=M,M=M+o|0,M=M+15&-16,A|0}function Ub(){return M|0}function Gb(o){o=o|0,M=o}function jb(o,A){o=o|0,A=A|0,M=o}function Vb(o,A){o=o|0,A=A|0;var c=0,u=0,l=0;return(o|0)<0?(A=2,A|0):(o|0)>13780509?(A=Gs(15,A)|0,A|0):(c=((o|0)<0)<<31>>31,l=lt(o|0,c|0,3,0)|0,u=L()|0,c=pe(o|0,c|0,1,0)|0,c=lt(l|0,u|0,c|0,L()|0)|0,c=pe(c|0,L()|0,1,0)|0,o=L()|0,n[A>>2]=c,n[A+4>>2]=o,A=0,A|0)}function sf(o,A,c,u){return o=o|0,A=A|0,c=c|0,u=u|0,Af(o,A,c,u,0)|0}function Af(o,A,c,u,l){o=o|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=M,M=M+16|0,h=g,!(af(o,A,c,u,l)|0))return u=0,M=g,u|0;do if((c|0)>=0){if((c|0)>13780509){if(f=Gs(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=L()|0,f=pe(c|0,f|0,1,0)|0,f=lt(T|0,p|0,f|0,L()|0)|0,f=pe(f|0,L()|0,1,0)|0,p=L()|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=jr(o,A,c,u,l,h,p,0)|0;break}f=qt(h,4)|0,f?(T=jr(o,A,c,u,f,h,p,0)|0,be(f),f=T):f=13}else f=2;while(!1);return T=f,M=g,T|0}function af(o,A,c,u,l){o=o|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0;if(F=M,M=M+16|0,S=F,I=F+8|0,v=S,n[v>>2]=o,n[v+4>>2]=A,(c|0)<0)return I=2,M=F,I|0;if(f=u,n[f>>2]=o,n[f+4>>2]=A,f=(l|0)!=0,f&&(n[l>>2]=0),nt(o,A)|0)return I=9,M=F,I|0;n[I>>2]=0;e:do if((c|0)>=1)if(f)for(y=1,T=0,E=0,v=1,f=o;;){if(!(T|E)){if(f=It(f,A,4,I,S)|0,f|0)break e;if(A=S,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,S)|0,f|0)break e;if(A=S,f=n[A>>2]|0,A=n[A+4>>2]|0,o=u+(y<<3)|0,n[o>>2]=f,n[o+4>>2]=A,n[l+(y<<2)>>2]=v,o=T+1|0,h=(o|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 y=y+1|0,T=h?0:o,E=h?g?0:p:E}else for(y=1,T=0,E=0,v=1,f=o;;){if(!(T|E)){if(f=It(f,A,4,I,S)|0,f|0)break e;if(A=S,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,S)|0,f|0)break e;if(A=S,f=n[A>>2]|0,A=n[A+4>>2]|0,o=u+(y<<3)|0,n[o>>2]=f,n[o+4>>2]=A,o=T+1|0,h=(o|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 y=y+1|0,T=h?0:o,E=h?g?0:p:E}else f=0;while(!1);return I=f,M=F,I|0}function jr(o,A,c,u,l,f,h,p){o=o|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,y=0,E=0,v=0,S=0,I=0,F=0,U=0,q=0;if(F=M,M=M+16|0,S=F+8|0,I=F,g=Zr(o|0,A|0,f|0,h|0)|0,y=L()|0,E=u+(g<<3)|0,U=E,q=n[U>>2]|0,U=n[U+4>>2]|0,T=(q|0)==(o|0)&(U|0)==(A|0),!((q|0)==0&(U|0)==0|T))do g=pe(g|0,y|0,1,0)|0,g=pn(g|0,L()|0,f|0,h|0)|0,y=L()|0,E=u+(g<<3)|0,q=E,U=n[q>>2]|0,q=n[q+4>>2]|0,T=(U|0)==(o|0)&(q|0)==(A|0);while(!((U|0)==0&(q|0)==0|T));if(g=l+(g<<2)|0,T&&(n[g>>2]|0)<=(p|0)||(q=E,n[q>>2]=o,n[q+4>>2]=A,n[g>>2]=p,(p|0)>=(c|0)))return q=0,M=F,q|0;switch(T=p+1|0,n[S>>2]=0,g=It(o,A,2,S,I)|0,g|0){case 9:v=9;break;case 0:g=I,g=jr(n[g>>2]|0,n[g+4>>2]|0,c,u,l,f,h,T)|0,g||(v=9)}e:do if((v|0)==9){switch(n[S>>2]=0,g=It(o,A,3,S,I)|0,g|0){case 9:break;case 0:if(g=I,g=jr(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[S>>2]=0,g=It(o,A,1,S,I)|0,g|0){case 9:break;case 0:if(g=I,g=jr(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[S>>2]=0,g=It(o,A,5,S,I)|0,g|0){case 9:break;case 0:if(g=I,g=jr(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[S>>2]=0,g=It(o,A,4,S,I)|0,g|0){case 9:break;case 0:if(g=I,g=jr(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[S>>2]=0,g=It(o,A,6,S,I)|0,g|0){case 9:break;case 0:if(g=I,g=jr(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 q=0,M=F,q|0}while(!1);return q=g,M=F,q|0}function It(o,A,c,u,l){o=o|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=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}if(f=f+1|0,(f|0)==(h|0))break e}while(!1);if(E=se(o|0,A|0,45)|0,L()|0,y=E&127,y>>>0>121)return l=5,l|0;g=$t(o,A)|0,f=se(o|0,A|0,52)|0,L()|0,f=f&15;e:do if(!f)T=15;else{for(;;){if(h=(15-f|0)*3|0,p=se(o|0,A|0,h|0)|0,L()|0,p=p&7,(p|0)==7){A=5;break}if(I=(mr(f)|0)==0,f=f+-1|0,v=he(7,0,h|0)|0,A=A&~(L()|0),S=he(n[(I?432:16)+(p*28|0)+(c<<2)>>2]|0,0,h|0)|0,h=L()|0,c=n[(I?640:224)+(p*28|0)+(c<<2)>>2]|0,o=S|o&~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+(y*28|0)+(c<<2)>>2]|0,S=he(I|0,0,45)|0,o=S|o,A=L()|0|A&-1040385,c=n[4272+(y*28|0)+(c<<2)>>2]|0,(I&127|0)==127&&(I=he(n[848+(y*28|0)+20>>2]|0,0,45)|0,A=L()|0|A&-1040385,c=n[4272+(y*28|0)+20>>2]|0,o=Fn(I|o,A)|0,A=L()|0,n[u>>2]=(n[u>>2]|0)+1)),p=se(o|0,A|0,45)|0,L()|0,p=p&127;e:do if(at(p)|0){t:do if(($t(o,A)|0)==1){if((y|0)!=(p|0))if(ff(p,n[7696+(y*28|0)>>2]|0)|0){o=g0(o,A)|0,h=1,A=L()|0;break}else Ve(27634,26928,533,26936);switch(g|0){case 3:o=Fn(o,A)|0,A=L()|0,n[u>>2]=(n[u>>2]|0)+1,h=0;break t;case 5:o=g0(o,A)|0,A=L()|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 o=m0(o,A)|0,A=L()|0,f=f+1|0;while((f|0)!=(c|0))}if((y|0)!=(p|0)){if(!(s0(p)|0)){if((h|0)!=0|($t(o,A)|0)!=5)break;n[u>>2]=(n[u>>2]|0)+1;break}switch(E&127){case 8:case 118:break e}($t(o,A)|0)!=3&&(n[u>>2]=(n[u>>2]|0)+1)}}else if((c|0)>0){f=0;do o=Fn(o,A)|0,A=L()|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]=o,n[I+4>>2]=A,I=0,I|0}function zb(o,A,c,u){return o=o|0,A=A|0,c=c|0,u=u|0,cf(o,A,c,u)|0?(mn(u|0,0,c*48|0)|0,u=qb(o,A,c,u)|0,u|0):(u=0,u|0)}function cf(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0;if(I=M,M=M+16|0,v=I,S=I+8|0,E=v,n[E>>2]=o,n[E+4>>2]=A,(c|0)<0)return S=2,M=I,S|0;if(!c)return S=u,n[S>>2]=o,n[S+4>>2]=A,S=0,M=I,S|0;n[S>>2]=0;e:do if(nt(o,A)|0)o=9;else{l=0,E=o;do{if(o=It(E,A,4,S,v)|0,o|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){o=9;break e}}while((l|0)<(c|0));y=u,n[y>>2]=E,n[y+4>>2]=A,y=c+-1|0,T=0,o=1;do{if(l=26864+(T<<2)|0,(T|0)==5)for(h=n[l>>2]|0,f=0,l=o;;){if(o=v,o=It(n[o>>2]|0,n[o+4>>2]|0,h,S,v)|0,o|0)break e;if((f|0)!=(y|0))if(g=v,p=n[g>>2]|0,g=n[g+4>>2]|0,o=u+(l<<3)|0,n[o>>2]=p,n[o+4>>2]=g,!(nt(p,g)|0))o=l+1|0;else{o=9;break e}else o=l;if(f=f+1|0,(f|0)>=(c|0))break;l=o}else for(h=v,g=n[l>>2]|0,p=0,l=o,f=n[h>>2]|0,h=n[h+4>>2]|0;;){if(o=It(f,h,g,S,v)|0,o|0)break e;if(h=v,f=n[h>>2]|0,h=n[h+4>>2]|0,o=u+(l<<3)|0,n[o>>2]=f,n[o+4>>2]=h,o=l+1|0,nt(f,h)|0){o=9;break e}if(p=p+1|0,(p|0)>=(c|0))break;l=o}T=T+1|0}while(T>>>0<6);o=v,o=(E|0)==(n[o>>2]|0)&&(A|0)==(n[o+4>>2]|0)?0:9}while(!1);return S=o,M=I,S|0}function qb(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0;if(E=M,M=M+16|0,h=E,!c)return n[u>>2]=o,n[u+4>>2]=A,u=0,M=E,u|0;do if((c|0)>=0){if((c|0)>13780509){if(l=Gs(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,y=lt(c|0,l|0,3,0)|0,f=L()|0,l=pe(c|0,l|0,1,0)|0,l=lt(y|0,f|0,l|0,L()|0)|0,l=pe(l|0,L()|0,1,0)|0,f=L()|0,y=h,n[y>>2]=l,n[y+4>>2]=f;if(T=qt(l,8)|0,!T)l=13;else{if(y=qt(l,4)|0,!y){be(T),l=13;break}if(l=jr(o,A,c,T,y,l,f,0)|0,l|0){be(T),be(y);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 o=T+(p<<3)|0,f=n[o>>2]|0,o=n[o+4>>2]|0,!((f|0)==0&(o|0)==0)&&(n[y+(p<<2)>>2]|0)==(c|0)&&(v=u+(l<<3)|0,n[v>>2]=f,n[v+4>>2]=o,l=l+1|0),p=pe(p|0,g|0,1,0)|0,g=L()|0;while((g|0)<(h|0)|(g|0)==(h|0)&p>>>0<A>>>0)}be(T),be(y),l=0}}else l=2;while(!1);return v=l,M=E,v|0}function Bs(o,A,c,u){o=o|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=M,M=M+16|0,f=p,h=p+8|0,l=(nt(o,A)|0)==0,l=l?1:2;;){if(n[h>>2]=0,T=(It(o,A,l,h,f)|0)==0,g=f,T&((n[g>>2]|0)==(c|0)?(n[g+4>>2]|0)==(u|0):0)){o=4;break}if(l=l+1|0,l>>>0>=7){l=7,o=4;break}}return(o|0)==4?(M=p,l|0):0}function Hb(o,A,c,u){o=o|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=M,M=M+48|0,l=p+16|0,f=p+8|0,h=p,c=Lo(c)|0,c|0)return h=c,M=p,h|0;if(T=o,g=n[T+4>>2]|0,c=f,n[c>>2]=n[T>>2],n[c+4>>2]=g,Lf(f,l),c=mf(l,A,h)|0,!c){if(A=n[f>>2]|0,f=n[o+8>>2]|0,(f|0)>0){l=n[o+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=L()|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,M=p,T|0}function lf(o,A,c,u,l,f,h){o=o|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,y=0,E=0,v=0,S=0,I=0,F=0,U=0,q=0,N=0,Q=0,G=0,ee=0,oe=0,X=0,H=0,me=0,ie=0,_e=0,ce=0,de=0,ze=0,Qe=0,Bt=0,Pe=0,We=0,Ht=0;if(Qe=M,M=M+64|0,_e=Qe+48|0,ce=Qe+32|0,de=Qe+24|0,ee=Qe+8|0,oe=Qe,g=n[o>>2]|0,(g|0)<=0)return ze=0,M=Qe,ze|0;for(X=o+4|0,H=_e+8|0,me=ce+8|0,ie=ee+8|0,p=0,Q=0;;){T=n[X>>2]|0,N=T+(Q<<4)|0,n[_e>>2]=n[N>>2],n[_e+4>>2]=n[N+4>>2],n[_e+8>>2]=n[N+8>>2],n[_e+12>>2]=n[N+12>>2],(Q|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+(Q+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=sT(_e,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){q=0,N=0;t:for(;;){if(Pe=1/(+(T>>>0)+4294967296*+(g|0)),Ht=+P[_e>>3],g=Mt(T|0,g|0,q|0,N|0)|0,We=+(g>>>0)+4294967296*+(L()|0),Bt=+(q>>>0)+4294967296*+(N|0),P[ee>>3]=Pe*(Ht*We)+Pe*(+P[ce>>3]*Bt),P[ie>>3]=Pe*(+P[H>>3]*We)+Pe*(+P[me>>3]*Bt),g=b0(ee,u,oe)|0,g|0){p=g;break}U=oe,F=n[U>>2]|0,U=n[U+4>>2]|0,v=Zr(F|0,U|0,A|0,c|0)|0,y=L()|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)G=g,ze=16;else for(S=0,I=0;;){if((S|0)>(c|0)|(S|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,y|0,1,0)|0,v=pn(g|0,L()|0,A|0,c|0)|0,y=L()|0,I=pe(I|0,S|0,1,0)|0,S=L()|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){G=g,ze=16;break}}while(!1);if((ze|0)==16&&(ze=0,!((F|0)==0&(U|0)==0))&&(I=G,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=L()|0,U=l,n[U>>2]=I,n[U+4>>2]=F),q=pe(q|0,N|0,1,0)|0,N=L()|0,g=de,T=n[g>>2]|0,g=n[g+4>>2]|0,!((g|0)>(N|0)|(g|0)==(N|0)&T>>>0>q>>>0)){T=1;break e}}T=0}else T=1;while(!1);if(Q=Q+1|0,!T){ze=21;break}if(g=n[o>>2]|0,(Q|0)>=(g|0)){p=0,ze=21;break}}return(ze|0)==21?(M=Qe,p|0):0}function Qb(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0,U=0,q=0,N=0,Q=0,G=0,ee=0,oe=0,X=0,H=0,me=0,ie=0,_e=0,ce=0,de=0,ze=0,Qe=0,Bt=0,Pe=0,We=0;if(We=M,M=M+112|0,ze=We+80|0,g=We+72|0,Qe=We,Bt=We+56|0,l=Lo(c)|0,l|0)return Pe=l,M=We,Pe|0;if(T=o+8|0,Pe=ct((n[T>>2]<<5)+32|0)|0,!Pe)return Pe=13,M=We,Pe|0;if(v0(o,Pe),l=Lo(c)|0,!l){if(ce=o,de=n[ce+4>>2]|0,l=g,n[l>>2]=n[ce>>2],n[l+4>>2]=de,Lf(g,ze),l=mf(ze,A,Qe)|0,l)ce=0,de=0;else{if(l=n[g>>2]|0,f=n[T>>2]|0,(f|0)>0){h=n[o+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=Qe,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=Qe,n[l>>2]=c,n[l+4>>2]=h,l=h):c=f,ce=pe(c|0,l|0,12,0)|0,de=L()|0,l=Qe,n[l>>2]=ce,n[l+4>>2]=de,l=0}if(!l){if(c=qt(ce,8)|0,!c)return be(Pe),Pe=13,M=We,Pe|0;if(p=qt(ce,8)|0,!p)return be(Pe),be(c),Pe=13,M=We,Pe|0;ie=ze,n[ie>>2]=0,n[ie+4>>2]=0,ie=o,_e=n[ie+4>>2]|0,l=g,n[l>>2]=n[ie>>2],n[l+4>>2]=_e,l=lf(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=o+12|0,f=0;l=lf((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,_e=ze,ie=n[_e+4>>2]|0;t:do if((ie|0)>0|(ie|0)==0&(n[_e>>2]|0)>>>0>0){X=c,H=p,me=c,ie=p,_e=c,l=c,G=c,ee=p,oe=p,c=p;r:for(;;){for(U=0,q=0,N=0,Q=0,f=0,h=0;;){p=Qe,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,af(T,A,1,Qe,0)|0){p=Qe,g=p+56|0;do n[p>>2]=0,p=p+4|0;while((p|0)<(g|0));p=qt(7,4)|0,p|0&&(jr(T,A,1,Qe,p,7,0,0)|0,be(p))}for(F=0;;){I=Qe+(F<<3)|0,S=n[I>>2]|0,I=n[I+4>>2]|0;n:do if((S|0)==0&(I|0)==0)p=f,g=h;else{if(y=Zr(S|0,I|0,ce|0,de|0)|0,T=L()|0,p=u+(y<<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)==(S|0)&(A|0)==(I|0)){p=f,g=h;break n}p=pe(y|0,T|0,1,0)|0,y=pn(p|0,L()|0,ce|0,de|0)|0,T=L()|0,v=pe(v|0,E|0,1,0)|0,E=L()|0,p=u+(y<<3)|0,A=p,g=n[A>>2]|0,A=n[A+4>>2]|0}while(!((g|0)==0&(A|0)==0))}if((S|0)==0&(I|0)==0){p=f,g=h;break}di(S,I,Bt)|0,S0(o,Pe,Bt)|0&&(v=pe(f|0,h|0,1,0)|0,h=L()|0,E=p,n[E>>2]=S,n[E+4>>2]=I,f=H+(f<<3)|0,n[f>>2]=S,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,q|0,1,0)|0,q=L()|0,N=pe(N|0,Q|0,1,0)|0,Q=L()|0,h=ze,f=n[h>>2]|0,h=n[h+4>>2]|0,(Q|0)<(h|0)|(Q|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 Q=X+(f<<3)|0,n[Q>>2]=0,n[Q+4>>2]=0,f=pe(f|0,h|0,1,0)|0,h=L()|0,Q=ze,N=n[Q+4>>2]|0;while((h|0)<(N|0)|((h|0)==(N|0)?f>>>0<(n[Q>>2]|0)>>>0:0))}if(Q=ze,n[Q>>2]=p,n[Q+4>>2]=g,(g|0)>0|(g|0)==0&p>>>0>0)F=c,U=oe,q=_e,N=ee,Q=H,c=G,oe=l,ee=me,G=F,l=U,_e=ie,ie=q,me=N,H=X,X=Q;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,M=We,Pe|0}}return be(Pe),Pe=l,M=We,Pe|0}function Wb(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0;if(p=M,M=M+16|0,h=p,o=aT(o,A,((A|0)<0)<<31>>31,h)|0,o|0)return h=o,M=p,h|0;if(f=zT(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){o=0;do g=n[l>>2]|0,T=g+(o<<3)+4|0,be(n[T>>2]|0),n[T>>2]=0,n[g+(o<<3)>>2]=0,o=o+1|0;while((o|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,M=p,T|0}function pr(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0;if(h=n[o>>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[o+4>>2]|0,o=(h|0)!=1&1,p=+P[f>>3]*.5+.7853981633974483,l=+P[f+(o<<4)>>3]*.5+.7853981633974483,c=+tt(+p)*+tt(+l),u=+P[f+(o<<4)+8>>3]-+P[f+8>>3],c=+zt(+(+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(o=1,l=u;y=o,o=o+1|0,E=(o|0)%(h|0)|0,T=+P[f+(y<<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+(y<<4)+8>>3],c=+zt(+(+tt(+p)*u),+(+De(+T)*+De(+g)+ +De(+p)*u))*-2-c,u=l+c,c=u-l-c,!((o|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 Kb(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0;return h=M,M=M+192|0,u=h+176|0,l=h,f=h+168|0,o=kn(o,A,l)|0,o|0?(f=o,M=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],pr(u,c)|0,f=0,M=h,f|0)}function Xb(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0;return h=M,M=M+192|0,u=h+176|0,l=h,f=h+168|0,o=kn(o,A,l)|0,o?(f=o,M=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],pr(u,c)|0,P[c>>3]=+P[c>>3]*40589732.49931477,f=0,M=h,f|0)}function Yb(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0;return h=M,M=M+192|0,u=h+176|0,l=h,f=h+168|0,o=kn(o,A,l)|0,o?(f=o,M=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],pr(u,c)|0,P[c>>3]=+P[c>>3]*40589732.49931477*1e6,f=0,M=h,f|0)}function at(o){return o=o|0,o>>>0>121?(o=0,o|0):(o=n[7696+(o*28|0)+16>>2]|0,o|0)}function s0(o){return o=o|0,(o|0)==4|(o|0)==117|0}function uf(o){return o=o|0,n[11120+((n[o>>2]|0)*216|0)+((n[o+4>>2]|0)*72|0)+((n[o+8>>2]|0)*24|0)+(n[o+12>>2]<<3)>>2]|0}function Jb(o){return o=o|0,n[11120+((n[o>>2]|0)*216|0)+((n[o+4>>2]|0)*72|0)+((n[o+8>>2]|0)*24|0)+(n[o+12>>2]<<3)+4>>2]|0}function Zb(o,A){o=o|0,A=A|0,o=7696+(o*28|0)|0,n[A>>2]=n[o>>2],n[A+4>>2]=n[o+4>>2],n[A+8>>2]=n[o+8>>2],n[A+12>>2]=n[o+12>>2]}function $b(o,A){o=o|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)!=(o|0))if((n[11120+(A*216|0)+8>>2]|0)!=(o|0))if((n[11120+(A*216|0)+16>>2]|0)!=(o|0))if((n[11120+(A*216|0)+24>>2]|0)!=(o|0))if((n[11120+(A*216|0)+32>>2]|0)!=(o|0))if((n[11120+(A*216|0)+40>>2]|0)!=(o|0))if((n[11120+(A*216|0)+48>>2]|0)!=(o|0))if((n[11120+(A*216|0)+56>>2]|0)!=(o|0))if((n[11120+(A*216|0)+64>>2]|0)!=(o|0))if((n[11120+(A*216|0)+72>>2]|0)!=(o|0))if((n[11120+(A*216|0)+80>>2]|0)!=(o|0))if((n[11120+(A*216|0)+88>>2]|0)!=(o|0))if((n[11120+(A*216|0)+96>>2]|0)!=(o|0))if((n[11120+(A*216|0)+104>>2]|0)!=(o|0))if((n[11120+(A*216|0)+112>>2]|0)!=(o|0))if((n[11120+(A*216|0)+120>>2]|0)!=(o|0))if((n[11120+(A*216|0)+128>>2]|0)!=(o|0))if((n[11120+(A*216|0)+136>>2]|0)==(o|0))o=2,c=1,u=2;else{if((n[11120+(A*216|0)+144>>2]|0)==(o|0)){o=0,c=2,u=0;break}if((n[11120+(A*216|0)+152>>2]|0)==(o|0)){o=0,c=2,u=1;break}if((n[11120+(A*216|0)+160>>2]|0)==(o|0)){o=0,c=2,u=2;break}if((n[11120+(A*216|0)+168>>2]|0)==(o|0)){o=1,c=2,u=0;break}if((n[11120+(A*216|0)+176>>2]|0)==(o|0)){o=1,c=2,u=1;break}if((n[11120+(A*216|0)+184>>2]|0)==(o|0)){o=1,c=2,u=2;break}if((n[11120+(A*216|0)+192>>2]|0)==(o|0)){o=2,c=2,u=0;break}if((n[11120+(A*216|0)+200>>2]|0)==(o|0)){o=2,c=2,u=1;break}if((n[11120+(A*216|0)+208>>2]|0)==(o|0)){o=2,c=2,u=2;break}else o=-1;return o|0}else o=2,c=1,u=1;else o=2,c=1,u=0;else o=1,c=1,u=2;else o=1,c=1,u=1;else o=1,c=1,u=0;else o=0,c=1,u=2;else o=0,c=1,u=1;else o=0,c=1,u=0;else o=2,c=0,u=2;else o=2,c=0,u=1;else o=2,c=0,u=0;else o=1,c=0,u=2;else o=1,c=0,u=1;else o=1,c=0,u=0;else o=0,c=0,u=2;else o=0,c=0,u=1;else o=0,c=0,u=0;while(!1);return A=n[11120+(A*216|0)+(c*72|0)+(o*24|0)+(u<<3)+4>>2]|0,A|0}function ff(o,A){return o=o|0,A=A|0,(n[7696+(o*28|0)+20>>2]|0)==(A|0)?(A=1,A|0):(A=(n[7696+(o*28|0)+24>>2]|0)==(A|0),A|0)}function A0(o,A){return o=o|0,A=A|0,n[848+(o*28|0)+(A<<2)>>2]|0}function a0(o,A){return o=o|0,A=A|0,(n[848+(o*28|0)>>2]|0)==(A|0)?(A=0,A|0):(n[848+(o*28|0)+4>>2]|0)==(A|0)?(A=1,A|0):(n[848+(o*28|0)+8>>2]|0)==(A|0)?(A=2,A|0):(n[848+(o*28|0)+12>>2]|0)==(A|0)?(A=3,A|0):(n[848+(o*28|0)+16>>2]|0)==(A|0)?(A=4,A|0):(n[848+(o*28|0)+20>>2]|0)==(A|0)?(A=5,A|0):((n[848+(o*28|0)+24>>2]|0)==(A|0)?6:7)|0}function eT(){return 122}function tT(o){o=o|0;var A=0,c=0,u=0;A=0;do he(A|0,0,45)|0,u=L()|134225919,c=o+(A<<3)|0,n[c>>2]=-1,n[c+4>>2]=u,A=A+1|0;while((A|0)!=122);return 0}function rT(o){o=o|0;var A=0,c=0,u=0;return u=+P[o+16>>3],c=+P[o+24>>3],A=u-c,+(u<c?A+6.283185307179586:A)}function nT(o){return o=o|0,+P[o+16>>3]<+P[o+24>>3]|0}function iT(o){return o=o|0,+(+P[o>>3]-+P[o+8>>3])}function hf(o,A){o=o|0,A=A|0;var c=0,u=0,l=0;return c=+P[A>>3],!(c>=+P[o+8>>3])||!(c<=+P[o>>3])?(A=0,A|0):(u=+P[o+16>>3],c=+P[o+24>>3],l=+P[A+8>>3],A=l>=c,o=l<=u&1,u<c?A&&(o=1):A||(o=0),A=(o|0)!=0,A|0)}function c0(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0;return+P[o>>3]<+P[A+8>>3]||+P[o+8>>3]>+P[A>>3]?(u=0,u|0):(f=+P[o+16>>3],c=o+24|0,y=+P[c>>3],h=f<y,u=A+16|0,T=+P[u>>3],l=A+24|0,g=+P[l>>3],p=T<g,A=y-T<g-f,o=h?p|A?1:2:0,A=p?h?1:A?2:1:0,f=+cr(f,o),f<+cr(+P[l>>3],A)||(y=+cr(+P[c>>3],o),y>+cr(+P[u>>3],A))?(p=0,p|0):(p=1,p|0))}function oT(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0;f=+P[o+16>>3],g=+P[o+24>>3],o=f<g,p=+P[A+16>>3],h=+P[A+24>>3],l=p<h,A=g-p<h-f,n[c>>2]=o?l|A?1:2:0,n[u>>2]=l?o?1:A?2:1:0}function df(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0;return+P[o>>3]<+P[A>>3]||+P[o+8>>3]>+P[A+8>>3]?(u=0,u|0):(u=o+16|0,g=+P[u>>3],f=+P[o+24>>3],h=g<f,c=A+16|0,y=+P[c>>3],l=A+24|0,T=+P[l>>3],p=y<T,A=f-y<T-g,o=h?p|A?1:2:0,A=p?h?1:A?2:1:0,f=+cr(f,o),f<=+cr(+P[l>>3],A)?(y=+cr(+P[u>>3],o),p=y>=+cr(+P[c>>3],A),p|0):(p=0,p|0))}function pf(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0;l=M,M=M+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));Lr(o|0,u|0,168)|0,M=l}function mf(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0,U=0;I=M,M=M+288|0,y=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=_0(A,T)|0,A|0?(S=A,M=I,S|0):(g=T,T=n[g>>2]|0,g=n[g+4>>2]|0,di(T,g,y)|0,kn(T,g,E)|0,h=+Co(y,E+8|0),P[y>>3]=+P[o>>3],g=y+8|0,P[g>>3]=+P[o+16>>3],P[E>>3]=+P[o+8>>3],T=E+8|0,P[T>>3]=+P[o+24>>3],l=+Co(y,E),U=+P[g>>3]-+P[T>>3],f=+Ct(+U),F=+P[y>>3]-+P[E>>3],u=+Ct(+F),!(U==0|F==0)&&(U=+zf(+f,+u),U=+ui(+(l*l/+Ws(+(U/+Ws(+f,+u)),3)/(h*(h*2.59807621135)*.8))),P[st>>3]=U,v=~~U>>>0,S=+Ct(U)>=1?U>0?~~+o0(+Lt(U/4294967296),4294967295)>>>0:~~+ui((U-+(~~U>>>0))/4294967296)>>>0:0,(n[st+4>>2]&2146435072|0)!=2146435072)?(E=(v|0)==0&(S|0)==0,A=c,n[A>>2]=E?1:v,n[A+4>>2]=E?0:S,A=0):A=1,S=A,M=I,S|0)}function sT(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,y=0;T=M,M=M+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=_0(c,g)|0,c|0?(u=c,M=T,u|0):(c=g,l=n[c>>2]|0,c=n[c+4>>2]|0,di(l,c,h)|0,kn(l,c,p)|0,y=+Co(h,p+8|0),y=+ui(+(+Co(o,A)/(y*2))),P[st>>3]=y,c=~~y>>>0,l=+Ct(y)>=1?y>0?~~+o0(+Lt(y/4294967296),4294967295)>>>0:~~+ui((y-+(~~y>>>0))/4294967296)>>>0:0,(n[st+4>>2]&2146435072|0)==2146435072?(u=1,M=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,M=T,u|0))}function AT(o,A){o=o|0,A=+A;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0;f=o+16|0,h=+P[f>>3],c=o+24|0,l=+P[c>>3],u=h-l,u=h<l?u+6.283185307179586:u,T=+P[o>>3],p=o+8|0,g=+P[p>>3],y=T-g,u=(u*A-u)*.5,A=(y*A-y)*.5,T=T+A,P[o>>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 aT(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0,U=0,q=0,N=0,Q=0,G=0,ee=0,oe=0,X=0,H=0,me=0,ie=0,_e=0,ce=0,de=0;if(de=M,M=M+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,M=de,ce|0;if((c|0)<0)return ce=2,M=de,ce|0;if((A|0)==0&(c|0)==0)return n[u>>2]=0,n[u+4>>2]=0,ce=0,M=de,ce|0;for(l=o,l=h0(n[l>>2]|0,n[l+4>>2]|0)|0,h=0,p=0;;){if(f=o+(h<<3)|0,ce=f,!(Us(n[ce>>2]|0,n[ce+4>>2]|0)|0)){l=5,ie=159;break}if(ce=f,ce=(h0(n[ce>>2]|0,n[ce+4>>2]|0)|0)==(l|0),h=pe(h|0,p|0,1,0)|0,p=L()|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,M=de,ce|0;for(Lr(h|0,o|0,l|0)|0,zs(h,A,8,1),l=1,f=0;_e=h+(l<<3)|0,ce=h+(l+-1<<3)|0,ce=(n[_e>>2]|0)==(n[ce>>2]|0)?(n[_e+4>>2]|0)==(n[ce+4>>2]|0):0,l=pe(l|0,f|0,1,0)|0,f=L()|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,M=de,ce|0}while(!1);if(l=lt(A|0,c|0,6,0)|0,f=L()|0,g){h=0,p=0;do ce=o+(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=L()|0,p=pe(p|0,h|0,1,0)|0,h=L()|0;while((h|0)<(c|0)|(h|0)==(c|0)&p>>>0<A>>>0);G=l,Q=f}else G=l,Q=f;if(q=lt(G|0,Q|0,10,0)|0,N=L()|0,_e=ct(G<<5)|0,!_e)return ce=13,M=de,ce|0;if(ce=qt(q,4)|0,!ce)return be(_e),ce=13,M=de,ce|0;e:do if(g){for(H=o,l0(n[H>>2]|0,n[H+4>>2]|0,me)|0,S=_e,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,y=L()|0,E=0,v=0;do X=g+(E<<3)|0,oe=n[X+4>>2]|0,H=S+(E<<5)|0,n[H>>2]=n[X>>2],n[H+4>>2]=oe,re[S+(E<<5)+9>>0]=0,re[S+(E<<5)+8>>0]=0,n[S+(E<<5)+20>>2]=S,H=S+(E<<5)+24|0,n[H>>2]=1,n[H+4>>2]=0,H=re[f+E>>0]|0,oe=pe(T|0,y|0,E|0,v|0)|0,oe=Zr(oe|0,L()|0,h|0,p|0)|0,L()|0,oe=re[f+oe>>0]|0,E=pe(E|0,v|0,1,0)|0,v=L()|0,X=re[f+((E|0)==(h|0)&(v|0)==(p|0)?0:E)>>0]|0,H=H&255,n[S+(H<<5)+16>>2]=S+((oe&255)<<5),n[S+(H<<5)+12>>2]=S+((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=L()|0,l=pe(h|0,p|0,l|0,U|0)|0,U=L()|0,!((F|0)<(c|0)|(F|0)==(c|0)&I>>>0<A>>>0))break e;H=o+(I<<3)|0,l0(n[H>>2]|0,n[H+4>>2]|0,me)|0||(S=_e+(l<<5)|0)}Ve(27634,26956,108,26975)}while(!1);if((Q|0)>0|(Q|0)==0&G>>>0>0){p=0,g=0;do{if(f=_e+(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,(L()|0)^f|0,484763065,-1084733587)|0,h=L()|0,l=se(f|0,h|0,27)|0,h=lt(l^f|0,(L()|0)^h|0,321982955,-1798288965)|0,f=L()|0,l=se(h|0,f|0,31)|0,f=Zr(l^h|0,(L()|0)^f|0,q|0,N|0)|0,h=L()|0,l=ce+(f<<2)|0,n[l>>2]|0)do l=pe(f|0,h|0,1,0)|0,f=pn(l|0,L()|0,q|0,N|0)|0,h=L()|0,l=ce+(f<<2)|0;while((n[l>>2]|0)!=0);n[l>>2]=_e+(p<<5),p=pe(p|0,g|0,1,0)|0,g=L()|0}while((g|0)<(Q|0)|(g|0)==(Q|0)&p>>>0<G>>>0);E=0,v=0;do{if(p=_e+(E<<5)|0,g=_e+(E<<5)+9|0,!(re[g>>0]|0)){if(H=p,bf(n[H>>2]|0,n[H+4>>2]|0,me)|0){ie=39;break}y=me,T=n[y>>2]|0,y=n[y+4>>2]|0,f=se(T|0,y|0,30)|0,f=lt(f^T|0,(L()|0)^y|0,484763065,-1084733587)|0,h=L()|0,l=se(f|0,h|0,27)|0,h=lt(l^f|0,(L()|0)^h|0,321982955,-1798288965)|0,f=L()|0,l=se(h|0,f|0,31)|0,f=Zr(l^h|0,(L()|0)^f|0,q|0,N|0)|0,h=L()|0,l=n[ce+(f<<2)>>2]|0;e:do if(l|0){for(;H=l,!((n[H>>2]|0)==(T|0)&&(n[H+4>>2]|0)==(y|0));)if(l=pe(f|0,h|0,1,0)|0,f=pn(l|0,L()|0,q|0,N|0)|0,h=L()|0,l=n[ce+(f<<2)>>2]|0,!l)break e;re[g>>0]=1,re[l+9>>0]=1,f=l+16|0,H=_e+(E<<5)+12|0,n[(n[H>>2]|0)+16>>2]=n[f>>2],c=l+12|0,X=n[_e+(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[H>>2],f=Ds(p)|0,H=Ds(l)|0,l=f+24|0,c=n[l+4>>2]|0,X=H+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:H,f=X?H:f,(f|0)!=(l|0)&&(oe=l+24|0,H=f+24|0,X=H,oe=pe(n[X>>2]|0,n[X+4>>2]|0,n[oe>>2]|0,n[oe+4>>2]|0)|0,X=L()|0,n[H>>2]=oe,n[H+4>>2]=X,n[l+20>>2]=f)}while(!1)}E=pe(E|0,v|0,1,0)|0,v=L()|0}while((v|0)<(Q|0)|(v|0)==(Q|0)&E>>>0<G>>>0);(ie|0)==39&&Ve(27634,26956,258,27001),l=0,f=0;do re[_e+(l<<5)+8>>0]=0,l=pe(l|0,f|0,1,0)|0,f=L()|0;while((f|0)<(Q|0)|(f|0)==(Q|0)&l>>>0<G>>>0);for(T=0,h=0,g=0,y=0;;){if(l=_e+(T<<5)|0,(re[_e+(T<<5)+8>>0]|0)==0&&(re[_e+(T<<5)+9>>0]|0)==0){p=l,f=n[p>>2]|0,p=n[p+4>>2]|0;do re[l+8>>0]=1,l=n[l+12>>2]|0,H=l;while(!((n[H>>2]|0)==(f|0)&&(n[H+4>>2]|0)==(p|0)));h=pe(h|0,g|0,1,0)|0,p=L()|0}else p=g;if(T=pe(T|0,y|0,1,0)|0,y=L()|0,(y|0)<(Q|0)|(y|0)==(Q|0)&T>>>0<G>>>0)g=p;else break}l=0,f=0;do re[_e+(l<<5)+8>>0]=0,l=pe(l|0,f|0,1,0)|0,f=L()|0;while((f|0)<(Q|0)|(f|0)==(Q|0)&l>>>0<G>>>0);X=h,oe=p,l=1}else X=0,oe=0,l=0;H=ct(X*24|0)|0;e:do if(H|0){t:do if(l){o=0,q=0,c=0,A=0;r:for(;;){if(l=_e+(o<<5)|0,(re[_e+(o<<5)+8>>0]|0)==0&&(re[_e+(o<<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=L()|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,S=0,v=0,p=0,g=0;do{if(wo(f,h,ee)|0){ie=69;break r}if(N=n[ee>>2]|0,y=N+-1|0,E=((y|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=L()|0,T=pe(T|0,p|0,1,0)|0,p=L()|0;while((p|0)<(E|0)|(p|0)==(E|0)&T>>>0<y>>>0);p=h,g=f}S=pe(S|0,v|0,y|0,E|0)|0,v=L()|0,re[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=c_(I,S<<4)|0,!f){ie=75;break}U=Ds(l)|0,N=n[U+4>>2]|0,l=H+(c*24|0)|0,n[l>>2]=n[U>>2],n[l+4>>2]=N,l=H+(c*24|0)+16|0,n[l>>2]=S,n[H+(c*24|0)+20>>2]=f,n[me>>2]=n[l>>2],n[me+4>>2]=n[l+4>>2],pr(me,H+(c*24|0)+8|0)|0,f=pe(c|0,q|0,1,0)|0,l=L()|0}else f=c,l=q;if(o=pe(o|0,A|0,1,0)|0,A=L()|0,(A|0)<(Q|0)|(A|0)==(Q|0)&o>>>0<G>>>0)q=l,c=f;else break t}if((ie|0)==69?Ve(27634,26956,351,27016):(ie|0)==75&&be(I),(q|0)>0|(q|0)==0&c>>>0>0)for(p=0,g=0,l=c,h=q;f=n[H+(p*24|0)+20>>2]|0,f?(be(f),f=q,l=c):f=h,p=pe(p|0,g|0,1,0)|0,g=L()|0,(g|0)<(f|0)|(g|0)==(f|0)&p>>>0<l>>>0;)h=f;be(H);break e}while(!1);zs(H,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,S=N+12|0,n[S>>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],pr(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],y=l+16|0,n[y>>2]=n[3876],n[y+4>>2]=n[3877],n[y+8>>2]=n[3878],n[y+12>>2]=n[3879],y=l+32|0,n[y>>2]=n[3880],n[y+4>>2]=n[3881],n[y+8>>2]=n[3882],n[y+12>>2]=n[3883],n[me>>2]=n[E>>2],n[me+4>>2]=n[E+4>>2],pr(me,N+24|0)|0,n[N+64>>2]=0,n[N+68>>2]=0,y=N+56|0,n[y>>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[y>>2],n[me+4>>2]=n[y+4>>2],pr(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],pr(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,o=N+108|0,n[o>>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],pr(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],pr(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],pr(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,q=N+180|0,n[q>>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],pr(me,N+168|0)|0,zs(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[y>>2],n[ie+4>>2]=n[y+4>>2],n[ie+8>>2]=n[y+8>>2],n[ie+12>>2]=n[y+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[S>>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[o>>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[q>>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=L()|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=H+(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=L()|0,h=pe(h|0,T|0,1,0)|0,T=L()|0;while((T|0)<(oe|0)|(T|0)==(oe|0)&h>>>0<X>>>0);U=f,F=l}else U=0,F=0;if(o=ct(U*24|0)|0,o){r:do if((oe|0)>=0){for(v=0,S=0,f=0,h=0,I=0,p=0;;){if(!((v|0)==(X|0)&(S|0)==(oe|0))&&(me=H+(f*24|0)|0,ie=H+(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(y=H+(f*24|0)|0,ie=Mt(v|0,S|0,f|0,h|0)|0,me=L()|0,E=pe(ie|0,me|0,-1,-1)|0,h=L()|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=L()|0,ee=y+(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=H+(f*24|0)+16|0,ie=n[me+4>>2]|0,h=o+(p*24|0)+8|0,n[h>>2]=n[me>>2],n[h+4>>2]=ie,n[o+(p*24|0)+16>>2]=E,n[o+(p*24|0)+20>>2]=l,P[o+(p*24|0)>>3]=+P[H+(f*24|0)+8>>3],p=pe(p|0,I|0,1,0)|0,f=v,h=S,l=L()|0}if(ie=v,v=pe(v|0,S|0,1,0)|0,me=S,S=L()|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[o+(l*24|0)+20>>2]|0,f|0&&be(f),l=pe(l|0,h|0,1,0)|0,h=L()|0;while((h|0)<(I|0)|(h|0)==(I|0)&l>>>0<p>>>0)}be(o),ie=152;break t}while(!1);if(zs(o,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=o+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=o+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=o+(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=L()|0;while((f|0)<(F|0)|(f|0)==(F|0)&l>>>0<U>>>0)}while(!1);be(o),ie=158;break}else{if((F|0)>0|(F|0)==0&U>>>0>0){l=0,h=0;do f=n[o+(l*24|0)+20>>2]|0,f|0&&be(f),l=pe(l|0,h|0,1,0)|0,h=L()|0;while((h|0)<(F|0)|(h|0)==(F|0)&l>>>0<U>>>0)}be(o),ie=152;break}}else ie=152}while(!1);if((ie|0)==158)return be(_e),be(ce),be(H),ce=0,M=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[H+(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=L()|0,(g|0)<(f|0)|(g|0)==(f|0)&p>>>0<l>>>0;)h=f;return be(H),be(_e),be(ce),ce=13,M=de,ce|0}while(!1);return be(_e),be(ce),ce=13,M=de,ce|0}else if((ie|0)==159)return M=de,l|0;return 0}function cT(o,A){o=o|0,A=A|0;var c=0,u=0;return u=o,o=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)&o>>>0<A>>>0?-1:(u>>>0>c>>>0|(u|0)==(c|0)&o>>>0>A>>>0)&1)|0}function Ds(o){o=o|0;var A=0,c=0;return A=o+20|0,c=n[A>>2]|0,(c|0)==(o|0)?o|0:(c=Ds(c)|0,n[A>>2]=c,c|0)}function lT(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0;return p=o,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[o+8>>3],c=+P[A+8>>3],u<c?(A=-1,A|0):(A=u>c&1,A|0))}function uT(o,A){o=o|0,A=A|0;var c=0,u=0;return u=+P[o>>3],c=+P[A>>3],(u>c?-1:u<c&1)|0}function fT(o,A,c,u,l){o=o|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,y=0,E=0;if(E=M,M=M+64|0,y=E,p=E+56|0,!(!0&(A&2013265920|0)==134217728&(!0&(u&2013265920|0)==134217728)))return l=5,M=E,l|0;if((o|0)==(c|0)&(A|0)==(u|0))return n[l>>2]=0,l=0,M=E,l|0;if(h=se(o|0,A|0,52)|0,L()|0,h=h&15,T=se(c|0,u|0,52)|0,L()|0,(h|0)!=(T&15|0))return l=12,M=E,l|0;if(f=h+-1|0,h>>>0>1){p0(o,A,f,y)|0,p0(c,u,f,p)|0,T=y,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(o|0,A|0,h|0)|0,L()|0,f=f&7,h=se(c|0,u|0,h|0)|0,L()|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,M=E,l|0}while(!1)}f=y,h=f+56|0;do n[f>>2]=0,f=f+4|0;while((f|0)<(h|0));return sf(o,A,1,y)|0,A=y,!((n[A>>2]|0)==(c|0)&&(n[A+4>>2]|0)==(u|0))&&(A=y+8|0,!((n[A>>2]|0)==(c|0)&&(n[A+4>>2]|0)==(u|0)))&&(A=y+16|0,!((n[A>>2]|0)==(c|0)&&(n[A+4>>2]|0)==(u|0)))&&(A=y+24|0,!((n[A>>2]|0)==(c|0)&&(n[A+4>>2]|0)==(u|0)))&&(A=y+32|0,!((n[A>>2]|0)==(c|0)&&(n[A+4>>2]|0)==(u|0)))&&(A=y+40|0,!((n[A>>2]|0)==(c|0)&&(n[A+4>>2]|0)==(u|0)))?(f=y+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,M=E,l|0}function hT(o,A,c,u,l){return o=o|0,A=A|0,c=c|0,u=u|0,l=l|0,c=Bs(o,A,c,u)|0,(c|0)==7?(l=11,l|0):(u=he(c|0,0,56)|0,A=A&-2130706433|(L()|0)|268435456,n[l>>2]=o|u,n[l+4>>2]=A,l=0,l|0)}function dT(o,A,c){return o=o|0,A=A|0,c=c|0,!0&(A&2013265920|0)==268435456?(n[c>>2]=o,n[c+4>>2]=A&-2130706433|134217728,c=0,c|0):(c=6,c|0)}function pT(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0;return l=M,M=M+16|0,u=l,n[u>>2]=0,!0&(A&2013265920|0)==268435456?(f=se(o|0,A|0,56)|0,L()|0,u=It(o,A&-2130706433|134217728,f&7,u,c)|0,M=l,u|0):(u=6,M=l,u|0)}function gf(o,A){o=o|0,A=A|0;var c=0;switch(c=se(o|0,A|0,56)|0,L()|0,c&7){case 0:case 7:return c=0,c|0}return c=A&-2130706433|134217728,!(!0&(A&2013265920|0)==268435456)||!0&(A&117440512|0)==16777216&(nt(o,c)|0)!=0?(c=0,c|0):(c=Us(o,c)|0,c|0)}function mT(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0;return l=M,M=M+16|0,u=l,!0&(A&2013265920|0)==268435456?(f=A&-2130706433|134217728,h=c,n[h>>2]=o,n[h+4>>2]=f,n[u>>2]=0,A=se(o|0,A|0,56)|0,L()|0,u=It(o,f,A&7,u,c+8|0)|0,M=l,u|0):(u=6,M=l,u|0)}function l0(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0;return l=(nt(o,A)|0)==0,A=A&-2130706433,u=c,n[u>>2]=l?o:0,n[u+4>>2]=l?A|285212672:0,u=c+8|0,n[u>>2]=o,n[u+4>>2]=A|301989888,u=c+16|0,n[u>>2]=o,n[u+4>>2]=A|318767104,u=c+24|0,n[u>>2]=o,n[u+4>>2]=A|335544320,u=c+32|0,n[u>>2]=o,n[u+4>>2]=A|352321536,c=c+40|0,n[c>>2]=o,n[c+4>>2]=A|369098752,0}function wo(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0;return h=M,M=M+16|0,l=h,f=A&-2130706433|134217728,!0&(A&2013265920|0)==268435456?(u=se(o|0,A|0,56)|0,L()|0,u=s_(o,f,u&7)|0,(u|0)==-1?(n[c>>2]=0,f=6,M=h,f|0):(hi(o,f,l)|0&&Ve(27634,27035,282,27050),A=se(o|0,A|0,52)|0,L()|0,A=A&15,nt(o,f)|0?u0(l,A,u,2,c):f0(l,A,u,2,c),f=0,M=h,f|0)):(f=6,M=h,f|0)}function bf(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0;return h=M,M=M+16|0,u=h+8|0,l=h,f=A&-2130706433|134217728,!0&(A&2013265920|0)==268435456?(n[u>>2]=0,A=se(o|0,A|0,56)|0,L()|0,A=It(o,f,A&7,u,l)|0,A|0?(c=A,M=h,c|0):(u=n[l>>2]|0,l=n[l+4>>2]|0,A=Bs(u,l,o,f)|0,(A|0)==7?(c=11,M=h,c|0):(o=he(A|0,0,56)|0,f=l&-2130706433|(L()|0)|268435456,n[c>>2]=u|o,n[c+4>>2]=f,c=0,M=h,c|0))):(c=6,M=h,c|0)}function gT(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0,U=0,q=0,N=0,Q=0,G=0,ee=0;n[c>>2]=0,T=+P[o>>3],y=+P[o+8>>3],g=+P[o+16>>3],l=0,f=5,u=5,o=0;do F=+P[15888+(l*24|0)>>3]-T,I=+P[15888+(l*24|0)+8>>3]-y,h=+P[15888+(l*24|0)+16>>3]-g,h=F*F+I*I+h*h,h<u&&(n[c>>2]=l,f=h,o=l,u=h),l=l+1|0;while((l|0)!=20);if(f=+Lb(+(1-f*.5)),f<1e-16)g=0,h=0;else{if(G=+P[16368+(o*24|0)>>3],N=+P[15888+(o*24|0)>>3],Q=+P[15888+(o*24|0)+8>>3],q=+P[15888+(o*24|0)+16>>3],ee=-(q+(N*0+Q*0)),h=N*ee+0,F=Q*ee+0,ee=q*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+y*Q+g*q),I=T+N*ee,u=y+Q*ee,T=g+q*ee,y=+dt(+(T*T+(I*I+u*u))),y=y>0?1/y:0,I=I*y,u=u*y,y=T*y,u=+So(G-+So(+zt(+(y*(Q*h-N*F)+(I*(q*F-Q*U)+u*(N*U-q*h))),+(U*y+(h*I+F*u))))),mr(A)|0?h=+So(u+-.3334731722518321):h=u,u=+Os(+f)*2.618033988749896,(A|0)>0){o=0;do u=u*2.6457513110645907,o=o+1|0;while((o|0)!=(A|0))}g=+De(+h)*u,h=+tt(+h)*u}A=c+4|0,S=c+12|0,n[S>>2]=0,f=+Ct(+h)*1.1547005383792515,u=+Ct(+g)+f*.5,o=~~u,l=~~f,u=u-+(o|0),f=f-+(l|0);do if(u<.5)if(u<.3333333333333333)if(n[A>>2]=o,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){o=o+1|0,n[A>>2]=o;break}else{n[A>>2]=o;break}else{if(!(u<.6666666666666666))if(o=o+1|0,n[A>>2]=o,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]=o;break}}else l=l+1|0,n[c+8>>2]=l;o=o+1|0,n[A>>2]=o}while(!1);do if(g<0)if(l&1){v=(l+1|0)/2|0,v=Mt(o|0,((o|0)<0)<<31>>31|0,v|0,((v|0)<0)<<31>>31|0)|0,o=~~(+(o|0)-((+(v>>>0)+4294967296*+(L()|0))*2+1)),n[A>>2]=o,v=A;break}else{v=(l|0)/2|0,v=Mt(o|0,((o|0)<0)<<31>>31|0,v|0,((v|0)<0)<<31>>31|0)|0,o=~~(+(o|0)-(+(v>>>0)+4294967296*+(L()|0))*2),n[A>>2]=o,v=A;break}else v=A;while(!1);E=c+8|0,A=0-l|0,h<0?(c=o-((l<<1|1)/2|0)|0,n[v>>2]=c,n[E>>2]=A,l=A):c=o,o=l-c|0,A=0-c|0,(c|0)<0?(n[E>>2]=o,n[S>>2]=A,n[v>>2]=0,p=0):(o=l,p=c,A=0),c=p-o|0,l=A-o|0,(o|0)<0?(n[v>>2]=c,n[S>>2]=l,n[E>>2]=0,p=c,o=0):l=A,c=p-l|0,A=o-l|0,(l|0)<0?(n[v>>2]=c,n[E>>2]=A,n[S>>2]=0,l=0):(A=o,c=p),o=(A|0)<(c|0)?A:c,o=(l|0)<(o|0)?l:o,!((o|0)<=0)&&(n[v>>2]=c-o,n[E>>2]=A-o,n[S>>2]=l-o)}function bT(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0;u=M,M=M+16|0,l=u,h=n[o+12>>2]|0,f=+((n[o+8>>2]|0)-h|0),P[l>>3]=+((n[o+4>>2]|0)-h|0)-f*.5,P[l+8>>3]=f*.8660254037844386,Eo(l,n[o>>2]|0,A,0,c),M=u}function Eo(o,A,c,u,l){o=o|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0,U=0;if(f=+o_(o),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=+zt(+ +P[o+8>>3],+ +P[o>>3]),(c|0)>0){o=0;do f=f*.37796447300922725,o=o+1|0;while((o|0)!=(c|0))}p=f*.3333333333333333,u?(c=(mr(c)|0)==0,f=+nf(+((c?p:p*.37796447300922725)*.381966011250105))):(f=+nf(+(f*.381966011250105)),mr(c)|0&&(h=+So(h+.3334731722518321))),E=+So(+P[16368+(A*24|0)>>3]-h),p=+P[15888+(A*24|0)>>3],y=+P[15888+(A*24|0)+8>>3],F=+P[15888+(A*24|0)+16>>3],S=-(F+(p*0+y*0)),T=p*S+0,h=y*S+0,S=F*S+1,v=+dt(+(S*S+(T*T+h*h))),v=v>0?1/v:0,T=T*v,h=h*v,v=S*v,S=+De(+E),E=+tt(+E),U=+De(+f),I=+tt(+f),g=U*p+I*(S*T+E*(F*h-y*v)),f=U*y+I*(S*h+E*(p*v-F*T)),h=U*F+I*(S*v+E*(y*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 u0(o,A,c,u,l){o=o|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0,U=0,q=0,N=0,Q=0,G=0,ee=0,oe=0,X=0,H=0,me=0,ie=0,_e=0,ce=0,de=0,ze=0,Qe=0,Bt=0,Pe=0,We=0,Ht=0,xt=0,ft=0,wt=0,pt=0,er=0,Rt=0,Pt=0,br=0,Dt=0,$e=0,On=0;if(er=M,M=M+256|0,f=er+240|0,ze=er+224|0,ft=er,wt=er+208|0,pt=er+192|0,Qe=er+168|0,Bt=er+152|0,Pe=er+136|0,We=er+120|0,Ht=er+104|0,xt=er+80|0,n[f>>2]=A,n[ze>>2]=n[o>>2],n[ze+4>>2]=n[o+4>>2],n[ze+8>>2]=n[o+8>>2],n[ze+12>>2]=n[o+12>>2],Tf(ze,f,ft),n[l>>2]=0,ze=u+c+((u|0)==5&1)|0,(ze|0)<=(c|0)){M=er;return}G=n[f>>2]|0,Q=wt+4|0,q=wt+8|0,N=wt+12|0,ee=pt+8|0,oe=c+5|0,X=16848+(G<<2)|0,H=Qe+8|0,me=16928+(G<<2)|0,ie=Bt+8|0,_e=Pe+8|0,ce=We+8|0,de=pt+8|0,S=Qe+8|0,F=Qe+16|0,I=xt+8|0,U=xt+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((fi(wt,G,0,1)|0)==2);if((v|0)>(c|0)&(mr(A)|0)!=0){if(E=n[wt>>2]|0,o=n[Q>>2]|0,T=n[q>>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,y=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+o|0,$e=(Dt|0)<0,T=u+o-($e?Dt:0)|0,br=(T|0)<0,Pt=f+u-($e?Dt:0)-(br?T:0)|0,f=(Pt|0)<0,o=($e?0:Dt)-(br?T:0)-(f?Pt:0)|0,u=(br?0:T)-(f?Pt:0)|0,Pt=f?0:Pt,f=(u|0)<(o|0)?u:o,f=(Pt|0)<(f|0)?Pt:f,T=(f|0)>0,o=o-(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=(Zt($e,n[18608+(E*80|0)+(g*20|0)+4>>2]|0)|0)+o|0,T=(Zt($e,n[18608+(E*80|0)+(g*20|0)+8>>2]|0)|0)+u|0,$e=(Zt($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,br=(T|0)<0,$e=$e+(g?0-Pt|0:0)+(br?0-T|0:0)|0,Dt=($e|0)<0,Pt=(g?0:Pt)-(br?T:0)-(Dt?$e:0)|0,T=(br?0:T)-(Dt?$e:0)|0,$e=Dt?0:$e,Dt=(T|0)<(Pt|0)?T:Pt,Dt=($e|0)<(Dt|0)?$e:Dt,br=(Dt|0)>0,$e=$e-(br?Dt:0)|0,Rt=+(T-(br?Dt:0)-$e|0),P[Qe>>3]=+(Pt-(br?Dt:0)-$e|0)-Rt*.5,P[H>>3]=Rt*.8660254037844386,Rt=+(n[me>>2]|0),P[Bt>>3]=Rt*3,P[ie>>3]=0,On=Rt*-1.5,P[Pe>>3]=On,P[_e>>3]=Rt*2.598076211353316,P[We>>3]=On,P[ce>>3]=Rt*-2.598076211353316,n[17008+(y*80|0)+(E<<2)>>2]|0){case 1:o=Pe,u=Bt;break;case 3:o=We,u=Pe;break;case 2:o=Bt,u=We;break;default:o=12;break e}Nf(pt,Qe,u,o,Ht),Eo(Ht,y,G,1,xt),$e=n[l>>2]|0,Rt=+xo(+ +P[U>>3]),On=+zt(+ +P[I>>3],+ +P[xt>>3]),P[l+8+($e<<4)>>3]=Rt,P[l+8+($e<<4)+8>>3]=On,n[l>>2]=(n[l>>2]|0)+1}if((v|0)<(oe|0)&&($e=n[N>>2]|0,Rt=+((n[q>>2]|0)-$e|0),P[pt>>3]=+((n[Q>>2]|0)-$e|0)-Rt*.5,P[de>>3]=Rt*.8660254037844386,Eo(pt,n[wt>>2]|0,G,1,Qe),$e=n[l>>2]|0,Rt=+xo(+ +P[F>>3]),On=+zt(+ +P[S>>3],+ +P[Qe>>3]),P[l+8+($e<<4)>>3]=Rt,P[l+8+($e<<4)+8>>3]=On,n[l>>2]=(n[l>>2]|0)+1),v=v+1|0,(v|0)>=(ze|0)){o=3;break}else u=n[wt>>2]|0,h=n[Q>>2]|0,p=n[q>>2]|0,g=n[N>>2]|0}if((o|0)==3){M=er;return}else(o|0)==12&&Ve(27073,27120,599,27130)}function Tf(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0;I=M,M=M+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(y=(mr(n[A>>2]|0)|0)==0,y=y?u:l,S=o+4|0,f=n[S>>2]|0,E=o+8|0,u=n[E>>2]|0,v=o+12|0,l=n[v>>2]|0,h=u+(f<<1)|0,n[S>>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[S>>2]=0,u=l,h=0,f=p),p=h-u|0,l=f-u|0,(u|0)<0?(n[S>>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[S>>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[S>>2]=h,n[E>>2]=f,n[v>>2]=l),g=(f<<1)+h|0,p=l+(h<<1)|0,n[S>>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[S>>2]=0,p=0,f=l):u=g,h=p-u|0,l=f-u|0,(u|0)<0?(n[S>>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[S>>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[S>>2]=h-u,n[E>>2]=f-u,n[v>>2]=l-u),mr(n[A>>2]|0)|0&&(f=n[S>>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[S>>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[S>>2]=0,u=l,g=0):(g=f,p=h),f=g-u|0,l=p-u|0,(u|0)<0?(n[S>>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[S>>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[S>>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[o>>2],l=n[E>>2]|0,u=n[v>>2]|0,A=n[y+4>>2]|0,T=n[y+8>>2]|0,h=(n[y>>2]|0)+(n[S>>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[o>>2],l=n[E>>2]|0,u=n[v>>2]|0,A=n[y+16>>2]|0,T=n[y+20>>2]|0,h=(n[y+12>>2]|0)+(n[S>>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[o>>2],l=n[E>>2]|0,u=n[v>>2]|0,A=n[y+28>>2]|0,T=n[y+32>>2]|0,h=(n[y+24>>2]|0)+(n[S>>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[o>>2],l=n[E>>2]|0,u=n[v>>2]|0,A=n[y+40>>2]|0,T=n[y+44>>2]|0,h=(n[y+36>>2]|0)+(n[S>>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[o>>2],f=n[E>>2]|0,u=n[v>>2]|0,T=n[y+52>>2]|0,g=n[y+56>>2]|0,h=(n[y+48>>2]|0)+(n[S>>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){M=I;return}n[A>>2]=f-l,n[T>>2]=h-l,n[g>>2]=u-l,M=I}function fi(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0,U=0,q=0;if(v=n[16928+(A<<2)>>2]|0,E=(u|0)!=0,v=E?v*3|0:v,y=o+4|0,p=n[y>>2]|0,T=o+8|0,f=n[T>>2]|0,E){if(h=o+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=o+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[o>>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,S=(c|0)<0,f=u+f-(S?c:0)|0,p=(f|0)<0,u=u+h-(S?c:0)-(p?f:0)|0,h=(u|0)<0,c=(S?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[y>>2]=h,n[T>>2]=f,n[g>>2]=u):h=p}else l=18608+((n[o>>2]|0)*80|0)+20|0,h=p;while(!1);if(n[o>>2]=n[l>>2],p=n[l+16>>2]|0,(p|0)>0){c=0;do S=u+h|0,I=(S|0)<0,q=I?S:0,F=f+h-q|0,U=(F|0)<0,o=U?F:0,h=u+f-q-o|0,f=(h|0)<0,u=f?0:h,h=f?h:0,f=(U?0:F)-h|0,h=(I?0:S)-o-h|0,o=(f|0)<(h|0)?f:h,o=(u|0)<(o|0)?u:o,(o|0)>0&&(h=h-o|0,f=f-o|0,u=u-o|0),c=c+1|0;while((c|0)<(p|0));n[y>>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=Zt(F,n[l+8>>2]|0)|0,q=Zt(F,n[l+12>>2]|0)|0,h=(Zt(F,n[l+4>>2]|0)|0)+h|0,n[y>>2]=h,f=U+f|0,n[T>>2]=f,u=q+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[y>>2]=0,f=0):(l=f,f=h),(l|0)<0?(o=f-l|0,n[y>>2]=o,u=u-l|0,n[g>>2]=u,n[T>>2]=0,h=0):(o=f,h=l),f=o-u|0,l=h-u|0,(u|0)<0?(n[y>>2]=f,n[T>>2]=l,n[g>>2]=0,u=0):(l=h,f=o),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[y>>2]=f,n[T>>2]=l,n[g>>2]=u),E?(q=(l+f+u|0)==(v|0)?1:2,q|0):(q=2,q|0)}function TT(o,A){o=o|0,A=A|0;var c=0;do c=fi(o,A,0,1)|0;while((c|0)==2);return c|0}function f0(o,A,c,u,l){o=o|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0,U=0,q=0,N=0,Q=0,G=0,ee=0,oe=0,X=0,H=0,me=0,ie=0,_e=0,ce=0,de=0,ze=0,Qe=0,Bt=0,Pe=0,We=0,Ht=0,xt=0,ft=0,wt=0,pt=0;if(xt=M,M=M+272|0,f=xt+256|0,h=xt+240|0,Pe=xt,We=xt+224|0,Ht=xt+208|0,ie=xt+184|0,_e=xt+168|0,ce=xt+152|0,de=xt+136|0,ze=xt+120|0,Qe=xt+96|0,n[f>>2]=A,n[h>>2]=n[o>>2],n[h+4>>2]=n[o+4>>2],n[h+8>>2]=n[o+8>>2],n[h+12>>2]=n[o+12>>2],_f(h,f,Pe),n[l>>2]=0,me=u+c+((u|0)==6&1)|0,(me|0)<=(c|0)){M=xt;return}q=n[f>>2]|0,N=c+6|0,Q=Ht+8|0,G=ie+8|0,ee=16928+(q<<2)|0,oe=_e+8|0,X=ce+8|0,H=de+8|0,F=n[h>>2]|0,v=We+4|0,S=We+8|0,I=We+12|0,U=Ht+8|0,g=ie+8|0,y=ie+16|0,T=Qe+8|0,E=Qe+16|0,h=0,p=c,u=-1;e:for(;;){if(f=(p|0)%6|0,o=Pe+(f<<4)|0,n[We>>2]=n[o>>2],n[We+4>>2]=n[o+4>>2],n[We+8>>2]=n[o+8>>2],n[We+12>>2]=n[o+12>>2],o=h,h=fi(We,q,0,1)|0,(p|0)>(c|0)&(mr(A)|0)!=0&&(Bt=n[We>>2]|0,(o|0)!=1&(Bt|0)!=(u|0))){switch(pt=(f+5|0)%6|0,o=n[Pe+(pt<<4)+12>>2]|0,ft=+((n[Pe+(pt<<4)+8>>2]|0)-o|0),P[Ht>>3]=+((n[Pe+(pt<<4)+4>>2]|0)-o|0)-ft*.5,P[Q>>3]=ft*.8660254037844386,o=n[Pe+(f<<4)+12>>2]|0,ft=+((n[Pe+(f<<4)+8>>2]|0)-o|0),P[ie>>3]=+((n[Pe+(f<<4)+4>>2]|0)-o|0)-ft*.5,P[G>>3]=ft*.8660254037844386,ft=+(n[ee>>2]|0),P[_e>>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[H>>3]=ft*-2.598076211353316,n[17008+(F*80|0)+(((u|0)==(F|0)?Bt:u)<<2)>>2]|0){case 1:o=ce,u=_e;break;case 3:o=de,u=ce;break;case 2:o=_e,u=de;break;default:o=8;break e}Nf(Ht,ie,u,o,ze),!(Ff(Ht,ze)|0)&&!(Ff(ie,ze)|0)&&(Eo(ze,F,q,1,Qe),pt=n[l>>2]|0,ft=+xo(+ +P[E>>3]),wt=+zt(+ +P[T>>3],+ +P[Qe>>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[S>>2]|0)-pt|0),P[Ht>>3]=+((n[v>>2]|0)-pt|0)-ft*.5,P[U>>3]=ft*.8660254037844386,Eo(Ht,n[We>>2]|0,q,1,ie),pt=n[l>>2]|0,ft=+xo(+ +P[y>>3]),wt=+zt(+ +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)){o=3;break}else u=n[We>>2]|0}if((o|0)==3){M=xt;return}else(o|0)==8&&Ve(27157,27120,766,27202)}function _f(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0;F=M,M=M+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=(mr(n[A>>2]|0)|0)==0,E=E?u:l,I=o+4|0,f=n[I>>2]|0,v=o+8|0,u=n[v>>2]|0,S=o+12|0,l=n[S>>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[S>>2]=f,l=u-h|0,p=f-h|0,(h|0)<0&&(n[v>>2]=l,n[S>>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[S>>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[S>>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[S>>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[S>>2]=f,u=g-p|0,l=f-p|0,(p|0)<0?(n[v>>2]=u,n[S>>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[S>>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[S>>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[S>>2]=l-u),mr(n[A>>2]|0)|0&&(f=n[I>>2]|0,h=n[v>>2]|0,l=n[S>>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[S>>2]=h,l=u-f|0,p=h-f|0,(f|0)<0?(n[v>>2]=l,n[S>>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[S>>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[S>>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[S>>2]=l-u),n[A>>2]=(n[A>>2]|0)+1),g=0;do n[c+(g<<4)>>2]=n[o>>2],l=n[v>>2]|0,u=n[S>>2]|0,T=n[E+(g*12|0)+4>>2]|0,y=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=y+u|0,y=c+(g<<4)+12|0,n[y>>2]=u,f=l-h|0,(h|0)<0&&(u=u-h|0,n[T>>2]=f,n[y>>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[y>>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[y>>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[y>>2]=u-l),g=g+1|0;while((g|0)!=6);M=F}function h0(o,A){return o=o|0,A=A|0,A=se(o|0,A|0,52)|0,L()|0,A&15|0}function yf(o,A){return o=o|0,A=A|0,A=se(o|0,A|0,45)|0,L()|0,A&127|0}function _T(o,A,c,u){return o=o|0,A=A|0,c=c|0,u=u|0,(c+-1|0)>>>0>14?(u=4,u|0):(c=se(o|0,A|0,(15-c|0)*3|0)|0,L()|0,n[u>>2]=c&7,u=0,u|0)}function yT(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0;if(o>>>0>15)return u=4,u|0;if(A>>>0>121)return u=17,u|0;h=he(o|0,0,52)|0,l=L()|0,p=he(A|0,0,45)|0,l=l|(L()|0)|134225919;e:do if((o|0)>=1){for(p=1,h=(re[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&~(L()|0),A=he(A|0,((A|0)<0)<<31>>31|0,T|0)|0,f=A|f&~g,l=L()|0|l,(p|0)<(o|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 Us(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0,h=0;return!(!0&(A&-16777216|0)==134217728)||(u=se(o|0,A|0,52)|0,L()|0,u=u&15,c=se(o|0,A|0,45)|0,L()|0,c=c&127,c>>>0>121)?(o=0,o|0):(h=(u^15)*3|0,l=se(o|0,A|0,h|0)|0,h=he(l|0,L()|0,h|0)|0,l=L()|0,f=Mt(-1227133514,-1171,h|0,l|0)|0,!((h&613566756&f|0)==0&(l&4681&(L()|0)|0)==0)||(h=(u*3|0)+19|0,f=he(~o|0,~A|0,h|0)|0,h=se(f|0,L()|0,h|0)|0,!((u|0)==15|(h|0)==0&(L()|0)==0))?(h=0,h|0):!(re[20496+c>>0]|0)||(A=A&8191,(o|0)==0&(A|0)==0)?(h=1,h|0):(h=M0(o|0,A|0,0)|0,L()|0,((63-h|0)%3|0)!=0|0))}function xT(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0,h=0;return!0&(A&-16777216|0)==134217728&&(u=se(o|0,A|0,52)|0,L()|0,u=u&15,c=se(o|0,A|0,45)|0,L()|0,c=c&127,c>>>0<=121)&&(h=(u^15)*3|0,l=se(o|0,A|0,h|0)|0,h=he(l|0,L()|0,h|0)|0,l=L()|0,f=Mt(-1227133514,-1171,h|0,l|0)|0,(h&613566756&f|0)==0&(l&4681&(L()|0)|0)==0)&&(h=(u*3|0)+19|0,f=he(~o|0,~A|0,h|0)|0,h=se(f|0,L()|0,h|0)|0,(u|0)==15|(h|0)==0&(L()|0)==0)&&(!(re[20496+c>>0]|0)||(c=A&8191,(o|0)==0&(c|0)==0)||(h=M0(o|0,c|0,0)|0,L()|0,(63-h|0)%3|0))||gf(o,A)|0?(h=1,h|0):(h=(kf(o,A)|0)!=0&1,h|0)}function d0(o,A,c,u){o=o|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=L()|0,c=he(c|0,0,45)|0,c=f|(L()|0)|134225919,(A|0)<1){f=-1,u=c,A=o,n[A>>2]=f,o=o+4|0,n[o>>2]=u;return}for(f=1,l=-1;h=(15-f|0)*3|0,p=he(7,0,h|0)|0,c=c&~(L()|0),h=he(u|0,0,h|0)|0,l=l&~p|h,c=c|(L()|0),(f|0)!=(A|0);)f=f+1|0;p=o,h=p,n[h>>2]=l,p=p+4|0,n[p>>2]=c}function p0(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0;if(f=se(o|0,A|0,52)|0,L()|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]=o,n[u+4>>2]=A,u=0,u|0;if(l=he(c|0,0,52)|0,l=l|o,o=L()|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,o=L()|0|o;while((c|0)<(f|0));return n[u>>2]=l,n[u+4>>2]=o,u=0,u|0}function vo(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0;if(f=se(o|0,A|0,52)|0,L()|0,f=f&15,!((c|0)<16&(f|0)<=(c|0)))return u=4,u|0;l=c-f|0,c=se(o|0,A|0,45)|0,L()|0;e:do if(!(at(c&127)|0))c=hn(7,0,l,((l|0)<0)<<31>>31)|0,l=L()|0;else{t:do if(f|0){for(c=1;h=he(7,0,(15-c|0)*3|0)|0,!!((h&o|0)==0&((L()|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=L()|0;break e}while(!1);c=hn(7,0,l,((l|0)<0)<<31>>31)|0,c=lt(c|0,L()|0,5,0)|0,c=pe(c|0,L()|0,-5,-1)|0,c=dn(c|0,L()|0,6,0)|0,c=pe(c|0,L()|0,1,0)|0,l=L()|0}while(!1);return h=u,n[h>>2]=c,n[h+4>>2]=l,h=0,h|0}function nt(o,A){o=o|0,A=A|0;var c=0,u=0,l=0;if(l=se(o|0,A|0,45)|0,L()|0,!(at(l&127)|0))return l=0,l|0;l=se(o|0,A|0,52)|0,L()|0,l=l&15;e:do if(!l)c=0;else for(u=1;;){if(c=se(o|0,A|0,(15-u|0)*3|0)|0,L()|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 wT(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0;if(h=M,M=M+16|0,f=h,y0(f,o,A,c),A=f,o=n[A>>2]|0,A=n[A+4>>2]|0,(o|0)==0&(A|0)==0)return M=h,0;l=0,c=0;do p=u+(l<<3)|0,n[p>>2]=o,n[p+4>>2]=A,l=pe(l|0,c|0,1,0)|0,c=L()|0,x0(f),p=f,o=n[p>>2]|0,A=n[p+4>>2]|0;while(!((o|0)==0&(A|0)==0));return M=h,0}function xf(o,A,c,u){return o=o|0,A=A|0,c=c|0,u=u|0,(u|0)<(c|0)?(c=A,u=o,Re(c|0),u|0):(c=he(-1,-1,((u-c|0)*3|0)+3|0)|0,u=he(~c|0,~(L()|0)|0,(15-u|0)*3|0)|0,c=~(L()|0)&A,u=~u&o,Re(c|0),u|0)}function wf(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0;return l=se(o|0,A|0,52)|0,L()|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,~(L()|0)|0,(15-c|0)*3|0)|0,A=~(L()|0)&A,o=~l&o),l=he(c|0,0,52)|0,c=A&-15728641|(L()|0),n[u>>2]=o|l,n[u+4>>2]=c,u=0,u|0):(u=4,u|0)}function ET(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0,U=0,q=0,N=0,Q=0,G=0,ee=0,oe=0,X=0,H=0,me=0,ie=0,_e=0,ce=0,de=0;if((c|0)==0&(u|0)==0)return de=0,de|0;if(l=o,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 _e=o+(l<<3)|0,ce=n[_e+4>>2]|0,de=A+(l<<3)|0,n[de>>2]=n[_e>>2],n[de+4>>2]=ce,l=pe(l|0,f|0,1,0)|0,f=L()|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(Lr(ce|0,o|0,ie|0)|0,_e=qt(c,8)|0,!_e)return be(ce),de=13,de|0;e:for(;;){l=ce,T=n[l>>2]|0,l=n[l+4>>2]|0,H=se(T|0,l|0,52)|0,L()|0,H=H&15,me=H+-1|0,X=(H|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,Q=L()|0,me>>>0>15){if(!((T|0)==0&(l|0)==0)){de=16;break e}for(f=0,o=0;;){if(f=pe(f|0,o|0,1,0)|0,o=L()|0,!((o|0)<(u|0)|(o|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,o=l,f=0,h=0;;){if(!((p|0)==0&(o|0)==0)){if(!(!0&(o&117440512|0)==0)){de=21;break e}if(y=se(p|0,o|0,52)|0,L()|0,y=y&15,(y|0)<(me|0)){l=12,de=27;break e}if((y|0)!=(me|0)&&(p=p|N,o=o&-15728641|Q,y>>>0>=H>>>0)){g=me;do ee=he(7,0,(14-g|0)*3|0)|0,g=g+1|0,p=ee|p,o=L()|0|o;while(g>>>0<y>>>0)}if(v=Zr(p|0,o|0,c|0,u|0)|0,S=L()|0,g=_e+(v<<3)|0,y=g,E=n[y>>2]|0,y=n[y+4>>2]|0,!((E|0)==0&(y|0)==0)){U=0,q=0;do{if((U|0)>(u|0)|(U|0)==(u|0)&q>>>0>c>>>0){de=31;break e}if((E|0)==(p|0)&(y&-117440513|0)==(o|0)){I=se(E|0,y|0,56)|0,L()|0,I=I&7,F=I+1|0,ee=se(E|0,y|0,45)|0,L()|0;r:do if(!(at(ee&127)|0))y=7;else{if(E=se(E|0,y|0,52)|0,L()|0,E=E&15,!E){y=6;break}for(y=1;;){if(ee=he(7,0,(15-y|0)*3|0)|0,!((ee&p|0)==0&((L()|0)&o|0)==0)){y=7;break r}if(y>>>0<E>>>0)y=y+1|0;else{y=6;break}}}while(!1);if((I+2|0)>>>0>y>>>0){de=41;break e}ee=he(F|0,0,56)|0,o=L()|0|o&-117440513,G=g,n[G>>2]=0,n[G+4>>2]=0,p=ee|p}else v=pe(v|0,S|0,1,0)|0,v=pn(v|0,L()|0,c|0,u|0)|0,S=L()|0;q=pe(q|0,U|0,1,0)|0,U=L()|0,g=_e+(v<<3)|0,y=g,E=n[y>>2]|0,y=n[y+4>>2]|0}while(!((E|0)==0&(y|0)==0))}ee=g,n[ee>>2]=p,n[ee+4>>2]=o}if(f=pe(f|0,h|0,1,0)|0,h=L()|0,!((h|0)<(u|0)|(h|0)==(u|0)&f>>>0<c>>>0))break t;o=ce+(f<<3)|0,p=n[o>>2]|0,o=n[o+4>>2]|0}}while(!1);if(ee=pe(c|0,u|0,5,0)|0,G=L()|0,G>>>0<0|(G|0)==0&ee>>>0<11){de=85;break}if(ee=dn(c|0,u|0,6,0)|0,L()|0,ee=qt(ee,8)|0,!ee){de=48;break}do if(oe){for(F=0,o=0,I=0,U=0;;){if(y=_e+(F<<3)|0,h=y,f=n[h>>2]|0,h=n[h+4>>2]|0,(f|0)==0&(h|0)==0)G=I;else{E=se(f|0,h|0,56)|0,L()|0,E=E&7,p=E+1|0,v=h&-117440513,G=se(f|0,h|0,45)|0,L()|0;t:do if(at(G&127)|0){if(S=se(f|0,h|0,52)|0,L()|0,S=S&15,S|0)for(g=1;;){if(G=he(7,0,(15-g|0)*3|0)|0,!((f&G|0)==0&(v&(L()|0)|0)==0))break t;if(g>>>0<S>>>0)g=g+1|0;else break}h=he(p|0,0,56)|0,f=h|f,h=L()|0|v,p=y,n[p>>2]=f,n[p+4>>2]=h,p=E+2|0}while(!1);(p|0)==7?(G=ee+(o<<3)|0,n[G>>2]=f,n[G+4>>2]=h&-117440513,o=pe(o|0,I|0,1,0)|0,G=L()|0):G=I}if(F=pe(F|0,U|0,1,0)|0,U=L()|0,(U|0)<(u|0)|(U|0)==(u|0)&F>>>0<c>>>0)I=G;else break}if(oe){if(q=me>>>0>15,N=he(me|0,0,52)|0,Q=L()|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=L()|0),p=pe(p|0,h|0,1,0)|0,h=L()|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=G;break}for(f=0,g=0,h=0,p=0;;){do if(!((T|0)==0&(l|0)==0)){if(S=se(T|0,l|0,52)|0,L()|0,S=S&15,q|(S|0)<(me|0)){de=80;break e}if((S|0)!=(me|0)){if(y=T|N,E=l&-15728641|Q,S>>>0>=H>>>0){v=me;do X=he(7,0,(14-v|0)*3|0)|0,v=v+1|0,y=X|y,E=L()|0|E;while(v>>>0<S>>>0)}}else y=T,E=l;I=Zr(y|0,E|0,c|0,u|0)|0,v=0,S=0,U=L()|0;do{if((v|0)>(u|0)|(v|0)==(u|0)&S>>>0>c>>>0){de=81;break e}if(X=_e+(I<<3)|0,F=n[X+4>>2]|0,(F&-117440513|0)==(E|0)&&(n[X>>2]|0)==(y|0)){de=65;break}X=pe(I|0,U|0,1,0)|0,I=pn(X|0,L()|0,c|0,u|0)|0,U=L()|0,S=pe(S|0,v|0,1,0)|0,v=L()|0,X=_e+(I<<3)|0}while(!((n[X>>2]|0)==(y|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=L()|0}while(!1);if(h=pe(h|0,p|0,1,0)|0,p=L()|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=G}else f=0,l=G}else f=0,o=0,l=0;while(!1);if(mn(_e|0,0,ie|0)|0,Lr(ce|0,ee|0,o<<3|0)|0,be(ee),(o|0)==0&(l|0)==0){de=89;break}else A=A+(f<<3)|0,u=l,c=o}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(_e),de=10,de|0;if((de|0)==48)return be(ce),be(_e),de=13,de|0;(de|0)==80?Ve(27634,27225,711,27235):(de|0)==81?Ve(27634,27225,723,27235):(de|0)==85&&(Lr(A|0,ce|0,c<<3|0)|0,de=89)}return(de|0)==21?(be(ce),be(_e),de=5,de|0):(de|0)==27?(be(ce),be(_e),de=l,de|0):(de|0)==89?(be(ce),be(_e),de=0,de|0):0}function vT(o,A,c,u,l,f,h){o=o|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,y=0,E=0,v=0,S=0,I=0,F=0;if(F=M,M=M+16|0,I=F,!((c|0)>0|(c|0)==0&A>>>0>0))return I=0,M=F,I|0;if((h|0)>=16)return I=12,M=F,I|0;v=0,S=0,E=0,p=0;e:for(;;){if(T=o+(v<<3)|0,g=n[T>>2]|0,T=n[T+4>>2]|0,y=se(g|0,T|0,52)|0,L()|0,(y&15|0)>(h|0)){p=12,g=11;break}if(y0(I,g,T,h),y=I,T=n[y>>2]|0,y=n[y+4>>2]|0,(T|0)==0&(y|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]=y,g=pe(g|0,p|0,1,0)|0,p=L()|0,x0(I),E=I,T=n[E>>2]|0,y=n[E+4>>2]|0}while(!((T|0)==0&(y|0)==0))}if(v=pe(v|0,S|0,1,0)|0,S=L()|0,(S|0)<(c|0)|(S|0)==(c|0)&v>>>0<A>>>0)E=g;else{p=0,g=11;break}}return(g|0)==10?(I=14,M=F,I|0):(g|0)==11?(M=F,p|0):0}function ST(o,A,c,u,l){o=o|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0;v=M,M=M+16|0,E=v;e:do if((c|0)>0|(c|0)==0&A>>>0>0){for(T=0,h=0,f=0,y=0;;){if(g=o+(T<<3)|0,p=n[g>>2]|0,g=n[g+4>>2]|0,!((p|0)==0&(g|0)==0)&&(g=(vo(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=L()|0,!g)){f=12;break}if(T=pe(T|0,y|0,1,0)|0,y=L()|0,!((y|0)<(c|0)|(y|0)==(c|0)&T>>>0<A>>>0))break e}return M=v,f|0}else h=0,f=0;while(!1);return n[l>>2]=h,n[l+4>>2]=f,l=0,M=v,l|0}function CT(o,A){return o=o|0,A=A|0,A=se(o|0,A|0,52)|0,L()|0,A&1|0}function $t(o,A){o=o|0,A=A|0;var c=0,u=0,l=0;if(l=se(o|0,A|0,52)|0,L()|0,l=l&15,!l)return l=0,l|0;for(u=1;;){if(c=se(o|0,A|0,(15-u|0)*3|0)|0,L()|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 m0(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0;if(y=se(o|0,A|0,52)|0,L()|0,y=y&15,!y)return T=A,y=o,Re(T|0),y|0;for(T=1,c=0;;){switch(u=(15-T|0)*3|0,p=he(7,0,u|0)|0,g=L()|0,f=o&~p,h=A&~g,o=se(o|0,A|0,u|0)|0,L()|0,o&7){case 1:o=5;break;case 5:o=4;break;case 4:o=6;break;case 6:o=2;break;case 2:o=3;break;case 3:o=1;break;default:o=o&7}u=he(o|0,0,u|0)|0,l=L()|0,o=u|f,A=l|h;e:do if(!c)if((u&p|0)==0&(l&g|0)==0)c=0;else if(h=se(o|0,A|0,52)|0,L()|0,h=h&15,!h)c=1;else{c=1;t:for(;;){switch(g=se(o|0,A|0,(15-c|0)*3|0)|0,L()|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(o|0,A|0,l|0)|0,L()|0,u=he(7,0,l|0)|0,u=o&~u,A=A&~(L()|0),c&7){case 1:o=5;break;case 5:o=4;break;case 4:o=6;break;case 6:o=2;break;case 2:o=3;break;case 3:o=1;break;default:o=c&7}if(o=he(o|0,0,l|0)|0,o=o|u,A=L()|0|A,f>>>0<h>>>0)f=f+1|0;else{c=1;break e}}}while(!1);if(T>>>0<y>>>0)T=T+1|0;else break}return Re(A|0),o|0}function Fn(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0,h=0;if(h=se(o|0,A|0,52)|0,L()|0,h=h&15,!h)return f=A,h=o,Re(f|0),h|0;for(f=1;;){switch(l=(15-f|0)*3|0,c=se(o|0,A|0,l|0)|0,L()|0,u=he(7,0,l|0)|0,u=o&~u,A=A&~(L()|0),c&7){case 1:o=5;break;case 5:o=4;break;case 4:o=6;break;case 6:o=2;break;case 2:o=3;break;case 3:o=1;break;default:o=c&7}if(o=he(o|0,0,l|0)|0,o=o|u,A=L()|0|A,f>>>0<h>>>0)f=f+1|0;else break}return Re(A|0),o|0}function IT(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0;if(y=se(o|0,A|0,52)|0,L()|0,y=y&15,!y)return T=A,y=o,Re(T|0),y|0;for(T=1,c=0;;){switch(u=(15-T|0)*3|0,p=he(7,0,u|0)|0,g=L()|0,f=o&~p,h=A&~g,o=se(o|0,A|0,u|0)|0,L()|0,o&7){case 1:o=3;break;case 3:o=2;break;case 2:o=6;break;case 6:o=4;break;case 4:o=5;break;case 5:o=1;break;default:o=o&7}u=he(o|0,0,u|0)|0,l=L()|0,o=u|f,A=l|h;e:do if(!c)if((u&p|0)==0&(l&g|0)==0)c=0;else if(h=se(o|0,A|0,52)|0,L()|0,h=h&15,!h)c=1;else{c=1;t:for(;;){switch(g=se(o|0,A|0,(15-c|0)*3|0)|0,L()|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=o&~u,l=A&~(L()|0),o=se(o|0,A|0,c|0)|0,L()|0,o&7){case 1:o=3;break;case 3:o=2;break;case 2:o=6;break;case 6:o=4;break;case 4:o=5;break;case 5:o=1;break;default:o=o&7}if(o=he(o|0,0,c|0)|0,o=o|u,A=L()|0|l,f>>>0<h>>>0)f=f+1|0;else{c=1;break e}}}while(!1);if(T>>>0<y>>>0)T=T+1|0;else break}return Re(A|0),o|0}function g0(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0,h=0;if(h=se(o|0,A|0,52)|0,L()|0,h=h&15,!h)return f=A,h=o,Re(f|0),h|0;for(f=1;;){switch(u=(15-f|0)*3|0,c=he(7,0,u|0)|0,c=o&~c,l=A&~(L()|0),o=se(o|0,A|0,u|0)|0,L()|0,o&7){case 1:o=3;break;case 3:o=2;break;case 2:o=6;break;case 6:o=4;break;case 4:o=5;break;case 5:o=1;break;default:o=o&7}if(o=he(o|0,0,u|0)|0,o=o|c,A=L()|0|l,f>>>0<h>>>0)f=f+1|0;else break}return Re(A|0),o|0}function MT(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0,U=0,q=0,N=0,Q=0,G=0,ee=0,oe=0,X=0;if(G=M,M=M+16|0,Q=G,he(A|0,0,52)|0,c=L()|134225919,!A)return(n[o+4>>2]|0)>2||(n[o+8>>2]|0)>2||(n[o+12>>2]|0)>2?(N=0,Q=0,Re(N|0),M=G,Q|0):(he(uf(o)|0,0,45)|0,N=L()|0|c,Q=-1,Re(N|0),M=G,Q|0);n[Q>>2]=n[o>>2],n[Q+4>>2]=n[o+4>>2],n[Q+8>>2]=n[o+8>>2],n[Q+12>>2]=n[o+12>>2],N=Q+4|0;e:do if((A|0)>0)for(F=Q+8|0,U=Q+12|0,I=A,E=n[F>>2]|0,v=n[U>>2]|0,A=-1,y=n[Q+4>>2]|0;;){S=I,I=I+-1|0,o=y-v|0,u=E-v|0,S&1?(f=Vr(+((o*3|0)-u|0)*.14285714285714285)|0,n[N>>2]=f,o=Vr(+((u<<1)+o|0)*.14285714285714285)|0,n[F>>2]=o,n[U>>2]=0,u=o-f|0,l=0-f|0,(f|0)<0?(n[F>>2]=u,n[U>>2]=l,n[N>>2]=0,o=u,h=0):(h=f,l=0),f=h-o|0,u=l-o|0,(o|0)<0?(n[N>>2]=f,n[U>>2]=u,n[F>>2]=0,h=f,f=0):(u=l,f=o),o=h-u|0,l=f-u|0,(u|0)<0?(n[N>>2]=o,n[F>>2]=l,n[U>>2]=0,f=0):(l=f,o=h,f=u),u=(l|0)<(o|0)?l:o,u=(f|0)<(u|0)?f:u,(u|0)>0&&(f=f-u|0,l=l-u|0,o=o-u|0,n[N>>2]=o,n[F>>2]=l,n[U>>2]=f),oe=l+(o*3|0)|0,ee=(oe|0)<0,T=f+(l*3|0)-(ee?oe:0)|0,g=(T|0)<0,u=(f*3|0)+o-(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=Vr(+((o<<1)+u|0)*.14285714285714285)|0,n[N>>2]=p,l=Vr(+((u*3|0)-o|0)*.14285714285714285)|0,n[F>>2]=l,n[U>>2]=0,u=l-p|0,o=0-p|0,(p|0)<0?(n[F>>2]=u,n[U>>2]=o,n[N>>2]=0,l=u,p=0):o=0,h=p-l|0,u=o-l|0,(l|0)<0?(n[N>>2]=h,n[U>>2]=u,n[F>>2]=0,f=u,l=0):(f=o,h=p),o=h-f|0,u=l-f|0,(f|0)<0?(n[N>>2]=o,n[F>>2]=u,n[U>>2]=0,l=u,f=0):o=h,u=(l|0)<(o|0)?l:o,u=(f|0)<(u|0)?f:u,(u|0)>0&&(f=f-u|0,l=l-u|0,o=o-u|0,n[N>>2]=o,n[F>>2]=l,n[U>>2]=f),oe=f+(o*3|0)|0,X=(oe|0)<0,T=(l*3|0)+o-(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=y+(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,y=(v|0)<0,p=y?0:v,X=(h?0:g)-(y?v:0)|0,v=(f?0:u)-(h?g:0)-(y?v:0)|0,y=(X|0)<(v|0)?X:v,y=(p|0)<(y|0)?p:y,g=(y|0)>0,v=v-(g?y:0)|0,h=(15-S|0)*3|0,u=he(7,0,h|0)|0,u=A&~u,f=c&~(L()|0),E=(v|0)<0,oe=E?v:0,X=X-(g?y:0)-oe|0,ee=(X|0)<0,oe=(ee?0-X|0:0)+(p-(g?y: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:q=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){q=36;break t}else{A=6;break t}default:q=36;break t}default:q=36}while(!1);if((q|0)==36&&(q=0,A=7),A=he(A|0,0,h|0)|0,A=A|u,c=L()|0|f,(S|0)<=1)break e;E=l,v=T,y=o}else A=-1,o=n[N>>2]|0;while(!1);e:do if((o|0)<=2&&(n[Q+8>>2]|0)<=2&&(n[Q+12>>2]|0)<=2){if(u=uf(Q)|0,o=he(u|0,0,45)|0,A=o|A,o=L()|0|c&-1040385,g=Jb(Q)|0,!(at(u)|0)){if((g|0)<=0)break;for(p=0;;){h=se(A|0,o|0,52)|0,L()|0,h=h&15;t:do if(h)for(f=1;;){switch(l=(15-f|0)*3|0,c=se(A|0,o|0,l|0)|0,L()|0,u=he(7,0,l|0)|0,A=A&~u,u=o&~(L()|0),c&7){case 1:o=5;break;case 5:o=4;break;case 4:o=6;break;case 6:o=2;break;case 2:o=3;break;case 3:o=1;break;default:o=c&7}if(o=he(o|0,0,l|0)|0,A=o|A,o=L()|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,o|0,52)|0,L()|0,h=h&15;t:do if(h){c=1;r:for(;;){switch(X=se(A|0,o|0,(15-c|0)*3|0)|0,L()|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(ff(u,n[Q>>2]|0)|0)for(f=1;;){switch(c=(15-f|0)*3|0,u=he(7,0,c|0)|0,u=A&~u,l=o&~(L()|0),o=se(A|0,o|0,c|0)|0,L()|0,o&7){case 1:o=3;break;case 3:o=2;break;case 2:o=6;break;case 6:o=4;break;case 4:o=5;break;case 5:o=1;break;default:o=o&7}if(A=he(o|0,0,c|0)|0,A=A|u,o=L()|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,o|0,l|0)|0,L()|0,u=he(7,0,l|0)|0,A=A&~u,u=o&~(L()|0),c&7){case 1:o=5;break;case 5:o=4;break;case 4:o=6;break;case 6:o=2;break;case 2:o=3;break;case 3:o=1;break;default:o=c&7}if(o=he(o|0,0,l|0)|0,A=o|A,o=L()|0|u,f>>>0<h>>>0)f=f+1|0;else break t}}while(!1);if((g|0)>0){c=0;do A=m0(A,o)|0,o=L()|0,c=c+1|0;while((c|0)!=(g|0))}}else A=0,o=0;while(!1);return oe=o,X=A,Re(oe|0),M=G,X|0}function mr(o){return o=o|0,(o|0)%2|0}function b0(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0;if(y=M,M=M+64|0,p=y+24|0,g=y+48|0,T=y,A>>>0>15)return T=4,M=y,T|0;if(f=+P[o>>3],P[st>>3]=f,(n[st+4>>2]&2146435072|0)==2146435072||(u=+P[o+8>>3],P[st>>3]=u,(n[st+4>>2]&2146435072|0)==2146435072))return T=3,M=y,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,o=n[st+4>>2]|0,P[st>>3]=l,!((n[st+4>>2]&2146435072|0)==2146435072|!0&(o&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],gT(p,A,g),g=MT(g,A)|0,T=L()|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,M=y,T|0}function T0(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0;if(S=c+4|0,I=se(o|0,A|0,52)|0,L()|0,I=I&15,v=se(o|0,A|0,45)|0,L()|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[S>>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,y=1,c=n[S>>2]|0,h=n[v>>2]|0,f=n[E>>2]|0;l=c*3|0,p=h*3|0,T=f*3|0,y&1?(g=h+l|0,n[S>>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[S>>2]=0,p=0,l=h):(c=f,p=g),h=p-c|0,f=l-c|0,(c|0)<0?(n[S>>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[S>>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[S>>2]=c,n[v>>2]=h,n[E>>2]=f)):(g=p+c|0,p=f+l|0,n[S>>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[S>>2]=0,p=0,l=f):c=g,h=p-c|0,f=l-c|0,(c|0)<0?(n[S>>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[S>>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[S>>2]=c,n[v>>2]=h,n[E>>2]=f)),l=se(o|0,A|0,(15-y|0)*3|0)|0,L()|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[S>>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[S>>2]=0,p=0,c=l,h=f),l=p-h|0,f=c-h|0,(h|0)<0?(n[S>>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[S>>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[S>>2]=c,n[v>>2]=h,n[E>>2]=f)),y>>>0<I>>>0;)y=y+1|0;return u|0}function hi(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0;if(I=M,M=M+16|0,E=I,v=se(o|0,A|0,45)|0,L()|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,S=5,M=I,S|0;e:do if((at(v)|0)!=0&&(p=se(o|0,A|0,52)|0,L()|0,p=p&15,(p|0)!=0)){u=1;t:for(;;){switch(S=se(o|0,A|0,(15-u|0)*3|0)|0,L()|0,S&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=o&~l,f=u&~(L()|0),u=se(o|0,u|0,A|0)|0,L()|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(o=he(u|0,0,A|0)|0,o=o|l,u=L()|0|f,h>>>0<p>>>0)h=h+1|0;else{T=u;break e}}}else T=A;while(!1);if(S=7696+(v*28|0)|0,n[c>>2]=n[S>>2],n[c+4>>2]=n[S+4>>2],n[c+8>>2]=n[S+8>>2],n[c+12>>2]=n[S+12>>2],!(T0(o,T,c)|0))return S=0,M=I,S|0;if(S=c+4|0,n[E>>2]=n[S>>2],n[E+4>>2]=n[S+4>>2],n[E+8>>2]=n[S+8>>2],g=se(o|0,T|0,52)|0,L()|0,y=g&15,g&1?(f=n[S>>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[S>>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[S>>2]=0,u=A,f=0,l=h),h=f-u|0,A=l-u|0,(u|0)<0?(n[S>>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[S>>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[S>>2]=f-u,n[p>>2]=l-u,n[g>>2]=A-u),l=y+1|0):l=y,!(at(v)|0))u=0;else{e:do if(!y)u=0;else for(A=1;;){if(u=se(o|0,T|0,(15-A|0)*3|0)|0,L()|0,u=u&7,u|0)break e;if(A>>>0<y>>>0)A=A+1|0;else{u=0;break}}while(!1);u=(u|0)==4&1}if(!(fi(c,l,u,0)|0))(l|0)!=(y|0)&&(n[S>>2]=n[E>>2],n[S+4>>2]=n[E+4>>2],n[S+8>>2]=n[E+8>>2]);else{if(at(v)|0)do;while((fi(c,l,0,0)|0)!=0);(l|0)!=(y|0)&&(p=c+12|0,o=n[p>>2]|0,u=(n[S>>2]|0)-o|0,h=c+8|0,o=(n[h>>2]|0)-o|0,A=Vr(+((u<<1)+o|0)*.14285714285714285)|0,n[S>>2]=A,u=Vr(+((o*3|0)-u|0)*.14285714285714285)|0,n[h>>2]=u,n[p>>2]=0,o=u-A|0,l=0-A|0,(A|0)<0?(n[h>>2]=o,n[p>>2]=l,n[S>>2]=0,u=o,A=0):l=0,f=A-u|0,o=l-u|0,(u|0)<0?(n[S>>2]=f,n[p>>2]=o,n[h>>2]=0,A=f,u=0):o=l,f=A-o|0,l=u-o|0,(o|0)<0?(n[S>>2]=f,n[h>>2]=l,n[p>>2]=0,A=f,o=0):l=u,u=(l|0)<(A|0)?l:A,u=(o|0)<(u|0)?o:u,(u|0)>0&&(n[S>>2]=A-u,n[h>>2]=l-u,n[p>>2]=o-u))}return S=0,M=I,S|0}function di(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0;return h=M,M=M+48|0,u=h+24|0,l=h,f=hi(o,A,u)|0,f?(M=h,f|0):(f=se(o|0,A|0,52)|0,L()|0,bT(u,f&15,l),g=+xo(+ +P[l+16>>3]),p=+zt(+ +P[l+8>>3],+ +P[l>>3]),P[c>>3]=g,P[c+8>>3]=p,f=0,M=h,f|0)}function kn(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0;if(h=M,M=M+16|0,f=h,u=hi(o,A,f)|0,u|0)return f=u,M=h,f|0;u=se(o|0,A|0,45)|0,L()|0,u=(at(u&127)|0)==0,l=se(o|0,A|0,52)|0,L()|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&o|0)==0&((L()|0)&A|0)==0))break e;if(u>>>0<l>>>0)u=u+1|0;else break}return u0(f,l,0,5,c),p=0,M=h,p|0}while(!1);return f0(f,l,0,6,c),p=0,M=h,p|0}function LT(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0;if(l=se(o|0,A|0,45)|0,L()|0,!(at(l&127)|0))return l=2,n[c>>2]=l,0;if(l=se(o|0,A|0,52)|0,L()|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&o|0)==0&((L()|0)&A|0)==0)){u=2,o=6;break}if(u>>>0<l>>>0)u=u+1|0;else{u=5,o=6;break}}return(o|0)==6&&(n[c>>2]=u),0}function Ef(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0;E=M,M=M+128|0,T=E+112|0,f=E+96|0,y=E,l=se(o|0,A|0,52)|0,L()|0,p=l&15,n[T>>2]=p,h=se(o|0,A|0,45)|0,L()|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&o|0)==0&((L()|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,y=L()|0|A&-15728641,T=he(7,0,(14-p|0)*3|0)|0,y=Ef((g|o)&~T,y&~(L()|0),c)|0,M=E,y|0}else l=0;while(!1);if(u=hi(o,A,f)|0,!u){l?(Tf(f,T,y),g=5):(_f(f,T,y),g=6);e:do if(at(h)|0)if(!p)o=5;else for(u=1;;){if(h=he(7,0,(15-u|0)*3|0)|0,!((h&o|0)==0&((L()|0)&A|0)==0)){o=2;break e}if(u>>>0<p>>>0)u=u+1|0;else{o=5;break}}else o=2;while(!1);mn(c|0,-1,o<<2|0)|0;e:do if(l)for(f=0;;){if(h=y+(f<<4)|0,TT(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>=o>>>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=y+(f<<4)|0,fi(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>=o>>>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 y=u,M=E,y|0}function RT(){return 12}function _0(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0;if(o>>>0>15)return p=4,p|0;if(he(o|0,0,52)|0,p=L()|134225919,!o){c=0,u=0;do at(u)|0&&(he(u|0,0,45)|0,h=p|(L()|0),o=A+(c<<3)|0,n[o>>2]=-1,n[o+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|(L()|0);g=he(7,0,(15-u|0)*3|0)|0,l=l&~g,f=f&~(L()|0),(u|0)!=(o|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 PT(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0,U=0,q=0,N=0;if(N=M,M=M+16|0,U=N,q=se(o|0,A|0,52)|0,L()|0,q=q&15,c>>>0>15)return q=4,M=N,q|0;if((q|0)<(c|0))return q=12,M=N,q|0;if((q|0)!=(c|0))if(f=he(c|0,0,52)|0,f=f|o,p=L()|0|A&-15728641,(q|0)>(c|0)){g=c;do F=he(7,0,(14-g|0)*3|0)|0,g=g+1|0,f=F|f,p=L()|0|p;while((g|0)<(q|0));F=f}else F=f;else F=o,p=A;I=se(F|0,p|0,45)|0,L()|0;e:do if(at(I&127)|0){if(g=se(F|0,p|0,52)|0,L()|0,g=g&15,g|0)for(f=1;;){if(I=he(7,0,(15-f|0)*3|0)|0,!((I&F|0)==0&((L()|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,(q|0)>(c|0)){for(I=A&-15728641,S=q;;){if(v=S,S=S+-1|0,S>>>0>15|(q|0)<(S|0)){T=19;break}if((q|0)!=(S|0))if(f=he(S|0,0,52)|0,f=f|o,g=L()|0|I,(q|0)<(v|0))E=f;else{T=S;do E=he(7,0,(14-T|0)*3|0)|0,T=T+1|0,f=E|f,g=L()|0|g;while((T|0)<(q|0));E=f}else E=o,g=A;if(y=se(E|0,g|0,45)|0,L()|0,!(at(y&127)|0))f=0;else{y=se(E|0,g|0,52)|0,L()|0,y=y&15;t:do if(!y)f=0;else for(T=1;;){if(f=se(E|0,g|0,(15-T|0)*3|0)|0,L()|0,f=f&7,f|0)break t;if(T>>>0<y>>>0)T=T+1|0;else{f=0;break}}while(!1);f=(f|0)==0&1}if(g=se(o|0,A|0,(15-v|0)*3|0)|0,L()|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=q-v|0,T=hn(7,0,T,((T|0)<0)<<31>>31)|0,y=L()|0,f?(f=lt(T|0,y|0,5,0)|0,f=pe(f|0,L()|0,-5,-1)|0,f=dn(f|0,L()|0,6,0)|0,f=pe(f|0,L()|0,1,0)|0,g=L()|0):(f=T,g=y),v=E+-1|0,v=lt(T|0,y|0,v|0,((v|0)<0)<<31>>31|0)|0,v=pe(f|0,g|0,v|0,L()|0)|0,E=L()|0,y=u,y=pe(v|0,E|0,n[y>>2]|0,n[y+4>>2]|0)|0,E=L()|0,v=u,n[v>>2]=y,n[v+4>>2]=E),(S|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 M=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,(q|0)>(c|0)){for(f=q;;){if(l=se(o|0,A|0,(15-f|0)*3|0)|0,L()|0,l=l&7,(l|0)==7){l=5;break}if(h=q-f|0,h=hn(7,0,h,((h|0)<0)<<31>>31)|0,l=lt(h|0,L()|0,l|0,0)|0,h=L()|0,I=u,h=pe(n[I>>2]|0,n[I+4>>2]|0,l|0,h|0)|0,l=L()|0,I=u,n[I>>2]=h,n[I+4>>2]=l,f=f+-1|0,(f|0)<=(c|0))break e}return M=N,l|0}else l=0,h=0;while(!1);return vo(F,p,q,U)|0&&Ve(27634,27225,1367,27274),q=U,U=n[q+4>>2]|0,((l|0)>-1|(l|0)==-1&h>>>0>4294967295)&((U|0)>(l|0)|((U|0)==(l|0)?(n[q>>2]|0)>>>0>h>>>0:0))?(q=0,M=N,q|0):(Ve(27634,27225,1447,27259),0)}function NT(o,A,c,u,l,f){o=o|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,y=0,E=0,v=0,S=0,I=0,F=0;if(E=M,M=M+16|0,h=E,l>>>0>15)return f=4,M=E,f|0;if(p=se(c|0,u|0,52)|0,L()|0,p=p&15,(p|0)>(l|0))return f=12,M=E,f|0;if(vo(c,u,l,h)|0&&Ve(27634,27225,1367,27274),y=h,T=n[y+4>>2]|0,!(((A|0)>-1|(A|0)==-1&o>>>0>4294967295)&((T|0)>(A|0)|((T|0)==(A|0)?(n[y>>2]|0)>>>0>o>>>0:0))))return f=2,M=E,f|0;y=l-p|0,l=he(l|0,0,52)|0,g=L()|0|u&-15728641,T=f,n[T>>2]=l|c,n[T+4>>2]=g,T=se(c|0,u|0,45)|0,L()|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&((L()|0)&u|0)==0))break e;if(h>>>0<p>>>0)h=h+1|0;else break}if((y|0)<1)return f=0,M=E,f|0;for(T=p^15,u=-1,g=1,h=1;;){p=y-g|0,p=hn(7,0,p,((p|0)<0)<<31>>31)|0,c=L()|0;do if(h)if(h=lt(p|0,c|0,5,0)|0,h=pe(h|0,L()|0,-5,-1)|0,h=dn(h|0,L()|0,6,0)|0,l=L()|0,(A|0)>(l|0)|(A|0)==(l|0)&o>>>0>h>>>0){A=pe(o|0,A|0,-1,-1)|0,A=Mt(A|0,L()|0,h|0,l|0)|0,h=L()|0,v=f,I=n[v>>2]|0,v=n[v+4>>2]|0,F=(T+u|0)*3|0,S=he(7,0,F|0)|0,v=v&~(L()|0),u=dn(A|0,h|0,p|0,c|0)|0,o=L()|0,l=pe(u|0,o|0,2,0)|0,F=he(l|0,L()|0,F|0)|0,v=L()|0|v,l=f,n[l>>2]=F|I&~S,n[l+4>>2]=v,o=lt(u|0,o|0,p|0,c|0)|0,o=Mt(A|0,h|0,o|0,L()|0)|0,h=0,A=L()|0;break}else{F=f,S=n[F>>2]|0,F=n[F+4>>2]|0,I=he(7,0,(T+u|0)*3|0)|0,F=F&~(L()|0),h=f,n[h>>2]=S&~I,n[h+4>>2]=F,h=1;break}else S=f,l=n[S>>2]|0,S=n[S+4>>2]|0,u=(T+u|0)*3|0,v=he(7,0,u|0)|0,S=S&~(L()|0),F=dn(o|0,A|0,p|0,c|0)|0,h=L()|0,u=he(F|0,h|0,u|0)|0,S=L()|0|S,I=f,n[I>>2]=u|l&~v,n[I+4>>2]=S,h=lt(F|0,h|0,p|0,c|0)|0,o=Mt(o|0,A|0,h|0,L()|0)|0,h=0,A=L()|0;while(!1);if((y|0)>(g|0))u=~g,g=g+1|0;else{A=0;break}}return M=E,A|0}while(!1);if((y|0)<1)return F=0,M=E,F|0;for(l=p^15,h=1;;)if(I=y-h|0,I=hn(7,0,I,((I|0)<0)<<31>>31)|0,F=L()|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&~(L()|0),v=dn(o|0,A|0,I|0,F|0)|0,S=L()|0,p=he(v|0,S|0,p|0)|0,g=L()|0|g,T=f,n[T>>2]=p|c&~u,n[T+4>>2]=g,F=lt(v|0,S|0,I|0,F|0)|0,o=Mt(o|0,A|0,F|0,L()|0)|0,A=L()|0,(y|0)<=(h|0)){A=0;break}else h=h+1|0;return M=E,A|0}function y0(o,A,c,u){o=o|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,L()|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=xf(A,c,l+1|0,u)|0,h=(L()|0)&-15728641,c=he(u|0,0,52)|0,c=A|c,h=h|(L()|0),A=(nt(c,h)|0)==0,f=l,A=A?-1:u,l=h),h=o,n[h>>2]=c,n[h+4>>2]=l,n[o+8>>2]=f,n[o+12>>2]=A}function vf(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0;if(l=se(o|0,A|0,52)|0,L()|0,l=l&15,f=u+8|0,n[f>>2]=l,(o|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(o=xf(o,A,l+1|0,c)|0,f=(L()|0)&-15728641,l=he(c|0,0,52)|0,l=o|l,f=f|(L()|0),o=u,n[o>>2]=l,n[o+4>>2]=f,o=u+12|0,nt(l,f)|0){n[o>>2]=c;return}else{n[o>>2]=-1;return}}function x0(o){o=o|0;var A=0,c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0;if(c=o,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,L()|0,u=u&15,p=he(1,0,(u^15)*3|0)|0,A=pe(p|0,L()|0,A|0,c|0)|0,c=L()|0,p=o,n[p>>2]=A,n[p+4>>2]=c,p=o+8|0,h=n[p>>2]|0,!((u|0)<(h|0)))){for(g=o+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,L()|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,L()|0)|0,c=L()|0,T=o,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=o,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,L()|0)|0,p=L()|0,T=o,n[T>>2]=h,n[T+4>>2]=p,n[g>>2]=f+-1;return}else if((u|0)==10)return}}function So(o){o=+o;var A=0;return A=o<0?o+6.283185307179586:o,+(o>=6.283185307179586?A+-6.283185307179586:A)}function cr(o,A){switch(o=+o,A=A|0,A|0){case 1:o=o<0?o+6.283185307179586:o;break;case 2:o=o>0?o+-6.283185307179586:o}return+o}function FT(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0;return l=+P[A>>3],u=+P[o>>3],f=+tt(+((l-u)*.5)),c=+tt(+((+P[A+8>>3]-+P[o+8>>3])*.5)),c=f*f+c*(+De(+l)*+De(+u)*c),+(+zt(+ +dt(+c),+ +dt(+(1-c)))*2)}function Co(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0;return l=+P[A>>3],u=+P[o>>3],f=+tt(+((l-u)*.5)),c=+tt(+((+P[A+8>>3]-+P[o+8>>3])*.5)),c=f*f+c*(+De(+l)*+De(+u)*c),+(+zt(+ +dt(+c),+ +dt(+(1-c)))*2*6371.007180918475)}function kT(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0;return l=+P[A>>3],u=+P[o>>3],f=+tt(+((l-u)*.5)),c=+tt(+((+P[A+8>>3]-+P[o+8>>3])*.5)),c=f*f+c*(+De(+l)*+De(+u)*c),+(+zt(+ +dt(+c),+ +dt(+(1-c)))*2*6371.007180918475*1e3)}function Sf(o,A){return o=o|0,A=A|0,o>>>0>15?(A=4,A|0):(P[A>>3]=+P[20624+(o<<3)>>3],A=0,A|0)}function OT(o,A){return o=o|0,A=A|0,o>>>0>15?(A=4,A|0):(P[A>>3]=+P[20752+(o<<3)>>3],A=0,A|0)}function BT(o,A){return o=o|0,A=A|0,o>>>0>15?(A=4,A|0):(P[A>>3]=+P[20880+(o<<3)>>3],A=0,A|0)}function DT(o,A){return o=o|0,A=A|0,o>>>0>15?(A=4,A|0):(P[A>>3]=+P[21008+(o<<3)>>3],A=0,A|0)}function Gs(o,A){o=o|0,A=A|0;var c=0;return o>>>0>15?(A=4,A|0):(c=hn(7,0,o,((o|0)<0)<<31>>31)|0,c=lt(c|0,L()|0,120,0)|0,o=L()|0,n[A>>2]=c|2,n[A+4>>2]=o,A=0,A|0)}function UT(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0;if(p=M,M=M+176|0,h=p,o=wo(o,A,h)|0,o|0)return h=o,M=p,h|0;if(P[c>>3]=0,o=n[h>>2]|0,(o|0)<=1)return h=0,M=p,h|0;A=o+-1|0,o=0,u=+P[h+8>>3],l=+P[h+16>>3],f=0;do o=o+1|0,T=u,u=+P[h+8+(o<<4)>>3],y=+tt(+((u-T)*.5)),g=l,l=+P[h+8+(o<<4)+8>>3],g=+tt(+((l-g)*.5)),g=y*y+g*(+De(+u)*+De(+T)*g),f=f+ +zt(+ +dt(+g),+ +dt(+(1-g)))*2;while((o|0)<(A|0));return P[c>>3]=f,h=0,M=p,h|0}function GT(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0;if(p=M,M=M+176|0,h=p,o=wo(o,A,h)|0,o|0)return h=o,f=+P[c>>3],f=f*6371.007180918475,P[c>>3]=f,M=p,h|0;if(P[c>>3]=0,o=n[h>>2]|0,(o|0)<=1)return h=0,f=0,f=f*6371.007180918475,P[c>>3]=f,M=p,h|0;A=o+-1|0,o=0,u=+P[h+8>>3],l=+P[h+16>>3],f=0;do o=o+1|0,T=u,u=+P[h+8+(o<<4)>>3],y=+tt(+((u-T)*.5)),g=l,l=+P[h+8+(o<<4)+8>>3],g=+tt(+((l-g)*.5)),g=y*y+g*(+De(+T)*+De(+u)*g),f=f+ +zt(+ +dt(+g),+ +dt(+(1-g)))*2;while((o|0)!=(A|0));return P[c>>3]=f,h=0,y=f,y=y*6371.007180918475,P[c>>3]=y,M=p,h|0}function jT(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0;if(p=M,M=M+176|0,h=p,o=wo(o,A,h)|0,o|0)return h=o,f=+P[c>>3],f=f*6371.007180918475,f=f*1e3,P[c>>3]=f,M=p,h|0;if(P[c>>3]=0,o=n[h>>2]|0,(o|0)<=1)return h=0,f=0,f=f*6371.007180918475,f=f*1e3,P[c>>3]=f,M=p,h|0;A=o+-1|0,o=0,u=+P[h+8>>3],l=+P[h+16>>3],f=0;do o=o+1|0,T=u,u=+P[h+8+(o<<4)>>3],y=+tt(+((u-T)*.5)),g=l,l=+P[h+8+(o<<4)+8>>3],g=+tt(+((l-g)*.5)),g=y*y+g*(+De(+T)*+De(+u)*g),f=f+ +zt(+ +dt(+g),+ +dt(+(1-g)))*2;while((o|0)!=(A|0));return P[c>>3]=f,h=0,y=f,y=y*6371.007180918475,y=y*1e3,P[c>>3]=y,M=p,h|0}function VT(o){o=o|0;var A=0,c=0,u=0,l=0,f=0,h=0,p=0;if(o)for(f=o+4|0,h=o+8|0,u=1,l=o;;){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[o>>2]=0,n[f>>2]=0,n[h>>2]=0):be(A),l)u=0;else break}}function zT(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0,U=0,q=0;if(n[A>>2]=0,U=A+4|0,n[U>>2]=0,q=A+8|0,n[q>>2]=0,F=n[o>>2]|0,(F|0)<=0)return A=0,A|0;I=o+4|0,o=A,S=0;e:for(;;){if(S){if(c=qt(1,12)|0,!c){c=5;break}n[o+8>>2]=c,o=c}if(g=n[I>>2]|0,T=qt(1,12)|0,!T){o=13,c=37;break}if(v=o+4|0,u=n[v>>2]|0,n[((u|0)==0?o:u+8|0)>>2]=T,n[v>>2]=T,u=n[g+(S<<4)>>2]|0,(u|0)<3){o=1,c=37;break}l=g+(S<<4)+4|0,f=T+4|0,c=0,h=0;do{if(p=h,h=ct(24)|0,!h){o=13,c=37;break e}L0(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+(S<<4)+8>>2]|0,(E|0)>0){y=g+(S<<4)+12|0,g=0;do{if(u=n[y>>2]|0,c=T,T=qt(1,12)|0,!T){o=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){o=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){o=13,c=37;break e}L0(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(S=S+1|0,(S|0)>=(F|0)){o=0,c=50;break}}if((c|0)==5){if(!A)return A=13,A|0;for(u=1,l=A;;){if(o=n[l>>2]|0,o|0)do{if(c=n[o>>2]|0,c|0)do F=c,c=n[c+16>>2]|0,be(F);while((c|0)!=0);F=o,o=n[o+8>>2]|0,be(F)}while((o|0)!=0);if(o=l,l=n[l+8>>2]|0,u?(n[A>>2]=0,n[U>>2]=0,n[q>>2]=0):be(o),l)u=0;else{o=13;break}}return o|0}else if((c|0)==37){if(!A)return A=o,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[q>>2]=0):be(c),f)l=0;else break}return o|0}else if((c|0)==50)return o|0;return 0}function Io(o,A,c,u,l){o=o|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0,U=0,q=0,N=0;if(q=M,M=M+16|0,U=q,y=se(o|0,A|0,52)|0,L()|0,y=y&15,S=se(c|0,u|0,52)|0,L()|0,(y|0)!=(S&15|0))return U=12,M=q,U|0;if(g=se(o|0,A|0,45)|0,L()|0,g=g&127,T=se(c|0,u|0,45)|0,L()|0,T=T&127,g>>>0>121|T>>>0>121)return U=5,M=q,U|0;if(S=(g|0)!=(T|0),S){if(h=a0(g,T)|0,(h|0)==7)return U=1,M=q,U|0;p=a0(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=IT(p,h)|0,h=L()|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}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=g0(p,h)|0,h=L()|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}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(T0(g,p,U)|0,S||Ve(27340,27315,194,27325),h=(E|0)!=0,f=(v|0)!=0,h&f&&Ve(27367,27315,195,27325),h){if(f=$t(o,A)|0,(f|0)==7){f=5;break}if(re[21968+(f*7|0)+F>>0]|0){f=1;break}v=n[21136+(f*28|0)+(F<<2)>>2]|0,S=v}else if(f){if(f=$t(g,p)|0,(f|0)==7){f=5;break}if(re[21968+(f*7|0)+T>>0]|0){f=1;break}S=0,v=n[21136+(T*28|0)+(f<<2)>>2]|0}else S=0,v=0;if((S|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,o=(h|0)<0,g=o?h:0,p=f+p-N-g|0,N=(p|0)<0,f=N?0:p,p=N?p:0,h=(o?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),y)for(;;)if(g=f*3|0,T=p*3|0,c=h*3|0,mr(y)|0?(A=g+p|0,o=(A|0)<0,N=T+h-(o?A:0)|0,I=(N|0)<0,p=f+c-(o?A:0)-(I?N:0)|0,h=(p|0)<0,F=h?0:p,g=(I?0:N)-(h?p:0)|0,p=(o?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,(y|0)>1)y=y+-1|0,p=g;else{p=g;break}if((S|0)>0){g=0;do A=f+p|0,o=(A|0)<0,N=p+h-(o?A:0)|0,I=(N|0)<0,F=f+h-(o?A:0)-(I?N:0)|0,f=(F|0)<0,h=f?0:F,p=(I?0:N)-(f?F:0)|0,F=(o?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)!=(S|0))}c=U+4|0,y=U+8|0,F=n[y>>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[y>>2]=p,f=N+h|0,n[u>>2]=f,h=p-g|0,(g|0)<0?(f=f-g|0,n[y>>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[y>>2]=0,h=0),T=p-f|0,g=h-f|0,(f|0)<0?(n[c>>2]=T,n[y>>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[y>>2]=g-h,n[u>>2]=f-h),I=77}else f=5}else if(T0(c,u,U)|0,(E|0)!=0&(v|0)!=0)if((T|0)!=(g|0)&&Ve(27398,27315,264,27325),h=$t(o,A)|0,f=$t(c,u)|0,(h|0)==7|(f|0)==7)f=5;else if(re[21968+(h*7|0)+f>>0]|0)f=1;else if(c=n[21136+(h*28|0)+(f<<2)>>2]|0,(c|0)>0){y=U+4|0,u=U+8|0,E=U+12|0,T=0,p=n[y>>2]|0,h=n[u>>2]|0,f=n[E>>2]|0;do F=h+p|0,I=(F|0)<0,o=I?F:0,h=f+h-o|0,A=(h|0)<0,g=A?h:0,p=f+p-o-g|0,o=(p|0)<0,f=o?0:p,p=o?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[y>>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,M=q,N|0}function Cf(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0,U=0,q=0,N=0,Q=0,G=0,ee=0,oe=0,X=0,H=0;if(f=se(o|0,A|0,52)|0,L()|0,f=f&15,G=se(o|0,A|0,45)|0,L()|0,G=G&127,G>>>0>121)return u=5,u|0;if(U=at(G)|0,he(f|0,0,52)|0,p=L()|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,q=A?h:0,Q=p-q|0,U=(Q|0)<0,q=(U?0-Q|0:0)+(c-q)|0,c=(q|0)<0,l=c?0:q,q=c?q:0,c=(U?0:Q)-q|0,q=(A?0:h)-(U?Q:0)-q|0,Q=(c|0)<(q|0)?c:q,Q=(l|0)<(Q|0)?l:Q,Q=(Q|0)>0?Q:0,l=l-Q|0,c=c-Q|0;e:do switch(q-Q|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=A0(G,l)|0,(l|0)==127)?(u=1,u|0):(Q=he(l|0,0,45)|0,G=L()|0,N=u,G=n[N+4>>2]&-1040385|G,n[u>>2]=n[N>>2]|Q,n[u+4>>2]=G,u=0,u|0)}for(;;){if(F=f,f=f+-1|0,I=h-c|0,S=p-c|0,g=I>>>0>715827881|S>>>0>715827881,mr(F)|0){if(g){if(y=(I|0)>0,E=2147483647-I|0,v=-2147483648-I|0,y?(E|0)<(I|0):(v|0)>(I|0)){l=1,N=107;break}if(H=I<<1,y?(2147483647-H|0)<(I|0):(-2147483648-H|0)>(I|0)){l=1,N=107;break}if((S|0)>0?(2147483647-S|0)<(S|0):(-2147483648-S|0)>(S|0)){l=1,N=107;break}if(g=I*3|0,T=S<<1,(y?(E|0)<(T|0):(v|0)>(T|0))||((I|0)>-1?(g|-2147483648)>=(S|0):(g^-2147483648|0)<(S|0))){l=1,N=107;break}}else g=I*3|0,T=S<<1;if(E=Vr(+(g-S|0)*.14285714285714285)|0,y=Vr(+(T+I|0)*.14285714285714285)|0,T=(y|0)<(E|0),g=T?E:y,T=T?y: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,S=y-(v?E:0)|0,oe=(S|0)<0,ee=(v?0-E|0:0)-(oe?S:0)|0,I=(ee|0)<0,v=(v?0:E)-(oe?S:0)-(I?ee:0)|0,S=(oe?0:S)-(I?ee:0)|0,ee=I?0:ee,I=(S|0)<(v|0)?S:v,I=(ee|0)<(I|0)?ee:I,oe=(I|0)>0,v=v-(oe?I:0)|0,S=S-(oe?I:0)|0,I=ee-(oe?I:0)|0,oe=(v*3|0)+S|0,ee=(oe|0)<0,H=(S*3|0)+I-(ee?oe:0)|0,g=(H|0)<0,E=(I*3|0)+v-(ee?oe:0)-(g?H:0)|0,y=(E|0)<0,X=y?0:E,T=(g?0:H)-(y?E:0)|0,E=(ee?0:oe)-(g?H:0)-(y?E:0)|0,y=(T|0)<(E|0)?T:E,y=(X|0)<(y|0)?X:y,H=(y|0)>0,g=H?y:0,T=T-(H?y:0)|0,y=X-(H?y: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,y=(S|0)>0,y?(2147483647-S|0)<(S|0):(-2147483648-S|0)>(S|0)){l=1,N=107;break}if(v=S<<1,y?(2147483647-v|0)<(S|0):(-2147483648-v|0)>(S|0)){l=1,N=107;break}if(T?(2147483647-g|0)<(S|0):(-2147483648-g|0)>(S|0)){l=1,N=107;break}if(T=S*3|0,(S|0)>-1?(T|-2147483648)>=(I|0):(T^-2147483648|0)<(I|0)){l=1,N=107;break}}else g=I<<1,T=S*3|0;if(E=Vr(+(g+S|0)*.14285714285714285)|0,y=Vr(+(T-I|0)*.14285714285714285)|0,T=(y|0)<(E|0),g=T?E:y,T=T?y: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,S=y-(v?E:0)|0,X=(S|0)<0,H=(v?0-E|0:0)-(X?S:0)|0,I=(H|0)<0,v=(v?0:E)-(X?S:0)-(I?H:0)|0,S=(X?0:S)-(I?H:0)|0,H=I?0:H,I=(S|0)<(v|0)?S:v,I=(H|0)<(I|0)?H:I,X=(I|0)>0,v=v-(X?I:0)|0,S=S-(X?I:0)|0,I=H-(X?I:0)|0,X=(v*3|0)+I|0,H=(X|0)<0,ee=(S*3|0)+v-(H?X:0)|0,g=(ee|0)<0,E=(I*3|0)+S-(H?X:0)-(g?ee:0)|0,y=(E|0)<0,oe=y?0:E,T=(g?0:ee)-(y?E:0)|0,E=(H?0:X)-(g?ee:0)-(y?E:0)|0,y=(T|0)<(E|0)?T:E,y=(oe|0)<(y|0)?oe:y,ee=(y|0)>0,g=ee?y:0,T=T-(ee?y:0)|0,y=oe-(ee?y:0)|0}g=h+(g-E)|0,X=(g|0)<0,T=p-T-(X?g:0)|0,E=(T|0)<0,ee=c-y+(X?0-g|0:0)+(E?0-T|0:0)|0,h=(ee|0)<0,y=h?0:ee,H=(E?0:T)-(h?ee:0)|0,ee=(X?0:g)-(E?T:0)-(h?ee:0)|0,h=(H|0)<(ee|0)?H:ee,h=(y|0)<(h|0)?y: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&~(L()|0),E=(ee|0)<0,X=E?ee:0,H=H-(c?h:0)-X|0,oe=(H|0)<0,X=(oe?0-H|0:0)+(y-(c?h:0)-X)|0,h=(X|0)<0,c=h?0:X,X=h?X:0,h=(oe?0:H)-X|0,X=(E?0:ee)-(oe?H:0)-X|0,H=(h|0)<(X|0)?h:X,H=(c|0)<(H|0)?c:H,H=(H|0)>0?H:0,c=c-H|0,h=h-H|0;e:do switch(X-H|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=L()|0|T,H=u,n[H>>2]=oe|g,n[H+4>>2]=X,(F|0)<=1){N=47;break}else h=v,p=S,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|(S|0)>1|(I|0)>1)return H=1,H|0;ee=(v|0)<0,X=ee?v:0,H=S-X|0,oe=(H|0)<0,X=(oe?0-H|0:0)+(I-X)|0,f=(X|0)<0,c=f?0:X,X=f?X:0,f=(oe?0:H)-X|0,X=(ee?0:v)-(oe?H:0)-X|0,H=(f|0)<(X|0)?f:X,H=(c|0)<(H|0)?c:H,H=(H|0)>0?H:0,c=c-H|0,f=f-H|0;e:do switch(X-H|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=A0(G,f)|0,(p|0)==127?T=0:T=at(p)|0;e:do if(f){if(U){if(c=$t(o,A)|0,(c|0)==7)return H=5,H|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}if(f=f+1|0,(f|0)==(h|0))break t}else c=f;while(!1);if((c|0)==1)return H=9,H|0;f=A0(G,c)|0,(f|0)==127&&Ve(27476,27315,415,27506),at(f)|0?Ve(27521,27315,416,27506):(l=f,Q=h,q=c)}else l=p,Q=0,q=f;if(g=n[4272+(G*28|0)+(q<<2)>>2]|0,(g|0)<=-1&&Ve(27552,27315,423,27506),!T){if((Q|0)<0)return H=5,H|0;if(Q|0){h=u,c=0,f=n[h>>2]|0,h=n[h+4>>2]|0;do f=Fn(f,h)|0,h=L()|0,H=u,n[H>>2]=f,n[H+4>>2]=h,c=c+1|0;while((c|0)<(Q|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=Fn(f,h)|0,h=L()|0,H=u,n[H>>2]=f,n[H+4>>2]=h,c=c+1|0,(c|0)==(g|0)){N=104;break e}}if(p=a0(l,G)|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=Fn(f,c)|0,c=L()|0,H=u,n[H>>2]=f,n[H+4>>2]=c,h=h+1|0;while((h|0)!=(g|0))}if(c=$t(f,c)|0,(c|0)==7&&Ve(27634,27315,444,27506),f=s0(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=m0(h,p)|0,p=L()|0,H=u,n[H>>2]=h,n[H+4>>2]=p,c=c+1|0;while((c|0)<(f|0));N=104}}else if((U|0)!=0&(T|0)!=0){if(l=$t(o,A)|0,c=u,c=$t(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 H=5,H|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=Fn(f,h)|0,h=L()|0,H=u,n[H>>2]=f,n[H+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&&(H=u,($t(n[H>>2]|0,n[H+4>>2]|0)|0)==1)?(H=9,H|0):(X=u,ee=n[X>>2]|0,X=n[X+4>>2]&-1040385,oe=he(l|0,0,45)|0,X=X|(L()|0),H=u,n[H>>2]=ee|oe,n[H+4>>2]=X,H=0,H|0)}else if((N|0)==107)return l|0;return 0}function qT(o,A,c,u,l,f){o=o|0,A=A|0,c=c|0,u=u|0,l=l|0,f=f|0;var h=0,p=0;return p=M,M=M+16|0,h=p,l|0?(h=15,M=p,h|0):(o=Io(o,A,c,u,h)|0,o||(l=n[h+4>>2]|0,o=n[h+8>>2]|0,n[f>>2]=(n[h>>2]|0)-o,n[f+4>>2]=l-o,o=0),h=o,M=p,h|0)}function HT(o,A,c,u,l){o=o|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,y=0,E=0;return E=M,M=M+16|0,y=E,u|0?(y=15,M=E,y|0):(p=n[c>>2]|0,h=n[c+4>>2]|0,n[y>>2]=p,g=y+4|0,n[g>>2]=h,T=y+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[y>>2]=0,p=0):(u=h,f=0),h=p-u|0,c=f-u|0,(u|0)<0?(n[y>>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[y>>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[y>>2]=h-u,n[g>>2]=f-u,n[T>>2]=c-u),u=Cf(o,A,y,l)|0),y=u,M=E,y|0)}function w0(o,A,c,u,l){o=o|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=M,M=M+32|0,h=g+12|0,p=g,f=Io(o,A,o,A,h)|0,f|0?(p=f,M=g,p|0):(o=Io(o,A,c,u,p)|0,o|0?(p=o,M=g,p|0):(o=(n[h>>2]|0)-(n[p>>2]|0)|0,T=(o|0)<0,u=T?0-o|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:o)-(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,M=g,p|0))}function QT(o,A,c,u,l){o=o|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0;return h=M,M=M+16|0,f=h,o=w0(o,A,c,u,f)|0,o|0?(f=o,M=h,f|0):(c=f,c=pe(n[c>>2]|0,n[c+4>>2]|0,1,0)|0,u=L()|0,f=l,n[f>>2]=c,n[f+4>>2]=u,f=0,M=h,f|0)}function WT(o,A,c,u,l){o=o|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0;return g=M,M=M+16|0,f=g,h=w0(o,A,c,u,f)|0,h|0?(l=h,M=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]=o,n[l+4>>2]=A,l=0,M=g,l|0):(p=If(o,A,c,u,f,h,l,0,0,1,0)|0,p?(l=(If(c,u,o,A,f,h,l,f,h,-1,-1)|0)==0,l=l?0:p,M=g,l|0):(l=0,M=g,l|0)))}function If(o,A,c,u,l,f,h,p,g,T,y){o=o|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,y=y|0;var E=0,v=0,S=0,I=0,F=0,U=0,q=0,N=0,Q=0,G=0,ee=0,oe=0,X=0,H=0,me=0,ie=0,_e=0,ce=0;if(_e=M,M=M+48|0,E=_e+24|0,v=_e+12|0,ie=_e,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,Io(o,A,o,A,E)|0&&Ve(27634,27315,696,27575),Io(o,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,q=N-(n[v>>2]|0)|0,n[v>>2]=q,H=v+4|0,N=(n[H>>2]|0)-N|0,n[H>>2]=N,H=N+q|0,n[F>>2]=0-H,X=1/(+(l>>>0)+4294967296*+(f|0)),ee=X*+(q-c|0),oe=X*+(N-u|0),X=X*+(me-H|0),n[ie>>2]=c,H=ie+4|0,n[H>>2]=u,me=ie+8|0,n[me>>2]=E,(f|0)<0)return T=0,M=_e,T|0;for(G=+(c|0),Q=+(u|0),U=+(E|0),q=0,N=0;;){if(I=+(q>>>0)+4294967296*+(N|0),ce=ee*I+G,S=oe*I+Q,I=X*I+U,u=~~+Ks(+ce),E=~~+Ks(+S),c=~~+Ks(+I),ce=+Ct(+(+(u|0)-ce)),S=+Ct(+(+(E|0)-S)),I=+Ct(+(+(c|0)-I)),ce>S&ce>I?(v=c+E|0,u=0-v|0):(v=0-u|0,S>I&&(E=v-c|0)),n[H>>2]=E,n[ie>>2]=v,n[me>>2]=0,c=u+E|0,(u|0)>0?(n[H>>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[H>>2]=0,v=E-u|0,c=0-u|0,(u|0)<0?(n[ie>>2]=v,n[H>>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[H>>2]=F-c,n[me>>2]=u-c),c=lt(q|0,N|0,T|0,y|0)|0,c=pe(c|0,L()|0,p|0,g|0)|0,L()|0,c=Cf(o,A,ie,h+(c<<3)|0)|0,c|0){u=20;break}if(F=q,q=pe(q|0,N|0,1,0)|0,v=N,N=L()|0,!((v|0)<(f|0)|(v|0)==(f|0)&F>>>0<l>>>0)){c=0,u=20;break}}return(u|0)==20?(M=_e,c|0):0}function hn(o,A,c,u){o=o|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=o,l=A,o=1,A=0;do h=(c&1|0)==0&!0,o=lt((h?1:f)|0,(h?0:l)|0,o|0,A|0)|0,A=L()|0,c=Vf(c|0,u|0,1)|0,u=L()|0,f=lt(f|0,l|0,f|0,l|0)|0,l=L()|0;while(!((c|0)==0&(u|0)==0));return Re(A|0),o|0}function E0(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,y=0;p=M,M=M+16|0,f=p,h=se(o|0,A|0,52)|0,L()|0,h=h&15;do if(h){if(l=di(o,A,f)|0,!l){T=+P[f>>3],g=1/+De(+T),y=+P[26032+(h<<3)>>3],P[c>>3]=T+y,P[c+8>>3]=T-y,T=+P[f+8>>3],g=y*g,P[c+16>>3]=g+T,P[c+24>>3]=T-g;break}return h=l,M=p,h|0}else{if(l=se(o|0,A|0,45)|0,L()|0,l=l&127,l>>>0>121)return h=5,M=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 AT(c,u?1.4:1.1),u=26160+(h<<3)|0,(n[u>>2]|0)==(o|0)&&(n[u+4>>2]|0)==(A|0)&&(P[c>>3]=1.5707963267948966),h=26288+(h<<3)|0,(n[h>>2]|0)==(o|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,M=p,h|0):(P[c+16>>3]=3.141592653589793,P[c+24>>3]=-3.141592653589793,h=0,M=p,h|0)}function KT(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,y=0;T=M,M=M+48|0,h=T+32|0,f=T+40|0,p=T,d0(h,0,0,0),g=n[h>>2]|0,h=n[h+4>>2]|0;do if(c>>>0<=15){if(l=Lo(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,re[u+12>>0]=0,re[g>>0]=re[f>>0]|0,re[g+1>>0]=re[f+1>>0]|0,re[g+2>>0]=re[f+2>>0]|0;break}if(l=qt((n[A+8>>2]|0)+1|0,32)|0,l){v0(A,l),y=p,n[y>>2]=g,n[y+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,re[p+28>>0]=0,g=p+29|0,re[g>>0]=re[f>>0]|0,re[g+1>>0]=re[f+1>>0]|0,re[g+2>>0]=re[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,re[u+12>>0]=0,re[g>>0]=re[f>>0]|0,re[g+1>>0]=re[f+1>>0]|0,re[g+2>>0]=re[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,y=p+29|0,n[g>>2]=0,n[g+4>>2]=0,n[g+8>>2]=0,re[g+12>>0]=0,re[y>>0]=re[f>>0]|0,re[y+1>>0]=re[f+1>>0]|0,re[y+2>>0]=re[f+2>>0]|0;while(!1);js(p),n[o>>2]=n[p>>2],n[o+4>>2]=n[p+4>>2],n[o+8>>2]=n[p+8>>2],n[o+12>>2]=n[p+12>>2],n[o+16>>2]=n[p+16>>2],n[o+20>>2]=n[p+20>>2],n[o+24>>2]=n[p+24>>2],n[o+28>>2]=n[p+28>>2],M=T}function js(o){o=o|0;var A=0,c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0,U=0,q=0,N=0,Q=0,G=0;if(G=M,M=M+336|0,S=G+168|0,I=G,u=o,c=n[u>>2]|0,u=n[u+4>>2]|0,(c|0)==0&(u|0)==0){M=G;return}if(A=o+28|0,re[A>>0]|0?(c=Mf(c,u)|0,u=L()|0):re[A>>0]=1,Q=o+20|0,!(n[n[Q>>2]>>2]|0)){A=o+24|0,c=n[A>>2]|0,c|0&&be(c),N=o,n[N>>2]=0,n[N+4>>2]=0,n[o+8>>2]=0,n[Q>>2]=0,n[o+12>>2]=-1,n[o+16>>2]=0,n[A>>2]=0,M=G;return}N=o+16|0,A=n[N>>2]|0,l=A&15;e:do if((c|0)==0&(u|0)==0)q=o+24|0;else{F=o+12|0,E=(l|0)==3,y=A&255,g=(l|1)==3,v=o+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,L()|0,f=f&15,(f|0)==(n[F>>2]|0)){switch(y&15){case 0:case 2:case 3:if(l=di(c,u,S)|0,l|0){U=15;break t}if(S0(n[Q>>2]|0,n[v>>2]|0,S)|0){U=19;break t}}if(g&&(l=n[(n[Q>>2]|0)+4>>2]|0,n[S>>2]=n[l>>2],n[S+4>>2]=n[l+4>>2],n[S+8>>2]=n[l+8>>2],n[S+12>>2]=n[l+12>>2],hf(26896,S)|0)){if(b0(n[(n[Q>>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=kn(c,u,S)|0,l|0){U=32;break}if(E0(c,u,I,0)|0){U=36;break}if(h&&Rf(n[Q>>2]|0,n[v>>2]|0,S,I)|0){U=42;break}if(g&&Pf(n[Q>>2]|0,n[v>>2]|0,S,I)|0){U=42;break}}if(E){if(A=E0(c,u,S,1)|0,l=n[v>>2]|0,A|0){U=45;break}if(c0(l,S)|0){if(pf(I,S),df(S,n[v>>2]|0)|0){U=53;break}if(S0(n[Q>>2]|0,n[v>>2]|0,p)|0){U=53;break}if(Pf(n[Q>>2]|0,n[v>>2]|0,I,S)|0){U=53;break}}}}do if((f|0)<(n[F>>2]|0)){if(A=E0(c,u,S,1)|0,l=n[v>>2]|0,A|0){U=58;break t}if(!(c0(l,S)|0)){U=73;break}if(df(n[v>>2]|0,S)|0&&(pf(I,S),Rf(n[Q>>2]|0,n[v>>2]|0,I,S)|0)){U=65;break t}if(c=wf(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=L()|0),(c|0)==0&(u|0)==0){q=v;break e}}switch(U|0){case 15:A=n[v>>2]|0,A|0&&be(A),U=o,n[U>>2]=0,n[U+4>>2]=0,n[Q>>2]=0,n[F>>2]=-1,n[N>>2]=0,n[v>>2]=0,n[o+8>>2]=l,U=20;break;case 19:n[o>>2]=c,n[o+4>>2]=u,U=20;break;case 25:Ve(27634,27600,470,27611);break;case 29:n[o>>2]=c,n[o+4>>2]=u,M=G;return;case 32:A=n[v>>2]|0,A|0&&be(A),q=o,n[q>>2]=0,n[q+4>>2]=0,n[Q>>2]=0,n[F>>2]=-1,n[N>>2]=0,n[v>>2]=0,n[o+8>>2]=l,M=G;return;case 36:Ve(27634,27600,493,27611);break;case 42:n[o>>2]=c,n[o+4>>2]=u,M=G;return;case 45:l|0&&be(l),U=o,n[U>>2]=0,n[U+4>>2]=0,n[Q>>2]=0,n[F>>2]=-1,n[N>>2]=0,n[v>>2]=0,n[o+8>>2]=A,U=55;break;case 53:n[o>>2]=c,n[o+4>>2]=u,U=55;break;case 58:l|0&&be(l),U=o,n[U>>2]=0,n[U+4>>2]=0,n[Q>>2]=0,n[F>>2]=-1,n[N>>2]=0,n[v>>2]=0,n[o+8>>2]=A,U=71;break;case 65:n[o>>2]=c,n[o+4>>2]=u,U=71;break;case 67:A=n[v>>2]|0,A|0&&be(A),q=o,n[q>>2]=0,n[q+4>>2]=0,n[Q>>2]=0,n[F>>2]=-1,n[N>>2]=0,n[v>>2]=0,n[o+8>>2]=c,M=G;return}if((U|0)==20){M=G;return}else if((U|0)==55){M=G;return}else if((U|0)==71){M=G;return}}while(!1);A=n[q>>2]|0,A|0&&be(A),U=o,n[U>>2]=0,n[U+4>>2]=0,n[o+8>>2]=0,n[Q>>2]=0,n[o+12>>2]=-1,n[N>>2]=0,n[q>>2]=0,M=G}function Mf(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0;E=M,M=M+16|0,y=E,u=se(o|0,A|0,52)|0,L()|0,u=u&15,c=se(o|0,A|0,45)|0,L()|0;do if(u){for(;c=he(u+4095|0,0,52)|0,l=L()|0|A&-15728641,f=(15-u|0)*3|0,h=he(7,0,f|0)|0,p=L()|0,c=c|o|h,l=l|p,g=se(o|0,A|0,f|0)|0,L()|0,g=g&7,u=u+-1|0,!(g>>>0<6);)if(u)A=l,o=c;else{T=4;break}if((T|0)==4){c=se(c|0,l|0,45)|0,L()|0;break}return y=(g|0)==0&(nt(c,l)|0)!=0,y=he((y?2:1)+g|0,0,f|0)|0,T=L()|0|A&~p,y=y|o&~h,Re(T|0),M=E,y|0}while(!1);return c=c&127,c>>>0>120?(T=0,y=0,Re(T|0),M=E,y|0):(d0(y,0,c+1|0,0),T=n[y+4>>2]|0,y=n[y>>2]|0,Re(T|0),M=E,y|0)}function XT(o,A,c,u,l,f){o=o|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,y=0,E=0,v=0,S=0,I=0,F=0,U=0;U=M,M=M+160|0,E=U+80|0,p=U+64|0,v=U+112|0,F=U,KT(E,o,A,c),T=E,y0(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,S=v+4|0,n[S>>2]=n[E>>2],n[S+4>>2]=n[E+4>>2],n[S+8>>2]=n[E+8>>2],n[S+12>>2]=n[E+12>>2],n[S+16>>2]=n[E+16>>2],n[S+20>>2]=n[E+20>>2],n[S+24>>2]=n[E+24>>2],n[S+28>>2]=n[E+28>>2],S=F,n[S>>2]=g,n[S+4>>2]=T,S=F+8|0,n[S>>2]=h,o=F+12|0,A=v,c=o+36|0;do n[o>>2]=n[A>>2],o=o+4|0,A=A+4|0;while((o|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,M=U,F|0;c=F+16|0,y=F+24|0,E=F+28|0,h=0,p=0,A=g,o=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=L()|0,T=f+(T<<3)|0,n[T>>2]=A,n[T+4>>2]=o,x0(v),o=v,A=n[o>>2]|0,o=n[o+4>>2]|0,(A|0)==0&(o|0)==0){if(js(c),A=c,o=n[A>>2]|0,A=n[A+4>>2]|0,(o|0)==0&(A|0)==0){I=10;break}vf(o,A,n[E>>2]|0,v),o=v,A=n[o>>2]|0,o=n[o+4>>2]|0}T=F,n[T>>2]=A,n[T+4>>2]=o}while(!((A|0)==0&(o|0)==0));return(I|0)==4?(o=F+40|0,A=n[o>>2]|0,A|0&&be(A),I=F+16|0,n[I>>2]=0,n[I+4>>2]=0,n[y>>2]=0,n[F+36>>2]=0,n[E>>2]=-1,n[F+32>>2]=0,n[o>>2]=0,vf(0,0,0,v),n[F>>2]=0,n[F+4>>2]=0,n[S>>2]=0,F=14,M=U,F|0):((I|0)==10&&(n[F>>2]=0,n[F+4>>2]=0,n[S>>2]=n[y>>2]),F=n[S>>2]|0,M=U,F|0)}function YT(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0;if(E=M,M=M+48|0,g=E+32|0,p=E+40|0,T=E,!(n[o>>2]|0))return y=u,n[y>>2]=0,n[y+4>>2]=0,y=0,M=E,y|0;d0(g,0,0,0),h=g,l=n[h>>2]|0,h=n[h+4>>2]|0;do if(A>>>0>15)y=T,n[y>>2]=0,n[y+4>>2]=0,n[T+8>>2]=4,n[T+12>>2]=-1,y=T+16|0,c=T+29|0,n[y>>2]=0,n[y+4>>2]=0,n[y+8>>2]=0,re[y+12>>0]=0,re[c>>0]=re[p>>0]|0,re[c+1>>0]=re[p+1>>0]|0,re[c+2>>0]=re[p+2>>0]|0,c=4,y=9;else{if(c=Lo(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,y=T+29|0,n[g>>2]=0,n[g+4>>2]=0,n[g+8>>2]=0,re[g+12>>0]=0,re[y>>0]=re[p>>0]|0,re[y+1>>0]=re[p+1>>0]|0,re[y+2>>0]=re[p+2>>0]|0,y=9;break}if(c=qt((n[o+8>>2]|0)+1|0,32)|0,!c){y=T,n[y>>2]=0,n[y+4>>2]=0,n[T+8>>2]=13,n[T+12>>2]=-1,y=T+16|0,c=T+29|0,n[y>>2]=0,n[y+4>>2]=0,n[y+8>>2]=0,re[y+12>>0]=0,re[c>>0]=re[p>>0]|0,re[c+1>>0]=re[p+1>>0]|0,re[c+2>>0]=re[p+2>>0]|0,c=13,y=9;break}v0(o,c),S=T,n[S>>2]=l,n[S+4>>2]=h,h=T+8|0,n[h>>2]=0,n[T+12>>2]=A,n[T+20>>2]=o,n[T+24>>2]=c,re[T+28>>0]=0,l=T+29|0,re[l>>0]=re[p>>0]|0,re[l+1>>0]=re[p+1>>0]|0,re[l+2>>0]=re[p+2>>0]|0,n[T+16>>2]=3,v=+iT(c),v=v*+rT(c),f=+Ct(+ +P[c>>3]),f=v/+De(+ +Ws(+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(Sf(c+-1|0,g)|0,!(f/+P[g>>3]>10))break e;S=n[l>>2]|0,c=S+-1|0,n[l>>2]=c}while((S|0)>1);while(!1);if(js(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 vo(c,l,A,g)|0,p=g,o=u,p=pe(n[o>>2]|0,n[o+4>>2]|0,n[p>>2]|0,n[p+4>>2]|0)|0,o=L()|0,S=u,n[S>>2]=p,n[S+4>>2]=o,js(T),S=T,c=n[S>>2]|0,l=n[S+4>>2]|0;while(!((c|0)==0&(l|0)==0));c=n[h>>2]|0}while(!1);return S=c,M=E,S|0}function Mo(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0;if(!(hf(A,c)|0)||(A=nT(A)|0,u=+P[c>>3],l=+P[c+8>>3],l=A&l<0?l+6.283185307179586:l,v=n[o>>2]|0,(v|0)<=0))return v=0,v|0;if(E=n[o+4>>2]|0,A){A=0,y=l,c=-1,o=0;e:for(;;){for(T=o;h=+P[E+(T<<4)>>3],l=+P[E+(T<<4)+8>>3],o=(c+2|0)%(v|0)|0,f=+P[E+(o<<4)>>3],p=+P[E+(o<<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 o=T,T=c,c=o;if(p=h<0?h+6.283185307179586:h,h=l<0?l+6.283185307179586:l,y=p==y|h==y?y+-2220446049250313e-31:y,g=p+(h-p)*((u-f)/(g-f)),(g<0?g+6.283185307179586:g)>y&&(A=A^1),o=T+1|0,(o|0)>=(v|0)){c=22;break}else c=T}if((c|0)==22)return A|0}else{A=0,y=l,c=-1,o=0;e:for(;;){for(T=o;h=+P[E+(T<<4)>>3],l=+P[E+(T<<4)+8>>3],o=(c+2|0)%(v|0)|0,f=+P[E+(o<<4)>>3],p=+P[E+(o<<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 o=T,T=c,c=o;if(y=h==y|l==y?y+-2220446049250313e-31:y,h+(l-h)*((u-f)/(g-f))>y&&(A=A^1),o=T+1|0,(o|0)>=(v|0)){c=22;break}else c=T}if((c|0)==22)return A|0}return 0}function Lf(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0,U=0,q=0,N=0;if(I=n[o>>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,q=A+16|0,P[q>>3]=-17976931348623157e292,!((I|0)<=0)){for(v=n[o+4>>2]|0,T=17976931348623157e292,y=-17976931348623157e292,E=0,o=-1,f=17976931348623157e292,h=17976931348623157e292,g=-17976931348623157e292,u=-17976931348623157e292,S=0;c=+P[v+(S<<4)>>3],p=+P[v+(S<<4)+8>>3],o=o+2|0,l=+P[v+(((o|0)==(I|0)?0:o)<<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[q>>3]=p,u=p),T=p>0&p<T?p:T,y=p<0&p>y?p:y,E=E|+Ct(+(p-l))>3.141592653589793,o=S+1|0,(o|0)!=(I|0);)N=S,g=c,S=o,o=N;E&&(P[q>>3]=y,P[U>>3]=T)}}function Lo(o){return o=o|0,(o>>>0<4?0:15)|0}function v0(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0,U=0,q=0,N=0,Q=0,G=0,ee=0,oe=0,X=0;if(I=n[o>>2]|0,I){if(F=A+8|0,P[F>>3]=17976931348623157e292,U=A+24|0,P[U>>3]=17976931348623157e292,P[A>>3]=-17976931348623157e292,q=A+16|0,P[q>>3]=-17976931348623157e292,(I|0)>0){for(l=n[o+4>>2]|0,v=17976931348623157e292,S=-17976931348623157e292,u=0,c=-1,g=17976931348623157e292,T=17976931348623157e292,E=-17976931348623157e292,h=-17976931348623157e292,N=0;f=+P[l+(N<<4)>>3],y=+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),y<T&&(P[U>>3]=y,T=y),f>E?P[A>>3]=f:f=E,y>h&&(P[q>>3]=y,h=y),v=y>0&y<v?y:v,S=y<0&y>S?y:S,u=u|+Ct(+(y-p))>3.141592653589793,c=N+1|0,(c|0)!=(I|0);)oe=N,E=f,N=c,c=oe;u&&(P[q>>3]=S,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=o+8|0,c=n[oe>>2]|0,!((c|0)<=0)){ee=o+12|0,G=0;do if(l=n[ee>>2]|0,u=G,G=G+1|0,U=A+(G<<5)|0,q=n[l+(u<<3)>>2]|0,q){if(N=A+(G<<5)+8|0,P[N>>3]=17976931348623157e292,o=A+(G<<5)+24|0,P[o>>3]=17976931348623157e292,P[U>>3]=-17976931348623157e292,Q=A+(G<<5)+16|0,P[Q>>3]=-17976931348623157e292,(q|0)>0){for(I=n[l+(u<<3)+4>>2]|0,v=17976931348623157e292,S=-17976931348623157e292,l=0,u=-1,F=0,g=17976931348623157e292,T=17976931348623157e292,y=-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)==(q|0)?0:u)<<4)+8>>3],f<g&&(P[N>>3]=f,g=f),E<T&&(P[o>>3]=E,T=E),f>y?P[U>>3]=f:f=y,E>h&&(P[Q>>3]=E,h=E),v=E>0&E<v?E:v,S=E<0&E>S?E:S,l=l|+Ct(+(E-p))>3.141592653589793,u=F+1|0,(u|0)!=(q|0);)X=F,F=u,y=f,u=X;l&&(P[Q>>3]=S,P[o>>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((G|0)<(c|0))}}function S0(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0;if(!(Mo(o,A,c)|0))return l=0,l|0;if(l=o+8|0,(n[l>>2]|0)<=0)return l=1,l|0;for(u=o+12|0,o=0;;){if(f=o,o=o+1|0,Mo((n[u>>2]|0)+(f<<3)|0,A+(o<<5)|0,c)|0){o=0,u=6;break}if((o|0)>=(n[l>>2]|0)){o=1,u=6;break}}return(u|0)==6?o|0:0}function Rf(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,y=0;if(T=M,M=M+16|0,p=T,h=c+8|0,!(Mo(o,A,h)|0))return g=0,M=T,g|0;g=o+8|0;e:do if((n[g>>2]|0)>0){for(f=o+12|0,l=0;;){if(y=l,l=l+1|0,Mo((n[f>>2]|0)+(y<<3)|0,A+(l<<5)|0,h)|0){l=0;break}if((l|0)>=(n[g>>2]|0))break e}return M=T,l|0}while(!1);if(Vs(o,A,c,u)|0)return y=0,M=T,y|0;n[p>>2]=n[c>>2],n[p+4>>2]=h,l=n[g>>2]|0;e:do if((l|0)>0)for(o=o+12|0,h=0,f=l;;){if(l=n[o>>2]|0,(n[l+(h<<3)>>2]|0)>0){if(Mo(p,u,n[l+(h<<3)+4>>2]|0)|0){l=0;break e}if(l=h+1|0,Vs((n[o>>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 y=l,M=T,y|0}function Vs(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0,U=0,q=0,N=0,Q=0,G=0,ee=0,oe=0,X=0,H=0;if(oe=M,M=M+176|0,N=oe+172|0,l=oe+168|0,Q=oe,!(c0(A,u)|0))return o=0,M=oe,o|0;if(oT(A,u,N,l),Lr(Q|0,c|0,168)|0,(n[c>>2]|0)>0){A=0;do X=Q+8+(A<<4)+8|0,q=+cr(+P[X>>3],n[l>>2]|0),P[X>>3]=q,A=A+1|0;while((A|0)<(n[c>>2]|0))}F=+P[u>>3],U=+P[u+8>>3],q=+cr(+P[u+16>>3],n[l>>2]|0),S=+cr(+P[u+24>>3],n[l>>2]|0);e:do if((n[o>>2]|0)>0){if(u=o+4|0,l=n[Q>>2]|0,(l|0)<=0){for(A=0;;)if(A=A+1|0,(A|0)>=(n[o>>2]|0)){A=0;break e}}for(c=0;;){if(A=n[u>>2]|0,v=+P[A+(c<<4)>>3],I=+cr(+P[A+(c<<4)+8>>3],n[N>>2]|0),A=n[u>>2]|0,c=c+1|0,X=(c|0)%(n[o>>2]|0)|0,f=+P[A+(X<<4)>>3],h=+cr(+P[A+(X<<4)+8>>3],n[N>>2]|0),!(v>=F)|!(f>=F)&&!(v<=U)|!(f<=U)&&!(I<=S)|!(h<=S)&&!(I>=q)|!(h>=q)){E=f-v,T=h-I,A=0;do if(H=A,A=A+1|0,X=(A|0)==(l|0)?0:A,f=+P[Q+8+(H<<4)+8>>3],h=+P[Q+8+(X<<4)+8>>3]-f,p=+P[Q+8+(H<<4)>>3],g=+P[Q+8+(X<<4)>>3]-p,y=E*h-T*g,y!=0&&(G=I-f,ee=v-p,g=(G*g-h*ee)/y,!(g<0|g>1))&&(y=(E*G-T*ee)/y,y>=0&y<=1)){A=1;break e}while((A|0)<(l|0))}if((c|0)>=(n[o>>2]|0)){A=0;break}}}else A=0;while(!1);return H=A,M=oe,H|0}function Pf(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0;if(Vs(o,A,c,u)|0)return f=1,f|0;if(f=o+8|0,(n[f>>2]|0)<=0)return f=0,f|0;for(l=o+12|0,o=0;;){if(h=o,o=o+1|0,Vs((n[l>>2]|0)+(h<<3)|0,A+(o<<5)|0,c,u)|0){o=1,l=6;break}if((o|0)>=(n[f>>2]|0)){o=0,l=6;break}}return(l|0)==6?o|0:0}function JT(){return 8}function ZT(){return 16}function $T(){return 168}function e_(){return 8}function t_(){return 16}function r_(){return 12}function n_(){return 8}function i_(o){return o=o|0,+(+((n[o>>2]|0)>>>0)+4294967296*+(n[o+4>>2]|0))}function o_(o){o=o|0;var A=0,c=0;return c=+P[o>>3],A=+P[o+8>>3],+ +dt(+(c*c+A*A))}function Nf(o,A,c,u,l){o=o|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0;T=+P[o>>3],g=+P[A>>3]-T,p=+P[o+8>>3],h=+P[A+8>>3]-p,E=+P[c>>3],f=+P[u>>3]-E,v=+P[c+8>>3],y=+P[u+8>>3]-v,f=(f*(p-v)-(T-E)*y)/(g*y-h*f),P[l>>3]=T+g*f,P[l+8>>3]=p+h*f}function Ff(o,A){return o=o|0,A=A|0,+Ct(+(+P[o>>3]-+P[A>>3]))<1.1920928955078125e-7?(A=+Ct(+(+P[o+8>>3]-+P[A+8>>3]))<1.1920928955078125e-7,A|0):(A=0,A|0)}function s_(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0;if(f=M,M=M+16|0,l=f,u=nt(o,A)|0,(c+-1|0)>>>0>5||(u=(u|0)!=0,(c|0)==1&u))return l=-1,M=f,l|0;do if(Ro(o,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,M=f,l|0}function Ro(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0;if(y=M,M=M+32|0,p=y+16|0,g=y,u=hi(o,A,p)|0,u|0)return c=u,M=y,c|0;f=yf(o,A)|0,T=$t(o,A)|0,Zb(f,g),u=$b(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,o=n[p>>2]|0,(o|0)!=(n[g>>2]|0)&&(g=s0(f)|0,o=n[p>>2]|0,g|(o|0)==(A|0)&&(u=(u+1|0)%6|0)),(T|0)==3&(o|0)==(A|0)){u=(u+5|0)%6|0;break}(T|0)==5&(o|0)==(h|0)&&(u=(u+1|0)%6|0)}while(!1);return n[c>>2]=u,c=0,M=y,c|0}function gr(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0,U=0,q=0,N=0,Q=0;if(Q=M,M=M+32|0,N=Q+24|0,U=Q+20|0,I=Q+8|0,S=Q+16|0,v=Q,g=(nt(o,A)|0)==0,g=g?6:5,y=se(o|0,A|0,52)|0,L()|0,y=y&15,g>>>0<=c>>>0)return u=2,M=Q,u|0;E=(y|0)==0,!E&&(F=he(7,0,(y^15)*3|0)|0,(F&o|0)==0&((L()|0)&A|0)==0)?l=c:f=4;e:do if((f|0)==4){if(l=(nt(o,A)|0)!=0,((l?4:5)|0)<(c|0)||Ro(o,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,M=Q,u|0;n[U>>2]=0,l=It(o,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<o>>>0,f=h?T:o,h=h?p:A,!E&&(E=he(7,0,(y^15)*3|0)|0,(T&E|0)==0&(p&(L()|0)|0)==0))l=c;else{if(p=(c+-1+g|0)%(g|0)|0,l=nt(o,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),Ro(o,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[S>>2]=0,l=It(o,A,p,S,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=Bs(g,T,o,A)|0:f=n[26864+((((n[S>>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(Ro(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?o=Bs(T,p,o,A)|0:o=n[26864+((((n[U>>2]|0)+(n[26832+(F<<2)>>2]|0)|0)%6|0)<<2)>>2]|0,l=nt(T,p)|0,(o+-1|0)>>>0<=5&&(q=(l|0)!=0,!((o|0)==1&q)))do if(Ro(T,p,N)|0)l=-1;else if(q){l=((n[26416+(o<<2)>>2]|0)+5-(n[N>>2]|0)|0)%5|0;break}else{l=((n[26448+(o<<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,o=f;break e}while(!1);return u=l,M=Q,u|0}while(!1);return q=he(l|0,0,56)|0,N=L()|0|A&-2130706433|536870912,n[u>>2]=q|o,n[u+4>>2]=N,u=0,M=Q,u|0}function A_(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0;return f=(nt(o,A)|0)==0,u=gr(o,A,0,c)|0,l=(u|0)==0,f?!l||(u=gr(o,A,1,c+8|0)|0,u|0)||(u=gr(o,A,2,c+16|0)|0,u|0)||(u=gr(o,A,3,c+24|0)|0,u|0)||(u=gr(o,A,4,c+32|0)|0,u)?(f=u,f|0):gr(o,A,5,c+40|0)|0:!l||(u=gr(o,A,1,c+8|0)|0,u|0)||(u=gr(o,A,2,c+16|0)|0,u|0)||(u=gr(o,A,3,c+24|0)|0,u|0)||(u=gr(o,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 a_(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0,g=0;return g=M,M=M+192|0,l=g,f=g+168|0,h=se(o|0,A|0,56)|0,L()|0,h=h&7,p=A&-2130706433|134217728,u=hi(o,p,f)|0,u|0?(p=u,M=g,p|0):(A=se(o|0,A|0,52)|0,L()|0,A=A&15,nt(o,p)|0?u0(f,A,h,1,l):f0(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,M=g,p|0)}function kf(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0;return l=M,M=M+16|0,c=l,!(!0&(A&2013265920|0)==536870912)||(u=A&-2130706433|134217728,!(Us(o,u)|0))?(u=0,M=l,u|0):(f=se(o|0,A|0,56)|0,L()|0,f=(gr(o,u,f&7,c)|0)==0,u=c,u=f&((n[u>>2]|0)==(o|0)?(n[u+4>>2]|0)==(A|0):0)&1,M=l,u|0)}function Of(){return 27680}function zs(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0;E=M,M=M+208|0,g=E,T=E+192|0,h=Zt(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=o+h+p|0,f>>>0>o>>>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-o|0)>>>0?C0(o,c,u,l,g):Hs(o,c,u,T,l,0,g),(l|0)==1){Qs(T,1),l=0;break}else{Qs(T,A),l=1;break}else C0(o,c,u,l,g),qs(T,2),l=l+2|0;while(!1);A=n[T>>2]|1,n[T>>2]=A,o=o+c|0}while(o>>>0<f>>>0)}else l=1,A=1;for(Hs(o,c,u,T,l,0,g),f=T+4|0;;){if((l|0)==1&(A|0)==1)if(n[f>>2]|0)y=19;else break e;else(l|0)<2?y=19:(Qs(T,2),v=l+-2|0,n[T>>2]=n[T>>2]^7,qs(T,1),Hs(o+(0-(n[g+(v<<2)>>2]|0))+p|0,c,u,T,l+-1|0,1,g),Qs(T,1),A=n[T>>2]|1,n[T>>2]=A,o=o+p|0,Hs(o,c,u,T,v,1,g),l=v);(y|0)==19&&(y=0,A=Bf(T)|0,qs(T,A),o=o+p|0,l=A+l|0,A=n[T>>2]|0)}}while(!1);M=E}function C0(o,A,c,u,l){o=o|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,y=0,E=0;E=M,M=M+240|0,y=E,n[y>>2]=o;e:do if((u|0)>1)for(T=0-A|0,p=o,f=u,u=1,h=o;;){if(p=p+T|0,g=f+-2|0,o=p+(0-(n[l+(g<<2)>>2]|0))|0,(bn[c&3](h,o)|0)>-1&&(bn[c&3](h,p)|0)>-1||(h=y+(u<<2)|0,(bn[c&3](o,p)|0)>-1?(n[h>>2]=o,f=f+-1|0):(n[h>>2]=p,o=p,f=g),u=u+1|0,(f|0)<=1))break e;p=o,h=n[y>>2]|0}else u=1;while(!1);Uf(A,y,u),M=E}function qs(o,A){o=o|0,A=A|0;var c=0,u=0,l=0;l=o+4|0,A>>>0>31?(u=n[l>>2]|0,n[o>>2]=u,n[l>>2]=0,A=A+-32|0,c=0):(c=n[l>>2]|0,u=n[o>>2]|0),n[o>>2]=c<<32-A|u>>>A,n[l>>2]=c>>>A}function Hs(o,A,c,u,l,f,h){o=o|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,y=0,E=0,v=0,S=0,I=0;S=M,M=M+240|0,E=S+232|0,v=S,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]=o;e:do if((I|0)!=1|(g|0)!=0&&(y=0-A|0,p=o+(0-(n[h+(l<<2)>>2]|0))|0,(bn[c&3](p,o)|0)>=1))for(u=1,f=(f|0)==0,g=p;;){if(f&(l|0)>1){if(f=o+y|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=Bf(E)|0,qs(E,I),l=I+l|0,!((n[E>>2]|0)!=1|(n[T>>2]|0)!=0)){u=f,o=g,p=10;break e}if(o=g+(0-(n[h+(l<<2)>>2]|0))|0,(bn[c&3](o,n[v>>2]|0)|0)<1){o=g,u=f,f=0,p=9;break}else I=g,u=f,f=1,g=o,o=I}else u=1,p=9;while(!1);(p|0)==9&&!(f|0)&&(p=10),(p|0)==10&&(Uf(A,v,u),C0(o,A,c,l,h)),M=S}function Qs(o,A){o=o|0,A=A|0;var c=0,u=0,l=0;l=o+4|0,A>>>0>31?(u=n[o>>2]|0,n[l>>2]=u,n[o>>2]=0,A=A+-32|0,c=0):(c=n[o>>2]|0,u=n[l>>2]|0),n[l>>2]=c>>>(32-A|0)|u<<A,n[o>>2]=c<<A}function Bf(o){o=o|0;var A=0;return A=Df((n[o>>2]|0)+-1|0)|0,A?A|0:(A=Df(n[o+4>>2]|0)|0,((A|0)==0?0:A+32|0)|0)}function Df(o){o=o|0;var A=0;if(o)if(o&1)o=0;else for(A=o,o=0;o=o+1|0,!(A&2);)A=A>>>1;else o=32;return o|0}function Uf(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0,p=0;h=M,M=M+256|0,u=h;e:do if((c|0)>=2&&(f=A+(c<<2)|0,n[f>>2]=u,o|0))for(;;){l=o>>>0<256?o:256,Lr(u|0,n[A>>2]|0,l|0)|0,u=0;do p=A+(u<<2)|0,u=u+1|0,Lr(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(o=o-l|0,!o)break e;u=n[f>>2]|0}while(!1);M=h}function Vr(o){return o=+o,~~+qf(+o)|0}function ct(o){o=o|0;var A=0,c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0,F=0,U=0,q=0,N=0,Q=0,G=0,ee=0;ee=M,M=M+16|0,v=ee;do if(o>>>0<245){if(T=o>>>0<11?16:o+11&-8,o=T>>>3,E=n[6921]|0,c=E>>>o,c&3|0)return A=(c&1^1)+o|0,o=27724+(A<<1<<2)|0,c=o+8|0,u=n[c>>2]|0,l=u+8|0,f=n[l>>2]|0,(f|0)==(o|0)?n[6921]=E&~(1<<A):(n[f+12>>2]=o,n[c>>2]=f),G=A<<3,n[u+4>>2]=G|3,G=u+G+4|0,n[G>>2]=n[G>>2]|1,G=l,M=ee,G|0;if(y=n[6923]|0,T>>>0>y>>>0){if(c|0)return A=2<<o,A=c<<o&(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,o=A>>>1&2,A=A>>>o,u=A>>>1&1,u=(c|p|f|o|u)+(A>>>u)|0,A=27724+(u<<1<<2)|0,o=A+8|0,f=n[o>>2]|0,p=f+8|0,c=n[p>>2]|0,(c|0)==(A|0)?(o=E&~(1<<u),n[6921]=o):(n[c+12>>2]=A,n[o>>2]=c,o=E),G=u<<3,h=G-T|0,n[f+4>>2]=T|3,l=f+T|0,n[l+4>>2]=h|1,n[f+G>>2]=h,y|0&&(u=n[6926]|0,A=y>>>3,c=27724+(A<<1<<2)|0,A=1<<A,o&A?(o=c+8|0,A=n[o>>2]|0):(n[6921]=o|A,A=c,o=c+8|0),n[o>>2]=u,n[A+12>>2]=u,n[u+8>>2]=A,n[u+12>>2]=c),n[6923]=h,n[6926]=l,G=p,M=ee,G|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;o=n[c+16>>2]|0,!(!o&&(o=n[c+20>>2]|0,!o));)h=(n[o+4>>2]&-8)-T|0,l=h>>>0<g>>>0,c=o,p=l?o: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(o=p+20|0,A=n[o>>2]|0,!A&&(o=p+16|0,A=n[o>>2]|0,!A)){c=0;break}for(;;)if(u=A+20|0,c=n[u>>2]|0,c)A=c,o=u;else if(u=A+16|0,c=n[u>>2]|0,c)A=c,o=u;else break;n[o>>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,o=27988+(A<<2)|0,(p|0)==(n[o>>2]|0)){if(n[o>>2]=c,!c){n[6922]=f&~(1<<A);break}}else if(G=l+16|0,n[((n[G>>2]|0)==(p|0)?G: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?(G=g+T|0,n[p+4>>2]=G|3,G=p+G+4|0,n[G>>2]=n[G>>2]|1):(n[p+4>>2]=T|3,n[h+4>>2]=g|1,n[h+g>>2]=g,y|0&&(u=n[6926]|0,A=y>>>3,c=27724+(A<<1<<2)|0,A=1<<A,A&E?(o=c+8|0,A=n[o>>2]|0):(n[6921]=A|E,A=c,o=c+8|0),n[o>>2]=u,n[A+12>>2]=u,n[u+8>>2]=A,n[u+12>>2]=c),n[6923]=g,n[6926]=h),G=p+8|0,M=ee,G|0}else E=T}else E=T}else E=T}else if(o>>>0<=4294967231)if(o=o+11|0,T=o&-8,u=n[6922]|0,u){l=0-T|0,o=o>>>8,o?T>>>0>16777215?g=31:(E=(o+1048320|0)>>>16&8,F=o<<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,o=0,F=61;else for(o=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)o=c,l=h;else{o=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&(o|0)==0){if(o=2<<g,o=(o|0-o)&u,!o){E=T;break}E=(o&0-o)+-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,o=0,c=n[27988+((f|h|p|g|c)+(E>>>c)<<2)>>2]|0}c?F=65:(p=o,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,o=c?f:o,c=n[f+16>>2]|0,c||(c=n[f+20>>2]|0),c)f=c;else{p=o,h=l;break}if((p|0)!=0&&h>>>0<((n[6923]|0)-T|0)>>>0&&(y=p+T|0,y>>>0>p>>>0)){f=n[p+24>>2]|0,A=n[p+12>>2]|0;do if((A|0)==(p|0)){if(o=p+20|0,A=n[o>>2]|0,!A&&(o=p+16|0,A=n[o>>2]|0,!A)){A=0;break}for(;;)if(l=A+20|0,c=n[l>>2]|0,c)A=c,o=l;else if(l=A+16|0,c=n[l>>2]|0,c)A=c,o=l;else break;n[o>>2]=0}else G=n[p+8>>2]|0,n[G+12>>2]=A,n[A+8>>2]=G;while(!1);do if(f){if(o=n[p+28>>2]|0,c=27988+(o<<2)|0,(p|0)==(n[c>>2]|0)){if(n[c>>2]=A,!A){u=u&~(1<<o),n[6922]=u;break}}else if(G=f+16|0,n[((n[G>>2]|0)==(p|0)?G:f+20|0)>>2]=A,!A)break;n[A+24>>2]=f,o=n[p+16>>2]|0,o|0&&(n[A+16>>2]=o,n[o+24>>2]=A),o=n[p+20>>2]|0,o&&(n[A+20>>2]=o,n[o+24>>2]=A)}while(!1);e:do if(h>>>0<16)G=h+T|0,n[p+4>>2]=G|3,G=p+G+4|0,n[G>>2]=n[G>>2]|1;else{if(n[p+4>>2]=T|3,n[y+4>>2]=h|1,n[y+h>>2]=h,A=h>>>3,h>>>0<256){c=27724+(A<<1<<2)|0,o=n[6921]|0,A=1<<A,o&A?(o=c+8|0,A=n[o>>2]|0):(n[6921]=o|A,A=c,o=c+8|0),n[o>>2]=y,n[A+12>>2]=y,n[y+8>>2]=A,n[y+12>>2]=c;break}if(A=h>>>8,A?h>>>0>16777215?c=31:(Q=(A+1048320|0)>>>16&8,G=A<<Q,N=(G+520192|0)>>>16&4,G=G<<N,c=(G+245760|0)>>>16&2,c=14-(N|Q|c)+(G<<c>>>15)|0,c=h>>>(c+7|0)&1|c<<1):c=0,A=27988+(c<<2)|0,n[y+28>>2]=c,o=y+16|0,n[o+4>>2]=0,n[o>>2]=0,o=1<<c,!(u&o)){n[6922]=u|o,n[A>>2]=y,n[y+24>>2]=A,n[y+12>>2]=y,n[y+8>>2]=y;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,o=n[c>>2]|0,!!o;)if((n[o+4>>2]&-8|0)==(h|0)){A=o;break t}else u=u<<1,A=o;n[c>>2]=y,n[y+24>>2]=A,n[y+12>>2]=y,n[y+8>>2]=y;break e}while(!1);Q=A+8|0,G=n[Q>>2]|0,n[G+12>>2]=y,n[Q>>2]=y,n[y+8>>2]=G,n[y+12>>2]=A,n[y+24>>2]=0}while(!1);return G=p+8|0,M=ee,G|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,o=n[6926]|0,A>>>0>15?(G=o+E|0,n[6926]=G,n[6923]=A,n[G+4>>2]=A|1,n[o+c>>2]=A,n[o+4>>2]=E|3):(n[6923]=0,n[6926]=0,n[o+4>>2]=c|3,G=o+c+4|0,n[G>>2]=n[G>>2]|1),G=o+8|0,M=ee,G|0;if(h=n[6924]|0,h>>>0>E>>>0)return N=h-E|0,n[6924]=N,G=n[6927]|0,Q=G+E|0,n[6927]=Q,n[Q+4>>2]=N|1,n[G+4>>2]=E|3,G=G+8|0,M=ee,G|0;if(n[7039]|0?o=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,o=4096),p=E+48|0,g=E+47|0,f=o+g|0,l=0-o|0,T=f&l,T>>>0<=E>>>0||(o=n[7031]|0,o|0&&(y=n[7029]|0,v=y+T|0,v>>>0<=y>>>0|v>>>0>o>>>0)))return G=0,M=ee,G|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(o=n[u+8>>2]|0,o)u=o;else{F=128;break t}if(A=f-h&l,A>>>0<2147483647)if(o=gn(A|0)|0,(o|0)==((n[u>>2]|0)+(n[u+4>>2]|0)|0)){if((o|0)!=-1){h=A,f=o,F=145;break e}}else u=o,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,S=n[7040]|0,I=S+-1|0,A=((I&A|0)==0?0:(I+A&0-S)-A|0)+T|0,S=n[7029]|0,I=A+S|0,A>>>0>E>>>0&A>>>0<2147483647)){if(v=n[7031]|0,v|0&&I>>>0<=S>>>0|I>>>0>v>>>0){A=0;break}if(o=gn(A|0)|0,(o|0)==(c|0)){h=A,f=c,F=145;break e}else u=o,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(o=n[7041]|0,o=g-A+o&0-o,o>>>0>=2147483647){h=A,f=u,F=145;break e}if((gn(o|0)|0)==-1){gn(c|0)|0,A=0;break}else{h=o+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,q=U>>>0>(E+40|0)>>>0,!((N|0)==-1|q^1|N>>>0<I>>>0&((N|0)!=-1&(I|0)!=-1)^1))&&(h=q?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(o=n[A>>2]|0,c=n[A+4>>2]|0,(f|0)==(o+c|0)){F=154;break}if(u=n[A+8>>2]|0,u)A=u;else break}if((F|0)==154&&(Q=A+4|0,(n[A+12>>2]&8|0)==0)&&f>>>0>g>>>0&o>>>0<=g>>>0){n[Q>>2]=c+h,G=(n[6924]|0)+h|0,N=g+8|0,N=(N&7|0)==0?0:0-N&7,Q=g+N|0,N=G-N|0,n[6927]=Q,n[6924]=N,n[Q+4>>2]=N|1,n[g+G+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(o=n[A+8>>2]|0,o)A=o;else break}if((F|0)==162&&(n[A+12>>2]&8|0)==0){n[A>>2]=f,y=A+4|0,n[y>>2]=(n[y>>2]|0)+h,y=f+8|0,y=f+((y&7|0)==0?0:0-y&7)|0,A=c+8|0,A=c+((A&7|0)==0?0:0-A&7)|0,T=y+E|0,p=A-y-E|0,n[y+4>>2]=E|3;t:do if((g|0)==(A|0))G=(n[6924]|0)+p|0,n[6924]=G,n[6927]=T,n[T+4>>2]=G|1;else{if((n[6926]|0)==(A|0)){G=(n[6923]|0)+p|0,n[6923]=G,n[6926]=T,n[T+4>>2]=G|1,n[T+G>>2]=G;break}if(o=n[A+4>>2]|0,(o&3|0)==1){h=o&-8,u=o>>>3;r:do if(o>>>0<256)if(o=n[A+8>>2]|0,c=n[A+12>>2]|0,(c|0)==(o|0)){n[6921]=n[6921]&~(1<<u);break}else{n[o+12>>2]=c,n[c+8>>2]=o;break}else{f=n[A+24>>2]|0,o=n[A+12>>2]|0;do if((o|0)==(A|0)){if(c=A+16|0,u=c+4|0,o=n[u>>2]|0,o)c=u;else if(o=n[c>>2]|0,!o){o=0;break}for(;;)if(l=o+20|0,u=n[l>>2]|0,u)o=u,c=l;else if(l=o+16|0,u=n[l>>2]|0,u)o=u,c=l;else break;n[c>>2]=0}else G=n[A+8>>2]|0,n[G+12>>2]=o,n[o+8>>2]=G;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(G=f+16|0,n[((n[G>>2]|0)==(A|0)?G:f+20|0)>>2]=o,!o)break r}else{if(n[u>>2]=o,o|0)break;n[6922]=n[6922]&~(1<<c);break r}while(!1);if(n[o+24>>2]=f,c=A+16|0,u=n[c>>2]|0,u|0&&(n[o+16>>2]=u,n[u+24>>2]=o),c=n[c+4>>2]|0,!c)break;n[o+20>>2]=c,n[c+24>>2]=o}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,o=n[6921]|0,A=1<<A,o&A?(o=c+8|0,A=n[o>>2]|0):(n[6921]=o|A,A=c,o=c+8|0),n[o>>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}Q=(A+1048320|0)>>>16&8,G=A<<Q,N=(G+520192|0)>>>16&4,G=G<<N,u=(G+245760|0)>>>16&2,u=14-(N|Q|u)+(G<<u>>>15)|0,u=l>>>(u+7|0)&1|u<<1}while(!1);if(A=27988+(u<<2)|0,n[T+28>>2]=u,o=T+16|0,n[o+4>>2]=0,n[o>>2]=0,o=n[6922]|0,c=1<<u,!(o&c)){n[6922]=o|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,o=n[c>>2]|0,!!o;)if((n[o+4>>2]&-8|0)==(l|0)){A=o;break r}else u=u<<1,A=o;n[c>>2]=T,n[T+24>>2]=A,n[T+12>>2]=T,n[T+8>>2]=T;break t}while(!1);Q=A+8|0,G=n[Q>>2]|0,n[G+12>>2]=T,n[Q>>2]=T,n[T+8>>2]=G,n[T+12>>2]=A,n[T+24>>2]=0}while(!1);return G=y+8|0,M=ee,G|0}for(A=28132;o=n[A>>2]|0,!(o>>>0<=g>>>0&&(G=o+(n[A+4>>2]|0)|0,G>>>0>g>>>0));)A=n[A+8>>2]|0;l=G+-47|0,o=l+8|0,o=l+((o&7|0)==0?0:0-o&7)|0,l=g+16|0,o=o>>>0<l>>>0?g:o,A=o+8|0,c=h+-40|0,N=f+8|0,N=(N&7|0)==0?0:0-N&7,Q=f+N|0,N=c-N|0,n[6927]=Q,n[6924]=N,n[Q+4>>2]=N|1,n[f+c+4>>2]=40,n[6928]=n[7043],c=o+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=o+24|0;do Q=A,A=A+4|0,n[A>>2]=7;while((Q+8|0)>>>0<G>>>0);if((o|0)!=(g|0)){if(f=o-g|0,n[c>>2]=n[c>>2]&-2,n[g+4>>2]=f|1,n[o>>2]=f,A=f>>>3,f>>>0<256){c=27724+(A<<1<<2)|0,o=n[6921]|0,A=1<<A,o&A?(o=c+8|0,A=n[o>>2]|0):(n[6921]=o|A,A=c,o=c+8|0),n[o>>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:(Q=(A+1048320|0)>>>16&8,G=A<<Q,N=(G+520192|0)>>>16&4,G=G<<N,u=(G+245760|0)>>>16&2,u=14-(N|Q|u)+(G<<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,o=1<<u,!(A&o)){n[6922]=A|o,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,o=n[c>>2]|0,!!o;)if((n[o+4>>2]&-8|0)==(f|0)){A=o;break t}else u=u<<1,A=o;n[c>>2]=g,n[g+24>>2]=A,n[g+12>>2]=g,n[g+8>>2]=g;break e}while(!1);Q=A+8|0,G=n[Q>>2]|0,n[G+12>>2]=g,n[Q>>2]=g,n[g+8>>2]=G,n[g+12>>2]=A,n[g+24>>2]=0}}else G=n[6925]|0,(G|0)==0|f>>>0<G>>>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,G=h+-40|0,N=f+8|0,N=(N&7|0)==0?0:0-N&7,Q=f+N|0,N=G-N|0,n[6927]=Q,n[6924]=N,n[Q+4>>2]=N|1,n[f+G+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,G=n[6927]|0,Q=G+E|0,n[6927]=Q,n[Q+4>>2]=N|1,n[G+4>>2]=E|3,G=G+8|0,M=ee,G|0}return G=Of()|0,n[G>>2]=12,G=0,M=ee,G|0}function be(o){o=o|0;var A=0,c=0,u=0,l=0,f=0,h=0,p=0,g=0;if(o){c=o+-8|0,l=n[6925]|0,o=n[o+-4>>2]|0,A=o&-8,g=c+A|0;do if(o&1)p=c,h=c;else{if(u=n[c>>2]|0,!(o&3)||(h=c+(0-u)|0,f=u+A|0,h>>>0<l>>>0))return;if((n[6926]|0)==(h|0)){if(o=g+4|0,A=n[o>>2]|0,(A&3|0)!=3){p=h,A=f;break}n[6923]=f,n[o>>2]=A&-2,n[h+4>>2]=f|1,n[h+f>>2]=f;return}if(c=u>>>3,u>>>0<256)if(o=n[h+8>>2]|0,A=n[h+12>>2]|0,(A|0)==(o|0)){n[6921]=n[6921]&~(1<<c),p=h,A=f;break}else{n[o+12>>2]=A,n[A+8>>2]=o,p=h,A=f;break}l=n[h+24>>2]|0,o=n[h+12>>2]|0;do if((o|0)==(h|0)){if(A=h+16|0,c=A+4|0,o=n[c>>2]|0,o)A=c;else if(o=n[A>>2]|0,!o){o=0;break}for(;;)if(u=o+20|0,c=n[u>>2]|0,c)o=c,A=u;else if(u=o+16|0,c=n[u>>2]|0,c)o=c,A=u;else break;n[A>>2]=0}else p=n[h+8>>2]|0,n[p+12>>2]=o,n[o+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]=o,!o){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]=o,!o){p=h,A=f;break}n[o+24>>2]=l,A=h+16|0,c=n[A>>2]|0,c|0&&(n[o+16>>2]=c,n[c+24>>2]=o),A=n[A+4>>2]|0,A?(n[o+20>>2]=A,n[A+24>>2]=o,p=h,A=f):(p=h,A=f)}else p=h,A=f}while(!1);if(!(h>>>0>=g>>>0)&&(o=g+4|0,u=n[o>>2]|0,!!(u&1))){if(u&2)n[o>>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,o=n[g+12>>2]|0,(o|0)==(A|0)){n[6921]=n[6921]&~(1<<c);break}else{n[A+12>>2]=o,n[o+8>>2]=A;break}else{f=n[g+24>>2]|0,o=n[g+12>>2]|0;do if((o|0)==(g|0)){if(A=g+16|0,c=A+4|0,o=n[c>>2]|0,o)A=c;else if(o=n[A>>2]|0,!o){c=0;break}for(;;)if(u=o+20|0,c=n[u>>2]|0,c)o=c,A=u;else if(u=o+16|0,c=n[u>>2]|0,c)o=c,A=u;else break;n[A>>2]=0,c=o}else c=n[g+8>>2]|0,n[c+12>>2]=o,n[o+8>>2]=c,c=o;while(!1);if(f|0){if(o=n[g+28>>2]|0,A=27988+(o<<2)|0,(n[A>>2]|0)==(g|0)){if(n[A>>2]=c,!c){n[6922]=n[6922]&~(1<<o);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,o=g+16|0,A=n[o>>2]|0,A|0&&(n[c+16>>2]=A,n[A+24>>2]=c),o=n[o+4>>2]|0,o|0&&(n[c+20>>2]=o,n[o+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(o=l>>>3,l>>>0<256){c=27724+(o<<1<<2)|0,A=n[6921]|0,o=1<<o,A&o?(A=c+8|0,o=n[A>>2]|0):(n[6921]=A|o,o=c,A=c+8|0),n[A>>2]=p,n[o+12>>2]=p,n[p+8>>2]=o,n[p+12>>2]=c;return}o=l>>>8,o?l>>>0>16777215?u=31:(h=(o+1048320|0)>>>16&8,g=o<<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,o=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[o>>2]=p,n[p+24>>2]=o,n[p+12>>2]=p,n[p+8>>2]=p;else{o=n[o>>2]|0;t:do if((n[o+4>>2]&-8|0)!=(l|0)){for(u=l<<((u|0)==31?0:25-(u>>>1)|0);c=o+16+(u>>>31<<2)|0,A=n[c>>2]|0,!!A;)if((n[A+4>>2]&-8|0)==(l|0)){o=A;break t}else u=u<<1,o=A;n[c>>2]=p,n[p+24>>2]=o,n[p+12>>2]=p,n[p+8>>2]=p;break e}while(!1);h=o+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]=o,n[p+24>>2]=0}while(!1);if(g=(n[6929]|0)+-1|0,n[6929]=g,!(g|0)){for(o=28140;o=n[o>>2]|0,o;)o=o+8|0;n[6929]=-1}}}}function qt(o,A){o=o|0,A=A|0;var c=0;return o?(c=Zt(A,o)|0,(A|o)>>>0>65535&&(c=((c>>>0)/(o>>>0)|0)==(A|0)?c:-1)):c=0,o=ct(c)|0,!o||!(n[o+-4>>2]&3)||mn(o|0,0,c|0)|0,o|0}function c_(o,A){o=o|0,A=A|0;var c=0,u=0;return o?A>>>0>4294967231?(A=Of()|0,n[A>>2]=12,A=0,A|0):(c=l_(o+-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[o+-4>>2]|0,u=(u&-8)-((u&3|0)==0?8:4)|0,Lr(c|0,o|0,(u>>>0<A>>>0?u:A)|0)|0,be(o),A=c,A|0):(A=0,A|0))):(A=ct(A)|0,A|0)}function l_(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0,g=0,T=0,y=0,E=0;if(y=o+4|0,E=n[y>>2]|0,c=E&-8,p=o+c|0,!(E&3))return A>>>0<256?(o=0,o|0):(c>>>0>=(A+4|0)>>>0&&(c-A|0)>>>0<=n[7041]<<1>>>0||(o=0),o|0);if(c>>>0>=A>>>0)return c=c-A|0,c>>>0<=15||(T=o+A|0,n[y>>2]=E&1|A|2,n[T+4>>2]=c|3,E=p+4|0,n[E>>2]=n[E>>2]|1,Gf(T,c)),o|0;if((n[6927]|0)==(p|0))return T=(n[6924]|0)+c|0,c=T-A|0,u=o+A|0,T>>>0<=A>>>0?(o=0,o|0):(n[y>>2]=E&1|A|2,n[u+4>>2]=c|1,n[6927]=u,n[6924]=c,o|0);if((n[6926]|0)==(p|0))return u=(n[6923]|0)+c|0,u>>>0<A>>>0?(o=0,o|0):(c=u-A|0,c>>>0>15?(T=o+A|0,u=o+u|0,n[y>>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[y>>2]=E&1|u|2,u=o+u+4|0,n[u>>2]=n[u>>2]|1,u=0,c=0),n[6923]=c,n[6926]=u,o|0);if(u=n[p+4>>2]|0,u&2|0||(g=(u&-8)+c|0,g>>>0<A>>>0))return o=0,o|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[y>>2]=E&1|g|2,E=o+g+4|0,n[E>>2]=n[E>>2]|1,o|0):(p=o+A|0,n[y>>2]=E&1|A|2,n[p+4>>2]=T|3,E=o+g+4|0,n[E>>2]=n[E>>2]|1,Gf(p,T),o|0)}function Gf(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0,h=0,p=0;p=o+A|0,c=n[o+4>>2]|0;do if(c&1)h=o;else{if(l=n[o>>2]|0,!(c&3))return;if(h=o+(0-l)|0,A=l+A|0,(n[6926]|0)==(h|0)){if(o=p+4|0,c=n[o>>2]|0,(c&3|0)!=3)break;n[6923]=A,n[o>>2]=c&-2,n[h+4>>2]=A|1,n[p>>2]=A;return}if(u=l>>>3,l>>>0<256)if(o=n[h+8>>2]|0,c=n[h+12>>2]|0,(c|0)==(o|0)){n[6921]=n[6921]&~(1<<u);break}else{n[o+12>>2]=c,n[c+8>>2]=o;break}f=n[h+24>>2]|0,o=n[h+12>>2]|0;do if((o|0)==(h|0)){if(c=h+16|0,u=c+4|0,o=n[u>>2]|0,o)c=u;else if(o=n[c>>2]|0,!o){o=0;break}for(;;)if(l=o+20|0,u=n[l>>2]|0,u)o=u,c=l;else if(l=o+16|0,u=n[l>>2]|0,u)o=u,c=l;else break;n[c>>2]=0}else l=n[h+8>>2]|0,n[l+12>>2]=o,n[o+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]=o,!o){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]=o,!o)break;n[o+24>>2]=f,c=h+16|0,u=n[c>>2]|0,u|0&&(n[o+16>>2]=u,n[u+24>>2]=o),c=n[c+4>>2]|0,c&&(n[o+20>>2]=c,n[c+24>>2]=o)}}while(!1);if(o=p+4|0,u=n[o>>2]|0,u&2)n[o>>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(o=n[p+8>>2]|0,A=n[p+12>>2]|0,(A|0)==(o|0)){n[6921]=n[6921]&~(1<<c);break}else{n[o+12>>2]=A,n[A+8>>2]=o;break}else{f=n[p+24>>2]|0,A=n[p+12>>2]|0;do if((A|0)==(p|0)){if(o=p+16|0,c=o+4|0,A=n[c>>2]|0,A)o=c;else if(A=n[o>>2]|0,!A){c=0;break}for(;;)if(u=A+20|0,c=n[u>>2]|0,c)A=c,o=u;else if(u=A+16|0,c=n[u>>2]|0,c)A=c,o=u;else break;n[o>>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,o=27988+(A<<2)|0,(n[o>>2]|0)==(p|0)){if(n[o>>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,o=n[A>>2]|0,o|0&&(n[c+16>>2]=o,n[o+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,o=n[6921]|0,A=1<<A,o&A?(o=c+8|0,A=n[o>>2]|0):(n[6921]=o|A,A=c,o=c+8|0),n[o>>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,o=n[6922]|0,c=1<<u,!(o&c)){n[6922]=o|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,o=n[c>>2]|0,!!o;)if((n[o+4>>2]&-8|0)==(l|0)){A=o;break e}else u=u<<1,A=o;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(o,A,c,u){return o=o|0,A=A|0,c=c|0,u=u|0,c=o+c>>>0,Re(A+u+(c>>>0<o>>>0|0)>>>0|0),c|0}function Mt(o,A,c,u){return o=o|0,A=A|0,c=c|0,u=u|0,u=A-u-(c>>>0>o>>>0|0)>>>0,Re(u|0),o-c>>>0|0}function jf(o){return o=o|0,(o?31-(Jr(o^o-1)|0)|0:32)|0}function I0(o,A,c,u,l){o=o|0,A=A|0,c=c|0,u=u|0,l=l|0;var f=0,h=0,p=0,g=0,T=0,y=0,E=0,v=0,S=0,I=0;if(y=o,g=A,T=g,h=c,v=u,p=v,!T)return f=(l|0)!=0,p?f?(n[l>>2]=o|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]=(y>>>0)%(h>>>0),n[l+4>>2]=0),v=0,l=(y>>>0)/(h>>>0)>>>0,Re(v|0),l|0);f=(p|0)==0;do if(h){if(!f){if(f=(Jr(p|0)|0)-(Jr(T|0)|0)|0,f>>>0<=31){E=f+1|0,p=31-f|0,A=f-31>>31,h=E,o=y>>>(E>>>0)&A|T<<p,A=T>>>(E>>>0)&A,f=0,p=y<<p;break}return l?(n[l>>2]=o|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=(Jr(h|0)|0)+33-(Jr(T|0)|0)|0,I=64-p|0,E=32-p|0,g=E>>31,S=p-32|0,A=S>>31,h=p,o=E-1>>31&T>>>(S>>>0)|(T<<E|y>>>(p>>>0))&A,A=A&T>>>(p>>>0),f=y<<I&g,p=(T<<I|y>>>(S>>>0))&g|y<<E&p-33>>31;break}return l|0&&(n[l>>2]=f&y,n[l+4>>2]=0),(h|0)==1?(S=g|A&0,I=o|0,Re(S|0),I|0):(I=jf(h|0)|0,S=T>>>(I>>>0)|0,I=T<<32-I|y>>>(I>>>0)|0,Re(S|0),I|0)}else{if(f)return l|0&&(n[l>>2]=(T>>>0)%(h>>>0),n[l+4>>2]=0),S=0,I=(T>>>0)/(h>>>0)>>>0,Re(S|0),I|0;if(!y)return l|0&&(n[l>>2]=0,n[l+4>>2]=(T>>>0)%(p>>>0)),S=0,I=(T>>>0)/(p>>>0)>>>0,Re(S|0),I|0;if(f=p-1|0,!(f&p))return l|0&&(n[l>>2]=o|0,n[l+4>>2]=f&T|A&0),S=0,I=T>>>((jf(p|0)|0)>>>0),Re(S|0),I|0;if(f=(Jr(p|0)|0)-(Jr(T|0)|0)|0,f>>>0<=30){A=f+1|0,p=31-f|0,h=A,o=T<<p|y>>>(A>>>0),A=T>>>(A>>>0),f=0,p=y<<p;break}return l?(n[l>>2]=o|0,n[l+4>>2]=g|A&0,S=0,I=0,Re(S|0),I|0):(S=0,I=0,Re(S|0),I|0)}while(!1);if(!h)T=p,g=0,p=0;else{E=c|0,y=v|u&0,T=pe(E|0,y|0,-1,-1)|0,c=L()|0,g=p,p=0;do u=g,g=f>>>31|g<<1,f=p|f<<1,u=o<<1|u>>>31|0,v=o>>>31|A<<1|0,Mt(T|0,c|0,u|0,v|0)|0,I=L()|0,S=I>>31|((I|0)<0?-1:0)<<1,p=S&1,o=Mt(u|0,v|0,S&E|0,(((I|0)<0?-1:0)>>31|((I|0)<0?-1:0)<<1)&y|0)|0,A=L()|0,h=h-1|0;while((h|0)!=0);T=g,g=0}return h=0,l|0&&(n[l>>2]=o,n[l+4>>2]=A),S=(f|0)>>>31|(T|h)<<1|(h<<1|f>>>31)&0|g,I=(f<<1|0)&-2|p,Re(S|0),I|0}function dn(o,A,c,u){o=o|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^o|0,g^A|0,T|0,g|0)|0,h=L()|0,o=f^T,A=l^g,Mt((I0(p,h,Mt(f^c|0,l^u|0,f|0,l|0)|0,L()|0,0)|0)^o|0,(L()|0)^A|0,o|0,A|0)|0}function u_(o,A){o=o|0,A=A|0;var c=0,u=0,l=0,f=0;return f=o&65535,l=A&65535,c=Zt(l,f)|0,u=o>>>16,o=(c>>>16)+(Zt(l,u)|0)|0,l=A>>>16,A=Zt(l,f)|0,Re((o>>>16)+(Zt(l,u)|0)+(((o&65535)+A|0)>>>16)|0),o+A<<16|c&65535|0}function lt(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0;return l=o,f=c,c=u_(l,f)|0,o=L()|0,Re((Zt(A,f)|0)+(Zt(u,l)|0)+o|o&0|0),c|0}function pn(o,A,c,u){o=o|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=M,M=M+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,o=Mt(h^o|0,f^A|0,h|0,f|0)|0,A=L()|0,I0(o,A,Mt(T^c|0,g^u|0,T|0,g|0)|0,L()|0,p)|0,u=Mt(n[p>>2]^h|0,n[p+4>>2]^f|0,h|0,f|0)|0,c=L()|0,M=l,Re(c|0),u|0}function Zr(o,A,c,u){o=o|0,A=A|0,c=c|0,u=u|0;var l=0,f=0;return f=M,M=M+16|0,l=f|0,I0(o,A,c,u,l)|0,M=f,Re(n[l+4>>2]|0),n[l>>2]|0}function Vf(o,A,c){return o=o|0,A=A|0,c=c|0,(c|0)<32?(Re(A>>c|0),o>>>c|(A&(1<<c)-1)<<32-c):(Re(((A|0)<0?-1:0)|0),A>>c-32|0)}function se(o,A,c){return o=o|0,A=A|0,c=c|0,(c|0)<32?(Re(A>>>c|0),o>>>c|(A&(1<<c)-1)<<32-c):(Re(0),A>>>c-32|0)}function he(o,A,c){return o=o|0,A=A|0,c=c|0,(c|0)<32?(Re(A<<c|(o&(1<<c)-1<<32-c)>>>32-c|0),o<<c):(Re(o<<c-32|0),0)}function M0(o,A,c){return o=o|0,A=A|0,c=c|0,A=Jr(A)|0,(A|0)==32&&(A=A+(Jr(o)|0)|0),Re(0),A|0}function zf(o,A){return o=+o,A=+A,o!=o?+A:A!=A?+o:+Rb(+o,+A)}function Ws(o,A){return o=+o,A=+A,o!=o?+A:A!=A?+o:+o0(+o,+A)}function Ks(o){return o=+o,o>=0?+Lt(o+.5):+ui(o-.5)}function Lr(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0;if((c|0)>=8192)return Fb(o|0,A|0,c|0)|0,o|0;if(f=o|0,l=o+c|0,(o&3)==(A&3)){for(;o&3;){if(!c)return f|0;re[o>>0]=re[A>>0]|0,o=o+1|0,A=A+1|0,c=c-1|0}for(c=l&-4|0,u=c-64|0;(o|0)<=(u|0);)n[o>>2]=n[A>>2],n[o+4>>2]=n[A+4>>2],n[o+8>>2]=n[A+8>>2],n[o+12>>2]=n[A+12>>2],n[o+16>>2]=n[A+16>>2],n[o+20>>2]=n[A+20>>2],n[o+24>>2]=n[A+24>>2],n[o+28>>2]=n[A+28>>2],n[o+32>>2]=n[A+32>>2],n[o+36>>2]=n[A+36>>2],n[o+40>>2]=n[A+40>>2],n[o+44>>2]=n[A+44>>2],n[o+48>>2]=n[A+48>>2],n[o+52>>2]=n[A+52>>2],n[o+56>>2]=n[A+56>>2],n[o+60>>2]=n[A+60>>2],o=o+64|0,A=A+64|0;for(;(o|0)<(c|0);)n[o>>2]=n[A>>2],o=o+4|0,A=A+4|0}else for(c=l-4|0;(o|0)<(c|0);)re[o>>0]=re[A>>0]|0,re[o+1>>0]=re[A+1>>0]|0,re[o+2>>0]=re[A+2>>0]|0,re[o+3>>0]=re[A+3>>0]|0,o=o+4|0,A=A+4|0;for(;(o|0)<(l|0);)re[o>>0]=re[A>>0]|0,o=o+1|0,A=A+1|0;return f|0}function L0(o,A,c){o=o|0,A=A|0,c=c|0;var u=0;if((A|0)<(o|0)&(o|0)<(A+c|0)){for(u=o,A=A+c|0,o=o+c|0;(c|0)>0;)o=o-1|0,A=A-1|0,c=c-1|0,re[o>>0]=re[A>>0]|0;o=u}else Lr(o,A,c)|0;return o|0}function mn(o,A,c){o=o|0,A=A|0,c=c|0;var u=0,l=0,f=0,h=0;if(f=o+c|0,A=A&255,(c|0)>=67){for(;o&3;)re[o>>0]=A,o=o+1|0;for(u=f&-4|0,h=A|A<<8|A<<16|A<<24,l=u-64|0;(o|0)<=(l|0);)n[o>>2]=h,n[o+4>>2]=h,n[o+8>>2]=h,n[o+12>>2]=h,n[o+16>>2]=h,n[o+20>>2]=h,n[o+24>>2]=h,n[o+28>>2]=h,n[o+32>>2]=h,n[o+36>>2]=h,n[o+40>>2]=h,n[o+44>>2]=h,n[o+48>>2]=h,n[o+52>>2]=h,n[o+56>>2]=h,n[o+60>>2]=h,o=o+64|0;for(;(o|0)<(u|0);)n[o>>2]=h,o=o+4|0}for(;(o|0)<(f|0);)re[o>>0]=A,o=o+1|0;return f-c|0}function qf(o){return o=+o,o>=0?+Lt(o+.5):+ui(o-.5)}function gn(o){o=o|0;var A=0,c=0,u=0;return u=Nb()|0,c=n[Jt>>2]|0,A=c+o|0,(o|0)>0&(A|0)<(c|0)|(A|0)<0?(Ob(A|0)|0,of(12),-1):(A|0)>(u|0)&&!(kb(A|0)|0)?(of(12),-1):(n[Jt>>2]=A,c|0)}function f_(o,A,c){return o=o|0,A=A|0,c=c|0,bn[o&3](A|0,c|0)|0}function h_(o,A){return o=o|0,A=A|0,Pb(0),0}var bn=[h_,cT,lT,uT];return{___divdi3:dn,___muldi3:lt,___remdi3:pn,___uremdi3:Zr,_areNeighborCells:fT,_bitshift64Ashr:Vf,_bitshift64Lshr:se,_bitshift64Shl:he,_calloc:qt,_cellAreaKm2:Xb,_cellAreaM2:Yb,_cellAreaRads2:Kb,_cellToBoundary:kn,_cellToCenterChild:wf,_cellToChildPos:PT,_cellToChildren:wT,_cellToChildrenSize:vo,_cellToLatLng:di,_cellToLocalIj:qT,_cellToParent:p0,_cellToVertex:gr,_cellToVertexes:A_,_cellsToDirectedEdge:hT,_cellsToLinkedMultiPolygon:Wb,_childPosToCell:NT,_compactCells:ET,_constructCell:yT,_destroyLinkedMultiPolygon:VT,_directedEdgeToBoundary:wo,_directedEdgeToCells:mT,_edgeLengthKm:GT,_edgeLengthM:jT,_edgeLengthRads:UT,_emscripten_replace_memory:Bb,_free:be,_getBaseCellNumber:yf,_getDirectedEdgeDestination:pT,_getDirectedEdgeOrigin:dT,_getHexagonAreaAvgKm2:Sf,_getHexagonAreaAvgM2:OT,_getHexagonEdgeLengthAvgKm:BT,_getHexagonEdgeLengthAvgM:DT,_getIcosahedronFaces:Ef,_getIndexDigit:_T,_getNumCells:Gs,_getPentagons:_0,_getRes0Cells:tT,_getResolution:h0,_greatCircleDistanceKm:Co,_greatCircleDistanceM:kT,_greatCircleDistanceRads:FT,_gridDisk:sf,_gridDiskDistances:Af,_gridDistance:w0,_gridPathCells:WT,_gridPathCellsSize:QT,_gridRing:zb,_gridRingUnsafe:cf,_i64Add:pe,_i64Subtract:Mt,_isPentagon:nt,_isResClassIII:CT,_isValidCell:Us,_isValidDirectedEdge:gf,_isValidIndex:xT,_isValidVertex:kf,_latLngToCell:b0,_llvm_ctlz_i64:M0,_llvm_maxnum_f64:zf,_llvm_minnum_f64:Ws,_llvm_round_f64:Ks,_localIjToCell:HT,_malloc:ct,_maxFaceCount:LT,_maxGridDiskSize:Vb,_maxPolygonToCellsSize:Hb,_maxPolygonToCellsSizeExperimental:YT,_memcpy:Lr,_memmove:L0,_memset:mn,_originToDirectedEdges:l0,_pentagonCount:RT,_polygonToCells:Qb,_polygonToCellsExperimental:XT,_readInt64AsDoubleFromPointer:i_,_res0CellCount:eT,_reverseDirectedEdge:bf,_round:qf,_sbrk:gn,_sizeOfCellBoundary:$T,_sizeOfCoordIJ:n_,_sizeOfGeoLoop:e_,_sizeOfGeoPolygon:t_,_sizeOfH3Index:JT,_sizeOfLatLng:ZT,_sizeOfLinkedGeoPolygon:r_,_uncompactCells:vT,_uncompactCellsSize:ST,_vertexToLatLng:a_,dynCall_iii:f_,establishStackSpace:jb,stackAlloc:Db,stackRestore:Gb,stackSave:Ub}})({Math,Int8Array,Int32Array,Uint8Array,Float32Array,Float64Array},{a:Nn,b:w,c:C,d:bb,e:_b,f:Ju,g:Tb,h:xb,i:yb,j:mb,k:Xu,l:Zu,m:Yu,n:gb,o:pb,p:bo},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 Cb=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 $u=e.stackAlloc=fe.stackAlloc,Ib=e.stackRestore=fe.stackRestore,Mb=e.stackSave=fe.stackSave;e.dynCall_iii=fe.dynCall_iii;if(e.asm=fe,e.cwrap=$,e.setValue=D,e.getValue=k,Yr){Ku(Yr)||(Yr=d(Yr));hb(`memory initializer`);var n0=function(Z){Z.byteLength&&(Z=new Uint8Array(Z)),Ne.set(Z,R),e.memoryInitializerRequest&&delete e.memoryInitializerRequest.response,db(`memory initializer`)},ef=function(){m(Yr,n0,function(){throw`could not load memory initializer `+Yr})},tf=r0(Yr);if(tf)n0(tf.buffer);else if(e.memoryInitializerRequest){var rf=function(){var Z=e.memoryInitializerRequest,ae=Z.response;if(Z.status!==200&&Z.status!==0){var Te=r0(e.memoryInitializerRequestURL);if(Te)ae=Te.buffer;else{console.warn(`a problem seems to have happened with Module.memoryInitializerRequest, status: `+Z.status+`, retrying `+Yr),ef();return}}n0(ae)};e.memoryInitializerRequest.response?setTimeout(rf,0):e.memoryInitializerRequest.addEventListener(`load`,rf)}else ef()}var ks;yo=function Z(){ks||i0(),ks||(yo=Z)};function i0(Z){if(Z=Z||s,Pn>0||(fn(),Pn>0))return;function ae(){ks||(ks=!0,!W&&(ci(),To(),e.onRuntimeInitialized&&e.onRuntimeInitialized(),_o()))}e.setStatus?(e.setStatus(`Running...`),setTimeout(function(){setTimeout(function(){e.setStatus(``)},1),ae()},1)):ae()}e.run=i0;function Nn(Z){throw e.onAbort&&e.onAbort(Z),Z+=``,b(Z),_(Z),W=!0,`abort(`+Z+`). Build with -s ASSERTIONS=1 for more info.`}if(e.abort=Nn,e.preInit)for(typeof e.preInit==`function`&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();return i0(),r})(typeof Je==`object`?Je:{});var Ce=`number`;var Se=Ce;var Ci=Ce;var Me=Ce;var Le=Ce;var Nt=Ce;var ye=Ce;var Py=[[`sizeOfH3Index`,Ce],[`sizeOfLatLng`,Ce],[`sizeOfCellBoundary`,Ce],[`sizeOfGeoLoop`,Ce],[`sizeOfGeoPolygon`,Ce],[`sizeOfLinkedGeoPolygon`,Ce],[`sizeOfCoordIJ`,Ce],[`readInt64AsDoubleFromPointer`,Ce],[`isValidCell`,Ci,[Me,Le]],[`isValidIndex`,Ci,[Me,Le]],[`latLngToCell`,Se,[Ce,Ce,Nt,ye]],[`cellToLatLng`,Se,[Me,Le,ye]],[`cellToBoundary`,Se,[Me,Le,ye]],[`maxGridDiskSize`,Se,[Ce,ye]],[`gridDisk`,Se,[Me,Le,Ce,ye]],[`gridDiskDistances`,Se,[Me,Le,Ce,ye,ye]],[`gridRing`,Se,[Me,Le,Ce,ye]],[`gridRingUnsafe`,Se,[Me,Le,Ce,ye]],[`maxPolygonToCellsSize`,Se,[ye,Nt,Ce,ye]],[`polygonToCells`,Se,[ye,Nt,Ce,ye]],[`maxPolygonToCellsSizeExperimental`,Se,[ye,Nt,Ce,ye]],[`polygonToCellsExperimental`,Se,[ye,Nt,Ce,Ce,Ce,ye]],[`cellsToLinkedMultiPolygon`,Se,[ye,Ce,ye]],[`destroyLinkedMultiPolygon`,null,[ye]],[`compactCells`,Se,[ye,ye,Ce,Ce]],[`uncompactCells`,Se,[ye,Ce,Ce,ye,Ce,Nt]],[`uncompactCellsSize`,Se,[ye,Ce,Ce,Nt,ye]],[`isPentagon`,Ci,[Me,Le]],[`isResClassIII`,Ci,[Me,Le]],[`getBaseCellNumber`,Ce,[Me,Le]],[`getResolution`,Ce,[Me,Le]],[`getIndexDigit`,Ce,[Me,Le,Ce]],[`constructCell`,Se,[Ce,Ce,ye,ye]],[`maxFaceCount`,Se,[Me,Le,ye]],[`getIcosahedronFaces`,Se,[Me,Le,ye]],[`cellToParent`,Se,[Me,Le,Nt,ye]],[`cellToChildren`,Se,[Me,Le,Nt,ye]],[`cellToCenterChild`,Se,[Me,Le,Nt,ye]],[`cellToChildrenSize`,Se,[Me,Le,Nt,ye]],[`cellToChildPos`,Se,[Me,Le,Nt,ye]],[`childPosToCell`,Se,[Ce,Ce,Me,Le,Nt,ye]],[`areNeighborCells`,Se,[Me,Le,Me,Le,ye]],[`cellsToDirectedEdge`,Se,[Me,Le,Me,Le,ye]],[`getDirectedEdgeOrigin`,Se,[Me,Le,ye]],[`getDirectedEdgeDestination`,Se,[Me,Le,ye]],[`isValidDirectedEdge`,Ci,[Me,Le]],[`directedEdgeToCells`,Se,[Me,Le,ye]],[`originToDirectedEdges`,Se,[Me,Le,ye]],[`directedEdgeToBoundary`,Se,[Me,Le,ye]],[`reverseDirectedEdge`,Se,[Me,Le,ye]],[`gridDistance`,Se,[Me,Le,Me,Le,ye]],[`gridPathCells`,Se,[Me,Le,Me,Le,ye]],[`gridPathCellsSize`,Se,[Me,Le,Me,Le,ye]],[`cellToLocalIj`,Se,[Me,Le,Me,Le,Ce,ye]],[`localIjToCell`,Se,[Me,Le,ye,Ce,ye]],[`getHexagonAreaAvgM2`,Se,[Nt,ye]],[`getHexagonAreaAvgKm2`,Se,[Nt,ye]],[`getHexagonEdgeLengthAvgM`,Se,[Nt,ye]],[`getHexagonEdgeLengthAvgKm`,Se,[Nt,ye]],[`greatCircleDistanceM`,Ce,[ye,ye]],[`greatCircleDistanceKm`,Ce,[ye,ye]],[`greatCircleDistanceRads`,Ce,[ye,ye]],[`cellAreaM2`,Se,[Me,Le,ye]],[`cellAreaKm2`,Se,[Me,Le,ye]],[`cellAreaRads2`,Se,[Me,Le,ye]],[`edgeLengthM`,Se,[Me,Le,ye]],[`edgeLengthKm`,Se,[Me,Le,ye]],[`edgeLengthRads`,Se,[Me,Le,ye]],[`getNumCells`,Se,[Nt,ye]],[`getRes0Cells`,Se,[ye]],[`res0CellCount`,Ce],[`getPentagons`,Se,[Ce,ye]],[`pentagonCount`,Ce],[`cellToVertex`,Se,[Me,Le,Ce,ye]],[`cellToVertexes`,Se,[Me,Le,ye]],[`vertexToLatLng`,Se,[Me,Le,ye]],[`isValidVertex`,Ci,[Me,Le]]];var Ny=0;var Fy=1;var ky=2;var Oy=3;var Kd=4;var By=5;var Dy=6;var Uy=7;var Gy=8;var jy=9;var Vy=10;var zy=11;var qy=12;var Hy=13;var Qy=14;var Wy=15;var Ky=16;var Xy=17;var Yy=18;var Jy=19;var mt={};mt[Ny]=`Success`;mt[Fy]=`The operation failed but a more specific error is not available`;mt[ky]=`Argument was outside of acceptable range`;mt[Oy]=`Latitude or longitude arguments were outside of acceptable range`;mt[Kd]=`Resolution argument was outside of acceptable range`;mt[By]=`Cell argument was not valid`;mt[Dy]=`Directed edge argument was not valid`;mt[Uy]=`Undirected edge argument was not valid`;mt[Gy]=`Vertex argument was not valid`;mt[jy]=`Pentagon distortion was encountered`;mt[Vy]=`Duplicate input`;mt[zy]=`Cell arguments were not neighbors`;mt[qy]=`Cell arguments had incompatible resolutions`;mt[Hy]=`Memory allocation failed`;mt[Qy]=`Bounds of provided memory were insufficient`;mt[Wy]=`Mode or flags argument was not valid`;mt[Ky]=`Index argument was not valid`;mt[Xy]=`Base cell number was outside of acceptable range`;mt[Yy]=`Child indexing digits invalid`;mt[Jy]=`Child indexing digits refer to a deleted subsequence`;var Xd=1e3;var Zy=1001;var Yd=1002;var xA={};xA[Xd]=`Unknown unit`;xA[Zy]=`Array length out of bounds`;xA[Yd]=`Got unexpected null value for H3 index`;var $y=`Unknown error`;function Jd(r,e,t){var i=t&&`value`in t,s=new Error((r[e]||$y)+` (code: `+e+(i?`, value: `+t.value:``)+`)`);return s.code=e,s}function Zd(r,e){return Jd(mt,r,arguments.length===2?{value:e}:{})}function $d(r,e){return Jd(xA,r,arguments.length===2?{value:e}:{})}function zn(r){if(r!==0)throw Zd(r)}var Et={};Py.forEach(function(e){Et[e[0]]=Je.cwrap.apply(Je,e)});var Ii=16;var ep=4;var Hd=4;var wn=8;var ex=8;var _A=Et.sizeOfH3Index();var tp=Et.sizeOfLatLng();var tx=Et.sizeOfCellBoundary();Et.sizeOfGeoPolygon();Et.sizeOfGeoLoop();var rx=Et.sizeOfLinkedGeoPolygon();Et.sizeOfCoordIJ();var Qd={m:`m`,m2:`m2`,km:`km`,km2:`km2`,rads:`rads`,rads2:`rads2`};function nx(r){if(typeof r!=`number`||r<0||r>15||Math.floor(r)!==r)throw Zd(Kd,r);return r}function ix(r){if(!r)throw $d(Yd);return r}Math.pow(2,32)-1;Math.pow(2,31)-1;var ox=/[^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`||ox.test(r))return[0,0];var e=parseInt(r.substring(0,r.length-8),Ii);return[parseInt(r.substring(r.length-8),Ii),e]}function Wd(r){if(r>=0)return r.toString(Ii);r=r&2147483647;var e=rp(8,r.toString(Ii));return e=(parseInt(e[0],Ii)+8).toString(Ii)+e.substring(1),e}function sx(r,e){return Wd(e)+rp(8,Wd(r))}function rp(r,e){for(var t=r-e.length,i=``,s=0;s<t;s++)i+=`0`;return i=i+e,i}function Ax(r,e){e===void 0&&(e=0);var t=Je.getValue(r+_A*e,`i32`),i=Je.getValue(r+_A*e+ep,`i32`);return i?sx(t,i):null}function ax(r,e){return e===void 0&&(e=0),Je.getValue(r+wn*e,`double`)}function cx(r){return Et.readInt64AsDoubleFromPointer(r)}function lx(r,e,t){Je.HEAPU32.set(qn(r),e/ep+2*t)}function ux(r,e){for(var t=e.length,i=0;i<t;i++)lx(e[i],r,i)}function yA(r){return px(Je.getValue(r,`double`))}function ac(r){return[yA(r),yA(r+wn)]}function np(r){return[yA(r+wn),yA(r)]}function fx(r,e,t){for(var i=Je.getValue(r,`i32`),s=r+wn,a=[],d=e?np:ac,m=0;m<i*2;m+=2)a.push(d(s+wn*m));return t&&a.push(a[0]),a}function hx(r,e){for(var t=[],i=e?np:ac,s,a,d,m;r;){for(t.push(s=[]),a=Je.getValue(r,`i8*`);a;){for(s.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+Hd*2,`i8*`)}r=Je.getValue(r+Hd*2,`i8*`)}return t}function ip(r){var e=qn(r),t=e[0],i=e[1];return!!Et.isPentagon(t,i)}function op(r){var e=qn(r),t=e[0],i=e[1];return Et.isValidCell(t,i)?Et.getResolution(t,i):-1}function sp(r,e,t){var i=Je._malloc(tp);Je.HEAPF64.set([r,e].map(dx),i/wn);var s=Je._malloc(_A);try{return zn(Et.latLngToCell(i,t,s)),ix(Ax(s))}finally{Je._free(s),Je._free(i)}}function Do(r){var e=Je._malloc(tp),t=qn(r),i=t[0],s=t[1];try{return zn(Et.cellToLatLng(i,s,e)),ac(e)}finally{Je._free(e)}}function Ap(r,e){var t=Je._malloc(tx),i=qn(r),s=i[0],a=i[1];try{return zn(Et.cellToBoundary(s,a,t)),fx(t,e,e)}finally{Je._free(t)}}function ap(r,e){if(!r||!r.length)return[];var t=r.length,i=Je._calloc(t,_A);ux(i,r);var s=Je._calloc(rx);try{return zn(Et.cellsToLinkedMultiPolygon(i,t,s)),hx(s,e)}finally{Et.destroyLinkedMultiPolygon(s),Je._free(s),Je._free(i)}}function cp(r,e){var t=qn(r),i=t[0],s=t[1],a=qn(e),d=a[0],m=a[1],b=Je._malloc(ex);try{return zn(Et.gridDistance(i,s,d,m,b)),cx(b)}finally{Je._free(b)}}function lp(r,e){nx(r);var t=Je._malloc(wn);try{switch(e){case Qd.m:zn(Et.getHexagonEdgeLengthAvgM(r,t));break;case Qd.km:zn(Et.getHexagonEdgeLengthAvgKm(r,t));break;default:throw $d(Xd,e)}return ax(t)}finally{Je._free(t)}}function dx(r){return r*Math.PI/180}function px(r){return r*180/Math.PI}function wA(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 mx(r,e,t){let[i,s]=Do(r),a=e.length;wA(e,s);let d=e[0]===e[a-1]?a-1:a;for(let m=0;m<d;m++)e[m][0]=Oi$1(s,e[m][0],t),e[m][1]=Oi$1(i,e[m][1],t)}function up(r,e,t){let[s,a]=Do(r(e,t));return[a,s]}function cc(r,e=1){let t=Ap(r,!0);return e!==1?mx(r,t,e):wA(t),t}function EA(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 gx={getPentagon:{type:`accessor`,value:r=>r.pentagon}};var Uo=class extends Fr{indexToBounds(){let{data:e,getPentagon:t}=this.props;return{data:e,_normalize:!1,_windingOrder:`CCW`,positionFormat:`XY`,getPolygon:(i,s)=>{let a=t(i,s);return EA(jd(typeof a==`string`?Vd(a):a,{closedRing:!0,segments:`auto`}))}}}};Uo.layerName=`A5Layer`;Uo.defaultProps=gx;var bx=Uo;function Tx(r){return typeof r==`string`?r.charAt(0).toLowerCase()+r.slice(1):r}function vA(r){if(Array.isArray(r))return r.map(e=>vA(e));if(r&&typeof r==`object`){let e={};for(let[t,i]of Object.entries(r))e[Tx(t)]=vA(i);return e}return r}var fp=`: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 _x=fp+`\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040`;var yx=`[`+fp+`][`+_x+`]*`;var xx=new RegExp(`^`+yx+`$`);function hp(r,e){let t=[],i=e.exec(r);for(;i;){let s=[];s.startIndex=e.lastIndex-i[0].length;let a=i.length;for(let d=0;d<a;d++)s.push(i[d]);t.push(s),i=e.exec(r)}return t}var lc=function(r){let e=xx.exec(r);return!(e===null||typeof e>`u`)};function dp(r){return typeof r<`u`}var Go=[`hasOwnProperty`,`toString`,`valueOf`,`__defineGetter__`,`__defineSetter__`,`__lookupGetter__`,`__lookupSetter__`];var SA=[`__proto__`,`constructor`,`prototype`];var wx={allowBooleanAttributes:!1,unpairedTags:[]};function bp(r,e){e=Object.assign({},wx,e);let t=[],i=!1,s=!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=pp(r,a),a.err)return a}else if(r[a]===`<`){let d=a;if(a++,r[a]===`!`){a=mp(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--),!Rx(b)){let w;return b.trim().length===0?w=`Invalid space after '<'.`:w=`Tag '`+b+`' is an invalid name.`,gt(`InvalidTag`,w,Kt(r,a))}let _=Sx(r,a);if(_===!1)return gt(`InvalidAttr`,`Attributes for '`+b+`' have open quote.`,Kt(r,a));let x=_.value;if(a=_.index,x[x.length-1]===`/`){let w=a-x.length;x=x.substring(0,x.length-1);let C=gp(x,e);if(C===!0)i=!0;else return gt(C.err.code,C.err.msg,Kt(r,w+C.err.line))}else if(m)if(_.tagClosed){if(x.trim().length>0)return gt(`InvalidTag`,`Closing tag '`+b+`' can't have attributes or invalid starting.`,Kt(r,d));if(t.length===0)return gt(`InvalidTag`,`Closing tag '`+b+`' has not been opened.`,Kt(r,d));{let w=t.pop();if(b!==w.tagName){let C=Kt(r,w.tagStartPos);return gt(`InvalidTag`,`Expected closing tag '`+w.tagName+`' (opened in line `+C.line+`, col `+C.col+`) instead of closing tag '`+b+`'.`,Kt(r,d))}t.length==0&&(s=!0)}}else return gt(`InvalidTag`,`Closing tag '`+b+`' doesn't have proper closing.`,Kt(r,a));else{let w=gp(x,e);if(w!==!0)return gt(w.err.code,w.err.msg,Kt(r,a-x.length+w.err.line));if(s===!0)return gt(`InvalidXml`,`Multiple possible root nodes found.`,Kt(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=mp(r,a);continue}else if(r[a+1]===`?`){if(a=pp(r,++a),a.err)return a}else break;else if(r[a]===`&`){let w=Mx(r,a);if(w==-1)return gt(`InvalidChar`,`char '&' is not expected.`,Kt(r,a));a=w}else if(s===!0&&!Mi(r[a]))return gt(`InvalidXml`,`Extra text at the end`,Kt(r,a));r[a]===`<`&&a--}}else{if(Mi(r[a]))continue;return gt(`InvalidChar`,`char '`+r[a]+`' is not expected.`,Kt(r,a))}if(i){if(t.length==1)return gt(`InvalidTag`,`Unclosed tag '`+t[0].tagName+`'.`,Kt(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 Mi(r){return r===` `||r===` `||r===`
|
|
4
|
+
`||r===`\r`}function pp(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.`,Kt(r,e));if(r[e]==`?`&&r[e+1]==`>`){e++;break}else continue}return e}function mp(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 Ex=`"`;var vx=`'`;function Sx(r,e){let t=``,i=``,s=!1;for(;e<r.length;e++){if(r[e]===Ex||r[e]===vx)i===``?i=r[e]:i!==r[e]||(i=``);else if(r[e]===`>`&&i===``){s=!0;break}t+=r[e]}return i!==``?!1:{value:t,index:e,tagClosed:s}}function Cx(r){let e=[],t=r.length,i=0;for(;i<t;){let s=i;for(;i<t&&Mi(r[i]);)i++;if(i>=t)break;if(r[i]===`=`){i=s+1;continue}let a=r.slice(s,i),d=i;for(;i<t&&!Mi(r[i])&&r[i]!==`=`;)i++;let m=r.slice(d,i),b,_=i;for(;_<t&&Mi(r[_]);)_++;_<t&&r[_]===`=`&&(b=r.slice(i,_+1),i=_+1);let x,w,C=i;for(;C<t&&Mi(r[C]);)C++;if(C<t&&(r[C]===`"`||r[C]===`'`)){let D=C+1,k=r.indexOf(r[C],D);k!==-1&&(x=r[C],w=r.slice(D,k),i=k+1)}let R={startIndex:s};R[1]=a,R[2]=m,R[3]=b,R[4]=x!==void 0?!0:void 0,R[5]=x,R[6]=w,e.push(R)}return e}function gp(r,e){let t=Cx(r),i={};for(let s=0;s<t.length;s++){if(t[s][1].length===0)return gt(`InvalidAttr`,`Attribute '`+t[s][2]+`' has no space in starting.`,jo(t[s]));if(t[s][3]!==void 0&&t[s][4]===void 0)return gt(`InvalidAttr`,`Attribute '`+t[s][2]+`' is without value.`,jo(t[s]));if(t[s][3]===void 0&&!e.allowBooleanAttributes)return gt(`InvalidAttr`,`boolean attribute '`+t[s][2]+`' is not allowed.`,jo(t[s]));let a=t[s][2];if(!Lx(a))return gt(`InvalidAttr`,`Attribute '`+a+`' is an invalid name.`,jo(t[s]));if(!Object.prototype.hasOwnProperty.call(i,a))i[a]=1;else return gt(`InvalidAttr`,`Attribute '`+a+`' is repeated.`,jo(t[s]))}return!0}function Ix(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 Mx(r,e){if(e++,r[e]===`;`)return-1;if(r[e]===`#`)return e++,Ix(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 Lx(r){return lc(r)}function Rx(r){return lc(r)}function Kt(r,e){let t=r.substring(0,e).split(/\r?\n/);return{line:t.length,col:t[t.length-1].length+1}}function jo(r){return r.startIndex+r[1].length}var uc={cent:`¢`,pound:`£`,curren:`¤`,yen:`¥`,euro:`€`,dollar:`$`,fnof:`ƒ`,inr:`₹`,af:`؋`,birr:`ብር`,peso:`₱`,rub:`₽`,won:`₩`,yuan:`¥`,cedil:`¸`};var Vo={amp:`&`,apos:`'`,gt:`>`,lt:`<`,quot:`"`};var fc={nbsp:`\xA0`,copy:`©`,reg:`®`,trade:`™`,mdash:`—`,ndash:`–`,hellip:`…`,laquo:`«`,raquo:`»`,lsquo:`‘`,rsquo:`’`,ldquo:`“`,rdquo:`”`,bull:`•`,para:`¶`,sect:`§`,deg:`°`,frac12:`½`,frac14:`¼`,frac34:`¾`};var Li=Object.freeze({ALLOW:`allow`,BLOCK:`block`,THROW:`throw`});var Px=new Set(`!?\\\\/[]$%{}^&*()<>|+`);function Tp(r){if(r[0]===`#`)throw new Error(`[EntityReplacer] Invalid character '#' in entity name: "${r}"`);for(let e of r)if(Px.has(e))throw new Error(`[EntityReplacer] Invalid character '${e}' in entity name: "${r}"`);return r}function zo(...r){let e=Object.create(null);for(let t of r)if(t)for(let i of Object.keys(t)){let s=t[i];if(typeof s==`string`)e[i]=s;else if(s&&typeof s==`object`&&s.val!==void 0){let a=s.val;typeof a==`string`&&(e[i]=a)}}return e}var Hn=`external`;var CA=`base`;var hc=`all`;function Nx(r){return!r||r===Hn?new Set([Hn]):r===hc?new Set([hc]):r===CA?new Set([CA]):Array.isArray(r)?new Set(r):new Set([Hn])}var rr=Object.freeze({allow:0,leave:1,remove:2,throw:3});var Fx=new Set([9,10,13]);function kx(r){if(!r)return{xmlVersion:1,onLevel:rr.allow,nullLevel:rr.remove};let e=r.xmlVersion===1.1?1.1:1,t=rr[r.onNCR]??rr.allow,i=rr[r.nullNCR]??rr.remove;return{xmlVersion:e,onLevel:t,nullLevel:Math.max(i,rr.remove)}}var Ri=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=Nx(this._limit.applyLimitsTo??Hn),this._numericAllowed=e.numericAllowed??!0,this._baseMap=zo(Vo,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=kx(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,s){if(!e)return!0;let a=e(t,i);if(a===Li.BLOCK)return!1;if(a===Li.THROW)throw new Error(`[EntityDecoder] Registration of ${s} entity "&${t};" was rejected by hook`);return!0}setExternalEntities(e){if(e)for(let s of Object.keys(e))Tp(s);if(!this._onExternalEntity){this._externalMap=zo(e);return}let t=zo(e),i=Object.create(null);for(let[s,a]of Object.entries(t))this._applyRegistrationHook(this._onExternalEntity,s,a,`external`)&&(i[s]=a);this._externalMap=i}addExternalEntity(e,t){Tp(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=zo(e);return}let t=zo(e),i=Object.create(null);for(let[s,a]of Object.entries(t))this._applyRegistrationHook(this._onInputEntity,s,a,`input`)&&(i[s]=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=[],s=e.length,a=0,d=0,m=this._maxTotalExpansions>0,b=this._maxExpandedLength>0,_=m||b;for(;d<s;){if(e.charCodeAt(d)!==38){d++;continue}let w=d+1;for(;w<s&&e.charCodeAt(w)!==59&&w-d<=32;)w++;if(w>=s||e.charCodeAt(w)!==59){d++;continue}let C=e.slice(d+1,w);if(C.length===0){d++;continue}let R,D;if(this._removeSet.has(C))R=``,D===void 0&&(D=Hn);else if(this._leaveSet.has(C)){d++;continue}else if(C.charCodeAt(0)===35){let k=this._resolveNCR(C);if(k===void 0){d++;continue}R=k,D=CA}else{let k=this._resolveName(C);R=k?.value,D=k?.tier}if(R===void 0){d++;continue}if(d>a&&i.push(e.slice(a,d)),i.push(R),a=w+1,d=a,_&&this._tierCounts(D)){if(m&&(this._totalExpansions++,this._totalExpansions>this._maxTotalExpansions))throw new Error(`[EntityReplacer] Entity expansion count limit exceeded: ${this._totalExpansions} > ${this._maxTotalExpansions}`);if(b){let k=R.length-(C.length+2);if(k>0&&(this._expandedLength+=k,this._expandedLength>this._maxExpandedLength))throw new Error(`[EntityReplacer] Expanded content length limit exceeded: ${this._expandedLength} > ${this._maxExpandedLength}`)}}}a<s&&i.push(e.slice(a));let x=i.length===0?e:i.join(``);return this._postCheck(x,t)}_tierCounts(e){return this._limitTiers.has(hc)?!0:this._limitTiers.has(e)}_resolveName(e){if(e in this._inputMap)return{value:this._inputMap[e],tier:Hn};if(e in this._externalMap)return{value:this._externalMap[e],tier:Hn};if(e in this._baseMap)return{value:this._baseMap[e],tier:CA}}_classifyNCR(e){return e===0?this._ncrNullLevel:e>=55296&&e<=57343||this._ncrXmlVersion===1&&e>=1&&e<=31&&!Fx.has(e)?rr.remove:-1}_applyNCRAction(e,t,i){switch(e){case rr.allow:return String.fromCodePoint(i);case rr.remove:return``;case rr.leave:return;case rr.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 s=this._classifyNCR(i);if(!this._numericAllowed&&s<rr.remove)return;let a=s===-1?this._ncrOnLevel:Math.max(this._ncrOnLevel,s);return this._applyNCRAction(a,e,i)}};var _p=r=>Go.includes(r)?`__`+r:r;var Ox={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:_p};function Bx(r,e){if(typeof r!=`string`)return;let t=r.toLowerCase();if(Go.some(i=>t===i.toLowerCase()))throw new Error(`[SECURITY] Invalid ${e}: "${r}" is a reserved JavaScript keyword that could cause prototype pollution`);if(SA.some(i=>t===i.toLowerCase()))throw new Error(`[SECURITY] Invalid ${e}: "${r}" is a reserved JavaScript keyword that could cause prototype pollution`)}function yp(r,e){return typeof r==`boolean`?{enabled:r,maxEntitySize:1e4,maxExpansionDepth:1e4,maxTotalExpansions:1/0,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??1/0),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`}:yp(!0)}var xp=function(r){let e=Object.assign({},Ox,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:s}of t)i&&Bx(i,s);return e.onDangerousProperty===null&&(e.onDangerousProperty=_p),e.processEntities=yp(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 nr=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 wp=`:A-Za-z_À-ÖØ-öø-˿Ͱ-ͽͿ-҆҈--⁰-Ⰰ-、-豈-﷏ﷰ-�`;var Dx=wp+`\\-\\.\\d·̀-ͯ‿-⁀`;var Ep=`:A-Za-z_À-˿Ͱ-ͽͿ-҆҈--⁰-Ⰰ-、-豈-﷏ﷰ-�𐀀-`;var Ux=Ep+`\\-\\.\\d·̀-ͯ҇‿-⁀`;var dc=(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 Gx=dc(wp,Dx);var jx=dc(Ep,Ux,`u`);var vp=`:A-Za-z_`;var zx=dc(vp,vp+`\\-\\.\\d`);var qx=(r=`1.0`,e=!1)=>e?zx:r===`1.1`?jx:Gx;var pc=(r,{xmlVersion:e=`1.0`,asciiOnly:t=!1}={})=>qx(e,t).qName.test(r);var Ho=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),s=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,_=``;for(;t<e.length;t++){if(b!==null){e[t]===b&&(b=null),_+=e[t];continue}if(!d&&!m&&(e[t]===`"`||e[t]===`'`)){b=e[t],_+=e[t];continue}if(e[t]===`<`&&!m){if(d&&Wn(e,`!ENTITY`,t)){t+=7;let x,w;if([x,w,t]=this.readEntityExp(e,t+1,this.suppressValidationErr),w.indexOf(`&`)===-1){if(this.options.enabled!==!1&&this.options.maxEntityCount!=null&&s>=this.options.maxEntityCount)throw new Error(`Entity count (${s+1}) exceeds maximum allowed (${this.options.maxEntityCount})`);i[x]=w,s++}}else if(d&&Wn(e,`!ELEMENT`,t)){t+=8;let{index:x}=this.readElementExp(e,t+1);t=x}else if(d&&Wn(e,`!ATTLIST`,t))t+=8;else if(d&&Wn(e,`!NOTATION`,t)){t+=9;let{index:x}=this.readNotationExp(e,t+1,this.suppressValidationErr);t=x}else if(Wn(e,`!--`,t))m=!0;else throw new Error(`Invalid DOCTYPE`);a++,_=``}else if(e[t]===`>`){if(m?e[t-1]===`-`&&e[t-2]===`-`&&(m=!1,a--):a--,a===0)break}else e[t]===`[`?d=!0:_+=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=ir(e,t);let i=t;for(;t<e.length&&!/\s/.test(e[t])&&e[t]!==`"`&&e[t]!==`'`;)t++;let s=e.substring(i,t);if(qo(s,{xmlVersion:this.xmlVersion}),t=ir(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 "${s}" size (${a.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`);return t--,[s,a,t]}readNotationExp(e,t){t=ir(e,t);let i=t;for(;t<e.length&&!/\s/.test(e[t]);)t++;let s=e.substring(i,t);!this.suppressValidationErr&&qo(s,{xmlVersion:this.xmlVersion}),t=ir(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=ir(e,t);let d=null,m=null;if(a===`PUBLIC`)[t,d]=this.readIdentifierVal(e,t,`publicIdentifier`),t=ir(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:s,publicIdentifier:d,systemIdentifier:m,index:--t}}readIdentifierVal(e,t,i){let s=``,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(s=e.substring(d,t),e[t]!==a)throw new Error(`Unterminated ${i} value`);return t++,[t,s]}readElementExp(e,t){t=ir(e,t);let i=t;for(;t<e.length&&!/\s/.test(e[t]);)t++;let s=e.substring(i,t);if(!this.suppressValidationErr&&!pc(s,{xmlVersion:this.xmlVersion}))throw new Error(`Invalid element name: "${s}"`);t=ir(e,t);let a=``;if(e[t]===`E`&&Wn(e,`MPTY`,t))t+=4;else if(e[t]===`A`&&Wn(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:s,contentModel:a.trim(),index:t}}readAttlistExp(e,t){t=ir(e,t);let i=t;for(;t<e.length&&!/\s/.test(e[t]);)t++;let s=e.substring(i,t);for(qo(s,{xmlVersion:this.xmlVersion}),t=ir(e,t),i=t;t<e.length&&!/\s/.test(e[t]);)t++;let a=e.substring(i,t);if(!qo(a,{xmlVersion:this.xmlVersion}))throw new Error(`Invalid attribute name: "${a}"`);t=ir(e,t);let d=``;if(e.substring(t,t+8).toUpperCase()===`NOTATION`){if(d=`NOTATION`,t+=8,t=ir(e,t),e[t]!==`(`)throw new Error(`Expected '(', found "${e[t]}"`);t++;let b=[];for(;t<e.length&&e[t]!==`)`;){let _=t;for(;t<e.length&&e[t]!==`|`&&e[t]!==`)`;)t++;let x=e.substring(_,t);if(x=x.trim(),!qo(x,{xmlVersion:this.xmlVersion}))throw new Error(`Invalid notation name: "${x}"`);b.push(x),e[t]===`|`&&(t++,t=ir(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=ir(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:s,attributeName:a,attributeType:d,defaultValue:m,index:t}}};var ir=(r,e)=>{for(;e<r.length&&/\s/.test(r[e]);)e++;return e};function Wn(r,e,t){for(let i=0;i<e.length;i++)if(e[i]!==r[t+i+1])return!1;return!0}function qo(r,e){if(pc(r,{xmlVersion:e}))return r;throw new Error(`Invalid entity name ${r}`)}var Hx=[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 IA=255;var MA=new Map;var Sp=65535;var Cp=1632;var Pi=Cp;var Qx=Sp-Cp+1;var LA=new Uint8Array(Qx).fill(IA);for(let r of Hx)for(let e=0;e<10;e++){let t=r+e;t<=Sp?LA[t-Pi]=e:MA.set(t,e)}var Ip=48;var Mp=57;var Lp=45;var RA=new Set([8722,65293,65123]);function Wx(r){if(typeof r!=`string`)return r;let e=r.length;if(e===0)return r;let t=-1;for(let s=0;s<e;s++){let a=r.charCodeAt(s);if(!(a>=Ip&&a<=Mp||a===Lp)){if(a<Pi){if(RA.has(a)){t=s;break}continue}if(a>=55296&&a<=56319){if(s+1<e){let d=r.charCodeAt(s+1);if(d>=56320&&d<=57343){let m=65536+(a-55296<<10)+(d-56320);if(MA.has(m)){t=s;break}}}continue}if(LA[a-Pi]!==IA||RA.has(a)){t=s;break}}}if(t===-1)return r;let i=[];t>0&&i.push(r.slice(0,t));for(let s=t;s<e;s++){let a=r.charCodeAt(s);if(a>=Ip&&a<=Mp||a===Lp){i.push(r[s]);continue}if(a<Pi){i.push(RA.has(a)?`-`:r[s]);continue}if(a>=55296&&a<=56319){if(s+1<e){let m=r.charCodeAt(s+1);if(m>=56320&&m<=57343){let b=65536+(a-55296<<10)+(m-56320),_=MA.get(b);if(_!==void 0){i.push(String.fromCharCode(_+48)),s++;continue}}}i.push(r[s]);continue}if(RA.has(a)){i.push(`-`);continue}let d=LA[a-Pi];i.push(d!==IA?String.fromCharCode(d+48):r[s])}return i.join(``)}var Rp=Wx;var Kx=/^[-+]?0x[a-fA-F0-9]+$/;var Xx=/^0b[01]+$/;var Yx=/^0o[0-7]+$/;var Jx=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/;var Zx={hex:!0,binary:!1,octal:!1,leadingZeros:!0,decimalPoint:`.`,eNotation:!0,infinity:`original`,unicode:!1};function gc(r,e={}){if(e=Object.assign({},Zx,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=Rp(t),t===`0`))return 0;if(e.hex&&Kx.test(t))return mc(t,16);if(e.binary&&Xx.test(t))return mc(t,2);if(e.octal&&Yx.test(t))return mc(t,8);if(isFinite(t)){if(t.includes(`e`)||t.includes(`E`))return ew(r,t,e);{let i=Jx.exec(t);if(i){let s=i[1]||``,a=i[2],d=tw(i[3]),m=s?t[a.length+1]===`.`:t[a.length]===`.`;if(!e.leadingZeros&&(a.length>1||a.length===1&&!m))return r;{let b=Number(t),_=String(b);if(b===0)return b;if(_.search(/[eE]/)!==-1)return e.eNotation?b:r;if(t.indexOf(`.`)!==-1)return _===`0`||_===d||_===`${s}${d}`?b:r;let x=a?d:t;return a?x===_||s+x===_?b:r:x===_||x===s+_?b:r}}else return r}}else{let i=Number(t);return Number.isNaN(i)?r:rw(r,i,e)}}var $x=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/;function ew(r,e,t){if(!t.eNotation)return r;let i=e.match($x);if(i){let s=i[1]||``,a=i[3].indexOf(`e`)===-1?`E`:`e`,d=i[2],m=s?e[d.length+1]===a:e[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?Number(e):r:Number(e)}else return r}function tw(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 mc(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 rw(r,e,t){let i=e===1/0;switch(t.infinity.toLowerCase()){case`null`:return null;case`infinity`:return e;case`string`:return i?`Infinity`:`-Infinity`;default:return r}}function bc(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 Kn=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(s=>s.type===`deep-wildcard`),this._hasAttributeCondition=this.segments.some(s=>s.attrName!==void 0),this._hasPositionSelector=this.segments.some(s=>s.position!==void 0)}_parse(e){let t=[],i=0,s=``;for(;i<e.length;)e[i]===this.separator?i+1<e.length&&e[i+1]===this.separator?(s.trim()&&(t.push(this._parseSegment(s.trim())),s=``),t.push({type:`deep-wildcard`}),i+=2):(s.trim()&&t.push(this._parseSegment(s.trim())),s=``,i++):(s+=e[i],i++);return s.trim()&&t.push(this._parseSegment(s.trim())),t}_parseSegment(e){let t={type:`tag`},i=null,s=e,a=e.match(/^([^\[]+)(\[[^\]]*\])(.*)$/);if(a&&(s=a[1]+a[3],a[2])){let x=a[2].slice(1,-1);x&&(i=x)}let d,m=s;if(s.includes(`::`)){let x=s.indexOf(`::`);if(d=s.substring(0,x).trim(),m=s.substring(x+2).trim(),!d)throw new Error(`Invalid namespace in pattern: ${e}`)}let b,_=null;if(m.includes(`:`)){let x=m.lastIndexOf(`:`),w=m.substring(0,x).trim(),C=m.substring(x+1).trim();[`first`,`last`,`odd`,`even`].includes(C)||/^nth\(\d+\)$/.test(C)?(b=w,_=C):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 x=i.indexOf(`=`);t.attrName=i.substring(0,x).trim(),t.attrValue=i.substring(x+1).trim()}else t.attrName=i.trim();if(_){let x=_.match(/^nth\((\d+)\)$/);x?(t.position=`nth`,t.positionValue=parseInt(x[1],10)):t.position=_}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 Ni=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,s=e.segments[e.segments.length-1]?.tag;if(!s||s===`*`)this._wildcardByDepth.has(t)||this._wildcardByDepth.set(t,[]),this._wildcardByDepth.get(t).push(e);else{let a=`${t}:${s}`;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(),s=`${t}:${i}`,a=this._byDepthAndTag.get(s);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 Tc=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 Fi=class{constructor(e={}){this.separator=e.separator||`.`,this.path=[],this.siblingStacks=[],this._pathStringCache=null,this._view=new Tc(this),this._keptAttrs=[]}push(e,t=null,i=null,s=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,_=d.total;d.counts.set(m,b+1),d.total++;let x={tag:e,position:_,counter:b};i!=null&&(x.namespace=i),t!=null&&(x.values=t),this.path.push(x);let w=this.path.length,C=s!==null?s.keep:null;if(C!=null&&C.length>0&&t)for(let R=0;R<C.length;R++){let D=C[R];t[D]!==void 0&&this._keptAttrs.push({depth:w,name:D,value:t[D]})}}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 s=e[i];if(s.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(s,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 s=t.counter??0;if(e.position===`first`&&s!==0)return!1;if(e.position===`odd`&&s%2!==1)return!1;if(e.position===`even`&&s%2!==0)return!1;if(e.position===`nth`&&s!==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 ki=[{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 Oi=[{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 _c=[{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 Qo=[{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 yc=[{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 xc=[{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 hr=`["'\\s]*:`;var wc=[{id:`nosql-where-operator`,description:`$where — executes arbitrary JavaScript server-side in MongoDB`,pattern:new RegExp(`\\$where${hr}`,`i`)},{id:`nosql-ne-operator`,description:`$ne — "not equal" operator used to bypass equality checks`,pattern:new RegExp(`\\$ne${hr}`,`i`)},{id:`nosql-gt-operator`,description:`$gt — "greater than" used to bypass password/value checks`,pattern:new RegExp(`\\$gte?${hr}`,`i`)},{id:`nosql-lt-operator`,description:`$lt / $lte — "less than" bypass variants`,pattern:new RegExp(`\\$lte?${hr}`,`i`)},{id:`nosql-regex-operator`,description:`$regex — can be used to extract data character by character (blind injection)`,pattern:new RegExp(`\\$regex${hr}`,`i`)},{id:`nosql-or-operator`,description:`$or — logical OR; used to create always-true conditions`,pattern:new RegExp(`\\$or${hr}\\s*\\[`,`i`)},{id:`nosql-and-operator`,description:`$and — logical AND operator injection`,pattern:new RegExp(`\\$and${hr}\\s*\\[`,`i`)},{id:`nosql-nor-operator`,description:`$nor — logical NOR operator injection`,pattern:new RegExp(`\\$nor${hr}\\s*\\[`,`i`)},{id:`nosql-exists-operator`,description:`$exists — can enumerate fields to determine schema`,pattern:new RegExp(`\\$exists${hr}`,`i`)},{id:`nosql-in-operator`,description:`$in — matches any value in a list; can enumerate values`,pattern:new RegExp(`\\$in${hr}\\s*\\[`,`i`)},{id:`nosql-expr-operator`,description:`$expr — allows aggregation expressions in queries (MongoDB 3.6+)`,pattern:new RegExp(`\\$expr${hr}`,`i`)},{id:`nosql-function-operator`,description:`$function — executes arbitrary JavaScript in MongoDB 4.4+`,pattern:new RegExp(`\\$function${hr}`,`i`)},{id:`nosql-accumulator-operator`,description:`$accumulator — custom aggregation with arbitrary JS execution`,pattern:new RegExp(`\\$accumulator${hr}`,`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 Ec=[{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 uw=[{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 vc=[...Qo,...uw];ki.label=`HTML`;Oi.label=`XML`;_c.label=`SVG`;Qo.label=`SQL`;vc.label=`SQL-STRICT`;yc.label=`SHELL`;xc.label=`REDOS`;wc.label=`NOSQL`;Ec.label=`LOG`;Object.freeze({HTML:ki,XML:Oi,SVG:_c,SQL:Qo,"SQL-STRICT":vc,SHELL:yc,REDOS:xc,NOSQL:wc,LOG:Ec});function hw(r){if(typeof r!=`string`)throw new TypeError(`is-unsafe: first argument must be a string, got ${typeof r}`)}function dw(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 pw(r){return r instanceof RegExp?{lists:null,regex:r}:Array.isArray(r[0])?{lists:r,regex:null}:{lists:[r],regex:null}}function mw(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 Pp(r,e){hw(r),dw(e);let{lists:t,regex:i}=pw(e);if(i)return i.test(r);for(let s of t)if(mw(r,s)!==null)return!0;return!1}function gw(r,e){if(!r)return{};let t=e.attributesGroupName?r[e.attributesGroupName]:r;if(!t)return{};let i={};for(let s in t)if(s.startsWith(e.attributeNamePrefix)){let a=s.substring(e.attributeNamePrefix.length);i[a]=t[s]}else i[s]=t[s];return i}function bw(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 Wo=class{constructor(e,t){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.parseXml=ww,this.parseTextData=Tw,this.resolveNameSpace=_w,this.buildAttributesMap=xw,this.isItStopNode=Cw,this.replaceEntitiesValue=vw,this.readStopNodeData=Lw,this.saveTextToParentTag=Sw,this.addChild=Ew,this.ignoreAttributesFn=bc(this.options.ignoreAttributes),this.entityExpansionCount=0,this.currentExpandedLength=0,this.doctypefound=!1;let i=r({},Vo);this.options.entityDecoder?this.entityDecoder=this.options.entityDecoder:(typeof this.options.htmlEntities==`object`?i=this.options.htmlEntities:this.options.htmlEntities===!0&&(i=r(r({},fc),uc)),this.entityDecoder=new Ri({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)=>Pp(d,[ki,Oi])?Li.BLOCK:Li.ALLOW})),this.matcher=new Fi,this.readonlyMatcher=this.matcher.readOnly(),this.isCurrentNodeStopNode=!1,this.stopNodeExpressionsSet=new Ni;let s=this.options.stopNodes;if(s&&s.length>0){for(let a=0;a<s.length;a++){let d=s[a];typeof d==`string`?this.stopNodeExpressionsSet.add(new Kn(d)):d instanceof Kn&&this.stopNodeExpressionsSet.add(d)}this.stopNodeExpressionsSet.seal()}}};function Tw(r,e,t,i,s,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,_=m.tagValueProcessor(e,r,b,s,a);return _==null?r:typeof _!=typeof r||_!==r?_:m.trimValues||r.trim()===r?Ic(r,m.parseTagValue,m.numberParseOptions):r}}function _w(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 yw=new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])([\\s\\S]*?)\\3)?`,`gm`);function xw(r,e,t,i=!1){let s=this.options;if(i===!0||s.ignoreAttributes!==!0&&typeof r==`string`){let a=hp(r,yw),d=a.length,m={},b=new Array(d),_=!1,x={};for(let R=0;R<d;R++){let D=this.resolveNameSpace(a[R][1]),k=a[R][4];if(D.length&&k!==void 0){let W=k;s.trimValues&&(W=W.trim()),W=this.replaceEntitiesValue(W,t,this.readonlyMatcher),b[R]=W,x[D]=W,_=!0}}_&&typeof e==`object`&&e.updateCurrent&&e.updateCurrent(x);let w=s.jPath?e.toString():this.readonlyMatcher,C=!1;for(let R=0;R<d;R++){let D=this.resolveNameSpace(a[R][1]);if(this.ignoreAttributesFn(D,w))continue;let k=s.attributeNamePrefix+D;if(D.length)if(s.transformAttributeName&&(k=s.transformAttributeName(k)),k=Np(k,s),a[R][4]!==void 0){let W=b[R],j=s.attributeValueProcessor(D,W,w);j==null?m[k]=W:typeof j!=typeof W||j!==W?m[k]=j:m[k]=Ic(W,s.parseAttributeValue,s.numberParseOptions),C=!0}else s.allowBooleanAttributes&&(m[k]=!0,C=!0)}if(!C)return;if(s.attributesGroupName&&!s.preserveOrder){let R={};return R[s.attributesGroupName]=m,R}return m}}var ww=function(r){r=r.replace(/\r\n?/g,`
|
|
5
|
+
`);let e=new nr(`!xml`),t=e,i=``;this.matcher.reset(),this.entityDecoder.reset(),this.entityExpansionCount=0,this.currentExpandedLength=0,this.doctypefound=!1;let s=this.options,a=new Ho(s.processEntities),d=r.length;for(let m=0;m<d;m++)if(r[m]===`<`){let _=r.charCodeAt(m+1);if(_===47){let x=Bi(r,`>`,m,`Closing Tag is not closed.`),w=r.substring(m+2,x).trim();if(s.removeNSPrefix){let R=w.indexOf(`:`);R!==-1&&(w=w.substr(R+1))}w=Sc(s.transformTagName,w,``,s).tagName,t&&(i=this.saveTextToParentTag(i,t,this.readonlyMatcher));let C=this.matcher.getCurrentTag();if(w&&s.unpairedTagsSet.has(w))throw new Error(`Unpaired tag can not be used as closing tag: </${w}>`);C&&s.unpairedTagsSet.has(C)&&(this.matcher.pop(),this.tagsNodeStack.pop()),this.matcher.pop(),this.isCurrentNodeStopNode=!1,t=this.tagsNodeStack.pop()||e,s.captureMetaData&&t&&t.addEndIndex(x+1),i=``,m=x}else if(_===63){let x=Cc(r,m,!1,`?>`);if(!x)throw new Error(`Pi Tag is not closed.`);i=this.saveTextToParentTag(i,t,this.readonlyMatcher);let w=this.buildAttributesMap(x.tagExp,this.matcher,x.tagName,!0);if(w){let C=w[this.options.attributeNamePrefix+`version`];this.entityDecoder.setXmlVersion(Number(C)||1),a.setXmlVersion(Number(C)||1)}if(!(s.ignoreDeclaration&&x.tagName===`?xml`||s.ignorePiTags)){let C=new nr(x.tagName);C.add(s.textNodeName,``),x.tagName!==x.tagExp&&x.attrExpPresent&&s.ignoreAttributes!==!0&&(C[`:@`]=w),this.addChild(t,C,this.readonlyMatcher,m),s.captureMetaData&&t.addEndIndex(x.closeIndex+2)}m=x.closeIndex+1}else if(_===33&&r.charCodeAt(m+2)===45&&r.charCodeAt(m+3)===45){let x=Bi(r,`-->`,m+4,`Comment is not closed.`);if(s.commentPropName){let w=r.substring(m+4,x-2);i=this.saveTextToParentTag(i,t,this.readonlyMatcher),t.add(s.commentPropName,[{[s.textNodeName]:w}])}m=x}else if(_===33&&r.charCodeAt(m+2)===68){if(this.doctypefound)throw new Error(`Multiple DOCTYPE declarations found.`);this.doctypefound=!0;let x=a.readDocType(r,m);this.entityDecoder.addInputEntities(x.entities),m=x.i}else if(_===33&&r.charCodeAt(m+2)===91){let x=Bi(r,`]]>`,m,`CDATA is not closed.`)-2,w=r.substring(m+9,x);i=this.saveTextToParentTag(i,t,this.readonlyMatcher);let C=this.parseTextData(w,t.tagname,this.readonlyMatcher,!0,!1,!0,!0);C??=``,s.cdataPropName?t.add(s.cdataPropName,[{[s.textNodeName]:w}]):t.add(s.textNodeName,C),m=x+2}else{let x=Cc(r,m,s.removeNSPrefix);if(!x){let ne=r.substring(Math.max(0,m-50),Math.min(d,m+50));throw new Error(`readTagExp returned undefined at position ${m}. Context: "${ne}"`)}let w=x.tagName,C=x.rawTagName,R=x.tagExp,D=x.attrExpPresent,k=x.closeIndex;if({tagName:w,tagExp:R}=Sc(s.transformTagName,w,R,s),s.strictReservedNames&&(w===s.commentPropName||w===s.cdataPropName||w===s.textNodeName||w===s.attributesGroupName))throw new Error(`Invalid tag name: ${w}`);t&&i&&t.tagname!==`!xml`&&(i=this.saveTextToParentTag(i,t,this.readonlyMatcher,!1));let W=t;W&&s.unpairedTagsSet.has(W.tagname)&&(t=this.tagsNodeStack.pop(),this.matcher.pop());let j=!1;R.length>0&&R.lastIndexOf(`/`)===R.length-1&&(j=!0,w[w.length-1]===`/`?(w=w.substr(0,w.length-1),R=w):R=R.substr(0,R.length-1),D=w!==R);let V=null,$;$=bw(C),w!==e.tagname&&this.matcher.push(w,{},$),w!==R&&D&&(V=this.buildAttributesMap(R,this.matcher,w),V&&gw(V,s)),w!==e.tagname&&(this.isCurrentNodeStopNode=this.isItStopNode());let te=m;if(this.isCurrentNodeStopNode){let ne=``;if(j)m=x.closeIndex;else if(s.unpairedTagsSet.has(w))m=x.closeIndex;else{let Y=this.readStopNodeData(r,C,k+1);if(!Y)throw new Error(`Unexpected end of ${C}`);m=Y.i,ne=Y.tagContent}let le=new nr(w);V&&(le[`:@`]=V),le.add(s.textNodeName,ne),this.matcher.pop(),this.isCurrentNodeStopNode=!1,this.addChild(t,le,this.readonlyMatcher,te),s.captureMetaData&&t.addEndIndex(m+1)}else{if(j){({tagName:w,tagExp:R}=Sc(s.transformTagName,w,R,s));let ne=new nr(w);V&&(ne[`:@`]=V),this.addChild(t,ne,this.readonlyMatcher,te),s.captureMetaData&&t.addEndIndex(k+1),this.matcher.pop(),this.isCurrentNodeStopNode=!1}else if(s.unpairedTagsSet.has(w)){let ne=new nr(w);V&&(ne[`:@`]=V),this.addChild(t,ne,this.readonlyMatcher,te),s.captureMetaData&&t.addEndIndex(x.closeIndex+1),this.matcher.pop(),this.isCurrentNodeStopNode=!1,m=x.closeIndex;continue}else{let ne=new nr(w);if(this.tagsNodeStack.length>s.maxNestedTags)throw new Error(`Maximum nested tags exceeded`);this.tagsNodeStack.push(t),V&&(ne[`:@`]=V),this.addChild(t,ne,this.readonlyMatcher,te),t=ne}i=``,m=k}}}else i+=r[m];return e.child};function Ew(r,e,t,i){this.options.captureMetaData||(i=void 0);let s=this.options.jPath?t.toString():t,a=this.options.updateTag(e.tagname,s,e[`:@`]);a===!1||(typeof a==`string`&&(e.tagname=a),r.addChild(e,i))}function vw(r,e,t){let i=this.options.processEntities;if(!i||!i.enabled)return r;if(i.allowedTags){let s=this.options.jPath?t.toString():t;if(!(Array.isArray(i.allowedTags)?i.allowedTags.includes(e):i.allowedTags(e,s)))return r}if(i.tagFilter){let s=this.options.jPath?t.toString():t;if(!i.tagFilter(e,s))return r}return this.entityDecoder.decode(r)}function Sw(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 Cw(){return this.stopNodeExpressionsSet.size===0?!1:this.matcher.matchesAny(this.stopNodeExpressionsSet)}function Iw(r,e,t=`>`){let i=0,s=r.length,a=t.charCodeAt(0),d=t.length>1?t.charCodeAt(1):-1,m=``,b=e;for(let _=e;_<s;_++){let x=r.charCodeAt(_);if(i)x===i&&(i=0);else if(x===34||x===39)i=x;else if(x===a)if(d!==-1){if(r.charCodeAt(_+1)===d)return m+=r.substring(b,_),{data:m,index:_}}else return m+=r.substring(b,_),{data:m,index:_};else x===9&&!i&&(m+=r.substring(b,_)+` `,b=_+1)}}function Bi(r,e,t,i){let s=r.indexOf(e,t);if(s===-1)throw new Error(i);return s+e.length-1}function Mw(r,e,t,i){let s=r.indexOf(e,t);if(s===-1)throw new Error(i);return s}function Cc(r,e,t,i=`>`){let s=Iw(r,e+1,i);if(!s)return;let a=s.data,d=s.index,m=a.search(/\s/),b=a,_=!0;m!==-1&&(b=a.substring(0,m),a=a.substring(m+1).trimStart());let x=b;if(t){let w=b.indexOf(`:`);w!==-1&&(b=b.substr(w+1),_=b!==s.data.substr(w+1))}return{tagName:b,tagExp:a,closeIndex:d,attrExpPresent:_,rawTagName:x}}function Lw(r,e,t){let i=t,s=1,a=r.length;for(;t<a;t++)if(r[t]===`<`){let d=r.charCodeAt(t+1);if(d===47){let m=Mw(r,`>`,t,`${e} is not closed`);if(r.substring(t+2,m).trim()===e&&(s--,s===0))return{tagContent:r.substring(i,t),i:m};t=m}else if(d===63)t=Bi(r,`?>`,t+1,`StopNode is not closed.`);else if(d===33&&r.charCodeAt(t+2)===45&&r.charCodeAt(t+3)===45)t=Bi(r,`-->`,t+3,`StopNode is not closed.`);else if(d===33&&r.charCodeAt(t+2)===91)t=Bi(r,`]]>`,t,`StopNode is not closed.`)-2;else{let m=Cc(r,t,!1);m&&((m&&m.tagName)===e&&m.tagExp[m.tagExp.length-1]!==`/`&&s++,t=m.closeIndex)}}}function Ic(r,e,t){if(e&&typeof r==`string`){let i=r.trim();return i===`true`?!0:i===`false`?!1:gc(r,t)}else return dp(r)?r:``}function Sc(r,e,t,i){if(r){let s=r(e);t===e&&(t=s),e=s}return e=Np(e,i),{tagName:e,tagExp:t}}function Np(r,e){if(SA.includes(r))throw new Error(`[SECURITY] Invalid name: "${r}" is a reserved JavaScript keyword that could cause prototype pollution`);return Go.includes(r)?e.onDangerousProperty(r):r}var Mc=nr.getMetaDataSymbol();function Rw(r,e){if(!r||typeof r!=`object`)return{};if(!e)return r;let t={};for(let i in r)if(i.startsWith(e)){let s=i.substring(e.length);t[s]=r[i]}else t[i]=r[i];return t}function Lc(r,e,t,i){return Fp(r,e,t,i)}function Fp(r,e,t,i){let s,a={};for(let d=0;d<r.length;d++){let m=r[d],b=Pw(m);if(b!==void 0&&b!==e.textNodeName){let _=Rw(m[`:@`]||{},e.attributeNamePrefix);t.push(b,_)}if(b===e.textNodeName)s===void 0?s=m[b]:s+=``+m[b];else{if(b===void 0)continue;if(m[b]){let _=Fp(m[b],e,t,i),x=Fw(_,e);if(Object.keys(_).length===0&&e.alwaysCreateTextNode&&(_[e.textNodeName]=``),m[`:@`]?Nw(_,m[`:@`],i,e):Object.keys(_).length===1&&_[e.textNodeName]!==void 0&&!e.alwaysCreateTextNode?_=_[e.textNodeName]:Object.keys(_).length===0&&(e.alwaysCreateTextNode?_[e.textNodeName]=``:_=``),m[Mc]!==void 0&&typeof _==`object`&&_!==null&&(_[Mc]=m[Mc]),a[b]!==void 0&&Object.prototype.hasOwnProperty.call(a,b))Array.isArray(a[b])||(a[b]=[a[b]]),a[b].push(_);else{let w=e.jPath?i.toString():i;e.isArray(b,w,x)?a[b]=[_]:a[b]=_}b!==void 0&&b!==e.textNodeName&&t.pop()}}}return typeof s==`string`?s.length>0&&(a[e.textNodeName]=s):s!==void 0&&(a[e.textNodeName]=s),a}function Pw(r){let e=Object.keys(r);for(let t=0;t<e.length;t++){let i=e[t];if(i!==`:@`)return i}}function Nw(r,e,t,i){if(e){let s=Object.keys(e),a=s.length;for(let d=0;d<a;d++){let m=s[d],b=m.startsWith(i.attributeNamePrefix)?m.substring(i.attributeNamePrefix.length):m,_=i.jPath?t.toString()+`.`+b:t;i.isArray(m,_,!0,!0)?r[m]=[e[m]]:r[m]=e[m]}}}function Fw(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 Di=class{constructor(e){this.externalEntities={},this.options=xp(e)}parse(e,t){if(typeof e!=`string`&&e.toString)e instanceof Uint8Array&&!(typeof Buffer<`u`&&Buffer.isBuffer(e))?e=new TextDecoder(`utf-8`,{ignoreBOM:!0}).decode(e):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=bp(e,t);if(a!==!0)throw Error(`${a.err.msg}:${a.err.line}:${a.err.col}`)}let i=new Wo(this.options,this.externalEntities),s=i.parseXml(e);return this.options.preserveOrder||s===void 0?s:Lc(s,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 nr.getMetaDataSymbol()}};function Rc(r$3,e){if(e?._parser&&e._parser!==`fast-xml-parser`)throw new Error(e?._parser);let i=kw(r$3,r({allowBooleanAttributes:!0,ignoreDeclaration:!0,removeNSPrefix:e?.removeNSPrefix,textNodeName:e?.textNodeName,isArray:(s,a,d,m)=>!!e?.arrayPaths?.some(_=>a===_)},e?._fastXML));return e?.uncapitalizeKeys?vA(i):i}function kw(r$4,e){return new Di(r({ignoreAttributes:!1,attributeNamePrefix:``},e)).parse(r$4)}var Or={dataType:null,batchType:null,name:`XML`,id:`xml`,module:`xml`,version:`4.5.4`,worker:!1,extensions:[`xml`],mimeTypes:[`application/xml`,`text/xml`],testText:Bw,options:{xml:{_parser:`fast-xml-parser`,uncapitalizeKeys:!1,removeNSPrefix:!1,textNodeName:`value`,arrayPaths:[]}},parse:async(r$5,e)=>Rc(new TextDecoder().decode(r$5),r(r({},Or.options.xml),e?.xml)),parseTextSync:(r$6,e)=>Rc(r$6,r(r({},Or.options.xml),e?.xml))};function Bw(r){return r.startsWith(`<?xml`)}function kp(r,e){let t=Or.parseTextSync?.(r,e),i=t?.ServiceExceptionReport?.ServiceException||t?.[`ogc:ServiceExceptionReport`]?.[`ogc:ServiceException`];return typeof i==`string`?i:i.value||i.code||`Unknown error`}var Ko={dataType:null,batchType:null,id:`wms-error`,name:`WMS Error`,module:`wms`,version:`4.5.4`,worker:!1,extensions:[`xml`],mimeTypes:[`application/vnd.ogc.se_xml`,`application/xml`,`text/xml`],testText:Uw,options:{wms:{throwOnError:!1}},parse:async(r,e)=>Pc(new TextDecoder().decode(r),e),parseSync:(r,e)=>Pc(new TextDecoder().decode(r),e),parseTextSync:(r,e)=>Pc(r,e)};function Uw(r){return r.startsWith(`<?xml`)}function Pc(r$7,e){let t=r(r({},Ko.options.wms),e?.wms),i=kp(r$7,t),s=t.minimalErrors?i:`WMS Service error: ${i}`;if(t.throwOnError)throw new Error(s);return s}function Xn(r){return Array.isArray(r)?r:r?[r]:[]}function Xo(r){let e=Xn(r);return e.length>0&&e.every(t=>typeof t==`string`)?e:[]}function Yo(r,e=void 0){switch(typeof r){case`number`:return r;case`string`:return parseFloat(r);default:return}}function PA(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 Nc(r,e){let t=Or.parseTextSync?.(r,e),i=t.WMT_MS_Capabilities||t.WMS_Capabilities||t,s=Gw(i);if(e?.inheritedLayerProps)for(let a of s.layers)Bp(a,null);return e?.includeRawJSON&&(s.json=i),e?.includeXMLText&&(s.xml=r),s}function Gw(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:Xo(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:PA(r.Service?.LayerLimit),maxWidth:PA(r.Service?.maxWidth),maxHeight:PA(r.Service?.maxHeight),layers:[],requests:jw(r.Capability?.Request),exceptions:Vw(r.Exception)},t=Xn(r.Capability?.Layer);for(let i of t)e.layers.push(Op(i));for(let[i,s]of Object.entries(e))s===void 0&&delete e[i];return e}function jw(r){let e={};for(let[t,i]of Object.entries(r||{}))e[t]={mimeTypes:Xo(i?.Format)};return e}function Vw(r){if(Xn(r?.Format).length>0)return{mimeTypes:Xo(r)}}function Op(r){let e={title:String(r?.Title||``),name:r?.Name&&String(r?.Name),abstract:r?.Name&&String(r?.Abstract),keywords:Xo(r.KeywordList?.Keyword)},t=r?.CRS||r?.SRS;t&&Array.isArray(t)&&t.every(_=>typeof _==`string`)&&(e.crs=t);let i=r?.EX_GeographicBoundingBox&&zw(r?.EX_GeographicBoundingBox);i&&(e.geographicBoundingBox=i),i=r?.LatLonBoundingBox&&qw(r?.LatLonBoundingBox),i&&(e.geographicBoundingBox=i);let s=r?.BoundingBox&&Hw(r?.BoundingBox);s&&s.length>0&&(e.boundingBoxes=s);let d=Xn(r?.Dimension).map(_=>Ww(_));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 _ of m)b.push(Op(_));b.length>0&&(e.layers=b);for(let[_,x]of Object.entries(e))x===void 0&&delete e[_];return e}function zw(r){let{westBoundLongitude:e,northBoundLatitude:t,eastBoundLongitude:i,southBoundLatitude:s}=r;return[[e,s],[i,t]]}function qw(r){let{minx:e,miny:t,maxx:i,maxy:s}=r;return[[e,t],[i,s]]}function Hw(r){return Xn(r).map(t=>Qw(t))}function Qw(r){let{CRS:e,SRS:t,minx:i,miny:s,maxx:a,maxy:d,resx:m,resy:b}=r,_={crs:e||t,boundingBox:[[Yo(i),Yo(s)],[Yo(a),Yo(d)]]};return m&&(_.xResolution=m),b&&(_.yResolution=b),_}function Ww(r){let{name:e,units:t,value:i}=r,s={name:e,units:t,extent:i};return r.unitSymbol&&(s.unitSymbol=r.unitSymbol),r.default&&(s.defaultValue=r.default),r.multipleValues&&(s.multipleValues=Yn(r.multipleValues)),r.nearestValue&&(s.nearestValue=Yn(r.nearestValue)),r.current&&(s.current=Yn(r.current)),s}function Bp(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||[])Bp(t,r)}var Ui={dataType:null,batchType:null,id:`wms-capabilities`,name:`WMS Capabilities`,module:`wms`,version:`4.5.4`,worker:!1,extensions:[`xml`],mimeTypes:[`application/vnd.ogc.wms_xml`,`application/xml`,`text/xml`],testText:Xw,options:{wms:{}},parse:async(r,e)=>Nc(new TextDecoder().decode(r),e?.wms),parseTextSync:(r,e)=>Nc(r,e?.wms)};function Xw(r){return r.startsWith(`<?xml`)}function Fc(r,e){let i=(Or.parseTextSync?.(r,e)).FeatureInfoResponse?.FIELDS||[];return{features:(Array.isArray(i)?i:[i]).map(a=>Yw(a))}}function Yw(r){return{attributes:r||{},type:``,bounds:{bottom:0,top:0,left:0,right:0}}}var Dp=s(r({},Ui),{dataType:null,id:`wms-feature-info`,name:`WMS FeatureInfo`,parse:async(r,e)=>Fc(new TextDecoder().decode(r),e),parseTextSync:(r,e)=>Fc(r,e)});function kc(r,e){return Or.parseTextSync?.(r,e)}var Up=s(r({},Ui),{dataType:null,id:`wms-layer-description`,name:`WMS DescribeLayer`,parse:async(r,e)=>kc(new TextDecoder().decode(r),e),parseTextSync:(r,e)=>kc(r,e)});var FA={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 NA(r,e)};var NA=class extends $s{substituteCRS84;flipCRS;wmsParameters;vendorParameters;capabilities=null;constructor(e,t){super(e,t,FA.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,s=u(d,[`boundingBox`,`bbox`]),a=r({bbox:t?[...t[0],...t[1]]:i},s);return await this.getMap(a)}normalizeMetadata(e){return e}async getCapabilities(e,t){let i=this.getCapabilitiesURL(e,t),s=await this.fetch(i),a=await s.arrayBuffer();this._checkResponse(s,a);let d=await Ui.parse(a,this.loadOptions);return this.capabilities=d,d}async getMap(e,t){let i=this.getMapURL(e,t),s=await this.fetch(i),a=await s.arrayBuffer();this._checkResponse(s,a);try{return await Vn$1.parse(a,this.loadOptions)}catch{throw this._parseError(a)}}async getFeatureInfo(e,t){let i=this.getFeatureInfoURL(e,t),s=await this.fetch(i),a=await s.arrayBuffer();return this._checkResponse(s,a),await Dp.parse(a,this.loadOptions)}async getFeatureInfoText(e,t){let i=this.getFeatureInfoURL(e,t),s=await this.fetch(i),a=await s.arrayBuffer();return this._checkResponse(s,a),new TextDecoder().decode(a)}async describeLayer(e,t){let i=this.describeLayerURL(e,t),s=await this.fetch(i),a=await s.arrayBuffer();return this._checkResponse(s,a),await Up.parse(a,this.loadOptions)}async getLegendGraphic(e,t){let i=this.getLegendGraphicURL(e,t),s=await this.fetch(i),a=await s.arrayBuffer();this._checkResponse(s,a);try{return await Vn$1.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:s}=e;e.bbox=i?[...i[0],...i[1]]:s;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(`?`),s=i.split(`&`),a={};for(let d of s){let[m,b]=d.split(`=`);a[m]=b}return{url:t,parameters:a}}_getWMSUrl(e,t,i){let s=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,_]of Object.entries(d))(!m.includes(b)||_)&&(s+=a?`?`:`&`,a=!1,s+=this._getURLParameter(b,_,t));return encodeURI(s)}_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 s=this._flipBoundingBox(t,i);s&&(t=s);break;case`x`:i.version===`1.3.0`&&(e=`i`);break;case`y`:i.version===`1.3.0`&&(e=`j`)}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`),s=e;return i?[s[1],s[0],s[3],s[2]]:s}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||Ko.mimeTypes.includes(i)){let s=Je$1(this.loadOptions,{wms:{throwOnError:!0}}),a=Ko.parseSync?.(t,s);throw new Error(a)}}_parseError(e){let t=Ko.parseSync?.(e,this.options.core?.loadOptions);return new Error(t)}};var Gp=6378137*Math.PI;function Oc(r){let e=nt(r);return e[0]=(e[0]/256-1)*Gp,e[1]=(e[1]/256-1)*Gp,e}var Jw={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 Jo=class extends _m$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:e,props:t,oldProps:i}){let{viewport:s}=this.context;e.dataChanged||t.serviceType!==i.serviceType?(this.state.imageSource=this._createImageSource(t),this._loadMetadata(),this.debounce(()=>this.loadImage(s,`image source changed`),0)):B(t.layers,i.layers,1)?e.viewportChanged&&this.debounce(()=>this.loadImage(s,`viewport changed`)):this.debounce(()=>this.loadImage(s,`layers changed`),0)}finalizeState(){}renderLayers(){let{bounds:e,image:t,lastRequestParameters:i}=this.state;return t&&new Cn$1(s(r({},this.getSubLayerProps({id:`bitmap`})),{_imageCoordinateSystem:i.srs===`EPSG:4326`?dn.LNGLAT:dn.CARTESIAN,bounds:e,image:t}))}async getFeatureInfoText(e,t){let{lastRequestParameters:i}=this.state;return i?await this.state.imageSource.getFeatureInfoText?.(s(r({},i),{query_layers:i.layers,x:e,y:t,info_format:`application/vnd.ogc.gml`})):``}_createImageSource(e){if(e.data instanceof As$1)return e.data;if(typeof e.data==`string`)return Ku(e.data,[FA],{core:{type:e.serviceType,loadOptions:e.loadOptions}});throw new Error(`invalid image source in props.data`)}async _loadMetadata(){let{imageSource:e}=this.state;try{this.state.loadCounter++;let t=await e.getMetadata();this.state.imageSource===e&&this.getCurrentLayer()?.props.onMetadataLoad(t)}catch(t){this.getCurrentLayer()?.props.onMetadataLoadError(t)}finally{this.state.loadCounter--}}async loadImage(e,t){let{layers:i,serviceType:s}=this.props;if(s===`wms`&&i.length===0)return;let a=e.getBounds(),{width:d,height:m}=e,b=this.getRequestId(),{srs:_}=this.props;_===`auto`&&(_=e.resolution?`EPSG:4326`:`EPSG:3857`);let x={width:d,height:m,boundingBox:[[a[0],a[1]],[a[2],a[3]]],layers:i,crs:_};if(_===`EPSG:3857`)x.boundingBox=[Oc([a[0],a[1]]),Oc([a[2],a[3]])];try{this.state.loadCounter++,this.props.onImageLoadStart(b);let w=await this.state.imageSource.getImage(x);this.state.lastRequestId<b&&(this.getCurrentLayer()?.props.onImageLoad(b),this.setState({image:w,bounds:a,lastRequestParameters:x,lastRequestId:b}))}catch(w){this.raiseError(w,`Load image`),this.getCurrentLayer()?.props.onImageLoadError(b,w)}finally{this.state.loadCounter--}}getRequestId(){return this.state._nextRequestId++}debounce(e,t=500){clearTimeout(this.state._timeoutId),this.state._timeoutId=setTimeout(()=>e(),t)}};Jo.layerName=`WMSLayer`;Jo.defaultProps=Jw;var Zw={getHeight:{type:`accessor`,value:0},greatCircle:!0};var Zo=class extends gn{};Zo.layerName=`GreatCircleLayer`;Zo.defaultProps=Zw;var $w=Zo;var kA=x(Bc(),1);var eE=3;var rE=61;var Vp=180/Math.PI;function qp(r,e,t){let i=1<<e;return[(r[0]+t[0])/i,(r[1]+t[1])/i]}function zp(r){return r>=.5?1/3*(4*r*r-1):1/3*(1-4*(1-r)*(1-r))}function Hp(r){return[zp(r[0]),zp(r[1])]}function Qp(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 Wp([r,e,t]){let i=Math.atan2(t,Math.sqrt(r*r+e*e));return[Math.atan2(e,r)*Vp,i*Vp]}function Kp(r){let e=kA.default.fromString(r,!0,10).toString(2);for(;e.length<eE+rE;)e=`0`+e;let t=e.lastIndexOf(`1`),i=e.substring(0,3),s=e.substring(3,t),a=s.length/2,d=kA.default.fromString(i,!0,2).toString(10),m=kA.default.fromString(s,!0,2).toString(4);for(;m.length<a;)m=`0`+m;return`${d}/${m}`}function nE(r,e,t,i){if(i===0){t===1&&(e[0]=r-1-e[0],e[1]=r-1-e[1]);let s=e[0];e[0]=e[1],e[1]=s}}function Xp(r){let e=r.split(`/`),t=parseInt(e[0],10),i=e[1],s=i.length,a=[0,0],d;for(let m=s-1;m>=0;m--){d=s-m;let b=i[m],_=0,x=0;b===`1`?x=1:b===`2`?(_=1,x=1):b===`3`&&(_=1);let w=Math.pow(2,d-1);nE(w,a,_,x),a[0]+=w*_,a[1]+=w*x}if(t%2===1){let m=a[0];a[0]=a[1],a[1]=m}return{face:t,ij:a,level:d}}var Yp=x(Bc(),1);function iE(r){let e=r.padEnd(16,`0`);return Yp.default.fromString(e,16)}var oE=100;function sE({face:r,ij:e,level:t}){let i=[[0,0],[0,1],[1,1],[1,0],[0,0]],s=Math.max(1,Math.ceil(oE*Math.pow(2,-t))),a=new Float64Array(4*s*2+2),d=0,m=0;for(let b=0;b<4;b++){let _=i[b].slice(0),x=i[b+1],w=(x[0]-_[0])/s,C=(x[1]-_[1])/s;for(let R=0;R<s;R++){_[0]+=w,_[1]+=C;let j=Wp(Qp(r,Hp(qp(e,t,_))));Math.abs(j[1])>89.999&&(j[0]=m);let V=j[0]-m;j[0]+=V>180?-360:V<-180?360:0,a[d++]=j[0],a[d++]=j[1],m=j[0]}}return a[d++]=a[0],a[d++]=a[1],a}function AE(r){if(typeof r==`string`){if(r.indexOf(`/`)>0)return r;r=iE(r)}return Kp(r.toString())}function Jp(r){return sE(Xp(AE(r)))}var aE={getS2Token:{type:`accessor`,value:r=>r.token}};var es=class extends Fr{indexToBounds(){let{data:e,getS2Token:t}=this.props;return{data:e,_normalize:!1,positionFormat:`XY`,getPolygon:(i,s)=>Jp(t(i,s))}}};es.layerName=`S2Layer`;es.defaultProps=aE;var cE=es;var Dc=512;function lE(r,e){let t=0,i=0,s=1<<r.length,a=s/Dc;for(let d=0;d<r.length;d++){s>>=1;let m=parseInt(r[d]);m%2&&(t|=s),m>1&&(i|=s)}return[[t/a,Dc-i/a],[(t+e)/a,Dc-(i+e)/a]]}function Zp(r,e=1){let[t,i]=lE(r,e),[s,a]=rt$1(t),[d,m]=rt$1(i);return[d,a,d,m,s,m,s,a,d,a]}var uE={getQuadkey:{type:`accessor`,value:r=>r.quadkey}};var ts=class extends Fr{indexToBounds(){let{data:e,extruded:t,getQuadkey:i}=this.props,s=t?.99:1;return{data:e,_normalize:!1,positionFormat:`XY`,getPolygon:(a,d)=>Zp(i(a,d),s),updateTriggers:{getPolygon:s}}}};ts.layerName=`QuadkeyLayer`;ts.defaultProps=uE;var fE=ts;var Gi=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:s,onError:a}){let{index:d,id:m,bbox:b,userData:_,zoom:x}=this,w=this._loaderId;this._abortController=new AbortController;let{signal:C}=this._abortController,R=await i.scheduleRequest(this,t);if(!R){this._isCancelled=!0;return}if(this._isCancelled){R.done();return}let D=null,k;try{D=await e({index:d,id:m,bbox:b,userData:_,zoom:x,signal:C})}catch(W){k=W||!0}finally{R.done()}if(w===this._loaderId){if(this._loader=void 0,this.content=D,this._isCancelled&&!D){this._isLoaded=!1;return}this._isLoaded=!0,this._isCancelled=!1,k?a(k,this):s(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 $p=new Z;var hE=new Z;var ji=class r{constructor(e=[0,0,0],t=[0,0,0],i){i=i||$p.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=hE.from(e.normal),s=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-s>0?bt.INSIDE:a+s<0?bt.OUTSIDE:bt.INTERSECTING}distanceTo(e){return Math.sqrt(this.distanceSquaredTo(e))}distanceSquaredTo(e){let t=$p.from(e).subtract(this.center),{halfDiagonal:i}=this,s=0,a;return a=Math.abs(t.x)-i.x,a>0&&(s+=a*a),a=Math.abs(t.y)-i.y,a>0&&(s+=a*a),a=Math.abs(t.z)-i.z,a>0&&(s+=a*a),s}};var rs=new Z;var em=new Z;var Qr=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=rs.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,s=e.center,a=e.radius,d=rs.copy(s).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 em.copy(d).scale((-i+b)/m).add(t),this.center.copy(em),this.radius=b,this}expand(e){let i=rs.from(e).subtract(this.center).magnitude();return i>this.radius&&(this.radius=i),this}transform(e){this.center.transform(e);let t=Hi$1.getScaling(rs,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=rs.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 dE=new Z;var pE=new Z;var OA=new Z;var BA=new Z;var DA=new Z;var mE=new Z;var gE=new Z;var tn={COLUMN0ROW0:0,COLUMN0ROW1:1,COLUMN0ROW2:2,COLUMN1ROW0:3,COLUMN1ROW1:4,COLUMN1ROW2:5,COLUMN2ROW0:6,COLUMN2ROW1:7,COLUMN2ROW2:8};var rn=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),s=new Z(e).normalize(),a=new Z(t).normalize(),d=new Z(i).normalize();return new gr().fromMatrix3(new tt([...s,...a,...d]))}fromCenterHalfSizeQuaternion(e,t,i){let s=new gr(i),a=new tt().fromQuaternion(s);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 Qr){let t=this.halfAxes,i=t.getColumn(0,OA),s=t.getColumn(1,BA),a=t.getColumn(2,DA),d=dE.copy(i).add(s).add(a);return e.center.copy(this.center),e.radius=d.magnitude(),e}intersectPlane(e){let t=this.center,i=e.normal,s=this.halfAxes,a=i.x,d=i.y,m=i.z,b=Math.abs(a*s[tn.COLUMN0ROW0]+d*s[tn.COLUMN0ROW1]+m*s[tn.COLUMN0ROW2])+Math.abs(a*s[tn.COLUMN1ROW0]+d*s[tn.COLUMN1ROW1]+m*s[tn.COLUMN1ROW2])+Math.abs(a*s[tn.COLUMN2ROW0]+d*s[tn.COLUMN2ROW1]+m*s[tn.COLUMN2ROW2]),_=i.dot(t)+e.distance;return _<=-b?bt.OUTSIDE:_>=b?bt.INSIDE:bt.INTERSECTING}distanceTo(e){return Math.sqrt(this.distanceSquaredTo(e))}distanceSquaredTo(e){let t=pE.from(e).subtract(this.center),i=this.halfAxes,s=i.getColumn(0,OA),a=i.getColumn(1,BA),d=i.getColumn(2,DA),m=s.magnitude(),b=a.magnitude(),_=d.magnitude();s.normalize(),a.normalize(),d.normalize();let x=0,w;return w=Math.abs(t.dot(s))-m,w>0&&(x+=w*w),w=Math.abs(t.dot(a))-b,w>0&&(x+=w*w),w=Math.abs(t.dot(d))-_,w>0&&(x+=w*w),x}computePlaneDistances(e,t,i=[-0,-0]){let s=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY,d=this.center,m=this.halfAxes,b=m.getColumn(0,OA),_=m.getColumn(1,BA),x=m.getColumn(2,DA),w=mE.copy(b).add(_).add(x).add(d),C=gE.copy(w).subtract(e),R=t.dot(C);return s=Math.min(R,s),a=Math.max(R,a),w.copy(d).add(b).add(_).subtract(x),C.copy(w).subtract(e),R=t.dot(C),s=Math.min(R,s),a=Math.max(R,a),w.copy(d).add(b).subtract(_).add(x),C.copy(w).subtract(e),R=t.dot(C),s=Math.min(R,s),a=Math.max(R,a),w.copy(d).add(b).subtract(_).subtract(x),C.copy(w).subtract(e),R=t.dot(C),s=Math.min(R,s),a=Math.max(R,a),d.copy(w).subtract(b).add(_).add(x),C.copy(w).subtract(e),R=t.dot(C),s=Math.min(R,s),a=Math.max(R,a),d.copy(w).subtract(b).add(_).subtract(x),C.copy(w).subtract(e),R=t.dot(C),s=Math.min(R,s),a=Math.max(R,a),d.copy(w).subtract(b).subtract(_).add(x),C.copy(w).subtract(e),R=t.dot(C),s=Math.min(R,s),a=Math.max(R,a),d.copy(w).subtract(b).subtract(_).subtract(x),C.copy(w).subtract(e),R=t.dot(C),s=Math.min(R,s),a=Math.max(R,a),i[0]=s,i[1]=a,i}transform(e){this.center.transformAsPoint(e);let t=this.halfAxes.getColumn(0,OA);t.transformAsPoint(e);let i=this.halfAxes.getColumn(1,BA);i.transformAsPoint(e);let s=this.halfAxes.getColumn(2,DA);return s.transformAsPoint(e),this.halfAxes=new tt([...t,...i,...s]),this}getTransform(){throw new Error(`not implemented`)}};var tm=new Z;var rm=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=tm.from(e),this.normal.from(t).normalize();let i=-this.normal.dot(e);return this.distance=i,this}fromCoefficients(e,t,i,s){return this.normal.set(e,t,i),Nt$1(Mt(this.normal.len(),1)),this.distance=s,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=rm.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=tm.from(e),s=this.getPointDistance(i),a=rm.copy(this.normal).scale(s);return i.subtract(a).to(t)}};var nm=[new Z([1,0,0]),new Z([0,1,0]),new Z([0,0,1])];var im=new Z;var bE=new Z;var Xt=class r{constructor(e=[]){this.planes=e}fromBoundingSphere(e){this.planes.length=2*nm.length;let t=e.center,i=e.radius,s=0;for(let a of nm){let d=this.planes[s],m=this.planes[s+1];d||(d=this.planes[s]=new Ut),m||(m=this.planes[s+1]=new Ut);let b=im.copy(a).scale(-i).add(t);d.fromPointNormal(b,a);let _=im.copy(a).scale(i).add(t),x=bE.copy(a).negate();m.fromPointNormal(_,x),s+=2}return this}computeVisibility(e){let t=bt.INSIDE;for(let i of this.planes)switch(e.intersectPlane(i)){case bt.OUTSIDE:return bt.OUTSIDE;case bt.INTERSECTING:t=bt.INTERSECTING}return t}computeVisibilityWithPlaneMask(e,t){if(Nt$1(Number.isFinite(t),`parentPlaneMask is required.`),t===r.MASK_OUTSIDE||t===r.MASK_INSIDE)return t;let i=r.MASK_INSIDE,s=this.planes;for(let a=0;a<this.planes.length;++a){let d=a<31?1<<a:0;if(a<31&&(t&d)===0)continue;let m=s[a],b=e.intersectPlane(m);if(b===bt.OUTSIDE)return r.MASK_OUTSIDE;b===bt.INTERSECTING&&(i|=d)}return i}};Xt.MASK_OUTSIDE=4294967295;Xt.MASK_INSIDE=0;Xt.MASK_INDETERMINATE=2147483647;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 Wr=new tt;var _E=new tt;var yE=new tt;var UA=new tt;var om=new tt;function jc(r,e={}){let t=Ho$1.EPSILON20,i=10,s=0,a=0,d=_E,m=yE;d.identity(),m.copy(r);let b=t*xE(m);for(;a<i&&wE(m)>b;)EE(m,UA),om.copy(UA).transpose(),m.multiplyRight(UA),m.multiplyLeft(om),d.multiplyRight(UA),++s>2&&(++a,s=0);return e.unitary=d.toTarget(e.unitary),e.diagonal=m.toTarget(e.diagonal),e}function xE(r){let e=0;for(let t=0;t<9;++t){let i=r[t];e+=i*i}return Math.sqrt(e)}var Uc=[1,0,0];var Gc=[2,2,1];function wE(r){let e=0;for(let t=0;t<3;++t){let i=r[Wr.getElementIndex(Gc[t],Uc[t])];e+=2*i*i}return Math.sqrt(e)}function EE(r,e){let t=Ho$1.EPSILON15,i=0,s=1;for(let _=0;_<3;++_){let x=Math.abs(r[Wr.getElementIndex(Gc[_],Uc[_])]);x>i&&(s=_,i=x)}let a=Uc[s],d=Gc[s],m=1,b=0;if(Math.abs(r[Wr.getElementIndex(d,a)])>t){let _=r[Wr.getElementIndex(d,d)],x=r[Wr.getElementIndex(a,a)],w=r[Wr.getElementIndex(d,a)],C=(_-x)/2/w,R;C<0?R=-1/(-C+Math.sqrt(1+C*C)):R=1/(C+Math.sqrt(1+C*C)),m=1/Math.sqrt(1+R*R),b=R*m}return tt.IDENTITY.to(e),e[Wr.getElementIndex(a,a)]=e[Wr.getElementIndex(d,d)]=m,e[Wr.getElementIndex(d,a)]=b,e[Wr.getElementIndex(a,d)]=-b,e}var En=new Z;var vE=new Z;var SE=new Z;var CE=new Z;var IE=new Z;var ME=new tt;var LE={diagonal:new tt,unitary:new tt};function ns(r,e=new rn){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 s=1/t;i.multiplyByScalar(s);let a=0,d=0,m=0,b=0,_=0,x=0;for(let z of r){let O=En.copy(z).subtract(i);a+=O.x*O.x,d+=O.x*O.y,m+=O.x*O.z,b+=O.y*O.y,_+=O.y*O.z,x+=O.z*O.z}a*=s,d*=s,m*=s,b*=s,_*=s,x*=s;let w=ME;w[0]=a,w[1]=d,w[2]=m,w[3]=d,w[4]=b,w[5]=_,w[6]=m,w[7]=_,w[8]=x;let{unitary:C}=jc(w,LE),R=e.halfAxes.copy(C),D=R.getColumn(0,SE),k=R.getColumn(1,CE),W=R.getColumn(2,IE),j=-Number.MAX_VALUE,V=-Number.MAX_VALUE,J=-Number.MAX_VALUE,$=Number.MAX_VALUE,te=Number.MAX_VALUE,ne=Number.MAX_VALUE;for(let z of r)En.copy(z),j=Math.max(En.dot(D),j),V=Math.max(En.dot(k),V),J=Math.max(En.dot(W),J),$=Math.min(En.dot(D),$),te=Math.min(En.dot(k),te),ne=Math.min(En.dot(W),ne);D=D.multiplyByScalar(.5*($+j)),k=k.multiplyByScalar(.5*(te+V)),W=W.multiplyByScalar(.5*(ne+J)),e.center.copy(D).add(k).add(W);let le=vE.set(j-$,V-te,J-ne).multiplyByScalar(.5),Y=new tt([le[0],0,0,0,le[1],0,0,0,le[2]]);return e.halfAxes.multiplyRight(Y),e}var Vi=512;var sm=3;var Am=[[.5,.5],[0,0],[0,1],[1,0],[1,1]];var am=Am.concat([[0,.5],[.5,0],[1,.5],[.5,1]]);var RE=am.concat([[.25,.5],[.75,.5]]);var Vc=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:s,minZ:a,maxZ:d,bounds:m,offset:b,project:_}=e,x=this.getBoundingVolume(s,b,_);if(m&&!this.insideBounds(m)||i.computeVisibility(x)<0||_&&this.beyondHorizon(t.cameraPosition,_,s[1]))return!1;if(!this.childVisible){let{z:C}=this;if(C<d&&C>=a){let R=x.distanceTo(t.cameraPosition)*t.scale/t.height;C+=Math.floor(Math.log2(R))}if(C>=d)return this.selected=!0,!0}this.selected=!1,this.childVisible=!0;for(let C of this.children)C.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 s=e[0],a=e[1],d=e[2],m=Math.sqrt(s*s+a*a+d*d),b=Math.atan2(s,-a)*180/Math.PI,_=Math.asin(d/m)*180/Math.PI,[x,w]=zi(this.x,this.y,this.z),[C,R]=zi(this.x+1,this.y+1,this.z),D=(x+C)/2,k=D+((b-D+540)%360-180),V=t([Math.max(x,Math.min(k,C)),Math.max(R,Math.min(_,w)),i]);return V[0]*s+V[1]*a+V[2]*d<=V[0]*V[0]+V[1]*V[1]+V[2]*V[2]}insideBounds([e,t,i,s]){let d=Vi/Math.pow(2,this.z);return this.x*d<i&&this.y*d<s&&(this.x+1)*d>e&&(this.y+1)*d>t}getBoundingVolume(e,t,i){if(i){let b=this.z<1?RE:this.z<2?am:Am,_=[];for(let x of b){let w=zi(this.x+x[0],this.y+x[1],this.z);w[2]=e[0],_.push(i(w)),e[0]!==e[1]&&(w[2]=e[1],_.push(i(w)))}return ns(_)}let a=Vi/Math.pow(2,this.z),d=this.x*a+t*Vi,m=Vi-(this.y+1)*a;return new ji([d,m,e[0]],[d+a,m+a,e[1]])}};function cm(r,e,t,i){let s=r instanceof lo$1?r.projectPosition:null,d=new Xt(Object.values(r.getFrustumPlanes()).map(({normal:R,distance:D})=>new Ut(R.clone().negate(),D))),m=r.distanceScales.unitsPerMeter[2],b=t&&t[0]*m||0,_=t&&t[1]*m||0,x=r instanceof ne&&r.pitch<=60?e:0;if(i){let[R,D,k,W]=i,j=nt([R,W]),V=nt([k,D]);i=[j[0],Vi-j[1],V[0],Vi-V[1]]}let w=new Vc(0,0,0),C={viewport:r,project:s,cullingVolume:d,elevationBounds:[b,_],minZ:x,maxZ:e,bounds:i,offset:0};if(w.update(C),r instanceof ne&&r.subViewports&&r.subViewports.length>1){for(C.offset=-1;w.update(C)&&!(--C.offset<-sm););for(C.offset=1;w.update(C)&&!(++C.offset>sm););}return w.getSelected()}var nn=512;var PE=[-1/0,-1/0,1/0,1/0];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 GA(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(s=>s[0])),Math.min(...t.map(s=>s[1])),Math.max(...t.map(s=>s[0])),Math.max(...t.map(s=>s[1]))]}function NE(r){return Math.abs(r.split(``).reduce((e,t)=>(e<<5)-e+t.charCodeAt(0)|0,0))}function on(r,e){if(!r||!r.length)return null;let{index:t,id:i}=e;if(Array.isArray(r)){let a=NE(i)%r.length;r=r[a]}let s=r;for(let a of Object.keys(t)){let d=new RegExp(`{${a}}`,`g`);s=s.replace(d,String(t[a]))}return Number.isInteger(t.y)&&Number.isInteger(t.z)&&(s=s.replace(/\{-y\}/g,String(Math.pow(2,t.z)-t.y-1))),s}function FE(r,e,t){let i;if(e&&e.length===2){let[s,a]=e,d=r.getBounds({z:s}),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 um({viewport:r,z:e,cullRect:t}){return(r.subViewports||[r]).map(s=>zc(s,e||0,t))}function zc(r,e,t){if(!Array.isArray(e)){let a=t.x-r.x,d=t.y-r.y,{width:m,height:b}=t,_={targetZ:e},x=r.unproject([a,d],_),w=r.unproject([a+m,d],_),C=r.unproject([a,d+b],_),R=r.unproject([a+m,d+b],_);return[Math.min(x[0],w[0],C[0],R[0]),Math.min(x[1],w[1],C[1],R[1]),Math.max(x[0],w[0],C[0],R[0]),Math.max(x[1],w[1],C[1],R[1])]}let i=zc(r,e[0],t),s=zc(r,e[1],t);return[Math.min(i[0],s[0]),Math.min(i[1],s[1]),Math.max(i[2],s[2]),Math.max(i[3],s[3])]}function kE(r,e,t){return t?GA(r,t).map(s=>s*e/nn):r.map(i=>i*e/nn)}function qc(r,e){return Math.pow(2,r)*nn/e}function zi(r,e,t){let i=qc(t,nn),s=r/i*360-180,a=Math.PI-2*Math.PI*e/i;return[s,180/Math.PI*Math.atan(.5*(Math.exp(a)-Math.exp(-a)))]}function lm(r,e,t,i){let s=qc(t,i);return[r/s*nn,e/s*nn]}function Hc(r,e,t,i,s=nn){if(r.isGeospatial){let[_,x]=zi(e,t,i),[w,C]=zi(e+1,t+1,i);return{west:_,north:x,east:w,south:C}}let[a,d]=lm(e,t,i,s),[m,b]=lm(e+1,t+1,i,s);return{left:a,top:d,right:m,bottom:b}}function OE(r,e,t,i,s){let[m,b,_,x]=kE(FE(r,null,i),qc(e,t),s),w=[];for(let C=Math.floor(m);C<_;C++)for(let R=Math.floor(b);R<x;R++)w.push({x:C,y:R,z:e});return w}function Qc({viewport:r,maxZoom:e,minZoom:t,zRange:i,extent:s,tileSize:a=nn,modelMatrix:d,modelMatrixInverse:m,zoomOffset:b=0,visibleMinZoom:_,visibleMaxZoom:x}){let w=r.isGeospatial?Math.round(r.zoom+Math.log2(nn/a)+b):Math.ceil(r.zoom+b);if(typeof t==`number`&&Number.isFinite(t)&&w<t){if(!s)return[];w=t}if(typeof e==`number`&&Number.isFinite(e)&&w>e&&(w=e),_!=null&&r.zoom<_)return[];if(x!=null&&r.zoom>x)return[];let C=s;return d&&m&&s&&!r.isGeospatial&&(C=GA(s,d)),r.isGeospatial?cm(r,w,i,s):OE(r,w,a,C||PE,m)}function Wc(r){return/(?=.*{z})(?=.*{x})(?=.*({y}|{-y}))/.test(r)}function Kc(r){return Number.isFinite(r.west)&&Number.isFinite(r.north)&&Number.isFinite(r.east)&&Number.isFinite(r.south)}function fm(r){let e={},t;return i=>{for(let s in i)if(!BE(i[s],e[s])){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 hm=1;var jA=2;var DE=`never`;var UE=`no-overlap`;var is=`best-available`;var GE=5;var pm=0;var mm=1e8;var dm=mm-pm-1;var jE={[is]:zE,[UE]:qE,[DE]:()=>{}};var VE={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 qi=class{constructor(e){this._getCullBounds=fm(um),this.opts=r(r({},VE),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 gi$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 s=i?new U(i):new U,a=!s.equals(this._modelMatrix);if(!this._viewport||!e.equals(this._viewport)||!Mt(this._zRange,t)||a){a&&(this._modelMatrixInverse=s.clone().invert(),this._modelMatrix=s),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 s=this._getCullBounds({viewport:this._viewport,z:this._zRange,cullRect:t}),{bbox:a}=e;for(let[d,m,b,_]of s){let x;if(`west`in a)x=a.west<b&&a.east>d&&a.south<_&&a.north>m;else{if(i&&!U.IDENTITY.equals(i)){let[R,D,k,W]=GA([a.left,a.top,a.right,a.bottom],i);a={left:R,top:D,right:k,bottom:W}}let w=Math.min(a.top,a.bottom),C=Math.max(a.top,a.bottom);x=a.left<b&&a.right>d&&w<_&&C>m}if(x)return!0}return!1}return!0}getTileIndices({viewport:e,maxZoom:t,minZoom:i,zRange:s,modelMatrix:a,modelMatrixInverse:d}){let{tileSize:m,extent:b,zoomOffset:_,visibleMinZoom:x,visibleMaxZoom:w}=this.opts;return Qc({viewport:e,maxZoom:t,minZoom:i,zRange:s,tileSize:m,extent:b,modelMatrix:a,modelMatrixInverse:d,zoomOffset:_,visibleMinZoom:x,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:Hc(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||is,t=new Array(this._cache.size),i=0;for(let s of this._cache.values())t[i++]=s.isVisible,s.isSelected=!1,s.isVisible=!1;for(let s of this._selectedTiles)s.isSelected=!0,s.isVisible=!0;(typeof e==`function`?e:jE[e])(Array.from(this._cache.values())),i=0;for(let s of this._cache.values())if(t[i++]!==s.isVisible)return!0;return!1}_getRequestPriority(e){if(!e.isSelected&&!e.isVisible)return-1;let t=this._getTileDistancePriority(e);return e.isSelected?pm+t:mm+t}_getTileDistancePriority(e){let{width:t,height:i}=this._viewport||{};if(!this._viewport||!t||!i)return 0;try{let s=this._getTileScreenCorners(e.bbox),a=[t/2,i/2];if(s.length===4){if(this._isPointInPolygon(a,s))return 0;let d=s.reduce((m,b,_)=>{let x=s[(_+1)%s.length];return Math.min(m,this._getPointToSegmentDistanceSquared(a,b,x))},Number.MAX_SAFE_INTEGER);return Math.min(d,dm)}}catch{}return dm}_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,s])=>Number.isFinite(i)&&Number.isFinite(s))}_isPointInPolygon(e,t){let i=!1,[s,a]=e;for(let d=0,m=t.length-1;d<t.length;m=d++){let[b,_]=t[d],[x,w]=t[m];_>a!=w>a&&s<(x-b)*(a-_)/(w-_)+b&&(i=!i)}return i}_getPointToSegmentDistanceSquared(e,t,i){let[s,a]=e,[d,m]=t,[b,_]=i,x=b-d,w=_-m,C=x*x+w*w,R=C?Math.max(0,Math.min(1,((s-d)*x+(a-m)*w)/C)):0,D=d+R*x,k=m+R*w,W=s-D,j=a-k;return W*W+j*j}_pruneRequests(){let{maxRequests:e=0}=this.opts,t=[],i=0;for(let s of this._cache.values())s.isLoading&&(i++,!s.isSelected&&!s.isVisible&&t.push(s));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?1/0:GE*this.selectedTiles.length),s=t.maxCacheByteSize??1/0;if(e.size>i||this._cacheByteSize>s){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<=s)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),s=this._cache.get(i),a=!1;return!s&&t?(s=new Gi(e),Object.assign(s,this.getTileMetadata(s.index)),Object.assign(s,{id:i,zoom:this.getTileZoom(s.index)}),a=!0,this._cache.set(i,s),this._dirty=!0):s&&s.needsReload&&(a=!0),s&&a&&s.loadData({getData:this.opts.getTileData,getRequestPriority:this._getRequestPriority.bind(this),requestScheduler:this._requestScheduler,onLoad:this.onTileLoad,onError:this.opts.onTileError}),s}_getNearestAncestor(e){let{_minZoom:t=0}=this,i=e.index;for(;this.getTileZoom(i)>t;){i=this.getParentIndex(i);let s=this._getTile(i);if(s)return s}return null}};function zE(r){for(let e of r)e.state=0;for(let e of r)e.isSelected&&!gm(e)&&Xc(e);for(let e of r)e.isVisible=!!(e.state&jA)}function qE(r){for(let t of r)t.state=0;for(let t of r)t.isSelected&&gm(t);let e=Array.from(r).sort((t,i)=>t.zoom-i.zoom);for(let t of e)if(t.isVisible=!!(t.state&jA),t.children&&(t.isVisible||t.state&hm))for(let i of t.children)i.state=hm;else t.isSelected&&Xc(t)}function gm(r){let e=r;for(;e;){if(e.isLoaded||e.content)return e.state|=jA,!0;e=e.parent}return!1}function Xc(r){for(let e of r.children)e.isLoaded||e.content?e.state|=jA:Xc(e)}var HE={TilesetClass:qi,data:{type:`data`,value:[]},dataComparator:vn.equal,renderSubLayers:{type:`function`,value:r=>new Lr(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:is,zRange:null,maxRequests:6,debounceTime:0,zoomOffset:0,visibleMinZoom:null,visibleMaxZoom:null};var os=class extends _m$1{initializeState(){this.state={tileset:null,isLoaded:!1}}finalizeState(){this.state?.tileset?.finalize()}get isLoaded(){return!!this.state?.tileset?.selectedTiles?.every(e=>e.isLoaded&&(!e.content||!e.layers||e.layers.every(t=>t.isLoaded)))}shouldUpdateState({changeFlags:e}){return e.somethingChanged}updateState({changeFlags:e}){let{tileset:t}=this.state,i=e.propsOrDataChanged||e.updateTriggersChanged,s=e.dataChanged||e.updateTriggersChanged&&(e.updateTriggersChanged.all||e.updateTriggersChanged.getTileData);t?i&&(t.setOptions(this._getTilesetOptions()),s?t.reloadAll():t.tiles.forEach(a=>{a.layers=null})):(t=new this.props.TilesetClass(this._getTilesetOptions()),this.setState({tileset:t})),this._updateTileset()}_getTilesetOptions(){let{tileSize:e,maxCacheSize:t,maxCacheByteSize:i,refinementStrategy:s,extent:a,maxZoom:d,minZoom:m,maxRequests:b,debounceTime:_,zoomOffset:x,visibleMinZoom:w,visibleMaxZoom:C}=this.props;return{maxCacheSize:t,maxCacheByteSize:i,maxZoom:d,minZoom:m,tileSize:e,refinementStrategy:s,extent:a,maxRequests:b,debounceTime:_,zoomOffset:x,visibleMinZoom:w,visibleMaxZoom:C,getTileData:this.getTileData.bind(this),onTileLoad:this._onTileLoad.bind(this),onTileError:this._onTileError.bind(this),onTileUnload:this._onTileUnload.bind(this)}}_updateTileset(){let e=this.state.tileset,{zRange:t,modelMatrix:i}=this.props,s=e.update(this.context.viewport,{zRange:t,modelMatrix:i}),{isLoaded:a}=e,d=this.state.isLoaded!==a,m=this.state.frameNumber!==s;a&&(d||m)&&this._onViewportLoad(),m&&this.setState({frameNumber:s}),this.state.isLoaded=a}_onViewportLoad(){let{tileset:e}=this.state,{onViewportLoad:t}=this.props;t&&t(e.selectedTiles)}_onTileLoad(e){this.props.onTileLoad(e),e.layers=null,this.setNeedsUpdate()}_onTileError(e,t){this.props.onTileError(e),t.layers=null,this.setNeedsUpdate()}_onTileUnload(e){this.props.onTileUnload(e)}getTileData(e){let{data:t,getTileData:i,fetch:s}=this.props,{signal:a}=e;return e.url=typeof t==`string`||Array.isArray(t)?on(t,e):null,i?i(e):s&&e.url?s(e.url,{propName:`data`,layer:this,signal:a}):null}renderSubLayers(e){return this.props.renderSubLayers(e)}getSubLayerPropsByTile(e){return null}getPickingInfo(e){let t=e.sourceLayer,i=t.props.tile,s=e.info;return s.picked&&(s.tile=i),s.sourceTile=i,s.sourceTileSubLayer=t,s}_updateAutoHighlight(e){e.sourceTileSubLayer.updateAutoHighlight(e)}renderLayers(){let{visibleMinZoom:e,visibleMaxZoom:t,minZoom:i,extent:s$2}=this.props,a=this.context.viewport.zoom;if(e!=null&&a<e||t!=null&&a>t||i!=null&&!s$2&&a<i){for(let m of this.state.tileset.tiles)m.layers=null;return[]}return this.state.tileset.tiles.map(m=>{let b=this.getSubLayerPropsByTile(m);if(!(!m.isLoaded&&!m.content))if(m.layers)b&&m.layers[0]&&Object.keys(b).some(_=>m.layers[0].props[_]!==b[_])&&(m.layers=m.layers.map(_=>_.clone(b)));else{let _=this.renderSubLayers(s(r(r({},this.props),this.getSubLayerProps({id:m.id,updateTriggers:this.props.updateTriggers})),{data:m.content,_offset:0,tile:m}));m.layers=oe(_,Boolean).map(x=>x.clone(r({tile:m},b)))}return m.layers})}filterSubLayer({layer:e,cullRect:t}){let{tile:i}=e.props,{modelMatrix:s}=this.props;return this.state.tileset.isTileVisible(i,t,s?new U(s):null)}};os.defaultProps=HE;os.layerName=`TileLayer`;var Hi=os;var QE=`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 bm=`layout(std140) uniform tripsUniforms {
|
|
14
|
+
bool fadeTrail;
|
|
15
|
+
float trailLength;
|
|
16
|
+
float currentTime;
|
|
17
|
+
} trips;
|
|
18
|
+
`;var Tm={name:`trips`,source:QE,vs:bm,fs:bm,uniformTypes:{fadeTrail:`f32`,trailLength:`f32`,currentTime:`f32`}};function _m(r,e=r.length,t=!1){let i=new Float32Array(e*2);if(r.length===0)return i;let s=e>r.length,a=t?r.length:Math.max(r.length-1,1);for(let d=0;d<e;d++){let m=s?d%a:Math.min(d,r.length-1),b=s?(m+1)%a:Math.min(m+1,r.length-1);i[d*2]=r[m],i[d*2+1]=r[b]}return i}var ym={" @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 WE={fadeTrail:!0,trailLength:{type:`number`,value:120,min:0},currentTime:{type:`number`,value:0,min:0},getTimestamps:{type:`accessor`,value:r=>r.timestamps}};var KE={"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 ss=class extends ze{getShaders(){let e=super.getShaders();return e.inject=this.context.device.type===`webgpu`?ym:KE,e.modules=[...e.modules,Tm],e}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(e,{data:t,props:i}){let{pathTesselator:s}=this.state,{instanceCount:a,vertexStarts:d}=s,m=new Float32Array(a*2),{iterable:b,objectInfo:_}=Yr(t);for(let x of b){_.index++;let w=d[_.index],C=d[_.index+1]??a;if(C<=w)continue;let R=i.getTimestamps?.(x,_)??[];m.set(_m(R,C-w,i._pathType===`loop`),w*2)}e.startIndices=d,e.value=m}draw(e){let{fadeTrail:t,trailLength:i,currentTime:s}=this.props,a={fadeTrail:t,trailLength:i,currentTime:s};this.state.model.shaderInputs.setProps({trips:a}),super.draw(e)}};ss.layerName=`TripsLayer`;ss.defaultProps=WE;var XE=ss;var YE=10;function JE(r$8,e){let t;return r$8==null?t=e:typeof r$8==`object`?t=s(r({},r$8),{coverage:e}):t={getHexagon:r$8,coverage:e},t}var ZE=s(r({},er.defaultProps),{highPrecision:`auto`,coverage:{type:`number`,min:0,max:1,value:1},centerHexagon:null,getHexagon:{type:`accessor`,value:r=>r.hexagon},extruded:!0});var Qi=class r extends _m$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:s,objectInfo:a}=Yr(this.props.data);for(let d of s){a.index++;let m=this.props.getHexagon(d,a),b=op(m);if(e<0){if(e=b,!this.props.highPrecision)break}else if(e!==b){i=!0;break}if(ip(m)){t=!0;break}}return{resolution:e,edgeLengthKM:e>=0?lp(e,`km`):0,hasMultipleRes:i,hasPentagon:t}}_shouldUseHighPrecision(){if(this.props.highPrecision===`auto`){let{resolution:e,hasPentagon:t,hasMultipleRes:i}=this.state,{viewport:s}=this.context;return!!s?.resolution||i||t||e>=0&&e<=5}return this.props.highPrecision}_updateVertices(e){if(this._shouldUseHighPrecision())return;let{resolution:t,edgeLengthKM:i,centerHex:s}=this.state;if(t<0)return;let a=this.props.centerHexagon||sp(e.latitude,e.longitude,t);if(s===a)return;if(s)try{if(cp(s,a)*i<YE)return}catch{}let{unitsPerMeter:d}=e.distanceScales,m=cc(a),[b,_]=Do(a),[x,w]=e.projectFlat([_,b]);m=m.map(C=>{let R=e.projectFlat(C);return[(R[0]-x)/d[0],(R[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:s,wireframe:a,stroked:d,filled:m,lineWidthUnits:b,lineWidthScale:_,lineWidthMinPixels:x,lineWidthMaxPixels:w,getFillColor:C,getElevation:R,getLineColor:D,getLineWidth:k,transitions:W,updateTriggers:j}=this.props;return{elevationScale:e,extruded:s,coverage:i,wireframe:a,stroked:d,filled:m,lineWidthUnits:b,lineWidthScale:_,lineWidthMinPixels:x,lineWidthMaxPixels:w,material:t,getElevation:R,getFillColor:C,getLineColor:D,getLineWidth:k,transitions:W,updateTriggers:{getFillColor:j.getFillColor,getElevation:j.getElevation,getLineColor:j.getLineColor,getLineWidth:j.getLineWidth}}}_renderPolygonLayer(){let{data:e,getHexagon:t,updateTriggers:i,coverage:s}=this.props,a=this.getSubLayerClass(`hexagon-cell-hifi`,er),d=this._getForwardProps();return d.updateTriggers.getPolygon=JE(i.getHexagon,s),new a(d,this.getSubLayerProps({id:`hexagon-cell-hifi`,updateTriggers:d.updateTriggers}),{data:e,_normalize:!1,_windingOrder:`CCW`,positionFormat:`XY`,getPolygon:(m,b)=>{return EA(cc(t(m,b),s))}})}_renderColumnLayer(){let{data:e,getHexagon:t,updateTriggers:i}=this.props,s=this.getSubLayerClass(`hexagon-cell`,Tt$1),a=this._getForwardProps();return a.updateTriggers.getPosition=i.getHexagon,new s(a,this.getSubLayerProps({id:`hexagon-cell`,flatShading:!0,updateTriggers:a.updateTriggers}),{data:e,diskResolution:6,radius:1,vertices:this.state.vertices,getPosition:up.bind(null,t)})}};Qi.defaultProps=ZE;Qi.layerName=`H3HexagonLayer`;Qi._checkH3Lib=()=>{};var Yc=Qi;var $E={getHexagons:{type:`accessor`,value:r=>r.hexagons}};var As=class extends Fr{initializeState(){Yc._checkH3Lib()}updateState({props:e,changeFlags:t}){if(t.dataChanged||t.updateTriggersChanged&&t.updateTriggersChanged.getHexagons){let{data:i,getHexagons:s}=e,a=[],{iterable:d,objectInfo:m}=Yr(i);for(let b of d){m.index++;let x=ap(s(b,m),!0);for(let w of x){for(let C of w)wA(C);a.push(this.getSubLayerRow({polygon:w},b,m.index))}}this.setState({polygons:a})}}indexToBounds(){let{getElevation:e,getFillColor:t,getLineColor:i,getLineWidth:s}=this.props;return{data:this.state.polygons,getPolygon:a=>a.polygon,getElevation:this.getSubLayerAccessor(e),getFillColor:this.getSubLayerAccessor(t),getLineColor:this.getSubLayerAccessor(i),getLineWidth:this.getSubLayerAccessor(s)}}};As.layerName=`H3ClusterLayer`;As.defaultProps=$E;var ev=As;var Jc=Math.PI/180;var VA=new Float32Array(16);var xm=new Float32Array(12);function wm(r,e,t){let i=e[0]*Jc,s=e[1]*Jc,a=e[2]*Jc,d=Math.sin(a),m=Math.sin(i),b=Math.sin(s),_=Math.cos(a),x=Math.cos(i),w=Math.cos(s),C=t[0],R=t[1],D=t[2];r[0]=C*w*x,r[1]=C*b*x,r[2]=C*-m,r[3]=R*(-b*_+w*m*d),r[4]=R*(w*_+b*m*d),r[5]=R*x*d,r[6]=D*(b*d+w*m*_),r[7]=D*(-w*d+b*m*_),r[8]=D*x*_}function Em(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 zA={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:s,getScale:a,getTranslation:d,getTransformMatrix:m}=this.props,b=Array.isArray(m),_=b&&m.length===16,x=Array.isArray(a),w=Array.isArray(s),C=Array.isArray(d),R=_||!b&&!!m(i[0]);R?r.constant=_:r.constant=w&&x&&C;let D=r.value;if(r.constant){let k;R?(VA.set(m),k=Em(VA)):(k=xm,wm(k,s,a),k.set(d,9)),r.value=new Float32Array(k)}else{let k=e*r.size,{iterable:W,objectInfo:j}=Yr(i,e,t);for(let V of W){j.index++;let J;if(R)VA.set(_?m:m(V,j)),J=Em(VA);else{J=xm;let $=w?s:s(V,j),te=x?a:a(V,j);wm(J,$,te),J.set(C?d:d(V,j),9)}D[k++]=J[0],D[k++]=J[1],D[k++]=J[2],D[k++]=J[3],D[k++]=J[4],D[k++]=J[5],D[k++]=J[6],D[k++]=J[7],D[k++]=J[8],D[k++]=J[9],D[k++]=J[10],D[k++]=J[11]}}}};function qA(r,e){return e===`cartesian`||e===`meter-offsets`||e==="default"&&!r.isGeospatial}var tv=`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 vm=`layout(std140) uniform simpleMeshUniforms {
|
|
59
|
+
float sizeScale;
|
|
60
|
+
bool composeModelMatrix;
|
|
61
|
+
bool hasTexture;
|
|
62
|
+
bool flatShading;
|
|
63
|
+
} simpleMesh;
|
|
64
|
+
`;var Sm={name:`simpleMesh`,source:tv,vs:vm,fs:vm,uniformTypes:{sizeScale:`f32`,composeModelMatrix:`f32`,hasTexture:`f32`,flatShading:`f32`}};var Cm=`#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 Im=`#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 Mm=`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 Zc(r){let e=1/0,t=1/0,i=1/0,s=-1/0,a=-1/0,d=-1/0,m=r.POSITION?r.POSITION.value:[],b=m&&m.length;for(let _=0;_<b;_+=3){let x=m[_],w=m[_+1],C=m[_+2];e=x<e?x:e,t=w<t?w:t,i=C<i?C:i,s=x>s?x:s,a=w>a?w:a,d=C>d?C:d}return[[e,t,i],[s,a,d]]}function $c(r){let e=r.positions||r.POSITION;S.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 s=r.NORMAL||r.normals;s||(s={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:s,texCoords:a}}function Lm(r$9){return r$9 instanceof re?(r$9.attributes=$c(r$9.attributes),r$9):r$9.attributes?new re(s(r({},r$9),{topology:`triangle-list`,attributes:$c(r$9.attributes)})):new re({topology:`triangle-list`,attributes:$c(r$9)})}var nv={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 as=class extends ao$1{getShaders(){return super.getShaders({vs:Cm,fs:Im,source:Mm,modules:[Wa$1,ma$1,Ko$1,Ka,Sm]})}getBounds(){if(this.props._instanced)return super.getBounds();let e=this.state.positionBounds;if(e)return e;let{mesh:t}=this.props;if(!t)return null;if(e=t.header?.boundingBox,!e){let{attributes:i}=Lm(t);i.POSITION=i.POSITION||i.positions,e=Zc(i)}return this.state.positionBounds=e,e}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:zA}),this.setState({emptyTexture:this.context.device.createTexture({data:new Uint8Array(4),width:1,height:1})})}updateState(e){super.updateState(e);let{props:t,oldProps:i,changeFlags:s}=e;if(t.mesh!==i.mesh||s.extensionsChanged){if(this.state.positionBounds=null,this.state.model?.destroy(),t.mesh){this.state.model=this.getModel(t.mesh);let a=t.mesh.attributes||t.mesh;this.setState({hasNormals:!!(a.NORMAL||a.normals)})}this.getAttributeManager().invalidateAll()}t.texture!==i.texture&&t.texture instanceof C&&this.setTexture(t.texture),this.state.model&&this.state.model.setTopology(this.props.wireframe?`line-strip`:`triangle-list`)}finalizeState(e){super.finalizeState(e),this.state.emptyTexture.delete()}draw({uniforms:e}){let{model:t}=this.state;if(!t)return;let{viewport:i,renderPass:s}=this.context,{sizeScale:a,coordinateSystem:d,_instanced:m}=this.props,b={sizeScale:a,composeModelMatrix:!m||qA(i,d),flatShading:!this.state.hasNormals};t.shaderInputs.setProps({simpleMesh:b}),t.draw(s)}get isLoaded(){return!!(this.state?.model&&super.isLoaded)}getModel(e){let t=new De(this.context.device,s(r({},this.getShaders()),{id:this.props.id,bufferLayout:this.getAttributeManager().getBufferLayouts(),geometry:Lm(e),isInstanced:!0}));return t.shaderInputs.setProps({simpleMesh:this.getTextureProps(this.props.texture)}),t}setTexture(e){let{model:t}=this.state;t&&t.shaderInputs.setProps({simpleMesh:this.getTextureProps(e)})}getTextureProps(e){let t=e||this.state.emptyTexture;return s(r({},this.context.device.type===`webgpu`?{simpleMeshTexture:t}:{sampler:t}),{hasTexture:!!e})}};as.defaultProps=nv;as.layerName=`SimpleMeshLayer`;var Wi=as;var iv=`
|
|
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 ov=`#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 sv=`#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 tl(r$10,e){let t=e.materialFactory||new mt$1(r$10,{modules:[rd$1]}),i=r({},e.parsedPPBRMaterial.uniforms);delete i.camera;let s=Object.fromEntries(Object.entries(r(r({},i),e.parsedPPBRMaterial.bindings)).filter(([d,m])=>t.ownsBinding(d)&&Av(m))),a=t.createMaterial({id:e.id,bindings:s});return a.setProps({pbrMaterial:i}),a}function Rm(r$11,e){let{id:t,geometry:i,parsedPPBRMaterial:s$3,vertexCount:a,modelOptions:d={},instanceMatrices:m,morphTargets:b=[]}=e,_=d.userData?.gltfAnimatedCrowd;if(_&&m)throw new Error(`Nested glTF crowd instancing is unsupported`);f.info(4,`createGLTFModel defines: `,s$3.defines)();let x=[],w={depthWriteEnabled:!0,depthCompare:`less`,depthFormat:`depth24plus`,cullMode:`back`},C$1={},R=[],D=[],k=[],W=!!_?.gpuAnimation;if(m||_)for(let St=0;St<4;St++){let Ot=new Float32Array((_?.capacity||m?.length||0)*4);m?.forEach((ai,Gr)=>{for(let fn=0;fn<4;fn++)Ot[Gr*4+fn]=ai[St*4+fn]});let ar=`instanceModelMatrixCol${St}`,Rn=r$11.createBuffer({id:`${t||`gltf`}-${ar}`,data:Ot,usage:P.VERTEX|P.COPY_DST});C$1[ar]=Rn,R.push({name:ar,format:`float32x4`,stepMode:`instance`}),x.push(Rn),D.push(Rn),k.push(Ot)}let j,V,J,$;if(_&&W){j=new Float32Array(_.capacity*4),J=new Float32Array(_.capacity*4);for(let[St,Ot]of[[`instanceAnimationFrames`,j],[`instanceAnimationBlend`,J]]){let ar=r$11.createBuffer({id:`${t||`gltf`}-${St}`,data:Ot,usage:P.VERTEX|P.COPY_DST});C$1[St]=ar,R.push({name:St,format:`float32x4`,stepMode:`instance`}),x.push(ar),St===`instanceAnimationFrames`?V=ar:$=ar}}let te=!!s$3.defines.HAS_SKIN,ne=!!(_&&te&&!W),le,Y;_&&ne&&(Y=new Float32Array(_.capacity*_.jointsPerInstance*16),le=r$11.type===`webgpu`?r$11.createBuffer({id:`${t||`gltf`}-crowd-joint-matrices`,byteLength:Y.byteLength,usage:P.STORAGE|P.COPY_DST}):r$11.createTexture({id:`${t||`gltf`}-crowd-joint-matrices`,format:`rgba32float`,width:_.jointsPerInstance*4,height:_.capacity,usage:C.SAMPLE|C.COPY_DST,sampler:{minFilter:`nearest`,magFilter:`nearest`,mipmapFilter:`nearest`}}),x.push(le));let z=_?b.length:0,O=Math.floor((i.attributes.POSITION?.value.length||0)/3),ue,we,Ee;if(_&&z>0&&O>0){let St=new Float32Array(z*3*O*4);for(let[Ot,ar]of b.entries())for(let[Rn,ai]of[`POSITION`,`NORMAL`,`TANGENT`].entries()){let Gr=ar[ai];if(!Gr)continue;let fn=ai===`TANGENT`&&Gr.length===O*4?4:3;for(let ci=0;ci<O;ci++){let To=((Ot*3+Rn)*O+ci)*4,_o=ci*fn;St[To]=Gr[_o]||0,St[To+1]=Gr[_o+1]||0,St[To+2]=Gr[_o+2]||0}}if(ue=el(r$11,`${t||`gltf`}-crowd-morph-targets`,St,O,z*3),x.push(ue),!W){let Ot=Math.ceil(z/4);we=new Float32Array(_.capacity*Ot*4),Ee=el(r$11,`${t||`gltf`}-crowd-morph-weights`,we,Ot,_.capacity),x.push(Ee)}}let xe=te&&_?_.jointsPerInstance:0,Ne=4+xe*4+z,Fe,Oe;_?.gpuAnimation&&(Oe=new Float32Array(_.gpuAnimation.frameCount*Ne*4),Fe=el(r$11,`${t||`gltf`}-crowd-animation-frames`,Oe,Ne,_.gpuAnimation.frameCount),x.push(Fe));let Ge=iv;for(let[St,Ot]of[[`CROWD_JOINTS_PER_INSTANCE`,_?.jointsPerInstance||0],[`CROWD_MORPH_VERTEX_COUNT`,O],[`CROWD_MORPH_TARGET_COUNT`,z],[`CROWD_ANIMATION_JOINT_COUNT`,xe],[`CROWD_ANIMATION_FRAME_STRIDE`,Ne]])Ge=Ge.replaceAll(`u32(${St})`,`u32(${Ot})`);let qe=s(r(r({id:t,source:Ge,vs:ov,fs:sv,geometry:i,topology:i.topology,vertexCount:a,modules:[rd$1,Zp$1,..._?[ed$1]:[]]},d),m||_?{attributes:r(r({},d.attributes),C$1),bufferLayout:[...d.bufferLayout||[],...R],instanceCount:m?.length||0,isInstanced:!0}:{}),{defines:r(r(r(r(r(r(r({},s$3.defines),d.defines),m||_?{HAS_GLTF_INSTANCING:!0}:{}),ne?{HAS_INSTANCED_SKIN:!0,CROWD_JOINTS_PER_INSTANCE:_.jointsPerInstance}:{}),W?{HAS_GPU_CROWD_ANIMATION:!0,CROWD_ANIMATION_FRAME_STRIDE:Ne}:{}),ue?{HAS_INSTANCED_MORPH:!0,CROWD_MORPH_TARGET_COUNT:z}:{}),_?{CROWD_ANIMATION_JOINT_COUNT:xe}:{}),parameters:r(r(r({},w),s$3.parameters),d.parameters)}),je=e.material||tl(r$11,{id:t?`${t}-material`:void 0,parsedPPBRMaterial:s$3});qe.material=je;let He=new De(r$11,qe),vt=r(r(r(r({},s$3.uniforms),d.uniforms),s$3.bindings),d.bindings),Za=av(He.shaderInputs.getModules(),je,vt);He.shaderInputs.setProps(Za),le&&He.shaderInputs.setProps({skin:{jointMatrices:[],skinJointMatrices:le}}),(Fe||ue||Ee)&&He.shaderInputs.setProps({gpuAnimation:r(r(r({},Fe?{gpuAnimationFrames:Fe}:{}),ue?{gpuMorphTargets:ue}:{}),Ee?{gpuMorphWeights:Ee}:{})});let bo=new gi({managedResources:x,model:He,bounds:e.bounds,instanceMatrices:m});return _&&(bo.userData.gltfAnimatedCrowd={transformBuffers:D,transformColumns:k,skinJointMatrices:le,jointMatrices:Y,jointsPerInstance:_.jointsPerInstance,morphTargetCount:z,morphTargetData:ue,morphWeights:we,morphWeightData:Ee,animationFrames:Fe,animationFrameValues:Oe,animationFrameStride:Ne,animationJointCount:xe,animationParameters:j,animationParameterBuffer:V,animationBlend:J,animationBlendBuffer:$}),bo}function el(r,e,t,i,s){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:s,usage:C.SAMPLE|C.COPY_DST,sampler:{minFilter:`nearest`,magFilter:`nearest`,mipmapFilter:`nearest`}});return a.writeData(t,{width:i,height:s}),a}function Av(r){return r instanceof P||r instanceof pi||r instanceof Y||r instanceof C||r instanceof Qe}function av(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 s={};for(let[a,d]of Object.entries(t)){if(d===void 0)continue;let m=i.get(a);!m||e.ownsModule(m)||(s[m]||={},s[m][a]=d)}return s}function Pm(r,e){let t=e.extensions?.EXT_mesh_gpu_instancing?.attributes;if(!t||typeof t!=`object`)return null;let i={},s;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(s!==void 0&&b.count!==s)throw new Error(`glTF instance attributes must have matching accessor counts`);s=b.count,i[d]={value:b.value,size:b.components||cv(b.type),count:b.count,normalized:!!b.normalized}}let a=[];for(let d=0;d<(s||0);d++){let m=rl(i.TRANSLATION,d,[0,0,0]),b=rl(i.ROTATION,d,[0,0,0,1]),_=rl(i.SCALE,d,[1,1,1]),x=Math.hypot(...b);if(x>0)for(let w=0;w<b.length;w++)b[w]/=x;a.push(new U().translate(m).multiplyRight(new U().fromQuaternion(b)).scale(_))}return{matrices:a,attributes:i}}function rl(r,e,t){if(!r)return[...t];let i=r.value;return t.map((s,a)=>{let d=i[e*r.size+a];return d===void 0?s: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 cv(r){switch(r){case`VEC2`:return 2;case`VEC3`:return 3;case`VEC4`:return 4;default:return 1}}function HA(r,e){r.userData.morphWeights=[...e];let t=r.userData.morphMeshes||[];for(let i of t)i.preorderTraversal(s=>{if(!(s instanceof gi))return;let a=s.userData.morphTargets;a&&(Yd$1(s.model,a.geometry,a.targets,e),s.userData.morphWeights=[...e])})}var Be;(function(r){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`})(Be||(Be={}));function lv(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 Nm(r,e,t){if(r!==Be.LINE_LOOP&&r!==Be.TRIANGLE_FAN)return{topology:lv(r)};let i=e?.length??t,s=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)(s),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 nl=[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 uv=new Map(nl.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 Fm(){return nl}function WA(r){let e=uv.get(r);if(!e)throw new Error(`Unknown PBR texture transform slot ${r}`);return e}function KA(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 il(r){return r?.extensions?.KHR_texture_transform?.texCoord??r?.texCoord??0}function km(r){return nl.find(e=>e.pathSegments.length===r.length&&e.pathSegments.every((t,i)=>r[i]===t))||null}function QA(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 Om(r,e){let t=new tt(QA(r)),i=new tt(QA(e)),s=new tt(t).invert();return Array.from(i.multiplyRight(s))}function Dm(r$12={}){let e=r$12.wrapS??r$12.parameters?.[Be.TEXTURE_WRAP_S],t=r$12.wrapT??r$12.parameters?.[Be.TEXTURE_WRAP_T],i=r$12.magFilter??r$12.parameters?.[Be.TEXTURE_MAG_FILTER],s=r$12.minFilter??r$12.parameters?.[Be.TEXTURE_MIN_FILTER],a=Bm(e),d=Bm(t),m=fv(i);return r(r(r(r({},a?{addressModeU:a}:{}),d?{addressModeV:d}:{}),m?{magFilter:m}:{}),hv(s))}function Bm(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 fv(r){switch(r){case Be.NEAREST:return`nearest`;case Be.LINEAR:return`linear`;default:return}}function hv(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 dv={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 cs(r,e,t,i){let s={defines:{MANUAL_SRGB:!0},bindings:{},uniforms:{camera:[0,0,0],metallicRoughnessValues:[1,1]},parameters:{},glParameters:{},generatedTextures:[]};s.defines.USE_TEX_LOD=!0;let{imageBasedLightingEnvironment:a}=i;return a&&(s.bindings.pbr_diffuseEnvSampler=a.diffuseEnvSampler.texture,s.bindings.pbr_specularEnvSampler=a.specularEnvSampler.texture,s.bindings.pbr_brdfLUT=a.brdfLutTexture.texture,s.uniforms.IBLenabled=!0,s.uniforms.scaleIBLAmbient=[1,1]),i?.pbrDebug&&(s.defines.PBR_DEBUG=!0,s.uniforms.scaleDiffBaseMR=[0,0,0,0],s.uniforms.scaleFGDSpec=[0,0,0,0]),Br(t,`NORMAL`)&&(s.defines.HAS_NORMALS=!0),Br(t,`TANGENT`)&&i?.useTangents&&(s.defines.HAS_TANGENTS=!0),Br(t,`TEXCOORD_0`)&&(s.defines.HAS_UV=!0),Br(t,`TEXCOORD_1`)&&(s.defines.HAS_UV_1=!0),Br(t,`JOINTS_0`)&&Br(t,`WEIGHTS_0`)&&(s.defines.HAS_SKIN=!0),Br(t,`COLOR_0`)&&(s.defines.HAS_COLORS=!0),i?.imageBasedLightingEnvironment&&(s.defines.USE_IBL=!0),i?.lights&&(s.defines.USE_LIGHTS=!0),e&&(i.validateAttributes!==!1&&pv(e,t),gv(r,e,s,t,i.gltf)),s}function pv(r,e){let t=Um(r,0);t.length>0&&!Br(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=Um(r,1);if(i.length>0&&!Br(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)||Br(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 Um(r,e){let t=[];for(let i of Fm()){let s=mv(r,i.pathSegments);s&&il(s)===e&&t.push(i.displayName)}return t}function Br(r,e){return dv[e].some(t=>!!r[t])}function mv(r,e){let t=r;for(let i of e)if(t=t?.[i],!t)return null;return t}function gv(r,e,t,i,s){if(t.uniforms.unlit=!!(e.unlit||e.extensions?.KHR_materials_unlit),e.pbrMetallicRoughness&&_v(r,e.pbrMetallicRoughness,t,i,s),e.normalTexture){_t(r,e.normalTexture,`pbr_normalSampler`,t,{featureOptions:{define:`HAS_NORMALMAP`,enabledUniformName:`normalMapEnabled`},gltf:s,attributes:i,textureTransformSlot:`normal`});let{scale:a=1}=e.normalTexture;t.uniforms.normalScale=a}if(e.occlusionTexture){_t(r,e.occlusionTexture,`pbr_occlusionSampler`,t,{featureOptions:{define:`HAS_OCCLUSIONMAP`,enabledUniformName:`occlusionMapEnabled`},gltf:s,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&&_t(r,e.emissiveTexture,`pbr_emissiveSampler`,t,{featureOptions:{define:`HAS_EMISSIVEMAP`,enabledUniformName:`emissiveMapEnabled`},gltf:s,attributes:i,textureTransformSlot:`emissive`}),yv(r,e.extensions,t,s,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`)(),bv(t)}}function bv(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 Tv(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 _v(r,e,t,i,s){e.baseColorTexture&&_t(r,e.baseColorTexture,`pbr_baseColorSampler`,t,{featureOptions:{define:`HAS_BASECOLORMAP`,enabledUniformName:`baseColorMapEnabled`},gltf:s,attributes:i,textureTransformSlot:`baseColor`}),t.uniforms.baseColorFactor=e.baseColorFactor||[1,1,1,1],e.metallicRoughnessTexture&&_t(r,e.metallicRoughnessTexture,`pbr_metallicRoughnessSampler`,t,{featureOptions:{define:`HAS_METALROUGHNESSMAP`,enabledUniformName:`metallicRoughnessMapEnabled`},gltf:s,attributes:i,textureTransformSlot:`metallicRoughness`});let{metallicFactor:a=1,roughnessFactor:d=1}=e;t.uniforms.metallicRoughnessValues=[a,d]}function yv(r,e,t,i,s={}){e&&(xv(e)&&(t.defines.USE_MATERIAL_EXTENSIONS=!0),wv(r,e.KHR_materials_specular,t,i,s),Ev(e.KHR_materials_ior,t),Sv(r,e.EXT_materials_bump,t,i,s),vv(r,e.KHR_materials_transmission,t,i,s),Cv(r,e.KHR_materials_diffuse_transmission,t,i,s),Iv(r,e.KHR_materials_volume,t,i,s),Mv(r,e.KHR_materials_volume_scatter,e.KHR_materials_volume,t,i,s),Lv(e.KHR_materials_dispersion,t),Rv(r,e.KHR_materials_clearcoat,t,i,s),Pv(r,e.KHR_materials_sheen,t,i,s),Nv(r,e.KHR_materials_iridescence,t,i,s),Fv(r,e.KHR_materials_anisotropy,t,i,s),kv(e.KHR_materials_emissive_strength,t))}function xv(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 wv(r,e,t,i,s={}){e&&(e.specularColorFactor&&(t.uniforms.specularColorFactor=e.specularColorFactor),e.specularFactor!==void 0&&(t.uniforms.specularIntensityFactor=e.specularFactor),e.specularColorTexture&&_t(r,e.specularColorTexture,`pbr_specularColorSampler`,t,{featureOptions:{define:`HAS_SPECULARCOLORMAP`,enabledUniformName:`specularColorMapEnabled`},gltf:i,attributes:s,textureTransformSlot:`specularColor`}),e.specularTexture&&_t(r,e.specularTexture,`pbr_specularIntensitySampler`,t,{featureOptions:{define:`HAS_SPECULARINTENSITYMAP`,enabledUniformName:`specularIntensityMapEnabled`},gltf:i,attributes:s,textureTransformSlot:`specularIntensity`}))}function Ev(r,e){r?.ior!==void 0&&(e.uniforms.ior=r.ior)}function vv(r,e,t,i,s={}){e&&(e.transmissionFactor!==void 0&&(t.uniforms.transmissionFactor=e.transmissionFactor),e.transmissionTexture&&_t(r,e.transmissionTexture,`pbr_transmissionSampler`,t,{featureOptions:{define:`HAS_TRANSMISSIONMAP`,enabledUniformName:`transmissionMapEnabled`},gltf:i,attributes:s,textureTransformSlot:`transmission`}),((e.transmissionFactor??0)>0||e.transmissionTexture)&&(f.warn(`KHR_materials_transmission uses a premultiplied-alpha blending approximation and may require mesh sorting`)(),Tv(t)))}function Sv(r,e,t,i,s={}){e&&(t.uniforms.bumpFactor=Math.max(e.bumpFactor??1,0),e.bumpTexture&&_t(r,e.bumpTexture,`pbr_bumpSampler`,t,{featureOptions:{define:`HAS_BUMPMAP`,enabledUniformName:`bumpMapEnabled`},gltf:i,attributes:s,textureTransformSlot:`bump`}))}function Cv(r,e,t,i,s={}){e&&(t.uniforms.diffuseTransmissionFactor=Math.min(Math.max(e.diffuseTransmissionFactor??0,0),1),t.uniforms.diffuseTransmissionColorFactor=e.diffuseTransmissionColorFactor||[1,1,1],e.diffuseTransmissionTexture&&_t(r,e.diffuseTransmissionTexture,`pbr_diffuseTransmissionSampler`,t,{featureOptions:{define:`HAS_DIFFUSETRANSMISSIONMAP`,enabledUniformName:`diffuseTransmissionMapEnabled`},gltf:i,attributes:s,textureTransformSlot:`diffuseTransmission`}),e.diffuseTransmissionColorTexture&&_t(r,e.diffuseTransmissionColorTexture,`pbr_diffuseTransmissionColorSampler`,t,{featureOptions:{define:`HAS_DIFFUSETRANSMISSIONCOLORMAP`,enabledUniformName:`diffuseTransmissionColorMapEnabled`},gltf:i,attributes:s,textureTransformSlot:`diffuseTransmissionColor`}))}function Iv(r,e,t,i,s={}){e&&(e.thicknessFactor!==void 0&&(t.uniforms.thicknessFactor=e.thicknessFactor),e.thicknessTexture&&_t(r,e.thicknessTexture,`pbr_thicknessSampler`,t,{featureOptions:{define:`HAS_THICKNESSMAP`},gltf:i,attributes:s,textureTransformSlot:`thickness`}),e.attenuationDistance!==void 0&&(t.uniforms.attenuationDistance=e.attenuationDistance),e.attenuationColor&&(t.uniforms.attenuationColor=e.attenuationColor))}function Mv(r,e,t,i,s,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&&_t(r,e.multiscatterColorTexture,`pbr_multiscatterColorSampler`,i,{featureOptions:{define:`HAS_MULTISCATTERCOLORMAP`,enabledUniformName:`multiscatterColorMapEnabled`},gltf:s,attributes:a,textureTransformSlot:`multiscatterColor`}))}function Lv(r,e){r?.dispersion!==void 0&&(e.uniforms.dispersion=Math.max(r.dispersion,0))}function Rv(r,e,t,i,s={}){e&&(e.clearcoatFactor!==void 0&&(t.uniforms.clearcoatFactor=e.clearcoatFactor),e.clearcoatRoughnessFactor!==void 0&&(t.uniforms.clearcoatRoughnessFactor=e.clearcoatRoughnessFactor),e.clearcoatTexture&&_t(r,e.clearcoatTexture,`pbr_clearcoatSampler`,t,{featureOptions:{define:`HAS_CLEARCOATMAP`,enabledUniformName:`clearcoatMapEnabled`},gltf:i,attributes:s,textureTransformSlot:`clearcoat`}),e.clearcoatRoughnessTexture&&_t(r,e.clearcoatRoughnessTexture,`pbr_clearcoatRoughnessSampler`,t,{featureOptions:{define:`HAS_CLEARCOATROUGHNESSMAP`,enabledUniformName:`clearcoatRoughnessMapEnabled`},gltf:i,attributes:s,textureTransformSlot:`clearcoatRoughness`}),e.clearcoatNormalTexture&&_t(r,e.clearcoatNormalTexture,`pbr_clearcoatNormalSampler`,t,{featureOptions:{define:`HAS_CLEARCOATNORMALMAP`},gltf:i,attributes:s,textureTransformSlot:`clearcoatNormal`}))}function Pv(r,e,t,i,s={}){e&&(e.sheenColorFactor&&(t.uniforms.sheenColorFactor=e.sheenColorFactor),e.sheenRoughnessFactor!==void 0&&(t.uniforms.sheenRoughnessFactor=e.sheenRoughnessFactor),e.sheenColorTexture&&_t(r,e.sheenColorTexture,`pbr_sheenColorSampler`,t,{featureOptions:{define:`HAS_SHEENCOLORMAP`,enabledUniformName:`sheenColorMapEnabled`},gltf:i,attributes:s,textureTransformSlot:`sheenColor`}),e.sheenRoughnessTexture&&_t(r,e.sheenRoughnessTexture,`pbr_sheenRoughnessSampler`,t,{featureOptions:{define:`HAS_SHEENROUGHNESSMAP`,enabledUniformName:`sheenRoughnessMapEnabled`},gltf:i,attributes:s,textureTransformSlot:`sheenRoughness`}))}function Nv(r,e,t,i,s={}){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&&_t(r,e.iridescenceTexture,`pbr_iridescenceSampler`,t,{featureOptions:{define:`HAS_IRIDESCENCEMAP`,enabledUniformName:`iridescenceMapEnabled`},gltf:i,attributes:s,textureTransformSlot:`iridescence`}),e.iridescenceThicknessTexture&&_t(r,e.iridescenceThicknessTexture,`pbr_iridescenceThicknessSampler`,t,{featureOptions:{define:`HAS_IRIDESCENCETHICKNESSMAP`},gltf:i,attributes:s,textureTransformSlot:`iridescenceThickness`}))}function Fv(r,e,t,i,s={}){e&&(e.anisotropyStrength!==void 0&&(t.uniforms.anisotropyStrength=e.anisotropyStrength),e.anisotropyRotation!==void 0&&(t.uniforms.anisotropyRotation=e.anisotropyRotation),e.anisotropyTexture&&_t(r,e.anisotropyTexture,`pbr_anisotropySampler`,t,{featureOptions:{define:`HAS_ANISOTROPYMAP`,enabledUniformName:`anisotropyMapEnabled`},gltf:i,attributes:s,textureTransformSlot:`anisotropy`}))}function kv(r,e){r?.emissiveStrength!==void 0&&(e.uniforms.emissiveStrength=r.emissiveStrength)}function _t(r$13,e,t,i,s={}){let{featureOptions:a={},gltf:d,attributes:m={},textureTransformSlot:b}=s,{define:_,enabledUniformName:x}=a,w=il(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&&!Br(m,`TEXCOORD_1`)){f.warn(`Skipping ${String(t)} because it requires TEXCOORD_1 but the primitive does not provide TEXCOORD_1`)();return}let C=Ov(e,d),R=C.texture?.source?.image;if(!R){f.warn(`Skipping unresolved glTF texture for ${String(t)}`)();return}let k=jm(r$13,R,{id:C.uniformName||C.id,sampler:r({addressModeU:`repeat`,addressModeV:`repeat`,minFilter:`linear`,magFilter:`linear`},Dm(C.texture.sampler))});if(i.bindings[t]=k,_&&(i.defines[_]=!0),x&&(i.uniforms[x]=!0),b){let W=WA(b);i.uniforms[W.uvSetUniform]=w,i.uniforms[W.uvTransformUniform]=QA(KA(e))}i.generatedTextures.push(k)}function jm(r$14,e,t){if(`compressed`in e)return Dv(r$14,e,{id:t.id,sampler:t.sampler});let i=t.width!==void 0&&t.height!==void 0?{width:t.width,height:t.height}:r$14.getExternalImageSize(e),s$4=t.sampler.mipmapFilter===`nearest`||t.sampler.mipmapFilter===`linear`,a=s$4?r$14.getMipLevelCount(i.width,i.height):1,d=r$14.createTexture(s(r(r({id:t.id,sampler:t.sampler,width:i.width,height:i.height,mipLevels:a},s$4?{usage:C.SAMPLE|C.RENDER|C.COPY_DST|C.COPY_SRC}:{}),t.colorSpace?{format:t.colorSpace===`srgb`?`rgba8unorm-srgb`:`rgba8unorm`}:{}),{data:e}));return a>1&&(r$14.type===`webgl`?d.generateMipmapsWebGL():r$14.type===`webgpu`&&r$14.generateMipmapsWebGPU(d)),d}function Ov(r$15,e){if(r$15.texture||r$15.index===void 0||!e?.textures)return r$15;let t=e.textures[r$15.index];return t?`texture`in t&&t.texture?s(r(r({},t),r$15),{texture:t.texture}):`source`in t?s(r({},r$15),{texture:t}):r$15:r$15}function XA(r$16,e){return r$16.createTexture(s(r({},e),{format:`rgba8unorm`,width:1,height:1,mipLevels:1}))}function Gm(r){return r.textureFormat}function Bv(r,e,t){let{blockWidth:i=1,blockHeight:s=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<s)break;a++}return a}function Dv(r$17,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`)(),XA(r$17,t);let s$5=i[0],a=s$5.width??e.width??0,d=s$5.height??e.height??0;if(a<=0||d<=0)return f.warn(`createCompressedTexture: base level has invalid dimensions, creating fallback`)(),XA(r$17,t);let m=Gm(s$5);if(!m)return f.warn(`createCompressedTexture: compressed image has no textureFormat, creating fallback`)(),XA(r$17,t);if(!r$17.isTextureFormatSupported(m))return f.warn(`createCompressedTexture: ${r$17.type} device does not support '${m}', creating fallback`)(),XA(r$17,t);let b=Bv(a,d,m),_=Math.min(i.length,b),x=1;for(let C=1;C<_;C++){let R=i[C];if(!R.data||R.width<=0||R.height<=0){f.warn(`createCompressedTexture: mip level ${C} has invalid data/dimensions, truncating`)();break}let D=Gm(R);if(D&&D!==m){f.warn(`createCompressedTexture: mip level ${C} format '${D}' differs from base '${m}', truncating`)();break}let k=Math.max(1,a>>C),W=Math.max(1,d>>C);if(R.width!==k||R.height!==W){f.warn(`createCompressedTexture: mip level ${C} dimensions ${R.width}x${R.height} don't match expected ${k}x${W}, truncating`)();break}x++}let w=r$17.createTexture(s(r({},t),{format:m,usage:C.TEXTURE|C.COPY_DST,width:a,height:d,mipLevels:x,data:s$5.data}));for(let C=1;C<x;C++)w.writeData(i[C].data,{width:i[C].width,height:i[C].height,mipLevel:C});return w}var Uv={modelOptions:{},pbrDebug:!1,imageBasedLightingEnvironment:void 0,lights:!0,useTangents:!1,useByteColors:!0,strictExtensions:!1};function Vm(r$18,e,t={}){let i=new Set,s$6=s(r(r({},Uv),t),{generatedTextures:i}),a=new mt$1(r$18,{modules:[rd$1]}),d=(e.materials||[]).map((k,W)=>tl(r$18,{id:Hv(k,W),parsedPPBRMaterial:sl(r$18,k,{},s(r({},s$6),{gltf:e,validateAttributes:!1})),materialFactory:a})),m=new Map;(e.materials||[]).forEach((k,W)=>{m.set(k.id,d[W])});let b=new Map;e.meshes.forEach((k,W)=>{let j=ol(r$18,k,e,m,s$6);b.set(k.id,j)});let _=new Map,x=new Map,w=new Set,C=new Set,R=new Set;return e.nodes.forEach((k,W)=>{let j=Gv(r$18,k,s$6);_.set(W,j),x.set(k.id,j)}),e.nodes.forEach((k,W)=>{if(_.get(W).add((k.children??[]).map(({id:j})=>{let V=x.get(j);if(!V)throw new Error(`Cannot find child ${j} of node ${W}`);return V})),k.mesh){let j=k.mesh,V=Pm(e,k),J=j.primitives.some(z=>!!z.targets?.length),$=V||J&&w.has(j.id)?ol(r$18,j,e,m,s$6,V||void 0):b.get(j.id);if(!$)throw new Error(`Cannot find mesh child ${k.mesh.id} of node ${W}`);let te=_.get(W),ne=b.get(j.id),Y=C.has(j.id)&&(k.skin!==void 0||R.has(j.id))&&$===ne?ol(r$18,j,e,m,s$6):$;if(te.add(Y),te.userData.gltfMesh=Y,C.add(j.id),k.skin!==void 0&&R.add(j.id),J){w.add(j.id);let z=j.primitives.find(ue=>ue.targets?.length)?.targets?.length||0,O=k.weights||j.weights||new Array(z).fill(0);te.userData.morphMeshes=[Y],s$6.modelOptions?.userData?.gltfAnimatedCrowd?te.userData.morphWeights=[...O]:HA(te,O)}}}),{scenes:e.scenes.map(k=>{let W=(k.nodes||[]).map(({id:j})=>{let V=x.get(j);if(!V)throw new Error(`Cannot find child ${j} of scene ${k.name||k.id}`);return V});return new mi({id:k.name||k.id,children:W})}),materials:d,gltfMeshIdToNodeMap:b,gltfNodeIdToNodeMap:x,gltfNodeIndexToNodeMap:_,generatedTextures:i}}function sl(r,e,t,i){let s=cs(r,e,t,i);for(let a of s.generatedTextures)i.generatedTextures.add(a);return s}function Gv(r,e,t){return new mi({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 ol(r,e,t,i,s,a){let m=(e.primitives||[]).map((_,x)=>jv({device:r,gltfPrimitive:_,primitiveIndex:x,gltfMesh:e,gltf:t,gltfMaterialIdToMaterialMap:i,options:s,instancing:a}));return new mi({id:e.name||e.id,children:m})}function jv({device:r$19,gltfPrimitive:e,primitiveIndex:t,gltfMesh:i,gltf:s$7,gltfMaterialIdToMaterialMap:a,options:d,instancing:m}){let b=e.name||`${i.name||i.id}-primitive-${t}`,_=zv(e.attributes),w=qv(b,e,Nm(e.mode??4,e.indices?.value,_)),C=w.vertexCount,R=Vv(e,s$7,w),D=sl(r$19,e.material,w.attributes,s(r({},d),{gltf:s$7})),k=Rm(r$19,{id:b,geometry:w,material:e.material&&a.get(e.material.id)||null,parsedPPBRMaterial:D,modelOptions:d.modelOptions,vertexCount:C,bounds:[e.attributes.POSITION.min,e.attributes.POSITION.max],instanceMatrices:m?.matrices,morphTargets:R?.targets});m&&(k.userData.gltfInstancing=m);let W=e.extensions?.KHR_materials_variants?.mappings||[];if(W.length){let j=new Map;for(let V of W){let J=typeof V.material==`number`?s$7.materials[V.material]:V.material,$=J&&a.get(J.id);if(!$)continue;let te=sl(r$19,J,w.attributes,s(r({},d),{gltf:s$7}));for(let ne of V.variants||[])j.set(ne,{material:$,parameters:s(r(r({},k.model.parameters),te.parameters),{depthWriteEnabled:J.alphaMode!==`BLEND`,cullMode:J.doubleSided?`none`:`back`})})}k.userData.gltfMaterialVariants={defaultMaterial:k.model.material,defaultParameters:r({},k.model.parameters),mappings:j}}return R&&(k.userData.morphTargets=R),k}function Vv(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],_=typeof b==`number`?e.accessors[b]:b;_?.value&&ArrayBuffer.isView(_.value)&&(d[m]=ga$1(_))}return d})}}function zv(r){let e=1/0;for(let t of Object.values(r))if(t){let{value:i,size:s,components:a}=t,d=s??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 qv(r,e,t){let i={};for(let[s,a]of Object.entries(e.attributes)){let{components:d,size:m,value:b,normalized:_}=a,x=s===`POSITION`||s===`NORMAL`||s===`TANGENT`,w=!!(e.targets?.length&&x);i[s]={size:m??d,value:w?ga$1({value:b,normalized:_}):b,normalized:w?!1:_}}return new re({id:r,topology:t.topology,indices:t.indices??e.indices?.value,attributes:i})}function Hv(r,e){return r.name||r.id||`material-${e}`}function Al(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=[],s=Jv(r.nodes||[]),a=new Map;for(let d of r.nodes||[]){if(!Qv(d,s,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 _=Wv(b.color||[1,1,1],e.useByteColors??!0),x=b.intensity??1,w=b.range,C=zm(d,s,a);switch(b.type){case`directional`:i.push(Xv(C,_,x));break;case`point`:i.push(Kv(C,_,x,w));break;case`spot`:i.push(Yv(C,_,x,w,b.spot))}}return i}function Qv(r,e,t){let i=r;for(;i;){let s=t?.get(i.id);if(s?!s.display:i.extensions?.KHR_node_visibility?.visible===!1)return!1;i=e.get(i.id)}return!0}function Wv(r,e){return e?r.map(t=>t*255):kt$1(r,!1)}function Kv(r,e,t,i){let s=qm(r),a=[1,0,0];return i!==void 0&&i>0&&(a=[1,0,1/(i*i)]),{type:`point`,position:s,color:e,intensity:t,attenuation:a}}function Xv(r,e,t){return{type:`directional`,direction:Hm(r),color:e,intensity:t}}function Yv(r,e,t,i,s={}){let a=qm(r),d=Hm(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:s.innerConeAngle??0,outerConeAngle:s.outerConeAngle??Math.PI/4}}function Jv(r){let e=new Map;for(let t of r)for(let i of t.children||[])e.set(i.id,t);return e}function zm(r,e,t){let i=t.get(r.id);if(i)return i;let s=Zv(r),a=e.get(r.id),d=a?new U(zm(a,e,t)).multiplyRight(s):s;return t.set(r.id,d),d}function Zv(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 qm(r){return r.transformAsPoint([0,0,0])}function Hm(r){return r.transformDirection([0,0,-1])}var al=class extends Zr{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 ti$1,this.clip=new ei$1({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=$v(e.sampler.interpolation);if(e.type===`node`)return new Qr$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:s=>this.applyNodeAnimationValue(e.targetNodeId,e.path,s)}});if(e.type===`camera`||e.type===`light`)return new Qr$1({name:e.pointer,times:e.sampler.input,values:e.sampler.output,interpolation:t,binding:{id:e.pointer,getValue:()=>this.getSceneAnimationValue(e),setValue:s=>this.applySceneAnimationValue(e,s)}});let i=this.materials[e.targetMaterialIndex];if(!i)throw new Error(`Cannot find animation target material ${e.targetMaterialIndex} for ${e.pointer}`);return new Qr$1({name:e.pointer,times:e.sampler.input,values:e.sampler.output,interpolation:t,binding:{id:e.pointer,getValue:e.type===`material`?()=>e3(i,e):void 0,setValue:s=>{e.type===`material`?t3(i,e,s):i3(i,e,s,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 s=this.getTargetNode(e);switch(t){case`translation`:s.setPosition(i).updateMatrix();break;case`rotation`:s.setRotation(i).updateMatrix();break;case`scale`:s.setScale(i).updateMatrix();break;case`weights`:HA(s,i);break;case`visibility`:s.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 s=this.cameras[e.targetCameraIndex];s?.[e.projection]&&(s[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 s=[...i[e.property]||[1,1,1]];s[e.component]=t[0],i[e.property]=s}else i[e.property]=t.length===1?t[0]:[...t];this.onLightChange?.()}}};var YA=class extends Kr$1{mixer;activeClip;onUpdate;previousTimeSeconds;constructor(e){let t=new ti$1;super(e.animations.map((i,s)=>{let a=i.name||`Animation-${s}`;return new al({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 s=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-s*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 s=this.clips.find(d=>d.name===this.activeClip),a=t.crossFadeDuration||0;for(let d of this.clips)d!==i&&!(a>0&&d===s)&&(d.playing=!1,d.action.stop());return i.playing=!0,a>0&&s&&s!==i?(s.playing=!0,s.action.crossFadeTo(i.action,a)):i.action.reset().setEffectiveWeight(1).play(),this.activeClip=e,i}};function $v(r){switch(r){case`STEP`:case`LINEAR`:case`CUBICSPLINE`:return r;default:throw new Error(`Unsupported animation interpolation: ${r}`)}}function e3(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 t3(r,e,t){let i=e.component!==void 0?{[e.property]:n3(r3(r,e.property),e.component,t[0])}:{[e.property]:t.length===1?t[0]:t};r.setProps({pbrMaterial:i})}function r3(r,e){let i=r.shaderInputs.getUniformValues().pbrMaterial?.[e];return Array.isArray(i)?[...i]:[]}function n3(r,e,t){let i=[...r];return i[e]=t,i}function i3(r,e,t,i){let s=WA(e.textureSlot),a=o3(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]]}r.setProps({pbrMaterial:{[s.uvTransformUniform]:Om(e.baseTransform,a)}})}function o3(r,e,t){let i=r.get(e)||{},s=i[t.textureSlot];return s||(s={offset:[...t.baseTransform.offset],rotation:t.baseTransform.rotation,scale:[...t.baseTransform.scale]},i[t.textureSlot]=s,r.set(e,i)),s}var JA=class{bindings;scenes;constructor(e){this.scenes=e.scenes,this.bindings=s3(e),this.update()}update(){if(this.bindings.length===0)return;let e=new Map;for(let t of this.scenes)t.preorderTraversal((i,{worldMatrix:s})=>{i instanceof mi&&e.set(i,new U(s))});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 s3(r$20){let{gltf:e,gltfNodeIndexToNodeMap:t}=r$20,i=[],s$8=e.skins||[],a=new Set;for(let d of r$20.scenes)d.preorderTraversal(m=>{m instanceof mi&&a.add(m)});for(let[d,m]of e.nodes.entries()){let b=m.skin;if(b===void 0||!m.mesh)continue;let _=A3(e,b),x=s$8[_],w=t.get(d);if(!x||!w||!a.has(w))continue;let C=x.joints.flatMap(V=>{let J=t.get(V);return J?[J]:[]});if(C.length!==x.joints.length)continue;let R=m.mesh,D=w.userData.gltfMesh,k=D instanceof mi?D:w.children.find(V=>V instanceof mi&&V.id===(R.name||R.id));if(!(k instanceof mi))continue;let W=k.children.flatMap(V=>V instanceof gi?[V]:[]),j=x.inverseBindMatrices?.value;i.push(s(r({nodeIndex:d,skinIndex:_,node:w,joints:C},j instanceof Float32Array?{inverseBindMatrices:j}:{}),{jointMatrices:new Float32Array(C.length*16),models:W}))}return i}function A3(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,s)=>i===e.joints?.[s]))return!1;if(typeof e.inverseBindMatrices==`number`){let i=r.accessors[e.inverseBindMatrices];return!t.inverseBindMatrices||t.inverseBindMatrices===i}return!0})}var a3={supportLevel:`none`,standardStatus:`unknown`,comment:`Not currently listed in the luma.gl glTF extension support registry.`};var Qm={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 cl(r,e){let t=Array.from(f3(r)).sort(),i=new Set(r.extensionsRequired||[]),s=t.map(a=>{let d=Qm[a]||a3,m=l3(a,d,r,e);return[a,{extensionName:a,required:i.has(a),supported:h3(m.supportLevel),supportLevel:m.supportLevel,standardStatus:d.standardStatus,comment:m.comment}]});return new Map(s)}function c3(r,e){return Array.from(cl(r,e).values()).filter(t=>t.required&&!t.supported)}function Wm(r,e){let t=c3(r,e);if(t.length)throw new Error(`Unsupported required glTF extensions: ${t.map(i=>i.extensionName).join(`, `)}`)}function l3(r,e,t,i){if(r!==`KHR_texture_basisu`||!i)return e;let a=u3(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 u3(r){let e=[];for(let t of r.textures||[]){let i=t?.source?.image;if(!i?.compressed)continue;let s=Array.isArray(i.data)?i.data[0]:Array.isArray(i.mipmaps)?i.mipmaps[0]:void 0;e.push(s?.textureFormat??null)}return e}function ll(r){return Qm[r]||null}function f3(r){let e=r,t=new Set;return ZA(t,r.extensionsUsed),ZA(t,r.extensionsRequired),ZA(t,e.extensionsRemoved),ZA(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 s=i;return s.unlit||s.extensions?.KHR_materials_unlit})&&t.add(`KHR_materials_unlit`),t}function ZA(r,e=[]){for(let t of e)r.add(t)}function h3(r){return r===`built-in`||r===`parsed-and-wired`}function Km(r){let e=r.animations||[],t=new Map,i=new Map;return e.flatMap((s,a)=>{let d=s.name||`Animation-${a}`,m=new Map,b=s.channels.flatMap(({sampler:_,target:x})=>{let w=T3(r,x),C=`${_}:${w??0}`,R=m.get(C);if(!R){let k=s.samplers[_];if(!k)throw new Error(`Cannot find animation sampler ${_}`);let{input:W,interpolation:j=`LINEAR`,output:V}=k,J=C3(r.accessors[W],t),$=I3(r.accessors[V],i);R={input:J,interpolation:j,output:w!==void 0?_3($,J.length,j,w):$},m.set(C,R)}let D=d3(r,x,R);return D?[D]:[]});return b.length?[{name:d,channels:b}]:[]})}function d3(r,e,t){if(e.path===`pointer`)return p3(r,e,t);let i=Xm(e.path);if(!i)return null;let s=r.nodes[e.node??0];if(!s)throw new Error(`Cannot find animation target ${e.node}`);return{type:`node`,sampler:t,targetNodeId:s.id,path:i}}function p3(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 s=v3(i);switch(s[0]){case`nodes`:return b3(r,s,t,i);case`materials`:return y3(r,s,t,i);case`cameras`:return m3(r,s,t,i);case`extensions`:if(s[1]===`KHR_lights_punctual`)return g3(r,s,t,i)}return Sn(i,`top-level target "${s[0]}" has no runtime animation mapping`),null}function m3(r,e,t,i){let s=Number(e[1]),a=r.cameras?.[s],d=e[2],m=e[3];return e.length!==4||!Number.isInteger(s)||!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:s,projection:d,property:m}}function g3(r$21,e,t,i){let s=Number(e[3]),a=r$21.lights||r$21.extensions?.KHR_lights_punctual?.lights,d=e[4]===`spot`,m=d?e[5]:e[4],b=!d&&m===`color`?e[5]:void 0,_=[`color`,`intensity`,`range`,`innerConeAngle`,`outerConeAngle`],x=d||b!==void 0?6:5;return e[2]!==`lights`||e.length!==x||!Number.isInteger(s)||!Array.isArray(a)||!a[s]||!_.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:s,property:m},b===void 0?{}:{component:Number(b)})}function b3(r,e,t,i){let s=e.length===5&&e[2]===`extensions`&&e[3]===`KHR_node_visibility`&&e[4]===`visible`;if(e.length!==3&&!s)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(s&&t.interpolation!==`STEP`)return Sn(i,`boolean visibility animation requires STEP interpolation`),null;let m=s?`visibility`:Xm(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 T3(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],s=typeof i?.mesh==`number`?r.meshes[i.mesh]:i?.mesh;return i?.weights?.length||s?.weights?.length||s?.primitives?.[0]?.targets?.length||1}function _3(r,e,t,i){let s=t===`CUBICSPLINE`?3:1,a=r.length/(Math.max(e,1)*s),d=i>1?i:Number.isInteger(a)&&a>1?a:i;if(d<=1)return r;let m=r.flat(),b=[];for(let _=0;_<m.length;_+=d)b.push(m.slice(_,_+d));return b}function y3(r$22,e,t,i){if(e.length<3)return Sn(i,`material pointers must include a material index and target property path`),null;let s=Number(e[1]),a=r$22.materials[s];if(!Number.isInteger(s)||!a)return f.warn(`KHR_animation_pointer target ${i} references a missing material and will be skipped`)(),null;let d=x3(a,e.slice(2));return`reason`in d?(Sn(i,d.reason),null):r({sampler:t,pointer:i,targetMaterialIndex:s},d)}function Xm(r){switch(r){case`translation`:case`rotation`:case`scale`:case`weights`:return r;default:return null}}function x3(r,e){let t=w3(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 w3(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=km(e.slice(0,t));if(!i)return{reason:S3(e.slice(0,t))};let s=E3(r,i.pathSegments);if(!s)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:KA(s)}}function E3(r,e){let t=r;for(let i of e)if(t=t?.[i],!t)return null;return t}function v3(r){return r.slice(1).split(`/`).map(e=>e.replace(/~1/g,`/`).replace(/~0/g,`~`))}function rt(r){let e=Ym(r);if(e){let t=ll(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 S3(r){let e=Ym(r);if(e){let t=ll(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 Ym(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 C3(r,e){if(e.has(r))return e.get(r);let{value:t,components:i}=Jm(r);$A(i===1,`accessorToJsArray1D must have exactly 1 component`);let s=Array.from(t);return e.set(r,s),s}function I3(r,e){if(e.has(r))return e.get(r);let{value:t,components:i}=Jm(r);$A(i>=1,`accessorToJsArray2D must have at least 1 component`);let s=[];for(let a=0;a<t.length;a+=i)s.push(Array.from(t.slice(a,a+i)));return e.set(r,s),s}function Jm(r){if(r.value)return{value:r.value,components:r.components};let e=r.bufferView?.data;$A(e!==void 0),$A(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 $A(r,e){if(!r)throw new Error(e)}var ea=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 s=new Set;for(let a of t)a.preorderTraversal(d=>{d instanceof gi&&d.userData.gltfMaterialVariants&&s.add(d)});this.modelNodes=Array.from(s)}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 s=i.userData.gltfMaterialVariants,a=s.mappings.get(t.index);i.model.setMaterial(a?.material||s.defaultMaterial),i.model.setParameters(a?.parameters||s.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 ul(r$23,e,t){t?.strictExtensions&&Wm(e,r$23);let{scenes:i,materials:s,gltfMeshIdToNodeMap:a,gltfNodeIdToNodeMap:d,gltfNodeIndexToNodeMap:m,generatedTextures:b}=Vm(r$23,e,t),_=Km(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)}:{})),C=(e.cameras||[]).map(Y=>{let z=r({},Y);return Y.perspective&&(z.perspective=r({},Y.perspective)),Y.orthographic&&(z.orthographic=r({},Y.orthographic)),z}),R={useByteColors:t?.useByteColors??!0,nodeVisibility:d,lightDefinitions:w},D=Al(e,R),k=()=>{D.splice(0,D.length,...Al(e,R))},W=new YA({onVisibilityChange:k,cameras:C,lightDefinitions:w,onLightChange:k,animations:_,gltfNodeIdToNodeMap:d,materials:s}),j=new ea(e,i),V=cl(e,r$23),J=i.map(Y=>Zm(Y.getBounds())),$=M3(J),te=new JA({gltf:e,scenes:i,gltfNodeIndexToNodeMap:m});W.setUpdateHandler(()=>te.update());let ne=!1;return{scenes:i,materials:s,variants:j,cameras:C,animator:W,animations:_,lights:D,extensionSupport:V,sceneBounds:J,modelBounds:$,gltfMeshIdToNodeMap:a,gltfNodeIdToNodeMap:d,gltfNodeIndexToNodeMap:m,skins:te,gltf:e,destroy:()=>{if(ne)return;ne=!0;let Y=new Set([...i,...a.values(),...d.values()]),z=new Set,O=new Set(s);for(let ue of Y)ue.preorderTraversal(we=>{we instanceof gi&&(z.add(we),we.model?.material&&O.add(we.model.material))});for(let ue of z)ue.destroy();for(let ue of Y)ue.destroy();for(let ue of O)ue.destroy();for(let ue of b)ue.destroy();b.clear()}}}function Zm(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],s=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(s,.001)/Math.tan(Math.PI/6)*1.15,a*1.1)}}function M3(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 Zm(e)}var fl=(function(){var r=`b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuixkbeeeddddillviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WboY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbrl79IV9Rbwq;X8:kdbk: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:bsesu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecjez:kjjjb8Aav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhDaicefgiarfhqdndnaeci9pmbaqhexekcmcsawceSEhkcbhxcbhmaqhecbhlcbhoindndnaiRbbgrc;Ve0mbavc;abfaoarcu7gPcl4fcsGcitfgwydlhsawydbhzdndnarcsGgwak9pmbavalaPfcsGcdtfydbaxawEhraxawTgHfhxxekdnaeaD9nmbc9:hoxokdndnawcsSmbcehHamawcetfcWfhrxekaecefhrae8SbbgwcFeGhPdndnawcu9mmbarhexekaecvfheaPcFbGhPcrhwdninar8SbbgHcFbGawtaPVhPaHcu9kmearcefhrawcrfgwc8J9hmbxdkkarcefhekcehHaPce4cbaPceG9R7amfhrkarhmkavc;abfaocitfgwarBdbawasBdlavalcdtfarBdbavc;abfaocefcsGcitfgwazBdbawarBdlaocdfhoaHalfhldnadcd9hmbabar87elabas87edabaz87ebabcofhbxdkabarBdwabasBdlabazBdbabcxfhbxekdnarcpe0mbavalaDarcsGfRbbgwcl4gP9RcsGcdtfydbaxcefgsaPEhravalaw9RcsGcdtfydbasaPTgzfgsawcsGgPEhwaPThPdndnadcd9hmbabaw87elabar87edabax87ebcohHxekabawBdwabarBdlabaxBdbcxhHkavalcdtfaxBdbavc;abfaocitfgOarBdbaOaxBdlavalcefglcsGcdtfarBdbavc;abfaocefcsGcitfgOawBdbaOarBdlavalazfglcsGcdtfawBdbavc;abfaocdfcsGcitfgraxBdbarawBdlaocifhoabaHfhbalaPfhlasaPfhxxekdnaeaD9nmbc9:hoxlkaxcbaeRbbgwEgHarc;:eSgrfhsawcsGhOdndnawcl4gAmbascefhzxekashzavalaA9RcsGcdtfydbhskdndnaOmbazcefhxxekazhxavalaw9RcsGcdtfydbhzkdndnarTmbaecefhrxekaecdfhrae8SbegPcFeGhwdnaPcu9kmbaecofhHawcFbGhwcrhedninar8SbbgPcFbGaetawVhwaPcu9kmearcefhraecrfgec8J9hmbkaHhrxekarcefhrkawce4cbawceG9R7amfgmhHkdndnaAcsSmbarhwxekarcefhwar8SbbgecFeGhPdnaecu9kmbarcvfhsaPcFbGhPcrhedninaw8SbbgrcFbGaetaPVhParcu9kmeawcefhwaecrfgec8J9hmbkashwxekawcefhwkaPce4cbaPceG9R7amfgmhskdndnaOcsSmbawhexekawcefheaw8SbbgrcFeGhPdnarcu9kmbawcvfhzaPcFbGhPcrhrdninae8SbbgwcFbGartaPVhPawcu9kmeaecefhearcrfgrc8J9hmbkazhexekaecefhekaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabaz87elabas87edabaH87ebcohrxekabazBdwabasBdlabaHBdbcxhrkavc;abfaocitfgwasBdbawaHBdlavalcdtfaHBdbavc;abfaocefcsGcitfgwazBdbawasBdlavalcefglcsGcdtfasBdbavc;abfaocdfcsGcitfgwaHBdbawazBdlavalaATaAcsSVfglcsGcdtfazBdbalaOTaOcsSVfhlaocifhoabarfhbkaocsGhoalcsGhlaicefgiaq6mbkkcbc99aeaDSEhokavc;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:I9Dklbzik94evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaeai86b: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:bjjjbkpPesu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecje;8kbav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhDaicefgiarfhqdndnaeci9pmbaqhexekcmcsawceSEhkcbhxcbhmaqhecbhlcbhoindndnaiRbbgrc;Ve0mbavc;abfaoarcu7gPcl4fcsGcitfgwydlhsawydbhzdndnarcsGgwak9pmbavalaPfcsGcdtfydbaxawEhraxawTgHfhxxekdnaeaD9nmbc9:hoxokdndnawcsSmbcehHamawcetfcWfhrxekaecefhrae8SbbgwcFeGhPdndnawcu9mmbarhexekaecvfheaPcFbGhPcrhwdninar8SbbgHcFbGawtaPVhPaHcu9kmearcefhrawcrfgwc8J9hmbxdkkarcefhekcehHaPce4cbaPceG9R7amfhrkarhmkavc;abfaocitfgwarBdbawasBdlavalcdtfarBdbavc;abfaocefcsGcitfgwazBdbawarBdlaocdfhoaHalfhldnadcd9hmbabar87elabas87edabaz87ebabcofhbxdkabarBdwabasBdlabazBdbabcxfhbxekdnarcpe0mbavalaDarcsGfRbbgwcl4gP9RcsGcdtfydbaxcefgsaPEhravalaw9RcsGcdtfydbasaPTgzfgsawcsGgPEhwaPThPdndnadcd9hmbabaw87elabar87edabax87ebcohHxekabawBdwabarBdlabaxBdbcxhHkavalcdtfaxBdbavc;abfaocitfgOarBdbaOaxBdlavalcefglcsGcdtfarBdbavc;abfaocefcsGcitfgOawBdbaOarBdlavalazfglcsGcdtfawBdbavc;abfaocdfcsGcitfgraxBdbarawBdlaocifhoabaHfhbalaPfhlasaPfhxxekdnaeaD9nmbc9:hoxlkaxcbaeRbbgwEgHarc;:eSgrfhsawcsGhOdndnawcl4gAmbascefhzxekashzavalaA9RcsGcdtfydbhskdndnaOmbazcefhxxekazhxavalaw9RcsGcdtfydbhzkdndnarTmbaecefhrxekaecdfhrae8SbegPcFeGhwdnaPcu9kmbaecofhHawcFbGhwcrhedninar8SbbgPcFbGaetawVhwaPcu9kmearcefhraecrfgec8J9hmbkaHhrxekarcefhrkawce4cbawceG9R7amfgmhHkdndnaAcsSmbarhwxekarcefhwar8SbbgecFeGhPdnaecu9kmbarcvfhsaPcFbGhPcrhedninaw8SbbgrcFbGaetaPVhParcu9kmeawcefhwaecrfgec8J9hmbkashwxekawcefhwkaPce4cbaPceG9R7amfgmhskdndnaOcsSmbawhexekawcefheaw8SbbgrcFeGhPdnarcu9kmbawcvfhzaPcFbGhPcrhrdninae8SbbgwcFbGartaPVhPawcu9kmeaecefhearcrfgrc8J9hmbkazhexekaecefhekaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabaz87elabas87edabaH87ebcohrxekabazBdwabasBdlabaHBdbcxhrkavc;abfaocitfgwasBdbawaHBdlavalcdtfaHBdbavc;abfaocefcsGcitfgwazBdbawasBdlavalcefglcsGcdtfasBdbavc;abfaocdfcsGcitfgwaHBdbawazBdlavalaATaAcsSVfglcsGcdtfazBdbalaOTaOcsSVfhlaocifhoabarfhbkaocsGhoalcsGhlaicefgiaq6mbkkcbc99aeaDSEhokavc;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 s=WebAssembly.validate(t)?m(e):m(r),a,d=WebAssembly.instantiate(s,{}).then(function(j){a=j.instance,a.exports.__wasm_call_ctors()});function m(j){for(var V=new Uint8Array(j.length),J=0;J<j.length;++J){var $=j.charCodeAt(J);V[J]=$>96?$-97:$>64?$-39:$+4}for(var te=0,J=0;J<j.length;++J)V[te++]=V[J]<60?i[V[J]]:(V[J]-60)*64+V[++J];return V.buffer.slice(0,te)}function b(j,V,J,$,te,ne,le){var Y=j.exports.sbrk,z=$+3&-4,O=Y(z*te),ue=Y(ne.length),we=new Uint8Array(j.exports.memory.buffer);we.set(ne,ue);var Ee=V(O,$,te,ue,ne.length);if(Ee==0&&le&&le(O,z,te),J.set(we.subarray(O,O+$*te)),Y(O-Y(0)),Ee!=0)throw new Error(`Malformed buffer data: `+Ee)}var _={NONE:``,OCTAHEDRAL:`meshopt_decodeFilterOct`,QUATERNION:`meshopt_decodeFilterQuat`,EXPONENTIAL:`meshopt_decodeFilterExp`,COLOR:`meshopt_decodeFilterColor`},x={ATTRIBUTES:`meshopt_decodeVertexBuffer`,TRIANGLES:`meshopt_decodeIndexBuffer`,INDICES:`meshopt_decodeIndexSequence`},w=[],C=0;function R(j){var V={object:new Worker(j),pending:0,requests:{}};return V.object.onmessage=function(J){var $=J.data;V.pending-=$.count,V.requests[$.id][$.action]($.value),delete V.requests[$.id]},V}function D(j){for(var V=`self.ready = WebAssembly.instantiate(new Uint8Array([`+new Uint8Array(s)+`]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = `+W.name+`;`+b.toString()+W.toString(),J=new Blob([V],{type:`text/javascript`}),$=URL.createObjectURL(J),te=w.length;te<j;++te)w[te]=R($);for(var te=j;te<w.length;++te)w[te].object.postMessage({});w.length=j,URL.revokeObjectURL($)}function k(j,V,J,$,te){for(var ne=w[0],le=1;le<w.length;++le)w[le].pending<ne.pending&&(ne=w[le]);return new Promise(function(Y,z){var O=new Uint8Array(J),ue=++C;ne.pending+=j,ne.requests[ue]={resolve:Y,reject:z},ne.object.postMessage({id:ue,count:j,size:V,source:O,mode:$,filter:te},[O.buffer])})}function W(j){var V=j.data;self.ready.then(function(J){if(!V.id)return self.close();try{var $=new Uint8Array(V.count*V.size);b(J,J.exports[V.mode],$,V.count,V.size,V.source,J.exports[V.filter]),self.postMessage({id:V.id,count:V.count,action:`resolve`,value:$},[$.buffer])}catch(te){self.postMessage({id:V.id,count:V.count,action:`reject`,value:te})}})}return{ready:d,supported:!0,useWorkers:function(j){D(j)},decodeVertexBuffer:function(j,V,J,$,te){b(a,a.exports.meshopt_decodeVertexBuffer,j,V,J,$,a.exports[_[te]])},decodeIndexBuffer:function(j,V,J,$){b(a,a.exports.meshopt_decodeIndexBuffer,j,V,J,$)},decodeIndexSequence:function(j,V,J,$){b(a,a.exports.meshopt_decodeIndexSequence,j,V,J,$)},decodeGltfBuffer:function(j,V,J,$,te,ne){b(a,a.exports[x[te]],j,V,J,$,a.exports[_[ne]])},decodeGltfBufferAsync:function(j,V,J,$,te){return w.length>0?k(j,V,J,x[$],_[te]):d.then(function(){var ne=new Uint8Array(j*V);return b(a,a.exports[x[$]],ne,j,V,J,a.exports[_[te]]),ne})}}})();var hl={};w(hl,{createExtMeshFeatures:()=>Q3,decode:()=>j3,encode:()=>V3,name:()=>G3});function ht(r,e){if(!r)throw new Error(e||`assert failed: gltf`)}var ta={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16};var ra={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};var L3=1.33;var $m=[`SCALAR`,`VEC2`,`VEC3`,`VEC4`];var P3=new Map([[Int8Array,5120],[Uint8Array,5121],[Int16Array,5122],[Uint16Array,5123],[Uint32Array,5125],[Float32Array,5126],[Float64Array,5130]]);var N3={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16};var F3={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};var k3={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function na(r){return $m[r-1]||$m[0]}function Cn(r){let e=P3.get(r.constructor);if(!e)throw new Error(`Illegal typed array`);return e}function Jn(r,e){let t=k3[r.componentType],i=N3[r.type],s=F3[r.componentType],a=r.count*i,d=r.count*i*s;ht(d>=0&&d<=e.byteLength);return{ArrayType:t,length:a,byteLength:d,componentByteSize:ra[r.componentType],numberOfComponentsInElement:ta[r.type]}}function ls(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 s=t.reduce((d,m)=>d+m.byteLength,0),a=e.reduce((d,m)=>{let{width:b,height:_}=m.image;return d+b*_},0);return s+Math.ceil(4*a*L3)}function eg(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 tg(r,e,t){let i=typeof t==`number`?r.accessors?.[t]:t;if(!i)throw new Error(`No gltf accessor ${JSON.stringify(t)}`);let s=r.bufferViews?.[i.bufferView||0];if(!s)throw new Error(`No gltf buffer view for accessor ${s}`);let{arrayBuffer:a,byteOffset:d}=e[s.buffer],m=(d||0)+(i.byteOffset||0)+(s.byteOffset||0),{ArrayType:b,length:_,componentByteSize:x,numberOfComponentsInElement:w}=Jn(i,s),C=x*w,R=s.byteStride||C;if(typeof s.byteStride>`u`||s.byteStride===C)return new b(a,m,_);let D=new b(_);for(let k=0;k<i.count;k++){let W=new b(a,m+k*R,w);D.set(W,k*w)}return D}function O3(){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||O3(),buffers:e?.buffers||[],images:e?.images||[]},this.sourceBuffers=[],this.byteLength=0,this.gltf.buffers&&this.gltf.buffers[0]&&(this.byteLength=this.gltf.buffers[0].byteLength,this.sourceBuffers=[this.gltf.buffers[0]])}get json(){return this.gltf.json}getApplicationData(e){return this.json[e]}getExtraData(e){return(this.json.extras||{})[e]}hasExtension(e){let t=this.getUsedExtensions().find(s=>s===e),i=this.getRequiredExtensions().find(s=>s===e);return typeof t==`string`||typeof i==`string`}getExtension(e){let t=this.getUsedExtensions().find(s=>s===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 s=(e.byteOffset||0)+i.byteOffset;return new Uint8Array(i.arrayBuffer,s,e.byteLength)}getTypedArrayForAccessor(e){let t=this.getAccessor(e);return tg(this.gltf.json,this.gltf.buffers,t)}getTypedArrayForImageData(e){e=this.getAccessor(e);let t=this.getBufferView(e.bufferView),s=this.getBuffer(t.buffer).data,a=t.byteOffset||0;return new Uint8Array(s,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 s=e.extensions||{};s[t]=i}removeObjectExtension(e,t){let i=e?.extensions||{};if(i[t]){this.json.extensionsRemoved=this.json.extensionsRemoved||[];let s=this.json.extensionsRemoved;s.includes(t)||s.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 s={mesh:t};return i&&(s.matrix=i),this.json.nodes.push(s),this.json.nodes.length-1}addMesh(e){let{attributes:t,indices:i,material:s,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(s)&&(m.primitives[0].material=s),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=Fr$1(e),s=t||i?.mimeType,d={bufferView:this.addBufferView(e),mimeType:s};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 s=e.byteLength;ht(Number.isFinite(s)),this.sourceBuffers=this.sourceBuffers||[],this.sourceBuffers.push(e);let a={buffer:t,byteOffset:i,byteLength:s};return this.byteLength+=No(s,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:na(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),s={min:t.min,max:t.max};(!s.min||!s.max)&&(s=this._getAccessorMinMax(e,t.size));let a={size:t.size,componentType:Cn(e),count:Math.round(e.length/t.size),min:s.min,max:s.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),s=0;for(let a of this.sourceBuffers||[])s=fu$1(a,i,s);this.json?.buffers?.[0]?this.json.buffers[0].byteLength=e:this.json.buffers=[{byteLength:e}],this.gltf.binary=t,this.sourceBuffers=[t],this.gltf.buffers=[{arrayBuffer:t,byteOffset:0,byteLength:t.byteLength}]}_removeStringFromArray(e,t){let i=!0;for(;i;){let s=e.indexOf(t);s>-1?e.splice(s,1):i=!1}}_addAttributes(e={}){let t={};for(let i in e){let s=e[i],a=this._getGltfAttributeName(i);t[a]=this.addBinaryBuffer(s.value,s)}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 s=e.subarray(0,t);for(let a of s)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 rg(r){return(r%1+1)%1}var ng={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16,BOOLEAN:1,STRING:1,ENUM:1};var B3={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:BigInt64Array,UINT64:BigUint64Array,FLOAT32:Float32Array,FLOAT64:Float64Array};var ig={INT8:1,UINT8:1,INT16:2,UINT16:2,INT32:4,UINT32:4,INT64:8,UINT64:8,FLOAT32:4,FLOAT64:8};function us(r,e){return ig[e]*ng[r]}function Ki(r,e,t,i){if(t!==`UINT8`&&t!==`UINT16`&&t!==`UINT32`&&t!==`UINT64`)return null;let a=Xi(r.getTypedArrayForBufferView(e),`SCALAR`,t,i+1);return a instanceof BigInt64Array||a instanceof BigUint64Array?null:a}function Xi(r,e,t,i=1){let s=ng[e],a=B3[t],d=ig[t],m=i*s,b=m*d,_=r.buffer,x=r.byteOffset;return x%d!==0&&(_=new Uint8Array(_).slice(x,x+b).buffer,x=0),new a(ir$1(_),x,m)}function Yi(r,e,t){let i=`TEXCOORD_${e.texCoord||0}`,s=t.attributes[i],a=r.getTypedArrayForAccessor(s),d=r.gltf.json,m=e.index,b=d.textures?.[m]?.source;if(typeof b<`u`){let _=d.images?.[b]?.mimeType,x=r.gltf.images?.[b];if(x&&typeof x.width<`u`){let w=[];for(let C=0;C<a.length;C+=2){let R=D3(x,_,a,C,e.channels);w.push(R)}return w}}return[]}function ia(r,e,t,i,s){if(!t?.length)return;let a=[];for(let x of t){let w=i.findIndex(C=>C===x);w===-1&&(w=i.push(x)-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),_=r.addAccessor(b,{size:1,componentType:Cn(d),count:d.length});s.attributes[e]=_}function D3(r,e,t,i,s=[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 _=U3(d,m,r,b),x=0;for(let w of s){let C=typeof w==`number`?Object.values(a)[w]:a[w],R=_+C.offset,D=Nn(r);if(D.data.length<=R)throw new Error(`${D.data.length} <= ${R}`);let k=D.data[R];x|=k<<C.shift}return x}function U3(r,e,t,i=1){let s=t.width,a=rg(r)*(s-1),d=Math.round(a),m=t.height,b=rg(e)*(m-1),_=Math.round(b),x=t.components?t.components:i;return(_*s+d)*x}function oa(r,e,t,i,s){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 _=m/s,x=b/s;a.push(r.slice(_,_+x))}return a}function sa(r,e,t){let i=[];for(let s=0;s<e;s++){let a=s*t;i.push(r.slice(a,a+t))}return i}function Aa(r,e,t,i){if(t)throw new Error(`Not implemented - arrayOffsets for strings is specified`);if(i){let s=[],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 _=e.subarray(d,b+d),x=a.decode(_);s.push(x),d+=b}}return s}return[]}var Ji=`EXT_mesh_features`;var G3=Ji;async function j3(r,e){z3(new Ke(r),e)}function V3(r,e){let t=new Ke(r);return H3(t,e),t.createBinaryChunk(),t.gltf}function z3(r,e){let t=r.gltf.json;if(t.meshes)for(let i of t.meshes)for(let s of i.primitives)q3(r,s,e)}function q3(r,e,t){if(!t?.gltf?.loadBuffers)return;let s=e.extensions?.[Ji]?.featureIds;if(s)for(let a of s){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=Yi(r,a.texture,e):d=[];a.data=d}}function H3(r,e){let t=r.gltf.json.meshes;if(t)for(let i of t)for(let s of i.primitives)W3(r,s)}function Q3(r,e,t,i){e.extensions||(e.extensions={});let s=e.extensions[Ji];s||(s={featureIds:[]},e.extensions[Ji]=s);let{featureIds:a}=s,d={featureCount:t.length,propertyTable:i,data:t};a.push(d),r.addObjectExtension(e,Ji,s)}function W3(r,e){let t=e.extensions?.[Ji];if(!t)return;let i=t.featureIds;i.forEach((s,a)=>{if(s.data){let{accessorKey:d,index:m}=K3(e.attributes),b=new Uint32Array(s.data);i[a]={featureCount:b.length,propertyTable:s.propertyTable,attribute:m},r.gltf.buffers.push({arrayBuffer:b.buffer,byteOffset:b.byteOffset,byteLength:b.byteLength});let _=r.addBufferView(b),x=r.addAccessor(_,{size:1,componentType:Cn(b),count:b.length});e.attributes[d]=x}})}function K3(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 ml={};w(ml,{createExtStructuralMetadata:()=>mS,decode:()=>Y3,encode:()=>J3,name:()=>X3});var Zi=`EXT_structural_metadata`;var X3=Zi;async function Y3(r,e){Z3(new Ke(r),e)}function J3(r,e){let t=new Ke(r);return dS(t,e),t.createBinaryChunk(),t.gltf}function Z3(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(Zi);t&&(e.gltf?.loadImages&&$3(r,t),eS(r,t))}function $3(r,e){let t=e.propertyTextures,i=r.gltf.json;if(t&&i.meshes)for(let s of i.meshes)for(let a of s.primitives)rS(r,t,a,e)}function eS(r,e){let t=e.schema;if(!t)return;let i=t.classes,s=e.propertyTables;if(i&&s)for(let a in i){let d=tS(s,a);d&&iS(r,t,d)}}function tS(r,e){for(let t of r)if(t.class===e)return t;return null}function rS(r,e,t,i){if(!e)return;let a=t.extensions?.[Zi]?.propertyTextures;if(a)for(let d of a){let m=e[d];nS(r,m,t,i)}}function nS(r,e,t,i){if(!e.properties)return;i.dataAttributeNames||(i.dataAttributeNames=[]);let s=e.class;for(let a in e.properties){let d=`${s}_${a}`,m=e.properties?.[a];if(!m)continue;m.data||(m.data=[]);let b=m.data,_=Yi(r,m,t);_!==null&&(ia(r,d,_,b,t),m.data=b,i.dataAttributeNames.push(d))}}function iS(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 s=t.count;for(let a in i.properties){let d=i.properties[a],m=t.properties?.[a];if(m)m.data=oS(r,e,d,s,m)}}function oS(r,e,t,i,s){let a=[],d=s.values,m=r.getTypedArrayForBufferView(d),b=sS(r,t,s,i),_=AS(r,s,i);switch(t.type){case`SCALAR`:case`VEC2`:case`VEC3`:case`VEC4`:case`MAT2`:case`MAT3`:case`MAT4`:a=aS(t,i,m,b);break;case`BOOLEAN`:throw new Error(`Not implemented - classProperty.type=${t.type}`);case`STRING`:a=Aa(i,m,b,_);break;case`ENUM`:a=cS(e,t,i,m,b);break;default:throw new Error(`Unknown classProperty type ${t.type}`)}return a}function sS(r,e,t,i){return e.array&&typeof e.count>`u`&&typeof t.arrayOffsets<`u`?Ki(r,t.arrayOffsets,t.arrayOffsetType||`UINT32`,i):null}function AS(r,e,t){return typeof e.stringOffsets<`u`?Ki(r,e.stringOffsets,e.stringOffsetType||`UINT32`,t):null}function aS(r,e,t,i){let s=r.array,a=r.count,d=us(r.type,r.componentType),m=t.byteLength/d,b;return r.componentType?b=Xi(t,r.type,r.componentType,m):b=t,s?i?oa(b,e,i,t.length,d):a?sa(b,e,a):[]:b}function cS(r,e,t,i,s){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=us(e.type,m),_=i.byteLength/b,x=Xi(i,e.type,m,_);if(x||(x=i),e.array){if(s)return lS({valuesData:x,numberOfElements:t,arrayOffsets:s,valuesDataBytesLength:i.length,elementSize:b,enumEntry:d});let w=e.count;return w?uS(x,t,w,d):[]}return pl(x,0,t,d)}function lS(r){let{valuesData:e,numberOfElements:t,arrayOffsets:i,valuesDataBytesLength:s,elementSize:a,enumEntry:d}=r,m=[];for(let b=0;b<t;b++){let _=i[b],x=i[b+1]-i[b];if(x+_>s)break;let R=pl(e,_/a,x/a,d);m.push(R)}return m}function uS(r,e,t,i){let s=[];for(let a=0;a<e;a++){let m=pl(r,t*a,t,i);s.push(m)}return s}function pl(r,e,t,i){let s=[];for(let a=0;a<t;a++)if(r instanceof BigInt64Array||r instanceof BigUint64Array)s.push(``);else{let d=r[e+a],m=fS(i,d);m?s.push(m.name):s.push(``)}return s}function fS(r,e){for(let t of r.values)if(t.value===e)return t;return null}var hS=`schemaClassId`;function dS(r,e){let t=r.getExtension(Zi);if(t&&t.propertyTables)for(let i of t.propertyTables){let s=i.class,a=t.schema?.classes?.[s];i.properties&&a&&pS(i,a,r)}}function pS(r,e,t){for(let i in r.properties){let s=r.properties[i].data;if(s){let a=e.properties[i];if(a){let d=TS(s,a,t);r.properties[i]=d}}}}function mS(r,e,t=hS){let i=r.getExtension(Zi);i||(i=r.addExtension(Zi)),i.schema=gS(e,t,i.schema);let s=bS(e,t,i.schema);return i.propertyTables||(i.propertyTables=[]),i.propertyTables.push(s)-1}function gS(r,e,t){let i=t??{id:`schema_id`},s={properties:{}};for(let a of r){let d={type:a.elementType,componentType:a.componentType};s.properties[a.name]=d}return i.classes={},i.classes[e]=s,i}function bS(r,e,t){let i={class:e,count:0},s=0,a=t.classes?.[e];for(let d of r){if(s===0&&(s=d.values.length),s!==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=s,i}function TS(r,e,t){let i={values:0};if(e.type===`STRING`){let{stringData:s,stringOffsets:a}=xS(r);i.stringOffsets=dl(a,t),i.values=dl(s,t)}else if(e.type===`SCALAR`&&e.componentType)i.values=dl(yS(r,e.componentType),t);return i}var _S={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:Int32Array,UINT64:Uint32Array,FLOAT32:Float32Array,FLOAT64:Float64Array};function yS(r,e){let t=[];for(let s of r)t.push(Number(s));let i=_S[e];if(!i)throw new Error(`Illegal component type`);return new i(t)}function xS(r){let e=new TextEncoder,t=[],i=0;for(let b of r){let _=e.encode(b);i+=_.length,t.push(_)}let s=new Uint8Array(i),a=[],d=0;for(let b of t)s.set(b,d),a.push(d),d+=b.length;a.push(d);return{stringData:s,stringOffsets:new Uint32Array(a)}}function dl(r,e){return e.gltf.buffers.push({arrayBuffer:ir$1(r.buffer),byteOffset:r.byteOffset,byteLength:r.byteLength}),e.addBufferView(r)}var gl={};w(gl,{decode:()=>ES,name:()=>wS});var og=`EXT_feature_metadata`;var wS=og;async function ES(r,e){vS(new Ke(r),e)}function vS(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(og);t&&(e.gltf?.loadImages&&SS(r,t),CS(r,t))}function SS(r,e){let t=e.schema;if(!t)return;let i=t.classes,{featureTextures:s}=e;if(i&&s)for(let a in i){let d=i[a],m=MS(s,a);m&&RS(r,m,d)}}function CS(r,e){let t=e.schema;if(!t)return;let i=t.classes,s=e.featureTables;if(i&&s)for(let a in i){let d=IS(s,a);d&&LS(r,t,d)}}function IS(r,e){for(let t in r){let i=r[t];if(i.class===e)return i}return null}function MS(r,e){for(let t in r){let i=r[t];if(i.class===e)return i}return null}function LS(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 s=t.count;for(let a in i.properties){let d=i.properties[a],m=t.properties?.[a];if(m)m.data=PS(r,e,d,s,m)}}function RS(r,e,t){let i=e.class;for(let s in t.properties){let a=e?.properties?.[s];if(a)a.data=BS(r,a,i)}}function PS(r,e,t,i,s){let a=[],d=s.bufferView,m=r.getTypedArrayForBufferView(d),b=NS(r,t,s,i),_=FS(r,t,s,i);return t.type===`STRING`||t.componentType===`STRING`?a=Aa(i,m,b,_):kS(t)&&(a=OS(t,i,m,b)),a}function NS(r,e,t,i){return e.type===`ARRAY`&&typeof e.componentCount>`u`&&typeof t.arrayOffsetBufferView<`u`?Ki(r,t.arrayOffsetBufferView,t.offsetType||`UINT32`,i):null}function FS(r,e,t,i){return typeof t.stringOffsetBufferView<`u`?Ki(r,t.stringOffsetBufferView,t.offsetType||`UINT32`,i):null}function kS(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 OS(r,e,t,i){let s=r.type===`ARRAY`,a=r.componentCount,d=`SCALAR`,m=r.componentType||r.type,b=us(d,m),x=Xi(t,d,m,t.byteLength/b);return s?i?oa(x,e,i,t.length,b):a?sa(x,e,a):[]:x}function BS(r,e,t){let i=r.gltf.json;if(!i.meshes)return[];let s=[];for(let a of i.meshes)for(let d of a.primitives)DS(r,t,e,s,d);return s}function DS(r$24,e,t,i,s){let d=Yi(r$24,r({channels:t.channels},t.texture),s);d&&ia(r$24,e,d,i,s)}var sg=`4.5.4`;var Ag=`4.5.4`;var aa={TRANSCODER:`basis_transcoder.js`,TRANSCODER_WASM:`basis_transcoder.wasm`,ENCODER:`basis_encoder.js`,ENCODER_WASM:`basis_encoder.wasm`};var ag;async function Tl(r){Ao$1(r.modules);return Xl$1(`basis`)||(ag||=US(r),await ag)}async function US(r){let e=null,t=null;return[e,t]=await Promise.all([await ru$1(aa.TRANSCODER,`textures`,r),await ru$1(aa.TRANSCODER_WASM,`textures`,r)]),e=e||globalThis.BASIS,await GS(e,t)}function GS(r,e){let t={};return e&&(t.wasmBinary=e),vu$1(()=>r(t),i=>{let{BasisFile:s,initializeBasis:a}=i;return a(),{BasisFile:s}})}var bl;async function _l(r){let e=r.modules||{};return e.basisEncoder?e.basisEncoder:(bl=bl||jS(r),await bl)}async function jS(r){let e=null,t=null;return[e,t]=await Promise.all([await ru$1(aa.ENCODER,`textures`,r),await ru$1(aa.ENCODER_WASM,`textures`,r)]),e=e||globalThis.BASIS,await VS(e,t)}function VS(r,e){let t={};return e&&(t.wasmBinary=e),vu$1(()=>r(t),i=>{let{BasisFile:s,KTX2File:a,BasisEncoder:d,initializeBasis:m}=i;return m(),{BasisFile:s,KTX2File:a,BasisEncoder:d}})}var zS=[``,`WEBKIT_`,`MOZ_`];var cg={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 ca=null;function lg(r){if(!ca){r=r||qS()||void 0,ca=new Set;for(let e of zS)for(let t in cg)if(r&&r.getExtension(`${e}${t}`))for(let i of cg[t])ca.add(i)}return ca}function qS(){try{return document.createElement(`canvas`).getContext(`webgl`)}catch{return null}}var dr=[171,75,84,88,32,50,48,187,13,10,26,10];function ug(r){let e=new Uint8Array(r);return!(e.byteLength<dr.length||e[0]!==dr[0]||e[1]!==dr[1]||e[2]!==dr[2]||e[3]!==dr[3]||e[4]!==dr[4]||e[5]!==dr[5]||e[6]!==dr[6]||e[7]!==dr[7]||e[8]!==dr[8]||e[9]!==dr[9]||e[10]!==dr[10]||e[11]!==dr[11])}var fg=Promise.resolve();var dg={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:6,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(dg));async function WS(r){let e=fg,t;fg=new Promise(i=>{t=i}),await e;try{return await r()}finally{t()}}async function pg(r,e={}){let t=eu$1(e);return await WS(async()=>{if(!e.basis?.containerFormat||e.basis.containerFormat===`auto`){if(ug(r))return hg((await _l(t)).KTX2File,r,e);let{BasisFile:i}=await Tl(t);return yl(i,r,e)}if(e.basis.module===`encoder`){let i=await _l(t);return e.basis.containerFormat===`ktx2`?hg(i.KTX2File,r,e):yl(i.BasisFile,r,e)}else{let{BasisFile:s}=await Tl(t);return yl(s,r,e)}})}function yl(r,e,t){let i=new r(new Uint8Array(e));try{if(!i.startTranscoding())throw new Error(`Failed to start basis transcoding`);let s=i.getNumImages(),a=[];for(let d=0;d<s;d++){let m=i.getNumLevels(d),b=[];for(let _=0;_<m;_++)b.push(KS(i,d,_,t));a.push(b)}return a}finally{i.close(),i.delete()}}function KS(r$25,e,t,i){let s$9=r$25.getImageWidth(e,t),a=r$25.getImageHeight(e,t),d=r$25.getHasAlpha(),{compressed:m,format:b,basisFormat:_,textureFormat:x}=mg(i,d),w=r$25.getImageTranscodedSizeInBytes(e,t,_),C=new Uint8Array(w);if(!r$25.transcodeImage(C,e,t,_,0,0))throw new Error(`failed to start Basis transcoding`);return s(r(r({shape:`texture-level`,width:s$9,height:a,data:C,compressed:m},b!==void 0?{format:b}:{}),x!==void 0?{textureFormat:x}:{}),{hasAlpha:d})}function hg(r,e,t){let i=new r(new Uint8Array(e));try{if(!i.startTranscoding())throw new Error(`failed to start KTX2 transcoding`);let s=i.getLevels(),a=[];for(let d=0;d<s;d++)a.push(XS(i,d,t));return[a]}finally{i.close(),i.delete()}}function XS(r$26,e,t){let{alphaFlag:i,height:s$10,width:a}=r$26.getImageLevelInfo(e,0,0),{compressed:d,format:m,basisFormat:b,textureFormat:_}=mg(t,i),x=r$26.getImageTranscodedSizeInBytes(e,0,0,b),w=new Uint8Array(x);if(!r$26.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:s$10,data:w,compressed:d},m!==void 0?{format:m}:{}),_!==void 0?{textureFormat:_}:{}),{levelSize:x,hasAlpha:i})}function mg(r,e){let t=r.basis?.format||`auto`;t===`auto`&&(t=r.basis?.supportedTextureFormats?fs(r.basis.supportedTextureFormats):fs()),typeof t==`object`&&(t=e?t.alpha:t.noAlpha);let s=dg[t.toLowerCase()];if(!s)throw new Error(`Unknown Basis format ${t}`);return s}function fs(r=lg()){let e=new Set(r);return $i(e,[`astc-4x4-unorm`,`astc-4x4-unorm-srgb`])?`astc-4x4`:$i(e,[`bc7-rgba-unorm`,`bc7-rgba-unorm-srgb`])?{alpha:`bc7-m5`,noAlpha:`bc7-m6-opaque-only`}:$i(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`}:$i(e,[`pvrtc-rgb4unorm-webgl`,`pvrtc-rgba4unorm-webgl`,`pvrtc-rgb2unorm-webgl`,`pvrtc-rgba2unorm-webgl`])?{alpha:`pvrtc1-4-rgba`,noAlpha:`pvrtc1-4-rgb`}:$i(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`:$i(e,[`atc-rgb-unorm-webgl`,`atc-rgba-unorm-webgl`,`atc-rgbai-unorm-webgl`])?{alpha:`atc-rgba-interpolated-alpha`,noAlpha:`atc-rgb`}:`rgb565`}function $i(r,e){return e.some(t=>r.has(t))}var xl=s(r({},{dataType:null,batchType:null,name:`Basis`,id:`basis`,module:`textures`,version:Ag,worker:!0,extensions:[`basis`,`ktx2`],mimeTypes:[`application/octet-stream`,`image/ktx2`],tests:[`sB`],binary:!0,options:{basis:{format:`auto`,containerFormat:`auto`,module:`transcoder`}}}),{parse:pg});var eo=!0;var bg=1735152710;var vl=12;var la=8;var YS=1313821514;var JS=5130562;var ZS=0;var $S=0;var e4=1;function t4(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 Tg(r,e=0,t={}){let i=new DataView(r),{magic:s=bg}=t,a=i.getUint32(e,!1);return a===s||a===bg}function _g(r,e,t=0,i={}){let s=new DataView(e),a=t4(s,t+0),d=s.getUint32(t+4,eo),m=s.getUint32(t+8,eo);switch(Object.assign(r,{header:{byteOffset:t,byteLength:m,hasBinChunk:!1},type:a,version:d,json:{},binChunks:[]}),t+=vl,r.version){case 1:return r4(r,s,t);case 2:return n4(r,s,t,i={});default:throw new Error(`Invalid GLB version ${r.version}. Only supports version 1 and 2.`)}}function r4(r,e,t){ut(r.header.byteLength>vl+la);let i=e.getUint32(t+0,eo),s=e.getUint32(t+4,eo);return t+=la,ut(s===ZS),wl(r,e,t,i),t+=i,t+=El(r,e,t,r.header.byteLength),t}function n4(r,e,t,i){return ut(r.header.byteLength>vl+la),i4(r,e,t,i),t+r.header.byteLength}function i4(r,e,t,i){for(;t+8<=r.header.byteLength;){let s=e.getUint32(t+0,eo),a=e.getUint32(t+4,eo);switch(t+=la,a){case YS:wl(r,e,t,s);break;case JS:El(r,e,t,s);break;case $S:i.strict||wl(r,e,t,s);break;case e4:i.strict||El(r,e,t,s)}t+=No(s,4)}return t}function wl(r,e,t,i){let s=new Uint8Array(e.buffer,t,i),d=new TextDecoder(`utf8`).decode(s);return r.json=JSON.parse(d),No(i,4)}function El(r,e,t,i){return r.header.hasBinChunk=!0,r.binChunks.push({byteOffset:t,byteLength:i,arrayBuffer:e.buffer}),No(i,4)}function Sl(r,e,t){if(r.startsWith(`data:`)||r.startsWith(`http:`)||r.startsWith(`https:`))return r;let s=t?.baseUrl||o4(e?.core?.baseUrl);if(!s)throw new Error(`'baseUrl' must be provided to resolve relative url ${r}`);return s.endsWith(`/`)?`${s}${r}`:`${s}/${r}`}function o4(r){if(!r)return;if(r.endsWith(`/`))return r;let e=r.lastIndexOf(`/`);return e>=0?r.slice(0,e+1):``}var Cl={};w(Cl,{decode:()=>c4,name:()=>xg});function s4(r){return typeof r==`string`?r:[`NONE`,`OCTAHEDRAL`,`QUATERNION`,`EXPONENTIAL`,`COLOR`][r]}async function yg(r,e,t,i,s,a=`NONE`){await fl.ready,fl.decodeGltfBuffer(r,e,t,i,s,s4(a))}async function ua(r,e,t){if(!e.gltf?.decompressMeshes||!e.gltf.loadBuffers)return;A4(r.json);let i=new Ke(r),s=r.json.bufferViews||[],a=s.map(d=>a4(i,d,t));await Promise.all(a);for(let d of s)i.removeObjectExtension(d,t);for(let d of r.json.buffers||[])i.removeObjectExtension(d,t);i.removeExtension(t)}function A4(r){let e=r.bufferViews||[];for(let i=0;i<e.length;i++){let s=e[i].extensions;if(s?.KHR_meshopt_compression&&s.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 s=t[i].extensions;if(s?.KHR_meshopt_compression&&s.EXT_meshopt_compression)throw new Error(`glTF buffer ${i} cannot use both KHR_meshopt_compression and EXT_meshopt_compression.`)}}async function a4(r,e,t){let i=r.getObjectExtension(e,t);if(!i)return;let{byteOffset:s=0,byteLength:a,byteStride:d,count:m,mode:b,filter:_=`NONE`,buffer:x}=i,w=r.gltf.buffers[x],C=r.gltf.buffers[e.buffer],R=new Uint8Array(w.arrayBuffer,w.byteOffset+s,a);await yg(new Uint8Array(C.arrayBuffer,C.byteOffset+(e.byteOffset||0),e.byteLength),m,d,R,b,_)}var xg=`EXT_meshopt_compression`;async function c4(r,e){await ua(r,e,xg)}var Il={};w(Il,{decode:()=>l4,name:()=>wg});var wg=`KHR_meshopt_compression`;async function l4(r,e){await ua(r,e,wg)}var Ml={};w(Ml,{name:()=>u4,preprocess:()=>f4});var to=`EXT_texture_webp`;var u4=to;function f4(r,e){let t=new Ke(r);if(!qd$1(`image/webp`)){if(t.getRequiredExtensions().includes(to))throw new Error(`gltf: Required extension ${to} not supported by browser`);return}let{json:i}=t;for(let s of i.textures||[]){let a=t.getObjectExtension(s,to);a&&(s.source=a.source),t.removeObjectExtension(s,to)}t.removeExtension(to)}var Ll={};w(Ll,{name:()=>h4,preprocess:()=>d4});var ro=`EXT_texture_avif`;var h4=ro;async function d4(r,e){let t=new Ke(r);if(!(await $d$1()).has(`image/avif`)){if(t.getRequiredExtensions().includes(ro))throw new Error(`gltf: Required extension ${ro} not supported by browser`);return}let{json:s}=t;for(let a of s.textures||[]){let d=t.getObjectExtension(a,ro);d&&(a.source=d.source),t.removeObjectExtension(a,ro)}t.removeExtension(ro)}var Rl={};w(Rl,{name:()=>p4,preprocess:()=>m4});var fa=`KHR_texture_basisu`;var p4=fa;function m4(r,e){let t=new Ke(r),{json:i}=t;for(let s of i.textures||[]){let a=t.getObjectExtension(s,fa);a&&(s.source=a.source,t.removeObjectExtension(s,fa))}t.removeExtension(fa)}var kl={};w(kl,{decode:()=>P4,encode:()=>N4,name:()=>L4,preprocess:()=>R4});var g4=`1.5.6`;var b4=`1.4.1`;var Pl=`https://www.gstatic.com/draco/versioned/decoders/${g4}`;var Ft={DECODER:`draco_wasm_wrapper.js`,DECODER_WASM:`draco_decoder.wasm`,FALLBACK_DECODER:`draco_decoder.js`,ENCODER:`draco_encoder.js`};var hs={[Ft.DECODER]:`${Pl}/${Ft.DECODER}`,[Ft.DECODER_WASM]:`${Pl}/${Ft.DECODER_WASM}`,[Ft.FALLBACK_DECODER]:`${Pl}/${Ft.FALLBACK_DECODER}`,[Ft.ENCODER]:`https://raw.githubusercontent.com/google/draco/${b4}/javascript/${Ft.ENCODER}`};var Nl;async function vg(r={},e){let t=r.modules||{};return t.draco3d?Nl||=vu$1(()=>t.draco3d.createDecoderModule({}),i=>({draco:i})):Nl||=T4(r,e),await Nl}function Eg(r,e){if(r&&typeof r==`object`){if(r.default)return r.default;if(r[e])return r[e]}return r}async function T4(r$27,e){let t,i;switch(e){case`js`:t=await ru$1(hs[Ft.FALLBACK_DECODER],`draco`,r$27,Ft.FALLBACK_DECODER);break;default:try{[t,i]=await Promise.all([await ru$1(hs[Ft.DECODER],`draco`,r$27,Ft.DECODER),await ru$1(hs[Ft.DECODER_WASM],`draco`,r$27,Ft.DECODER_WASM)])}catch{t=null,i=null}}return t=Eg(t,`DracoDecoderModule`),t=t||globalThis.DracoDecoderModule,!t&&!F&&([t,i]=await Promise.all([await ru$1(hs[Ft.DECODER],`draco`,s(r({},r$27),{useLocalLibraries:!0}),Ft.DECODER),await ru$1(hs[Ft.DECODER_WASM],`draco`,s(r({},r$27),{useLocalLibraries:!0}),Ft.DECODER_WASM)]),t=Eg(t,`DracoDecoderModule`),t=t||globalThis.DracoDecoderModule),await _4(t,i)}function _4(r$28,e){if(typeof r$28!=`function`)throw new Error(`DracoDecoderModule could not be loaded`);let t={};return e&&(t.wasmBinary=e),vu$1(i=>r$28(s(r({},t),{onModuleLoaded:i})),i=>({draco:i}))}var Sg=`4.5.4`;function Ig(r,e,t){let i=Mg(e.metadata),s=[],a=y4(e.attributes);for(let d in r){let m=r[d],b=Cg(d,m,a[d]);s.push(b)}if(t){let d=Cg(`indices`,t);s.push(d)}return{fields:s,metadata:i}}function y4(r){let e={};for(let t in r){let i=r[t];e[i.name||`undefined`]=i}return e}function Cg(r,e,t){return q0(r,e,t?Mg(t.metadata):void 0)}function Mg(r){Object.entries(r);let e={};for(let t in r)e[`${t}.string`]=JSON.stringify(r[t]);return e}var Lg={POSITION:`POSITION`,NORMAL:`NORMAL`,COLOR:`COLOR_0`,TEX_COORD:`TEXCOORD_0`};var x4={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array};var w4=4;var ds=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 s$11=this.decoder.GetEncodedGeometryType(i),a=s$11===this.draco.TRIANGULAR_MESH?new this.draco.Mesh:new this.draco.PointCloud;try{let d;switch(s$11){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 C=`DRACO decompression failed: ${d.error_msg()}`;throw new Error(C)}let m=this._getDracoLoaderData(a,s$11,t),b=this._getMeshData(a,m,t),_=Dn(b.attributes),x=Ig(b.attributes,m,b.indices);return s(r({loader:`draco`,loaderData:m,header:{vertexCount:a.num_points(),boundingBox:_}},b),{schema:x})}finally{this.draco.destroy(i),a&&this.draco.destroy(a)}}_getDracoLoaderData(e,t,i){let s=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:s,attributes:a}}_getDracoAttributes(e,t){let i={};for(let s=0;s<e.num_attributes();s++){let a=this.decoder.GetAttribute(e,s),d=this._getAttributeMetadata(e,s);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:s,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 s=this._getMeshAttributes(t,e,i);if(!s.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:s,indices:{value:this._getTriangleStripIndices(e),size:1}}:{topology:`triangle-list`,mode:5,attributes:s,indices:{value:this._getTriangleListIndices(e),size:1}}:{topology:`point-list`,mode:0,attributes:s}}_getMeshAttributes(e,t,i){let s={};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:_}=m;s[d]={value:b,size:_,byteOffset:a.byte_offset,byteStride:a.byte_stride,normalized:a.normalized}}}return s}_getTriangleListIndices(e){let i=e.num_faces()*3,s=i*w4,a=this.draco._malloc(s);try{return this.decoder.GetTrianglesUInt32Array(e,s,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),S4(t)}finally{this.draco.destroy(t)}}_getAttributeValues(e,t){let i=x4[t.data_type];if(!i)return console.warn(`DRACO: Unsupported attribute type ${t.data_type}`),null;let s=t.num_components,d=e.num_points()*s,m=d*i.BYTES_PER_ELEMENT,b=E4(this.draco,i),_,x=this.draco._malloc(m);try{let w=this.decoder.GetAttribute(e,t.attribute_index);this.decoder.GetAttributeDataArrayForAllPoints(e,w,b,m,x),_=new i(this.draco.HEAPF32.buffer,x,d).slice()}finally{this.draco._free(x)}return{value:_,size:s}}_deduceAttributeName(e,t){let i=e.unique_id;for(let[d,m]of Object.entries(t.extraAttributes||{}))if(m===i)return d;let s=e.attribute_type;for(let d in Lg)if(this.draco[d]===s)return Lg[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 s=0;s<i;s++){let a=this.metadataQuerier.GetEntryName(e,s);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 s=v4(i);return{int:this.metadataQuerier.GetIntEntry(e,t),string:this.metadataQuerier.GetStringEntry(e,t),double:this.metadataQuerier.GetDoubleEntry(e,t),intArray:s}}finally{this.draco.destroy(i)}}_disableAttributeTransforms(e){let{quantizedAttributes:t=[],octahedronAttributes:i=[]}=e,s=[...t,...i];for(let a of s)this.decoder.SkipAttributeTransform(this.draco[a])}_getQuantizationTransform(e,t){let{quantizedAttributes:i=[]}=t,s=e.attribute_type();if(i.map(d=>this.decoder[d]).includes(s)){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,s=e.attribute_type();if(i.map(d=>this.decoder[d]).includes(s)){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 E4(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 v4(r){let e=r.size(),t=new Int32Array(e);for(let i=0;i<e;i++)t[i]=r.GetValue(i);return t}function S4(r){let e=r.size(),t=new Int32Array(e);for(let i=0;i<e;i++)t[i]=r.GetValue(i);return t}var ps=s(r({},{dataType:null,batchType:null,name:`Draco`,id:`draco`,module:`draco`,version:Sg,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:C4});async function C4(r,e){let{draco:t}=await vg(eu$1(e),e?.draco?.decoderType||`wasm`),i=new ds(t);try{return i.parseSync(r,e?.draco)}finally{i.destroy()}}function Pg(r){let e={};for(let t in r){let i=r[t];if(t!==`indices`)e[t]=Fl(i)}return e}function Fl(r){let{buffer:e,size:t,count:i}=I4(r);return{value:e,size:t,byteOffset:0,count:i,type:na(t),componentType:Cn(e)}}function I4(r){let e=r,t=1,i=0;return r&&r.value&&(e=r.value,t=r.size||1),e&&(ArrayBuffer.isView(e)||(e=M4(e,Float32Array)),i=e.length/t),{buffer:e,size:t,count:i}}function M4(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 L4=In;function R4(r,e,t){let i=new Ke(r);for(let s of Ng(i))i.getObjectExtension(s,In)}async function P4(r,e,t){if(!e?.gltf?.decompressMeshes)return;let i=new Ke(r),s=[];for(let a of Ng(i))i.getObjectExtension(a,In)&&s.push(F4(i,a,e,t));await Promise.all(s),i.removeExtension(In)}function N4(r,e={}){let t=new Ke(r);for(let i of t.json.meshes||[])k4(i,e),t.addRequiredExtension(In)}async function F4(r$29,e,t,i){let s=r$29.getObjectExtension(e,In);if(!s)return;let a=r$29.getTypedArrayForBufferView(s.bufferView),d=uu$1(a.buffer,a.byteOffset),m=r({},t);delete m[`3d-tiles`];let b=await zl$1(d,ps,m,i),_=Pg(b.attributes);for(let[x,w]of Object.entries(_))if(x in e.attributes){let C=e.attributes[x],R=r$29.getAccessor(C);R?.min&&R?.max&&(w.min=R.min,w.max=R.max)}e.attributes=_,b.indices&&(e.indices=Fl(b.indices)),r$29.removeObjectExtension(e,In),O4(e)}function k4(r,e,t=4,i,s){if(!i.DracoWriter)throw new Error(`options.gltf.DracoWriter not provided`);let a=i.DracoWriter.encodeSync({attributes:r}),d=s?.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 O4(r){if(!r.attributes&&Object.keys(r.attributes).length>0)throw new Error(`glTF: Empty primitive detected: Draco decompression failure?`)}function*Ng(r){for(let e of r.json.meshes||[])for(let t of e.primitives)yield t}var Bl={};w(Bl,{decode:()=>G4,name:()=>B4});var no=`KHR_texture_transform`;var B4=no;var ha=new Z;var D4=new tt;var U4=new tt;async function G4(r,e){let t=new Ke(r);if(!t.hasExtension(no)||!e.gltf?.loadBuffers)return;let s=r.json.materials||[];for(let a=0;a<s.length;a++)j4(a,r,t);s.some(a=>Ol(a).length>0)||t.removeExtension(no)}function j4(r,e,t){let i=e.json.materials?.[r],s=Ol(i),a=new Map,d=V4(e);for(let m of s){let b=m.extensions?.[no];if(b){let _=b.texCoord??m.texCoord??0,x=z4(_,b),w=a.get(x);if(!w){if(w={sourceTexCoord:_,texCoord:d,matrix:K4(b)},!q4(e,r,w))continue;d++,a.set(x,w)}m.texCoord=w.texCoord,t.removeObjectExtension(m,no),m.extensions&&Object.keys(m.extensions).length===0&&delete m.extensions}}}function Ol(r){if(!r||typeof r!=`object`)return[];let e=r,t=[],i=e.extensions;Number.isFinite(e.index)&&i?.[no]&&t.push(e);for(let[s,a]of Object.entries(e))s!==`extras`&&t.push(...Ol(a));return t}function V4(r){let e=-1;for(let t of r.json.meshes||[])for(let i of t.primitives)for(let s of Object.keys(i.attributes)){let a=/^TEXCOORD_(\d+)$/.exec(s);a&&(e=Math.max(e,Number(a[1])))}return e+1}function z4(r,e){let{offset:t=[0,0],rotation:i=0,scale:s=[1,1]}=e;return JSON.stringify([r,t,i,s])}function q4(r,e,t){let i=[],s=r.json.meshes||[];for(let a of s)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=>!H4(r,a,t.sourceTexCoord)))return!1;for(let a of i)Q4(r,a,t);return!0}function H4(r,e,t){let i=e.attributes[`TEXCOORD_${t}`];if(!Number.isFinite(i))return!1;let s=r.json.accessors?.[i];if(!s||s.bufferView===void 0||s.sparse)return!1;let a=r.json.bufferViews?.[s.bufferView];return!!(a&&r.buffers[a.buffer])}function Q4(r,e,t){let{sourceTexCoord:i,texCoord:s,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:_,byteOffset:x}=r.buffers[b.buffer],w=(x||0)+(m.byteOffset||0)+(b.byteOffset||0),{ArrayType:C,length:R}=Jn(m,b),D=ra[m.componentType],k=ta[m.type],W=b.byteStride||D*k,j=new Float32Array(R);for(let V=0;V<m.count;V++){let J=new C(_,w+V*W,2);ha.set(J[0],J[1],1),ha.transformByMatrix3(a),j.set([ha[0],ha[1]],V*k)}W4(s,m,e,r,j)}}}}function W4(r,e,t,i,s){i.buffers.push({arrayBuffer:ir$1(s.buffer),byteOffset:0,byteLength:s.buffer.byteLength}),i.json.bufferViews=i.json.bufferViews||[];let a=i.json.bufferViews;a.push({buffer:i.buffers.length-1,byteLength:s.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 K4(r){let{offset:e=[0,0],rotation:t=0,scale:i=[1,1]}=r,s=new tt().set(1,0,0,0,1,0,e[0],e[1],1),a=D4.set(Math.cos(t),Math.sin(t),0,-Math.sin(t),Math.cos(t),0,0,0,1),d=U4.set(i[0],0,0,0,i[1],0,0,0,1);return s.multiplyRight(a).multiplyRight(d)}var Dl={};w(Dl,{decode:()=>Y4,encode:()=>J4,name:()=>X4});var Zn=`KHR_lights_punctual`;var X4=Zn;async function Y4(r){let e=new Ke(r),{json:t}=e,i=e.getExtension(Zn);i&&(e.json.lights=i.lights,e.removeExtension(Zn));for(let s of t.nodes||[]){let a=e.getObjectExtension(s,Zn);a&&(s.light=a.light),e.removeObjectExtension(s,Zn)}}async function J4(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 s=i.node;e.addObjectExtension(s,Zn,i)}delete e.json.lights}}var Ul={};w(Ul,{decode:()=>$4,encode:()=>eC,name:()=>Z4});var ms=`KHR_materials_unlit`;var Z4=ms;async function $4(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,ms);e.removeExtension(ms)}function eC(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,ms,{}),e.addExtension(ms))}var Gl={};w(Gl,{decode:()=>rC,encode:()=>nC,name:()=>tC});var gs=`KHR_techniques_webgl`;var tC=gs;async function rC(r){let e=new Ke(r),{json:t}=e,i=e.getExtension(gs);if(i){let s=iC(i,e);for(let a of t.materials||[]){let d=e.getObjectExtension(a,gs);d&&(a.technique=Object.assign({},d,s[d.technique]),a.technique.values=oC(a.technique,e)),e.removeObjectExtension(a,gs)}e.removeExtension(gs)}}async function nC(r,e){}function iC(r,e){let{programs:t=[],shaders:i=[],techniques:s=[]}=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]}),s.forEach(d=>{d.program=t[d.program]}),s}function oC(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 Fg=[ml,hl,Il,Cl,Ll,Ml,Rl,kl,Dl,Ul,Gl,Bl,gl];async function kg(r,e={},t){let i=Fg.filter(s=>Bg(s.name,e));for(let s of i)await s.preprocess?.(r,e,t)}async function Og(r,e={},t){let i=Fg.filter(s=>Bg(s.name,e));for(let s of i)await s.decode?.(r,e,t)}function Bg(r,e){let t=e?.gltf?.excludeExtensions||{};return!(r in t&&!t[r])}var jl=`KHR_binary_glTF`;function Dg(r){let e=new Ke(r),{json:t}=e;for(let i of t.images||[]){let s=e.getObjectExtension(i,jl);s&&Object.assign(i,s),e.removeObjectExtension(i,jl)}t.buffers&&t.buffers[0]&&delete t.buffers[0].uri,e.removeExtension(jl)}var Ug={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 AC={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 Vl=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),Dg(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 Ug)this._convertTopLevelObjectToArray(e,t)}_convertTopLevelObjectToArray(e,t){let i=e[t];if(!(!i||Array.isArray(i))){e[t]=[];for(let s in i){let a=i[s];a.id=a.id||s;let d=e[t].length;e[t].push(a),this.idToIndexMap[t][s]=d}}}_convertObjectIdsToArrayIndices(e){for(let t in Ug)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:s,material:a}=t;for(let d in i)i[d]=this._convertIdToIndex(i[d],`accessor`);s&&(t.indices=this._convertIdToIndex(s,`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 s in i){let a=i[s];i[s]=this._convertIdToIndex(a,s)}}_convertIdToIndex(e,t){let i=AC[t];if(i in this.idToIndexMap){let s=this.idToIndexMap[i][e];if(!Number.isFinite(s))throw new Error(`gltf v1: failed to resolve ${t} with id ${e}`);return s}return e}_updateObjects(e){for(let t of this.json.buffers)delete t.type}_updateMaterial(e){for(let t of e.materials){t.pbrMetallicRoughness={baseColorFactor:[1,1,1,1],metallicFactor:1,roughnessFactor:1};let i=t.values?.tex||t.values?.texture2d_0||t.values?.diffuseTex,s=e.textures.findIndex(a=>a.id===i);s!==-1&&(t.pbrMetallicRoughness.baseColorTexture={index:s})}}};function Gg(r,e={}){return new Vl().normalize(r,e)}function aC(r$30,e){let t=r$30.basis,i=t?.format;return s(r({},r$30),{core:s(r({},r$30.core),{mimeType:e}),basis:s(r({},t),{format:i&&i!==`auto`?i:fs(t?.supportedTextureFormats)})})}async function jg(r,e,t=0,i,s){return cC(r,e,t,i),Gg(r,{normalize:i?.gltf?.normalize}),await kg(r,i,s),i?.gltf?.loadBuffers&&r.json.buffers&&await lC(r,i,s),i?.gltf?.loadImages&&await uC(r,i,s),await Og(r,i,s),r}function cC(r,e,t,i){if(i.core?.baseUrl&&(r.baseUri=i.core?.baseUrl),e instanceof ArrayBuffer&&!Tg(e,t,i.glb)&&(e=new TextDecoder().decode(e)),typeof e==`string`)r.json=cu$1(e);else if(e instanceof ArrayBuffer){let d={};t=_g(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 s=r.json.buffers||[];if(r.buffers=new Array(s.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 lC(r,e,t){let i=r.json.buffers||[];for(let s=0;s<i.length;++s){let a=i[s];if(a.uri){let{fetch:d}=t;ht(d);let m=Sl(a.uri,e,t),_=await(await t?.fetch?.(m))?.arrayBuffer?.();r.buffers[s]={arrayBuffer:_,byteOffset:0,byteLength:_.byteLength},delete a.uri}else r.buffers[s]===null&&(r.buffers[s]={arrayBuffer:new ArrayBuffer(a.byteLength),byteOffset:0,byteLength:a.byteLength})}}async function uC(r,e,t){let i=fC(r),s=r.json.images||[],a=[];for(let d of i)a.push(hC(r,s[d],d,e,t));return await Promise.all(a)}function fC(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 hC(r,e,t,i,s){let a;if(e.uri&&!e.hasOwnProperty(`bufferView`)){let b=Sl(e.uri,i,s),{fetch:_}=s;a=await(await _(b)).arrayBuffer(),e.bufferView={data:a}}if(Number.isFinite(e.bufferView)){let b=eg(r.json,r.buffers,e.bufferView);a=uu$1(b.buffer,b.byteOffset,b.byteLength)}ht(a,`glTF image has no data`);let d=aC(i,e.mimeType),m=await zl$1(a,[Vn$1,xl],d,s);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 sn={dataType:null,batchType:null,name:`glTF`,id:`gltf`,module:`gltf`,version:sg,extensions:[`gltf`,`glb`],mimeTypes:[`model/gltf+json`,`model/gltf-binary`],text:!0,binary:!0,tests:[`glTF`],parse:dC,options:{gltf:{normalize:!0,loadBuffers:!0,loadImages:!0,decompressMeshes:!0}}};async function dC(r$31,e={},t){let i=r(r({},sn.options),e);i.gltf=r(r({},sn.options.gltf),i.gltf);return await jg({},r$31,e?.glb?.byteOffset||0,i,t)}var pC={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16};var mC={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 gC={magFilter:vr.TEXTURE_MAG_FILTER,minFilter:vr.TEXTURE_MIN_FILTER,wrapS:vr.TEXTURE_WRAP_S,wrapT:vr.TEXTURE_WRAP_T};var bC={[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 TC(){return{id:`default-sampler`,parameters:bC}}function _C(r){return mC[r]}function yC(r){return pC[r]}var zl=class{baseUri=``;jsonUnprocessed;json;buffers=[];images=[];postProcess(e,t={}){let{json:i,buffers:s=[],images:a=[]}=e,{baseUri:d=``}=e;return ht(i),this.baseUri=d,this.buffers=s,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((s,a)=>this._resolveBufferView(s,a))),e.images&&(i.images=e.images.map((s,a)=>this._resolveImage(s,a))),e.samplers&&(i.samplers=e.samplers.map((s,a)=>this._resolveSampler(s,a))),e.textures&&(i.textures=e.textures.map((s,a)=>this._resolveTexture(s,a))),e.accessors&&(i.accessors=e.accessors.map((s,a)=>this._resolveAccessor(s,a))),e.materials&&(i.materials=e.materials.map((s,a)=>this._resolveMaterial(s,a))),e.meshes&&(i.meshes=e.meshes.map((s,a)=>this._resolveMesh(s,a))),e.nodes&&(i.nodes=e.nodes.map((s,a)=>this._resolveNode(s,a)),i.nodes=i.nodes.map((s,a)=>this._resolveNodeChildren(s))),e.skins&&(i.skins=e.skins.map((s,a)=>this._resolveSkin(s,a))),e.scenes&&(i.scenes=e.scenes.map((s,a)=>this._resolveScene(s,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((s,a)=>{let d=this.getMesh(a);return s.id=d.id,s.primitives=s.primitives.concat(d.primitives),s},{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((s$12,a)=>{let d=s(r({},s$12),{attributes:{},indices:void 0,material:void 0}),m=s$12.attributes;for(let b in m)d.attributes[b]=this.getAccessor(m[b]);return s$12.indices!==void 0&&(d.indices=this.getAccessor(s$12.indices)),s$12.material!==void 0&&(d.material=this.getMaterial(s$12.material)),xC(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 s=i.pbrMetallicRoughness;s.baseColorTexture&&(s.baseColorTexture=r({},s.baseColorTexture),s.baseColorTexture.texture=this.getTexture(s.baseColorTexture.index)),s.metallicRoughnessTexture&&(s.metallicRoughnessTexture=r({},s.metallicRoughnessTexture),s.metallicRoughnessTexture.texture=this.getTexture(s.metallicRoughnessTexture.index))}return i}_resolveAccessor(e,t){let i=_C(e.componentType),s$13=yC(e.type),a=i*s$13,d=s(r({},e),{id:e.id||`accessor-${t}`,bytesPerComponent:i,components:s$13,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:_}=Jn(d,d.bufferView),x=(d.bufferView.byteOffset||0)+(d.byteOffset||0)+m.byteOffset,w=wi$1(m.arrayBuffer,x,_);d.bufferView.byteStride&&(w=this._getValueFromInterleavedBuffer(m,x,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=wC(t.indices.componentType),s=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(s[m]);ht(Number.isInteger(b)&&b>=0&&b<e.count,`glTF sparse accessor index is out of bounds`);for(let _=0;_<e.components;_++){let x=b*e.components+_,w=m*e.components+_;Reflect.set(e.value,x,d[w])}}}_getTypedArrayFromBufferView(e,t,i,s){let a=s*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(wi$1(d.arrayBuffer,m,a))}_getValueFromInterleavedBuffer(e,t,i,s,a){let d=new Uint8Array(a*s);for(let m=0;m<a;m++){let b=t+m*i;d.set(new Uint8Array(e.arrayBuffer.slice(b,b+s)),m*s)}return d.buffer}_resolveTexture(e,t){return s(r({},e),{id:e.id||`texture-${t}`,sampler:typeof e.sampler==`number`?this.getSampler(e.sampler):TC(),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 s in i){let a=this._enumSamplerParameter(s);a!==void 0&&(i.parameters[a]=i[s])}return i}_enumSamplerParameter(e){return gC[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}),s$14=this.images[t];return s$14&&(i.image=s$14),i}_resolveBufferView(e,t){let i=e.buffer,s$15=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(s$15,a,e.byteLength)})}_resolveCamera(e,t){let i=s(r({},e),{id:e.id||`camera-${t}`});return i.perspective,i.orthographic,i}};function xC(r,e,t){if(r.mode!==2&&r.mode!==6)return r;let i=r.indices?.value,s=r.indices?.count??EC(r),a=vC(i,s),d=a<=65535?Uint16Array:Uint32Array,m=r.mode===2?CC(i,s,d):IC(i,s,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?[SC(m)]:void 0,max:m.length?[a]:void 0,value:m},r}function wC(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 EC(r){let e=Object.values(r.attributes)[0];return ht(e,`glTF primitive must define at least one attribute`),e.count}function vC(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 SC(r){let e=1/0;for(let t of r)e=Math.min(e,t);return e}function bs(r,e){return r?Number(r[e]):e}function CC(r,e,t){if(e<2)return new t(0);let i=new t(e*2);for(let s=0;s<e;s++)i[s*2]=bs(r,s),i[s*2+1]=bs(r,(s+1)%e);return i}function IC(r,e,t){let i=Math.max(0,e-2),s=new t(i*3);for(let a=0;a<i;a++)s[a*3]=bs(r,0),s[a*3+1]=bs(r,a+1),s[a*3+2]=bs(r,a+2);return s}function $n(r,e){return new zl().postProcess(r,e)}async function Vg(r){let e=[];return r.scenes.forEach(t=>{t.traverse(i=>{})}),await MC(()=>e.some(t=>!t.loaded))}async function MC(r){for(;r();)await new Promise(e=>requestAnimationFrame(e))}var LC=`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 zg=`layout(std140) uniform scenegraphUniforms {
|
|
630
|
+
float sizeScale;
|
|
631
|
+
float sizeMinPixels;
|
|
632
|
+
float sizeMaxPixels;
|
|
633
|
+
mat4 sceneModelMatrix;
|
|
634
|
+
float composeModelMatrix;
|
|
635
|
+
} scenegraph;
|
|
636
|
+
`;var qg={name:`scenegraph`,source:LC,vs:zg,fs:zg,uniformTypes:{sizeScale:`f32`,sizeMinPixels:`f32`,sizeMaxPixels:`f32`,sceneModelMatrix:`mat4x4<f32>`,composeModelMatrix:`f32`}};var Hg=`#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 Qg=`#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 Wg=`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 RC=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 ql=s(r({},rd$1),{dependencies:[ge$1],source:RC});var Kg=[255,255,255,255];var PC={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:Kg},_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:[sn]};var Ts=class extends ao$1{getShaders(){let e={},t,i=this.context.device?.type===`webgpu`;this.props._lighting===`pbr`?(t=i?ql:rd$1,e.LIGHTING_PBR=1):i?t=ql:t={name:`pbrMaterial`};let s=[Wa$1,ma$1,Ka,qg,t];return super.getShaders({defines:e,vs:Hg,fs:Qg,source:Wg,modules:s})}initializeState(){let e=this.getAttributeManager(),t=this.context.device.type!==`webgpu`;e.addInstanced({instancePositions:{size:3,type:`float64`,fp64:this.use64bitPositions(),accessor:`getPosition`,transition:t},instanceColors:{type:`unorm8`,size:this.props.colorFormat.length,accessor:`getColor`,defaultValue:Kg,transition:t},instanceModelMatrix:zA})}updateState(e){super.updateState(e);let{props:t,oldProps:i}=e;t.scenegraph!==i.scenegraph?this._updateScenegraph():t._animations!==i._animations&&this._applyAnimationsProp(this.state.animator,t._animations)}finalizeState(e){super.finalizeState(e),this._destroyScenegraphAssets()}get isLoaded(){return!!(this.state?.scenegraph&&super.isLoaded)}_updateScenegraph(){let e=this.props,{device:t}=this.context,i=null;if(e.scenegraph instanceof ue)i={scenes:[e.scenegraph]};else if(e.scenegraph&&typeof e.scenegraph==`object`){let m=e.scenegraph,_=ul(t,m.json?$n(m):m,this._getModelOptions());i=_,Vg(_).then(()=>this.setNeedsRedraw()).catch(x=>{this.raiseError(x,`loading glTF`)})}let s={layer:this,device:this.context.device},a=e.getScene(i,s),d=e.getAnimator(i,s);if(a instanceof mi){this._destroyScenegraphAssets(),this._applyAnimationsProp(d,e._animations);let m=[];a.traverse(b=>{b instanceof gi&&m.push(b.model)}),this.setState({scenegraph:a,animator:d,materials:i?.materials||null,models:m,firstDrawSignaled:!1}),this.getAttributeManager().invalidateAll()}else a!==null&&S.warn(`invalid scenegraph:`,a)()}_destroyScenegraphAssets(){this.state.scenegraph?.destroy(),this.state.materials?.forEach(e=>e.destroy()),this.state.scenegraph=null,this.state.animator=null,this.state.materials=null,this.state.models=[]}_applyAnimationsProp(e,t){if(!e||!t)return;let i=e.getAnimations();Object.keys(t).sort().forEach(s=>{let a=t[s];if(s===`*`)i.forEach(d=>{Object.assign(d,a)});else if(Number.isFinite(Number(s))){let d=Number(s);d>=0&&d<i.length?Object.assign(i[d],a):S.warn(`animation ${s} not found`)()}else{let d=i.find(({animation:m})=>m.name===s);d?Object.assign(d,a):S.warn(`animation ${s} not found`)()}})}_getModelOptions(){let{_imageBasedLightingEnvironment:e}=this.props,t;e&&(typeof e==`function`?t=e({device:this.context.device,gl:this.context.gl,layer:this}):t=e);let i=this.context.device.type===`webgpu`?{depthWriteEnabled:!0,depthCompare:`less-equal`}:void 0;return{imageBasedLightingEnvironment:t,modelOptions:r({id:this.props.id,isInstanced:!0,bufferLayout:this.getAttributeManager().getBufferLayouts(),parameters:i},this.getShaders()),useTangents:!1}}draw({context:e}){if(!this.state.scenegraph)return;this.props._animations&&this.state.animator&&(this.state.animator.setTime(e.timeline.getTime()),this.setNeedsRedraw());let{viewport:t,renderPass:i}=this.context,{sizeScale:s,sizeMinPixels:a,sizeMaxPixels:d,coordinateSystem:m}=this.props,b={camera:t.cameraPosition},_=this.getNumInstances();this.state.scenegraph.traverse((x,{worldMatrix:w})=>{if(x instanceof gi){let{model:C}=x;C.setInstanceCount(_);let R={sizeScale:s,sizeMinPixels:a,sizeMaxPixels:d,composeModelMatrix:qA(t,m)?1:0,sceneModelMatrix:w};C.shaderInputs.setProps({pbrProjection:b,scenegraph:R}),C.draw(i)}}),this.state.firstDrawSignaled||(this.state.firstDrawSignaled=!0,this.props.onFirstDraw?.())}};Ts.defaultProps=PC;Ts.layerName=`ScenegraphLayer`;var Hl=Ts;var Xg=`layout(std140) uniform meshUniforms {
|
|
890
|
+
bool pickFeatureIds;
|
|
891
|
+
} mesh;
|
|
892
|
+
`;var Yg={name:`mesh`,vs:Xg,fs:Xg,source:`struct MeshUniforms {
|
|
893
|
+
pickFeatureIds: f32,
|
|
894
|
+
};
|
|
895
|
+
|
|
896
|
+
@group(0) @binding(auto) var<uniform> mesh: MeshUniforms;
|
|
897
|
+
`,uniformTypes:{pickFeatureIds:`f32`}};var FC=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:FC});var Zg=`#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 $g=`#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 e2=`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 kC(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 OC={pbrMaterial:{type:`object`,value:null},featureIds:{type:`array`,value:null,optional:!0}};var _s=class extends Wi{getShaders(){let e=super.getShaders();return s(r({},e),{vs:Zg,fs:$g,source:e2,modules:[...e.modules,Jg,Yg]})}initializeState(){let{featureIds:e}=this.props;super.initializeState();let t=this.getAttributeManager();e&&t.add({rowIndexes:{type:`uint32`,size:1,noAlloc:!0,update:this.calculateFeatureIdsPickingIndexes}})}updateState(e){super.updateState(e);let{props:t,oldProps:i}=e;t.pbrMaterial!==i.pbrMaterial&&this.updatePbrMaterialUniforms(t.pbrMaterial)}draw(e){let{featureIds:t}=this.props,{model:i}=this.state;if(!i)return;let s={pickFeatureIds:!!t},a={camera:this.context.viewport.cameraPosition};i.shaderInputs.setProps({pbrProjection:a,mesh:s}),super.draw(e)}getModel(e){let{id:t}=this.props,i=this.parseMaterial(this.props.pbrMaterial,e);this.setState({parsedPBRMaterial:i});let s$16=this.getShaders();return kC(e.attributes),new De(this.context.device,s(r({},this.getShaders()),{id:t,geometry:e,bufferLayout:this.getAttributeManager().getBufferLayouts(),defines:s(r(r({},s$16.defines),i?.defines),{HAS_UV_REGIONS:e.attributes.uvRegions?1:0,HAS_FEATURE_IDS:this.props.featureIds?1:0}),parameters:i?.parameters,isInstanced:!0}))}updatePbrMaterialUniforms(e){let{model:t}=this.state;if(t){let{mesh:s$17}=this.props,a=this.parseMaterial(e,s$17);this.setState({parsedPBRMaterial:a});let{pbr_baseColorSampler:d}=a.bindings,{emptyTexture:m}=this.state,b=d||m,_=s(r({},this.context.device.type===`webgpu`?{simpleMeshTexture:b}:{sampler:b}),{hasTexture:!!d}),i=r(r({},a.bindings),a.uniforms),{camera:x}=i,w=u(i,[`camera`]);t.shaderInputs.setProps({simpleMesh:_,pbrMaterial:w})}}parseMaterial(e,t){let i=!!(e.pbrMetallicRoughness&&e.pbrMetallicRoughness.baseColorTexture);return cs(this.context.device,r({unlit:i},e),{NORMAL:t.attributes.normals,TEXCOORD_0:t.attributes.texCoords},{pbrDebug:!1,lights:!0,useTangents:!1})}calculateFeatureIdsPickingIndexes(e){let t=this.props.featureIds;e.value=new Uint32Array(t)}finalizeState(e){super.finalizeState(e),this.state.parsedPBRMaterial?.generatedTextures.forEach(t=>t.destroy()),this.setState({parsedPBRMaterial:null})}};_s.layerName=`MeshLayer`;_s.defaultProps=OC;var t2=_s;var An=6356752.314245179;An*An,1/An,1/(An*An);function da(r){return r}new Z;function DC(r,e=[],t=da){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 r2(r,e=[]){return DC(r,e,V._cartographicRadians?da:ka$1)}function UC(r,e,t=da){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 n2(r,e){return UC(r,e,V._cartographicRadians?da:Ga$1)}var i2=1e-14;var GC=new Z;var o2={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 Ql={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 ys={east:new Z,north:new Z,up:new Z,west:new Z,south:new Z,down:new Z};var jC=new Z;var VC=new Z;var zC=new Z;function Wl(r,e,t,i,s,a){let d=o2[e]&&o2[e][t];Nt$1(d&&(!i||i===d));let m,b,_,x=GC.copy(s);if(Mt(x.x,0,i2)&&Mt(x.y,0,i2)){let C=Math.sign(x.z);m=jC.fromArray(Ql[e]),e!==`east`&&e!==`west`&&m.scale(C),b=VC.fromArray(Ql[t]),t!==`east`&&t!==`west`&&b.scale(C),_=zC.fromArray(Ql[i]),i!==`east`&&i!==`west`&&_.scale(C)}else{let{up:C,east:R,north:D}=ys;R.set(-x.y,x.x,0).normalize(),r.geodeticSurfaceNormal(x,C),D.copy(C).cross(R);let{down:k,west:W,south:j}=ys;k.copy(C).scale(-1),W.copy(R).scale(-1),j.copy(D).scale(-1),m=ys[e],b=ys[t],_=ys[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]=_.x,a[9]=_.y,a[10]=_.z,a[11]=0,a[12]=x.x,a[13]=x.y,a[14]=x.z,a[15]=1,a}var io=new Z;var qC=new Z;var HC=new Z;function s2(r,e,t=[]){let{oneOverRadii:i,oneOverRadiiSquared:s,centerToleranceSquared:a}=e;io.from(r);let d=io.x,m=io.y,b=io.z,_=i.x,x=i.y,w=i.z,C=d*d*_*_,R=m*m*x*x,D=b*b*w*w,k=C+R+D,W=Math.sqrt(1/k);if(!Number.isFinite(W))return;let j=qC;if(j.copy(r).scale(W),k<a)return j.to(t);let V=s.x,J=s.y,$=s.z,te=HC;te.set(j.x*V*2,j.y*J*2,j.z*$*2);let ne=(1-W)*io.len()/(.5*te.len()),le=0,Y,z,O,ue;do{ne-=le,Y=1/(1+ne*V),z=1/(1+ne*J),O=1/(1+ne*$);let we=Y*Y,Ee=z*z,xe=O*O,Ne=we*Y,Fe=Ee*z,Oe=xe*O;ue=C*we+R*Ee+D*xe-1;let qe=-2*(C*Ne*V+R*Fe*J+D*Oe*$);le=ue/qe}while(Math.abs(ue)>Ho$1.EPSILON12);return io.scale([Y,z,O]).to(t)}var pa=new Z;var A2=new Z;var KC=new Z;var Dr=new Z;var XC=new Z;var ma=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=A2,s=KC,[,,a]=e;this.geodeticSurfaceNormalCartographic(e,i),s.copy(this.radiiSquared).scale(i);let d=Math.sqrt(i.dot(s));return s.scale(1/d),i.scale(a),s.add(i),s.to(t)}cartesianToCartographic(e,t=[0,0,0]){ma.from(e);let i=this.scaleToGeodeticSurface(ma,Dr);if(!i)return;let s=this.geodeticSurfaceNormal(i,A2),a=XC;a.copy(ma).subtract(i);return n2([Math.atan2(s.y,s.x),Math.asin(s.z),Math.sign(Zn$1.dot(a,ma))*Zn$1.length(a)],t)}eastNorthUpToFixedFrame(e,t=new U){return Wl(this,`east`,`north`,`up`,e,t)}localFrameToFixedFrame(e,t,i,s,a=new U){return Wl(this,e,t,i,s,a)}geocentricSurfaceNormal(e,t=[0,0,0]){return pa.from(e).normalize().to(t)}geodeticSurfaceNormalCartographic(e,t=[0,0,0]){let i=r2(e),s=i[0],a=i[1],d=Math.cos(a);return pa.set(d*Math.cos(s),d*Math.sin(s),Math.sin(a)).normalize(),pa.to(t)}geodeticSurfaceNormal(e,t=[0,0,0]){return pa.from(e).scale(this.oneOverRadiiSquared).normalize().to(t)}scaleToGeodeticSurface(e,t){return s2(e,this,t)}scaleToGeocentricSurface(e,t=[0,0,0]){Dr.from(e);let i=Dr.x,s=Dr.y,a=Dr.z,d=this.oneOverRadiiSquared,m=1/Math.sqrt(i*i*d.x+s*s*d.y+a*a*d.z);return Dr.multiplyScalar(m).to(t)}transformPositionToScaledSpace(e,t=[0,0,0]){return Dr.from(e).scale(this.oneOverRadii).to(t)}transformPositionFromScaledSpace(e,t=[0,0,0]){return Dr.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),Dr.from(e);let s=Dr.z*(1-this.squaredXOverSquaredZ);if(!(Math.abs(s)>=this.radii.z-t))return Dr.set(0,0,s).to(i)}};Ue.WGS84=new Ue(6378137,6378137,An);var ga=class{item;previous;next;constructor(e,t,i){this.item=e,this.previous=t,this.next=i}};var ba=class{head=null;tail=null;_length=0;get length(){return this._length}add(e){let t=new ga(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 ba,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 s=t._cacheNode;s&&(this._list.remove(s),t._cacheNode=null,i&&i(e,t))}unloadTiles(e,t){let i=this._trimTiles;this._trimTiles=!1;let s=this._list,a=e.maximumMemoryUsage*1024*1024,d=this._sentinel,m=s.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 a2(r,e){ut(r),ut(e);let{rtcCenter:t,gltfUpAxis:i}=e,{computedTransform:s,boundingVolume:{center:a}}=r,d=new U(s);switch(t&&d.translate(t),i){case`Z`:break;case`Y`:let C=new U().rotateX(Math.PI/2);d=d.multiplyRight(C);break;case`X`:let R=new U().rotateY(-Math.PI/2);d=d.multiplyRight(R)}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=JC(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 YC=1e6**2;function JC(r){let e=r.gltf;if(!e)return null;let t=typeof e.scene==`number`?e.scene:0,s=e.scenes?.[t]?.nodes?.[0];if(!s?.matrix)return null;let a=s.matrix;return a[12]*a[12]+a[13]*a[13]+a[14]*a[14]<=YC?null:s}var c2=new Z;var Kl=new Z;var Xl=new Xt([new Ut,new Ut,new Ut,new Ut,new Ut,new Ut]);function u2(r,e){let{cameraDirection:t,cameraUp:i,height:s}=r,{metersPerUnit:a}=r.distanceScales,d=_a(r,r.center),m=Ue.WGS84.eastNorthUpToFixedFrame(d),b=r.unprojectPosition(r.cameraPosition),_=Ue.WGS84.cartographicToCartesian(b,new Z),x=new Z(m.transformAsVector(new Z(t).scale(a))).normalize(),w=new Z(m.transformAsVector(new Z(i).scale(a))).normalize();ZC(r);let C=r.constructor,{longitude:R,latitude:D,width:k,bearing:W,zoom:j}=r,V=new C({longitude:R,latitude:D,height:s,width:k,bearing:W,zoom:j,pitch:0});return{camera:{position:_,direction:x,up:w},viewport:r,topDownViewport:V,height:s,cullingVolume:Xl,frameNumber:e,sseDenominator:1.15}}function f2(r,e,t){if(t===0||r.length<=t)return[r,[]];let i=[],{longitude:s,latitude:a}=e.viewport;for(let[_,x]of r.entries()){let[w,C]=x.header.mbs,R=Math.abs(s-w),D=Math.abs(a-C),k=Math.sqrt(D*D+R*R);i.push([_,k])}let d=i.sort((_,x)=>_[1]-x[1]),m=[];for(let _=0;_<t;_++)m.push(r[d[_][0]]);let b=[];for(let _=t;_<d.length;_++)b.push(r[d[_][0]]);return[m,b]}function ZC(r){let e=r.getFrustumPlanes(),t=l2(e.near,r.cameraPosition),i=_a(r,t),s=_a(r,r.cameraPosition,Kl),a=0;Xl.planes[a++].fromPointNormal(i,c2.copy(i).subtract(s));for(let d in e){if(d===`near`)continue;let m=e[d],_=_a(r,l2(m,t,Kl),Kl);Xl.planes[a++].fromPointNormal(_,c2.copy(i).subtract(_))}}function l2(r,e,t=new Z){let i=r.normal.dot(e);return t.copy(r.normal).scale(r.distance-i).add(e),t}function _a(r,e,t=new Z){let i=r.unprojectPosition(e);return Ue.WGS84.cartographicToCartesian(i,t)}var $C=6378137;var eI=6378137;var Yl=6356752.314245179;var oo=new Z;function h2(r,e){if(r instanceof rn){let{halfAxes:t}=r,i=tI(t);return Math.log2(Yl/(i+e[2]))}else if(r instanceof Qr){let{radius:t}=r;return Math.log2(Yl/(t+e[2]))}else if(r.width&&r.height){let{width:t,height:i}=r;return(Math.log2($C/t)+Math.log2(eI/i))/2}return 1}function Jl(r,e,t){Ue.WGS84.cartographicToCartesian([r.xmax,r.ymax,r.zmax],oo);let i=Math.sqrt(Math.pow(oo[0]-t[0],2)+Math.pow(oo[1]-t[1],2)+Math.pow(oo[2]-t[2],2));return Math.log2(Yl/(i+e[2]))}function d2(r,e,t){let[i,s,a,d]=r;return Jl({xmin:i,xmax:a,ymin:s,ymax:d,zmin:0,zmax:0},e,t)}function tI(r){r.getColumn(0,oo);let e=r.getColumn(1),t=r.getColumn(2);return oo.add(e).add(t).len()}var Yt={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,EXPIRED:4,FAILED:5};var Gt;(function(r){r[r.ADD=1]=`ADD`,r[r.REPLACE=2]=`REPLACE`})(Gt||(Gt={}));var Sr;(function(r){r.EMPTY=`empty`,r.SCENEGRAPH=`scenegraph`,r.POINTCLOUD=`pointcloud`,r.MESH=`mesh`})(Sr||(Sr={}));var kt;(function(r){r.I3S=`I3S`,r.TILES3D=`TILES3D`})(kt||(kt={}));var an;(function(r){r.GEOMETRIC_ERROR=`geometricError`,r.MAX_SCREEN_THRESHOLD=`maxScreenThreshold`})(an||(an={}));var p2={NOT_COMPUTED:-1,USE_OPTIMIZATION:1,SKIP_OPTIMIZATION:0};function T2(r){return r!=null}var jt=new Z;var ya=new Z;var rI=new Z;var nI=new Z;var ei=new Z;var m2=new Z;var g2=new Z;var b2=new Z;function xa(r,e,t){if(ut(r,`3D Tile: boundingVolume must be defined`),r.box)return y2(r.box,e,t);if(r.region)return oI(r.region);if(r.sphere)return iI(r.sphere,e,t);throw new Error(`3D Tile: boundingVolume must contain a sphere, region, or box`)}function _2(r,e){if(r.box)return sI(e);if(r.region){let[t,i,s,a,d,m]=r.region;return[[Bi$1(t),Bi$1(i),d],[Bi$1(s),Bi$1(a),m]]}if(r.sphere)return AI(e);throw new Error(`Unkown boundingVolume type`)}function y2(r,e,t){let i=new Z(r[0],r[1],r[2]);e.transform(i,i);let s=[];if(r.length===10){let _=r.slice(3,6),x=new gr;x.fromArray(r,6);let w=new Z([1,0,0]),C=new Z([0,1,0]),R=new Z([0,0,1]);w.transformByQuaternion(x),w.scale(_[0]),C.transformByQuaternion(x),C.scale(_[1]),R.transformByQuaternion(x),R.scale(_[2]),s=[...w.toArray(),...C.toArray(),...R.toArray()]}else s=[...r.slice(3,6),...r.slice(6,9),...r.slice(9,12)];let a=e.transformAsVector(s.slice(0,3)),d=e.transformAsVector(s.slice(3,6)),m=e.transformAsVector(s.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 T2(t)?(t.center=i,t.halfAxes=b,t):new rn(i,b)}function iI(r,e,t){let i=new Z(r[0],r[1],r[2]);e.transform(i,i);let s=e.getScale(ya),a=Math.max(Math.max(s[0],s[1]),s[2]),d=r[3]*a;return T2(t)?(t.center=i,t.radius=d,t):new Qr(i,d)}function oI(r){let[e,t,i,s,a,d]=r,m=Ue.WGS84.cartographicToCartesian([Bi$1(e),Bi$1(s),a],rI),b=Ue.WGS84.cartographicToCartesian([Bi$1(i),Bi$1(t),d],nI),_=new Z().addVectors(m,b).multiplyByScalar(.5);return Ue.WGS84.cartesianToCartographic(_,ei),Ue.WGS84.cartographicToCartesian([Bi$1(i),ei[1],ei[2]],m2),Ue.WGS84.cartographicToCartesian([ei[0],Bi$1(s),ei[2]],g2),Ue.WGS84.cartographicToCartesian([ei[0],ei[1],d],b2),y2([..._,...m2.subtract(_),...g2.subtract(_),...b2.subtract(_)],new U)}function sI(r){let e=x2(),{halfAxes:t}=r,i=new Z(t.getColumn(0)),s=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++)jt.copy(r.center),jt.add(i),jt.add(s),jt.add(a),w2(e,jt),a.negate();s.negate()}i.negate()}return e}function AI(r){let e=x2(),{center:t,radius:i}=r,s=Ue.WGS84.scaleToGeodeticSurface(t,jt),a;s?a=Ue.WGS84.geodeticSurfaceNormal(s):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]){ya.copy(b).scale(i);for(let _=0;_<2;_++)jt.copy(t),jt.add(ya),w2(e,jt),ya.negate()}return e}function x2(){return[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]]}function w2(r,e){Ue.WGS84.cartesianToCartographic(e,jt),r[0][0]=Math.min(r[0][0],jt[0]),r[0][1]=Math.min(r[0][1],jt[1]),r[0][2]=Math.min(r[0][2],jt[2]),r[1][0]=Math.max(r[1][0],jt[0]),r[1][1]=Math.max(r[1][1],jt[1]),r[1][2]=Math.max(r[1][2],jt[2])}new Z;new Z;new U;new Z;new Z;new Z;function aI(r,e){let t=r*e;return 1-Math.exp(-(t*t))}function cI(r,e){if(r.dynamicScreenSpaceError&&r.dynamicScreenSpaceErrorComputedDensity){let t=r.dynamicScreenSpaceErrorComputedDensity,i=r.dynamicScreenSpaceErrorFactor;return aI(e,t)*i}return 0}function E2(r,e,t){let i=r.tileset,s=r.parent&&r.parent.lodMetricValue||r.lodMetricValue,a=t?s:r.lodMetricValue;if(a===0)return 0;let d=Math.max(r._distanceToCamera,1e-7),{height:m,sseDenominator:b}=e,{viewDistanceScale:_}=i.options,x=a*m*(_||1)/(d*b);return x-=cI(i,d),x}var Zl=new Z;var v2=new Z;var Mn=new Z;var S2=new Z;var lI=new Z;var $l=new U;var C2=new U;function I2(r,e){if(r.lodMetricValue===0||isNaN(r.lodMetricValue))return`DIG`;let t=2*eu(r,e);return t<2?`OUT`:!r.header.children||t<=r.lodMetricValue?`DRAW`:r.header.children?`DIG`:`OUT`}function eu(r,e){let{topDownViewport:t}=e,i=r.header.mbs[1],s=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,Zl),v2.copy(Zl).subtract(m).normalize(),Ue.WGS84.eastNorthUpToFixedFrame(m,$l),C2.copy($l).invert(),Mn.copy(Zl).transform(C2);let _=Math.sqrt(Mn[0]*Mn[0]+Mn[1]*Mn[1]),x=_*_/Mn[2];S2.copy([Mn[0],Mn[1],x]);let C=S2.transform($l).subtract(m).normalize(),D=v2.cross(C).normalize().scale(d).add(m),k=Ue.WGS84.cartesianToCartographic(D),W=t.project([s,i,a]),j=t.project(k);return lI.copy(W).subtract(j).magnitude()}function M2(r){return{assetGltfUpAxis:r.asset&&r.asset.gltfUpAxis||`Y`}}var xs=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 ut(e<this._array.length),this._array[e]}set(e,t){ut(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){ut(e>=0),e>this._array.length&&(this._array.length=e)}resize(e){ut(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 uI={loadSiblings:!1,skipLevelOfDetail:!1,updateTransforms:!0,onTraversalEnd:()=>{},viewportTraversersMap:{},basePath:``};var Kr=class{options;root=null;selectedTiles={};requestedTiles={};emptyTiles={};lastUpdate=new Date().getTime();updateDebounceTime=1e3;_traversalStack=new xs;_emptyTraversalStack=new xs;_frameNumber=null;traversalFinished(e){return!0}constructor(e){this.options=r(r({},uI),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),_=!d;a.hasRenderContent?a.refine===Gt.ADD?(this.loadTile(a,t),this.selectTile(a,t)):a.refine===Gt.REPLACE&&(this.loadTile(a,t),_&&this.selectTile(a,t)):(this.emptyTiles[a.id]=a,this.loadTile(a,t),_&&this.selectTile(a,t)),this.touchTile(a,t),a._shouldRefine=d&&b}let s=new Date().getTime();(this.traversalFinished(t)||s-this.lastUpdate>this.updateDebounceTime)&&(this.lastUpdate=s,this.options.onTraversalEnd(t))}updateChildTiles(e,t){let i=e.children;for(let s of i)this.updateTile(s,t)}updateAndPushChildren(e,t,i,s){let{loadSiblings:a,skipLevelOfDetail:d}=this.options,m=e.children;m.sort(this.compareDistanceToCamera.bind(this));let b=e.refine===Gt.REPLACE&&e.hasRenderContent&&!d,_=!1,x=!0;for(let w of m)if(w._selectionDepth=s,w.isVisibleAndInRequestVolume?(i.find(w)&&i.delete(w),i.push(w),_=!0):(b||a)&&(this.loadTile(w,t),this.touchTile(w,t)),b){let C;if(w._inRequestVolume?w.hasRenderContent?C=w.contentAvailable:C=this.executeEmptyTraversal(w,t):C=!1,x=x&&C,!x)return!1}return _||(x=!1),x}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 s=e._screenSpaceError;return i&&(s=e.getScreenSpaceError(t,!0)),s>e.tileset.memoryAdjustedScreenSpaceError}updateTileVisibility(e,t){let i=[];if(this.options.viewportTraversersMap)for(let s in this.options.viewportTraversersMap)this.options.viewportTraversersMap[s]===t.viewport.id&&i.push(s);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 s of e.children)s.updateVisibility(t),i=i||s.isVisibleAndInRequestVolume;return i}executeEmptyTraversal(e,t){let i=!0,s=this._emptyTraversalStack;for(s.push(e);s.length>0;){let a=s.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 _ of b)s.push(_)}}return e.hasEmptyContent||i}};var L2=new Z;function fI(r){return r!=null}var ti=class{tileset;header;id;url;parent;refine;type;contentUrl;lodMetricType=`geometricError`;lodMetricValue=0;boundingVolume=null;content=null;contentState=Yt.UNLOADED;gpuMemoryUsageInBytes=0;children=[];depth=0;viewportIds=[];transform=new U;extensions=null;implicitTiling=null;userData={};computedTransform;hasEmptyContent=!1;hasTilesetContent=!1;traverser=new Kr({});_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,s=``){this.header=t,this.tileset=e,this.id=s||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===Yt.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===Yt.UNLOADED}get contentExpired(){return this.contentState===Yt.EXPIRED}get contentFailed(){return this.contentState===Yt.FAILED}get distanceToCamera(){return this._distanceToCamera}get screenSpaceError(){return this._screenSpaceError}get boundingBox(){return this._boundingBox||(this._boundingBox=_2(this.header.boundingVolume,this.boundingVolume)),this._boundingBox}getScreenSpaceError(e,t){switch(this.tileset.type){case kt.I3S:return eu(this,e);case kt.TILES3D:return E2(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===Gt.ADD||t;if(i&&!this.isVisible&&this._visible!==void 0||this.tileset._frameNumber-this._touchedFrame>=1||this.contentState===Yt.UNLOADED)return-1;let s=this.parent,d=s&&(!i||this._screenSpaceError===0||s.hasTilesetContent)?s._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=Yt.LOADING;let t=await this.tileset._requestScheduler.scheduleRequest(this.id,this._getPriority.bind(this));if(!t)return this.contentState=Yt.UNLOADED,!1;try{let i=this.tileset.getTileUrl(this.contentUrl),s$18=this.tileset.loader,a=this.tileset.loadOptions[s$18.id]||{},d=s(r({},this.tileset.loadOptions),{[s$18.id]:r(s(r({},a),{isTileset:this.type===`json`}),this._getLoaderSpecificOptions(s$18.id))});return this.content=await xe(i,s$18,d),this.tileset.options.contentLoader&&await this.tileset.options.contentLoader(this),this._isTileset()&&this.tileset._initializeTileHeaders(this.content,this),this.contentState=Yt.READY,this._onContentLoaded(),!0}catch(i){throw this.contentState=Yt.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=Yt.UNLOADED,this.tileDrawn=!0,!0}updateVisibility(e,t){if(this._frameNumber===e.frameNumber)return;let i=this.parent,s=i?i._visibilityPlaneMask:Xt.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,s),this._visible=this._visibilityPlaneMask!==Xt.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(e),this._frameNumber=e.frameNumber,this.viewportIds=t}visibility(e,t){let{cullingVolume:i}=e,{boundingVolume:s}=this;return i.computeVisibilityWithPlaneMask(s,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 L2.subVectors(t.center,e.position),e.direction.dot(L2)}insideViewerRequestVolume(e){let t=this._viewerRequestVolume;return!t||t.distanceSquaredTo(e.camera.position)<=0}updateExpiration(){if(fI(this._expireDate)&&this.contentReady&&!this.hasEmptyContent){let e=Date.now();Date.lessThan(this._expireDate,e)&&(this.contentState=Yt.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,s=t&&t.computedTransform?t.computedTransform.clone():i.modelMatrix.clone();this.computedTransform=new U(s).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=Yt.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=Xt.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||Gt.REPLACE}_isTileset(){return this.contentUrl.indexOf(`.json`)!==-1}_onContentLoaded(){switch(this.content&&this.content.type){case`vctr`:case`geom`:this.tileset._traverser.disableSkipLevelOfDetail=!0}this._isTileset()?this.hasTilesetContent=!0:this.gpuMemoryUsageInBytes=this._getGpuMemoryUsageInBytes()}_updateBoundingVolume(e){this.boundingVolume=xa(e.boundingVolume,this.computedTransform,this.boundingVolume);let t=e.content;t&&(t.boundingVolume&&(this._contentBoundingVolume=xa(t.boundingVolume,this.computedTransform,this._contentBoundingVolume)),e.viewerRequestVolume&&(this._viewerRequestVolume=xa(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}):M2(this.tileset.tileset)}};var wa=class extends Kr{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 s=e.refine===Gt.REPLACE,a=e._optimChildrenWithinParent===p2.USE_OPTIMIZATION;if(s&&a&&i&&!this.anyChildrenVisible(e,t)){e._visible=!1;return}}meetsScreenSpaceErrorEarly(e,t){let{parent:i}=e;return!i||i.hasTilesetContent||i.refine!==Gt.ADD?!1:!this.shouldRefine(e,t,!0)}};var Ea=class{frameNumberMap=new Map;register(e,t){let i=this.frameNumberMap.get(e)||new Map,s=i.get(t)||0;i.set(t,s+1),this.frameNumberMap.set(e,i)}deregister(e,t){let i=this.frameNumberMap.get(e);if(!i)return;let s=i.get(t)||1;i.set(t,s-1)}isZero(e,t){return(this.frameNumberMap.get(e)?.get(t)||0)===0}};var tu={REQUESTED:`REQUESTED`,COMPLETED:`COMPLETED`,ERROR:`ERROR`};var va=class{_statusMap;pendingTilesRegister=new Ea;constructor(){this._statusMap={}}add(e,t,i,s){if(!this._statusMap[t]){let{frameNumber:a,viewport:{id:d}}=s;this._statusMap[t]={request:e,callback:i,key:t,frameState:s,status:tu.REQUESTED},this.pendingTilesRegister.register(d,a),e().then(m=>{this._statusMap[t].status=tu.COMPLETED;let{frameNumber:b,viewport:{id:_}}=this._statusMap[t].frameState;this.pendingTilesRegister.deregister(_,b),this._statusMap[t].callback(m,s)}).catch(m=>{this._statusMap[t].status=tu.ERROR;let{frameNumber:b,viewport:{id:_}}=this._statusMap[t].frameState;this.pendingTilesRegister.deregister(_,b),i(m)})}}update(e,t){if(this._statusMap[e]){let{frameNumber:i,viewport:{id:s}}=this._statusMap[e].frameState;this.pendingTilesRegister.deregister(s,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 Sa=class extends Kr{_tileManager;constructor(e){super(e),this._tileManager=new va}traversalFinished(e){return!this._tileManager.hasPendingTiles(e.viewport.id,this._frameNumber||0)}shouldRefine(e,t){return e._lodJudge=I2(e,t),e._lodJudge===`DIG`}updateChildTiles(e,t){let i=e.header.children||[],s=e.children,a=e.tileset;for(let d of i){let m=`${d.id}-${t.viewport.id}`,b=s&&s.find(_=>_.id===m);if(b)b&&this.updateTile(b,t);else{let _=()=>this._loadTile(d.id,a);this._tileManager.find(m)?this._tileManager.update(m,t):(a.tileset.nodePages&&(_=()=>a.tileset.nodePagesTile.formTileFromNodePages(d.id)),this._tileManager.add(_,m,w=>this._onTileLoad(w,e,m),t))}}return!1}async _loadTile(e,t){let{loader:i}=t,s$19=t.getTileUrl(`${t.url}/nodes/${e}`),a=s(r({},t.loadOptions),{i3s:s(r({},t.loadOptions.i3s),{isTileHeader:!0})});return await xe(s$19,i,a)}_onTileLoad(e,t,i){let s=new ti(t.tileset,e,t,i);t.children.push(s);let a=this._tileManager.find(s.id).frameState;this.updateTile(s,a),this._frameNumber===a.frameNumber&&(this.traversalFinished(a)||new Date().getTime()-this.lastUpdate>this.updateDebounceTime)&&this.executeTraversal(s,a)}};var hI={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 ru=`Tiles In Memory`;var R2=`Tiles In View`;var P2=`Tiles To Render`;var N2=`Tiles Loaded`;var nu=`Tiles Loading`;var F2=`Tiles Unloaded`;var k2=`Failed Tile Loads`;var O2=`Points/Vertices`;var iu=`Tile Memory Use`;var B2=`Maximum Screen Space Error`;var ws=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({},hI),t),this.tileset=e,this.loader=e.loader,this.type=e.type,this.url=e.url,this.basePath=e.basePath||Mt$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 gi$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 N({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 s of t){let a=s.id;this._needTraverse(a)?i.push(a):this.traverseCounter--}for(let s of t){let a=s.id;if(this.roots[a]||(this.roots[a]=this._initializeTileHeaders(this.tileset,null)),!i.includes(a))continue;let d=u2(s,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]=f2(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),s=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),s++):this._heldTiles.delete(a)}}else this._heldTiles=t;s>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)),s=new Set(t.map(d=>d.id)),a=e.filter(d=>!s.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(R2).count=this.selectedTiles.length,this.stats.get(P2).count=e,this.stats.get(O2).count=t,this.stats.get(B2).count=this.memoryAdjustedScreenSpaceError}async _initializeTileSet(e){this.type===kt.I3S&&(this.calculateViewPropsI3S(),e.root=await e.root),this.root=this._initializeTileHeaders(e,null),this.type===kt.TILES3D&&(this._initializeTiles3DTileset(e),this.calculateViewPropsTiles3D()),this.type===kt.I3S&&this._initializeI3STileset()}calculateViewPropsI3S(){let e=this.tileset.fullExtent;if(e){let{xmin:i,xmax:s,ymin:a,ymax:d,zmin:m,zmax:b}=e;this.cartographicCenter=new Z(i+(s-i)/2,a+(d-a)/2,m+(b-m)/2),this.cartesianCenter=new Z,Ue.WGS84.cartographicToCartesian(this.cartographicCenter,this.cartesianCenter),this.zoom=Jl(e,this.cartographicCenter,this.cartesianCenter);return}let t=this.tileset.store?.extent;if(t){let[i,s,a,d]=t;this.cartographicCenter=new Z(i+(a-i)/2,s+(d-s)/2,0),this.cartesianCenter=new Z,Ue.WGS84.cartographicToCartesian(this.cartographicCenter,this.cartesianCenter),this.zoom=d2(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=h2(e.boundingVolume,this.cartographicCenter)}_initializeStats(){this.stats.get(Ca),this.stats.get(nu),this.stats.get(ru),this.stats.get(R2),this.stats.get(P2),this.stats.get(N2),this.stats.get(F2),this.stats.get(k2),this.stats.get(O2),this.stats.get(iu,`memory`),this.stats.get(B2)}_initializeTileHeaders(e,t){let i=new ti(this,e.root,t);if(t&&(t.children.push(i),i.depth=t.depth+1),this.type===kt.TILES3D){let s=[];for(s.push(i);s.length>0;){let a=s.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 x=new URL(b.contentUrl).searchParams.get(`session`);x&&(this._queryParams.session=x)}a.children.push(b),b.depth=a.depth+1,s.push(b)}}}return i}_initializeTraverser(){let e;switch(this.type){case kt.TILES3D:e=wa;break;case kt.I3S:e=Sa;break;default:e=Kr}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(k2).incrementCount();let i=t.message||t.toString(),s=e.url;console.error(`A 3D tile failed to load: ${e.url} ${i}`),this.options.onTileError(e,i,s)}_onTileLoad(e,t){if(t){if(this.type===kt.I3S){let i=this.tileset?.nodePagesTile?.nodesInNodePages||0;this.stats.get(Ca).reset(),this.stats.get(Ca).addCount(i)}e&&e.content&&a2(e,e.content),this.updateContentTypes(e),this._addTileToCache(e),this.options.onTileLoad(e)}}updateContentTypes(e){if(this.type===kt.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}else if(this.type===kt.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(nu).incrementCount()}_onEndTileLoading(){this._pendingCount--,this.stats.get(nu).decrementCount()}_addTileToCache(e){this._cache.add(this,e,t=>t._updateCacheStats(e))}_updateCacheStats(e){this.stats.get(N2).incrementCount(),this.stats.get(ru).incrementCount(),this.gpuMemoryUsageInBytes+=e.gpuMemoryUsageInBytes||0,this.stats.get(iu).count=this.gpuMemoryUsageInBytes,this.options.memoryAdjustedScreenSpaceError&&this.adjustScreenSpaceError()}_unloadTile(e){this.gpuMemoryUsageInBytes-=e.gpuMemoryUsageInBytes||0,this.stats.get(ru).decrementCount(),this.stats.get(F2).incrementCount(),this.stats.get(iu).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 s of e.children)i.push(s);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 Ia=`4.5.4`;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 ou(r,e,t){ut(r instanceof ArrayBuffer);let i=new TextDecoder(`utf8`),s=new Uint8Array(r,e,t);return i.decode(s)}function D2(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 dI={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6};var yt={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DOUBLE:5130};var ke=r(r({},dI),yt);var su={[yt.DOUBLE]:Float64Array,[yt.FLOAT]:Float32Array,[yt.UNSIGNED_SHORT]:Uint16Array,[yt.UNSIGNED_INT]:Uint32Array,[yt.UNSIGNED_BYTE]:Uint8Array,[yt.BYTE]:Int8Array,[yt.SHORT]:Int16Array,[yt.INT]:Int32Array};var pI={DOUBLE:yt.DOUBLE,FLOAT:yt.FLOAT,UNSIGNED_SHORT:yt.UNSIGNED_SHORT,UNSIGNED_INT:yt.UNSIGNED_INT,UNSIGNED_BYTE:yt.UNSIGNED_BYTE,BYTE:yt.BYTE,SHORT:yt.SHORT,INT:yt.INT};var Au=`Failed to convert GL type`;var or=class r{static fromTypedArray(e){e=ArrayBuffer.isView(e)?e.constructor:e;for(let t in su)if(su[t]===e)return t;throw new Error(Au)}static fromName(e){let t=pI[e];if(!t)throw new Error(Au);return t}static getArrayType(e){switch(e){case yt.UNSIGNED_SHORT_5_6_5:case yt.UNSIGNED_SHORT_4_4_4_4:case yt.UNSIGNED_SHORT_5_5_5_1:return Uint16Array;default:let t=su[e];if(!t)throw new Error(Au);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,s){s===void 0&&(s=(t.byteLength-i)/r.getByteSize(e));let a=ArrayBuffer.isView(t)?t.buffer:t;return new(r.getArrayType(e))(a,i,s)}};function U2(r,e){if(!r)throw new Error(`math.gl assertion failed. ${e}`)}function au(r,e=[0,0,0]){let t=r>>11&31,i=r>>5&63,s=r&31;return e[0]=t<<3,e[1]=i<<2,e[2]=s<<3,e}new cr;new Z;new cr;new cr;function G2(r,e=255){return za$1(r,0,e)/e*2-1}function j2(r){return r<0?-1:1}function V2(r,e,t,i){if(U2(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=G2(r,t),i.y=G2(e,t),i.z=1-(Math.abs(i.x)+Math.abs(i.y)),i.z<0){let s=i.x;i.x=(1-Math.abs(i.y))*j2(s),i.y=(1-Math.abs(s))*j2(i.y)}return i.normalize()}function cu(r,e,t){return V2(r,e,255,t)}var cn=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 s=this.json[e];return s&&Number.isFinite(s.byteOffset)?this._getTypedArrayFromBinary(e,t,i,1,s.byteOffset):s}getPropertyArray(e,t,i){let s=this.json[e];return s&&Number.isFinite(s.byteOffset)?(`componentType`in s&&(t=or.fromName(s.componentType)),this._getTypedArrayFromBinary(e,t,i,this.featuresLength,s.byteOffset)):this._getTypedArrayFromArray(e,t,s)}getProperty(e,t,i,s,a){let d=this.json[e];if(!d)return d;let m=this.getPropertyArray(e,t,i);if(i===1)return m[s];for(let b=0;b<i;++b)a[b]=m[i*s+b];return a}_getTypedArrayFromBinary(e,t,i,s,a){let d=this._cachedTypedArrays,m=d[e];return m||(m=or.createTypedArray(t,this.buffer.buffer,this.buffer.byteOffset+a,s*i),d[e]=m),m}_getTypedArrayFromArray(e,t,i){let s=this._cachedTypedArrays,a=s[e];if(!a){if(ArrayBuffer.isView(i)){let d=i.byteOffset,b=i.byteLength/or.getByteSize(t);a=or.createTypedArray(t,i.buffer,d,b)}else if(i instanceof ArrayBuffer)a=or.createTypedArray(t,i);else a=new(or.getArrayType(t))(i);s[e]=a}return a}};var mI={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16};var gI={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 bI={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 z2(r,e,t,i){let{componentType:s}=r;ut(r.componentType);let a=typeof s==`string`?or.fromName(s):s,d=mI[r.type],m=gI[r.type],b=bI[r.type];return t+=r.byteOffset,{values:or.createTypedArray(a,e,t,d*i),type:a,size:d,unpacker:m,packer:b}}var Xr=r=>r!==void 0;function q2(r,e,t){if(!e)return null;let i=r.getExtension(`3DTILES_batch_table_hierarchy`),s=e.HIERARCHY;return s&&(console.warn(`3D Tile Parser: HIERARCHY is deprecated. Use 3DTILES_batch_table_hierarchy.`),e.extensions=e.extensions||{},e.extensions[`3DTILES_batch_table_hierarchy`]=s,i=s),i?TI(i,t):null}function TI(r,e){let t,i,s,a=r.instancesLength,d=r.classes,m=r.classIds,b=r.parentCounts,_=r.parentIds,x=a;Xr(m.byteOffset)&&(m.componentType=defaultValue(m.componentType,GL.UNSIGNED_SHORT),m.type=AttributeType.SCALAR,s=getBinaryAccessor(m),m=s.createArrayBufferView(e.buffer,e.byteOffset+m.byteOffset,a));let w;if(Xr(b))for(Xr(b.byteOffset)&&(b.componentType=defaultValue(b.componentType,GL.UNSIGNED_SHORT),b.type=AttributeType.SCALAR,s=getBinaryAccessor(b),b=s.createArrayBufferView(e.buffer,e.byteOffset+b.byteOffset,a)),w=new Uint16Array(a),x=0,t=0;t<a;++t)w[t]=x,x+=b[t];Xr(_)&&Xr(_.byteOffset)&&(_.componentType=defaultValue(_.componentType,GL.UNSIGNED_SHORT),_.type=AttributeType.SCALAR,s=getBinaryAccessor(_),_=s.createArrayBufferView(e.buffer,e.byteOffset+_.byteOffset,x));let C=d.length;for(t=0;t<C;++t){let W=d[t].length,j=d[t].instances,V=getBinaryProperties(W,j,e);d[t].instances=combine(V,j)}let R=new Array(C).fill(0),D=new Uint16Array(a);for(t=0;t<a;++t)i=m[t],D[t]=R[i],++R[i];let k={classes:d,classIds:m,classIndexes:D,parentCounts:b,parentIndexes:w,parentIds:_};return xI(k),k}function so(r,e,t){if(!r)return;let i=r.parentCounts;return r.parentIds?t(r,e):i>0?_I(r,e,t):yI(r,e,t)}function _I(r,e,t){let i=r.classIds,s=r.parentCounts,a=r.parentIds,d=r.parentIndexes,m=i.length,b=scratchVisited;b.length=Math.max(b.length,m);let _=++marker,x=scratchStack;for(x.length=0,x.push(e);x.length>0;){if(e=x.pop(),b[e]===_)continue;b[e]=_;let w=t(r,e);if(Xr(w))return w;let C=s[e],R=d[e];for(let D=0;D<C;++D){let k=a[R+D];k!==e&&x.push(k)}}return null}function yI(r,e,t){let i=!0;for(;i;){let s=t(r,e);if(Xr(s))return s;let a=r.parentIds[e];i=a!==e,e=a}throw new Error(`traverseHierarchySingleParent`)}function xI(r){let i=r.classIds.length;for(let s=0;s<i;++s)H2(r,s,stack)}function H2(r,e,t){let i=r.parentCounts,s=r.parentIds,a=r.parentIndexes,m=r.classIds.length;if(!Xr(s))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=Xr(i)?i[e]:1,_=Xr(i)?a[e]:e;for(let x=0;x<b;++x){let w=s[_+x];w!==e&&H2(r,w,t)}t.pop(e)}function sr(r){return r!=null}var Ma=(r,e)=>r;var wI={HIERARCHY:!0,extensions:!0,extras:!0};var ni=class{json;binary;featureCount;_extensions;_properties;_binaryProperties;_hierarchy;constructor(e,t,i,s={}){ut(i>=0),this.json=e||{},this.binary=t,this.featureCount=i,this._extensions=this.json?.extensions||{},this._properties={};for(let a in this.json)wI[a]||(this._properties[a]=this.json[a]);this._binaryProperties=this._initializeBinaryProperties(),s[`3DTILES_batch_table_hierarchy`]&&(this._hierarchy=q2(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),ut(typeof t==`string`,t),this._hierarchy)return sr(so(this._hierarchy,e,(s,a)=>{let d=s.classIds[a];return s.classes[d].name===t}));return!1}isExactClass(e,t){return ut(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),ut(typeof t==`string`,t),sr(this._properties[t])||this._hasPropertyInHierarchy(e,t)}getPropertyNames(e,t){this._checkBatchId(e),t=sr(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),ut(typeof t==`string`,t),this._binaryProperties){let s=this._binaryProperties[t];if(sr(s))return this._getBinaryProperty(s,e)}let i=this._properties[t];if(sr(i))return Ma(i[e],!0);if(this._hierarchy){let s=this._getHierarchyProperty(e,t);if(sr(s))return s}}setProperty(e,t,i){let s=this.featureCount;if(this._checkBatchId(e),ut(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];sr(a)||(this._properties[t]=new Array(s),a=this._properties[t]),a[e]=Ma(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],s=this._initializeBinaryProperty(t,i);s&&(e=e||{},e[t]=s)}return e}_initializeBinaryProperty(e,t){if(`byteOffset`in t){let i=t;ut(this.binary,`Property ${e} requires a batch table binary.`),ut(i.type,`Property ${e} requires a type.`);let s=z2(i,this.binary.buffer,this.binary.byteOffset|0,this.featureCount);return{typedArray:s.values,componentCount:s.size,unpack:s.unpacker,pack:s.packer}}return null}_hasPropertyInHierarchy(e,t){if(!this._hierarchy)return!1;return sr(so(this._hierarchy,e,(s,a)=>{let d=s.classIds[a],m=s.classes[d].instances;return sr(m[t])}))}_getPropertyNamesInHierarchy(e,t){so(this._hierarchy,e,(i,s)=>{let a=i.classIds[s],d=i.classes[a].instances;for(let m in d)d.hasOwnProperty(m)&&t.indexOf(m)===-1&&t.push(m)})}_getHierarchyProperty(e,t){return so(this._hierarchy,e,(i,s)=>{let a=i.classIds[s],d=i.classes[a],m=i.classIndexes[s],b=d.instances[t];return sr(b)?sr(b.typedArray)?this._getBinaryProperty(b,m):Ma(b[m],!0):null})}_setHierarchyProperty(e,t,i,s){return sr(so(this._hierarchy,t,(d,m)=>{let b=d.classIds[m],_=d.classes[b],x=d.classIndexes[m],w=_.instances[i];return sr(w)?(ut(m===t,`Inherited property "${i}" is read-only.`),sr(w.typedArray)?this._setBinaryProperty(w,x,s):w[x]=Ma(s,!0),!0):!1}))}};function Ln(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 Ao=4;var Q2=`b3dm tile in legacy format.`;function ao(r,e,t){let i=new DataView(e),s;r.header=r.header||{};let a=i.getUint32(t,!0);t+=Ao;let d=i.getUint32(t,!0);t+=Ao;let m=i.getUint32(t,!0);t+=Ao;let b=i.getUint32(t,!0);return t+=Ao,m>=570425344?(t-=Ao*2,s=a,m=d,b=0,a=0,d=0,console.warn(Q2)):b>=570425344&&(t-=Ao,s=m,m=a,b=d,a=0,d=0,console.warn(Q2)),r.header.featureTableJsonByteLength=a,r.header.featureTableBinaryByteLength=d,r.header.batchTableJsonByteLength=m,r.header.batchTableBinaryByteLength=b,r.header.batchLength=s,t}function co(r,e,t,i){return t=EI(r,e,t,i),t=vI(r,e,t,i),t}function EI(r,e,t,i){let{featureTableJsonByteLength:s,featureTableBinaryByteLength:a,batchLength:d}=r.header||{};if(r.featureTableJson={BATCH_LENGTH:d||0},s&&s>0){let m=ou(e,t,s);r.featureTableJson=JSON.parse(m)}return t+=s||0,r.featureTableBinary=new Uint8Array(e,t,a),t+=a||0,t}function vI(r,e,t,i){let{batchTableJsonByteLength:s,batchTableBinaryByteLength:a}=r.header||{};if(s&&s>0){let d=ou(e,t,s);r.batchTableJson=JSON.parse(d),t+=s,a&&a>0&&(r.batchTableBinary=new Uint8Array(e,t,a),r.batchTableBinary=new Uint8Array(r.batchTableBinary),t+=a)}return t}function lu(r,e,t){if(!e&&(!r||!r.batchIds||!t))return null;let{batchIds:i,isRGB565:s,pointCount:a=0}=r;if(i&&t){let d=new Uint8ClampedArray(a*3);for(let m=0;m<a;m++){let b=i[m],x=t.getProperty(b,`dimensions`).map(w=>w*255);d[m*3]=x[0],d[m*3+1]=x[1],d[m*3+2]=x[2]}return{type:ke.UNSIGNED_BYTE,value:d,size:3,normalized:!0}}if(e&&s){let d=new Uint8ClampedArray(a*3);for(let m=0;m<a;m++){let b=au(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 W2=new Z;function K2(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++)cu(e[i*2],e[i*2+1],W2),W2.toArray(t,i*3);return{type:ke.FLOAT,size:2,value:t}}return{type:ke.FLOAT,size:2,value:e}}function X2(r,e,t){return r.isQuantized?t[`3d-tiles`]&&t[`3d-tiles`].decodeQuantizedPositions?(r.isQuantized=!1,SI(r,e)):{type:ke.UNSIGNED_SHORT,value:e,size:3,normalized:!0}:e}function SI(r,e){let t=new Z,i=new Float32Array(r.pointCount*3);for(let s=0;s<r.pointCount;s++)t.set(e[s*3],e[s*3+1],e[s*3+2]).scale(1/r.quantizedRange).multiply(r.quantizedVolumeScale).add(r.quantizedVolumeOffset).toArray(i,s*3);return i}async function Y2(r,e,t,i,s){t=Ln(r,e,t),t=ao(r,e,t),t=co(r,e,t,i),CI(r);let{featureTable:a,batchTable:d}=II(r);return await NI(r,a,d,i,s),MI(r,a,i),LI(r,a,d),RI(r,a),t}function CI(r){r.attributes={positions:null,colors:null,normals:null,batchIds:null},r.isQuantized=!1,r.isTranslucent=!1,r.isRGB565=!1,r.isOctEncoded16P=!1}function II(r){let e=new cn(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:PI(r,e)}}function MI(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=X2(r,i,t)}}if(!r.attributes.positions)throw new Error(`Either POSITION or POSITION_QUANTIZED must be defined.`)}function LI(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=lu(r,i,t)}e.hasProperty(`CONSTANT_RGBA`)&&(r.constantRGBA=e.getGlobalProperty(`CONSTANT_RGBA`,ke.UNSIGNED_BYTE,4))}function RI(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=K2(r,t)}}function PI(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:s,batchTableBinary:a}=r;t=new ni(s,a,i)}return t}async function NI(r$32,e,t,i,s){let a,d,m,b=r$32.batchTableJson&&r$32.batchTableJson.extensions&&r$32.batchTableJson.extensions[`3DTILES_draco_point_compression`];b&&(m=b.properties);let _=e.getExtension(`3DTILES_draco_point_compression`);if(_){d=_.properties;let w=_.byteOffset,C=_.byteLength;if(!d||!Number.isFinite(w)||!C)throw new Error(`Draco properties, byteOffset, and byteLength must be defined`);a=(r$32.featureTableBinary||[]).slice(w,w+C),r$32.hasPositions=Number.isFinite(d.POSITION),r$32.hasColors=Number.isFinite(d.RGB)||Number.isFinite(d.RGBA),r$32.hasNormals=Number.isFinite(d.NORMAL),r$32.hasBatchIds=Number.isFinite(d.BATCH_ID),r$32.isTranslucent=Number.isFinite(d.RGBA)}if(!a)return!0;return await FI(r$32,{buffer:a,properties:r(r({},d),m),featureTableProperties:d,batchTableProperties:m,dequantizeInShader:!1},i,s)}async function FI(r$33,e,t,i){if(!i)return;let s$20=s(r({},t),{draco:s(r({},t?.draco),{extraAttributes:e.batchTableProperties||{}})});delete s$20[`3d-tiles`];let a=await zl$1(e.buffer,ps,s$20,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,_=a.attributes.BATCH_ID&&a.attributes.BATCH_ID.value,x=d&&a.attributes.POSITION.value.quantization,w=b&&a.attributes.NORMAL.value.quantization;if(x){let R=a.POSITION.data.quantization,D=R.range;r$33.quantizedVolumeScale=new Z(D,D,D),r$33.quantizedVolumeOffset=new Z(R.minValues),r$33.quantizedRange=(1<<R.quantizationBits)-1,r$33.isQuantizedDraco=!0}w&&(r$33.octEncodedRange=(1<<a.NORMAL.data.quantization.quantizationBits)-1,r$33.isOctEncodedDraco=!0);let C={};if(e.batchTableProperties)for(let R of Object.keys(e.batchTableProperties))a.attributes[R]&&a.attributes[R].value&&(C[R.toLowerCase()]=a.attributes[R].value);r$33.attributes=r({positions:d,colors:lu(r$33,m,void 0),normals:b,batchIds:_},C)}var La={URI:0,EMBEDDED:1};function Ra(r,e,t,i){r.rotateYtoZ=!0;let s=(r.byteOffset||0)+(r.byteLength||0)-t;if(s===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=uu$1(e,t,s),r.gltfByteOffset=0,r.gltfByteLength=s,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 Pa(r,e,t,i){let s=t?.[`3d-tiles`]||{};if(kI(r,e,t),s.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 zl$1(r.gltfArrayBuffer,sn,t,i)),r.gpuMemoryUsageInBytes=ls(r.gltf),delete r.gltfArrayBuffer,delete r.gltfByteOffset,delete r.gltfByteLength}}function kI(r,e,t){switch(e){case La.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 La.EMBEDDED:break;default:throw new Error(`b3dm: Illegal glTF format field`)}}async function J2(r,e,t,i,s){t=OI(r,e,t,i,s),await Pa(r,La.EMBEDDED,i,s);let a=r?.gltf?.extensions;return a&&a.CESIUM_RTC&&(r.rtcCenter=a.CESIUM_RTC.center),t}function OI(r,e,t,i,s){t=Ln(r,e,t),t=ao(r,e,t),t=co(r,e,t,i),t=Ra(r,e,t,i);return r.rtcCenter=new cn(r.featureTableJson,r.featureTableBinary).getGlobalProperty(`RTC_CENTER`,ke.FLOAT,3),t}async function Z2(r,e,t,i,s){return t=BI(r,e,t,i,s),await Pa(r,r.gltfFormat||0,i,s),t}function BI(r,e,t,i,s){if(t=Ln(r,e,t),r.version!==1)throw new Error(`Instanced 3D Model version ${r.version} is not supported`);t=ao(r,e,t);if(r.gltfFormat=new DataView(e).getUint32(t,!0),t+=4,t=co(r,e,t,i),t=Ra(r,e,t,i),!r?.header?.featureTableJsonByteLength||r.header.featureTableJsonByteLength===0)throw new Error(`i3dm parser: featureTableJsonByteLength is zero.`);let d=new cn(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 DI(r,d,new ni(r.batchTableJson,r.batchTableBinary,m),m),t}function DI(r,e,t,i){let s=new Array(i),a=new Z;new Z;new Z;new Z;let _=new tt,x=new gr,w=new Z,C={},R=new U,D=[],k=[],W=[],j=[];for(let V=0;V<i;V++){let J;if(e.hasProperty(`POSITION`))J=e.getProperty(`POSITION`,ke.FLOAT,3,V,a);else if(e.hasProperty(`POSITION_QUANTIZED`)){J=e.getProperty(`POSITION_QUANTIZED`,ke.UNSIGNED_SHORT,3,V,a);let O=e.getGlobalProperty(`QUANTIZED_VOLUME_OFFSET`,ke.FLOAT,3);if(!O)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]+O[Ee]}if(!J)throw new Error(`i3dm: POSITION or POSITION_QUANTIZED must be defined for each instance.`);a.copy(J),C.translation=a,r.normalUp=e.getProperty(`NORMAL_UP`,ke.FLOAT,3,V,D),r.normalRight=e.getProperty(`NORMAL_RIGHT`,ke.FLOAT,3,V,k);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,V,D),r.octNormalRight=e.getProperty(`NORMAL_RIGHT_OCT32P`,ke.UNSIGNED_SHORT,2,V,k),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,R),R.getRotationMatrix3(_)):_.identity()}x.fromMatrix3(_),C.rotation=x,w.set(1,1,1);let te=e.getProperty(`SCALE`,ke.FLOAT,1,V,W);Number.isFinite(te)&&w.multiplyByScalar(te);let ne=e.getProperty(`SCALE_NON_UNIFORM`,ke.FLOAT,3,V,D);ne&&w.scale(ne),C.scale=w;let le=e.getProperty(`BATCH_ID`,ke.UNSIGNED_SHORT,1,V,j);le===void 0&&(le=V);let Y=new U().fromQuaternion(C.rotation);R.identity(),R.translate(C.translation),R.multiplyRight(Y),R.scale(C.scale);let z=R.clone();s[V]={modelMatrix:z,batchId:le}}r.instances=s}async function $2(r,e,t,i,s,a){t=Ln(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,s,m)}return t}async function e1(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 zl$1(e,sn,t,i)),r.gpuMemoryUsageInBytes=ls(r.gltf)}else r.gltfArrayBuffer=e;return e.byteLength}async function uu(r,e=0,t,i,s={shape:`tile3d`}){switch(s.byteOffset=e,s.type=D2(r,e),s.type){case ri.COMPOSITE:return await $2(s,r,e,t,i,uu);case ri.BATCHED_3D_MODEL:return await J2(s,r,e,t,i);case ri.GLTF:return await e1(s,r,t,i);case ri.INSTANCED_3D_MODEL:return await Z2(s,r,e,t,i);case ri.POINT_CLOUD:return await Y2(s,r,e,t,i);default:throw new Error(`3DTileLoader: unknown type ${s.type}`)}}async function fu(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=t1(r.slice(8,16)),d=new Uint8Array(r,24,a),b=new TextDecoder(`utf8`).decode(d),_=JSON.parse(b),x=t1(r.slice(16,24)),w=new ArrayBuffer(0);if(x&&(w=r.slice(24+a)),await Na(_,_.tileAvailability,w,t),Array.isArray(_.contentAvailability))for(let C of _.contentAvailability)await Na(_,C,w,t);else await Na(_,_.contentAvailability,w,t);return await Na(_,_.childSubtreeAvailability,w,t),_}async function Na(r,e,t,i){let s=Number.isFinite(e.bitstream)?e.bitstream:e.bufferView;if(typeof s!=`number`)return;let a=r.bufferViews[s],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}`,x=await(await i.fetch(b)).arrayBuffer();e.explicitBitstream=new Uint8Array(x,a.byteOffset,a.byteLength);return}let m=r.buffers.slice(0,a.buffer).reduce((b,_)=>b+_.byteLength,0);e.explicitBitstream=new Uint8Array(t.slice(m,m+d.byteLength),a.byteOffset,a.byteLength)}function t1(r){let e=new DataView(r);return e.getUint32(0,!0)+2**32*e.getUint32(4,!0)}var Fa={dataType:null,batchType:null,id:`3d-tiles-subtree`,name:`3D Tiles Subtree`,module:`3d-tiles`,version:Ia,extensions:[`subtree`],mimeTypes:[`application/octet-stream`],tests:[`subtree`],parse:fu,options:{}};var Cr=null;try{Cr=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 Vt(r){return(r&&r.__isLong__)===!0}function r1(r){var e=Math.clz32(r&-r);return r?31-e:e}it.isLong=Vt;var n1={};var i1={};function ii(r,e){var t,i,s;return e?(r>>>=0,(s=0<=r&&r<256)&&(i=i1[r],i)?i:(t=Ye(r,0,!0),s&&(i1[r]=t),t)):(r|=0,(s=-128<=r&&r<128)&&(i=n1[r],i)?i:(t=Ye(r,r<0?-1:0,!1),s&&(n1[r]=t),t))}it.fromInt=ii;function Ir(r,e){if(isNaN(r))return e?ln:Ur;if(e){if(r<0)return ln;if(r>=a1)return u1}else{if(r<=-s1)return Ar;if(r+1>=s1)return l1}return r<0?Ir(-r,e).neg():Ye(r%uo|0,r/uo|0,e)}it.fromNumber=Ir;function Ye(r,e,t){return new it(r,e,t)}it.fromBits=Ye;var ka=Math.pow;function du(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:Ur;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 du(r.substring(1),e,t).neg();for(var s=Ir(ka(t,8)),a=Ur,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 _=Ir(ka(t,m));a=a.mul(_).add(Ir(b))}else a=a.mul(s),a=a.add(Ir(b))}return a.unsigned=e,a}it.fromString=du;function Mr(r,e){return typeof r==`number`?Ir(r,e):typeof r==`string`?du(r,e):Ye(r.low,r.high,typeof e==`boolean`?e:r.unsigned)}it.fromValue=Mr;var o1=65536;var UI=1<<24;var uo=o1*o1;var a1=uo*uo;var s1=a1/2;var A1=ii(UI);var Ur=ii(0);it.ZERO=Ur;var ln=ii(0,!0);it.UZERO=ln;var lo=ii(1);it.ONE=lo;var c1=ii(1,!0);it.UONE=c1;var hu=ii(-1);it.NEG_ONE=hu;var l1=Ye(-1,2147483647,!1);it.MAX_VALUE=l1;var u1=Ye(-1,-1,!0);it.MAX_UNSIGNED_VALUE=u1;var Ar=Ye(0,-2147483648,!1);it.MIN_VALUE=Ar;var ge=it.prototype;ge.toInt=function(){return this.unsigned?this.low>>>0:this.low};ge.toNumber=function(){return this.unsigned?(this.high>>>0)*uo+(this.low>>>0):this.high*uo+(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(Ar)){var t=Ir(e),i=this.div(t),s=i.mul(t).sub(this);return i.toString(e)+s.toInt().toString(e)}else return`-`+this.neg().toString(e);for(var a=Ir(ka(e,6),this.unsigned),d=this,m=``;;){var b=d.div(a),x=(d.sub(b.mul(a)).toInt()>>>0).toString(e);if(d=b,d.isZero())return x+m;for(;x.length<6;)x=`0`+x;m=``+x+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(Ar)?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 Vt(e)||(e=Mr(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(Vt(e)||(e=Mr(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(Ar)?Ar:this.not().add(lo)};ge.neg=ge.negate;ge.add=function(e){Vt(e)||(e=Mr(e));var t=this.high>>>16,i=this.high&65535,s=this.low>>>16,a=this.low&65535,d=e.high>>>16,m=e.high&65535,b=e.low>>>16,_=e.low&65535,x=0,w=0,C=0,R=0;return R+=a+_,C+=R>>>16,R&=65535,C+=s+b,w+=C>>>16,C&=65535,w+=i+m,x+=w>>>16,w&=65535,x+=t+d,x&=65535,Ye(C<<16|R,x<<16|w,this.unsigned)};ge.subtract=function(e){return Vt(e)||(e=Mr(e)),this.add(e.neg())};ge.sub=ge.subtract;ge.multiply=function(e){if(this.isZero())return this;if(Vt(e)||(e=Mr(e)),Cr)return Ye(Cr.mul(this.low,this.high,e.low,e.high),Cr.get_high(),this.unsigned);if(e.isZero())return this.unsigned?ln:Ur;if(this.eq(Ar))return e.isOdd()?Ar:Ur;if(e.eq(Ar))return this.isOdd()?Ar:Ur;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(A1)&&e.lt(A1))return Ir(this.toNumber()*e.toNumber(),this.unsigned);var i=this.high>>>16,s=this.high&65535,a=this.low>>>16,d=this.low&65535,m=e.high>>>16,b=e.high&65535,_=e.low>>>16,x=e.low&65535,w=0,C=0,R=0,D=0;return D+=d*x,R+=D>>>16,D&=65535,R+=a*x,C+=R>>>16,R&=65535,R+=d*_,C+=R>>>16,R&=65535,C+=s*x,w+=C>>>16,C&=65535,C+=a*_,w+=C>>>16,C&=65535,C+=d*b,w+=C>>>16,C&=65535,w+=i*x+s*_+a*b+d*m,w&=65535,Ye(R<<16|D,w<<16|C,this.unsigned)};ge.mul=ge.multiply;ge.divide=function(e){if(Vt(e)||(e=Mr(e)),e.isZero())throw Error(`division by zero`);if(Cr){if(!this.unsigned&&this.high===-2147483648&&e.low===-1&&e.high===-1)return this;return Ye((this.unsigned?Cr.div_u:Cr.div_s)(this.low,this.high,e.low,e.high),Cr.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?ln:Ur;var i,s,a;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return ln;if(e.gt(this.shru(1)))return c1;a=ln}else{if(this.eq(Ar)){if(e.eq(lo)||e.eq(hu))return Ar;if(e.eq(Ar))return lo;return i=this.shr(1).div(e).shl(1),i.eq(Ur)?e.isNegative()?lo:hu:(s=this.sub(e.mul(i)),a=i.add(s.div(e)),a)}else if(e.eq(Ar))return this.unsigned?ln:Ur;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=Ur}for(s=this;s.gte(e);){i=Math.max(1,Math.floor(s.toNumber()/e.toNumber()));for(var m=Math.ceil(Math.log(i)/Math.LN2),b=m<=48?1:ka(2,m-48),_=Ir(i),x=_.mul(e);x.isNegative()||x.gt(s);)i-=b,_=Ir(i,this.unsigned),x=_.mul(e);_.isZero()&&(_=lo),a=a.add(_),s=s.sub(x)}return a};ge.div=ge.divide;ge.modulo=function(e){if(Vt(e)||(e=Mr(e)),Cr)return Ye((this.unsigned?Cr.rem_u:Cr.rem_s)(this.low,this.high,e.low,e.high),Cr.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?r1(this.low):r1(this.high)+32};ge.ctz=ge.countTrailingZeros;ge.and=function(e){return Vt(e)||(e=Mr(e)),Ye(this.low&e.low,this.high&e.high,this.unsigned)};ge.or=function(e){return Vt(e)||(e=Mr(e)),Ye(this.low|e.low,this.high|e.high,this.unsigned)};ge.xor=function(e){return Vt(e)||(e=Mr(e)),Ye(this.low^e.low,this.high^e.high,this.unsigned)};ge.shiftLeft=function(e){return Vt(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 Vt(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 Vt(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 Vt(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 Vt(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):Mr(e,t)},ge.toBigInt=function(){var e=BigInt(this.low>>>0);return BigInt(this.unsigned?this.high>>>0:this.high)<<BigInt(32)|e});var fo=it;var GI=16;function Es(r){r===`X`&&(r=``);let e=r.padEnd(GI,`0`);return fo.fromString(e,!0,16)}function pu(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 mu(r,e){let t=jI(r).shiftRightUnsigned(2);return r.add(fo.fromNumber(2*e+1-4).multiply(t))}function jI(r){return r.and(r.not().add(1))}var VI=3;var qI=61;var f1=180/Math.PI;function d1(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],s=i.length,a=0,d=[0,0];for(let m=s-1;m>=0;m--){a=s-m;let b=i[m],_=0,x=0;b===`1`?x=1:b===`2`?(_=1,x=1):b===`3`&&(_=1);let w=Math.pow(2,a-1);HI(w,d,_,x),d[0]+=w*_,d[1]+=w*x}if(t%2===1){let m=d[0];d[0]=d[1],d[1]=m}return{face:t,ij:d,level:a}}function p1(r){if(r.isZero())return``;let e=r.toString(2);for(;e.length<VI+qI;)e=`0`+e;let t=e.lastIndexOf(`1`),i=e.substring(0,3),s=e.substring(3,t),a=s.length/2,d=fo.fromString(i,!0,2).toString(10),m=``;if(a!==0)for(m=fo.fromString(s,!0,2).toString(4);m.length<a;)m=`0`+m;return`${d}/${m}`}function gu(r,e,t){let i=1<<e;return[(r[0]+t[0])/i,(r[1]+t[1])/i]}function h1(r){return r>=.5?1/3*(4*r*r-1):1/3*(1-4*(1-r)*(1-r))}function bu(r){return[h1(r[0]),h1(r[1])]}function Tu(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 _u([r,e,t]){let i=Math.atan2(t,Math.sqrt(r*r+e*e));return[Math.atan2(e,r)*f1,i*f1]}function HI(r,e,t,i){if(i===0){t===1&&(e[0]=r-1-e[0],e[1]=r-1-e[1]);let s=e[0];e[0]=e[1],e[1]=s}}function m1(r){let t=bu(gu(r.ij,r.level,[.5,.5]));return _u(Tu(r.face,t))}var QI=100;function yu(r){let{face:e,ij:t,level:i}=r,s=[[0,0],[0,1],[1,1],[1,0],[0,0]],a=Math.max(1,Math.ceil(QI*Math.pow(2,-i))),d=new Float64Array(4*a*2+2),m=0,b=0;for(let _=0;_<4;_++){let x=s[_].slice(0),w=s[_+1],C=(w[0]-x[0])/a,R=(w[1]-x[1])/a;for(let D=0;D<a;D++){x[0]+=C,x[1]+=R;let V=_u(Tu(e,bu(gu(t,i,x))));Math.abs(V[1])>89.999&&(V[0]=b);let J=V[0]-b;V[0]+=J>180?-360:J<-180?360:0,d[m++]=V[0],d[m++]=V[1],b=V[0]}}return d[m++]=d[0],d[m++]=d[1],d}function ho(r){return d1(WI(r))}function WI(r){if(r.indexOf(`/`)>0)return r;return p1(Es(r))}function xu(r){return m1(ho(r))}function b1(r){let e;if(r.face===2||r.face===5){let t=null,i=0;for(let s=0;s<4;s++){let m=yu(ho(`${r.face}/${s}`));(typeof t>`u`||t===null)&&(t=new Float64Array(4*m.length)),t.set(m,i),i+=m.length}e=g1(t)}else e=g1(yu(r));return e}function g1(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,s)=>i-s),t.sort((i,s)=>i-s),{west:e[0],east:e[e.length-1],north:t[t.length-1],south:t[0]}}function wu(r,e){let t=e?.minimumHeight||0,i=e?.maximumHeight||0,a=b1(ho(r)),d=a.west,m=a.south,b=a.east,_=a.north,x=[];return x.push(new Z(d,_,t)),x.push(new Z(b,_,t)),x.push(new Z(b,m,t)),x.push(new Z(d,m,t)),x.push(new Z(d,_,i)),x.push(new Z(b,_,i)),x.push(new Z(b,m,i)),x.push(new Z(d,m,i)),x}function Oa(r){let e=r.token,t={minimumHeight:r.minimumHeight,maximumHeight:r.maximumHeight},i=wu(e,t),s=xu(e),a=s[0],d=s[1],m=Ue.WGS84.cartographicToCartesian([a,d,t.maximumHeight]),b=new Z(m[0],m[1],m[2]);i.push(b);let _=ns(i);return[..._.center,..._.halfAxes]}var YI={QUADTREE:4,OCTREE:8};function JI(r$34,e,t){if(r$34?.box){let a=pu(mu(Es(r$34.s2VolumeInfo.token),e)),d=r({},r$34.s2VolumeInfo);if(d.token=a,t===`OCTREE`){let _=r$34.s2VolumeInfo,x=_.maximumHeight-_.minimumHeight,w=x/2,C=_.minimumHeight+x/2;_.minimumHeight=C-w,_.maximumHeight=C+w}return{box:Oa(d),s2VolumeInfo:d}}}async function vu(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:s=0,implicitOptions:a,loaderOptions:d,s2VolumeBox:m}=r,{subdivisionScheme:b,subtreeLevels:_,maximumLevel:x,contentUrlTemplate:w,subtreesUriTemplate:C,basePath:R}=a,D={children:[],lodMetricValue:0,contentUrl:``};if(typeof x!=`number`||!Number.isFinite(x))return ys$1.once(`Missing 'maximumLevel' or 'availableLevels' property. The subtree ${w} won't be loaded...`),D;let k=i.localLevel+1,W=t.level+k;if(W>x)return D;let j=YI[b],V=Math.log2(j),J=s&1,$=s>>1&1,te=s>>2&1,ne=oi(i.localX,J,1),le=oi(i.localY,$,1),Y=oi(i.localZ,te,1),z=oi(t.x,ne,k),O=oi(t.y,le,k),ue=oi(t.z,Y,k),we=oi(i.mortonIndex,s,V),Ee=k===_&&Eu(e.childSubtreeAvailability,we),xe$1,Ne,Fe,Oe;if(Ee){let He=Ba(`${R}/${C}`,W,z,O,ue);xe$1=await xe(He,Fa,d),Oe=0,Ne={level:W,x:z,y:O,z:ue},Fe={mortonIndex:0,localLevel:0,localX:0,localY:0,localZ:0}}else xe$1=e,Oe=(j**k-1)/(j-1)+we,Ne=t,Fe={mortonIndex:we,localLevel:k,localX:ne,localY:le,localZ:Y};if(!Eu(xe$1.tileAvailability,Oe))return D;Eu(xe$1.contentAvailability,Oe)&&(D.contentUrl=Ba(w,W,z,O,ue));for(let je=0;je<j;je++){let He=JI(m,je,b),vt=await vu({subtree:xe$1,subtreeData:Ne,parentData:Fe,childIndex:je,implicitOptions:a,loaderOptions:d,s2VolumeBox:He});(vt.contentUrl||vt.children.length)&&D.children.push(vt)}return D.contentUrl||D.children.length?ZI(D,{level:W,x:z,y:O,z:ue},a,m):D}function Eu(r,e){let t;return Array.isArray(r)?(t=r[0],r.length>1&&ys$1.once(`Not supported extension "3DTILES_multiple_contents" has been detected`)):t=r,`constant`in t?!!t.constant:t.explicitBitstream?t8(e,t.explicitBitstream):!1}function ZI(r,e,t,i){let{basePath:s,refine:a,getRefine:d,lodMetricType:m,getTileType:b,rootLodMetricValue:_,rootBoundingVolume:x}=t,w=r.contentUrl&&r.contentUrl.replace(`${s}/`,``),C=_/2**e.level,D=$I(i?.box?{box:i.box}:x,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:C,geometricError:C,transform:r.transform,boundingVolume:D}}function $I(r,e,t){if(r.region){let{level:i,x:s,y:a,z:d}=e,[m,b,_,x,w,C]=r.region,R=2**i,D=(_-m)/R,[k,W]=[m+D*s,m+D*(s+1)],j=(x-b)/R,[V,J]=[b+j*a,b+j*(a+1)],$,te;if(t===`OCTREE`){let ne=(C-w)/R;[$,te]=[w+ne*d,w+ne*(d+1)]}else[$,te]=[w,C];return{region:[k,V,W,J,$,te]}}if(r.box)return r;throw new Error(`Unsupported bounding volume type ${JSON.stringify(r)}`)}function oi(r,e,t){return(r<<t)+e}function Ba(r,e,t,i,s){let a=e8({level:e,x:t,y:i,z:s});return r.replace(/{level}|{x}|{y}|{z}/gi,d=>a[d])}function e8(r){let e={};for(let t in r)e[`{${t}}`]=r[t];return e}function t8(r,e){let t=Math.floor(r/8),i=r%8;return(e[t]>>i&1)===1}function Cu(r,e=``){if(!e)return Sr.EMPTY;let i=e.split(`?`)[0].split(`.`).pop();switch(i){case`pnts`:return Sr.POINTCLOUD;case`i3dm`:case`b3dm`:case`glb`:case`gltf`:return Sr.SCENEGRAPH;default:return i||Sr.EMPTY}}function Iu(r){switch(r){case`REPLACE`:case`replace`:return Gt.REPLACE;case`ADD`:case`add`:return Gt.ADD;default:return r}}function Su(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 Mt$1.resolve(e,r)}function T1(r$35,e){if(!r$35)return null;let t;if(r$35.content){let s=r$35.content.uri||r$35.content?.url;typeof s<`u`&&(t=Su(s,e))}return s(r({},r$35),{id:t,contentUrl:t,lodMetricType:an.GEOMETRIC_ERROR,lodMetricValue:r$35.geometricError,transformMatrix:r$35.transform,type:Cu(r$35,t),refine:Iu(r$35.refine)})}async function x1(r,e,t){let i=null,s=y1(r.root);s&&r.root?i=await _1(r.root,r,e,s,t):i=T1(r.root,e);let a=[];for(a.push(i);a.length>0;){let d=a.pop()||{},m=d.children||[],b=[];for(let _ of m){let x=y1(_),w;x?w=await _1(_,r,e,x,t):w=T1(_,e),w&&(b.push(w),a.push(w))}d.children=b}return i}async function _1(r,e,t,i,s){let{subdivisionScheme:a,maximumLevel:d,availableLevels:m,subtreeLevels:b,subtrees:{uri:_}}=i,w=Su(Ba(_,0,0,0,0),t),C=await xe(w,Fa,s),R=r.content?.uri,D=R?Su(R,t):``,k=e?.root?.refine,W=r.geometricError,j=r.boundingVolume.extensions?.[`3DTILES_bounding_volume_S2`];if(j)r.boundingVolume={box:Oa(j),s2VolumeInfo:j};let V=r.boundingVolume;return await r8(r,t,C,{contentUrlTemplate:D,subtreesUriTemplate:_,subdivisionScheme:a,subtreeLevels:b,maximumLevel:Number.isFinite(m)?m-1:d,refine:k,basePath:t,lodMetricType:an.GEOMETRIC_ERROR,rootLodMetricValue:W,rootBoundingVolume:V,getTileType:Cu,getRefine:Iu},s)}async function r8(r$36,e,t,i,s$21){if(!r$36)return null;let{children:a,contentUrl:d}=await vu({subtree:t,implicitOptions:i,loaderOptions:s$21}),m,b=null;return d&&(m=d,b={uri:d.replace(`${e}/`,``)}),s(r({},r$36),{id:m,contentUrl:m,lodMetricType:an.GEOMETRIC_ERROR,lodMetricValue:r$36.geometricError,transformMatrix:r$36.transform,type:Cu(r$36,m),refine:Iu(r$36.refine),content:b||r$36.content,children:a})}function y1(r){return r?.extensions?.[`3DTILES_implicit_tiling`]||r?.implicitTiling}var Da={dataType:null,batchType:null,id:`3d-tiles`,name:`3D Tiles`,module:`3d-tiles`,version:Ia,extensions:[`cmpt`,`pnts`,`b3dm`,`i3dm`],mimeTypes:[`application/octet-stream`],tests:[`cmpt`,`pnts`,`b3dm`,`i3dm`],parse:n8,options:{"3d-tiles":{loadGLTF:!0,decodeQuantizedPositions:!1,isTileset:`auto`,assetGltfUpAxis:null}}};async function n8(r,e={},t){let i=e[`3d-tiles`]||{},s;return i.isTileset===`auto`?s=t?.url&&t.url.indexOf(`.json`)!==-1:s=i.isTileset,s?i8(r,e,t):o8(r,e,t)}async function i8(r$37,e,t){let i=JSON.parse(new TextDecoder().decode(r$37)),s$22=t?.url||``,a=s8(s$22),d=await x1(i,a,e||{});return s(r({},i),{shape:`tileset3d`,loader:Da,url:s$22,queryString:t?.queryString||``,basePath:a,root:d||i.root,type:kt.TILES3D,lodMetricType:an.GEOMETRIC_ERROR,lodMetricValue:i.root?.geometricError||0})}async function o8(r,e,t){let i={content:{shape:`tile3d`,featureIds:null}};return await uu(r,0,e,t,i.content),i.content}function s8(r){return Mt$1.dirname(r)}var w1=[0];var A8={getPointColor:{type:`accessor`,value:[0,0,0,255]},pointSize:1,data:``,loader:Da,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 vs=class extends _m$1{initializeState(){`onTileLoadFail`in this.props&&S.removed(`onTileLoadFail`,`onTileError`)(),this.state={layerMap:{},tileset3d:null,activeViewports:{},lastUpdatedViewports:null}}get isLoaded(){return!!(this.state?.tileset3d?.isLoaded()&&super.isLoaded)}shouldUpdateState({changeFlags:e}){return e.somethingChanged}updateState({props:e,oldProps:t,changeFlags:i}){if(e.data&&e.data!==t.data&&this._loadTileset(e.data),i.viewportChanged){let{activeViewports:s}=this.state;Object.keys(s).length&&(this._updateTileset(s),this.state.lastUpdatedViewports=s,this.state.activeViewports={})}if(i.propsChanged){let{layerMap:s}=this.state;for(let a in s)s[a].needsUpdate=!0}}finalizeState(e){this.state.tileset3d?.destroy(),this.state.tileset3d=null,this.state.layerMap={},this.state.activeViewports={},this.state.lastUpdatedViewports=null,super.finalizeState(e)}activateViewport(e){let{activeViewports:t,lastUpdatedViewports:i}=this.state;this.internalState.viewport=e,t[e.id]=e;let s=i?.[e.id];(!s||!e.equals(s))&&(this.setChangeFlags({viewportChanged:!0}),this.setNeedsUpdate())}getPickingInfo({info:e,sourceLayer:t}){let i=t&&t.props.tile;return e.picked&&(e.object=i),e.sourceTile=i,e}filterSubLayer({layer:e,viewport:t,cullRect:i,isPicking:s}){let{tile:a}=e.props,{id:d}=t;if(!a.selected||!a.viewportIds.includes(d))return!1;if(s&&i&&a.content?.cartographicOrigin){let[m,b]=t.project(a.content.cartographicOrigin),_=i.x+i.width/2,x=i.y+i.height/2,w=Math.max(t.width,t.height)/4,C=m-_,R=b-x;if(C*C+R*R>w*w)return!1}return!0}_updateAutoHighlight(e){let t=e.sourceTile,i=this.state.layerMap[t?.id];i&&i.layer&&i.layer.updateAutoHighlight(e)}async _loadTileset(e){let t=this.props.loadOptions||{},i=this.props.loaders?.length?this.props.loaders:this.props.loader,s$23=Array.isArray(i)?i[0]:i,w=t,{tileset:a}=w,d=u(w,[`tileset`]),m=r({loadOptions:r({},d)},a),b=e;if(`preload`in s$23&&typeof s$23.preload==`function`){let C=await s$23.preload(e,t);C.url&&(b=C.url),C.headers&&(m.loadOptions.core=s(r({},m.loadOptions.core),{fetch:s(r({},m.loadOptions.core?.fetch),{headers:C.headers})})),Object.assign(m,C)}let x=new ws(await xe(b,s$23,m.loadOptions),r({onTileLoad:this._onTileLoad.bind(this),onTileUnload:this._onTileUnload.bind(this),onTileError:this.props.onTileError,onUpdate:()=>this.setNeedsUpdate()},m));this.setState({tileset3d:x,layerMap:{}}),this._updateTileset(this.state.activeViewports),this.props.onTilesetLoad(x)}_onTileLoad(e){let{lastUpdatedViewports:t}=this.state;e.tileDrawn=!1,this.props.onTileLoad(e),this._updateTileset(t),this.setNeedsUpdate()}_onTileUnload(e){delete this.state.layerMap[e.id],this.props.onTileUnload(e)}_updateTileset(e){if(!e)return;let{tileset3d:t}=this.state,{timeline:i}=this.context,s=Object.keys(e).length;!i||!s||!t||t.selectTiles(Object.values(e)).then(a=>{this.state.frameNumber!==a&&this.setState({frameNumber:a})})}_getSubLayer(e,t){if(!e.content)return null;switch(e.type){case Sr.POINTCLOUD:return this._makePointCloudLayer(e,t);case Sr.SCENEGRAPH:return this._make3DModelLayer(e);case Sr.MESH:return this._makeSimpleMeshLayer(e,t);default:throw new Error(`Tile3DLayer: Failed to render layer of type ${e.content.type}`)}}_makePointCloudLayer(e,t){let{attributes:i,pointCount:s,constantRGBA:a,cartographicOrigin:d,modelMatrix:m}=e.content,{positions:b,normals:_,colors:x}=i;if(!b)return null;let w=t&&t.props.data||{header:{vertexCount:s},attributes:{POSITION:b,NORMAL:_,COLOR_0:x}},{pointSize:C,getPointColor:R}=this.props;return new(this.getSubLayerClass(`pointcloud`,Gn$1))({pointSize:C},this.getSubLayerProps({id:`pointcloud`}),{id:`${this.id}-pointcloud-${e.id}`,tile:e,data:w,coordinateSystem:dn.METER_OFFSETS,coordinateOrigin:d,modelMatrix:m,getColor:a||R,_offset:0})}_make3DModelLayer(e){let{gltf:t,instances:i,cartographicOrigin:s,modelMatrix:a}=e.content;return new(this.getSubLayerClass(`scenegraph`,Hl))({_lighting:`pbr`},this.getSubLayerProps({id:`scenegraph`}),{id:`${this.id}-scenegraph-${e.id}`,tile:e,data:i||w1,scenegraph:t,coordinateSystem:dn.METER_OFFSETS,coordinateOrigin:s,modelMatrix:a,getTransformMatrix:m=>m.modelMatrix,getPosition:[0,0,0],_offset:0,onFirstDraw:()=>{e.tileDrawn=!0}})}_makeSimpleMeshLayer(e,t){let{attributes:s,indices:a,modelMatrix:d,cartographicOrigin:m,coordinateSystem:b=dn.METER_OFFSETS,material:_,featureIds:x}=e.content,{_getMeshColor:w}=this.props,C=t&&t.props.mesh||new re({topology:`triangle-list`,attributes:c8(s),indices:a});return new(this.getSubLayerClass(`mesh`,t2))(this.getSubLayerProps({id:`mesh`}),{id:`${this.id}-mesh-${e.id}`,tile:e,mesh:C,data:w1,getColor:w(e),pbrMaterial:_,modelMatrix:d,coordinateOrigin:m,coordinateSystem:b,featureIds:x,_offset:0})}renderLayers(){let{tileset3d:e,layerMap:t}=this.state;return e?e.tiles.map(i=>{let s=t[i.id]=t[i.id]||{tile:i},{layer:a}=s;return i.selected&&(a?s.needsUpdate&&(a=this._getSubLayer(i,a),s.needsUpdate=!1):a=this._getSubLayer(i)),s.layer=a,a}).filter(Boolean):null}};vs.defaultProps=A8;vs.layerName=`Tile3DLayer`;var a8=vs;function c8(r$38){let e={};return e.positions=s(r({},r$38.positions),{value:new Float32Array(r$38.positions.value)}),r$38.normals&&(e.normals=r$38.normals),r$38.texCoords&&(e.texCoords=r$38.texCoords),r$38.colors&&(e.colors=r$38.colors),r$38.uvRegions&&(e.uvRegions=r$38.uvRegions),e}var l8=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 u8(r){let e=0,t={};for(let[i,s]of l8)t[i]=(s===8?r.getFloat64:r.getFloat32).call(r,e,!0),e+=s;return{header:t,headerEndPosition:e}}function f8(r,e){let t=e,i=3,s=r.getUint32(t,!0),a=new Uint16Array(s*i);t+=Uint32Array.BYTES_PER_ELEMENT;let d=Uint16Array.BYTES_PER_ELEMENT,m=s*d,b=t,_=b+m,x=_+m,w=0,C=0,R=0;for(let D=0;D<s;D++)w+=Mu(r.getUint16(b+d*D,!0)),C+=Mu(r.getUint16(_+d*D,!0)),R+=Mu(r.getUint16(x+d*D,!0)),a[D]=w,a[D+s]=C,a[D+s*2]=R;return t+=m*3,{vertexData:a,vertexDataEndPosition:t}}function Ss(r,e,t,i,s=!0){let a;if(i===2?a=new Uint16Array(r,e,t):a=new Uint32Array(r,e,t),!s)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 h8(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,_=Ss(r.buffer,i,b,d);return i+=b*d,{triangleIndicesEndPosition:i,triangleIndices:_}}function d8(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=Ss(r.buffer,i,m,d,!1);i+=m*d;let _=r.getUint32(i,!0);i+=Uint32Array.BYTES_PER_ELEMENT;let x=Ss(r.buffer,i,_,d,!1);i+=_*d;let w=r.getUint32(i,!0);i+=Uint32Array.BYTES_PER_ELEMENT;let C=Ss(r.buffer,i,w,d,!1);i+=w*d;let R=r.getUint32(i,!0);i+=Uint32Array.BYTES_PER_ELEMENT;let D=Ss(r.buffer,i,R,d,!1);return i+=R*d,{edgeIndicesEndPosition:i,westIndices:b,southIndices:x,eastIndices:C,northIndices:D}}function p8(r){return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}function m8(r){return r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength)}function g8(r,e){let t={};if(r.byteLength<=e)return{extensions:t,extensionsEndPosition:e};let i=e;for(;i<r.byteLength;){let s=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(s){case 1:t.vertexNormals=p8(d);break;case 2:t.waterMask=m8(d)}i+=a}return{extensions:t,extensionsEndPosition:i}}var si={header:0,vertices:1,triangleIndices:2,edgeIndices:3,extensions:4};var b8={maxDecodingStep:si.extensions};function Lu(r,e){let t=Object.assign({},b8,e),i=new DataView(r),{header:s,headerEndPosition:a}=u8(i);if(t.maxDecodingStep<si.vertices)return{header:s};let{vertexData:d,vertexDataEndPosition:m}=f8(i,a);if(t.maxDecodingStep<si.triangleIndices)return{header:s,vertexData:d};let{triangleIndices:b,triangleIndicesEndPosition:_}=h8(i,d,m);if(t.maxDecodingStep<si.edgeIndices)return{header:s,vertexData:d,triangleIndices:b};let{westIndices:x,southIndices:w,eastIndices:C,northIndices:R,edgeIndicesEndPosition:D}=d8(i,d,_);if(t.maxDecodingStep<si.extensions)return{header:s,vertexData:d,triangleIndices:b,westIndices:x,northIndices:R,eastIndices:C,southIndices:w};let{extensions:k}=g8(i,D);return{header:s,vertexData:d,triangleIndices:b,westIndices:x,northIndices:R,eastIndices:C,southIndices:w,extensions:k}}function Ua(r,e,t,i){let s=i?_8(i,r.POSITION.value):T8(e),a=new r.POSITION.value.constructor(s.length*6),d=new r.TEXCOORD_0.value.constructor(s.length*4),m=new e.constructor(s.length*6);for(let _=0;_<s.length;_++){let x=s[_];y8({edge:x,edgeIndex:_,attributes:r,skirtHeight:t,newPosition:a,newTexcoord0:d,newTriangles:m})}r.POSITION.value=lu$1(r.POSITION.value,a),r.TEXCOORD_0.value=lu$1(r.TEXCOORD_0.value,d);return{attributes:r,triangles:e instanceof Array?e.concat(m):lu$1(e,m)}}function T8(r){let e=[];for(let s=0;s<r.length;s+=3)e.push([r[s],r[s+1]]),e.push([r[s+1],r[s+2]]),e.push([r[s+2],r[s]]);e.sort((s,a)=>Math.min(...s)-Math.min(...a)||Math.max(...s)-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 _8(r,e){r.westIndices.sort((i,s)=>e[3*i+1]-e[3*s+1]),r.eastIndices.sort((i,s)=>e[3*s+1]-e[3*i+1]),r.southIndices.sort((i,s)=>e[3*s]-e[3*i]),r.northIndices.sort((i,s)=>e[3*i]-e[3*s]);let t=[];for(let i in r){let s=r[i];for(let a=0;a<s.length-1;a++)t.push([s[a],s[a+1]])}return t}function y8({edge:r,edgeIndex:e,attributes:t,skirtHeight:i,newPosition:s,newTexcoord0:a,newTriangles:d}){let m=t.POSITION.value.length,b=e*2,_=e*2+1;s.set(t.POSITION.value.subarray(r[0]*3,r[0]*3+3),b*3),s[b*3+2]=s[b*3+2]-i,s.set(t.POSITION.value.subarray(r[1]*3,r[1]*3+3),_*3),s[_*3+2]=s[_*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),_*2);let x=e*2*3;d[x]=r[0],d[x+1]=m/3+_,d[x+2]=r[1],d[x+3]=m/3+_,d[x+4]=r[0],d[x+5]=m/3+b}function Ru(r,e={}){let{bounds:t}=e,{header:i,vertexData:s,triangleIndices:a,westIndices:d,northIndices:m,eastIndices:b,southIndices:_}=Lu(r,si.triangleIndices),x=a,w=x8(s,i,t),C=Dn(w);if(e?.skirtHeight){let{attributes:R,triangles:D}=Ua(w,x,e.skirtHeight,{westIndices:d,northIndices:m,eastIndices:b,southIndices:_});w=R,x=D}return{loaderData:{header:{}},header:{vertexCount:x.length,boundingBox:C},schema:void 0,topology:`triangle-list`,mode:4,indices:{value:x,size:1},attributes:w}}function x8(r,e,t){let{minHeight:i,maxHeight:s}=e,[a,d,m,b]=t||[0,0,1,1],_=m-a,x=b-d,w=s-i,C=r.length/3,R=new Float32Array(C*3),D=new Float32Array(C*2);for(let k=0;k<C;k++){let W=r[k]/32767,j=r[k+C]/32767,V=r[k+C*2]/32767;R[3*k+0]=W*_+a,R[3*k+1]=j*x+d,R[3*k+2]=V*w+i,D[2*k+0]=W,D[2*k+1]=j}return{POSITION:{value:R,size:3},TEXCOORD_0:{value:D,size:2}}}var Cs=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 s=i+2,a=0,d=0,m=0,b=0,_=0,x=0;for(s&1?m=b=_=t:a=d=x=t;(s>>=1)>1;){let C=a+m>>1,R=d+b>>1;s&1?(m=a,b=d,a=_,d=x):(a=m,d=b,m=_,b=x),_=C,x=R}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 Pu(e,this)}};var Pu=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:s}=this.martini,{terrain:a,errors:d}=this;for(let m=e-1;m>=0;m--){let b=m*4,_=i[b+0],x=i[b+1],w=i[b+2],C=i[b+3],R=_+w>>1,D=x+C>>1,k=R+D-x,W=D+_-R,j=(a[x*s+_]+a[C*s+w])/2,V=D*s+R,J=Math.abs(j-a[V]);if(d[V]=Math.max(d[V],J),m<t){let $=(x+W>>1)*s+(_+k>>1),te=(C+W>>1)*s+(w+k>>1);d[V]=Math.max(d[V],d[$],d[te])}}}getMesh(e=0){let{gridSize:t,indices:i}=this.martini,{errors:s}=this,a=0,d=0,m=t-1;i.fill(0);function b(R,D,k,W,j,V){let J=R+k>>1,$=D+W>>1;Math.abs(R-j)+Math.abs(D-V)>1&&s[$*t+J]>e?(b(j,V,R,D,J,$),b(k,W,j,V,J,$)):(i[D*t+R]=i[D*t+R]||++a,i[W*t+k]=i[W*t+k]||++a,i[V*t+j]=i[V*t+j]||++a,d++)}b(0,0,m,m,m,0),b(m,m,0,0,0,m);let _=new Uint16Array(a*2),x=new Uint32Array(d*3),w=0;function C(R,D,k,W,j,V){let J=R+k>>1,$=D+W>>1;if(Math.abs(R-j)+Math.abs(D-V)>1&&s[$*t+J]>e)C(j,V,R,D,J,$),C(k,W,j,V,J,$);else{let te=i[D*t+R]-1,ne=i[W*t+k]-1,le=i[V*t+j]-1;_[2*te]=R,_[2*te+1]=D,_[2*ne]=k,_[2*ne+1]=W,_[2*le]=j,_[2*le+1]=V,x[w++]=te,x[w++]=ne,x[w++]=le}}return C(0,0,m,m,m,0),C(m,m,0,0,0,m),{vertices:_,triangles:x}}};var Is=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 s=t-1,a=i-1,d=this._addPoint(0,0),m=this._addPoint(s,0),b=this._addPoint(0,a),_=this._addPoint(s,a),x=this._addTriangle(_,d,b,-1,-1,-1);this._addTriangle(d,_,m,x,-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],s=2*this.triangles[i*3+0],a=2*this.triangles[i*3+1],d=2*this.triangles[i*3+2];this._findCandidate(e[s],e[s+1],e[a],e[a+1],e[d],e[d+1],i)}this._pendingLen=0}_findCandidate(e,t,i,s,a,d,m){let b=Math.min(e,i,a),_=Math.min(t,s,d),x=Math.max(e,i,a),w=Math.max(t,s,d),C=Ai(i,s,a,d,b,_),R=Ai(a,d,e,t,b,_),D=Ai(e,t,i,s,b,_),k=s-t,W=e-i,j=d-s,V=i-a,J=t-d,$=a-e,te=Ai(e,t,i,s,a,d),ne=this.heightAt(e,t)/te,le=this.heightAt(i,s)/te,Y=this.heightAt(a,d)/te,z=0,O=0,ue=0,we=0;for(let Ee=_;Ee<=w;Ee++){let xe=0;C<0&&j!==0&&(xe=Math.max(xe,Math.floor(-C/j))),R<0&&J!==0&&(xe=Math.max(xe,Math.floor(-R/J))),D<0&&k!==0&&(xe=Math.max(xe,Math.floor(-D/k)));let Ne=C+j*xe,Fe=R+J*xe,Oe=D+k*xe,Ge=!1;for(let qe=b+xe;qe<=x;qe++){if(Ne>=0&&Fe>=0&&Oe>=0){Ge=!0;let je=ne*Ne+le*Fe+Y*Oe,He=Math.abs(je-this.heightAt(qe,Ee));we+=He*He,He>z&&(z=He,O=qe,ue=Ee)}else if(Ge)break;Ne+=j,Fe+=J,Oe+=k}C+=V,R+=$,D+=W}(O===e&&ue===t||O===i&&ue===s||O===a&&ue===d)&&(z=0),this._candidates[2*m]=O,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,s=e*3+2,a=this.triangles[t],d=this.triangles[i],m=this.triangles[s],b=this.coords[2*a],_=this.coords[2*a+1],x=this.coords[2*d],w=this.coords[2*d+1],C=this.coords[2*m],R=this.coords[2*m+1],D=this._candidates[2*e],k=this._candidates[2*e+1],W=this._addPoint(D,k);if(Ai(b,_,x,w,D,k)===0)this._handleCollinear(W,t);else if(Ai(x,w,C,R,D,k)===0)this._handleCollinear(W,i);else if(Ai(C,R,b,_,D,k)===0)this._handleCollinear(W,s);else{let j=this._halfedges[t],V=this._halfedges[i],J=this._halfedges[s],$=this._addTriangle(a,d,W,j,-1,-1,t),te=this._addTriangle(d,m,W,V,-1,$+1),ne=this._addTriangle(m,a,W,J,$+2,te+1);this._legalize($),this._legalize(te),this._legalize(ne)}}_addPoint(e,t){let i=this.coords.length>>1;return this.coords.push(e,t),i}_addTriangle(e,t,i,s,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]=s,this._halfedges[m+1]=a,this._halfedges[m+2]=d,s>=0&&(this._halfedges[s]=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,s=t-t%3,a=i+(e+1)%3,d=i+(e+2)%3,m=s+(t+2)%3,b=s+(t+1)%3,_=this.triangles[d],x=this.triangles[e],w=this.triangles[a],C=this.triangles[m],R=this.coords;if(!w8(R[2*_],R[2*_+1],R[2*x],R[2*x+1],R[2*w],R[2*w+1],R[2*C],R[2*C+1]))return;let D=this._halfedges[a],k=this._halfedges[d],W=this._halfedges[m],j=this._halfedges[b];this._queueRemove(i/3),this._queueRemove(s/3);let V=this._addTriangle(_,C,w,-1,W,D,i),J=this._addTriangle(C,_,x,V,k,j,s);this._legalize(V+1),this._legalize(J+2)}_handleCollinear(e,t){let i=t-t%3,s=i+(t+1)%3,a=i+(t+2)%3,d=this.triangles[a],m=this.triangles[t],b=this.triangles[s],_=this._halfedges[s],x=this._halfedges[a],w=this._halfedges[t];if(w<0){let ne=this._addTriangle(e,d,m,-1,x,-1,i),le=this._addTriangle(d,e,b,ne,-1,_);this._legalize(ne+1),this._legalize(le+2);return}let C=w-w%3,R=C+(w+2)%3,D=C+(w+1)%3,k=this.triangles[R],W=this._halfedges[R],j=this._halfedges[D];this._queueRemove(C/3);let V=this._addTriangle(d,m,e,x,-1,-1,i),J=this._addTriangle(m,k,e,j,-1,V+1,C),$=this._addTriangle(k,b,e,W,-1,J+1),te=this._addTriangle(b,d,e,_,V+2,$+1);this._legalize(V),this._legalize(J),this._legalize($),this._legalize(te)}_queuePush(e,t,i){let s=this._queue.length;this._queueIndices[e]=s,this._queue.push(e),this._errors.push(t),this._rmsSum+=i,this._queueUp(s)}_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 s=this._pending.indexOf(e);if(s!==-1)this._pending[s]=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],s=this._queue[t];this._queue[e]=s,this._queue[t]=i,this._queueIndices[i]=t,this._queueIndices[s]=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 s=2*i+1;if(s>=t||s<0)break;let a=s+1,d=s;if(a<t&&this._queueLess(a,s)&&(d=a),!this._queueLess(d,i))break;this._queueSwap(i,d),i=d}return i>e}};function Ai(r,e,t,i,s,a){return(t-s)*(e-a)-(i-a)*(r-s)}function w8(r,e,t,i,s,a,d,m){let b=r-d,_=e-m,x=t-d,w=i-m,C=s-d,R=a-m,D=b*b+_*_,k=x*x+w*w,W=C*C+R*R;return b*(w*W-k*R)-_*(x*W-k*C)+D*(x*R-w*C)<0}function S1(r,e){let{meshMaxError:t,bounds:i,elevationDecoder:s}=e,{data:a,width:d,height:m}=r,b,_;switch(e.tesselator){case`martini`:b=Ga(a,d,m,s,e.tesselator),_=E1(t,d,b);break;case`delatin`:b=Ga(a,d,m,s,e.tesselator),_=v1(t,d,m,b);break;default:d===m&&!(m&d-1)?(b=Ga(a,d,m,s,`martini`),_=E1(t,d,b)):(b=Ga(a,d,m,s,`delatin`),_=v1(t,d,m,b))}let{vertices:x}=_,{triangles:w}=_,C=E8(x,b,d,m,i),R=Dn(C);if(e.skirtHeight){let{attributes:D,triangles:k}=Ua(C,w,e.skirtHeight);C=D,w=k}return{loaderData:{header:{}},header:{vertexCount:w.length,boundingBox:R},mode:4,indices:{value:Uint32Array.from(w),size:1},attributes:C}}function E1(r,e,t){let{vertices:d,triangles:m}=new Cs(e+1).createTile(t).getMesh(r);return{vertices:d,triangles:m}}function v1(r,e,t,i){let s=new Is(i,e+1,t+1);s.run(r);let{coords:a,triangles:d}=s;return{vertices:a,triangles:d}}function Ga(r,e,t,i,s){let{rScaler:a,bScaler:d,gScaler:m,offset:b}=i,_=new Float32Array((e+1)*(t+1));for(let x=0,w=0;w<t;w++)for(let C=0;C<e;C++,x++){let R=x*4,D=r[R+0],k=r[R+1],W=r[R+2];_[x+w]=D*a+k*m+W*d+b}if(s===`martini`){for(let x=(e+1)*e,w=0;w<e;w++,x++)_[x]=_[x-e-1];for(let x=t,w=0;w<t+1;w++,x+=t+1)_[x]=_[x-1]}return _}function E8(r,e,t,i,s){let a=t+1,d=r.length/2,m=new Float32Array(d*3),b=new Float32Array(d*2),[_,x,w,C]=s||[0,0,t,i],R=(w-_)/t,D=(C-x)/i;for(let k=0;k<d;k++){let W=r[k*2],j=r[k*2+1],V=j*a+W;m[3*k+0]=W*R+_,m[3*k+1]=-j*D+C,m[3*k+2]=e[V],b[2*k+0]=W/t,b[2*k+1]=j/i}return{POSITION:{value:m,size:3},TEXCOORD_0:{value:b,size:2}}}var ja=`4.5.4`;var Va={dataType:null,batchType:null,name:`Terrain`,id:`terrain`,module:`terrain`,version:ja,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 C1={dataType:null,batchType:null,name:`Quantized Mesh`,id:`quantized-mesh`,module:`terrain`,version:ja,worker:!0,extensions:[`terrain`],mimeTypes:[`application/vnd.quantized-mesh`],options:{"quantized-mesh":{bounds:[0,0,1,1],skirtHeight:null}}};var v8=s(r({},Va),{parse:S8});async function S8(r$39,e,t){let i=s(r({},e),{core:s(r({},e?.core),{mimeType:`application/x.image`}),image:s(r({},e?.image),{type:`data`})});return S1(await zl$1(r$39,[],i,t),r(r({},v8.options.terrain),e?.terrain))}s(r({},C1),{parseSync:(r,e)=>Ru(r,e?.[`quantized-mesh`]),parse:async(r,e)=>Ru(r,e?.[`quantized-mesh`])});var I1=[1];var M1=1;var L1=1;var za=90;var qa=180;var C8=s(r({},Hi.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:[Va]});function R1(r){return Array.isArray(r)?r.join(`;`):r||``}function I8(r,e,t){let i=(r[2]-r[0])/e*M1,s=(r[3]-r[1])/e*M1,a=[r[0]-i,r[1]-s,r[2]+i,r[3]+s];return t?[Math.max(a[0],-qa),Math.max(a[1],-za),Math.min(a[2],qa),Math.min(a[3],za)]:a}function M8(r){return!Number.isFinite(r)||r<=0?L1:Math.max(r,L1)}var Ms=class extends _m$1{updateState({props:e,oldProps:t}){let i=e.elevationData!==t.elevationData;if(i){let{elevationData:a}=e,d=a&&(Array.isArray(a)||R8(a));this.setState({isTiled:d})}let s=i||e.meshMaxError!==t.meshMaxError||e.elevationDecoder!==t.elevationDecoder||e.bounds!==t.bounds;if(!this.state.isTiled&&s){let a=this.loadTerrain(e);this.setState({terrain:a})}e.workerUrl&&S.removed(`workerUrl`,`loadOptions.terrain.workerUrl`)()}loadTerrain({elevationData:e,bounds:t,elevationDecoder:i,meshMaxError:s$24,signal:a}){if(!e)return null;let d=M8(s$24),m=this.getLoadOptions();m=s(r({},m),{terrain:s(r({skirtHeight:this.state.isTiled?d*2:0},m?.terrain),{bounds:t,meshMaxError:d,elevationDecoder:i})});let{fetch:b}=this.props;return b(e,{propName:`elevationData`,layer:this,loadOptions:m,signal:a})}getTiledTerrainData(e){let{elevationData:t,fetch:i,texture:s,elevationDecoder:a,meshMaxError:d}=this.props,{viewport:m}=this.context,b=on(t,e),_=s&&on(s,e),{signal:x}=e,w=[0,0],C=[0,0];if(m.isGeospatial){let j=e.bbox;w=m.projectFlat([j.west,j.south]),C=m.projectFlat([j.east,j.north])}else{let j=e.bbox;w=[j.left,j.bottom],C=[j.right,j.top]}let D=I8([w[0],w[1],C[0],C[1]],this.props.tileSize,m instanceof lo$1),k=this.loadTerrain({elevationData:b,bounds:D,elevationDecoder:a,meshMaxError:d,signal:x}),W=_?i(_,{propName:`texture`,layer:this,loaders:[],signal:x}).catch(j=>null):Promise.resolve(null);return Promise.all([k,W])}renderSubLayers(e){let t=this.getSubLayerClass(`mesh`,Wi),{color:i,wireframe:s,material:a}=this.props,{data:d}=e;if(!d)return null;let[m,b]=d,{viewport:_}=this.context,x=_ instanceof lo$1,w=m?.header?.boundingBox,C=w&&w.every(([D,k])=>D>=-qa&&D<=qa&&k>=-za&&k<=za);return new t(e,{data:I1,mesh:m,texture:b,_instanced:!1,coordinateSystem:x&&C?dn.LNGLAT:dn.CARTESIAN,getPosition:D=>[0,0,0],getColor:i,wireframe:s,material:a})}onViewportLoad(e){if(!e)return;let{zRange:t}=this.state,i=e.map(d=>d.content).filter(Boolean).map(d=>d[0].header.boundingBox.map(b=>b[2]));if(i.length===0)return;let s=Math.min(...i.map(d=>d[0])),a=Math.max(...i.map(d=>d[1]));(!t||s<t[0]||a>t[1])&&this.setState({zRange:[s,a]})}renderLayers(){let{color:e,material:t,elevationData:i,texture:s,wireframe:a,meshMaxError:d,elevationDecoder:m,tileSize:b,maxZoom:_,minZoom:x,extent:w,maxRequests:C,onTileLoad:R,onTileUnload:D,onTileError:k,maxCacheSize:W,maxCacheByteSize:j,refinementStrategy:V,zoomOffset:J}=this.props;if(this.state.isTiled)return new Hi(this.getSubLayerProps({id:`tiles`}),{getTileData:this.getTiledTerrainData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),updateTriggers:{getTileData:{elevationData:R1(i),texture:R1(s),meshMaxError:d,elevationDecoder:m,projectionMode:this.context.viewport.projectionMode,zoomOffset:J}},onViewportLoad:this.onViewportLoad.bind(this),zRange:this.state.zRange||null,tileSize:b,maxZoom:_,minZoom:x,extent:w,maxRequests:C,onTileLoad:R,onTileUnload:D,onTileError:k,maxCacheSize:W,maxCacheByteSize:j,refinementStrategy:V,zoomOffset:J});if(!i)return null;return new(this.getSubLayerClass(`mesh`,Wi))(this.getSubLayerProps({id:`mesh`}),{data:I1,mesh:this.state.terrain,texture:s,_instanced:!1,getPosition:te=>[0,0,0],getColor:e,material:t,wireframe:a})}};Ms.defaultProps=C8;Ms.layerName=`TerrainLayer`;var L8=Ms;var R8=r=>r.includes(`{x}`)&&(r.includes(`{y}`)||r.includes(`{-y}`));var P8={clipBounds:[0,0,1,1],clipByInstance:void 0};var P1=`
|
|
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 N8={name:`clip`,vs:P1,uniformTypes:{bounds:`vec4<f32>`}};var F8={"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 k8={name:`clip`,fs:P1,uniformTypes:{bounds:`vec4<f32>`}};var O8={"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 Ls=class extends Tm$1{getShaders(){let e=`instancePositions`in this.getAttributeManager().attributes;return this.props.clipByInstance!==void 0&&(e=!!this.props.clipByInstance),this.state.clipByInstance=e,this.context.device.type===`webgpu`?{}:e?{modules:[N8],inject:F8}:{modules:[k8],inject:O8}}draw(){let{clipBounds:e}=this.props,t={};if(this.state.clipByInstance)t.bounds=e;else{let i=this.projectPosition([e[0],e[1],0]),s=this.projectPosition([e[2],e[3],0]);t.bounds=[Math.min(i[0],s[0]),Math.min(i[1],s[1]),Math.max(i[0],s[0]),Math.max(i[1],s[1])]}this.context.device.type===`webgpu`&&(t.enabled=!0,t.mode=this.state.clipByInstance?`instance`:`geometry`),this.setShaderModuleProps({clip:t})}};Ls.defaultProps=P8;Ls.extensionName=`ClipExtension`;var Nu=Ls;function N1(r,e,t){switch(r.type){case`Point`:return D8(r,e,t);case`LineString`:return B8(r,e,t);case`Polygon`:return F1(r,e,t);default:throw new Error(`Unsupported geometry type: ${r?.type}`)}}function F1(r,e=-1/0,t=1/0){let{positions:i}=r,s=r.polygonIndices.value.filter(b=>b>=e&&b<=t),a=r.primitivePolygonIndices.value.filter(b=>b>=e&&b<=t);if(!(s.length>2)){let b=[];for(let _=0;_<a.length-1;_++){let x=a[_],w=a[_+1],C=Ha(i,x,w);b.push(C)}return{type:`Polygon`,coordinates:b}}let m=[];for(let b=0;b<s.length-1;b++){let _=s[b],x=s[b+1],w=F1(r,_,x).coordinates;m.push(w)}return{type:`MultiPolygon`,coordinates:m}}function B8(r,e=-1/0,t=1/0){let{positions:i}=r,s=r.pathIndices.value.filter(m=>m>=e&&m<=t);if(!(s.length>2))return{type:`LineString`,coordinates:Ha(i,s[0],s[1])};let d=[];for(let m=0;m<s.length-1;m++){let b=Ha(i,s[m],s[m+1]);d.push(b)}return{type:`MultiLineString`,coordinates:d}}function D8(r,e,t){let{positions:i}=r,s=Ha(i,e,t);return s.length>1?{type:`MultiPoint`,coordinates:s}:{type:`Point`,coordinates:s[0]}}function Ha(r,e,t){e=e||0,t=t||r.value.length/r.size;let i=[];for(let s=e;s<t;s++){let a=Array();for(let d=s*r.size;d<(s+1)*r.size;d++)a.push(Number(r.value[d]));i.push(a)}return i}function Qa(r$40,e,t){let i=U8(r$40),s=Object.keys(i).filter(a=>i[a]!==Array);return G8(r$40,r({propArrayTypes:i},e),{numericPropKeys:t&&t.numericPropKeys||s,PositionDataType:t?t.PositionDataType:Float32Array,triangulate:t?t.triangulate:!0})}function U8(r){let e={};for(let t of r)if(t.properties)for(let i in t.properties){let s=t.properties[i];e[i]=Q8(s,e[i])}return e}function G8(r,e,t){let{pointPositionsCount:i,pointFeaturesCount:s,linePositionsCount:a,linePathsCount:d,lineFeaturesCount:m,polygonPositionsCount:b,polygonObjectsCount:_,polygonRingsCount:x,polygonFeaturesCount:w,propArrayTypes:C,coordLength:R}=e,{numericPropKeys:D=[],PositionDataType:k=Float32Array,triangulate:W=!0}=t,j=r[0]&&`id`in r[0],V=r.length>65535?Uint32Array:Uint16Array,J={type:`Point`,positions:new k(i*R),globalFeatureIds:new V(i),featureIds:s>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 k(a*R),globalFeatureIds:new V(a),featureIds:m>65535?new Uint32Array(a):new Uint16Array(a),numericProps:{},properties:[],fields:[]},te={type:`Polygon`,polygonIndices:b>65535?new Uint32Array(_+1):new Uint16Array(_+1),primitivePolygonIndices:b>65535?new Uint32Array(x+1):new Uint16Array(x+1),positions:new k(b*R),globalFeatureIds:new V(b),featureIds:w>65535?new Uint32Array(b):new Uint16Array(b),numericProps:{},properties:[],fields:[]};W&&(te.triangles=[]);for(let le of[J,$,te])for(let Y of D){let z=C[Y];le.numericProps[Y]=new z(le.positions.length/R)}$.pathIndices[d]=a,te.polygonIndices[_]=b,te.primitivePolygonIndices[x]=b;let ne={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`:j8(Y,J,ne,R,z),J.properties.push(ku(z,D)),j&&J.fields.push({id:le.id}),ne.pointFeature++;break;case`LineString`:V8(Y,$,ne,R,z),$.properties.push(ku(z,D)),j&&$.fields.push({id:le.id}),ne.lineFeature++;break;case`Polygon`:z8(Y,te,ne,R,z),te.properties.push(ku(z,D)),j&&te.fields.push({id:le.id}),ne.polygonFeature++;break;default:throw new Error(`Invalid geometry type`)}ne.feature++}return H8(J,$,te,R)}function j8(r,e,t,i,s){e.positions.set(r.data,t.pointPosition*i);let a=r.data.length/i;Ou(e,s,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 V8(r,e,t,i,s){e.positions.set(r.data,t.linePosition*i);let a=r.data.length/i;Ou(e,s,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],_=d===m-1?r.data.length:r.indices[d+1];e.pathIndices[t.linePath++]=t.linePosition,t.linePosition+=(_-b)/i}}function z8(r,e,t,i,s){e.positions.set(r.data,t.polygonPosition*i);let a=r.data.length/i;Ou(e,s,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 _=r.areas[d],x=r.indices[d],w=r.indices[d+1];for(let R=0,D=x.length;R<D;++R){let k=x[R],W=R===D-1?w===void 0?r.data.length:w[0]:x[R+1];e.primitivePolygonIndices[t.polygonRing++]=t.polygonPosition,t.polygonPosition+=(W-k)/i}let C=t.polygonPosition;q8(e,_,x,{startPosition:b,endPosition:C,coordLength:i})}}function q8(r,e,t,{startPosition:i,endPosition:s,coordLength:a}){if(!r.triangles)return;let d=i*a,m=s*a,b=r.positions.subarray(d,m),_=t[0],x=t.slice(1).map(C=>(C-_)/a),w=Zn$2(b,x,a,e);for(let C=0,R=w.length;C<R;++C)r.triangles.push(i+w[C])}function Fu(r,e){let t={};for(let i in r)t[i]={value:r[i],size:e};return t}function H8(r$41,e,t,i){let s$25={shape:`binary-feature-collection`,points:s(r({},r$41),{positions:{value:r$41.positions,size:i},globalFeatureIds:{value:r$41.globalFeatureIds,size:1},featureIds:{value:r$41.featureIds,size:1},numericProps:Fu(r$41.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:Fu(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:Fu(t.numericProps,1)})};return s$25.polygons&&t.triangles&&(s$25.polygons.triangles={value:new Uint32Array(t.triangles),size:1}),s$25}function Ou(r,e,t,i){for(let s in r.numericProps)if(s in e){let a=e[s];r.numericProps[s].fill(a,t,t+i)}}function ku(r,e){let t={};for(let i in r)e.includes(i)||(t[i]=r[i]);return t}function Q8(r,e){return e===Array||!Number.isFinite(r)?Array:e===Float64Array||Math.fround(r)!==r?Float64Array:Float32Array}function Rs(r,e){let t=e?.globalFeatureId;return t!==void 0?W8(r,t):K8(r,e?.type)}function W8(r,e){let t=k1(r);for(let i of t){let s=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[s])return Wa(i,s,d);s=d,a=m}}if(e===i.globalFeatureIds.value[s])return Wa(i,s,i.featureIds.value.length)}throw new Error(`featureId:${e} not found`)}function K8(r,e){return X8(k1(r,e))}function k1(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 X8(r){let e=[];for(let t of r){if(t.featureIds.value.length===0)continue;let i=0,s=t.featureIds.value[0];for(let a=0;a<t.featureIds.value.length;a++){let d=t.featureIds.value[a];d!==s&&(e.push(Wa(t,i,a)),i=a,s=d)}e.push(Wa(t,i,t.featureIds.value.length))}return e}function Wa(r$42,e,t){let i=N1(r$42,e,t),s=J8(r$42,e,t),a=Y8(r$42,e,t);return r({type:`Feature`,geometry:i,properties:s},a)}function Y8(r,e=0,t){return r.fields&&r.fields[r.featureIds.value[e]]}function J8(r,e=0,t){let i=Object.assign({},r.properties[r.featureIds.value[e]]);for(let s in r.numericProps)i[s]=r.numericProps[s].value[e];return i}var Vu=x(V1(),1);function pM(r){let e=0;for(let t=0,i=r.length-1,s,a;t<r.length;i=t++)s=r[t],a=r[i],e+=(a[0]-s[0])*(s[1]+a[1]);return e}function Uu(r,e){if(Array.isArray(r[0])){for(let i of r)Uu(i,e);return}let t=r;t[0]/=e,t[1]/=e}function z1(r,e){for(let t=0;t<r.length;++t)r[t]/=e}function Gu(r,e,t){if(typeof r[0][0]!=`number`){for(let d of r)Gu(d,e,t);return}let i=t*Math.pow(2,e.z),s=t*e.x,a=t*e.y;for(let d=0;d<r.length;d++){let m=r[d];m[0]=(m[0]+s)*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 q1(r,e,t){let{x:i,y:s,z:a}=e,d=t*Math.pow(2,a),m=t*i,b=t*s;for(let _=0,x=r.length;_<x;_+=2){r[_]=(r[_]+m)*360/d-180;let w=180-(r[_+1]+b)*360/d;r[_+1]=360/Math.PI*Math.atan(Math.exp(w*Math.PI/180))-90}}function H1(r){let e=r.length;if(e<=1)return[r];let t=[],i,s;for(let a=0;a<e;a++){let d=pM(r[a]);d!==0&&(s===void 0&&(s=d<0),s===d<0?(i&&t.push(i),i=[r[a]]):i&&i.push(r[a]))}return i&&t.push(i),t}function Q1(r){let e=r.indices.length,t=`Polygon`;if(e<=1)return{type:t,data:r.data,areas:[[ye$1(r.data)]],indices:[r.indices]};let i=[],s=[],a=[],d=[],m,b=0;for(let _,x=0,w;x<e;x++){w=r.indices[x]-b,_=r.indices[x+1]-b||r.data.length;let C=r.data.slice(w,_),R=ye$1(C);if(R===0){let D=r.data.slice(0,w),k=r.data.slice(_);r.data=D.concat(k),b+=_-w;continue}m===void 0&&(m=R<0),m===R<0?(d.length&&(i.push(a),s.push(d)),d=[w],a=[R]):(a.push(R),d.push(w))}return a&&i.push(a),d.length&&s.push(d),{type:t,areas:i,indices:s,data:r.data}}var go=class{properties;extent;type;id;_pbf;_geometry;_keys;_values;_geometryInfo;static types=[`Unknown`,`Point`,`LineString`,`Polygon`];constructor(e,t,i,s,a,d){this.properties={},this.extent=i,this.type=0,this.id=null,this._pbf=e,this._geometry=-1,this._keys=s,this._values=a,this._geometryInfo=d,e.readFields(mM,this,t)}toGeoJSONFeature(e,t){let i=this.loadGeometry();return e===`wgs84`?W1(this,i,s=>Gu(s,t,this.extent)):W1(this,i,Uu)}toBinaryFeature(e,t){let i=this.loadFlatGeometry();return e===`wgs84`?this._toBinaryCoordinates(i,s=>q1(s,t,this.extent)):this._toBinaryCoordinates(i,z1)}bbox(){let e=this._pbf;e.pos=this._geometry;let t=e.readVarint()+e.pos,i=1,s=0,a=0,d=0,m=1/0,b=-1/0,_=1/0,x=-1/0;for(;e.pos<t;){if(s<=0){let w=e.readVarint();i=w&7,s=w>>3}if(s--,i===1||i===2)a+=e.readSVarint(),d+=e.readSVarint(),a<m&&(m=a),a>b&&(b=a),d<_&&(_=d),d>x&&(x=d);else if(i!==7)throw new Error(`unknown command ${i}`)}return[m,_,b,x]}_toBinaryCoordinates(e,t){let i;t(e.data,this.extent);let s=2;switch(this.type){case 1:this._geometryInfo.pointFeaturesCount++,this._geometryInfo.pointPositionsCount+=e.indices.length,i=r({type:`Point`},e);break;case 2:this._geometryInfo.lineFeaturesCount++,this._geometryInfo.linePathsCount+=e.indices.length,this._geometryInfo.linePositionsCount+=e.data.length/s,i=r({type:`LineString`},e);break;case 3:i=Q1(e),this._geometryInfo.polygonFeaturesCount++,this._geometryInfo.polygonObjectsCount+=i.indices.length;for(let d of i.indices)this._geometryInfo.polygonRingsCount+=d.length;this._geometryInfo.polygonPositionsCount+=i.data.length/s;break;default:throw new Error(`Invalid geometry type: ${this.type}`)}let a={type:`Feature`,geometry:i,properties:this.properties};return this.id!==null&&(a.id=this.id),a}loadGeometry(){let e=this._pbf;e.pos=this._geometry;let t=e.readVarint()+e.pos,i=1,s=0,a=0,d=0,m=[],b;for(;e.pos<t;){if(s<=0){let _=e.readVarint();i=_&7,s=_>>3}switch(s--,i){case 1:case 2:a+=e.readSVarint(),d+=e.readSVarint(),i===1&&(b&&m.push(b),b=[]),b&&b.push([a,d]);break;case 7:b&&b.push(b[0].slice());break;default:throw new Error(`unknown command ${i}`)}}return b&&m.push(b),m}loadFlatGeometry(){let e=this._pbf;e.pos=this._geometry;let t=e.readVarint()+e.pos,i=1,s,a=0,d=0,m=0,b=0,_=[],x=[];for(;e.pos<t;)if(a<=0&&(s=e.readVarint(),i=s&7,a=s>>3),a--,i===1||i===2)d+=e.readSVarint(),m+=e.readSVarint(),i===1&&_.push(b),x.push(d,m),b+=2;else if(i===7){if(b>0){let w=_[_.length-1];x.push(x[w],x[w+1]),b+=2}}else throw new Error(`unknown command ${i}`);return{data:x,indices:_}}};function W1(r,e,t){let i=go.types[r.type],s,a,d;switch(r.type){case 1:let b=[];for(s=0;s<e.length;s++)b[s]=e[s][0];d=b,t(d,r.extent);break;case 2:for(d=e,s=0;s<d.length;s++)t(d[s],r.extent);break;case 3:for(d=H1(e),s=0;s<d.length;s++)for(a=0;a<d[s].length;a++)t(d[s][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 mM(r,e,t){e&&t&&(r===1?e.id=t.readVarint():r===2?gM(t,e):r===3?e.type=t.readVarint():r===4&&(e._geometry=t.pos))}function gM(r,e){let t=r.readVarint()+r.pos;for(;r.pos<t;){let i=e._keys[r.readVarint()],s=e._values[r.readVarint()];e.properties[i]=s}}var Ya=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(bM,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 go(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 go(this._pbf,i,this.extent,this._keys,this._values,t)}};function bM(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(TM(t)))}function TM(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 Ps=class{layers;constructor(e,t){this.layers=e.readFields(_M,{},t)}};function _M(r,e,t){if(r===3&&t){let i=new Ya(t,t.readVarint()+t.pos);i.length&&e&&(e[i.name]=i)}}function zu(r,e){let t=xM(e),i=e?.gis?.format||e?.mvt?.shape||e?.shape;switch(i){case`columnar-table`:return{shape:`columnar-table`,data:ju(r,t)};case`geojson-table`:return{shape:`geojson-table`,type:`FeatureCollection`,features:K1(r,t)};case`geojson`:return K1(r,t);case`binary-geometry`:return ju(r,t);case`binary`:return ju(r,t);default:throw new Error(i||`undefined shape`)}}function ju(r,e){let[t,i]=yM(r,e),s=Qa(t,i);return s.byteLength=r.byteLength,s}function yM(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 s=new Ps(new Vu.default(r));return(e&&Array.isArray(e.layers)?e.layers:Object.keys(s.layers)).forEach(d=>{let m=s.layers[d];if(m)for(let b=0;b<m.length;b++){let x=EM(m.getBinaryFeature(b,i),e,d);t.push(x)}}),[t,i]}function K1(r,e){if(r.byteLength<=0)return[];let t=[],i=new Ps(new Vu.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 _=wM(d.getGeoJSONFeature(m),e,a);t.push(_)}}),t}function xM(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&&Cs$1.warn(`MVTLoader: "options.gis" is deprecated, use "options.mvt.shape" instead`)(),r.mvt}function wM(r,e,t){let i=r.toGeoJSONFeature(e.coordinates||`local`,e.tileIndex);return e.layerProperty&&(i.properties||={},i.properties[e.layerProperty]=t),i}function EM(r,e,t){let i=r.toBinaryFeature(e.coordinates||`local`,e.tileIndex);return e.layerProperty&&i.properties&&(i.properties[e.layerProperty]=t),i}var Ja=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.4`,worker:!0,options:{mvt:{shape:`geojson`,coordinates:`local`,layerProperty:`layerName`,layers:void 0,tileIndex:void 0}}});s(r({},Ja),{parse:async(r,e)=>zu(r,e),parseSync:zu,binary:!0});var CM={Point:Y1,MultiPoint:IM,LineString:J1,MultiLineString:MM,Polygon:Z1,MultiPolygon:LM};function Y1([r,e],[t,i],s){let a=Oi$1(t[0],i[0],r),d=Oi$1(t[1],i[1],e);return s.unprojectFlat([a,d])}function qu(r,e,t){return r.map(i=>Y1(i,e,t))}function IM(r,e,t){return qu(r,e,t)}function J1(r,e,t){return qu(r,e,t)}function MM(r,e,t){return r.map(i=>J1(i,e,t))}function Z1(r,e,t){return r.map(i=>qu(i,e,t))}function LM(r,e,t){return r.map(i=>Z1(i,e,t))}function $1(r$43,e,t){let a=[t.projectFlat([e.west,e.north]),t.projectFlat([e.east,e.south])];return s(r({},r$43),{coordinates:CM[r$43.type](r$43.coordinates,a,t)})}var RM=[`points`,`lines`,`polygons`];function Hu(r,e,t,i){for(let s of RM){let a=r[s]&&PM(r[s],e,t,i);if(a>=0)return a}return-1}function PM(r,e,t,i){let s=r.featureIds.value;if(!s.length)return-1;let a=0,d=s[s.length-1]+1;if(i){let b=NM(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((_,x)=>_===t&&s[x]>=a&&s[x]<d);return b>=0?r.globalFeatureIds.value[b]:-1}else e?m=eb(r.properties,b=>b[e]===t,a,d):r.fields&&(m=eb(r.fields,b=>b.id===t,a,d));return m>=0?FM(r,m):-1}function NM(r,e){if(!r.__layers){let t={},{properties:i}=r;for(let s=0;s<i.length;s++){let{layerName:a}=i[s];a&&(t[a]?t[a][1]=s:t[a]=[s,s])}r.__layers=t}return r.__layers[e]}function FM(r,e){if(!r.__ids){let t=[],i=r.featureIds.value,s=r.globalFeatureIds.value;for(let a=0;a<i.length;a++)t[i[a]]=s[a];r.__ids=t}return r.__ids[e]}function eb(r,e,t,i){for(let s=t;s<i;s++)if(e(r[s],s))return s;return-1}var Qu=512;var kM=s(r({},Lr.defaultProps),{data:vn,onDataLoad:{type:`function`,value:null,optional:!0,compare:!1},uniqueIdProperty:``,highlightedFeatureId:null,loaders:[Ja],binary:!0});var Ns=class extends Hi{initializeState(){super.initializeState();let e=this.context.viewport.resolution!==void 0?!1:this.props.binary;this.setState({binary:e,data:null,tileJSON:null,hoveredFeatureId:null,hoveredFeatureLayerName:null})}get isLoaded(){return!!(this.state?.data&&super.isLoaded)}updateState({props:e,oldProps:t,context:i,changeFlags:s}){s.dataChanged&&this._updateTileData(),this.state?.data&&(super.updateState({props:e,oldProps:t,context:i,changeFlags:s}),this._setWGS84PropertyForTiles());let{highlightColor:a}=e;a!==t.highlightColor&&Array.isArray(a)&&this.setState({highlightColor:a})}async _updateTileData(){let e=this.props.data,t=null;if(typeof e==`string`&&!Wc(e)){let{onDataLoad:i,fetch:s}=this.props;this.setState({data:null,tileJSON:null});try{t=await s(e,{propName:`data`,layer:this,loaders:[]})}catch(a){this.raiseError(a,`loading TileJSON`),e=null}i&&i(t,{propName:`data`,layer:this})}else e&&typeof e==`object`&&`tilejson`in e&&(t=e);t&&(e=t.tiles),this.setState({data:e,tileJSON:t})}_getTilesetOptions(){let e=super._getTilesetOptions(),t=this.state.tileJSON,{minZoom:i,maxZoom:s}=this.props;return t&&(Number.isFinite(t.minzoom)&&t.minzoom>i&&(e.minZoom=t.minzoom),Number.isFinite(t.maxzoom)&&(!Number.isFinite(s)||t.maxzoom<s)&&(e.maxZoom=t.maxzoom)),e}renderLayers(){return this.state?.data?super.renderLayers():null}getTileData(e){let{data:t,binary:i}=this.state,{index:s$26,signal:a}=e,d=on(t,e);if(!d)return Promise.reject(`Invalid URL`);let m=this.getLoadOptions(),{fetch:b}=this.props;return m=s(r({},m),{core:s(r({},m?.core),{mimeType:`application/x-protobuf`}),mvt:s(r({},m?.mvt),{shape:i?`binary`:`geojson`,coordinates:this.context.viewport.resolution?`wgs84`:`local`,tileIndex:s$26})}),b(d,{propName:`data`,layer:this,loadOptions:m,signal:a})}renderSubLayers(e){let{x:t,y:i,z:s}=e.tile.index,a=Math.pow(2,s),d=Qu/a,m=-d,b=Qu*t/a,_=Qu*(1-i/a),x=new U().scale([d,m,1]);e.autoHighlight=!1,this.context.viewport.resolution||(e.modelMatrix=x,e.coordinateOrigin=[b,_,0],e.coordinateSystem=dn.CARTESIAN,e.extensions=[...e.extensions||[],new Nu]);let w=super.renderSubLayers(e);return this.state.binary&&!(w instanceof Lr)&&S.warn(`renderSubLayers() must return GeoJsonLayer when using binary:true`)(),w}_updateAutoHighlight(e){let{uniqueIdProperty:t}=this.props,{hoveredFeatureId:i,hoveredFeatureLayerName:s}=this.state,a=e.object,d=null,m=null;a&&(d=Wu(a,t),m=tb(a));let{highlightColor:b}=this.props;typeof b==`function`&&(b=b(e)),(i!==d||s!==m)&&this.setState({highlightColor:b,hoveredFeatureId:d,hoveredFeatureLayerName:m})}_isWGS84(){return!!this.context.viewport.resolution}getPickingInfo(e){let t=super.getPickingInfo(e);if(this.state.binary&&t.index!==-1){let{data:i}=e.sourceLayer.props;t.object=Rs(i,{globalFeatureId:t.index})}return t.object&&!this._isWGS84()&&(t.object=nb(t.object,t.tile.bbox,this.context.viewport)),t}getSubLayerPropsByTile(e){return{highlightedObjectIndex:this.getHighlightedObjectIndex(e),highlightColor:this.state.highlightColor}}getHighlightedObjectIndex(e){let{hoveredFeatureId:t,hoveredFeatureLayerName:i,binary:s}=this.state,{uniqueIdProperty:a,highlightedFeatureId:d}=this.props,m=e.content,b=rb(d);if(!(rb(t)||b))return-1;let x=b?d:t;return Array.isArray(m)?m.findIndex(w=>{let C=Wu(w,a)===x,R=b||tb(w)===i;return C&&R}):m&&s?Hu(m,a,x,b?``:i):-1}_pickObjects(e){let{deck:t,viewport:i}=this.context,s=i.width,a=i.height,d=i.x,m=i.y,b=[this.id];return t.pickObjects({x:d,y:m,width:s,height:a,layerIds:b,maxObjects:e})}getRenderedFeatures(e=null){let t=this._pickObjects(e),i=new Set,s=[];for(let a of t){let d=Wu(a.object,this.props.uniqueIdProperty);d===void 0?s.push(a.object):i.has(d)||(i.add(d),s.push(a.object))}return s}_setWGS84PropertyForTiles(){let e=`dataInWGS84`;this.state.tileset.selectedTiles.forEach(i=>{i.hasOwnProperty(e)||Object.defineProperty(i,e,{get:()=>{if(!i.content)return null;if(this.state.binary&&Array.isArray(i.content)&&!i.content.length)return[];let{bbox:s}=i;if(i._contentWGS84===void 0&&Kc(s))i._contentWGS84=(this.state.binary?Rs(i.content):i.content).map(d=>nb(d,s,this.context.viewport));return i._contentWGS84}})})}};Ns.layerName=`MVTLayer`;Ns.defaultProps=kM;var OM=Ns;function Wu(r,e){if(r.properties&&e)return r.properties[e];if(`id`in r)return r.id}function tb(r){return r.properties?.layerName||null}function rb(r){return r!=null&&r!==``}function nb(r$44,e,t){let i=s(r({},r$44),{geometry:{type:r$44.geometry.type}});return Object.defineProperty(i.geometry,"coordinates",{get:()=>$1(r$44.geometry,e,t).coordinates}),i}var ib=`0123456789bcdefghjkmnpqrstuvwxyz`;var ob={};for(let r=0;r<ib.length;r++)ob[ib.charAt(r)]=r;var BM=-90;var DM=90;var UM=-180;var GM=180;function jM(r){let e=!0,t=DM,i=BM,s=GM,a=UM,d,m=0;for(let b=0,_=r.length;b<_;b++){m=ob[r[b].toLowerCase()];for(let w=4;w>=0;w--){let C=m>>w&1;e?(d=(s+a)/2,C===1?a=d:s=d):(d=(t+i)/2,C===1?i=d:t=d),e=!e}}return[i,a,t,s]}function sb(r){let[e,t,i,s]=jM(r);return[s,i,s,e,t,e,t,i,s,i]}var VM={getGeohash:{type:`accessor`,value:r=>r.geohash}};var Fs=class extends Fr{indexToBounds(){let{data:e,getGeohash:t}=this.props;return{data:e,_normalize:!1,positionFormat:`XY`,getPolygon:(i,s)=>sb(t(i,s))}}};Fs.layerName=`GeohashLayer`;Fs.defaultProps=VM;var zM=Fs;
|
|
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{bx as A5Layer,zM as GeohashLayer,$w as GreatCircleLayer,ev as H3ClusterLayer,Yc as H3HexagonLayer,OM as MVTLayer,fE as QuadkeyLayer,cE as S2Layer,L8 as TerrainLayer,a8 as Tile3DLayer,Hi as TileLayer,XE as TripsLayer,Fr as _GeoCellLayer,Gi as _Tile2DHeader,qi as _Tileset2D,Jo as _WMSLayer,on as _getURLFromTemplate};
|
|
1180
|
+
//# debugId=b06edb5a-abab-5fba-aa96-f866fd487bb7
|